[LeetCode] 203. 移除链表元素(链表基本操作-删除)、876. 链表的中间结点(链表基本操作-找中间结点)

题目 203. 移除链表元素

删除链表中等于给定值 val 的所有节点。

题解

删除结点:要注意虚拟头节点。

代码

class Solution {
    public ListNode removeElements(ListNode head, int val) {
        ListNode pre= new ListNode(-1);
        pre.next=head;
        ListNode cur = pre;
        while(cur.next!=null){
            if(cur.next.val==val){//每次判断的是cur.next
                cur.next=cur.next.next;
            }else{//注意是else
                cur=cur.next;
            }
        }
        return pre.next;
    }
}

题目 876. 链表的中间结点

给定一个带有头结点 head 的非空单链表,返回链表的中间结点。

如果有两个中间结点,则返回第二个中间结点。

题解

注意while中的条件,使得快指针是有效的。

代码

class Solution {
    public ListNode middleNode(ListNode head) {
        ListNode quick = head, slow= head;
        while(quick!=null&&quick.next!=null){
            quick=quick.next.next;
            slow=slow.next;
        }
        return slow;
    }
}

posted on 2020-06-11 00:11  coding_gaga  阅读(77)  评论(0编辑  收藏  举报

导航