|
1 | 1 | package leetcode2018;
|
2 | 2 |
|
3 |
| -import java.util.Arrays; |
4 |
| - |
5 | 3 | public class AssignCookies {
|
6 | 4 | 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; |
13 | 19 | }
|
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); |
15 | 24 | }
|
16 | 25 |
|
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]; |
25 | 48 | }
|
26 |
| - return false; |
| 49 | + |
27 | 50 | }
|
28 | 51 | }
|
0 commit comments