118. Pascal's Triangle

来源:互联网 发布:c语言《》 编辑:程序博客网 时间:2024/05/17 04:42

Given numRows, generate the first numRowsof Pascal's triangle.

 For example, given numRows = 5,

Return

 [

    [1],

   [1,1],

  [1,2,1],

 [1,3,3,1],

 [1,4,6,4,1]

]

    分析:题目意思就是打印一个杨辉三角。但是不是用的数组,使用集合来存储。题目不难有两种解法:

    方法一、就类似用队列解决一样,不过要提醒的是,当向ArrayList集合中同一个位置添加值时,不会替换,因此ss.set(j, ss.get(j)+ss.get(j+1));

    方法二:就是跟利用数组一样a[n][n]=a[n-1][n]+a[n-1][n];

具体代码如下:

public class Solution {

   public List<List<Integer>> generate(int numRows) {

       List<List<Integer>> ls=new ArrayList();

       /*    List<Integer> ss = newArrayList<Integer>();

              for(inti=0;i<numRows;i++)

              {

                     ss.add(0,1);

                     for(intj=1;j<ss.size()-1;j++)

                            ss.set(j,ss.get(j)+ss.get(j+1));

                     ls.add(newArrayList<Integer>(ss));

              }*/

              for(inti=0;i<numRows;i++)

              {

                     ArrayList<Integer>lss = new ArrayList<Integer>();

                     for(intj=0;j<=i;j++){

                            if(j==0||j==i){

                                   lss.add(1);

                            }else{

                                   lss.add(ls.get(i-1).get(j)+ls.get(i-1).get(j-1));

                            }

                     }

                     ls.add(lss);

              }

              return ls;

    }

}

 

0 0
原创粉丝点击