Skip to content

Commit 975eeb7

Browse files
committed
Assign Cookies
1 parent 97756da commit 975eeb7

File tree

1 file changed

+41
-18
lines changed

1 file changed

+41
-18
lines changed
Lines changed: 41 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,51 @@
11
package leetcode2018;
22

3-
import java.util.Arrays;
4-
53
public class AssignCookies {
64
public int findContentChildren(int[] g, int[] s) {
7-
Arrays.sort(g);
8-
Arrays.sort(s);
9-
int t = 0;
10-
for(int i = 0; i< g.length; i++){
11-
if(isContent(g[i], s))
12-
t++;
5+
if(g.length == 0 || s.length == 0) return 0;
6+
mergeSort(g, 0, g.length-1);
7+
mergeSort(s, 0, s.length-1);
8+
int i = 0;
9+
for(int j = 0; i< g.length && j< s.length; j++){
10+
if(g[i] <= s[j])
11+
i++;
12+
}
13+
return i;
14+
}
15+
16+
public void mergeSort(int[] nums, int l, int p){
17+
if(l==p){
18+
return;
1319
}
14-
return t;
20+
int mid = (l+p)/2;
21+
mergeSort(nums, l, mid);
22+
mergeSort(nums, mid+1, p);
23+
merge(nums, l, mid+1, p);
1524
}
1625

17-
public boolean isContent(int n, int[] s){
18-
for(int i = 0; i< s.length; i++){
19-
if(s[i]!=-1){
20-
if(s[i] >= n){
21-
s[i]=-1;
22-
return true;
23-
}
24-
}
26+
public void merge(int[] nums, int left, int mid, int rightEnd){
27+
int right = mid;
28+
int k=0;
29+
int n= rightEnd-left+1;
30+
int lower =left;
31+
int[] temp= new int[n];
32+
while(left<=mid-1 && right<= rightEnd){
33+
if(nums[left]<=nums[right]){
34+
temp[k++]= nums[left++];
35+
}else{
36+
temp[k++]= nums[right++];
37+
}
38+
}
39+
while(left<=mid-1){
40+
temp[k++]= nums[left++];
41+
}
42+
while(right<=rightEnd){
43+
temp[k++]= nums[right++];
44+
}
45+
46+
for(int i=0; i<n;i++){
47+
nums[lower+i] = temp[i];
2548
}
26-
return false;
49+
2750
}
2851
}

0 commit comments

Comments
 (0)