Leetcode No.258各位相加

题目大意

给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。
示例

输入: 38
输出: 2
解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。

思路

由于最后结果返回的是一位数,所以结果一定是对9取余数。举个例子对于整数"321",除了个位数字1以外,每次进位都是因为10 = 9+1。所以只需要指导321发生了几次进位即可。

代码一:数学方法

 public int addDigits(int num) {
        return (num-1)%9+1;
    }

注意:用num-1%9为了统一9的整数倍,计算完以后再加回1对结果没有影响,实际上可以理解为向个位借了1,之后又还回去。
运行时间2ms,击败98.25%。

代码二:循环

此题可以用循环解决,每次算出各位数组之和与10比较,判断和是否为1位数,不符合继续计算。

public int addDigits(int num) {
        int sum = num;
        while(sum>=10) {
            sum = solve(sum);
        } 
        return sum;
    }
    private int solve(int num) {
        int res = 0;
        while(num>0) {
            res += num%10;
            num/=10;
        }
        return res;
    }

运行时间3ms,击败86.03%。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 共修功课第90天:对照老师提出的四项原则来检视自己的成长。 四项原则: 1、学会有效的沟通,了解对方家族的价值观;...
    阿红阿火阅读 185评论 0 0
  • 从9月份上岗到现在跟在青椒上课已经快半年了,期间一直都在周三按时听课打卡,期间有关学生心理的课程、教师蓝图...
    清河1074杜海潮阅读 346评论 0 1
  • 《四川农村一日游》 四川的农村相比北方的农村,首先在居住的环境和方式与众不同。 北方是群居,人口都...
    吏冰雪阅读 558评论 0 0
  • 一个人知道自己为什么而活,就可以忍受任何一种生活。 ——尼采 有人问我为什...
    冠世墨玉yanzi阅读 763评论 0 1

友情链接更多精彩内容