各位相加

🎯 问题描述(来源于LeetCode)

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

思路分析

原本想着先暴力破解再优化的,但一看下面的提升说,可以只用O(1)O(1)时间就可实现。直接就开始观察。最后列表一看,就发现规律了:

0 a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8]
0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18
19 20 21 22 23 24 25 26 27

💻 代码实现

1
2
3
4
5
6
class Solution:
def addDigits(self, num: int) -> int:
if num==0:
return 0
a=[1,2,3,4,5,6,7,8,9]
return a[num%9-1]

📊 性能分析

提交结果

  • 运行时间:0ms击败100.00%
  • 内存消耗:17.75MB击败5.57%

复杂度验证

  • 时间复杂度:O(1)O(1)
  • 空间复杂度:O(1)O(1)