详细见: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