题目:

题解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内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复