【66】más uno【LeetCode】

1. Descripción del tema

Dado un  número entero  no negativo representado por una  matriz  no vacía de números enteros, agregue uno a ese número.

El dígito más alto se almacena en la primera posición de la matriz y cada elemento de la matriz almacena solo un número.

Puede suponer que este entero no comenzará con cero excepto el entero 0.

Ejemplo 1:

Entrada: dígitos = [1,2,3]
Salida: [1,2,4]
Explicación: La matriz de entrada representa los dígitos 123.

Ejemplo 2:

Entrada: dígitos = [4,3,2,1]
Salida: [4,3,2,2]
Explicación: La matriz de entrada representa el número 4321.

Ejemplo 3:

Entrada: dígitos = [0]
Salida: [1]

insinuación:

  • 1 <= digits.length <= 100

  • 0 <= digits[i] <= 9

Ideas:

De acuerdo al significado de la pregunta, agrega uno, sí, es muy importante agregar uno, porque es solo uno, por lo que solo hay dos situaciones posibles:

  1. Agregue uno a los números que no sean 99;
  2. Número 99.

Agregue uno para obtener el dígito decimal 00. Si no hay acarreo en la operación de suma, la operación finaliza y el acarreo solo será uno.

Por lo tanto, solo es necesario juzgar si hay un acarreo y simular su método de acarreo, como agregar 11 dígitos al dígito de las decenas y establecerlo en 00, y luego repetir hasta que se juzgue que no hay más acarreo, luego salir del bucle y devolver el resultado.

Luego, hay algunos casos especiales en los que cuando hay números como 9999 y 999999, el bucle también debe llevarse al final. En este caso, debe ser llevado manualmente por uno.

2. Código central

// @solution-sync:begin
class Solution {
    public int[] plusOne(int[] digits) {
        int len = digits.length - 1;
        for (int i = len; i >= 0; i--) {
            digits[i]++;
            digits[i] = digits[i] % 10;
            if (digits[i] != 0)
                return digits;
        }
        //如果所有位的值都是9需要进位,则长度+1
        digits = new int[digits.length + 1];
        //首位的值设置为1,其余位输出为0
        digits[0] = 1;
        return digits;
    }
}

3. Código de prueba​​​​​​​

import jdk.nashorn.internal.ir.ReturnNode;

import java.lang.StringBuilder;

// @solution-sync:begin
class Solution {
    public int[] plusOne(int[] digits) {
        int len = digits.length - 1;
        for (int i = len; i >= 0; i--) {
            digits[i]++;
            digits[i] = digits[i] % 10;
            if (digits[i] != 0)
                return digits;
        }
        //如果所有位的值都是9需要进位,则长度+1
        digits = new int[digits.length + 1];
        //首位的值设置为1,其余位输出为0
        digits[0] = 1;
        return digits;
    }
}
// @solution-sync:end

class Main {

    public static void main(String[] args) {
        int[] digits = new int[]{1, 2, 3};

        int[] result = new Solution().plusOne(digits);
        System.out.println(toString(result));
    }

    private static String toString(int[] arr) {
        StringBuilder buf = new StringBuilder();
        buf.append("[");
        for (int i = 0; i < arr.length; i++) {
            if (i != 0)
                buf.append(",");
            buf.append(arr[i]);
        }
        buf.append("]");
        return buf.toString();
    }

}

Supongo que te gusta

Origin blog.csdn.net/qq_45037155/article/details/124370093
Recomendado
Clasificación