题目链接
示例
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
输入:
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;
}
}