概述
题目:
题解1:哈希表
class Solution {
public:
vector<int> twoSum(vector<int>& numbers, int target) {
/*解法1:哈希表*/
unordered_map<int,int> record;//元素->下标
for(int i=0;i<numbers.size();++i)
record[numbers[i]]=i+1;
for(int i=0;i<numbers.size();++i)
{
if(record.count(target-numbers[i]))
return vector<int> {i+1,record[target-numbers[i]]};
}
return {};
}
};
题解2:双指针
class Solution {
public:
vector<int> twoSum(vector<int>& numbers, int target) {
//解法2:双指针,注意本题是有序数组
int i=0,j=numbers.size()-1;
while(i<j)
{
int sum=numbers[i]+numbers[j];
if(sum==target)return {i+1,j+1};
else if(sum>target)j--;//sum比target大,j左移一格
else i++;//sum比target小,i右移一格
}
return {};
}
};
最后
以上就是缥缈洋葱为你收集整理的[数组][哈希表]leetcode167:两数之和Ⅱ-输入有序数组(easy)的全部内容,希望文章能够帮你解决[数组][哈希表]leetcode167:两数之和Ⅱ-输入有序数组(easy)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复