您的位置 首页 java

LeetCode算法第118题:杨辉三角

题目描述:

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

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

示例:

输入: 5

输出:

[

 [1],

 [1,1],

 [1,2,1],

 [1,3,3,1],

 [1,4,6,4,1]

] 

思路:

杨辉三角形有如下两个特性

  1. 每一行的第一个元素和最后一个元素都是1;
  2. 每个数都是它左上方和右上方的数的和,对应到 链表 中就是当前元素所在位置 j 及 j-1两个位置

因此在计算杨辉三角形的时候,首先取出它的上一行的数据,在改行的第一个元素和最后一个元素都添加1。然后遍历上一行元素,将对应位置的元素取值相加,并将结果添加到改行指定位置上。

Java代码:

public List<List<Integer>> generate(int numRows) {
	List<List<Integer>> result = new ArrayList();
	if(numRows < 1){
		return result;
	}

	List<Integer> row1 = new ArrayList();
	row1.add(1);
	result.add(row1);

	for(int i=1; i<numRows; i++){
		List<Integer> preRow = result.get(i-1);
		List<Integer> row = new ArrayList();
		
		row.add(1);
		for(int j=1;j<preRow.size();j++){
			row.add(j,preRow.get(j)+preRow.get(j-1));
		}
		row.add(1);
		
		result.add(row);
	}

	return result;
} 

文章来源:智云一二三科技

文章标题:LeetCode算法第118题:杨辉三角

文章地址:https://www.zhihuclub.com/186102.shtml

关于作者: 智云科技

热门文章

网站地图