LeetCode 203-移除链表节点

1. 移除链表节点

public class RemoveElements203 {
    //定义一个单链表
    public class ListNode {
        int val;           //当前节点值
        ListNode next;     //下一个节点值
        //构造方法 初始化当前节点值
        ListNode(int x) { val = x; }
    }

    /**移除链表节点
     *时间复杂度 O(n)
     * @param head
     * @param val
     * @return
     */
    public ListNode removeElements(ListNode head, int val) {
        //增加哑元节点 用来定位头结点
        ListNode sentinel = new ListNode(0);
        sentinel.next = head;
        //创建前节点 和 当前节点
        ListNode prev = sentinel, curr = head;
        //当前节点不为空一直循环,直到链表结束
        while (curr != null) {
            //当前节点值等于给定值 当前节点的前节点next指向当前节点的下一个节点
            if (curr.val == val){
                prev.next = curr.next;
            //当前节点值不等于给定值 让前指针向前移动一位 前节点等于当前节点
            } else{
                prev = curr;
            }
            //让指针向后移动一位 判断下一个节点是否为空
            curr = curr.next;
        }
        return sentinel.next;
    }
}

2. LeetCode代码测试

发布了60 篇原创文章 · 获赞 0 · 访问量 2887

猜你喜欢

转载自blog.csdn.net/weixin_45450428/article/details/103968302