题解 | #两数之和#

两数之和

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)时间复杂度

全部评论

相关推荐

不愿透露姓名的神秘牛友
09-30 19:49
起名星人:蛮离谱的,直接要求转投销售
投递汇川技术等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务