LeetCode 1. Two Sum
2017-01-21 10:01
357 查看
题目:
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:
UPDATE (2016/2/13):
The return format had been changed to zero-based indices. Please read the above updated description carefully.
分析:
方法 1:暴力,复杂度 O(n2),会超时
方法 2:hash。用一个哈希表,存储每个数对应的下标,复杂度 O(n).
方法 3:先排序,然后左右夹逼,排序 O(n log n),左右夹逼 O(n),最终 O(n log n)。但是注
意,这题需要返回的是下标,而不是数字本身,因此这个方法行不通。
代码:
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].
UPDATE (2016/2/13):
The return format had been changed to zero-based indices. Please read the above updated description carefully.
分析:
方法 1:暴力,复杂度 O(n2),会超时
方法 2:hash。用一个哈希表,存储每个数对应的下标,复杂度 O(n).
方法 3:先排序,然后左右夹逼,排序 O(n log n),左右夹逼 O(n),最终 O(n log n)。但是注
意,这题需要返回的是下标,而不是数字本身,因此这个方法行不通。
代码:
//LeetCode, Two Sum // 方法 2:hash。用一个哈希表,存储每个数对应的下标 // 时间复杂度 O(n),空间复杂度 O(n) class Solution { public: vector<int> twoSum(vector<int> &num, int target) { unordered_map<int, int> mapping; vector<int> result; for (int i = 0; i < num.size(); i++) { mapping[num[i]] = i; } for (int i = 0; i < num.size(); i++) { const int gap = target - num[i]; if (mapping.find(gap) != mapping.end() && mapping[gap] > i) { result.push_back(i + 1); result.push_back(mapping[gap] + 1); break; } } return result; } };
相关文章推荐
- LeetCode - Two Sum
- LeetCode(62)-Two Sum
- leetcode 1: 找出两个数相加等于给定数 two sum
- leetcode 刷题题解(c++) 1.Two Sum (hash表,排序+二分查找)
- leetcode 151 Two Sum
- LeetCode 学习笔记:Question 1、Two Sum
- LeetCode 1.Two Sum
- [leetcode]1. Two Sum
- Leetcode 之第一题 two sum
- Leetcode: Two Sum
- Leetcode: Two Sum
- 【leetcode】Two Sum
- [LeetCode] Two Sum
- LeetCode - Two Sum
- LeetCode - Two Sum
- LeetCode:1. Two Sum
- 【leetcode刷题笔记】Two Sum
- leetcode 1 Two Sum
- [leetcode 1] Two Sum
- Leetcode学习(1)—— Two Sum