119.Pascal's Triangle II(杨辉三角的应用)

119.Pascal's Triangle II(杨辉三角的应用)_第1张图片
  • 杨辉三角


    119.Pascal's Triangle II(杨辉三角的应用)_第2张图片
  • 思想
    将杨辉三角存储在一个二维数组中,但这个二维数组每一行的列数不等。
    假设row的索引从0开始:
    第0行有col=0的元素。
    第1行有col=0,col=1的元素。
    第2行有col=0,col=1,col=2的元素。
    第row行有col<=row的元素。
    对于每一行开始和结束的元素,值都为1。
    对于每一行中间第i个元素,等于上一行的第i-1个元素和第i个元素值的和。

  • java

class Solution {
    public List getRow(int rowIndex) {
        //这里rowIndex索引是从0开始的,创建数组时要+1
      Integer[][] triangle=new Integer[rowIndex+1][];
        //为每一行的列数赋值
        for(int row=0;row<=rowIndex;row++){
            //第0行有1列,第1行有2列...
            triangle[row]=new Integer[row+1];
            //为每一列赋值
            for(int col=0;col<=row;col++){
                //如果是第一个或者最后一个元素,赋值为1
                if(col==0||col==row)
                    triangle[row][col]=1;
                else
                    triangle[row][col]=triangle[row-1][col-1]+triangle[row-1][col];      
            }
        }
        
        //循环完了row=rowIndex
        return Arrays.asList(triangle[rowIndex]);
    }
}
  • javascript
/**
 * @param {number} rowIndex
 * @return {number[]}
 */
var getRow = function(rowIndex) {
    //定义一个rowIndex+1行的数组。
    var triangle=new Array(rowIndex+1);
    //数组里面每一行再放不同大小的数组
    for(var row=0;row<=rowIndex;row++){
        //第0行,1个元素;第1行,2个元素
        triangle[row]=new Array(row+1);
        //为该行的每一个元素赋值
        for(var col=0;col<=row;col++){
            if(col==0||col==row)
                triangle[row][col]=1;
            else
                triangle[row][col]=triangle[row-1][col-1]+triangle[row-1][col];
        }
    }
    
    return triangle[rowIndex];
    
};

你可能感兴趣的:(119.Pascal's Triangle II(杨辉三角的应用))