今日题目(剑指Offer系列)
剑指 Offer 06. 从尾到头打印链表
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例:
输入:head = [1,3,2] 输出:[2,3,1]
解题思路:
>对于Java来说,可以利用栈,先进后出的特性 >遍历每个节点将其压入栈内 >然后依次弹出栈 >或者可以利用递归 >递归的表达式就是用下一位的值+当前位置的值 >如果head为空那么就返回空列表
Python解法:
class Solution(object): def reversePrint(self, head): """ :type head: ListNode :rtype: List[int] """ return self.reversePrint(head.next)+[head.val] if head else []
Java解法:
class Solution { public int[] reversePrint(ListNode head) { if(head==null){ return new int[]{}; } Stack<Integer> stack= new Stack<Integer>(); while(head!=null){ stack.add(head.val); head=head.next; } int size=stack.size(); int[] arr = new int[size]; for(int i=0;i<size;i++){ arr[i]=stack.pop(); } return arr; } }