首页 > 其他 > 详细

【leetcode】203:移除链表元素

时间:2021-08-30 03:00:30      阅读:6      评论:0      收藏:0      [点我收藏+]

题目如下所示:
技术分享图片

 

 这个题目也就是你一遇到一个node符合要求,你就可以将其删除。是一个比较简单的基础题目,用于熟悉链表当中的最基本操作。我们可以使用如下的方法,也就是暴力法,遍历整个linked list,然后将所有的nodes保存到一个list里面,对不符合要求的values进行排除,然后再重新建立一个新的linked list,将符合要求的values放置进去。但是这样的话,虽然时间复杂度为o(n),但是空间复杂度却有点大,我们先来看看这个方法的代码实现:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def removeElements(self, head: ListNode, val: int) -> ListNode:
        ls=[]
        while head:
            ls.append(head)
            head=head.next
        new_ls=[]
        for i in ls:
            if i.val==val:
                pass
            else:
                new_ls.append(i.val)
        ret=ListNode(0)
        cur=ret
        for i in new_ls:
            ret.next=ListNode(i)
            ret=ret.next
        return cur.next

方法二:

使用dummy vaiable

class Solution:
    def removeElements(self, head: ListNode, val: int) -> ListNode:
        dummy = ListNode()
        dummy.next = head
        p = dummy
        while p is not None:
            # 向前探一个节点检查是否等于val
            if p.next and p.next.val == val:
                # 跳过 p.next 节点
                p.next = p.next.next 
            else:
                p = p.next
        return dummy.next

同样的方法,不同的变量:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def removeElements(self, head: ListNode, val: int) -> ListNode:
        cur=ListNode(0)
        cur.next=head
        node=cur
        while cur:
            if cur.next and cur.next.val==val:
                cur.next=cur.next.next
            else:
                cur=cur.next
        return node.next

我们使用这个方法,所需要用到的判断永远是使用cur.next进行判断,有可能漏掉第一个node,因此我们需要设定一个cur在head的前面。对head的第一个node进行判断

 

【leetcode】203:移除链表元素

原文:https://www.cnblogs.com/geeksongs/p/15195958.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!