使用Java中的队列对于int数组,查找两个加起来等于特定和n的数字
我需要使用Java中的队列编写一段代码,允许我使用给定数组中的两个整数来查找,这两个整数加在一起可以得到一个特定的和整数x 比如说:使用Java中的队列对于int数组,查找两个加起来等于特定和n的数字,java,arrays,stack,queue,Java,Arrays,Stack,Queue,我需要使用Java中的队列编写一段代码,允许我使用给定数组中的两个整数来查找,这两个整数加在一起可以得到一个特定的和整数x 比如说: int[] array = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int sum = 5; 我了解什么是队列,以及排队和退队之间的原理。我没有使用带有双for循环的队列来编写代码,但我真的不知道如何使用队列 谁能给我一个提示或提供帮助?非常感谢。(我也可以使用堆栈,但队列对我来说似乎更简单)。可以对值进行排序吗,例如
int[] array = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int sum = 5;
我了解什么是队列,以及排队和退队之间的原理。我没有使用带有双for循环的队列来编写代码,但我真的不知道如何使用队列
谁能给我一个提示或提供帮助?非常感谢。(我也可以使用堆栈,但队列对我来说似乎更简单)。可以对值进行排序吗,例如使用
优先级队列
在这种情况下,只需使用2PriorityQueue
s,一个按升序排序,一个按降序排序<在两个队列上单击code>peek(),然后添加值。如果总和太低,poll()
第一个队列,如果总和太高,poll()
第二个队列。重复此操作,直到总和正确为止,或者直到队列为空为止
或者,使用单个
Deque
,在排序后添加值,然后从两端开始工作。我试图找到一种只使用常规队列的方法来解决这个问题。到目前为止,它将打印所有可能的对,这些对加起来就是您想要的特定总和。在这种情况下,我只放了5。然而,出现的一个问题是,我在遍历队列时得到了重复的对。这似乎是因为while循环…我匆忙编写了这个代码,但希望它能给你一些提示,并在某种程度上帮助你
import java.util.Queue;
import java.util.LinkedList;
public class QueueSums {
public static void main(String args[]) {
int[] array = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
Queue<Integer> queue = new LinkedList<>();
for (int i : array) {
queue.add(i);
}
System.out.println(queue);
while (iterateQueue(queue) == false) {
queue.poll();
iterateQueue(queue);
}
}
public static boolean iterateQueue(Queue<Integer> queue) {
Queue<Integer> queueCopy = new LinkedList<>();
queueCopy.addAll(queue);
int sum = 5;
System.out.println(sum);
int num1 = queueCopy.peek();
while (queueCopy.size() > 0) {
int num2 = queueCopy.peek();
if (sum == num1 + num2) {
System.out.println(num1 + " + " + num2 + " works");
return true;
}
else {
queueCopy.poll();
}
}
return false;
}
import java.util.Queue;
导入java.util.LinkedList;
公共类排队和{
公共静态void main(字符串参数[]){
int[]数组=新的int[]{1,2,3,4,5,6,7,8,9,10};
Queue Queue=new LinkedList();
for(int i:array){
加入(i);
}
System.out.println(队列);
while(iterateQueue(queue)==false){
queue.poll();
迭代队列;
}
}
公共静态布尔迭代器(队列){
Queue queueCopy=new LinkedList();
queueCopy.addAll(队列);
整数和=5;
系统输出打印项数(总和);
int num1=queueCopy.peek();
while(queueCopy.size()>0){
int num2=queueCopy.peek();
如果(总和=num1+num2){
System.out.println(num1+“+”+num2+“works”);
返回true;
}
否则{
queueCopy.poll();
}
}
返回false;
}
数组是否总是排序?不,随机数未排序。我只是将其排序,以便快速键入随机数。抱歉。哈哈,谢谢,我忘了回复,但我自己解决了。我将运算符堆叠在字符串堆栈中,将数字堆叠在整数堆栈中,然后系统地弹出()。