Python算法——链表(反转链表,合并两个排序链表,判断是否有环,链表中倒数最后k个结点,第一个公共结点,删除重复元素)

哈喽大家好,好久不见!又进入新的一个学期,这学期小编要进行python的算法学习啦,今天更新链表的部分题目~

牛客 NC78 反转链表

题目如下:

请添加图片描述
算法思想如下:

1.初始化两个指针pre和cur,分别表示前驱节点和当前节点。初始时,pre为空,cur指向头节点。
2.使用一个循环遍历链表,直到cur为空。
3.在每次循环中,首先保存当前节点的下一个节点到临时变量temp。
4.然后将当前节点的next指针指向前驱节点pre。
5.更新前驱节点pre为当前节点cur。
6.更新当前节点cur为下一个节点temp。
7.当循环结束时,所有节点的next指针都已反转,此时pre指向新的头节点,即反转后的链表的头节点。
8.返回反转后的链表头节点pre。

代码如下:

class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None

# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# @param head ListNode类
# @return ListNode类
#
class Solution:
    def ReverseList(self, head: ListNode) -> ListNode:
        pre = None  # 初始化前驱节点为空
        if not head:  # 如果链表为空,直接返回None
            return None
        cur = head  # 当前节点指向头节点
        while cur:  # 遍历链表
            temp = cur.next  # 保存当前节点的下一个节点
            cur.next = pre  # 将当前节点的下一个节点指向前驱节点
            pre = cur  # 更新前驱节点为当前节点
            cur = temp  # 更新当前节点为下一个节点
        return pre  # 返回反转后的链表头节点

牛客 NC33 合并两个有序链表

题目如下:
请添加图片描述
请添加图片描述
算法思想如下:

1. 创建一个新的头结点new,用于存储合并后的链表。
2. 初始化一个指针cur指向新链表的头结点。
3. 判断两个链表是否为空,如果其中一个为空,则直接返回另一个链表。
4. 使用两个指针p1p2分别遍历两个链表。
5. 比较p1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值