leetcode:逆序链表

2019-12-09  本文已影响0人  grace_fang

在工作中意识到算法能力还是很差,所以捡起来重新刷题。
与君共勉之。

package com.wuli.algorithm.逆序链表;

import java.util.ArrayList;
import java.util.Stack;

/**
 * @author jincheng.fjc
 * @date 2019/12/02
 */
public class Solution {
    ArrayList<Integer> arrayList = new ArrayList<Integer>();

    /**
     * 利用栈的特点
     *
     * @param listNode
     * @return
     */
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        Stack<Integer> stack = new Stack<>();
        while (listNode != null) {
            stack.push(listNode.val);
            listNode = listNode.next;
        }

        ArrayList<Integer> list = new ArrayList<>();
        while (!stack.isEmpty()) {
            list.add(stack.pop());
        }
        return list;
    }

    /**
     * 超级简洁递归版本
     */
    public ArrayList<Integer> printListFrom(ListNode listNode) {
        if (listNode != null) {
            this.printListFrom(listNode.next);
            arrayList.add(listNode.val);
        }
        return arrayList;
    }

    public static void main(String[] args) {
        ListNode listNode1 = new ListNode(1);
        ListNode listNode2 = new ListNode(2);
        ListNode listNode3 = new ListNode(3);
        listNode1.next = listNode2;
        listNode2.next = listNode3;

        ArrayList<Integer> arrayList2 = new ArrayList<Integer>();
        Solution solution = new Solution();
        arrayList2 = solution.printListFromTailToHead(listNode1);
        System.out.println(arrayList2);
    }
}

上一篇下一篇

猜你喜欢

热点阅读