LeetCode--258--各位相加*
阿新 • • 發佈:2018-09-23
給定 -- style 由於 type 返回 col div 整數
問題描述:
給定一個非負整數 num
,反復將各個位上的數字相加,直到結果為一位數。
示例:
輸入:38
輸出: 2 解釋: 各位相加的過程為:3 + 8 = 11
,1 + 1 = 2
。 由於2
是一位數,所以返回 2。
進階:
你可以不使用循環或者遞歸,且在 O(1) 時間復雜度內解決這個問題嗎?
方法1:
1 class Solution(object): 2 def addDigits(self, num): 3 """ 4 :type num: int 5 :rtype: int 6 """7 num_list = [] 8 if num // 10 == 0: 9 return num 10 num_list = self.jisuan(num,num_list) 11 while len(num_list) != 1: 12 res = 0 13 for i in num_list: 14 res += i 15 num_list = self.jisuan(res,[]) 16 returnres 17 def jisuan(self,num,num_list):#把[38]變成[3,8] 18 while num !=0: 19 g = num %10 20 num = num // 10 21 num_list.append(g) 22 return num_list
官方:amazing
1 class Solution(object): 2 def addDigits(self, num): 3 """ 4 :type num: int5 :rtype: int 6 """ 7 s = num % 9 8 return s if num==0 or s!=0 else 9
官方2:
1 class Solution(object): 2 def addDigits(self, num): 3 a = str(num) 4 while len(a)-1: 5 a = sum([int(i) for i in str(a)]) 6 a = str(a) 7 return int(a)
2018-09-22 16:56:58
LeetCode--258--各位相加*