每日一刷——从尾到头打印链表

题目描述

输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。
如输入{1,2,3}的链表如下图:
图片1
示例:

输入:{1,2,3}
输出:[3, 2, 1]

解题思路:
从左向右遍历链表,并将每个元素的值保存在列表中,使用 python 列表 [::-1] 将所有元素逆向输出。
时间复杂度:O(n);空间复杂度:O(n)。
参考了牛客写的题解写出了解决代码:

# -*- coding:utf-8 -*-
class ListNode:
     def __init__(self, x):
         self.val = x
         self.next = None

# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
# @param listNode ListNode类 
# @return int整型一维数组
#
class Solution:
    def printListFromTailToHead(self , listNode: ListNode) -> List[int]:
        # write code here
        res = []
        while listNode:
            res.append(listNode.val)
            listNode = listNode.next
        # 对数组方向输出
        return res[::-1]

python 版的解决方法除了这种,还有使用栈,栈的特点:先进后出。
时间复杂度:O(n);空间复杂度:O(n)
参考了牛客上的题解写的代码:

class Solution:
    def printListFromTailToHead(self , listNode: ListNode) -> List[int]:
        # 辅助栈
        stack = []
        # 返回结果的列表
        result = []
        while listNode:
            stack.append(listNode.val)
            listNode = listNode.next
        
        while stack:
            result.append(stack.pop())
        return result

你可能感兴趣的:(python学习之路,链表,数据结构)