LeetCode探索之旅(72)-258数字叠加

今天继续刷LeetCode,第258题,数字叠加。

分析:
这个题目简单,可以通过循环的方式,不断累加每位数字,并求和。再通过递归的方式判断是否是个位数。但是题目要求是否可以不用递归以及循环的方式实现,看了别人的代码后,知道通过分析数据结果,然后找规律。

问题:
1、代码的优化,尽量少用几个循环,少添加变量;
2、如果不用递归以及循环,那么只有通过找到数字的规律才可以。

附上C++代码1:

class Solution {
public:
    int addDigits(int num) {
        int s=0;
        if(num<10)
            return num;
        while(num)
        {
            int temp=num%10;
            s+=temp;
            num=num/10;
        } 
        num=s;
        return addDigits(num);
    }
};

附上C++代码2:

class Solution {
public:
    int addDigits(int num) {
        if(num==0)
            return 0;
        return (num-1)%9+1;
    }
};

附上Python代码:

class Solution:
    def addDigits(self, num: int) -> int:
        if len(str(num))==1:
            return num
        sum=0
        for i in str(num):
            sum+=int(i)
            if sum>9:
                sum-=9
        return sum
        

猜你喜欢

转载自blog.csdn.net/JerryZengZ/article/details/89204522