0
点赞
收藏
分享

微信扫一扫

力扣258-各位相加-C++高效方法

孟佳 2022-02-27 阅读 27

一、运行结果

 

二、题目

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

示例 1:

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

输入: num = 0
输出: 0

提示:   0 <= num <= 231 - 1

三、思路

在sum函数中计算当前数字各位相加的结果并返回,判断相加结果是否为个位数,若不为各位数,则继续调用sum方法进行计算各位和,直至结果为不大于10。

四、代码

class Solution {
public:
    int addDigits(int num) {
        int ans = num;
        while(num >= 10){
            ans = sum(num);
            num = ans;  //将相加的结果重新赋给num进行循环判断
        }
        return ans;
    }

    int sum(int num){  //处理一个各位相加,返回相加的结果
        int ret = 0;
        while(num != 0){
            ret += num % 10;
            num /= 10;
        }
        return ret; 
    }
};
举报

相关推荐

0 条评论