zoukankan      html  css  js  c++  java
  • 剑指 Offer 06. 从尾到头打印链表

    题目

    输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。

    示例 1:

    输入:head = [1,3,2]
    输出:[2,3,1]

    限制:

    0 <= 链表长度 <= 10000

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof

    解答

    public class JZ_06_从尾到头打印链表 {
        /**
         *  由于题目要求的是头尾到头打印链表,如果在不允许改变链表方向的前提下,只能顺序遍历链表
         *  由于栈具有先进后出的特点,所以可以在顺序遍历时,将元素入栈,然后将栈中的元素从栈顶弹出
         *  ,就能实现从尾到头打印链表。
         * @param head
         * @return
         */
        public int[] reversePrint(ListNode head) {
           // 1. 先定义一个栈,存储元素
            Stack<Integer> stack = new Stack<>();
            ListNode node = head;
            // 2.遍历链表,并入栈
            while(node !=null){
                stack.push(node.val);
                node = node.next;
            }
            // 3. 定义数组,依次出栈,存储返回的结果
            /**
             *   注意,这儿一定要单独定义一个size变量,保存原来栈的长度
             *   不能直接用stack.size,因为每次出栈,stack.size是动态变化的
             */
            int size = stack.size();
            int[] res = new int[stack.size()];
            for (int i = 0; i < stack.size(); i++) {
                res[i] = stack.peek();
                stack.pop();
            }
            return res;
        }
    }
    
  • 相关阅读:
    python基础(str,list,tuple)
    MySQL数据类型概念
    Ubuntu安装sublime
    Ubuntu安装pycharm
    ubuntu安装mysql
    微信小程序注册开发流程
    新开篇
    被玩坏了的题——马的遍历
    一道数学恶心题——小凯的疑惑
    搜索基础题:八皇后
  • 原文地址:https://www.cnblogs.com/sinlearn/p/14964860.html
Copyright © 2011-2022 走看看