Two Sum
2015-08-10 09:13
316 查看
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
思路:暴力想法是两重循环,但是时间开销比较大,比较好的思路是使用哈希表,利用哈希表查找高效的优势,可将算法的时间复杂度降为O(n).
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
思路:暴力想法是两重循环,但是时间开销比较大,比较好的思路是使用哈希表,利用哈希表查找高效的优势,可将算法的时间复杂度降为O(n).
class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> results; map<int,int>hmap; for(int i = 0; i < nums.size();++i){ if(!hmap.count(nums[i])) hmap.insert(pair<int,int>(nums[i],i)); if(hmap.count(target-nums[i])){ int n = hmap[target-nums[i]]; if(n<i){//确定两个数是不同的 results.push_back(n+1); results.push_back(i+1); return results; } } } return results; } };
相关文章推荐
- unsigned int 与 unsigned long qt中的ulonglong
- 判断浏览器是否支持 JS
- LINQ to SQL活学活用(1):这要打破旧观念
- bzoj3757: 苹果树
- 机器学习中的群论方法
- MyEclipse快捷键
- IOS-4-面试题1:黑马程序员IOS面试题大全
- LINQ to SQL活学活用(2):躲起来别让我看见
- 微信开发(1)自定义菜单
- 思科模拟器的网络访问控制
- OpenStack Weekly Rank 2015.08.10
- centos7 安装openfire
- 拆分窗口类CSplitterWnd在对话框中的应用及拆分子窗口间的通信
- 浅谈网站内容建设、数据分析、信息架构三者关系
- Tian Ji -- The Horse Racing(hdu1052)
- hdu 5361 In Touch 题目特点+优先队列的dijikstra 2015 Multi-University Training Contest 6
- ListView 删除item删除不了的问题解决办法
- [转]UltraISO制作U盘启动盘安装Win7/9/10系统攻略
- ACE_GUARD开头的锁
- 数据挖掘常用算法