2020-12-25 Deducción de la fuerza de participación de hoy == 455. Distribuir cookies

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

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)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Supongo que te gusta

Origin blog.csdn.net/qq_45531729/article/details/111674079
Recomendado
Clasificación