LeetCode Pascal's Triangle II
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 { 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); } }