• LeetCode 203.Remove Linked List Elements(移除链表元素)


    LeetCode 203.Remove Linked List Elements(移除链表元素)

    题目

    链接

    https://leetcode-cn.com/problems/remove-linked-list-elements
    

    问题描述

    给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。

    示例

    输入:head = [1,2,6,3,4,5,6], val = 6
    输出:[1,2,3,4,5]
    

    提示

    列表中的节点在范围 [0, 104] 内
    1 <= Node.val <= 50
    0 <= k <= 50
    

    思路

    由于第一个结点也有要被删除的可能,就新建一个p,p的下一位为头节点head,p0和p相同。

    之后就用p和head向后,若符合条件,就跳过该结点,直接把head的下一位接在p上,若不符合条件,二者同时向后一位。最后的新的头节点就是p0的下一结点。

    复杂度分析

    时间复杂度 O(n)
    空间复杂度 O(1)
    

    代码

    C++

    ListNode *removeElements(ListNode *head, int val) {
        ListNode *p = new ListNode;
        p->next = head;
        ListNode *p0 = p;
        while (head != nullptr) {
            if (head->val == val) {
                p->next = head->next;
    
            } else {
                p = head;
            }
            head = head->next;
        }
        return p0->next;
    }
    
  • 相关阅读:
    2017年3月笔记
    2017年2月笔记
    2017年1月笔记
    2016年12月笔记
    2016年11月笔记
    2016年10月笔
    2016年9月笔记
    2016年8月笔记
    2016年7月笔记
    2016年6月笔记
  • 原文地址:https://www.cnblogs.com/blogxjc/p/14852292.html
Copyright © 2020-2023  润新知