首页 > 编程语言 > 详细

算法总结之 不重复打印排序数组中相加和胃给定值的所有三元数组

时间:2017-09-07 11:31:17      阅读:192      评论:0      收藏:0      [点我收藏+]

 

这个问题跟上一个 大同小异,如何不重复打印呢? 

 首先保证选定三元数组中第一个值不重复,剩下的就跟前一个题目一样了。

 

package TT;

public class Test69 {

     public static void printUniqueTired(int[] arr, int k){
         
           if(arr==null || arr.length<3){
               return;
           }     
           for(int i =0; i<arr.length-2; i++){
               if(i==0 || arr[i] != arr[i-1]){
                   printRest(arr, i, i+1, arr.length-1, k-arr[i]);
               }
           }
         
     }
    
     public static void printRest(int[] arr, int f, int l, int r, int k){
         while(l<r){
             if(arr[l]+arr[r]<k){
                 l++;
             }else if(arr[l]+arr[r]>k) {
                 r--;
            }else{
                if(l==f+1 || arr[l-1] != arr[l]){
                    System.out.println(arr[f]+","+arr[l]+","+arr[r]);
                }
                l++;
                r--;
            }
         }
     }
    
    
     public  static void main(String[] args){
         
         int[] arr = new int[10];
            arr[0] = -8;
            arr[1] = -4;
            arr[2] = -3;
            arr[3] = 0;
            arr[4] = 1;
            arr[5] = 2;
            arr[6] = 4;
            arr[7] = 5;
            arr[8] = 8;
            arr[9] = 9;
            
            int k  = 10;
            printUniqueTired(arr, k);
         
     }
     
     
}

技术分享

 

算法总结之 不重复打印排序数组中相加和胃给定值的所有三元数组

原文:http://www.cnblogs.com/toov5/p/7488544.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!