1, 2, 5, 14, 42…
背景知識
組合公式:𝐶(n, r)= n!/r!(n-r)!
卡塔蘭數:𝐶𝑛=𝐶(2𝑛, 𝑛)/(n+1)=(2n)!/(n+1)!n!, n = 1, 2, 3, …
1 | return int((math.factorial(2*n) / (math.factorial(n+1) * math.factorial(n)))) |
理解問題
- 22. Generate Parentheses
- 96. Unique Binary Search Trees
- 所有在n × n格點中不越過對角線的最短路徑的個數
- 將n + 2邊的凸多邊形分成三角形的方法個數
思路視覺化
(0,0)>(n,n)方格,不越過對角線個數
𝐶𝑛=(2n)!/(n+1)!n!, n = 6 (5條線6個點)
=12!/7!6!
=132
Python
- Formula
TC: O(n), SC: O(1)
1 | from math import factorial |
- DP
TC: O(nˆ2), SC: O(n)
1 | class Solution: |
Java
1 | class CatalnNumber { |
相似
- 22
Number is catanlan
1(1), 2(2), 3(5), 4(14)
1 | from typing import List |
1 | class Solution: |
1 | class Solution(object): |
1 | class Solution: |
如果你覺得這篇文章很棒,請你不吝點讚 (゚∀゚)