gpt4 book ai didi

java - 跳过 M 个元素并从 LinkedList 中删除 N 个元素,跳过 0 引发问题

转载 作者:行者123 更新时间:2023-11-30 04:48:23 31 4
gpt4 key购买 nike

我的算法-

private static MyList skip$DeleteItem(MyList L , int M , int N){
MyList curr = L;
MyList prev = null;
while(curr != null){
int counter = 0;
while(curr != null && counter <M){
prev = curr;
curr = curr.next;
counter++;
}
counter = 0;
while(curr != null && counter < N){
curr = curr.next;
if(prev == null){
prev = curr;
}
else{
prev.next = curr;
}
counter ++;
}
}

return L;
}

它适用于每个基本测试用例,但对于跳过值 0 和删除 1 失败。

输入 - 9-->34-->8-->7-->5-->4-->6-->3-->1-->2-->TAIL

输出 - 9-->34-->尾

预期 - NULL(因为所有元素都应被删除)

解决方案是

while(curr != null && counter < N){     
curr = curr.next;
if(prev == null){
curr = curr.next;
L = curr;
}
else{
prev.next = curr;
}
counter ++;
}

最佳答案

你的“跳过”部分似乎没问题,但删除部分有问题。

while(curr != null && counter < N){
curr = curr.next;
if(prev == null){
prev = curr;
}
else{
prev.next = curr;
}
counter ++;
}

在第一次迭代中,您首先将 curr 指针前进到下一个元素,然后,if(prev == null) 将 prev 前进到相同的 curr。

因此,在您的示例中,在第一次迭代结束时 curr 和 prev 都指向 34。然后继续,列表的其余部分将被正确删除。

关于java - 跳过 M 个元素并从 LinkedList 中删除 N 个元素,跳过 0 引发问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10394439/

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