問題:
Given numRows, generate the first numRows of Pascal's triangle.
For example, given numRows = 5,
Return[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
大意:
給出一個行數(shù),生出對應(yīng)行數(shù)的楊輝三角形久窟。
比如雀瓢,給出行數(shù) = 5沮峡。
返回[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
思路:
楊輝三角形好像是小學(xué)還是初中學(xué)的東西割捅,像上面例子中顯示的一樣耻瑟,每行數(shù)字遞增1吴攒,,第一個數(shù)和最后一個數(shù)都是1肖粮,中間的每個數(shù)都是上一行對應(yīng)位置和前一個位置的數(shù)之和破讨。
這道題就是要根據(jù)給出的行數(shù)返回對應(yīng)的楊輝三角形旨巷,那么也可以依據(jù)這個特性來做。每一行第一個數(shù)和最后一個數(shù)肯定都是1添忘,中間的數(shù)根據(jù)上一行來計算采呐,所以需要保存和更新每一個“上一行”,本行中間 j 位置的數(shù)搁骑,是上一行 j 位置和 j-1位置的數(shù)之和斧吐,這樣一個個數(shù),一行行計算出來就可以了仲器。這道題要求結(jié)果放在ArrayList里煤率,ArrayList經(jīng)常用到,還是需要了解一下增刪改查的用法乏冀。
代碼(Java):
public class Solution {
public List<List<Integer>> generate(int numRows) {
if (numRows == 0) return new ArrayList<List<Integer>>();
List<List<Integer>> result = new ArrayList<List<Integer>>();
List<Integer> lastArr = new ArrayList<Integer>();
lastArr.add(1);
result.add(lastArr);
for (int i = 1; i < numRows; i++) {
List<Integer> newArr = new ArrayList<Integer>();
newArr.add(1);
for (int j = 1; j < i; j++) {
newArr.add(lastArr.get(j-1) + lastArr.get(j));
}
newArr.add(1);
result.add(newArr);
lastArr = newArr;
}
return result;
}
}
合集:https://github.com/Cloudox/LeetCode-Record