ysu_dong

导航

 

1.求数组中和为特定值的二个数

首先进行快速排序,然后遍历,令i=0;j=n-1;判断arr[i]+arr[j],进行相应的遍历。

for(int i=0,j=n-1;i<j;){
   if(arr[i]+arr[j]==sum){
       return (i,j);
   }
  else if(arr[i]+arr[j]<sum){
       i++;
   }
   else{
       j--;
   }
   return(-1,-1);
}

求数组中和为特定值的三个数,双重循环,外层遍历i,内层遍历k,j;判断input[i]+input[j]+input[k]

public static void ReturnValue(int[] input,int sum){
        int n=input.length;
        for(int i=0;i<n-1;){
            for(int k=i+1,j=n-1;k<=j;){
                if (input[i] + input[k] + input[j] == sum) {
                    System.out.print(i+","+j+","+k+"\n");
                    break;
                } else if (input[i] + input[k] + input[j] < sum) {
                    j--;
                } else {
                    k++;
                }
            }
            i++;
        }
        //return new ReturnV(-1,-1,-1);
    }

 

posted on 2012-11-13 16:09  ysu_dx  阅读(430)  评论(0)    收藏  举报