題目 | Pascal's Triangle II |
經過率 | 29.8% |
難度 | Easy |
Given an index k, return the kth row of the Pascal's triangle.java
For example, given k = 3,
Return [1,3,3,1]
.spa
Note:
Could you optimize your algorithm to use only O(k) extra space?code
首先要將Pascal's Triangle 和Pascal's Triangle II兩道題目一塊兒來看,二者都是對Pascal's Triangle的處理;blog
可是兩道題目給定的參數意義是有很大區別的,Pascal's Triangle是給定numRows(即總的行數);Pascal's Triangle II給出的是rowIndex(行的索引,即第幾行),由於Pascal's Triangle的行下標是從0開始的,因此兩道題目的初始化是須要特別注意的區分的。尤爲是關於0的處理;索引
由於Pascal's Triangle是層層嵌套的,下一層的元素是由上一層的元素求得,可是此題目又對空間作了要求,因此在循環調用的過程當中每求得一行都要對前一行的空間進行clear,這樣才能保證空間複雜度是O(k)。get
java代碼:it
public class Solution { public List<Integer> getRow(int rowIndex) { List<Integer> list = new ArrayList<Integer>(); List<Integer> list2 = new ArrayList<Integer>(); if(rowIndex<0) return list; for(int i=0;i<=rowIndex;i++){ if(i==0) { list2.add(1); }else for(int j=0;j<=i;j++){ if(j==0 || j==i){ list2.add(1); } else{ list2.add(list.get(j-1)+list.get(j)); } } List<Integer> temp = list; list=list2; list2=temp; list2.clear(); } return list; } }