List原地删除数据

有个面试题,原地删除数据,当时也没想就从网上查了一下,感觉没啥问题就写上了,可是运行的时候却不是想要的结果。

List<int> listt = new List<int>() {
1,35,8,12,14,16,25,28,99
};
for (int i = 0; i < listt.Count; i++)
{
if (listt[i] % 2 == 0)
{
listt.Remove(listt[i]);
}
}

仔细想想是因为删除之后,i坐标对应的值已经变了。所以做了个改动

List<int> listt = new List<int>() {
1,35,8,12,14,16,25,28,99
};
for (int i = 0; i < listt.Count; i++)
{
if (listt[i] % 2 == 0)
{
listt.Remove(listt[i]);
i--;
}
}

posted on 2020-06-08 11:44  流浪法师1  阅读(177)  评论(0编辑  收藏  举报