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


    给定一个排序数组arr 和整数 k, 在里面找到所相加为k的二元数组。

    思路: 充分利用有序呀

              二元数组嘛 可以两个指针 一个 left  一个right  不断向中间压缩

              看看和与k的关系  然后移动相应的指针

    package TT;
    
    public class Test68 {
    
        public static void printUniquePair(int[] arr, int k){
            if(arr==null || arr.length < 2){
                
                return;
                
            }
            
            int left=0;
            int right = arr.length-1;
            while(left<right){
                if(arr[left]+arr[right]<k){
                    left++;
                    
                }else if(arr[left]+arr[right]>k){
                    right--;
                }else{
                    if(left==0 || arr[left-1] !=arr[left]){   //第一个没啥  后面的主要是 防止重复 比如 arr[1]==arr[2]  和是 num 那么会有重复的打印出来 其实我想到的
    //还有一个策略是 放到set中 这样的话 可以存储起来而不是打印出来 System.out.println(arr[left]
    +","+arr[right]); } left++; right--; } } } 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; printUniquePair(arr, k); } }

  • 相关阅读:
    栅格系统
    jq中文档的操作及正则的应用
    jq的简单操作
    jquery基础
    DOM&BOM
    布局和js的轮播图
    js中的事件
    js的高级操作
    js对页面的一些简单的操作
    第二章 ELKstack部署及配置
  • 原文地址:https://www.cnblogs.com/toov5/p/7488429.html
Copyright © 2020-2023  润新知