LeetCode-532:K-diff Pairs in an Array (给定绝对值差的值对个数)
2017-10-20 09:37
501 查看
Question
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 absolute difference is k.Example 1:
Input: [3, 1, 4, 1, 5], k = 2 Output: 2 Explanation: 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 = 1 Output: 4 Explanation: 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 = 0 Output: 1 Explanation: There is one 0-diff pair in the array, (1, 1).
Note:
The pairs (i, j) and (j, i) count as the same pair.
The length of the array won’t exceed 10,000.
All the integers in the given input belong to the range: [-1e7, 1e7].
问题解析:
从给定数组中,找出所有差的绝对值为k的元素值对(i, j),返回元素值对的数量。
Answer
Solution 1:
HashMap实现。由题目可以知道,同
LeetCode-1:Two Sum类似,题中在map中找到
nums[i]+k,就相当于找到了一对符合题目的值对;
首先给出没有值对,即符合条件的值对数量为0的情况;
将
nums中的所有元素以 (value:number) 的map对对象,存储在map中;
遍历map中的元素,注意区分k为0和不为0的情况。
class Solution { public int findPairs(int[] nums, int k) { if (nums == null || nums.length == 0 || k < 0) return 0; Map<Integer, Integer> map = new HashMap<>(); int count = 0; for (int i : nums){ map.put(i, map.getOrDefault(i, 0) + 1); } for (Map.Entry<Integer, Integer> entry : map.entrySet()){ if (k == 0){ if (entry.getValue() >= 2){ count++; } }else{ if (map.containsKey(entry.getKey() + k)){ count++; } } } return count; } }
Runtime: 30 ms
Beats 58.44 % of java submissions
时间复杂度:O(n);空间复杂度:O(n)
相关文章推荐
- LeetCode 532 K-diff Pairs in an Array
- LeetCode - 532 - K-diff Pairs in an Array
- leetcode532~K-diff Pairs in an Array
- [leetcode]-532 K-diff Pairs in an Array
- K-diff Pairs in an Array leetcode 532
- Leetcode 532 K-diff Pairs in an Array
- Leetcode 532 K-diff Pairs in an Array
- 20170605-leetcode-532-K-diff Pairs in an Array
- [LeetCode]532. K-diff Pairs in an Array
- 【Leetcode】532. K-diff Pairs in an Array
- Leetcode 532. K-diff Pairs in an Array
- LeetCode刷题【Array】 K-diff Pairs in an Array
- leetcode 532. K-diff Pairs in an Array
- LeetCode #532 K-diff Pairs in an Array
- LeetCode 532. K-diff Pairs in an Array
- 【leetcode】532. K-diff Pairs in an Array
- leetcode 532. K-diff Pairs in an Array
- LeetCode 532. K-diff Pairs in an Array
- LeetCode K-diff Pairs in an Array
- leetcode 532. K-diff Pairs in an Array 相差为k的元素对