Leetcode之Two Sum
2015-08-10 16:58
417 查看
Given an array of integers, find two numbers such that they add up to a specific target number.
The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2. Please note that your returned answers (both index1 and index2) are not zero-based.
You may assume that each input would have exactly one solution.
Input: numbers={2, 7, 11, 15}, target=9
Output: index1=1, index2=2
对于Two Sum问题,首先想到的方法就是两层循环,但是提交代码后,发现超时,时间复杂度(O(n2))太高,所以必须降低时间复杂度。
我们可以利用STL的map容器来存储每个元素的索引,这样整个过程只需遍历一次就ok,而map容器的底层实现使用RB树,所以查找的时间复杂度为O(logn),这样修改代码之后,然后提交代码后,accepted,具体实现详见代码
The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2. Please note that your returned answers (both index1 and index2) are not zero-based.
You may assume that each input would have exactly one solution.
Input: numbers={2, 7, 11, 15}, target=9
Output: index1=1, index2=2
#include <iostream> #include <vector> #include <map> class Solution { public: std::vector<int> twosum(std::vector<int>& nums, int target) { std::vector<int> results; std::map<int,int> mp; int len = nums.size(); for(int i = 0; i < len; ++i) { if(!mp.count(nums[i])) { mp.insert(std::pair<int,int>(nums[i],i)); } if(mp.count(target - nums[i])) { int n = mp[target - nums[i]]; if(n < i) { results.push_back(n+1); results.push_back(i+1); return results; } } } return results; } }; int main() { int num[5] = {2,7,2,11,18}; int target = 9; std::vector<int> nums(num,num+5); Solution sln; std::vector<int> results; results = sln.twosum(nums,target); int len = results.size(); for(int i = 0; i < len; ++i) { std::cout<<results[i]<<std::endl; } return true;
对于Two Sum问题,首先想到的方法就是两层循环,但是提交代码后,发现超时,时间复杂度(O(n2))太高,所以必须降低时间复杂度。
我们可以利用STL的map容器来存储每个元素的索引,这样整个过程只需遍历一次就ok,而map容器的底层实现使用RB树,所以查找的时间复杂度为O(logn),这样修改代码之后,然后提交代码后,accepted,具体实现详见代码
相关文章推荐
- Java一个多线程的经典例子
- Microsoft Visual C++ 2010(86) Redistributable不能安装完美解决
- Android-RecylerView初识
- 提高Java架构师与开发者效率的10大工具
- 使用phpQuery 抓取HTML 页面内容
- java Future 接口介绍
- Websphere 8.5静默安装升级
- leetcode 117 —— Populating Next Right Pointers in Each Node II
- R 分词记录
- 事务的传播行为(讲得比较好)
- TCP/IP数据报格式分析
- 网上书店系统
- dbms_stats.get_prefs
- Wedding (poj 3648 2-SAT 输出任意一组解)
- hpuoj1697 CZY找句子【KMP】
- Block用法(存取变量)(一)
- SIGPIPE并产生一个信号处理
- Oracle列出指定日期段内的日期
- 关于编程的一些反思
- 智能硬件产品的测试经验总结