一、题目内容

image.png

二、题解

解法1:

思路

类似反转链表
先求出链表长度,然后正向遍历链表,反向存储(res[size - 1] = curr.val)

代码

  1. class Solution {
  2. public int[] reversePrint(ListNode head) {
  3. ListNode curr = head;
  4. int size = 0;
  5. while (curr != null) {
  6. size++;
  7. curr = curr.next;
  8. }
  9. int[] res = new int[size];
  10. curr = head;
  11. while (curr != null) {
  12. res[size - 1] = curr.val;
  13. size--;
  14. curr = curr.next;
  15. }
  16. return res;
  17. }
  18. }

解法2:

思路

递归。
通过递归方式,将链表反向存储在额外空间中,递归结束条件为curr=null

代码

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