当前位置: 代码迷 >> 综合 >> leetcode-118 Pascal's Triangle
  详细解决方案

leetcode-118 Pascal's Triangle

热度:52   发布时间:2023-12-16 05:33:05.0

Given a non-negative integer numRows, generate the first numRows of Pascal's triangle.


In Pascal's triangle, each number is the sum of the two numbers directly above it.

Example:

Input: 5
Output:
[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]
]

 

找规律:

class Solution {
    public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> res = new ArrayList<>();
        if(numRows <= 0 ) {
            return res;
        }
        List<Integer> tmp = new ArrayList<>();
        tmp.add(1);
        res.add(tmp);
        setValue(2,numRows,tmp,new ArrayList<>(), res);
        return res;
    }
    
    public void setValue(int now ,int numRows, List<Integer> tmp, List<Integer> nowT,List<List<Integer>> res) {
        if(now > numRows) {
            return;
        }else {
            for(int i=0;i<now;i++) {
                if(i==0 || i == now-1) {
                    nowT.add(1);
                }else {
                    nowT.add(tmp.get(i-1)+tmp.get(i));
                }
            }
            res.add(nowT);
            setValue(now+1,numRows,nowT,new ArrayList<>(),res);
        }
    }
}