首页 > 代码库 > 1. Two Sum
1. Two Sum
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
从给定序列中找出和为指定数字的两个数字的下标
You may assume that each input would have exactly one solution.
假设每个输入只有一个解
Example:
Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1].
Brute Force
time complexity O(n2)
space complexity O(1)
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> result;
int len = nums.size();
for(int i = 0; i < len - 1; ++i){
for(int j = i + 1; j < len; ++j){
if(nums[i]+nums[j] == target){
result.push_back(i);
result.push_back(j);
return result;
}
}
}
return result;
}
};
Hash
time complexity O(n)
space complexity O(n)
该方法给出的序列是从后往前的
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> imap;
for (int i = 0;; ++i) {
auto it = imap.find(target - nums[i]);
if (it != imap.end())
return vector<int> {i, it->second};
imap[nums[i]] = i;
}
}
};
see discussion here https://discuss.leetcode.com/topic/3294/accepted-c-o-n-solution/2
来自为知笔记(Wiz)
1. Two Sum
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。