LeetCode——Pascal's Triangle

LeetCode——Pascal's Triangle

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

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;
	}


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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117470.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 使用【百度云推送】第三方SDK实现推送功能具体解释

    使用【百度云推送】第三方SDK实现推送功能具体解释

    2021年12月6日
    63
  • Python和Java到底有什么区别?

    Python和Java到底有什么区别?转自:微点阅读(www.weidianyuedu.com)微点阅读-范文大全-免费学习知识的网站好多初学编程的小伙伴在问:“Python和Java到底有什么区别?到底是学Python还是Java。“一副惆怅的样子,难以下手。今天,给大家总结了关于两者的十二点区别。一、实话实话,Python虚拟机没有java强,java虚拟机是java的核心Python的核心是可以很方便地使用c语言函数或c++库。二、Python是全动态性的可以在运行时自己修改自己的代码,java只能

    2022年7月7日
    21
  • log4cpp 使用完全手册「建议收藏」

    log4cpp 使用完全手册「建议收藏」原文链接 点击打开链接一、log4cpp概述     Log4cpp是一个开源的C++类库,它提供了C++程序中使用日志和跟踪调试的功能,它的优点如下:提供应用程序运行上下文,方便跟踪调试;可扩展的、多种方式记录日志,包括命令行、文件、回卷文件、内存、syslog服务器、Win事件日志等;可以动态控制日志记录级别,在效率和功能中进行调整;所有配置可以通过配置文件进行动态调整;多语言支持,包括Ja…

    2022年7月13日
    22
  • 常量表达式函数[通俗易懂]

    常量表达式函数[通俗易懂]我们可以在函数返回类型前加入关键字constexpr来使其成为常量表达式函数,但并非所有的函数都有资格成为常量表达式函数。事实上,常量表达式函数的要求非常严格,总结如下:函数体只有单一的return返回语句。 函数必须返回值,不能是void函数。 在使用前必须已有定义。 return返回语句表达式中不能使用非常量表达式的函数、全局数据,且必须是常量表达式。由于比较好理解,这里不多做解释…

    2022年9月28日
    1
  • WindowsPhone 在 根据公历 获取月球日期数据「建议收藏」

    WindowsPhone 在 根据公历 获取月球日期数据

    2022年1月16日
    52
  • map.containsKey方法的运用「建议收藏」

    map.containsKey方法的运用「建议收藏」map之containsKey方法例如:List<HashMap<String,Object>>pt=mapperDao.query(param1,param2);for(HashMap<String,Object>map:pt){if(!map.containsKey(“age”)||null==map.get(“age”))c…

    2022年6月18日
    63

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号