一:解题思路
这个题目关键要找出规律,并用数学表达式表示其中的规律。
i:0->n-1 a(i,0)=1;a(i,i)=1;a(i,j)=a(i-1,j-1)+a(i-1,j)。Time:O(n),Space:O(1)
二:完整代码示例 (C++版和Java版)
C++:
class Solution { public: vector<vector<int>> generate(int numRows) { vector<vector<int>> result; if (numRows < 1) return result; for (int i = 0; i < numRows; i++) { vector<int> elem(i+1,0); elem[0] = 1; elem[i] = 1; for (int j = 1; j < i; j++) { elem[j] = result[i-1][j-1] + result[i-1][j]; } result.push_back(elem); } return result; } };
Java:
class Solution { public List<List<Integer>> generate(int numRows) { List<List<Integer>> result=new ArrayList<>(); if(numRows<1) return result; for(int i=0;i<numRows;i++) { List<Integer> list=Arrays.asList(new Integer[i+1]); list.set(0,1); list.set(i,1); for(int j=1;j<i;j++) { list.set(j,result.get(i-1).get(j-1)+result.get(i-1).get(j)); } result.add(list); } return result; } }