标签:leetcode
Add Digits
Given a non-negative integer 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.
Follow up:
Could you do it without any loop/recursion in O(1) runtime?
Hint:
将一个数赋值为该数的各位相加和,直到该数只有一位数时,输出。
暴力求解。
class Solution { public: int addDigits(int num) { if (num < 10) return num; int tem; while (num > 9) { tem = num; num = 0; while (tem) { num += tem % 10; tem /= 10; } } return num; } };
找规律
例如,2,11,20,29 的最后答案都是2,他们与9取模都得2。
class Solution { public: int addDigits(int num) { if (num <= 9) return num; if (num % 9 == 0) return 9; return num % 9; } };
class Solution { public: int addDigits(int num) { return (num - 1)%9 + 1; } };
Given a non-negative integer 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.
Follow up:
Could you do it without any loop/recursion in O(1) runtime?
Hint:
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:leetcode
原文地址:http://blog.csdn.net/u014705854/article/details/48132361