剑指Offer
题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList**题解:**
1、javascript
反序输出,就相当于先进后出,所以构建栈,将链表结构存入数组中,然后利用Javascipt中的API反序。/*function ListNode(x){
this.val = x;
this.next = null;
}*/
function printListFromTailToHead(head)
{
// write code here
var arrayList = [];
let node = head;
while (node){
arrayList.push(node.val);
node = node.next;
}
return arrayList.reverse();
}
2、Java
(1)通过栈的方法,利用arraylist 的add 的方法,在索引0的位置添加值,实现链表的反序输出/**
* public class ListNode {
* int val;
* ListNode next = null;
*
* ListNode(int val) {
* this.val = val;
* }
* }
*
*/
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> list = new ArrayList<>();
ListNode temp = listNode;
while(temp !=null){
list.add(0,temp.val);
temp = temp.next;
}
return list;
}
}
(2)递归
import java.util.ArrayList;
public class Solution {
ArrayList<Integer> list = new ArrayList<>();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
if(listNode!=null){
printListFromTailToHead(listNode.next);
list.add(listNode.val);
}
return list;
}
}