leetcode258.各位相加

148 阅读1分钟

258.各位相加

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

不使用循环或者递归, O(1) 时间复杂度

输入: 38
输出: 2 
解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。
class Solution:
    def addDigits(self, num: int) -> int:
        return (num - 1) % 9 + 1 if num >= 10 else num
"""
观察法
根据提示,结果只有一位数,因此其可能的数字为0 - 9
可以发现输出与输入的关系为:out = (in - 1) % 9 + 1
10  1;  11  2;  12  3;  13  4;  14  5
15  6;  16  7;  17  8;  18  9;  19  1
"""