[LeetCode]剑指 Offer 06. 从尾到头打印链表
Posted Spring-_-Bear
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode]剑指 Offer 06. 从尾到头打印链表相关的知识,希望对你有一定的参考价值。
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2]
输出:[2,3,1]
限制:
0 <= 链表长度 <= 10000
题解一:
/**
* 剑指 Offer 06. 从尾到头打印链表
*
* @param head 链表头节点
* @return 链表数据逆序数组
*/
public int[] reversePrint(ListNode head)
// 顺序遍历链表并将值放入栈中,当遍历完链表后依次将栈中元素弹出放进数组并返回
Stack<Integer> dataStack = new Stack<>();
ListNode cur = head;
while (cur != null)
dataStack.push(cur.val);
cur = cur.next;
int size = dataStack.size();
int[] res = new int[size];
for (int i = 0; i < size; i++)
res[i] = dataStack.pop();
return res;
题解二:
private final List<Integer> integerList = new ArrayList<>();
/**
* 剑指 Offer 06. 从尾到头打印链表
*
* @param head 链表头节点
* @return 逆序链表值数组
*/
public int[] reversePrint(ListNode head)
/*
* 递归:利用递归逐层返回的特点,使用辅助方法一直遍历到链表尾,
* 逐个返回逆序的节点,将节点的值添加到集合中,最后遍历集合元素得到结果数组
*/
recursion(head);
int size = integerList.size();
int[] res = new int[size];
for (int i = 0; i < size; i++)
res[i] = integerList.get(i);
return res;
/**
* 递归遍历链表
*
* @param cur 当前节点
*/
void recursion(ListNode cur)
if (cur == null)
return;
recursion(cur.next);
integerList.add(cur.val);
以上是关于[LeetCode]剑指 Offer 06. 从尾到头打印链表的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode Algorithm 剑指 Offer 06. 从尾到头打印链表
[LeetCode]剑指 Offer 06. 从尾到头打印链表
LeetCode 剑指offer 面试题06. 从尾到头打印链表
LeetCode 剑指offer 面试题06. 从尾到头打印链表