【Pregunta diaria de LeetCode】—— 628. El producto máximo de tres números

Una [categoría de tema]

  • para ordenar

Dos [dificultad de la pregunta]

  • Simple

Tres [número de tema]

  • 628. El mayor producto de tres números

Cuatro [descripción del título]

  • Dada una matriz de números enteros, encuentre el producto más grande de tres números en la matriz y genere el producto.

Cinco [ejemplos de temas]

  • Ejemplo 1:

    • Entrada: números = [1,2,3]
    • Salida: 6
  • Ejemplo 2:

    • Entrada: números = [1,2,3,4]
    • Salida: 24
  • Ejemplo 3:

    • Entrada: números = [-1,-2,-3]
    • Salida: -6

Seis [mensaje de tema]

  • 3 < = números . longitud < = 1 0 4 3 <= nums.longitud <= 10^43<=números _ _ _ _ longitud _ _ _ _ _<=1 04
  • − 1000 < = números [ i ] < = 1000 -1000 <= números[i] <= 10001000<=números [ yo ] _ _ _<=1000

Siete [ideas para resolver problemas]

  • Discusión por situación:
    • La matriz es todos los números positivos: el producto de los últimos tres números en la matriz es el más grande
    • El arreglo es todo negativo: el producto de los tres últimos números del arreglo es el mayor
    • La matriz tiene números positivos y negativos: el producto de los primeros dos números y el último número de la matriz es el mayor, o el producto de los últimos tres números es el mayor
  • En resumen: el producto de los últimos tres números de la matriz es el mayor, o el producto de los dos primeros números y el último número de la matriz es el mayor, y solo es necesario devolver un valor mayor.
  • Finalmente devuelve el resultado.

Ocho 【Frecuencia de tiempo】

  • Complejidad del tiempo: O ( nlogn ) O(nlogn)O ( n l o g n ) ,nnn es la longitud de la matriz entrante
  • Complejidad del espacio: O (logn) O(logn)O ( iniciar sesión ) , nn _ _n es la longitud de la matriz entrante

Nueve [implementación de código]

  1. Versión del lenguaje Java
class Solution {
    
    
    public int maximumProduct(int[] nums) {
    
    
        Arrays.sort(nums);
        int len = nums.length;
        int maxOne = nums[len - 1];
        int maxTwo = nums[len - 2];
        int maxThree = nums[len - 3];
        int minOne = nums[0];
        int minTwo = nums[1];
        if(maxOne * maxTwo * maxThree > minOne * minTwo * maxOne){
    
    
            return maxOne * maxTwo * maxThree;
        }else{
    
    
            return minOne * minTwo * maxOne;
        }
    }
}
  1. Versión en lenguaje C
int cmp(const void *a, const void *b)
{
    
    
    return *(int*)a - *(int*)b;
}

int maximumProduct(int* nums, int numsSize)
{
    
    
    qsort(nums, numsSize, sizeof(int), cmp);
    return fmax(nums[0] * nums[1] * nums[numsSize - 1], nums[numsSize - 1] * nums[numsSize -2] * nums[numsSize - 3]);
}
  1. Versión en lenguaje Python
class Solution:
    def maximumProduct(self, nums: List[int]) -> int:
        nums.sort()
        n = len(nums)
        return max(nums[0] * nums[1] * nums[n - 1], nums[n - 1] * nums[n - 2] * nums[n - 3])
  1. Versión del lenguaje C++
class Solution {
    
    
public:
    int maximumProduct(vector<int>& nums) {
    
    
        sort(nums.begin(), nums.end());
        int n = nums.size();
        return max(nums[0] * nums[1] * nums[n - 1], nums[n - 1] * nums[n - 2] * nums[n - 3]);
    }
};

Diez 【Resultados de envío】

  1. Versión del lenguaje Java
    inserte la descripción de la imagen aquí

  2. Versión en lenguaje C
    inserte la descripción de la imagen aquí

  3. Versión en lenguaje Python
    inserte la descripción de la imagen aquí

  4. Versión del lenguaje C++
    inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/IronmanJay/article/details/132288403
Recomendado
Clasificación