每周一算法2017.11.3
Pascal's Triangle
描述:
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] ]
中文: 给定一个数字,生成行数为这个数字的杨辉三角
分析:
1 每行开头结尾都为1。
2 每个数等于它上方两数之和。
3 每行数字左右对称,由1开始逐渐变大。
4 第n行的数字有n项。
代码:
java代码:
class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> resList = new ArrayList<List<Integer>>();
if(numRows == 0){
return resList;
}
List<Integer> preList = new ArrayList<Integer>();
preList.add(1);
resList.add(preList);
for(int i = 1; i<numRows; i++){
List<Integer> curList = new ArrayList<Integer>();
curList.add(1);
for(int j = 1; j<preList.size(); j++){
curList.add(preList.get(j-1) + preList.get(j));
}
curList.add(1);
resList.add(curList);
preList = curList;
}
return resList;
}
}
Swift代码:
func generate(numRows:Int) -> [[Int]] {
var resultArray = [[Int]]()
if numRows == 0 {
return resultArray
}
var rowArray = [Int]()
rowArray.append(1)
resultArray.append(rowArray)
for _ in 1 ..< numRows {
var tempArray = [Int]()
tempArray.append(1)
for j in 1 ..< rowArray.count {
tempArray.append(rowArray[j - 1] + rowArray[j])
}
tempArray.append(1)
resultArray.append(tempArray)
rowArray = tempArray
}
return resultArray
}
本题来自leetcode