gpt4 book ai didi

java - 此代码的输出不正确,

转载 作者:行者123 更新时间:2023-12-02 11:06:13 31 4
gpt4 key购买 nike

今年夏天我正在复习一些编程,我是按如下方式做这个问题的。编写一个折叠方法,该方法将整数堆栈作为参数,并通过将每个连续的整数对替换为该对的总和来折叠它。

基本上,我的方法是返回堆栈的相反顺序,除了堆栈中数字为奇数的情况外,我除了它至少为我返回总和之外,无论顺序如何。我应该只使用 1 个队列我的问题是我哪里出错了,为什么我不能对我的 2 个 pop 求和。 公共(public)静态堆栈崩溃(Stack sO){

Queue<Integer> qN = new LinkedList<Integer>();
int x1 = 0;
int x2 = 0;
while(!sO.empty())
{
qN.add(sO.pop());
}
while(!qN.isEmpty())
{
int sum = 0;
x1 = qN.remove();
if(sO.empty()){

qN.add(x1); break;
}
else{x2 = qN.remove();
sum = x1 + x2;
qN.add(sum);}

}
while(!qN.isEmpty()){
sO.push(qN.remove());
}
return sO;

底部 [7, 2, 8, 9, 4, 13, 7, 1, 9, 10] 顶部第一对应折叠为 9 (7 + 2),第二对应折叠为 17 (8 + 9),第三对应折叠为 17 (4 + 13),依此类推,得出:

底部 [9, 17, 17, 8, 19] 顶部

最佳答案

这部分代码将无限循环:

 if(sO.empty()){

qN.add(x1); break;
}

您正在从队列中删除 x1,然后再次将其添加回队列。

修改你的下限 while 阻塞

 while(!qN.isEmpty())
{
x1=qN.remove();
x2=qN.remove();
sO.push(x1+x2);
}

记住:如果元素数量为奇数,则最后一次迭代的 x2 将为 null。请注意它。

关于java - 此代码的输出不正确,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50937072/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com