此博客链接:
移除链表元素()
题目链接:
题解:
错误情况1:没有考虑链表为空时,返回空。
错误情况2:没有考虑链表中元素不止一个,且和给定值都相等,此时返回空。
错误代码:
class Solution { public ListNode removeElements(ListNode head, int val) { if(head==null) return null; if(head.val==val&&head.next==null)//第一个数相等,链表只有一个数,返回空 return null; if(head.val!=val&&head.next==null)//第一个数不相等,但是链表中只有一个数,返回头结点 return head; while(head!=null) { if(head.val==val&&head.next.next!=null&&head.next.val!=val)//第一个数相等,但是链表不止一个数,头节点指向下一个节点 { ListNode cur=head; head=head.next; } if(head.val==val&&head.next.next!=null&&head.next.val==val)//第一个数相等,但是链表不止一个数,头节点指向下一个节点 { ListNode cur=head.next; head=head.next.next; } if(head.val==val&&head.next.next==null&&head.next.val==val)//第一个数相等,但是链表不止一个数,头节点指向下一个节点 { head=head.next.next; return head; } // if(head.val==val&&head.next==null)//第一个数相等,但是是最后一个节点 // { // head.next=null; // return head; // } else { ListNode cur=head; break; } } //if(head.val!=val&&head.next!=null)//第一个数不相等,链表中有多个数 ListNode cur=head; while(cur.next!=null) { if(cur.next.val==val&&cur.next.next!=null) cur.next=cur.next.next; else if(cur.next.val==val&&cur.next.next==null) cur.next=null; else if(cur.next.val!=val&&cur.next.next==null) return head; else cur=cur.next; } return head; } }
原文:https://www.cnblogs.com/ping2yingshi/p/12730036.html