您的位置:首页 > 其它

LeetCode 1 Two Sum

2016-11-28 01:46 246 查看

1-TwoSum

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.

Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].

题解

用hash表可以线性时间解决。

vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> hash_table;
for (int i = 0; i != nums.size(); ++i) {
if (hash_table.find(target-nums[i]) != hash_table.end())
return vector<int> {hash_table[target-nums[i]], i};
hash_table[nums[i]] = i;
}
return vector<int> {};
}

O(nlogn)时间解决的方法,见15-3Sum,虽然时间复杂度比hash表差,但可以用来解决kSum问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: