Fuente: Enlace: https://leetcode-cn.com/problems/assign-cookies
Declaración: Si violé los derechos de alguien, comuníquese conmigo y lo eliminaré.
Bienvenidos expertos a rociarme
Directorio de artículos
tema
Suponga que es un gran padre y quiere darles a sus hijos algunas galletas. Sin embargo, cada niño solo puede dar una galleta como máximo.
Para cada niño i, hay un valor de apetito g [i], que es el tamaño más pequeño de galleta que puede satisfacer el apetito de los niños, y cada galleta j tiene un tamaño s [j]. Si s [j]> = g [i], podemos asignar esta cookie j al niño i, y este niño quedará satisfecho. Su objetivo es satisfacer a tantos niños como sea posible y generar este valor máximo.
Ejemplo 1:
Entrada: g = [1,2,3], s = [1,1]
Salida: 1
Explicación:
Tiene tres hijos y dos galletas. Los valores de apetito de los tres hijos son: 1, 2, 3.
Aunque tienes dos galletas pequeñas, ya que su tamaño es 1, solo podrás satisfacer al niño cuyo apetito es 1.
Por lo que debería generar 1.
Ejemplo 2:
Entrada: g = [1,2], s = [1,2,3]
Salida: 2
Explicación:
Tiene dos hijos y tres galletas, y los valores de apetito de los dos hijos son 1,2 respectivamente .
La cantidad y el tamaño de las galletas que tiene son suficientes para satisfacer a todos los niños.
Por lo que debería generar 2.
提示 :
1 <= g.length <= 3 * 10 ^ 4
0 <= s.length <= 3 * 10 ^ 4
1 <= g [i], s [j] <= 2 ^ 31 - 1
Mi código doble puntero
Aquí es para ordenar las dos matrices primero, los dos punteros apuntan al comienzo de la matriz y compararlos uno por uno
- g [i] <= s [j] significa que el dulce se puede asignar a g [i], ret ++;
- g [i]> s [j] significa que el caramelo no se puede dividir en g [i], [j ++] apunta al siguiente caramelo
class Solution {
public int findContentChildren(int[] g, int[] s) {
//Arrays.sort(g);
quickSort(g, 0, g.length-1);
quickSort(s, 0, s.length-1);
//Arrays.sort(s);
int i=0, j=0;
int ret=0;
while(i<g.length && j<s.length){
if(g[i] <= s[j]){
ret++;
i++; j++;
}else{
j++;
}
}
return ret;
}
public void quickSort(int[] arr, int start, int end){
if(start >= end) return;
int p = partition(arr, start, end);
quickSort(arr, start, p);
quickSort(arr, p+1, end);
}
public int partition(int[]arr, int left, int right){
int key = arr[left];
while(left < right){
while(left < right && arr[right] >= key) right--;
arr[left] = arr[right];
while(left < right && arr[left] <= key) left ++;
arr[right] = arr[left];
}
arr[left] = key;
return left;
}
}
Gran código de Dios
Esta es la idea,
https://leetcode-cn.com/problems/assign-cookies/solution/fen-fa-bing-gan-by-leetcode-solution-50se/
class Solution {
public int findContentChildren(int[] g, int[] s) {
Arrays.sort(g);
Arrays.sort(s);
int numOfChildren = g.length, numOfCookies = s.length;
int count = 0;
for (int i = 0, j = 0; i < numOfChildren && j < numOfCookies; i++, j++) {
while (j < numOfCookies && g[i] > s[j]) {
j++;
}
if (j < numOfCookies) {
count++;
}
}
return count;
}
}
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/assign-cookies/solution/fen-fa-bing-gan-by-leetcode-solution-50se/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。