java输出递增序列中不重复的两个数和等于某个给定的值



java输出递增序列中不重复的两个数和等于某个给定的值.

例如给定一个数组{2, 2, 3, 4, 5, 5}, sum = 7, 求所有两个数和等于7

 

 

  1. public class FindTwoNumberSum {
  2.     public static void findSum(int [] a, int sum){
  3.         int i=0, j=a.length-1, preI=-1, preJ=-1;
  4.         while(i<j){
  5.             int tmp = a[i] + a[j];
  6.             if(tmp==sum&&(a[i]!=preI||a[j]!=preJ)){
  7.                 System.out.println(a[i]+” , ”+a[j]);
  8.                 if(a[i]!=preI){
  9.                     preI = a[i];
  10.                     preJ = a[j];
  11.                     i++;
  12.                 }else{
  13.                     preI=a[i];
  14.                     preJ=a[j];
  15.                     j–;
  16.                 }
  17.             }else if(tmp<sum){
  18.                 preI = a[i++];
  19.                 preJ = a[j];
  20.             }else{
  21.                 preI = a[i];
  22.                 preJ = a[j--];
  23.             }
  24.         }
  25.     }
  26.     public static void main(String [] args){
  27.         int [] a = {2, 2, 3, 4, 5, 5};
  28.         findSum(a, 7);
  29.     }
  30. }