1、题目描述
2、解题思路
前提:该数组已经是排好序的【升序】数组了。
class Solution {
public int[] twoSum(int[] numbers, int target) {
if(numbers == null || numbers.length < 2)
return new int[]{};
int l = 0; int r = numbers.length-1;
while(l < r ){
int sum = numbers[l]+numbers[r];
if(sum == target) {
return new int[]{l,r};
}else if(sum < target){
l++;
}else{
r--;
}
}
return new int[]{};
}
}
复杂度分析
-
时间复杂度:O(n),其中 n 是数组的长度。两个指针移动的总次数最多为 n 次。
-
空间复杂度:O(1)。