题目:
题解1:哈希表
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16class 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:双指针
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16class 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内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复