题目描述
输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。
题目链接:https://leetcode-cn.com/problems/he-wei-sde-liang-ge-shu-zi-lcof/
Java
class Solution {
public int[] twoSum(int[] nums, int target) {
int i = 0, j = nums.length - 1, sum;
while(i < j){
sum = nums[i] + nums[j];
if(sum > target) j--;
else if(sum < target) i++;
else return new int[]{nums[i], nums[j]};
}
return new int[0];
}
}
题解
用双指针,首先一个指向头,一个指向尾,当sum > target时, j–,sum < target时,i++,否则,返回nums[i], nums[j]。