我正在寻找解决这个问题的有效方法,即...编写一个程序来查找总和等于给定数字的所有整数对。例如,如果输入整数数组是{2, 6, 3, 9, 11}并且给定总和是9,则输出应该是{6,3}
现在我尝试的是以下内容,但我知道这不是一个可行且有效的解决方案。。
从数组中取一个数字,然后循环遍历数组和输出对,这等于给定的总和。您对第一个数组中的所有数字都这样做,
import java.util.Arrays;
/**
* Java Program to find pairs on integer array whose sum is equal to k
*/
public class ProblemInArray{
public static void main(String args[]) {
int[] numbers = { 2, 4, 3, 5, 7, 8, 9 };
int[] numbersWithDuplicates = { 2, 4, 3, 5, 6, -2, 4, 7, 8, 9 };
prettyPrint(numbers, 7);
prettyPrint(numbersWithDuplicates, 7);
}
/**
* Prints all pair of integer values from given array whose sum is is equal to given number.
* complexity of this solution is O(n^2)
*/
public static void printPairs(int[] array, int sum) {
for (int i = 0; i < array.length; i++) {
int first = array[i];
for (int j = i + 1; j < array.length; j++) {
int second = array[j];
if ((first + second) == sum) {
System.out.printf("(%d, %d) %n", first, second);
}
}
}
}
/**
* Utility method to print input and output for better explanation.
*/
public static void prettyPrint(int[] givenArray, int givenSum){
System.out.println("Given array : " + Arrays.toString(givenArray));
System.out.println("Given sum : " + givenSum);
System.out.println("Integer numbers, whose sum is equal to value : " + givenSum);
printPairs(givenArray, givenSum);
}
}
Output:
Given sum : 7
Integer numbers, whose sum is equal to value : 7
(2, 5)
(4, 3)
Given array : [2, 4, 3, 5, 6, -2, 4, 7, 8, 9]
Given sum : 7
Integer numbers, whose sum is equal to value : 7
(2, 5)
(4, 3)
(3, 4)
(-2, 9)
这是我的代码:
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class FindPairs {
public static void main(String args[]) {
Integer[] numbers = { 2, 4, 3, 5, 7, 8, 9 };
int sum = 7;
List<Integer> Numbers = Arrays.asList(numbers);
Collections.sort(Numbers);
for (int i : Numbers) {
if (Numbers.contains(sum - i) && i <= (sum / 2) && i != (sum - i)) {
System.out.print((sum - i) + " & ");
System.out.println(+i);
}
}
}
}
条件i
答复:
5.
4.
您可以使用HashMap。如果所需的总和-当前项达到现有值,则可以确保这是一个可能的匹配项。否则,添加当前项目并继续。这应该在O(n)中运行。
public static final void sums(final int sum, final int[] numbers){
HashMap<Integer,Integer> map = new HashMap<Integer,Integer>();
for(int i : numbers){
if(map.containsKey(sum-i)){
System.out.println("( "+map.get(sum-i) +" "+ i+" )");
}else{
map.put(i,i);
}
}
}
我有一个Spark程序,它需要几个依赖项。 一个依赖项:a.jar是集群上的2.8版本,但是,我需要使用它的2.9版本。 每次启动程序时,spark都会自动从集群加载A2.8.jar,而不是加载,即使我已经通过提交了这个jar。 我尝试使用设置,但出现了另一个问题。在我的userClassPath中有一个“秘密”jar文件,比如“”,它不能与集群一起工作,而且有如此多的依赖项,我不知道哪个jar不
本文向大家介绍IONIC自定义subheader的最佳解决方案,包括了IONIC自定义subheader的最佳解决方案的使用技巧和注意事项,需要的朋友参考一下 IONIC subheader是我们常用的一个css 属性,但是这个subheader的高度是固定的,当然也是可以改变的,但是如果改了subheader的告诉,还要更改content的top值,稍微有些麻烦,如果是动态告诉的subheade
问题内容: 至少有六打Django应用程序为Django提供OpenID身份验证: django-openid django-openid-auth 另一个django-openid-auth,似乎已经死了 django-authopenid django-socialauth(还提供对Twitter和Facebook帐户的身份验证) django-socialregistration(也具有Fa
问题内容: 我们构建3层企业解决方案,通常由几个webapp和ejbjar模块组成,这些模块都与数据库通信并具有多个外部集成点。 每个模块通常需要自己的配置,这些配置可以在解决方案的生命周期内进行更改。部署它成为一场噩梦,因为现在我们必须记住18个属性文件以进行复制和配置,还需要设置数据源,队列,内存需求等。 我希望但不能乐观地找到更好的方法。我们考虑/使用过的一些选项,各有其优缺点: 使用多
问题内容: 我已经开发了一些类似于DAO的自定义类,以满足我的项目的一些非常特殊的要求,这是一个不在任何框架内运行的服务器端进程。 该解决方案非常有效,除了每次发出新请求时,我都会通过MySQLdb.connect打开一个新连接。 将其切换为在python中使用连接池的最佳“插入”解决方案是什么?我在想像Java的通用DBCP解决方案。 该过程运行很长时间,并且有许多线程需要发出请求,但不是所有线
本文向大家介绍让codeigniter与swfupload整合的最佳解决方案,包括了让codeigniter与swfupload整合的最佳解决方案的使用技巧和注意事项,需要的朋友参考一下 codeigniter是一款轻量,便捷的MVC框架,最近的项目涉及到批量上传,于是,就是用了swfupload这个插件,虽然网上有很多关于ci与swfupload的帖子,不过,并不是很完整,所以,这里综合各家优点