zoukankan      html  css  js  c++  java
  • 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;
    };
    

      

  • 相关阅读:
    学习vue_01
    练习题 vue_01:
    测试
    django小结
    BBS_02day
    BBS 03day
    力扣(LeetCode)412. Fizz Buzz
    力扣(LeetCode)415. 字符串相加
    力扣(LeetCode)448. 找到所有数组中消失的数字
    力扣(LeetCode)453. 最小移动次数使数组元素相等
  • 原文地址:https://www.cnblogs.com/xingguozhiming/p/9386154.html
Copyright © 2011-2022 走看看