Sumar Dígitos
Este problema consiste en, dado un entero num, sumar todos sus dígitos repetidamente hasta obtener un solo dígito y regresarlo.
Solución
class Solution {
public:
int addDigits(int num) {
while (num >= 10) {
int sum = 0;
while (num > 0) {
sum += num % 10;
num /= 10;
}
num = sum;
}
return num;
}
};
Mientras el número tenga más de un dígito se suman todos sus dígitos y el resultado se convierte en el nuevo número, repitiendo el proceso hasta obtener un solo dígito.
Una mejor solución usa la raíz digital, que equivale a 1 + (num - 1) % 9:
class Solution {
public:
int addDigits(int num) {
if (num == 0) {
return 0;
}
return 1 + (num - 1) % 9;
}
};
Esta fórmula obtiene el resultado en tiempo constante sin iterar.