题目链接
示例
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
输入:head = [1,3,2]输出:[2,3,1]
解题思路
想到使用 栈 , 先入后出
1. 实例化一个栈
2. 遍历链表,依次放入栈内,遍历链表是通过指针的指向来遍历
3. 通过stack.size()来获得栈的大小,创建一个相同大小的数组
4. 弹栈stack.pop()取出数据,注意此时取出的是链表,需要.val()获得值,存入数组中
代码
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/class Solution {public int[] reversePrint(ListNode head) {/*想到使用栈先入后出1. 实例化一个栈2. 遍历链表,依次放入栈内,遍历链表是通过指针的指向来遍历3. 通过stack.size()来获得栈的大小,创建一个相同大小的数组4. 弹栈stack.pop()取出数据,注意此时取出的是链表,需要.val()获得值,存入数组中*/Stack<ListNode> stack = new Stack<>();ListNode temp = head;while(temp!=null){stack.push(temp);temp = temp.next;}int size = stack.size();int[] newStr = new int[size];for(int i=0; i<size; i++){newStr[i] = stack.pop().val;}return newStr;}}
