LintCode Python 简单级题目 452.删除链表中的元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LintCode Python 简单级题目 452.删除链表中的元素相关的知识,希望对你有一定的参考价值。

原题描述:

 

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

 

样例

给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4->5

 

 

题目分析:

 

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

遍历链表,找到其中next.val等于val的节点,删除。

注意的地方就是可能链表中的所有元素val都等于val,循环的开始需要从表头开始删除,需要新增一个头节点。

 

 

源码:

 

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

class Solution:
    # @param head, a ListNode
    # @param val, an integer
    # @return a ListNode
    def removeElements(self, head, val):
        # Write your code here
        if head is None:
            return None
        # 可能链表中的所有元素val都等于val,所以需要新增一个头节点
        new = ListNode(0)
        new.next = head
        head = new
        pre = head
        # 遍历链表,删除等于val的所有节点
        while pre.next is not None:
            if pre.next.val == val:
                pre.next = pre.next.next
            else:
                pre = pre.next
        return new.next

 

以上是关于LintCode Python 简单级题目 452.删除链表中的元素的主要内容,如果未能解决你的问题,请参考以下文章

LintCode Python 简单级题目 82.落单的数

LintCode Python 简单级题目 517.丑数

LintCode Python 简单级题目 373.奇偶分割数组

LintCode Python 简单级题目 423.有效的括号序列

LintCode Python 简单级题目 35.翻转链表

LintCode Python 简单级题目 39.恢复旋转排序数组