Given an indexK, ReturnKTh row of the Pascal's triangle.
For example, givenK= 3,
Return[1,3,3,1]
.
Note:
Cocould you optimize your algorithm to use onlyO(K) Extra space?
For the solution, refer to the code of the original first question and modify it a little.
public class Solution { List<List<Integer>> lastNumberlist = new ArrayList<List<Integer>>(); public List<Integer> getRow(int rowIndex) { rowIndex++; if (rowIndex==0) { return null; } ArrayList<Integer> list=new ArrayList<>(); int num1,num2; list.add(1); lastNumberlist.add(list); if (rowIndex==1) { return lastNumberlist.get(lastNumberlist.size()-1); } list=new ArrayList<>(); list.add(1); list.add(1); lastNumberlist.add(list); if (rowIndex==2) { return lastNumberlist.get(lastNumberlist.size()-1); } for (int i = 3; i <=rowIndex ; i++) { int[] newline=new int[i]; for (int j = 0; j <= i/2; j++) { if (j==0) { newline[j]=1; newline[i-1-j]=1; }else { num1=lastNumberlist.get(lastNumberlist.size()-1).get(j); num2=lastNumberlist.get(lastNumberlist.size()-1).get(j-1); newline[j]=num1+num2; newline[i-1-j]=num1+num2; } } list=new ArrayList<>(); for (int j : newline) { list.add(j); } lastNumberlist.add(list); } return lastNumberlist.get(lastNumberlist.size()-1); }}
Leetcode Pascal's triangle II