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

  • 相关阅读:
    浅议APC
    fastIO
    设备对象 驱动对象
    PostMessage和SendMessage的区别
    使用DLL在进程间共享数据
    32位程序读写64位程序内存
    windows文件映射
    windows消息传送(自定义消息和WM_COPYDATA)
    windows剪贴板
    mysql innobackupex备份工具
  • 原文地址:https://www.cnblogs.com/toov5/p/7488544.html
Copyright © 2011-2022 走看看