leetcode剑指 Offer 06(从尾到头打印链表)--Java语言实现
求: 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表长度 <= 10000 题目链接: https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/ 解: 非常常规的题目,因为题目的特点是先进后出,所以联想到栈,先遍历链表,将值放入栈中,最后再从栈中弹出元素,逐个加入ret数组。最后返回ret数组。 时间复杂度:O(n) 空间复杂度:O(n) public int [] reversePrint (ListNode head) { Deque<Integer> helpStack = new LinkedList<>() ; for (ListNode p = head ; p != null; p = p. next ) helpStack.push(p. val ) ; int size = helpStack.size() ; int ret[] = new int [size] ; for ( int k = 0 ; k < size ; k++) ret[k] = helpStack.pop() ; return ret ; } 如果不用栈也可以做,这样可以省去栈的空间