leetcode-203 | 移除链表元素

题目描述

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

示例 1:
输入: 1->2->6->3->4->5->6, val = 6
输出: 1->2->3->4->5

思路解答

很简单,不妨加一个虚拟头节点,然后统一判断,删除。

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution(object):
    def removeElements(self, head, val):
        """
        :type head: ListNode
        :type val: int
        :rtype: ListNode
        """
        if head is None:
            return head

        virtualhead = ListNode(0)
        virtualhead.next = head
        pre = virtualhead
        cur = head
        #循环删除
        while cur:
            next = cur.next

            if cur.val == val:
                pre.next = next
                cur = next
            else:
                pre = cur
                cur = next

        return virtualhead.next

结果:

执行用时 : 84 ms, 在Remove Linked List Elements的Python提交中击败了94.74% 的用户
内存消耗 : 18.5 MB, 在Remove Linked List Elements的Python提交中击败了38.04% 的用户

提交时间状态执行用时内存消耗语言
几秒前通过84 ms18.5MBpython
## 额外空间 列表存储数据,然后删除,最后重构
# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution(object):
    def removeElements(self, head, val):
        """
        :type head: ListNode
        :type val: int
        :rtype: ListNode
        """
        if head is None:
            return head

        li = []
        p = head
        while p:
            if p.val != val:
                li.append(p)
            p = p.next

        vitrualhead = ListNode(0)
        vp = vitrualhead
        for i in li:
            vp.next = i
            vp = vp.next
        vp.next = None

        return vitrualhead.next

结果:

执行用时 : 92 ms, 在Remove Linked List Elements的Python提交中击败了29.70% 的用户
内存消耗 : 18.6 MB, 在Remove Linked List Elements的Python提交中击败了34.36% 的用户

提交时间状态执行用时内存消耗语言
几秒前通过92 ms18.6MBpython

   Reprint policy


《leetcode-203 | 移除链表元素》 by 梦否 is licensed under a Creative Commons Attribution 4.0 International License
 Previous
leetcode-237 | 删除链表中的节点 leetcode-237 | 删除链表中的节点
题目描述请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。 现有一个链表 – head = [4,5,1,9],它可以表示为: 示例 1:输入: head = [4,5,1,9], node = 5
2019-05-07
Next 
seo-1 |  简介 seo-1 | 简介
今天在图书馆看见了SEO优化的书,然后就想着看看这本书,做好笔记。 SEO(Search Engine Optimizers 搜索引擎优化) to use some techinics to make your website in th
2019-05-07
  TOC