文章目录
题目描述
方法一:使用 set
思想:
遍历数组,如果 target - nums[i] 在 set 中,则 nums[i] 和 target-nums[i] 就是所求的数;如果不在 set 中,则将 nums[i] 存到set中。这样只需要花费 O(N) 的时间复杂度,不过需要 O(N)的复杂度。
代码
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
set<int> s;
for (int i = 0; i < nums.size(); ++i) {
if (s.find(target - nums[i]) != s.end()) {
return {nums[i], target - nums[i]};
}
else {
s.insert(nums[i]);
}
}
return {};
}
};