532. 數組中的K-diff數對

 

 

 

思路:

想到:絕對值應是非負數,因此k<0的狀況下要排除(測試用例有k<0的);
設置計數器ans=0;
一、轉set去重,再轉回list,將newnums[]升序排列;
二、若k==0,則 2-diff 數對是相同元素對,因此遍歷newnums,其中元素nums.count(newnums[i]) >= 2,
  ans加1;

三、若k>0,則 2-diff 數對是不一樣元素對,遍歷newnums,若(newnums[i] + k)也在newnums中,
  則ans加1;

四、返回ans。

 1 class Solution(object):
 2     def findPairs(self, nums, k):
 3         """
 4         :type nums: List[int]
 5         :type k: int
 6         :rtype: int
 7         """
 8         # 絕對值應是非負數
 9         if k < 0:
10             return 0
11         # 轉set去重,再升序排
12         newnums = sorted(set(nums))
13         ans = 0
14         # 差爲0,則是相同元素對
15         if k == 0:
16             for i in range(len(newnums)):
17                 if nums.count(newnums[i]) >= 2:
18                     ans += 1
19         # 差的絕對值大於0,則是不一樣元素對
20         else:
21             for i in range(len(newnums)):
22                 if newnums[i] + k in newnums:
23                     ans += 1
24         return ans
25 
26 
27 if __name__ == '__main__':
28     solution = Solution()
29     print(solution.findPairs([1, 3, 1, 4, 5], 0))
相關文章
相關標籤/搜索