題目:給乙個非負整數 num,反覆新增所有的數字,直到結果只有乙個數字。
例如:設定 num = 38,過程就像: 3 + 8 = 11, 1 + 1 = 2。 由於 2 只有1個數字,所以返回它。
高階:你可以不用任何的迴圈或者遞迴演算法,在 o(1) 的時間內解決這個問題麼?
思路:巢狀兩次迴圈即可
**:
#!/usr/bin/env python
# encoding:utf-8
"""__author__:adam
功能:非負整數各位相加
第一種方法
"""class
solution
(object):
defadddigits
(self,num):
""" :type num:str
:type :int
"""sum_one = 0
num_one = 0
while(1):
while(num):
num_one = num % 10
sum_one += num_one
num /= 10
if(sum_one < 10):
break
num = sum_one
sum_one = 0
return sum_one
if __name__ == "__main__":
m = solution()
m.adddigits(1784)
方法二:借鑑他人經驗,假設輸入乙個四位數num,各位分別位a,b,c,d;
寫成:num = 1000*a + 100*b + 10*c + d = (999*a + 99*b + 9*c )+ (a + b + c +d)
num除以9的餘數等於(a+b+c+d)除以9餘數結果一樣
#!/usr/bin/env python
# encoding:utf-8
"""__author__:adam
功能:非負整數各位相加
第一種方法
"""class
solution
(object):
defadddigits
(self,num):
""" :type num:str
:type :int
"""return
1 + (num -1) % 9;[參考鏈結](
LeetCode題目以及答案
1 給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數,你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 複雜版 usr bin python coding...
LeetCode題目以及答案(9)
題目 有兩種特殊字元。第一種字元可以用一位元0來表示。第二種字元可以用兩位元 10 或 11 來表示。現給乙個由若干位元組成的字串。問最後乙個字元是否必定為乙個一位元字元。給定的字串總是由0結束。示例 1 輸入 bits 1,0,0 輸出 true 解釋 唯一的編碼方式是乙個兩位元字元和乙個一位元字...
leetcode全部題目答案
32.longest valid parentheses given a string containing just the characters and find the length of the longest valid well formed parentheses substring....