• Pascal's Triangle


    我用二项式解决了这个,其中溢出是用java的BigInteger解决的。但是看到大多数人是用定义解决的,计算量就不大,不会造成溢出

    leetcode:https://oj.leetcode.com/problems/pascals-triangle/

    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]
    ]
     1 //这里的帕斯卡三角即杨辉三角
     2 //         1
     3 //       1   1
     4 //     1   2   1
     5 //   1   3   3   1
     6 //用定义处理
     7 //先将第一行1 put进去
     8 //后面每一行的生成用先put第一个1和最后一个1
     9 //中间的数字由下面的方法解决
    10 //先取出上一行的list,用i和j指向上一行的第一个和第二个元素,两个相加得到这行的元素,知道j到上一行的最后一个元素
    11 //将生成的list加入到集合中,生成最后的结果
    12 public class Solution {
    13     public List<List<Integer>> generate(int numRows) {
    14         List<List<Integer>> set = new ArrayList<List<Integer>>();
    15         if(0 == numRows){
    16             
    17         }
    18         else if(1 == numRows){//只求1行
    19             List<Integer> listRow = new ArrayList<Integer>();
    20             Integer element = new Integer(1);
    21             listRow.add(element);
    22             set.add(listRow);
    23             
    24         }
    25         else{//>=2行
    26             //先把第一行put进去
    27             List<Integer> listRow = new ArrayList<Integer>();
    28             Integer element = new Integer(1);
    29             listRow.add(element);
    30             set.add(listRow);
    31             //找出所有的行
    32             for(int n = 1; n < numRows; n++){
    33                 //取出前一行的List
    34                 List preRowList = set.get(n -1);
    35                 //申明这一行的List并将第一个元素1add进去
    36                 List<Integer> nowRowList = new ArrayList<Integer>();
    37                 nowRowList.add(new Integer(1));
    38                 //开始找出除第一个1和最后一个的所有元素, 由定义计算出来
    39                 for(int i = 0, j = 1; j < preRowList.size(); i++, j++){
    40                     Integer num_first = (Integer)preRowList.get(i);
    41                     Integer num_second = (Integer) preRowList.get(j);
    42                     nowRowList.add(new Integer(num_first + num_second));
    43                 }
    44                 //添加最后一个1
    45                 nowRowList.add(new Integer(1));
    46                 //添加到set集合中
    47                 set.add(nowRowList);
    48             }
    49         }
    50         
    51         return set;
    52     }    
    53 }
  • 相关阅读:
    Python语言基础04-构造程序逻辑
    Python语言基础03-分支和循环结构
    Python语言基础02-变量和运算
    Python语言基础01-初识Python
    Hadoop+Hbase分布式集群架构“完全篇”
    kubernetes系列12—二个特色的存储卷configmap和secret
    安装AIDE文件完整性检测
    PAM和账户安全配置
    SSH安全配置
    CentOS7的审计配置
  • 原文地址:https://www.cnblogs.com/luckygxf/p/4063178.html
Copyright © 2020-2023  润新知