题目描述
输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。
示例:
思路:
利用双指针,通过循环来进行比对。
如果是任意一个数大于target,直接下一个循环
代码:
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] arr = new int[2];
for(int i = 0;nums[i]<target;i++){
for(int j = i+1;j<nums.length;j++){
if((nums[i]+nums[j])==target){
arr[0]=nums[i];
arr[1]=nums[j];
return arr;
}
if((nums[i]+nums[j])>target){
continue;
}
}
}
return arr;
}
}
方法2:
直接双指针
class Solution {
public int[] twoSum(int[] nums, int target) {
int i = 0, j = nums.length-1;
while(i<j){
if(nums[i]+nums[j]>target){
j--;
}else if(nums[i]+nums[j]<target){
i++;
}else{
return new int[]{nums[i],nums[j]};
}
}
return nums;
}
}
结果:
方法1:超出时间限制。。。。
方法2: