题解 | #两数之和#

两数之和

http://www.nowcoder.com/practice/20ef0972485e41019e39543e8e895b7f

双哈希表存储。
如果有重复的数字则使用第二个哈希表

代码如下

class Solution {
public:
/**
*
* @param numbers int整型vector
* @param target int整型
* @return int整型vector
*/
vector<int> twoSum(vector<int>& numbers, int target) {
// write code here
unordered_map<int, int> m1,m2;
int len=numbers.size();
for(int i=0;i<len;++i)
{
if(!m1.count(numbers[i])) m1[numbers[i]]=i+1;
else m2[numbers[i]]=i+1;
}
for(auto &p:m1)
{
int i=p.first;
if(target-i!=i&&m1.count(target-i))
{
if(p.second<m1[target-i]) return{p.second,m1[target-i]};
else return{m1[target-i],p.second};
}
if(m2.count(target-i))
{
if(p.second<m2[target-i]) return{p.second,m2[target-i]};
else return{m2[target-i],p.second};
}
}
return {};</int></int>

}

};

O(N)时间复杂度

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-11 11:16
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务