基础算法刷题笔记(4)

本文分享了ACM模式下解决链表问题的经验,包括`classListNode`类的实现和`solution`函数的递归策略。通过实例演示如何处理输入输出,重点在于理解链表操作和递归调用在比赛环境中的应用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

acm模式刷题经验交流帖

参考链接1
参考链接2
在这里插入图片描述

题目1

在这里插入图片描述

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next
    
def solution(head):
    if head.next==None:
        return head

    p = head
    q = None
    while p!=None:
        temp = p.next
        p.next = q
        q = p
        p = temp
    

    return q

if __name__ == '__main__':
    rec = input()
    if len(rec)<=2:
        print('{}')
    else:
        rec2 = list(map(int, rec[1:len(rec)-1].split(',')))
        #读取输入
        #print(rec2)
        #生成初始链表
        head = ListNode()
        head.val = rec2[0]
        temp = head
        if len(rec2)>=2:
            for i in range(1,len(rec2)):
                temp.next = ListNode()
                temp.next.val = rec2[i]
                temp = temp.next
        result = solution(head)

        res = []
        while result:
            res.append(result.val)
            result = result.next
        #print(res)
        res_str = (','.join(str(i) for i in res))
        res_str = '{'+res_str+'}'
        print(res_str)

acm模式处理输入输出

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值