思路:
想到:绝对值应是非负数,所以k<0的情况下要排除(测试用例有k<0的);
设置计数器ans=0;
1、转set去重,再转回list,将newnums[]升序排列;
2、若k==0,则 2-diff 数对是相同元素对,所以遍历newnums,其中元素nums.count(newnums[i]) >= 2,
ans加1;
3、若k>0,则 2-diff 数对是不同元素对,遍历newnums,若(newnums[i] + k)也在newnums中,
则ans加1;
4、返回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))