zoukankan      html  css  js  c++  java
  • 算法总结之 不重复打印排序数组中相加和为给定值的所有三元数组

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

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

    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]){  //f是用来做边界的控制问题解决
                        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);
             
         }
         
         
    }

  • 相关阅读:
    js中this应用
    易语言学习
    哈希表和字典List和Ilist和array和arraylist的应用
    ExtJs中decode与encode(转载)
    ajax几种请求几种类型
    关于Json
    简单属性margin和padding
    ==和===的区别
    maven实战读书笔记(三)
    maven实战读书笔记(二)
  • 原文地址:https://www.cnblogs.com/toov5/p/7488544.html
Copyright © 2011-2022 走看看