美文网首页
leetcode各位相加

leetcode各位相加

作者: simle天晴 | 来源:发表于2018-08-03 13:35 被阅读0次
    image.png

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

    示例:

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

    当看到这题的时候感觉一脸o((⊙﹏⊙))o,

    自己当时想的解法(但用了循环和判断)

    
    class Solution(object):
        def addDigits(self, num):
            while  True:
              if num>9:
                s=0
                for i in range (len(str(num))):
                    s=int(str(num)[i])+s
                num=s
              else:
                break
              
            return   num
                
    

    下面来看看这题正确的解法

    • c语言的解法
    # include  <stdio.h>
    
    int  main( int number)
    {
    
       if (number==0) return 0;
        int i =number % 9;
        return i==0?9:i;
    }
    
    
    • python 的解法
    
    def  run(num):  
        x=num and (num % 9 or 9)
        print x 
        return  x
    run(90)
    

    解法解析(下面是介绍的两种情况)

    • 当一个非负整数不能被9整除的时候(一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数),这个数的各位相加等于它的余数

    • 当一个非负整理(一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数)能被9整除的时候,它的各位相加等于9

    关于Python中的and

    image.png

    相关文章

      网友评论

          本文标题:leetcode各位相加

          本文链接:https://www.haomeiwen.com/subject/tslyvftx.html