• LeetCode 258 Add Digits


    leetcode 上做了一题比较有意思,记录一下,传送门:https://leetcode.com/problems/add-digits/description/

    题目意思是:给一个正整数a,让其个位,十位,百位·····一直到最高位加起来得到另一个数字b,然后再对数字b重复这个过程,直到相加的到的数字为个位数时返回

    举例说明:

    例如输入234,返回值为2+3+4=9

    输入78,第一步7+8=15,第二步1+5=6,返回6

    多试几个发现有以下规律

    输入 输出
    29             2           
    28 1
    27 9
    26 8
    25 7
    24 6
    23 5
    22 4
    21 3
    20 2
    ······ ·······

    发现输出的数为输入数字的取余(9的倍数和小于9的数字除外)

    验证也不难,推导过程如下:

    假设输入数字为num,可将num拆分为个位数字乘以1,十位数字乘以十,百位数字乘以100,以此类推到最高位,

    数学表达式表示为:input=n1*1+n2*10+n3*100+·····(n1,n2,n3···分别表示个位数字,十位数字,百位数字····)

    执行一次之后:ouput=n1+n2+n3+·····(n1,n2,n3···分别表示个位数字,十位数字,百位数字····)

    input - output = 9 * (1/9 * n1+n2+11*n3+111*n4+·········)=9*sum(sum为一个常量)

    所以最后的代码为(javascript):

    var addDigits = function(num) {
        if(num<9) return num;
        if(num%9===0) return 9;
        return num%9;
    };
    

      

  • 相关阅读:
    Python有哪些华而不实的技巧?
    json:dumps/loads & pickl
    json模块与第三方模块的引入
    os 及 sys 模块补充
    如何白嫖视频会员
    python和SAS的思考
    5、根据进程号PID查询其服务路径
    5、安装mongodb 异常
    2、shell 判断字符串是否包含另一个字符串
    【九校2D2T1】旋转子段
  • 原文地址:https://www.cnblogs.com/xingguozhiming/p/9386154.html
Copyright © 2020-2023  润新知