切換
舊版
前往
大廳
主題

LeetCode - 119. Pascal's Triangle II 解題心得

Not In My Back Yard | 2020-08-21 00:00:09 | 巴幣 2 | 人氣 248

題目連結:


題目意譯:
給定一整數 rowIndex,回傳巴斯卡三角形第 rowIndex 列的數字。

注意,列數的索引值從 0 開始。

在巴斯卡三角形中,每個數字是其上方兩個數字之和。

進階:
可以將演算法最佳化成只需 O(rowIndex) 的額外空間嗎?

限制:
0 ≦ rowIndex ≦ 40



範例測資:
範例 1:
輸入: rowIndex = 3
輸出: [1,3,3,1]

範例 2:
輸入: rowIndex = 0
輸出: [1]

範例 3:
輸入: rowIndex = 1
輸出: [1,1]


解題思維:
將巴斯卡三角形往左靠齊,如下:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
……

此時,位於第 R 列第 C 行(R 、 C 皆從 0 開始數)的數字,其值恰為
R! ÷ (C! × (R - C)!)
即從 R 個物品取 C 個之方法數。說明可以看維基

因此,可以直接掃過第 rowIndex 列的 rowIndex + 1 個位置,並直接求出那些位置的值。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作