int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; Arrays.sort(arr); // 对数组进行排序 int max = arr[arr.length - 1]; // 最大值 int left = 0; // 左指针 int right = arr.length - 2; // 右指针 System.out.println("两两相加等于最大值的数字对:"); while (left < right) { int sum = arr[left] + arr[right]; if (sum == max) { System.out.println(arr[left] + " + " + arr[right]); left++; right--; } else if (sum < max) { left++; } else { right--; } }可以不可以做到1+9,2+6......以此内推直到加不了
时间: 2024-04-18 12:25:28 浏览: 22
可以对上面的代码稍作修改,使其输出所有满足条件的数字对,包括1+9、2+8、3+7等,直到无法找到满足条件的数字对为止。以下是修改后的代码示例:
```java
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Arrays.sort(arr); // 对数组进行排序
int max = arr[arr.length - 1]; // 最大值
int left = 0; // 左指针
int right = arr.length - 2; // 右指针
System.out.println("两两相加等于最大值的数字对:");
while (left < right) {
int sum = arr[left] + arr[right];
if (sum == max) {
System.out.println(arr[left] + " + " + arr[right]);
}
if (sum <= max) {
left++;
} else {
right--;
}
}
}
}
```
在上述代码中,如果找到一对数字的和等于最大值,就会打印出这对数字。然后,无论是否找到满足条件的数字对,都会继续移动指针。如果和小于或等于最大值,则将左指针向右移动;否则,将右指针向左移动。这样可以保证找到所有满足条件的数字对。
输出结果将包括:1+9、2+8、3+7等所有满足条件的数字对,直到无法找到满足条件的数字对。