一、題目名稱javascript
Pascal's Triangle(帕斯卡三角形)java
二、題目地址算法
https://leetcode.com/problems/pascals-triangle/code
三、題目內容ip
英文:Given numRows, generate the first numRows of Pascal's triangle.leetcode
中文:給出行數numRows,生成前numRows行的帕斯卡三角形開發
例如,當numRows爲5時,生成的三角形是這樣的:get
[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ]
四、解題方法io
帕斯卡三角形也叫楊輝三角形,咱們能夠利用該三角形的性質來逐行生成這個三角形,即:「每行的第一個和最後一個數字是1,其他數字等於前一行左上與右上兩數字之和」。class
一段實現本算法的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