不重复打印排序数组中相加和为给定值的所有二元组和三元组

本文主要是介绍不重复打印排序数组中相加和为给定值的所有二元组和三元组,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

//不重复打印排序数组中相加和为给定值的所有二元组和三元组
public class GetArrNum{//(1)获得排序数组中为给定值的二元组public static void GetArrNum2(int []arr,int k){if(arr==null||k<arr[0]||arr.length<2){return;}//设置两个指针int i=0;int j=arr.length-1;for(int w=0;w<arr.length;w++){if((arr[i]+arr[j]==k)&&(i!=j)){System.out.println(arr[i]+" "+arr[j]);j--;}else if(arr[i]+arr[j]>k){break;}else{i++;}	}System.out.println();}//(2)获得排序数组中为给定值的三元祖public static void GetArrNum3(int[]arr,int k){ if(arr==null||k<arr[0]||arr.length<3){return;}//设置两个指针int i=0;while(i!=arr.length-3){for(int j=arr.length-1;j>=3;j--){for(int w=i+1;w<arr.length-1;w++){if(arr[i]+arr[j]+arr[w]==k&&((w<j))&&(i<j)){System.out.println(arr[i]+" "+arr[w]+" "+arr[j]);}else if(arr[i]+arr[j]+arr[w]>k){break;}}}i++;}System.out.println();}//(2)获得排序数组中为给定值的三元祖 方法二O(N*N)public static void GetArrNum3T(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={-8,-4,-3,0,1,2,4,5,8,9};int k=10;GetArrNum2(arr,k);GetArrNum3(arr,k);GetArrNum3T(arr,k);}
}


这篇关于不重复打印排序数组中相加和为给定值的所有二元组和三元组的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1082471

相关文章

Java实现预览与打印功能详解

《Java实现预览与打印功能详解》在Java中,打印功能主要依赖java.awt.print包,该包提供了与打印相关的一些关键类,比如PrinterJob和PageFormat,它们构成... 目录Java 打印系统概述打印预览与设置使用 PageFormat 和 PrinterJob 类设置页面格式与纸张

nginx 负载均衡配置及如何解决重复登录问题

《nginx负载均衡配置及如何解决重复登录问题》文章详解Nginx源码安装与Docker部署,介绍四层/七层代理区别及负载均衡策略,通过ip_hash解决重复登录问题,对nginx负载均衡配置及如何... 目录一:源码安装:1.配置编译参数2.编译3.编译安装 二,四层代理和七层代理区别1.二者混合使用举例

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

MySQL中查找重复值的实现

《MySQL中查找重复值的实现》查找重复值是一项常见需求,比如在数据清理、数据分析、数据质量检查等场景下,我们常常需要找出表中某列或多列的重复值,具有一定的参考价值,感兴趣的可以了解一下... 目录技术背景实现步骤方法一:使用GROUP BY和HAVING子句方法二:仅返回重复值方法三:返回完整记录方法四:

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

XML重复查询一条Sql语句的解决方法

《XML重复查询一条Sql语句的解决方法》文章分析了XML重复查询与日志失效问题,指出因DTO缺少@Data注解导致日志无法格式化、空指针风险及参数穿透,进而引发性能灾难,解决方案为在Controll... 目录一、核心问题:从SQL重复执行到日志失效二、根因剖析:DTO断裂引发的级联故障三、解决方案:修复

一文详解Java Stream的sorted自定义排序

《一文详解JavaStream的sorted自定义排序》Javastream中的sorted方法是用于对流中的元素进行排序的方法,它可以接受一个comparator参数,用于指定排序规则,sorte... 目录一、sorted 操作的基础原理二、自定义排序的实现方式1. Comparator 接口的 Lam

SpringBoot+Redis防止接口重复提交问题

《SpringBoot+Redis防止接口重复提交问题》:本文主要介绍SpringBoot+Redis防止接口重复提交问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录前言实现思路代码示例测试总结前言在项目的使用使用过程中,经常会出现某些操作在短时间内频繁提交。例

Python打印对象所有属性和值的方法小结

《Python打印对象所有属性和值的方法小结》在Python开发过程中,调试代码时经常需要查看对象的当前状态,也就是对象的所有属性和对应的值,然而,Python并没有像PHP的print_r那样直接提... 目录python中打印对象所有属性和值的方法实现步骤1. 使用vars()和pprint()2. 使