思路:
从头到尾进行遍历,查找两个数字的和是否为target
left为我们左边的值
right为待求的和为target的值
因为是有序的数组 ,所以可以二分查找 进行时间复杂度的优化
class Solution {
public int[] twoSum(int[] nums, int target) {
//思路 遍历nums数组 ,从小到大寻找 target-nums[i]的值看看是否存在
//而target-nums[i]的值 可以通过二分查找的方法进行
for(int i = 0 ; i < nums.length ; i++){
int left = nums[i];
int right = target - left;
int start = i+1;
int end = nums.length-1;
while(start <= end){
int mid =(start+ end ) >> 1 ;
if(nums[mid] == right) return new int[]{left , right};
if(nums[mid ] < right) start=mid +1;
if(nums[mid] > right) end = mid -1;
}
}
return new int[]{0,0};
}
}