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

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

//不重复打印排序数组中相加和为给定值的所有二元组和三元组
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

相关文章

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

C++归并排序代码实现示例代码

《C++归并排序代码实现示例代码》归并排序将待排序数组分成两个子数组,分别对这两个子数组进行排序,然后将排序好的子数组合并,得到排序后的数组,:本文主要介绍C++归并排序代码实现的相关资料,需要的... 目录1 算法核心思想2 代码实现3 算法时间复杂度1 算法核心思想归并排序是一种高效的排序方式,需要用

Java中数组与栈和堆之间的关系说明

《Java中数组与栈和堆之间的关系说明》文章讲解了Java数组的初始化方式、内存存储机制、引用传递特性及遍历、排序、拷贝技巧,强调引用数据类型方法调用时形参可能修改实参,但需注意引用指向单一对象的特性... 目录Java中数组与栈和堆的关系遍历数组接下来是一些编程小技巧总结Java中数组与栈和堆的关系关于

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、方