0%

两数相加

题目:

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

解题思路:

利用python的字典模仿哈希表,首先将数组所有的值与索引打入字典,然后对于每一个值与target相减,如果存在,就返回。

1
2
3
4
5
6
7
hashmap={}
for ind,num in enumerate(nums):
hashmap[num] = ind
for i,num in enumerate(nums):
j = hashmap.get(target - num) get函数根据键返回值
if j is not None and i!=j:
return [i,j]
1
2
3
4
5
6
7
seq = ['one', 'two', 'three']     # enumerate的使用
for i, element in enumerate(seq): # 第一个值是索引 第二
... print(i, seq[i]) # 个是值
...
0 one
1 two
2 three
1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int,int> record;
for(int i = 0 ; i < nums.size() ; i ++){
int complement = target - nums[i];
if(record.find(complement) != record.end()){
int res[] = {i, record[complement]};
return vector<int>(res, res + 2);}
record[nums[i]] = i;}
}
};