Leetcode刷題python(3)
阿新 • • 發佈:2018-12-12
各位相加
#題目
給定一個非負整數 num,反覆將各個位上的數字相加,直到結果為一位數。
示例:
輸入: 38 輸出: 2 解釋: 各位相加的過程為:3 + 8 = 11, 1 + 1 = 2。 由於 2 是一位數,所以返回 2。 進階: 你可以不使用迴圈或者遞迴,且在 O(1) 時間複雜度內解決這個問題嗎?
#解答
class Solution: def addDigits(self, num): """ :type num: int :rtype: int """ num_str=str(num) while len(num_str)>1: num_list=[] for i in range(len(num_str)): num_list.append(int(num_str[i])) num=sum(num_list) num_str=str(num) return num ``` 還是將數值型轉為字串,發現自己只會用簡單的迴圈,弱爆了! 進階問題還沒想到方法去解決。