JAVA encuentra la subsecuencia más pequeña y O (N)

Tema:
Dada una secuencia de números enteros (positivos y negativos), calcular la suma mínima de subsecuencias requiere una complejidad de tiempo de o (n)

solución java

import java.util.Scanner;

public class Main {
    
    
	public static void main(String[] args) {
    
    
		//获取控制台输入
		Scanner sc = new Scanner(System.in);
		while (sc.hasNext()) {
    
    
			String str = sc.nextLine();
			String[] split = str.split(",");
			int[] arr = stringToInt(split);
			int minSubSequenceSum = minSubSequenceSum(arr);
			System.out.println(minSubSequenceSum);
		}

	}
	//求最小和
	static int minSubSequenceSum(int[] split) {
    
    
		int thisSum =0;
		//注意最小和minSum不能初始化为0
		int minSum = split[0];
		for (int i = 0; i < split.length; i++) {
    
    
			thisSum += split[i];
			if (thisSum<minSum) {
    
    
				minSum = thisSum;
			} else if (thisSum > 0) {
    
    
				thisSum = 0;
			}
		}
		return minSum;
	}
	//字符串数组转int数组
	static int[] stringToInt(String[] arrs){
    
    
	    int[] ints = new int[arrs.length];
	    for(int i=0;i<arrs.length;i++){
    
    
	        ints[i] = Integer.parseInt(arrs[i]);
	    }
	    return ints;
	}
}

P: ¿Por qué no se pueden inicializar el mínimo y minSum en 0?
Respuesta: Secuencia de entrada 1, 2, 3, 4, la salida correcta es 1. Si la suma mínima minSum se inicializa a 0, entonces thisSum siempre será mayor que minSum, y finalmente se emite 0, ¡un error! !
Pregunta: ¿Por qué thisSum> 0 en la línea 25 de código en lugar de thisSum> minSum?
R: Verifique el cuarto conjunto de muestras de prueba. Si es mayor que minSum, al pasar a 1, thisSum = -1, minSum = -2 Cuando thisSum se restablece a 0, la salida del resultado final es -3, ¡error! ! !
Preste atención a la diferencia entre el tercer grupo y el cuarto grupo de datos de prueba.

Datos de prueba

Entrada 1, 2, 3
salida 1

Entrada
-2, 3, 4 Salida -2

Entrada-2, 3, -4
Salida-4

Entrada -2, 1, -3
Salida-4

Supongo que te gusta

Origin blog.csdn.net/root_zhb/article/details/108855884
Recomendado
Clasificación