最近写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)的解法?
感谢大家