剑指 Offer 57. 和为s的两个数字
# 剑指 Offer 57. 和为s的两个数字 (opens new window)
# 1.双指针法
分析:数组有序,因此可以使用双指针法逼近target的值。
- 如果两数之和大于target,则右指针左移
- 如果两数之和小于target,则左指针右移
class Solution {
public int[] twoSum(int[] nums, int target) {
int left=0,right=nums.length-1;
while(left<right){
while(left<right&&nums[left]+nums[right]>target)right--;
if(nums[left]+nums[right]==target) return new int[]{nums[left],nums[right]};
while(left<right&&nums[left]+nums[right]<target) left++;
}
return new int[]{0,0};
}
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
编辑 (opens new window)
上次更新: 2023/12/15, 15:49:57