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

版权声明:未经本人允许,不得转载本博客,转载请注明地址 https://blog.csdn.net/qq_34691713/article/details/80349611

给定一个非负整数 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);
}
}

阅读更多
想对作者说点什么?

博主推荐

换一批

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