1. 程式人生 > >119. Pascal's Triangle II - Easy

119. Pascal's Triangle II - Easy

Given a non-negative index k where k ≤ 33, return the kth index row of the Pascal's triangle.

Note that the row index starts from 0.


In Pascal's triangle, each number is the sum of the two numbers directly above it.

Example:

Input: 3
Output: [1,3,3,1]

Follow up:

Could you optimize your algorithm to use only O(k) extra space?

 

brute force,同Pascal's Triangle,https://www.cnblogs.com/fatttcat/p/10054249.html

注意這題的下標和上題不同,這裡的input rowIndex = 5 返回的是原陣列中的第5行,即下標為4對應的陣列。

Input: 5
Output:
[
     [1],
    [1,1],
   [1,2,1],
  [1,3,3,1],
 [1,4,6,4,1]
]

因此外層迴圈應該從0 ~ rowIndex + 1

另外還要注意!由於從始至終只用了一個arraylist,在設第一個元素為1的時候,不能只用list.add(1),而應該用list.add(0, 1),否則會在list後追加1,而不是在index=0的位置加1

e.g. rowIndex = 3

i = 0   res = 1
i = 1    res = 1 1
i = 2   res = 1 1 1 -> 1 2 1
i = 3   res = 1 1 2 1 -> 1 3 2 1 -> 1 3 3 1

時間:O(N^2),空間:O(K)

class Solution {
    
public List<Integer> getRow(int rowIndex) { List<Integer> res = new ArrayList<>(); if(rowIndex < 0) return res; for(int i = 0; i < rowIndex + 1; i++) { res.add(0, 1); for(int j = 1; j < res.size() - 1; j++) res.set(j, res.get(j) + res.get(j + 1)); } return res; } }