LeetCode 66. Más uno (C ++)

Problema:
dado un número entero no negativo representado por una matriz de números enteros no vacía, agregue uno al número.
El dígito más alto se almacena en el primer dígito de la matriz, y cada elemento en la matriz almacena solo un solo dígito.
Puede suponer que este número entero no comenzará con cero, excepto el número entero 0.

Ejemplo 1:
Entrada: [1,2,3]
Salida: [1,2,4]
Explicación: La matriz de entrada representa el número 123.

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

Ideas para resolver problemas:
simular operaciones de suma.
Es especialmente importante tener en cuenta que al calcular números como 9,99 y 999, el número de dígitos será un bit más, que se convierte en 10,100 y 1000.

class Solution {
public:
    vector<int> plusOne(vector<int>& digits) {
        int carry = 1;
        for(int i=digits.size()-1;i>=0;i--){
            if(digits[i]+carry>9){ //判断加一后是否达到进位条件
                digits[i] = 0;
            }else {
                digits[i] += carry;
                carry = 0;
                break; //之后的数就没必要计算了
            }
        }
        if(1 == carry){ //如果一直进位的话,比如9,99和999之类的数字
            digits.insert(digits.begin(),1); //在第一个数字前插入1
        }
        return digits;
    }
};
Publicados 111 artículos originales · ganado elogios 2 · Vistas 3533

Supongo que te gusta

Origin blog.csdn.net/m0_38088647/article/details/101855553
Recomendado
Clasificación