532 -数组中的K-diff对
2024-09-01 00:59:58
例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;
}
最新文章
- 【Telerik】查询控件<;telerik:RadMaskedTextBox>;的使用
- php 选择排序法
- megapix-image插件 使用Canvas压缩图片上传 解决手机端图片上传功能的问题
- SpringMVC基础——一个简单的例子
- java模拟有验证码的Http登陆
- CDHtmlDialog加壳HTML5页面跳转错误解决(原)
- PHP ";gdImageCreateFromXpm()";空指针间接引用漏洞
- avd name对AVD的创建的影响
- Log4Net 使用总结
- git flow 的使用
- .net core系列之初识asp.net core
- Jmeter中基本操作
- USING KERBEROS
- Android popupwindow 失去焦点或者点击空白区域时消失的解决方法
- 如何清除SQLServer服务器名称、登录名等
- Nginx IP地址透传
- 【HNOI2016】矿区
- 开源项目kcws代码分析--基于深度学习的分词技术
- Java-ThreadLocal,Java中特殊的线程绑定机制
- CentOS 6.5 下搭建FastDFS服务
热门文章
- React跨域
- jquery移动端一个按钮两个事件
- Code Chef DARTSEGM(计算几何+凸包)
- php文件每隔几秒执行一次
- [Swift实际操作]七、常见概念-(2)点CGPoint和变形CGAffineTransform的使用
- Centos7安装Chacha20加密算法 (验证成功)
- byte范围及8种常见数据类型
- 项目实体类使用@Data注解,但是项目业务类中使用getA(),setA()方法报错,eclipse中配置lombok
- Xshell连接不上虚拟机Linux系统
- 一桩由X509Certificate2引发的血案