【Leetcode】532. K-diff Pairs in an Array


思路:


成對的值不分先後,所以先對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

0 個評論

要回覆文章請先登錄註冊