1. 程式人生 > >K-diff Pairs in an Array

K-diff Pairs in an Array

turn mage 鍵值對 使用 是否 在那 urn 簡單題 +=

    這道題為簡單題

  題目:

    技術分享

  思路:

    我的思路:創建字典,遍歷列表,如果nums[i] - k存在於字典中,如果存在那就再判斷nums[i]是否存在於a[nums[i] - k],如果nums[i]還沒有存在字典中,那麽就創建鍵值對,然後把nums[i] - k和nums[i] 的鍵值分別添加對應的值(nums[i] + k的情況也是一樣的 ),最後num+1。 我這麽想是因為存在[2,3,2]這樣類似的情況,這麽情況只能算作一次,所以我就用的字典來表示

    大神:也是用的字典,但是有個東西我沒想到,就是使用集合set,節省了很多步驟和情況

  代碼:

    我的:

 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         a = {}
 9         num = 0
10         if k < 0: return 0
11         for i in range(len(nums)):
12             if (nums[i] - k) in
a: 13 if nums[i] not in a[nums[i] - k]: 14 if nums[i] not in a: a[nums[i]] = [] 15 a[nums[i] - k].append(nums[i]) 16 a[nums[i]].append(nums[i] - k) 17 num += 1 18 if (nums[i] + k) in a: 19 if
nums[i] not in a[nums[i] + k]: 20 if nums[i] not in a: a[nums[i]] = [] 21 a[nums[i] + k].append(nums[i]) 22 a[nums[i]].append(nums[i] + k) 23 num += 1 24 if nums[i] not in a: a[nums[i]] = [] 25 return num

    大神:

1     def findPairs(self, nums, k):
2         if k>0:
3             return len(set(nums)&set(n+k for n in nums))
4         elif k==0:
5             sum(v>1 for v in collections.Counter(nums).values())
6         else:
7             return 0

K-diff Pairs in an Array