zoukankan      html  css  js  c++  java
  • LeetCode——Pascal's Triangle

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



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

  • 相关阅读:
    每日随笔
    每日随笔
    每日随笔
    每日随笔
    nginx的Rewrite重写
    多台机器做动静分离
    单台机器动静分离
    四层负载均衡实践
    四层负载均衡特点
    四层负载均衡做端口转发
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4665429.html
Copyright © 2011-2022 走看看