本文共 1037 字,大约阅读时间需要 3 分钟。
剑指offer—从头到尾打印列表
题目描述: 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。解题思路:
这道题不难,可以使用栈来实现,将原数组的值依次存入一个新的栈中。然后再弹出。代码如下:# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: # 返回从尾部到头部的列表值序列,例如[1,2,3] def printListFromTailToHead(self, listNode): result = [] if listNode == None: return [] while listNode != None: result.append(listNode.val) listNode = listNode.next final= [result.pop() for i in range(len(result))] return final
还可以使用一个递归来实现,递归的本质上就是一个栈结构。当我们访问一个节点时,先递归输出它后面的节点,最后再输出该节点。就完成了一个输出的反转。
使用python最后输出结果时,利用了它的切片,将当前值放到最后,前面链接其下一个节点的递归,这样依次进行一句代码就可以得到最后的结果。# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: # 返回从尾部到头部的列表值序列,例如[1,2,3] def printListFromTailToHead(self, listNode): if listNode == None: return [] return self.printListFromTailToHead(listNode.next)+[listNode.val]
转载地址:http://tqmws.baihongyu.com/