Ingrese una matriz de enteros, la matriz tiene un negativo positivo, pero también. Uno o matriz de enteros más continua compuesta de un subconjunto. Buscando el máximo de todos los sub-series y.
Requiere tiempo complejidad es O (n).
Ejemplo 1:
De entrada: nums = [-2,1, -3,4, -1,2,1, -5,4]
de salida: 6
Explicación: subarreglo continua [4, -1,2,1], y el más, 6.
consejos:
. 1 <= arr.Length <= 10. 5 ^
-100 <= ARR [I] <= 100
Nota: Los mismos presentan problemas de título 53 y la estación maestra: https: //leetcode-cn.com/problems/maximum-subarray/
Ideas de resolución de problemas (programación dinámica):
max: el máximo valor y la sub-serie, el valor inicial del primer elemento, suma: la corriente sub-serie y el valor inicial del primer elemento.
A través de la matriz, el valor actual de la suma se determina, y si es inferior a 0, el elemento actual desde el principio de nuevo acumulada, y actualiza los valores de max
la implementación del código:
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int len=nums.size();
int max=nums[0];
int sum=max;
for(int i=1;i<len;++i){
if(sum<0){
sum=0;
}
sum+=nums[i];
if(max<sum){
max=sum;
}
}
return max;
}
};