题目描述:
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例
输入:head = [1,3,2]
输出:[2,3,1]
限制
0 < = 链 表 长 度 < = 10000 0 <= 链表长度 <= 10000 0<=链表长度<=10000
解题思路
利用栈的性质(先进后出),定义一个栈,把链表里的数据存入到栈中,然后取出来存入到数组中,就实现了从尾到头反过来返回每个节点的值。
java代码
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public int[] reversePrint(ListNode head) {
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;
}
}
python3代码
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def reversePrint(self, head: ListNode) -> List[int]:
stack=[]
while head:
stack.append(head.val)
head=head.next
return stack[::-1]