题目:258. 各位相加
链接:https://leetcode-cn.com/problems/add-digits
问题:
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。 示例: 输入: 38 输出: 2 解释: 各位相加的过程为:3 8 = 11, 1 1 = 2。由于 2 是一位数,所以返回 2。 进阶: 你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗?
解题:
1、只要num大于9,则每位数进行相加,将和赋值给num。
2、num为0时,返回0;
num大于0时,结果依次为1、2、3、...、9、1、2、...、9
规律为(num - 1) % 9 1
代码:
代码语言:javascript复制class Solution(object):
def addDigits(self, num):
"""
:type num: int
:rtype: int
"""
# return 0 if num == 0 else (num - 1) % 9 1
res = num
while res >= 10:
res = sum(map(int, str(res)))
return res
PS:刷了打卡群的题,再刷另一道题,并且总结,确实耗费很多时间。如果时间不够,以后的更新会总结打卡群的题。
PPS:还是得日更呀,总结一下总是好的。