291杨辉三角

Posted huoyingfans

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了291杨辉三角相关的知识,希望对你有一定的参考价值。

给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。

在「杨辉三角」中,每个数是它左上方和右上方的数的和。

  

示例 1:

输入: numRows = 5

输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

示例 2:

输入: numRows = 1

输出: [[1]]

  

提示:

1 <= numRows <= 30

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/pascals-triangle

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

package cn.fansunion.leecode.math;

import java.util.ArrayList;

import java.util.List;

/**

 * 杨辉三角 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。

 *

 * 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 力扣

 *

 * @author wen.lei@brgroup.com

 *

 *         2022-2-18

 */

public class PascalsTriangle

    /**

     * 严格按照定义,从上至下,从左到右;先判断一行的2个边界值都直接为1,不会出现数组越界的情况

     * 实践:一道简单题,改了3次,各种越界。主要是二维数组,行和列都需要从0开始,边界值判断容易搞错。

     * @param numRows

     * @return

     */

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

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

        for (int row = 0; row < numRows; row++)

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

            for (int colIndex = 0; colIndex <= row; colIndex++)

                if (colIndex == 0 || colIndex == row)

                    list1.add(1);

                 else 

                    // array[row][colIndex]=array[row-1][colIndex-1]+array[row-1][colIndex]

                    final List<Integer> prevRow = listList.get(row - 1);

                    Integer num = prevRow.get(colIndex-1) + prevRow.get(colIndex);

                    list1.add(num);

                

            

            listList.add(list1);

        

        return listList;

    

package test.leecode.math;

import java.util.List;

import org.junit.Assert;

import org.junit.Test;

import cn.fansunion.leecode.math.PascalsTriangle;

/**

 * @author wen.lei@brgroup.com

 *

 *         2022-2-25

 */

public class PascalsTriangleTest

    @Test

    public void test()

        // 输入: numRows = 5

        // 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

        PascalsTriangle test = new PascalsTriangle();

        List<List<Integer>> rowList = test.generate(5);

        //重载函数有歧义,烦死

        //1

        Assert.assertEquals(1, (Object)rowList.get(0).get(0));

        //2

        Assert.assertEquals(1, (Object)rowList.get(1).get(0));

        Assert.assertEquals(1, (Object)rowList.get(1).get(1));

         

        //3

        Assert.assertEquals(1, (Object)rowList.get(2).get(0));

        Assert.assertEquals(2, (Object)rowList.get(2).get(1));

        Assert.assertEquals(1, (Object)rowList.get(2).get(2));

        //4

        Assert.assertEquals(1, (Object)rowList.get(3).get(0));

        Assert.assertEquals(3, (Object)rowList.get(3).get(1));

        Assert.assertEquals(3, (Object)rowList.get(3).get(2));

        Assert.assertEquals(1, (Object)rowList.get(3).get(3));

        //5

        Assert.assertEquals(1, (Object)rowList.get(4).get(0));

        Assert.assertEquals(4, (Object)rowList.get(4).get(1));

        Assert.assertEquals(6, (Object)rowList.get(4).get(2));

        Assert.assertEquals(4, (Object)rowList.get(4).get(3));

        Assert.assertEquals(1, (Object)rowList.get(4).get(4));

    

以上是关于291杨辉三角的主要内容,如果未能解决你的问题,请参考以下文章

NLP︱R语言实现word2vec(词向量)经验总结(消除歧义词向量的可加性)

这个博客好用吗

LeetCode-118-杨辉三角

JS leetcode 杨辉三角 超详细题解分析

JS leetcode 杨辉三角 超详细题解分析

ABC291题解(D-G)