Leetcode leetcode 670. Intercambio máximo

inserte la descripción de la imagen aquí

Enlace del tema y descripción.

https://leetcode.cn/problems/maximum-swap/

Dado un número entero no negativo, puedes intercambiar dos dígitos cualesquiera del número como máximo una vez. Devuelve el valor máximo que puedes obtener.

Ejemplo 1:

Entrada: 2736
Salida: 7236
Explicación: Intercambie el número 2 y el número 7.
Ejemplo 2:

Entrada: 9973
Salida: 9973
Explicación: No se requiere intercambio.
Aviso:

El rango del número dado es [0, 10^8]

Palabras clave: intercambio de valor codicioso

método uno:

ejecutar captura de pantalla

inserte la descripción de la imagen aquí

el código

Para hacer que el número sea el más grande, es fácil pensar en poner los números más grandes al frente y los números más pequeños detrás, recorrerlo una vez, tomar los n dígitos más grandes y compararlos.

Cambia la forma de pensar, porque el número más grande siempre debe estar delante del grande, y el pequeño detrás; y solo podemos coger uno, por lo que sólo necesitamos encontrar el número más grande e intercambiarlo con el de delante. valor que es menor que el frente


	public int maximumSwap(int num) {
    
    
		char[] charArray = String.valueOf(num).toCharArray();
		int n = charArray.length;
		int maxIdx = n - 1;
		int idx1 = -1, idx2 = -1;
		for (int i = maxIdx; i >= 0; i--) {
    
    
			if (charArray[i] > charArray[maxIdx]) {
    
    
				maxIdx = i;
			} else if (charArray[i] < charArray[maxIdx]) {
    
    
				idx1 = i;
				idx2 = maxIdx;
			}
		}
		if (idx1 >= 0) {
    
    
			swap(charArray, idx1, idx2);
			return Integer.parseInt(new String(charArray));
		} else {
    
    
			return num;
		}
	}
	public void swap(char[] charArray, int i, int j) {
    
    
		char temp = charArray[i];
		charArray[i] = charArray[j];
		charArray[j] = temp;
	}



fin

Bienvenido a comunicarse en el área de comentarios, registrarse todos los días y ¡apresúrate! ! !

Supongo que te gusta

Origin blog.csdn.net/qq_35530042/article/details/126826327
Recomendado
Clasificación