当前位置: 首页 > news >正文

python做网站好处怀柔营销型网站建设

python做网站好处,怀柔营销型网站建设,常熟做网站价格,动画制作专业培训文章目录题目标题和出处难度题目描述要求示例数据范围解法思路和算法代码复杂度分析题目 标题和出处 标题:数组中的 k-diff 数对 出处:532. 数组中的 k-diff 数对 难度 4 级 题目描述 要求 给定一个整数数组 nums\texttt{nums}nums 和一个整数 k…

文章目录

  • 题目
    • 标题和出处
    • 难度
    • 题目描述
      • 要求
      • 示例
      • 数据范围
  • 解法
    • 思路和算法
    • 代码
    • 复杂度分析

题目

标题和出处

标题:数组中的 k-diff 数对

出处:532. 数组中的 k-diff 数对

难度

4 级

题目描述

要求

给定一个整数数组 nums\texttt{nums}nums 和一个整数 k\texttt{k}k,返回不同的 k\texttt{k}k-diff 数对的数目。

一个 k\texttt{k}k-diff 数对为一个整数对 (nums[i],nums[j])\texttt{(nums[i], nums[j])}(nums[i], nums[j]),并满足下述条件:

  • 0≤i,j<nums.length\texttt{0} \le \texttt{i, j} < \texttt{nums.length}0i, j<nums.length
  • nums[i]≤nums[j]\texttt{nums[i]} \le \texttt{nums[j]}nums[i]nums[j]
  • |nums[i]-nums[j]|=k\texttt{|nums[i] - nums[j]|} = \texttt{k}|nums[i] - nums[j]|=k

注意,|val|\texttt{|val|}|val| 表示 val\texttt{val}val 的绝对值。

示例

示例 1:

输入:nums=[3,1,4,1,5],k=2\texttt{nums = [3, 1, 4, 1, 5], k = 2}nums = [3, 1, 4, 1, 5], k = 2
输出:2\texttt{2}2
解释:数组中有两个 2\texttt{2}2-diff 数对,(1,3)\texttt{(1, 3)}(1, 3)(3,5)\texttt{(3, 5)}(3, 5)
尽管数组中有两个 1\texttt{1}1,但我们只应返回不同的数对的数量。

示例 2:

输入:nums=[1,2,3,4,5],k=1\texttt{nums = [1, 2, 3, 4, 5], k = 1}nums = [1, 2, 3, 4, 5], k = 1
输出:4\texttt{4}4
解释:数组中有四个 1\texttt{1}1-diff 数对,(1,2)\texttt{(1, 2)}(1, 2)(2,3)\texttt{(2, 3)}(2, 3)(3,4)\texttt{(3, 4)}(3, 4)(4,5)\texttt{(4, 5)}(4, 5)

示例 3:

输入:nums=[1,3,1,5,4],k=0\texttt{nums = [1, 3, 1, 5, 4], k = 0}nums = [1, 3, 1, 5, 4], k = 0
输出:1\texttt{1}1
解释:数组中只有一个 0\texttt{0}0-diff 数对,(1,1)\texttt{(1, 1)}(1, 1)

数据范围

  • 1≤nums.length≤104\texttt{1} \le \texttt{nums.length} \le \texttt{10}^\texttt{4}1nums.length104
  • -107≤nums[i]≤107\texttt{-10}^\texttt{7} \le \texttt{nums[i]} \le \texttt{10}^\texttt{7}-107nums[i]107
  • 0≤k≤107\texttt{0} \le \texttt{k} \le \texttt{10}^\texttt{7}0k107

解法

思路和算法

由于题目要求计算数组 nums\textit{nums}nums 中的不同的差为 kkk 的数对的数目,因此只需要考虑数组中有哪些数字,不需要考虑顺序。

计算差为 kkk 的数对的数目需要考虑两种情况,分别是 k=0k = 0k=0k>0k > 0k>0

k=0k = 0k=0 时,每个差为 kkk 的数对由两个相等的整数组成,对于任意整数 num\textit{num}num,只有当 num\textit{num}num 在数组 nums\textit{nums}nums 中出现次数大于 111 次时,才有数对 (num,num)(\textit{num}, \textit{num})(num,num)。遍历数组 nums\textit{nums}nums 并用哈希表记录每个数字的出现次数,然后遍历哈希表,对于哈希表中的每个数字,如果出现次数大于 111 次,则将数对的数目加 111。遍历哈希表结束之后即可得到差为 kkk 的数对的数目。

k>0k > 0k>0 时,每个差为 kkk 的数对由两个不相等的整数组成,对于任意整数 num\textit{num}num,当 num\textit{num}numnum+k\textit{num} + knum+k 都在数组中出现时,有数对 (num,num+k)(\textit{num}, \textit{num} + k)(num,num+k)。遍历数组 nums\textit{nums}nums 并用哈希集合记录出现的数字,然后遍历哈希集合,对于哈希集合中的每个数字 num\textit{num}num,如果 num+k\textit{num} + knum+k 也在哈希集合中,则将数对的数目加 111。遍历哈希集合结束之后即可得到差为 kkk 的数对的数目。

代码

class Solution {public int findPairs(int[] nums, int k) {int pairs = 0;if (k == 0) {Map<Integer, Integer> map = new HashMap<Integer, Integer>();for (int num : nums) {map.put(num, map.getOrDefault(num, 0) + 1);}Set<Integer> set = map.keySet();for (int num : set) {if (map.get(num) > 1) {pairs++;}}} else {Set<Integer> set = new HashSet<Integer>();for (int num : nums) {set.add(num);}for (int num : set) {if (set.contains(num + k)) {pairs++;}}}return pairs;}
}

复杂度分析

  • 时间复杂度:O(n)O(n)O(n),其中 nnn 是数组 nums\textit{nums}nums 的长度。需要遍历数组一次,使用哈希表或哈希集合存储数组中的不同数字,然后遍历哈希表或哈希集合一次,由于哈希表或哈希集合中的元素个数不超过数组长度,因此时间复杂度是 O(n)O(n)O(n)

  • 空间复杂度:O(n)O(n)O(n),其中 nnn 是数组 nums\textit{nums}nums 的长度。需要使用哈希表或哈希集合存储数组中的不同数字,最坏情况下需要存储数组中的全部数字。

http://www.yayakq.cn/news/262292/

相关文章:

  • 厦门手机网站企业内部网站模板
  • 系统开发费用seo搜索引擎招聘
  • 二手车 网站开发膳食管理东莞网站建设
  • 网络课程教学平台有哪些seo快速排名多少钱
  • seo网站优化建议邯郸研情网络科技有限公司
  • 网站建设客源胶州专业建站
  • 深圳网站域名注册wordpress倒闭汉化组
  • 如何做建筑一体化的网站wordpress只显示部分文章
  • 南京网站设计公司推荐邯郸哪里有做网站的李
  • 网站建设淘宝山东城市建设职业学院教务网站
  • 关于网站建设的通知张向东
  • 做电影网站需要多大空间网站建设相关制度
  • 建网站有什么要注意的丹阳高铁站对面的规划
  • 浏阳企业网站建设用php做网站的方法
  • 温州做网站哪个好代码网页制作
  • 如何建淘客网站爱原物设计网
  • 国内做网站网站代理烟台企业网站建站模板
  • 网站建设推广优化话术百度怎么推广网站
  • 主流数据网站网络营销企业网站
  • 如何解决网站兼容性问题网站首页图片轮转代码 很好用
  • 做问卷调查的网站有啥怎么自己建设个网站
  • 焦作网站建设哪家好pc站转换手机网站
  • 多语言的网站佛山做网站制作
  • 惠州手机网站建设公众号软文素材
  • 网站中的表单怎么做wordpress页面背景
  • 外贸购物网站模板免费制作
  • 聊城网站建设售后服务怎么黑进网站后台
  • 网站空间可以自己做服务器用网站制作自己app软件
  • 网站运营年度推广方案苏州建设公司
  • 邯郸企业网站建设报价手机网站 设置