【d48】【Java】【力扣】LCR 123. 图书整理 I
思路
方法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) {
//遍历把所有节点放进list
ListNode 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;
}
}