-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path******L_725.java******
97 lines (92 loc) · 2.5 KB
/
******L_725.java******
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
// /**
// * 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 ListNode[] splitListToParts(ListNode head, int k) {
// ListNode temp = head;
// ListNode pre = head;
// ListNode[] arr = new ListNode[k];
// int count = 0;
// while(temp!=null){
// count++;
// temp = temp.next;
// }
// temp = head;
// int i = 0;
// if(count < k){
// while(temp!= null){
// arr[i] = temp;
// temp = temp.next;
// pre.next = null;
// pre = temp;
// i++;
// }
// while(i<k){
// arr[i] = null;
// }
// }
// else{
// int mid = count/k;
// int extra = count % k;
// while(temp!=null && i < k){
// arr[i] = temp;
// int part = mid + (extra > 0 ? 1 : 0);
// for(int j = 0;j<part-1;j++){
// temp = temp.next;
// }
// pre = temp.next;
// temp.next = null;
// temp = pre;
// i++;
// extra--;
// }
// }
// return arr;
// }
// }
/**
* 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 ListNode[] splitListToParts(ListNode head, int k) {
ListNode temp = head;
ListNode pre = head;
ListNode[] arr = new ListNode[k];
int count = 0;
while (temp != null) {
count++;
temp = temp.next;
}
temp = head;
int i = 0;
int mid = count / k;
int extra = count % k;
while (temp != null && i < k) {
arr[i] = temp;
int part = mid + (extra > 0 ? 1 : 0);
for (int j = 0; j < part - 1; j++) {
temp = temp.next;
}
pre = temp.next;
temp.next = null;
temp = pre;
i++;
extra--;
}
return arr;
}
}