1输入一个链表,按链表从尾到头的顺序返回一个ArrayList

//输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
/**
*    public class ListNode {
*        int val;
*        ListNode next = null;
*
*        ListNode(int val) {
*            this.val = val;
*        }
*    }
*
*/
//法1:递归 O(n)
import java.util.ArrayList;
public class Solution {
    ArrayList<Integer>arrayList=new ArrayList<Integer>();
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        if(listNode!=null){
            this.printListFromTailToHead(listNode.next);
            arrayList.add(listNode.val);
        }
        return arrayList;
    }

}

//法2:利用ArrayList的add函数 实现先进后出的栈结构  O(n)
import java.util.ArrayList;
public class Solution {
     public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
         ArrayList<Integer>list=new ArrayList<Integer>();
         ListNode p=listNode;
         while(p!=null){
             list.add(0,p.val);//每次插入到0位置 
             p=p.next;
         }
         return list;
}
}

//用系统栈
import java.util.ArrayList;
import java.util.Stack;
public class Solution {

     public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
         ArrayList<Integer>list=new ArrayList<Integer>();
         Stack<Integer>stack=new Stack<Integer>();
         while(listNode!=null){
             stack.push(listNode.val);
             listNode=listNode.next;
         }
         ArrayList<Integer> list1=new ArrayList<Integer>();
         while(!stack.isEmpty()){
             list1.add(stack.pop());
         }
         return list1;
}
}

 

 

posted @ 2020-04-01 15:23  冰河入梦~  阅读(426)  评论(0编辑  收藏  举报