大家好,又见面了,我是全栈君,今天给大家准备了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; }
版权声明:本文博客原创文章,博客,未经同意,不得转载。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/117470.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...