Description

难度简单 :剑指 Offer 06. 从尾到头打印链表
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2]
输出:[2,3,1]
限制:
0 <= 链表长度 <= 10000

Solution

这道题属于非常简单的题目,利用循环将链表中的数据添加到 List 中,再反序输入 List 中的元素

  1. public class Solution {
  2. public int[] reversePrint(ListNode head) {
  3. List<Integer> nums = new ArrayList<>();
  4. ListNode node = head;
  5. while(node != null){
  6. nums.add(node.val);
  7. node = node.next;
  8. }
  9. int[] res = new int[nums.size()];
  10. for (int i = 0; i < res.length; i ++)
  11. res[i] = nums.get((res.length-1) - i);
  12. return res;
  13. }
  14. }

递归的写法

  1. class Solution {
  2. List<Integer> nums;
  3. public int[] reversePrint(ListNode head) {
  4. nums = new ArrayList<>();
  5. recursion(head);
  6. int[] res = new int[nums.size()];
  7. for(int i = 0; i < nums.size(); i ++)
  8. res[i] = nums.get(i);
  9. return res;
  10. }
  11. public void recursion(ListNode node){
  12. if (node == null)
  13. return;
  14. recursion(node.next);
  15. nums.add(node.val);
  16. }
  17. }