1.一个升序的数组,求其中的两个数的和为s的一对数,并且输出他们,若有多对,则全部输出
方法一:两重for循环,时间复杂度是n^2,没有用上升序这个条件
public void moveArray(int[] array, int s) {
int n = array.length - 1;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++)
if (s == (array[i] + array[j])) {
System.out.println(array[i] + "" + array[j]);
}
}
方法二:两个指针,一个从头开始,一个从尾开始
public void moveArray(int[] array, int s) {
int i = 0;
int j = array.length - 1;
while (i < j) {
int sum = array[i] + array[j];
if (sum == s) {
System.out.println(array[i] + "" + array[j]);
i++;
j--;
} else if (sum > s) {
j--;
} else {
i++;
}
}
}