Pascal's Triangle
Total Accepted: 43914 Total Submissions: 145531My Submissions
Question Solution
Given numRows, generate the first numRows of Pascal's triangle.
For example, given numRows = 5,
Return
[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ]
分析,数据特点是,当前行可由上一行计算求得,计算方式,A[n][m]=A[n-1][m]+A[n-1][m-1]
public class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> x=new ArrayList<List<Integer>>();
if(numRows<1)
return x;
else if(numRows==1)
{
List<Integer> y=new ArrayList<Integer>();
y.add(1);
x.add(y);
return x;
}
else if(numRows==2)
{
List<Integer> y=new ArrayList<Integer>();
y.add(1);
x.add(y);
y=new ArrayList<Integer>();
y.add(1);
y.add(1);
x.add(y);
return x;
}
else
{
List<Integer> y=new ArrayList<Integer>();
y.add(1);
x.add(y);
y=new ArrayList<Integer>();
y.add(1);
y.add(1);
x.add(y);
int v=3;
int listsize=2;
while(v<=numRows)
{
y=new ArrayList<Integer>();
int size=x.get(listsize-1).size();
//int[] z=new int[size+1];
//z[0]=1;
y.add(1);
for(int i=1;i<size;i++)
y.add(x.get(listsize-1).get(i-1)+x.get(listsize-1).get(i));
y.add(1);
x.add(y);
/*
y=new ArrayList<Integer>();
int[] z=new int[v/2+1];
for(int i=0;i<(v+1)/2;i++)
{
z[i]=1+i*(v-2);
y.add(z[i]);
}
if(v%2==0)
{
for(int i=(v+1)/2-1;i>=0;i--)
y.add(z[i]);
}
else
{
for(int i=(v+1)/2-2;i>=0;i--)
y.add(z[i]);
}
x.add(y);
*/
listsize++;
v++;
}
return x;
}
}
}