想到:絕對值應是非負數,因此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))