使用Java中的队列对于int数组,查找两个加起来等于特定和n的数字

使用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循环的队列来编写代码,但我真的不知道如何使用队列 谁能给我一个提示或提供帮助?非常感谢。(我也可以使用堆栈,但队列对我来说似乎更简单)。可以对值进行排序吗,例如

我需要使用Java中的队列编写一段代码,允许我使用给定数组中的两个整数来查找,这两个整数加在一起可以得到一个特定的和整数x

比如说:

int[] array = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int sum = 5;
我了解什么是队列,以及排队和退队之间的原理。我没有使用带有双for循环的队列来编写代码,但我真的不知道如何使用队列


谁能给我一个提示或提供帮助?非常感谢。(我也可以使用堆栈,但队列对我来说似乎更简单)。

可以对值进行排序吗,例如使用
优先级队列

在这种情况下,只需使用2
PriorityQueue
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;
}

数组是否总是排序?不,随机数未排序。我只是将其排序,以便快速键入随机数。抱歉。哈哈,谢谢,我忘了回复,但我自己解决了。我将运算符堆叠在字符串堆栈中,将数字堆叠在整数堆栈中,然后系统地弹出()。