K-diff Pairs in an Array
阿新 • • 發佈:2017-09-23
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) ina: 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 ifnums[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