题目
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
输入:head = [1,3,2]
输出:[2,3,1]
题解思路
原地“逆置”,相当于将链表元素从有右向左放置
代码
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public int[] reversePrint(ListNode head) {
if(head==null)
return new int[0];
int count=0;
ListNode temp=head;
while(temp!=null){
count++;
temp=temp.next;
}
int []res=new int[count];
temp=head;
int i=count-1;
while(temp!=null){
res[i]=temp.val;
temp=temp.next;
i--;
}
return res;
}
}
复杂度分析
时间复杂度O(n);
空间复杂大O(1);