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

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

题目:

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

示例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']

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/875794.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-13
下一篇2022-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存