532. K-diff Pairs in an Array(python+cpp)
阿新 • • 發佈:2018-12-19
題目:
Given an array of integers and an integer
k
, you need to find the number of uniquek
-diff pairs in the array. Here ak
-diff pair is defined as an integer pair(i, j)
, wherei
andj
are both numbers in the array and their absolute difference isk
. 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 exceed10,000
. All the integers in the given input belong to the range:[-1e7, 1e7]
.
解釋:
需要用到Counter()
統計每個數字出現的次數,需要對k進行判斷。
python程式碼:
from collections import Counter
class Solution(object):
def findPairs(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: int
"""
if k<0 or not nums:
return 0
c=Counter(nums)
if k==0:
return len([i for i in c if c[i]>1])
if k>0:
return sum([i+k in c for i in c])
c++程式碼:
#include<map>
using namespace std;
class Solution {
public:
int findPairs(vector<int>& nums, int k) {
if(k<0 || nums.size()==0)
return 0;
map<int,int>_map;
for (auto num:nums)
_map[num]++;
int cnt=0;
if (k==0)
{
for(auto item:_map)
if(item.second>1)
cnt++;
}
else
{
for (auto item:_map)
if(_map.count(item.first+k))
cnt+=1;
}
return cnt;
}
};
總結: 啊,我真的好喜歡我的新紅軸機械鍵盤啊~!