// two points method;
class Solution {
public int[] twoSum(int[] numbers, int target) {
int left = 0;
int right = numbers.length - 1;
while(left < right) {
int sum = numbers[left] + numbers[right];
if(sum == target) {
return new int[] {left + 1, right + 1};
} else if(sum > target) {
right--;
} else {
left++;
}
}
return null;
}
}
/*
//二分法;
class Solution {
public int[] twoSum(int[] numbers, int target) {
if(numbers == null || numbers.length == 0) {
return new int[] {-1, -1};
}
int i = 0;
while(i < numbers.length || numbers[i] > target) {
int newT = target - numbers[i];
int pos = findPos(numbers, newT);
if(pos != -1 && pos != i) {
if(pos < i){
return new int[] {pos + 1, i + 1};
}
return new int[] {i + 1, pos + 1};
}
i++;
}
return new int[] {-1, -1};
}
private int findPos(int[] numbers, int newT) {
int start = 0;
int end = numbers.length - 1;
int mid;
while(start + 1 < end) {
mid = start + (end - start) / 2;
if(numbers[mid] == newT) {
return mid;
} else if(numbers[mid] > newT) {
end = mid;
} else {
start = mid;
}
}
if(numbers[start] == newT) {
return start;
}
if(numbers[end] == newT) {
return end;
}
return -1;
}
}
*/
Two Sum II - Input array is sorted leetcode java 走地牙
最新推荐文章于 2018-10-31 14:21:20 发布