Leetcode--Two Sum
来源:互联网 发布:淘宝一个月不发货 编辑:程序博客网 时间:2024/06/13 21:09
Problem Description:
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
struct node{ int val; int indexs; }; bool compare(node a,node b) { return a.val<b.val; } class Solution {public: vector<int> twoSum(vector<int> &numbers, int target) { vector<int> res; if(numbers.size()<2) return res; vector<node> nums; for(vector<int>::size_type index=0;index!=numbers.size();++index) { node temp; temp.val=numbers[index]; temp.indexs=index+1; nums.push_back(temp); } sort(nums.begin(),nums.end(),compare); vector<node>::iterator p=nums.begin(); vector<node>::iterator q=nums.end()-1; while(p<q) { if((p->val+q->val)>target) q--; else if((p->val+q->val)<target) p++; else { if(p->indexs<q->indexs) { res.push_back(p->indexs); res.push_back(q->indexs); } else { res.push_back(q->indexs); res.push_back(p->indexs); } break; } } return res; }};
在discuss中看到有利用hash_map的性质来做的,实质就是利用map记录下每个元素的下标,然后固定一个元素查找另一个元素是否存在,时间复杂度可以达到O(n),具体实现如下:
class Solution {public: vector<int> twoSum(vector<int> &numbers, int target) { vector<int> res; if(numbers.size()<2) return res; unordered_map<int,int> numsmap; for(vector<int>::size_type index=0;index!=numbers.size();++index) numsmap[numbers[index]]=index; unordered_map<int,int>::iterator flag=numsmap.end(); for(vector<int>::size_type index=0;index!=numbers.size();++index) { int temp=target-numbers[index]; flag=numsmap.find(temp); if(flag!=numsmap.end()&&flag->second!=index) { if(index<flag->second) { res.push_back(index+1); res.push_back(flag->second+1); } else { res.push_back(flag->second+1); res.push_back(index+1); } break; } } return res; }};
0 0
- 【Leetcode】Two Sum (Sum)
- LeetCode: Two Sum
- LeetCode: Two Sum
- [Leetcode] Two Sum
- LeetCode : Two Sum
- Leetcode: Two Sum
- leetcode 46: Two Sum
- [LeetCode] 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之Two Sum
- LeetCode | Two Sum
- 成长日记(1)
- 【HDU 4905 多校联合】The Little Devil II【DP+四边形不等式优化】
- 谈Google Chubby
- 在 MS VS 2005中 编译PHP时解决“不能分配常量大小为 0 的数组”错误的临时办法
- Emoji表情符号录入MySQL数据库报错的解决方案
- Leetcode--Two Sum
- C语言数据结构书顺序表手打
- 打开CHM文件,左边目录可以显示,左边内容是空白
- 'string' file not found
- C语言实现bmp图像的平移操作
- Java--多线程(三)
- 求导人生---考研
- C++面向对象编程实例——文本查询程序
- HDU4905--The Little Devil II(四边形不等式优化)