Two Sum —— Leetcode
2015-09-04 15:19
399 查看
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
用hashtable解决和为target的问题。
源码不太美观,还是搜一下leetcode上votes最高的答案吧。
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
std::unordered_map<int, int> m;
vector<int> res;
for(int i=0; i<nums.size(); ++i) {
if(m[nums[i]] == 0)
m[nums[i]] = i+1;
}
int tmp = 0;
for(int j=0; j<nums.size(); ++j) {
tmp = m[target-nums[j]];
if(tmp > 0) {
if(tmp != j+1) {
res.push_back(min(tmp, j+1));
res.push_back(max(tmp,j+1));
break;
}
}
}
return res;
}
};
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
用hashtable解决和为target的问题。
源码不太美观,还是搜一下leetcode上votes最高的答案吧。
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
std::unordered_map<int, int> m;
vector<int> res;
for(int i=0; i<nums.size(); ++i) {
if(m[nums[i]] == 0)
m[nums[i]] = i+1;
}
int tmp = 0;
for(int j=0; j<nums.size(); ++j) {
tmp = m[target-nums[j]];
if(tmp > 0) {
if(tmp != j+1) {
res.push_back(min(tmp, j+1));
res.push_back(max(tmp,j+1));
break;
}
}
}
return res;
}
};
相关文章推荐
- 进程process与线程thread总结
- 【转】第一章 Shiro简介
- VB+DX游戏编程教程 第三话:多变的矩阵
- centos 虚拟机模拟联网的MAC地址问题
- Http学习笔记
- 中文编码方案
- poj 1007 DNA Sorting 【对逆序数进行sort排序】
- AngularJS 拦截器和好棒例子
- JAVA如何获取GUID
- 使用iptables配置linux服务器请求转发
- Attempting to badge the application icon but haven't received permiss...
- poj Girls and Boys 二分图匹配
- cinのpeek putback
- UVa 524:Prime Ring Problem(回溯)
- [leetcode 220]Contains Duplicate III
- Linux 进程间通信(一)(经典IPC:管道、FIFO)
- poj Girls and Boys 二分图匹配
- 在VS2010中的MFC中配置GDI+
- 使用iptables配置linux服务器请求转发
- web 前端学习笔记(1)