leetcode 118. Pascal's Triangle(杨辉三角)

来源:互联网 发布:linux df产生文件 编辑:程序博客网 时间:2024/05/20 07:32

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]]
简单题一个。

public List<List<Integer>> generate(int numRows) {List<List<Integer>> result=new ArrayList<List<Integer>>();if(numRows==0){return result;}List<Integer> list=new ArrayList<Integer>();list.add(1);result.add(list);if(numRows==1){return result;}list=new ArrayList<Integer>();list.add(1);list.add(1);result.add(list);if(numRows==2){return result;}for(int i=3;i<=numRows;i++){list=new ArrayList<Integer>();list.add(1);List<Integer> pre=result.get(i-2);//第i-1个,就是index=i-2for(int pointer=0;pointer<i-2;pointer++){list.add(pre.get(pointer)+pre.get(pointer+1));}list.add(1);result.add(list);}return result;}
大神也基本上是我这个思路。

calculate element value: K( i )( j ) = K( i-1 )( j-1 ) + K( i-1 )( j )  except for the first and last element

public class Solution {    public List<List<Integer>> generate(int numRows) {        List<List<Integer>> triangle = new ArrayList<List<Integer>>();        if (numRows <=0){            return triangle;        }        for (int i=0; i<numRows; i++){            List<Integer> row =  new ArrayList<Integer>();            for (int j=0; j<i+1; j++){                if (j==0 || j==i){                    row.add(1);                } else {                    row.add(triangle.get(i-1).get(j-1)+triangle.get(i-1).get(j));                }            }            triangle.add(row);        }        return triangle;    }}