gpt4 book ai didi

java - ArrayList 删除第一个元素

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:43:15 25 4
gpt4 key购买 nike

这是给定的问题:给定一个表示为数字数组的非负数,

将数字加1(增加数字所代表的数字)。

存储数字时,最高有效数字位于列表的开头。

例子:

如果 vector 有[1, 2, 3]

返回的 vector 应该是[1, 2, 4]

123 + 1 = 124。

这是我的代码:

 public class Solution {
public ArrayList<Integer> plusOne(ArrayList<Integer> A) {
int carry = 1;
int length = A.size();
ArrayList result = new ArrayList();

for( int i = length - 1; i >=0; i-- ){
int val = A.get(i) + carry;
result.add(0,val % 10);
carry = val / 10;
}

if (carry == 1){
result.add(0,1);
}

for (int j = 0; j < result.size(); j++){
if(result.get(j).equals(0))
result.remove(j);
else
break;
}

return result;

}
}

但是,在测试用例中:A : [ 0, 6, 0, 6, 4, 8, 8, 1 ]

它说我的函数返回

6 6 4 8 8 2

正确答案是

6 0 6 4 8 8 2

我不知道我的代码有什么问题。

谢谢!

最佳答案

if(result.get(j).equals(0))
result.remove(j);
else
break;

如果所有其他索引都包含 0,这将失败。这是发生的情况:

0 6 0 6 4 8 8 2
^ (j = 0)

0 将被删除,j 加一。

6 0 6 4 8 8 2
^ (j = 1)

然后这个 0 也被删除,跳过数组中的前 6 个。要解决此问题,请将代码段更改为:

if(result.get(j).equals(0))
result.remove(j--);
else
break;

这可以补偿索引被删除的情况,这样 j 就不会在任何删除的 0 之后立即跳过数字。

关于java - ArrayList 删除第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30205529/

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