题目描述
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
例:
思路:
首先想到的是用int来进行计算的,但是没有想到head.val可能是大于9的,所以失败了,代码奉上吧
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public int[] reversePrint(ListNode head) {
int a = 0;
while(head!=null){
a = head.val+a*10;
head = head.next;
}
int i = 0;
int b=a;
while(b>0){
i++;
b=b/10;
}
int[] inte = new int[i];
for(int j=0;j<i;j++){
inte[j] = a%10;
a=a/10;
}
return inte;
}
}
结果
结果当然是错误的!!!要仔细看题!
重整思路:
新建一个ListNode。用于记录head的长度,建立数组,在用ListNode去填充数组。
代码:
/**
* 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];
}
ListNode listNode = head;
int i = 0;
while (listNode!=null){
i+=1;
listNode=listNode.next;
}
int[] ints = new int[i];
for (int j=0;j<i;j++){
ints[i-1-j] = head.val;
head = head.next;
}
return ints;
}
}