这题直接撸了一发O(n^2)时间复杂度,后来想一想,多有不妥,遂看讨论,可以用STL,改成O(n)时间复杂度,
O(n^2)很简单,不贴了,
贴个O(n)的:
class Solution {
public:
vector<int> twoSum(vector<int> &numbers, int target) {
unordered_map<int,int> map;
vector<int> result(2);
for(int i=0;i<numbers.size();i++){
int value=target-numbers[i];
if(map.find(value)!=map.end()){
result[0]=map[value];
result[1]=i+1;
break;
}
map[numbers[i]]=i+1;
}
return result;
}
};
本文介绍了一种解决“两数之和”问题的优化算法,通过使用unordered_map实现O(n)时间复杂度,显著提高了查找效率。文章提供了完整的代码示例。
1337

被折叠的 条评论
为什么被折叠?



