1 两数之和
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目描述
题目给出的接口为:
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
}
};
题目分析
-
使用暴力解法 O(N2):
嵌套两层循环:
第一层:i 从 0 到 n - 2;
第二层:j 从 i + 1 到 n - 1;
判断 nums[i] + nums[j] == target ,如果成立则是正确答案. -
使用map O(NlogN)
代码如下:
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
map<int,int> a;
vector<int> b(2,-1);
for(int i = 0 ; i < nums.size() ; i++ )
{
if(a.count(target - nums[i]) > 0)
{
b[0] = a[target - nums[i]];
b[1] = i;
break;
}
a[nums[i]] = i;
}
return b;
}
};