zoukankan      html  css  js  c++  java
  • LeetCode 258. Add Digits

    258. Add Digits(各位相加)

    题目:

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

      示例:

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

      进阶:
      你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗?

    思路:

      。。。不让用循环和递归,那就只能找规律了。

      假设原数为 100*a + 10*b +c,相加后是 a + b +c ,二者差值为 99*a + 9*b ,可以被9整除,行了,每次减少的都是9的倍数,直接 %9即可,剩的数就是个位数。

    代码:

     1     public static int addDigits(int num) 
     2     {
     3 
     4         if(num>9)
     5         {
     6             num=num%9;
     7             if(num==0)
     8                 return 9;
     9         }
    10         return num;   
    11     }
    View Code
  • 相关阅读:
    团队冲刺2.7
    单词接龙
    团队冲刺2.6
    梦断代码阅读笔记02
    团队冲刺2.5
    吾日三省吾身(6)
    吾日三省吾身(5)
    周计划01(20200921-20200927)
    吾日三省吾身(4)
    吾日三省吾身(3)
  • 原文地址:https://www.cnblogs.com/blogxjc/p/10941858.html
Copyright © 2011-2022 走看看