Directorio de artículos
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] <= 1000− 1000<=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]
- 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;
}
}
}
- 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]);
}
- 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])
- 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】
-
Versión del lenguaje Java
-
Versión en lenguaje C
-
Versión en lenguaje Python
-
Versión del lenguaje C++