Add Digits|leetcode 258【Java解題レポート】
Given a non-negative integer
For example:
Given
【問題解決の考え方】:
テーマガイドの一般的な考え方に従って、皆さんを取り出して、1桁の数字になるまで加算します.
【コード実装】:
【最適化解法】:
このような数ABCDEがある場合、ABCDE=A*10000+B*1000+C*100+D*10+E=(A+B+C+D+E)+(A*9999+B*999+C*99+D*9+E)があると、ABCDE%9=(A+B+C+D+E)%9となり、ABCDE%9の結果が1桁となることは良好であるが、ここでは(A+B+C+D+E)%9が1であれば0となる点に注意が必要である.従ってABCDE%9=(A+B+C+D+E-1)%9+1を用いることができ,これは問題を完璧に解決した.
最後に、皆さんの批判と証言を歓迎します.
num
, repeatedly add all its digits until the result has only one digit. For example:
Given
num = 38
, the process is like: 3 + 8 = 11
, 1 + 1 = 2
. Since 2
has only one digit, return it. 【問題解決の考え方】:
テーマガイドの一般的な考え方に従って、皆さんを取り出して、1桁の数字になるまで加算します.
【コード実装】:
public class Solution {
public int addDigits(int num) {
int sum = num;
while(num > 9) { // ,
sum = 0;
while(num > 9) { // num( )
sum += num % 10;
num /= 10;
}
sum += num; //
num = sum;
}
return sum;
}
}
【最適化解法】:
このような数ABCDEがある場合、ABCDE=A*10000+B*1000+C*100+D*10+E=(A+B+C+D+E)+(A*9999+B*999+C*99+D*9+E)があると、ABCDE%9=(A+B+C+D+E)%9となり、ABCDE%9の結果が1桁となることは良好であるが、ここでは(A+B+C+D+E)%9が1であれば0となる点に注意が必要である.従ってABCDE%9=(A+B+C+D+E-1)%9+1を用いることができ,これは問題を完璧に解決した.
public class Solution {
public int addDigits(int num) {
return 1+(num-1) % 9;
}
}
最後に、皆さんの批判と証言を歓迎します.