题目描述
代码
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
int n = nums.size();
vector<int> ans;
unordered_map<int,int> mp;
for(int i=0;i<n;i++){
auto it = mp.find(target - nums[i]);
if(it != mp.end()){
ans.push_back(it->second);
ans.push_back(i);
}
mp[nums[i]] = i;
}
return ans;
}
};
总结
水题,只是在用暴力枚举时,提交LeetCode会超时,暴力代码如下:
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
int n = nums.size();
vector<int> ans;
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(nums[i]+nums[j] == target) {
ans.push_back(i);
ans.push_back(j);
}
}
}
return ans;
}
};
故使用map解题,可降低时间复杂度至O(n),这里定义的unordered_map,速度更快。