Question:
Given an index k, return the kth row of the Pascal's triangle.
For example, given k = 3,
Return [1,3,3,1]
.
Note:
Could you optimize your algorithm to use only O(k) extra space?
public class Solution {
public ArrayList<Integer> getRow(int rowIndex) {
ArrayList<Integer> prev = new ArrayList<Integer>();
ArrayList<Integer> current = new ArrayList<Integer>();
for (int i = 0; i <= rowIndex; i++) {
if (i == 0) {
current.add(1);
} else {
for (int j = 0; j <= i; j++) {
if (j == 0 || j == i) {
current.add(1);
} else {
current.add(prev.get(j - 1) + prev.get(j));
}
}
}
ArrayList<Integer> temp = prev;
prev = current;
current = temp;
current.clear();
}
return prev;
}
}
或者在前一个题的基础上直接拿取最后一个:
public class Solution {
public ArrayList<Integer> getRow(int rowIndex) {
ArrayList<ArrayList<Integer>> results = new ArrayList<>();
ArrayList<Integer> ini = new ArrayList<>();
ini.add(1);
results.add(ini);
for(int i=1;i<=rowIndex;i++){
ArrayList<Integer> prev = results.get(i-1);
ArrayList<Integer> cur = new ArrayList<>();
cur.add(1);
for(int j=1;j<i;j++){
cur.add(prev.get(j)+prev.get(j-1));
}
cur.add(1);
results.add(cur);
}
return results.get(results.size()-1);
}
}