人是一根会思考的芦苇

喜欢思考人生的菜鸟

Leetcode 258一个数的各位相加,一直加到一位数为止

给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。
分析:ab=a*10+b
ab%9=(a*10+b)%9=(9a+a+b)%9=(a+b)%9
abc=a*100+b*10+c
同理abc%9=(a+b+c)%9
观察题目规律,可以看出0…9结果为0…9
10…19结果为1…9…1
….
可以看出除了0以外,所有的结果都是1…9,可以num%9,比如38%9=2;但是18%9=0,18=1+8=9;我们可以做个简单的变换(num-1)%9+1;代码如下
Java:class Solution {
public int addDigits(int num) {
if(num==0)
return 0;
else
return((num-1)%9+1);
}
}

阅读更多
个人分类: 算法和数据结构
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

Leetcode 258一个数的各位相加,一直加到一位数为止

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭