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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法总结之 不重复打印排序数组中相加和胃给定值的所有三元数组相关的知识,希望对你有一定的参考价值。

 

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

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

 

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);
         
     }
     
     
}

技术分享

 

以上是关于算法总结之 不重复打印排序数组中相加和胃给定值的所有三元数组的主要内容,如果未能解决你的问题,请参考以下文章

算法总结之 未排序数组中累加和小于或等于给定值的最长子数组长度

算法总结之 未排序正数数组中累加和为给定值的最长子数组长度

排序算法总结之堆排序

算法总结之 两个链表生成相加链表

算法题:三个数相加等于某个特定值

[算法]最长子数组问题