剑指Offer-从尾到头打印链表-Python

从尾到头打印链表

题目描述:

输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。

思路1:(用了库函数)
使用extend,在尾部插入,其实最关键在于[::-1],只不过输入数据多样化,有可能还是集合,所以转成列表list

对list切片,只用一个" : "表示从头到尾,切片操作第三个参数表示每N个取一个。
[::2]每两个取一个,[::-1]逆序。

这个方法效率应该还可以,先存入vector,再反转vector

实现1:

class Solution:
    # 返回从尾部到头部的列表值序列,例如[1,2,3]
    def printListFromTailToHead(self, listNode):
        # write code here
        if not listNode:
            return []
        result = []
        while listNode.next is not None:
            result.extend(listNode.val)
            listNode = listNode.next
        result.extend(listNode.val)
        
        return result[ : : -1]

遇到的问题:
extend(扩展) 和 append(追加) 区别:详细解释

思路2:
书本思路,利用栈,后进先出。

但因为python是一个很上层的语言,封装了内存管理,程序员无需知道堆、栈这些东西。他们的内存管理都由垃圾回收器自动管理。

猜你喜欢

转载自blog.csdn.net/weixin_40314385/article/details/87896664