题目链接:https://leetcode-cn.com/problems/two-sum/submissions/
题解:
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
map<int, int>hash; //利用hash表存储遍历过的元素以及索引
vector<int>res;
for(int i = 0;i < nums.size();i++){
//判断之前是否出现能和当前元素相加组成target的元素
if(hash.count(target - nums[i]) == 1){
res = {hash[target - nums[i]], i};
break;
}
//将当前元素加入hash
hash[nums[i]] = i;
}
return res;
}
};
思路:
主要是用hash表存储之前的遍历过的元素,以此来降低时间复杂度,这个算法的时间复杂度是O(N).