【剑指 Offer 31 天打卡计划】#3 从尾到头打印链表

83 阅读1分钟

题目

难度:⭐️

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

示例

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

提示:

0 <= 链表长度 <= 10000

题解

/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} head
 * @return {number[]}
 */
var reversePrint = function(head) {
    let arr = []
    let curr = head
    while(curr !== null){
        arr.unshift(curr.val)
        curr = curr.next
    }
    return arr
};

笔记

按题目要求,从头到尾遍历链表后,逆向输出各节点值(val),这种先进后出的数据结构可以用栈来实现。理论上可以先 push 再 reverse,但考虑到简洁性,可以直接使用 unshift 来解决。