码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode——Pascal's Triangle

时间:2015-07-21 20:24:39      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:

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]
]
原题链接:https://oj.leetcode.com/problems/pascals-triangle/

题目 :给定n,生成n行的帕斯卡三角形。

思路:帕斯卡三角形 也就是 杨辉三角形,依据数学知识,知当中每一行的数字代表的是 (a+b)^n 的系数。于是此题能够转化为求组合数 C(n,k)。把每一行的系数算出来就可以。

	public static List<List<Integer>> generate(int numRows) {
		List<List<Integer>> list = new ArrayList<List<Integer>>();
		if (numRows < 1)
			return list;
		for (int i = 0; i < numRows; i++) {
			List<Integer> li = new ArrayList<Integer>();
			for (int j = 0; j <= i; j++) {
				li.add(Integer.valueOf(cnk(i, j) + ""));
			}
			list.add(li);
		}
		return list;
	}

	//求组合数
	public static BigInteger cnk(int n, int k) {
		BigInteger fenzi = new BigInteger("1");
		BigInteger fenmu = new BigInteger("1");
		for (int i = n - k + 1; i <= n; i++) {
			String s = Integer.toString(i);
			BigInteger stobig = new BigInteger(s);
			fenzi = fenzi.multiply(stobig);
		}
		for (int j = 1; j <= k; j++) {
			String ss = Integer.toString(j);
			BigInteger stobig2 = new BigInteger(ss);
			fenmu = fenmu.multiply(stobig2);
		}
		BigInteger result = fenzi.divide(fenmu);
		return result;
	}



版权声明:本文博客原创文章,博客,未经同意,不得转载。

LeetCode——Pascal&#39;s Triangle

标签:

原文地址:http://www.cnblogs.com/yxwkf/p/4665429.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!