1.Input: numbers={2, 7, 11, 15}, target=9
Output: index1=1, index2=2
题目描述:在有序数组中找出两个数,使它们的和为 target。
解法1:
public int[] twoSum(int a[], int target) {
int left = 0;
int right = a.length - 1;
while (left < right) {
int sum = a[left] + a[right];
if (target == sum) {
return new int[] { left + 1, right + 1 };
} else if (target > sum) {
left++;
} else {
right--;
}
}
return null;
}
解法2:
public int[] twoSums(int a[], int target) {
for (int i = 0; i < a.length; i++) {
// int left=a[i];
for (int j = i + 1; j < a.length; j++) {
int sum = a[i] + a[j];
if (target == sum) {
return new int[] { i + 1, j + 1 };
}
// else if(ta)
}
}
return null;
}
解法1用的是双指针,时间复杂度为O(N),解法2时间复杂度O(N^2)