[Pregunta diaria 1 Día224] La máxima dulzura de la caja de regalo LC2517 | Respuesta de 2 puntos

La máxima dulzura de la caja regalo【LC2517】

Se le da una matriz de números enteros positivos pricedonde price[i]denota el precio de los ithdulces y un número entero positivo k.

La tienda vende canastas de k distintos dulces. El sabor de una canasta de dulces es la diferencia absoluta más pequeña de los precios de dos dulces cualesquiera en la canasta.

Devuelve el máximo sabor de una canasta de golosinas.

Maximizar y minimizar temas similares

  • Idea: Usa la búsqueda binaria para encontrar la máxima dulzura

    • La monotonicidad de esta pregunta es: cuando el grado mínimo de dulzura [el valor mínimo del valor absoluto de la diferencia entre dos elementos cualesquiera de la matriz] ** es mayor, los tipos de dulces que se pueden seleccionar son menores [el número de elementos en el número de matriz seleccionado], por lo que la respuesta final se puede encontrar mediante búsqueda binaria
    • Transforme el significado de la pregunta en: Cuando el número seleccionado sea cierto, encuentre el valor máximo yy de la dulzura mínimay , el límite inferior de la búsqueda binaria es 0, y el límite superior esla diferencia entre el elemento más grande y el elemento más pequeño en la matriz/(k-1)
  • lograr

    • priceOrdenar la matriz en orden ascendente primero

    • Luego realice una búsqueda binaria, cuando la búsqueda binaria sea mínima dulzura yyy , es necesario juzgar sikkk tipos de dulces, sikk tipos de caramelos, entonces podemos aumentar la diferencia para obtener un dulzor mínimo mayor; sikdulces en k , luego reduce la diferencia

    • Cada vez que la búsqueda tenga éxito, registre la dulzura mínima actual, y la última dulzura mínima es la dulzura máxima y mínima

    • ¿Cómo juzgar cuántos dulces se pueden sacar por la diferencia actual?

      Iteración de simulación, el primer caramelo toma precio [ 0 ] precio[0]p r i ce [ 0 ] , el primer dulce tomaprecio [ 0 ] + y precio[0]+yprecio [ 0 ] _ _ _+yprecio [ i ] precio [i]precio [ i ] en ... _ _

  • el código

    class Solution {
          
          
        public int maximumTastiness(int[] price, int k) {
          
          
            Arrays.sort(price);
            int n = price.length;
            int l = 0, r = price[n - 1] - price[0];
            int ans = 0;
            while (l <= r){
          
          
                int mid = (r + l) / 2;
                if (check(price, mid ,k)){
          
          
                    ans = mid;
                    l = mid + 1;
                }else{
          
          
                    r = mid - 1;
                }
            }
            return ans;
    
        }
        public boolean check(int[] price, int m, int k){
          
          
            int count = 1;
            int preIndex = 0;
            for (int i = 1; i < price.length; i++){
          
          
                if (price[i] - price[preIndex] >= m ){
          
          
                    count++;
                    preIndex = i;
                }
            }
            return count >= k;
        }
    }
    
    • la complejidad
      • Complejidad del tiempo: O ( nlog ( n C ) ) O(nlog(nC))O ( n l o g ( n C )) ,nnn es la longitud de la matriz y C es la diferencia entre los valores mayor y menor de la matriz. La complejidad de tiempo requerida para clasificar esO ( nlogn ) O(nlog n)O ( n l o g n ) , la complejidad temporal de la búsqueda binaria esO ( log C ) O(logC)O ( l o g C ) , cada búsqueda binaria necesita juzgar si la complejidad del tiempo esO ( n ) O(n)O ( n ) , por lo que la complejidad temporal total esO ( nlog ( nc ) ) O(nlog(nc))O ( n l o g ( n c ))
      • Complejidad del espacio: O (logn) O(logn)O ( log n ) , el espacio de pila requerido para ordenar

Supongo que te gusta

Origin blog.csdn.net/Tikitian/article/details/130982034
Recomendado
Clasificación