剑指Offer(第二版)06

简介: 剑指Offer(第二版)06

题目


@Author Tiam

@Date 2021/12/22 15:37

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

Definition for singly-linked list.

public class ListNode {

int val;

ListNode next;

ListNode(int x) { val = x; }

}



  /**
    * 一. 递归遍历链表, 速度更快
    */
   ArrayList<Integer> tmp = new ArrayList<>();
   public int[] reversePrint1(ListNode head) {
       recur(head);
       int[] res = new int[tmp.size()];
       for(int i = 0; i < res.length; i++) {
           res[i] = tmp.get(i);
       }
       return res;
   }
   void recur(ListNode head) {
       if(head == null) return;
       //递归 反序储存 链表中的值.
       recur(head.next);
       tmp.add(head.val);
   }

   /**
    * 二. 辅助栈法 , 更易理解 ,消耗内存较少
    * @param head
    * @return
    */
   public int[] reversePrint2(ListNode head) {
       //辅助栈 ,先进后出
       LinkedList<Integer> stack = new LinkedList<>();
       while(head != null) {
           //将指定的元素追加到此列表的末尾.
           stack.addLast(head.val);
           head = head.next;
       }
       //创建一个栈大小的数组
       int[] res = new int[stack.size()];
       for(int i = 0; i < res.length; i++) {
           //从此列表中删除并返回最后一个元素。
           res[i] = stack.removeLast();
       }
       return res;
   }

相关文章
|
1月前
|
机器学习/深度学习 Java
【剑指offer】- 求1+2+3+...+n -47/67
【剑指offer】- 求1+2+3+...+n -47/67
|
1月前
剑指Offer(第二版)04
剑指Offer(第二版)04
10 0
|
1月前
剑指Offer(第二版)05
剑指Offer(第二版)05
12 0
|
1月前
剑指Offer(第二版)11
剑指Offer(第二版)11
14 0
|
1月前
剑指Offer(第二版)03
剑指Offer(第二版)03
13 0
|
1月前
剑指Offer(第二版)10-2
剑指Offer(第二版)10-2
15 0
【剑指offer】-变态跳台阶-09/67
【剑指offer】-变态跳台阶-09/67
剑指offer 72. 求1+2+…+n
剑指offer 72. 求1+2+…+n
57 0
|
API
剑指offer(41-50题)详解
小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!
92 0
剑指offer(41-50题)详解
|
算法
剑指offer(26-33题)详解
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向
92 0
剑指offer(26-33题)详解