最近寫Visa OA遇到的問題
問題:
假如有一個數字n, 你每次可以拿1個或3個請問有幾種不同組合?
範例1:
n = 7
所有的組合有9種, 回傳9:
[1, 1, 1, 1, 1, 1, 1]
[1, 1, 1, 1, 3]
[1, 1, 1, 3, 1]
[1, 1, 3, 1, 1]
[1, 3, 1, 1, 1]
[3, 1, 1, 1, 1]
[1, 3, 3]
[3, 1, 3]
[3, 3, 1]
我用背包問題的解法, time complexity 是O(n), 可是會timeout, 因為 1 <= n <= 1e9,想請問一下有沒有log(N)的解法?
感謝大家