LeetCode 之 Pascal's Triangle

来源:互联网 发布:centos samba增加用户 编辑:程序博客网 时间:2024/06/01 21:38

题目连接:Pascal’s Triangle
这道题目就是列出杨辉三角
那么根据杨辉三角的规律就可以解决这道题目。
我使用的是:这里写图片描述每个数是它上面两个数的和,第一个数和最后一个数均为1。
因此在numRows=1时,就直接写入1,而当numRows>1,首先写入1,然后根据前面一行的数来计算本行的,并且最后再写入一个1。
代码如下:

class Solution {   public List<List<Integer>> generate(int numRows) {        List<List<Integer>> re = new ArrayList<List<Integer>>();        if(numRows == 0)            return re;        ArrayList<Integer> sub = new ArrayList<Integer>();        sub.add(1);        re.add(sub);        if(numRows == 1){            return re;            }        int i=1;        while(i<numRows){            sub = new ArrayList<Integer>();            sub.add(1);            int j = 1;            while(j<i){                sub.add(re.get(i-1).get(j-1)+re.get(i-1).get(j));                j++;            }            sub.add(1);            re.add(sub);            i++;        }        return re;    }}

杨辉三角还有一个规律是第n行的第m个数为C(n-1,m-1),即从n-1个中随机取出m-1个元素的组合,利用这个规律也可以解题。