leetcode 203,删除链表元素,虚拟头结点运用。
先贴一个蠢哭的瞬间
class Solution {
public ListNode removeElements(ListNode head, int val) {
ListNode rtn = null;
ListNode pre = null;
while(head.next != null){
if(head.val!=val){
if(rtn!=null){
rtn = head;
}
}else{
head??慢着我头是谁、、、
}
}
}
}
就是这样。发现头不好处理,最后我还得把头返回回去,这时候怎么办?设置一个虚的头结点mockHead,指向head,这样最后返回mockHead.next不就是可以返回现在链表头部了吗?
虚拟头结点:
class Solution {
public ListNode removeElements(ListNode head, int val) {
ListNode mockHead = new ListNode();//虚拟头结点
mockHead.next = head;
ListNode pre = mockHead;
//每一个进行处理
while(head != null){
//如果当前节点curr 值是val.那么删掉这个
if(head.val == val){
pre.next = head.next;
}else{
//如果不是val,那么pre就是当前的head
pre = head;
}
head = head.next;
}
return mockHead.next;
}
}