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

    本题大意:给定一个非负的整数,重复地将它的各个位数相加直到结果只有一位数字。

    例如:num = 38,过程应该是:3 + 8 = 11, 1 + 1 = 2,因为2只有一位数字,就可以返回了。

    有没有可能得到o(1)复杂度的算法?

    第一种方法:循环。代码如下:

     1 int addDigits(int num) {
     2         while(num>=10){
     3             num = retDigit(num);
     4         }
     5         return num;
     6     }
     7     int retDigit(int num){
     8         int sum = 0;
     9         int tmp1 = num;
    10         int tmp2 = 0;
    11         while(tmp1>=1){
    12             tmp2 = tmp1 % 10;
    13             sum += tmp2;
    14             tmp1 = tmp1 / 10;
    15         }
    16         return sum;
    17     }

    第二种方法:找规律。代码如下:

    1 int addDigits(int num) {
    2     return num == 0 ? 0 : (num-1)%9 + 1;
    3 }
  • 相关阅读:
    MRO C3算法 super的运用
    约束 抛异常
    反射
    Ubuntu
    Vim
    Vim
    Arithmetic
    Docker-常用命令
    Docker
    Docker-LAMP开发环境
  • 原文地址:https://www.cnblogs.com/jingyuewutong/p/5600652.html
Copyright © 2011-2022 走看看