我是靠谱客的博主 想人陪石头,最近开发中收集的这篇文章主要介绍面试算法必考(3)leetcode,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

示例:

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

思路 把数字转换为字符串再分割 ,然后转换为数字 循环相加知道值小于10

python3代码

class Solution:
    def addDigits(self, num: int) -> int:
        while num>=10:
            digit=list(map(int,str(num)))
            num=0
            for i in range(len(digit)):
                num+=digit[i]
        
        return num

时间复杂度为O(1)  利用数学归纳法推导  

class Solution:
    def addDigits(self, num: int) -> int:
        if (num%9==0) and (num!=0):
            return 9
        else:
            return num%9

c++代码  时间复杂度为O(1)

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

 

c++代码循环

class Solution {
public:
    int addDigits(int num) {
        int sum =0;
        int temp=0;
        while(num>=10)
        {
            sum=0;
            while(num)
            {
                temp=num%10;
                sum+=temp;
                num/=10;
            }
            num=sum;

        }
        return num;
        
    }   
};

 

最后

以上就是想人陪石头为你收集整理的面试算法必考(3)leetcode的全部内容,希望文章能够帮你解决面试算法必考(3)leetcode所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部