From LeetCode 1. Two Sum
Description
Given an array of integers nums
and an integer target
, return indices of the two numbers such that they add up to target
.
You may assume that each input would have *exactly* one solution, and you may not use the same element twice.
You can return the answer in any order.
Solution
First let’s talk about difference between list
, set
and map
- list
- If the number of elements in a list is small, it will waste a lot of memory space
- set
- Element in a set is just a
key
.
- Element in a set is just a
- map
- Map can use
key
to store number, andvalue
to store index
- Map can use
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
records = dict()
# 用枚举更方便,就不需要通过索引再去取当前位置的值
for idx, val in enumerate(nums):
if target - val not in records:
records[val] = idx
else:
return [records[target - val], idx] # 如果存在就返回字典记录索引和当前索引