描述
给出一个非负整数 num,反复的将所有位上的数字相加,直到得到一个一位的整数。
您在真实的面试中是否遇到过这个题? 是
样例
给出 num = 38。
相加的过程如下:3 + 8 = 11,1 + 1 = 2。因为 2 只剩下一个数字,所以返回 2。
挑战
你可以不用任何的循环或者递归算法,在 O(1) 的时间内解决这个问题么?
这是一道找规律的数学题。多写几个数字就能发现与9的余数有关。
class Solution {
public:
/**
* @param num: a non-negative integer
* @return: one digit
*/
int addDigits(int num) {
// write your code here
return num==0?0:(num%9==0?9:(num%9));
}
};
本文介绍了一种快速解决数字位求和问题的方法。通过观察数字规律,可以避免使用循环或递归,在O(1)时间内得出结果。核心思路是利用数字与9的余数关系。

1644

被折叠的 条评论
为什么被折叠?



