剑指 Offer 06. 从尾到头打印链表
文章目录

题目

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

示例 1:

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

限制:

1
0 <= 链表长度 <= 10000

链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof

题解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} head
* @return {number[]}
*/

// 第1种比较傻的方法: 循环这个量表生成一个数组,然后在最后将数组倒转
// var reversePrint = function (head) {
// const x = []
// while (head) {
// x.push(head.val);
// head = head.next
// }
// return x.reverse()
// };


/* 递归的方法进行链表倒转 */
var reversePrint = function (head) {
let tail = head;
while (head.next) tail = head.next;
f(head)
return tail
};

var f = head => {
if (head.next) f(head.next).next = head

return head
}