标签:air 技术分享 images 创建 简单题 alt return 使用 字典
这道题为简单题
我的思路:创建字典,遍历列表,如果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
标签:air 技术分享 images 创建 简单题 alt return 使用 字典
原文地址:http://www.cnblogs.com/liuxinzhi/p/7580869.html