1. 两数之和

题目:Leetcode 1.两数之和 (简单) (二刷)

解题思路:

如何提高效率,字典映射相对于列表来说能够有效提高搜索的速率,而惰性生成相对于list来说也会减少内存的消耗。

代码:

1
2
3
4
5
6
7
8
9
10
11
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
m = len(nums)
list_ = {}
for i,data in enumerate(nums):
list_[data] = i
for i in range(m):
j = list_.get(target-nums[i],None)
if j!=i and j:
return [i,j]
return []

注:本题中使用enumerate惰性添加字典元素。

此题不能使用setdefault(),因为题目中要求了,不能使用相同的元素,也就是所有元素应该相互独立。
而如果使用setdefault()的话,那么相同的元素,例如[3,3,3],再使用setdefault()后就会变成{3:0},
而不是{3:0,3:1,3:2}。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!