0
点赞
收藏
分享

微信扫一扫

3610、杨辉三角

给定一个非负整数 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


链接: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));

}

}

举报

相关推荐

杨辉三角.java

杨辉三角(Java)

杨辉三角算法

leetcode:杨辉三角

杨辉三角(java)

杨辉三角展示

杨辉三角问题

0 条评论