面试题06. 从尾到头打印链表(简单)

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

示例 1:

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

限制:

0 <= 链表长度 <= 10000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof

思路1:

要是本题使用链表返回,那就和leetcode206一样了,第一时间想到得应该就得是栈来实现

思路2:

尾插法改头插法,这里可以使用三指针,由于是数组输出,使用头插法不方便

回看记录200619

用栈特别简单,没什么说的

代码1:

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
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public int[] reversePrint(ListNode head) {
//本题用数组返回,和leetcode206有区别
//数组返回,考虑使用栈实现
Stack<ListNode> stack = new Stack<ListNode>();
ListNode tmp = head;
while(tmp!=null){
stack.push(tmp);
tmp = tmp.next;
}
int len = stack.size();
int[] array = new int[len];
for(int i=0;i<len;i++){
array[i]=stack.pop().val;
}
return array;
}
}