博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode 532. K-diff Pairs in an Array
阅读量:5298 次
发布时间:2019-06-14

本文共 2352 字,大约阅读时间需要 7 分钟。

Given an array of integers and an integer k, you need to find the number of unique k-diff pairs in the array. Here a k-diff pair is defined as an integer pair (i, j), where i and j are both numbers in the array and their  is k.

Example 1:

Input: [3, 1, 4, 1, 5], k = 2Output: 2Explanation: There are two 2-diff pairs in the array, (1, 3) and (3, 5).Although we have two 1s in the input, we should only return the number of unique pairs.

Example 2:

Input:[1, 2, 3, 4, 5], k = 1Output: 4Explanation: There are four 1-diff pairs in the array, (1, 2), (2, 3), (3, 4) and (4, 5).

Example 3:

Input: [1, 3, 1, 5, 4], k = 0Output: 1Explanation: There is one 0-diff pair in the array, (1, 1).

Note:

  1. The pairs (i, j) and (j, i) count as the same pair.
  2. The length of the array won't exceed 10,000.
  3. All the integers in the given input belong to the range: [-1e7, 1e7].
标签 
 
类似题目 
 
 
方法一
思路:每个pair(a,b),其中a<=b,a-b=k。可以看到只要确定了a和k,就可以找到b,并且为了保证pair的唯一性,找到b以后,b不能再作为其他pair的右半部分。具体见代码。
 
代码:
1 public class Solution { 2     public int findPairs(int[] nums, int k) { 3         if(nums == null || nums.length == 0 || k < 0) return 0; 4         Map
map = new HashMap
(); 5 for(int i = 0; i < nums.length; ++i) { 6 map.put(nums[i], i); 7 } 8 int res = 0; 9 for(int i = 0; i < nums.length; ++i) {10 if(map.containsKey(nums[i] + k) && map.get(nums[i] + k) != i) {11 map.remove(nums[i] + k);12 res++;13 } 14 }15 return res;16 }17 }

 

 

方法二

思路:具体见代码。

 

代码:

1 public class Solution { 2     public int findPairs(int[] nums, int k) { 3         if(nums == null || nums.length == 0 || k < 0) return 0; 4         Map
map = new HashMap
(); 5 int res = 0; 6 for(int i : nums) { 7 map.put(i, map.getOrDefault(i, 0) + 1); 8 } 9 if(k == 0) {10 for (Map.Entry
entry : map.entrySet()) {11 if(entry.getValue() >= 2) res++;12 } 13 }else {14 for (Map.Entry
entry : map.entrySet()) {15 if(map.containsKey(entry.getKey() + k)) res++;16 }17 }18 return res;19 }20 }

 

转载于:https://www.cnblogs.com/Deribs4/p/6605915.html

你可能感兴趣的文章
JS属性大全
查看>>
java复制文件
查看>>
第一册:lesson seventy nine.
查看>>
GCD的同步异步串行并行、NSOperation和NSOperationQueue一级用dispatch_once实现单例
查看>>
团队作业
查看>>
数据持久化时的小bug
查看>>
mysql中key 、primary key 、unique key 与index区别
查看>>
bzoj2257
查看>>
Linux查看文件编码格式及文件编码转换<转>
查看>>
Leetcode: Find Leaves of Binary Tree
查看>>
Vue 模板解释
查看>>
http://www.bootcss.com/
查看>>
20145308 《网络对抗》 注入shellcode+Return-to-libc攻击 学习总结
查看>>
将多张图片和文字合成一张图片
查看>>
自己动手写ORM(01):解析表达式树生成Sql碎片
查看>>
如何使用USBWebserver在本机快速建立网站测试环境
查看>>
百度Ueditor编辑器的Html模式自动替换样式的解决方法
查看>>
变量提升
查看>>
线性表可用顺序表或链表存储的优缺点
查看>>
在现有的mysql主从基础上,搭建mycat实现数据的读写分离
查看>>