思路
方法1:放进list,将list倒置,利用stream,将list改为int类型
方法2:递归:递归通用思路;明确每一层做什么+确定返回值+确定什么地方接收下层的返回值
每一层:调用下层,然后把自己放进数组,把数组返回给上层
确定返回值:返回本层添加后的list,确定调用下层的时候接收,
代码
方法1
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val = val; }* ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public int[] reverseBookList(ListNode head) {//遍历把所有节点放进listListNode cur=head;ArrayList<Integer> list = new ArrayList<>();while(cur!=null){list.add(cur.val);cur=cur.next;}//倒置这个Collections.reverse(list);//把list放进int[]int[] array = list.stream().mapToInt(Integer::intValue).toArray();return array;}
}
方法2
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val = val; }* ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public int[] reverseBookList(ListNode head) {if (head==null){return new int[0];}//递归:每一层做法:调用下层 ,然后把自己放进数组//头节点调用递归方法ArrayList<Integer> list = new ArrayList<>();list = diGui(head, list);int[] array = list.stream().mapToInt(Integer::intValue).toArray();return array;}//递归:调用下层,然后把自己放进数组,把数组返回给上层//确定返回值,确定调用下层的时候接收,public ArrayList<Integer> diGui (ListNode cur,ArrayList<Integer> list){if (cur.next!=null){list=diGui(cur.next,list);}list.add(cur.val);return list;}}