标签:
1、题目名称
Pascal‘s Triangle(帕斯卡三角形)
2、题目地址
https://leetcode.com/problems/pascals-triangle/
3、题目内容
英文:Given numRows, generate the first numRows of Pascal‘s triangle.
中文:给出行数numRows,生成前numRows行的帕斯卡三角形
例如,当numRows为5时,生成的三角形是这样的:
[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ]
4、解题方法
帕斯卡三角形也叫杨辉三角形,我们可以利用该三角形的性质来逐行生成这个三角形,即:“每行的第一个和最后一个数字是1,其余数字等于前一行左上与右上两数字之和”。
一段实现本算法的Java代码如下:
import java.util.ArrayList; import java.util.List; /** * 功能说明:LeetCode 118 - Pascal‘s Triangle * 开发人员:Tsybius2014 * 开发时间:2015年8月14日 */ public class Solution { /** * 帕斯卡三角形 * @param numRows 行数 * @return */ public List<List<Integer>> generate(int numRows) { if (numRows < 0) { return null; } ArrayList<List<Integer>> resultList = new ArrayList<List<Integer>>(); if (numRows == 0) { return resultList; } //第一行 ArrayList<Integer> firstList = new ArrayList<Integer>(); firstList.add(1); resultList.add(firstList); //之后各行 ArrayList<Integer> nextList = firstList; for (int i = 1; i < numRows; i++) { nextList = getNextArray(nextList); resultList.add(nextList); } return resultList; } /** * 给定帕斯卡三角形的一行数据,获取下一行数据 * @param array 帕斯卡三角形某一行 * @return 帕斯卡三角形的下一行 */ public ArrayList<Integer> getNextArray(ArrayList<Integer> arrayList) { if (arrayList == null) { return null; } ArrayList<Integer> nextList = new ArrayList<Integer>(); nextList.add(1); for (int i = 0; i + 1 < arrayList.size(); i++) { nextList.add(arrayList.get(i) + arrayList.get(i + 1)); } nextList.add(1); return nextList; } }
END
LeetCode:Pascal‘s Triangle - 帕斯卡三角形
标签:
原文地址:http://my.oschina.net/Tsybius2014/blog/492872