【Leetcode】532. K-diff Pairs in an Array
2017-03-05 14:22
555 查看
思路:
成对的值不分先后,所以先对nums进行排序。
用一个set存储出现过的值,用于后续判断是否某个值已经有值与其成对。
分为两种情况:
(1)k==0,即找出值相等的对数。
再用一个sameSet存储所有已成对的值,避免同一个值加入结果多次。只有sameSet中不含该值,且set中包含了该值,才能加入结果。
(2)k!=0,即找出差的绝对值为k的对数。
只有set中不包含该值但包含了该值-k,才能加入结果。
成对的值不分先后,所以先对nums进行排序。
用一个set存储出现过的值,用于后续判断是否某个值已经有值与其成对。
分为两种情况:
(1)k==0,即找出值相等的对数。
再用一个sameSet存储所有已成对的值,避免同一个值加入结果多次。只有sameSet中不含该值,且set中包含了该值,才能加入结果。
(2)k!=0,即找出差的绝对值为k的对数。
只有set中不包含该值但包含了该值-k,才能加入结果。
public class Solution { public int findPairs(int[] nums, int k) { int len = nums.length, result = 0; Arrays.sort(nums); Set<Integer> set = new HashSet<Integer>(); Set<Integer> sameSet = new HashSet<Integer>(); if (k != 0) { for (int i = 0; i < len; i++) { if (!set.contains(nums[i]) && set.contains(nums[i] - k)) result++; set.add(nums[i]); } } else { for (int i = 0; i < len; i++) { if (!sameSet.contains(nums[i]) && set.contains(nums[i])) { result++; sameSet.add(nums[i]); } set.add(nums[i]); } } return result; } }Runtime:44ms
相关文章推荐
- 【leetcode】532. K-diff Pairs in an Array(Python & C++)
- [Leetcode] 532. K-diff Pairs in an Array 解题报告
- leetcode 532. K-diff Pairs in an Array 相差为k的元素对
- 【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 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
- leetcode532. K-diff Pairs in an Array
- [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