作者:Geekwyz
两数之和 II - 输入有序数组
题目链接:
https://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted/
解题思路:
这题有一个好处就是排好序了
我们采用双指针的解法,
- 定义两个指针,第一个指针指向数组第一个元素,第二个指针指向数组最后一个元素,
- 定义规则让指针进行移动:
第一个指针指向第一个元素,最后一个指针指向最后一个元素
1.如果两数之和等于目标值则直接返回
2,.如果两数之和大于目标值让第二个指针向左移动
3.如果两数之和小于目标值让第一个指针向右移动
代码:
class Solution {
public:
vector<int> twoSum(vector<int>& numbers, int target) {
int i = 0;
int j = numbers.size() - 1;
while (i < j) {
if (numbers[i] + numbers[j] == target) {
return {i + 1,j + 1};
} else if (numbers[i] + numbers[j] > target) {
j--;
} else {
i++;
}
}
return {};
}
};