思路:
想到: 绝对值应是非负数, 所以 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.
- class Solution(object):
- def findPairs(self, nums, k):
- """
- :type nums: List[int]
- :type k: int
- :rtype: int
- """
- # 绝对值应是非负数
- if k <0:
- return 0
- # 转 set 去重, 再升序排
- newnums = sorted(set(nums))
- ans = 0
- # 差为 0, 则是相同元素对
- if k == 0:
- for i in range(len(newnums)):
- if nums.count(newnums[i])>= 2:
- ans += 1
- # 差的绝对值大于 0, 则是不同元素对
- else:
- for i in range(len(newnums)):
- if newnums[i] + k in newnums:
- ans += 1
- return ans
- if __name__ == '__main__':
- solution = Solution()
- print(solution.findPairs([1, 3, 1, 4, 5], 0))
来源: http://www.bubuko.com/infodetail-3518243.html