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

    import java.util.Deque;
    import java.util.LinkedList;
    import java.util.Stack;
    
    /**
     * @Class ReversePrint
     * @Description 剑指 Offer 06. 从尾到头打印链表
     * 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
     *
     * 示例 1:
     * 输入:head = [1,3,2]
     * 输出:[2,3,1]
     *
     * 限制:
     * 0 <= 链表长度 <= 10000
     * @Author
     * @Date 2020/6/28
     **/
    public class ReversePrint {
        static class ListNode {
            int val;
            ListNode next;
            ListNode(int x) {
                val = x;
            }
        }
    }
    
    /**
     * 解法1:利用栈
     */
    public static int[] reversePrint(ListNode head) {
    	ListNode listNode = head;
    	Stack<Integer> integerDeque =new Stack<>();
    	int count =0;
    	while (listNode!= null){
    		integerDeque.push(listNode.val);
    		listNode = listNode.next;
    		count++;
    	}
    	int[] ans = new int[count];
    	for (int i = 0; i <count ; i++) {
    		ans[i] = integerDeque.pop();
    	}
    	return ans;
    }
    
    /**
     * 解法2:利用递归
     */
    public static int[] reversePrint(ListNode head) {
    	LinkedList<Integer> linkedList = new LinkedList<>();
    	reversePrint(head,linkedList);
    	int size = linkedList.size();
    	int[] ans = new int[size];
    	for (int i = 0; i < size; i++) {
    		ans[i]= linkedList.pop();
    	}
    	return ans;
    }
    
    private static LinkedList<Integer> reversePrint(ListNode listNode, LinkedList linkedList){
    	if(listNode==null) return null;
    	linkedList.add(listNode.val);
    	return reversePrint(listNode.next,linkedList);
    }
    
    // 测试用例
    public static void main(String[] args) {
    	ListNode listNode11 = new ListNode(1);
    	ListNode listNode12 = new ListNode(3);
    	listNode11.next = listNode12;
    	ListNode listNode13 = new ListNode(2);
    	listNode12.next = listNode13;
    	listNode13.next = null;
    
    	int[] ans = reversePrint(listNode11);
    	System.out.println("demo01 result:");
    	for (int val : ans){
    		System.out.print(" "+val);
    	}
    	System.out.println("");
    }
    
  • 相关阅读:
    WPF 分页控件Pager
    vue Map 渲染DOM
    IDEA 开发工具 Mybatis 快速开发插件 ==》MyBatisX
    令自己的本地ip可以被外网访问
    mybatis按datetime条件查询,参数为时间戳时
    springmvc传参---LocalDateTime、Date等时间类型转换
    java excel导出(表头合并,多行表头)
    JMeter学习工具简单介绍
    idea项目 run、debug变灰色的问题
    vue的ui库使用Element UI,纯html页面,不使用webpack那玩意
  • 原文地址:https://www.cnblogs.com/fyusac/p/13204886.html
Copyright © 2011-2022 走看看