剑指offer编程题-03

题目描述

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

时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M

1、分析

对于从尾到头的涉及到先后顺序的问题,首先想到的是使用栈或者队列来解决。其次,也可以采用递归的方式来进行处理,注意递归的时候需要定义一个全部变量。

2、代码

(1)栈

import java.util.ArrayList;
import java.util.Stack;
public class Solution {
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        Stack<Integer> stack = new Stack<Integer>();
        while(listNode!=null){
            stack.push(listNode.val);
            listNode = listNode.next;
        }
        ArrayList<Integer> result = new ArrayList<Integer>();
        while(!stack.isEmpty()){
            int tem = stack.pop();
            result.add(tem);
        }
        return result;
    }
}

(2)递归

import java.util.ArrayList;
public class Solution {
     ArrayList<Integer> arrayList=new ArrayList<Integer>();
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        if(listNode != null){
            printListFromTailToHead(listNode.next);
            arrayList.add(listNode.val);
        }
        return arrayList;
    }
}
发布了19 篇原创文章 · 获赞 0 · 访问量 249

猜你喜欢

转载自blog.csdn.net/wangqsse/article/details/104820877