LeetCode 258. Add Digits 题解(C++)

来源:互联网 发布:淘宝买日系钢笔的店铺 编辑:程序博客网 时间:2024/05/28 06:06

LeetCode 258. Add Digits 题解(C++)


题目描述

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

示例

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

限制条件

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

思路

  • 这道题使用数根的公式,就可以达到O(1)的时间复杂度。
  • 数根的公式如下:
    这里写图片描述
    简化后的结果为这里写图片描述
    有关数根的详细资料可查询https://en.wikipedia.org/wiki/Digital_root

代码

我的代码

class Solution{public:    int addDigits(int num)     {        while (num / 10 != 0)        {            num = (num / 10) + (num % 10);        }        return num;    }};

使用数根公式的代码

class Solution{public:    int addDigits(int num)     {        return 1 + (num - 1) % 9;    }};
0 0
原创粉丝点击