- 注意情况
-
如果t1指向目标的前一个位置,t1->next是val: 删除后 不可以下移一位,当前的t1就是我们需要的位置---下一个需要判断的前一个节点。
图片.png - while循环中的判断就不用加上while(t1!=nullptr) 这样速度会快很多。
C++:
ListNode* removeElements(ListNode* head, int val) {
ListNode* Ariana=new ListNode(-1),*t1=Ariana;
Ariana->next=head;
while(t1->next!=nullptr){
if(t1->next->val==val){
auto t2=t1->next;
t1->next=t2->next;
delete(t2);
}
else
t1=t1->next;
}
return Ariana->next;
}
JAVA:
public ListNode removeElements(ListNode head, int val) {
ListNode Ariana=new ListNode(-1),t1=Ariana;
Ariana.next=head;
while(t1.next!=null){
if(t1.next.val==val){
ListNode t2=t1.next;
t1.next=t2.next;
}
else
t1=t1.next;
}
return Ariana.next;
}
网友评论