详细见:leetcode.com/problems/pascals-triangle
Java Solution: github
package leetcode;
import java.util.ArrayList;
import java.util.Iterator;
/*
* 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]
]
*/
import java.util.LinkedList;
import java.util.List;
public class P118_PascalsTriangle {
public static void main(String[] args) {
List<List<Integer>> ans = null;
Solution s = new Solution();
ans = s.generate(3);
Iterator<List<Integer>> it = ans.iterator();
while (it.hasNext()) {
tools.Utils.B_打印List_Integer_OneLine(it.next());
}
}
static class Solution {
List<List<Integer>> ans = new LinkedList<>();
public List<List<Integer>> generate(int numRows) {
if (numRows <= 0) {
return ans;
}
List<Integer> pre_list = new ArrayList<Integer>(1);
pre_list.add(1);
ans.add(pre_list);
for (int row = 1; row < numRows; row ++) {
List<Integer> this_list = new ArrayList<Integer>(row);
this_list.add(1);
for (int i = 1; i < row; i ++) {
this_list.add(pre_list.get(i - 1) + pre_list.get(i));
}
this_list.add(1);
ans.add(this_list);
pre_list = this_list;
}
return ans;
}
}
}
C Solution: github
/*
url: leetcode.com/problems/pascals-triangle
AC 3ms 2.35%
*/
int** generate(int rn, int** cn) {
int i = 0, j = 0, k = 0;
int** ans = (int**) malloc(sizeof(int*) * rn);
*cn = (int*) malloc(sizeof(int) * rn);
for (i = 0; i < rn; i ++) {
(*cn)[i] = i+1;
ans[i] = (int*) malloc(sizeof(int) * (i+1));
for (j = 0; j < i+1; j ++) {
ans[i][0] = 1;
ans[i][i] = 1;
for (k = 1; k < i; k ++)
ans[i][k] = ans[i-1][k-1] + ans[i-1][k];
}
}
return ans;
}
Python Solution: github
#coding=utf-8
'''
url: leetcode.com/problems/pascals-triangle
@author: zxwtry
@email: zxwtry@qq.com
@date: 2017年5月4日
@details: Solution: 55ms 23.05%
'''
class Solution(object):
def generate(self, n):
"""
:type n: int
:rtype: List[List[int]]
"""
a = [[1]*(i+1) for i in range(n)]
for i in range(2, n):
for j in range(1, i):
a[i][j] = a[i-1][j-1]+a[i-1][j]
return a