gpt4 book ai didi

java - 从整数 ArrayList 中删除前导零

转载 作者:行者123 更新时间:2023-12-01 06:37:54 24 4
gpt4 key购买 nike

我有一个整数ArrayList,我想删除所有前导零,代码看起来没问题,但你得到了不寻常的输出。

输入:

0 0 0 1 9 9

输出:

0 1 9 9

预期输出:

1 9 9

public class Solution {
public ArrayList<Integer> plusOne(ArrayList<Integer> a) {
int flag=0;
//System.out.println(a.size()+" "+a.get(2));
for(int i=0;i<a.size();i++)
{
if(flag==0)
{
//System.out.println("val of i="+i+" "+a.get(i));
if(a.get(i)==0){
a.remove(i);
//System.out.println(flag);
}
else
{
//System.out.println("flag="+flag+" i="+i+" value"+a.get(i));
flag=1;
//System.out.println("flag="+flag+" i="+i+" value"+a.get(i));
}
}
if(flag==1)
break;
}
System.out.println();
return a;
}
}

最佳答案

只需搜索第一个非零值,然后清除前面的子列表即可删除前导零:

Iterator<Integer> it = list.iterator();
int i = 0;
while (it.hasNext() && it.next() == 0) {
++i;
}
list.subList(0, i).clear();

像这样删除列表中的一 block 比一次删除一个元素更有效。例如如果一次删除一个,ArrayList 会将所有尾部元素每次移动一个位置,因此删除的时间复杂度为 O(n^2)。

关于java - 从整数 ArrayList 中删除前导零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36059089/

24 4 0