• Add Digits


    Given a non-negative integer num, repeatedly add all its digits until the result has only one digit.

    For example:

    Given num = 38, the process is like: 3 + 8 = 111 + 1 = 2. Since 2 has only one digit, return it.

    Follow up:
    Could you do it without any loop/recursion in O(1) runtime?

    Analyse: 

    1. trivival solution:

     1 class Solution {
     2 public:
     3     int addDigits(int num) {
     4         while(num >= 10) num = add(num);
     5         return num;
     6     }
     7     int add(int num){
     8         int result = 0;
     9         while(num){
    10             result += num % 10;
    11             num /= 10;
    12         }
    13         return result;
    14     }
    15 };

    we can find the result after implementation:

    0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3
    4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7
    8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 请按任意键继续. . .

    so the result is (num - 1) % 9 + 1;

    class Solution {
    public:
        int addDigits(int num) {
            return (num - 1) % 9 + 1;
        }
    };
  • 相关阅读:
    后渗透
    Msf小结
    安全狗文件绕过
    文件上传漏洞
    SQL Injection(Blind)
    SQL Injection
    Linux 基础整理
    Python pip升级及升级失败解决方案
    文件包含
    信息收集
  • 原文地址:https://www.cnblogs.com/amazingzoe/p/4762241.html
Copyright © 2020-2023  润新知