Given an integer rowIndex, return the rowIndexth (0-indexed) row of the Pascal's triangle.
In Pascal's triangle, each number is the sum of the two numbers directly above it as shown:
Example 1:
Input: rowIndex = 3
Output: [1,3,3,1]
Example 2:
Input: rowIndex = 0
Output: [1]
Example 3:
Input: rowIndex = 1
Output: [1,1]
Constraints:
- 0 <= rowIndex <= 33
Follow up: Could you optimize your algorithm to use only O(rowIndex) extra space?
class Solution {
public List<Integer> getRow(int rowIndex) {
rowIndex++;
List<List<Integer>> lists = new ArrayList<>();
if(rowIndex==0){
List<Integer> list = new ArrayList<>();
return list;
}
if(rowIndex>=1){
List<Integer> list = new ArrayList<>();
list.add(1);
lists.add(list);
}
if(rowIndex>=2){
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(1);
lists.add(list);
}
if(rowIndex>=3){
for(int i=3;i<=rowIndex;i++){
List<Integer> list = new ArrayList<>();
List<Integer> pre = lists.get(i-1-1);
list.add(1);
for(int j=1;j<i-1;j++){
list.add(pre.get(j-1)+pre.get(j));
}
list.add(1);
lists.add(list);
}
}
return lists.get(rowIndex-1);
}
}