Leetcode链表刷题(pytho语言)

为方便后续的使用查找,记录一下
函数包括:找到两个单链表相交的起始节点、反转单链表、删除链表中等于给定值 val 的所有节点

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

class Solution(object):
    def getIntersectionNode(self, headA, headB):
        """
        :type head1, head1: ListNode
        :rtype: ListNode
        """
        """
        编写一个程序,找到两个单链表相交的起始节点。
        """
        # 将两个链表拼接分别为长-短和短长,当值相等时则找到相交点,反之则不相交
        p, q = headA, headB
        while p != q:
            p = p.next if p else headB
            q = q.next if q else headA
        return p
    """ 
    反转单链表
    """
    def reverseList(self, head: ListNode) -> ListNode:
		# 头插法
        prev = None
        cure = head
        while cure:
            next = cure.next
            cure.next = prev
            prev = cure
            cure = next
        return prev
    """
    删除链表中等于给定值 val 的所有节点
    """
    def removeElements(self, head: ListNode, val: int) -> ListNode:
        if not head:
            return head
        p = head
        while p.next:
            if p.next.val == val:
                p.next = p.next.next
            else:
                p = p.next
        if head.val == val:
            if head.next:
                head = head.next
            else:
                head = None
        return head
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晴天stick

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值