532 -数组中的K-diff对
例1: 输入: [3,1,4,1,5],k = 2 输出: 2
说明:阵列中有两个2-diff对,(1,3)和(3,5)。 虽然我们在输入中有两个1,但我们应该只返回唯一对的数量。
例2: 输入: [1,2,3,4,5],k = 1 输出: 4
说明:阵列中有四个1-diff对,(1,2),(2,3),(3,4)和(4,5)。
例3: 输入: [1,3,1,5,4],k = 0 输出: 1 说明:数组中有一个0-diff对,(1,1)。
注意: 对(i,j)和(j,i)计为同一对。 阵列的长度不会超过10,000。 给定输入中的所有整数都属于以下范围:[ - 1e7,1e7]。
解题思路:
使用HashSet将数组中有重复的元素放在一个HashSet中,若数组为空或者数组元素长度小于2或k<0,对数为0,若k==0时,则k-diff对数是此数组重复元素的HashSet集合的大小。若k>0是将数组元素放入两个HashSet中。通过迭代器遍历元素,判断set1中是否有元素值值跟迭代器当前遍历出的元素值-k相等,有则对数加一。
public int findPairs(int[] nums, int k) {
if (nums.length<2||nums==null||k<0)
return 0;
Set<Integer> set1=new HashSet<>();
Set<Integer> set2=new HashSet<>();
Set<Integer> repeat=new HashSet<>();
for (int i=0;i<nums.length;i++)
{
if (set1.contains(nums[i]))
{
repeat.add(nums[i]);
}else {
set2.add(nums[i]);
set1.add(nums[i]);
}
}
if (k==0)
return repeat.size();
int m=0;
Iterator iterator=set1.iterator();
while (iterator.hasNext())
{
int a= (int) iterator.next();
if(set2.contains(a-k))
m++;
}
return m;
}
532 -数组中的K-diff对的更多相关文章
- Java实现 LeetCode 532 数组中的K-diff数对(双指针,滑动窗口)
532. 数组中的K-diff数对 给定一个整数数组和一个整数 k, 你需要在数组里找到不同的 k-diff 数对.这里将 k-diff 数对定义为一个整数对 (i, j), 其中 i 和 j 都是数 ...
- [LeetCode] Kth Largest Element in an Array 数组中第k大的数字
Find the kth largest element in an unsorted array. Note that it is the kth largest element in the so ...
- 数组中第K小的数字(Google面试题)
http://ac.jobdu.com/problem.php?pid=1534 题目1534:数组中第K小的数字 时间限制:2 秒 内存限制:128 兆 特殊判题:否 提交:1120 解决:208 ...
- #7 找出数组中第k小的数
「HW面试题」 [题目] 给定一个整数数组,如何快速地求出该数组中第k小的数.假如数组为[4,0,1,0,2,3],那么第三小的元素是1 [题目分析] 这道题涉及整数列表排序问题,直接使用sort方法 ...
- [经典算法题]寻找数组中第K大的数的方法总结
[经典算法题]寻找数组中第K大的数的方法总结 责任编辑:admin 日期:2012-11-26 字体:[大 中 小] 打印复制链接我要评论 今天看算法分析是,看到一个这样的问题,就是在一堆数据 ...
- 选择问题(选择数组中第K小的数)
由排序问题可以引申出选择问题,选择问题就是选择并返回数组中第k小的数,如果把数组全部排好序,在返回第k小的数,也能正确返回,但是这无疑做了很多无用功,由上篇博客中提到的快速排序,稍稍修改下就可以以较小 ...
- 数组中的k个最小值
问题:输入n个整数,找出其中最小的k个数. 方案一:将输入的n个整数进行排序,输出前k个数即为所求的k个最小数.时间复杂度为O(nlogn). 方案二:创建一个大小为k的容器,来存储最小的k个数.遍历 ...
- 寻找数组中第K大数
1.寻找数组中的第二大数 using System; using System.Collections.Generic; using System.Linq; using System.Text; u ...
- 一题多解(五) —— topK(数组中第 k 大/小的数)
根据对称性,第 k 大和第 k 小,在实现上,是一致的,我们就以第 k 小为例,进行说明: 法 1 直接排序(sort(A, A+N)),当使用一般时间复杂度的排序算法时,其时间复杂度为 O(N2) ...
- [LeetCode] 215. Kth Largest Element in an Array 数组中第k大的数字
Find the kth largest element in an unsorted array. Note that it is the kth largest element in the so ...
随机推荐
- foreach写失效的问题
本文由作者张远道授权网易云社区发布. 坦白讲身为程序员,bug在所难免.有人讲,bug越多,说明程序员越伟大.这句话有它一定的道理. 因为从某方面讲,bug多了说明他的代码量也多. 言归正传,这里我记 ...
- java 处理json格式数据中的转义斜杠
1.{\"Count\":\"3\",\"ErrorString\":\"\",\"Success\" ...
- Weekly Contest 128
1012. Complement of Base 10 Integer Every non-negative integer N has a binary representation. For e ...
- docker-compose批量管理docker容器
# docker-compose编排工具 #批量管理(构建.启动容器) #centos7环境准备#安装docker-ce #安装docker-compose v1. sudo curl -o /usr ...
- Flask 中的 Response
1.Flask中的HTTPResponse @app.route("/") # app中的路由route装饰器 def index(): # 视图函数 return "I ...
- PyMysql复习
参考:http://www.cnblogs.com/liwenzhou/p/8032238.html 使用pycharm操作数据库. 填一个数据库名,User:填root 填写要连接的数据库. 建表. ...
- 看linux正在运行的服务用哪个命令?
https://zhidao.baidu.com/question/117779006.html 查看服务进程:ps aux查看服务cpu利用:top查看服务对应端口:netstat -nlp pst ...
- [Swift实际操作]七、常见概念-(10)使用UserDefaults和归档方式存取用户数据实际操作
在项目开发之中,你会经常需要将一些数据存储在本地,以便记录用户生产的数据或操作习惯.在项目文件夹上带点击鼠标右键.弹出右键菜单.本文将为你演示,存储用户数据的两种常用方式. 选择菜单中的创建新文件选项 ...
- jvm高级特性(4)(内存分配回收策略)
JVM高级特性与实践(四):内存分配 与 回收策略 一. 内存分配 和 回收策略 1,对象内存分配的概念: 往大方向讲,它就是在堆上分配(但也可能经过JIT编译后被拆散为标量类型并间接地栈上分配), ...
- cms的使用与总结
1,把cms中的basecms复制进Wamp里面的www文件夹, 2,打开Wamp,打开网址http://localhost/basecms/core/admin/admin.php(该网址默认端口为 ...