从整数的ArrayList中删除前导零

Nav*_*mar 0 java

我有一个ArrayListintegers,我想删除所有的前导零,代码看起来没事,但ü我得到不同寻常的输出.

输入:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

And*_*ner 5

您可以通过搜索第一个非零值来删除前导零,然后清除前面的子列表:

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

像这样删除列表块比一次删除一个元素更有效.例如,如果您一次删除一个,ArrayList将每次将所有尾部元素移动一个位置,因此移除将为O(n ^ 2).