1. 两数之和
https://leetcode-cn.com/problems/two-sum/
解法一:哈希表
利用hashmap迅速查找,一遍遍历,填充map的同时进行比对判断。
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
map<int, int> hash;
vector<int> result;
for(int i = 0; i < nums.size(); i++){
int num_to_find = target - nums[i];//要找的数
map<int, int>::const_iterator iter = hash.find(num_to_find);
//若iter访问到end,说明没找到
if(iter != hash.end()){
result.push_back(i);
result.push_back(iter->second);
return result;
}
hash[nums[i]] = i;
}
}
};
py:
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
hash = {}
for i, val in enumerate(nums):
#每次应该先找,再填hash,避免“找自己”,即target-val == val的情况
if target - val in hash:
return [i, hash[target-val]]
hash[val] = i
js:
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
hash = new Map()
n = nums.length
for (let i = 0; i < n; i++) {
val = nums[i]
if (hash.get(target - val) !== undefined) {
return [i, hash.get(target - val)]
}
hash.set(val, i)
}
};
最后更新于