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);
}
}

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

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试