这道题我的解法时间复杂度稍高一些
public class Solution {
public List<List<Integer>> generate(int numRows) {
List<Integer> list = new ArrayList<Integer>(Arrays.asList(1));
List<Integer> lastList = new ArrayList<Integer>();
List<List<Integer>> result = new ArrayList<List<Integer>>();
int layer = 1;
if(numRows == 0)
return result;
while(layer < numRows){
lastList = list;
result.add(list);
Integer[] nums = new Integer[layer + 1];
Integer[] lastNums = lastList.toArray(new Integer[lastList.size()]);
System.out.println("debug");
System.out.println(nums.length);
System.out.println(lastNums.length);
nums[0] = 1;
for(int i = 1;i < layer;i++ ){
nums[i] = lastNums[i-1] + lastNums[i];
}
nums[layer] = 1;
//lastList = list;
list = Arrays.asList(nums);
layer++;
}
result.add(list);
return result;
}
}
在来一个discuss里面1ms的代码
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> res = new ArrayList<>();
for(int i=0; i<numRows; ++i)
{
int pre=0;
List<Integer> arow = new ArrayList<>();
for(int j=0; i>0&&j<res.get(i-1).size(); ++j)
{
arow.add(pre+res.get(i-1).get(j));
pre=res.get(i-1).get(j);
}
arow.add(1);
res.add(arow);
}
return res;
}