public class Solution {
public static LinkedListNode<Integer> removeDuplicates(LinkedListNode<Integer> head) {
//Your code goes here
if(head==null){
return head;
}
if(head.next==null){
return head;
}
LinkedListNode<Integer> t1=head, t2=head.next;
LinkedListNode<Integer> final_head=head;
while(t2!=null){
if(t1.data==t2.data){
t2=t2.next;
}else{
t1.next=t2;
t1=t2;
}
}
t1.next=null;
return final_head;
}
}
为什么当我删除t1.next=null
时它显示运行时错误?我错过了什么吗?我不明白t1.next=null
的用途。
1条答案
按热度按时间ckocjqey1#
从正确性的Angular 回答为什么需要
t1.next = null
...考虑这样的链表
....跳过循环的几个初始迭代....并且当
t1
为并且t2
指向倒数第二个3
时。if
条件将为 true,您将把t2
移动到最后一个3
(而t1
仍然指向倒数第二个3
)。在下一次迭代中,相同的
if
条件将为 true,您将使t2
为 null 并跳出while
循环。现在,要获得删除重复的3的效果,应该将
t1
的 next 设置为空。从这里,
设置
t1.next = null
会导致,