题目描述:
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
题目解释:不同于LeetCode的206题,翻转链表(改变链表结构,需要用两个指针,previous与cur来交替替换指针指向)。这道题只要求输出链表的值,如果不要求改变链表的结构,那么就不能用翻转链表然后从头到尾打印值得思路。
想到基于栈和循环的方式,来解决问题。(因为用到了栈,本质上也可以用递归,不过当链表比较长时,可能递归会比较深,因此用前面的思路比较好)。
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
# 返回从尾部到头部的列表值序列,例如[1,2,3]
def printListFromTailToHead(self, listNode):
# write code here
#先构造一个结果列表res,每次的值append到res中
# 用while保持循环,可以用cur来表示下一个节点,当cur不为空时,即可继续循环
cur = listNode
res = []
while cur != None:
res.append(cur.val)
cur = cur.next
#最终,再反转链表
res.reverse()
return res
网友评论