我有一个ArrayList的integers,我想删除所有的前导零,代码看起来没事,但ü我得到不同寻常的输出.
输入:
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)
您可以通过搜索第一个非零值来删除前导零,然后清除前面的子列表:
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).
| 归档时间: |
|
| 查看次数: |
1714 次 |
| 最近记录: |