【力扣刷题】剑指 Offer 06. 从尾到头打印链表

该博客介绍了如何通过迭代法解决链表翻转的问题,从链表的尾部开始返回每个节点的值。在Python中,通过初始化两个指针并逐步反转它们的位置来实现。最后,利用列表的pop()函数从后向前取值,得到反转的节点值数组。

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

题目:

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。

示例1:

输入:head = [1,3,2]
输出:[2,3,1]
输入:head = [1,2]
输出:[2,1]
输入:head = []
输出:[]

解题思路:

思路一:(迭代法)

初始化两个指针,一个cur指向head(第一个元素),一个prev之前None(位于head前),每次进行pre后移放到cur位置,而cur每次也后移指向下一个元素(要保证cur能顺利指向下一个元素,需要在cur和pre往后移动之前记录cur下一个指针位置,即next=cur.next),当cur遍历完所有元素指向None时,说明pre此时已位于链表head的最后一个元素,可以返回prev。但是此时只能返回一个当前最后一个元素,因此在cur和prev换位置前,要先将cur指向pre换位置前的位置(cur.next=pre)。

解决方案(python)

ar=[]
while(head):  
    ar.append(head.val)
    head=head.next
pr=[0]*len(ar)
for i in range(len(ar)):
    pr[i]=(ar.pop())   
return pr

知识点:

列表list.pop(index)函数:

用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。

a=['12','34,'56','78']
b=a.pop()
print(b)
print(a)
#输出为:
#78
#['12', '34', '56']


c=a.pop(1)
print(c)
print(a)

#输出为:
#34
#['12', '56']

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值