每日leetcode-陣列-412. Fizz Buzz
阿新 • • 發佈:2021-07-01
分類:字串-字元與數字串間轉換
題目描述:
寫一個程式,輸出從 1 到 n 數字的字串表示。
1. 如果n是3的倍數,輸出“Fizz”;
2. 如果n是5的倍數,輸出“Buzz”;
3.如果n同時是3和5的倍數,輸出 “FizzBuzz”。
解題思路:直接遍歷判斷,取餘數
class Solution: def fizzBuzz(self, n: int) -> List[str]: L = [] for i in range(1,n+1): if i % 3 == 0 and i % 5 != 0: L.append('Fizz') elif i % 5 == 0 and i % 3 != 0: L.append('Buzz') elif i % 5 == 0 and i % 3 == 0: L.append('FizzBuzz') else: L.append(str(i)) return L
時間複雜度:O(n)遍歷
空間複雜度:O(n) 用了一個數組來存結果
程式碼優化:要先判斷是否同時是3和5的倍數,不然會在判斷3的時候就直接判斷為3的結果
class Solution: def fizzBuzz(self, n: int) -> List[str]: L = [] for i in range(1,n+1): if i % 15 == 0 : L.append('FizzBuzz') elif i % 3 == 0 : L.append('Fizz') elif i % 5 == 0 : L.append('Buzz') else: L.append(str(i)) return L