Leetcode 1. Two Sum 题解
最后编辑于: 2016-03-29我的解
没想那么多
756ms
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
for (int i = 0; i < nums.size(); ++i)
{
for (int j = i + 1; j < nums.size(); ++j)
{
if (nums[i] + nums[j] == target)
return vector<int>{i, j};
}
}
}
};
更好的解
有一种说法
只需要对输入的 vector
进行一次遍历就够了nums[i]
作为 Keyi
作为 Valuetarget - current_num
在不在
24 ms
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
map<int, int> past;
for (int i = 0; i < nums.size(); ++i) {
int complement = target - nums[i];
if (past.find(complement) != past.end()) {
return vector<int> { past.find(complement)->second, i };
}
past[nums[i]] = i;
}
}
};
启发
要逐个遍历判断符合条件与否的时候