Problem Description:
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?
Analysis:
本题和上题类似118. Pascal's Triangle。代码如下:
Code:
class Solution {
public List<Integer> getRow(int rowIndex) {
int[] temp = new int[rowIndex + 1];
for(int i = 0; i < rowIndex + 1; i++) {
if(i == 0) {
temp[i] = 1;
} else {
int mid = -1;
for(int j = 0; j < i + 1; j++) {
if(j - 1 >= 0 && temp[j] > 0) {
if(mid == -1) {
mid = temp[j];
temp[j] = temp[j - 1] + temp[j];
} else {
int ans = temp[j];
temp[j] = mid + temp[j];
mid = ans;
}
} else {
temp[j] = 1;
}
}
}
}
List<Integer> res = new ArrayList<>();
for(int i = 0; i < rowIndex + 1; i++) {
res.add(temp[i]);
}
return res;
}
}