Leetcode 118:パスカルの三角形パスカルの三角形

118:パスカルの三角形パスカルの三角形

非負の整数を考えるとnumRowsの数、最初の発生numRowsの数パスカルの三角形のを。

非負の整数を考えるとnumRowsの数、のパスカルの三角形前に生成numRowsの数のライン。

IMG
パスカルの三角形において、各数値は、直接上記2つの数の合計です。

パスカルの三角形では、各番号は、その左上と右上の数です。

例:

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

問題解決のアイデア:

図1は、第1行、第2行、最初と最後の行のそれぞれは、xは他のインデックス位置座標(M、N)の数は、xはインデックス番号が正の数であると仮定され、1であり、それは上記でありますちょうど左の上のインデックスの数。すなわち、(M-1、N)、(M-1、N-1)と数2。

Javaの:

class Solution {
    public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> triangle = new ArrayList<List<Integer>>();

        if(numRows == 0) return triangle;
        List<Integer> one = new ArrayList<Integer>();
        one.add(1);
        triangle.add(one);
        if(numRows == 1) return triangle;
        for (int i=1;i<numRows;i++){
            List<Integer> row = new ArrayList<Integer>();
            row.add(1);
            for (int j=1;j<i;j++){
                List<Integer> prev = triangle.get(i-1);
                row.add(prev.get(j-1)+prev.get(j));
            }
            row.add(1);
            triangle.add(row);
        }
        return triangle;
    }
}

パイソン:

class Solution:
    def generate(self, numRows: int) -> List[List[int]]:
        if numRows==0:return []
        triangle=[[1]]
        if numRows==1: return triangle
        for i in range(1,numRows):
            tmp=[1]
            for j in range(1,i):
                tmp.append(triangle[i-1][j-1]+triangle[i-1][j])
            tmp.append(1)
            triangle.append(tmp)
        return triangle

要約:

非常に簡単な質問には、Java、ネストされた配列を確認することができます。さらに添加することができる内部ループが決定されif(i!=0) row.add(1);triangle.add(row);、私は、これが省略されてもよい場合は0プラス1に等しくありません

List<Integer> one = new ArrayList<Integer>();
        one.add(1);
        triangle.add(one);
        if(numRows == 1) return triangle;

コードセグメントが、これはif(i!=0)最初のサイクルに入った後たびに決定されるであろう。リソースの消費を減らすの原則に沿って、それが外に言及しなければなりません。
icodebugs

おすすめ

転載: www.cnblogs.com/zhangzhe532/p/11082586.html