You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
🔥 Add Digits 🔥 || 5 Solutions || Simple Fast and Easy
The problem, widely known as digit root problem, has a congruence formula
Solution - 1 Mathematical Congruence Formula
classSolution {
intaddDigits(intnum) {
if (num==0) return0;
if (num%9==0) return9;
returnnum%9;
}
}
Solution - 2 Two Pointers
classSolution {
intaddDigits(intnum) {
while (num>9) {
int leftNum =num~/10;
int rightNum =num%10;
num= leftNum + rightNum;
}
returnnum;
}
}
Solution - 3 Using Array
classSolution {
List<int> digits(intnum) {
List<int> result = [];
if (num==0) {
return [0];
}
while (num!=0) {
result.add(num%10);
num~/=10;
}
return result;
}
intaddDigits(intnum) {
var digitList =digits(num);
while (digitList.length >1) {
int sum =0;
for (int d in digitList) {
sum += d;
}
digitList =digits(sum);
}
return digitList[0];
}
}
Solution - 4
classSolution {
intaddDigits(intnum) {
int sum =0;
if (num==0) {
return0;
}
while (num>0) {
if ((sum +num%10) >9) {
sum =1+ (sum +num%10) %10;
} else
sum +=num%10;
num=num~/10;
}
return sum;
}
}
Solution - 5 Recursion
classSolution {
intaddDigits(intnum) {
String s =num.toString();
int sum =0;
for (int i =0; i < s.length; i++) {
sum += s[i].codeUnitAt(0) -'0'.codeUnitAt(0);
}
if (sum >9) returnaddDigits(sum);
return sum;
}
}