1. 程式人生 > >劍指Offer題解【Python版】

劍指Offer題解【Python版】

題目連結

9. Fizz Buzz 問題

給你一個整數n. 從 1 到 n 按照下面的規則列印每個數:

  • 如果這個數被3整除,列印fizz.
  • 如果這個數被5整除,列印buzz.
  • 如果這個數能同時被35整除,列印fizz buzz.

樣例

比如 n = 15, 返回一個字串陣列:

[
  "1", "2", "fizz",
  "4", "buzz", "fizz",
  "7", "8", "fizz",
  "buzz", "11", "fizz",
  "13", "14", "fizz buzz"
]

挑戰

Can you do it with only one if

 statement?

class Solution:
    """
    @param n: An integer
    @return: A list of strings.
    """

    def fizzBuzz(self, n):
        # write your code here
        res = []
        for i in range(1, n + 1):
            if i % 15 == 0:
                res.append("fizz buzz")
            elif i % 3 == 0:
                res.append("fizz")
            elif i % 5 == 0:
                res.append("buzz")
            else:
                res.append(str(i))
        return res

366. 斐波納契數列

查詢斐波納契數列中第 N 個數。

所謂的斐波納契數列是指:

  • 前2個數是 0 和 1 。
  • 第 i 個數是第 i-1 個數和第i-2 個數的和。

斐波納契數列的前10個數字是:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ...

樣例

給定 1,返回 0

給定 2,返回 1

class Solution:
    """
    @param n: an integer
    @return: an ineger f(n)
    """

    def fibonacci(self, n):
        # write your code here
        f, g = 0, 1
        for i in range(1, n):
            f, g = g, f + g
        return f