1. 题目描述

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

示例 1:

  1. 输入:head = [1,3,2]
  2. 输出:[2,3,1]

限制:

  • 0 <= 链表长度 <= 10000

    2. 解题思路

    倒叙输出链表元素,我们可以正序遍历并将每次的值从结果数组的前面插入,这样遍历完成之后的结果就是倒叙的。

复杂度分析:

  • 时间复杂度:O(n),我们需要遍历整个链表;
  • 空间复杂度:O(n),需要一个长度为n的数组来保存遍历的结果。

    3. 代码实现

    1. /**
    2. * Definition for singly-linked list.
    3. * function ListNode(val) {
    4. * this.val = val;
    5. * this.next = null;
    6. * }
    7. */
    8. /**
    9. * @param {ListNode} head
    10. * @return {number[]}
    11. */
    12. var reversePrint = function(head) {
    13. let res = []
    14. let cur = head
    15. while(cur){
    16. res.unshift(cur.val)
    17. cur = cur.next
    18. }
    19. return res
    20. };

    4. 提交结果

    image.png