问题:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
解题思路:
1.逆序链表并记录链表长度
2.创建返回数组,并反向遍历
/**
* 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];
}
//1.逆序链表并记录链表长度
int i=0;
ListNode node=null;
ListNode res=null;
while(head!=null){
node=head.next;
head.next=res;
res=head;
head=node;
i++;
}
//2.创建返回数组,并反向遍历
int[] resArr=new int[i];
for(int j=0;j<i;j++){
resArr[j]=res.val;
res=res.next;
}
return resArr;
}
}
时间复杂度O(N) ,额外空间复杂度O(1)