题目中并没有交代该数组是有序的还是无序的,所以需要考虑无序和有序两种情况。
第一种情况,数组是有序的,这个当然比较简单了,只需要两个下标就可以解决问题,直接上代码,如下:
- public class Algorithm {
- public static void main(String[] args) {
- int[] arr = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,10 };
- int i = 0, j = arr.length-1;
- int sum = 20;
- while (i <= j) {
- if (arr[i] + arr[j] > sum) {
- j--;
- } else if (arr[i] + arr[j] < sum) {
- i++;
- } else {
- System.out.println(arr[i] + " + " + arr[j] + " = " + sum);
- break;
- }
- }
- }
- }
第二种情况,数组是无序的,那么只能对数组中的元素进行两两比较,或者先排序ÿ