帕斯卡三角形
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
示例:
输入: 5
输出:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
 
思路:利用三角形性质 1*(n-1)*(n-2)/2 *(n-3)/3  * (n-4)/4    和杨辉三角形n行含有n个数字的数学性质。
本题可以通过数学性质来获得求解。代码如下:   注意1*(n-1)*(n-2)/2 *(n-3)/3  * (n-4)/4中Int型数组导致运算结果为0的情况(如2/5=0,1/2=0)
  1. class Solution {
  2. public List<List<Integer>> generate(int numRows) {
  3. List<List<Integer>> res=new ArrayList<List<Integer>>();
  4. for(int i=1;i<=numRows;i++){
  5. List<Integer> list=new ArrayList();
  6. list.add(1);
  7. double temp=1;
  8. for(int j=1;j<i;j++){
  9. temp=(temp*(i-j))/j; //这个地方不能写成temp*=(i-j)/j 因为是Int型 (i-j)/j 会变成0.
  10. list.add((int)temp);
  11. }
  12.  
  13. res.add(list);
  14. }
  15. return res;
  16. }
  17. }

另一种解法根据数组的性质,每一个数字都是上一组的前一个数与后一个数之和。

  1. class Solution {
  2. public List<List<Integer>> generate(int numRows) {
  3. List<List<Integer>> pascal = new ArrayList<List<Integer>>();
  4. ArrayList<Integer> row = new ArrayList<Integer>();
  5. for (int i = 0; i < numRows; i++) {
  6. row.add(0, 1); //(0,1)中的0是索引,1是值。 每一组首先添加1进行运算
  7. for (int j = 1; j < row.size() - 1; j++)
  8. row.set(j, row.get(j) + row.get(j + 1)); //上一组前两个数字的和
  9. pascal.add(new ArrayList<Integer>(row));
  10. }
  11. return pascal;
  12. }
  13. }
class Solution {
    public List<List<Integer>> generate(int numRows) {
       List<List<Integer>> pascal = new ArrayList<List<Integer>>();
        ArrayList<Integer> row = new ArrayList<Integer>();
        for (int i = 0; i < numRows; i++) {
            row.add(0, 1);     //(0,1)中的0是索引,1是值。 每一组首先添加1进行运算
            for (int j = 1; j < row.size() - 1; j++)
                row.set(j, row.get(j) + row.get(j + 1));    //上一组前两个数字的和
            pascal.add(new ArrayList<Integer>(row));
        }
        return pascal;
    }
}

leetcode-帕斯卡三角形的更多相关文章

  1. 119 Pascal's Triangle II 帕斯卡三角形 II Pascal's Triangle II

    给定一个索引 k,返回帕斯卡三角形(杨辉三角)的第 k 行.例如,给定 k = 3,则返回 [1, 3, 3, 1].注:你可以优化你的算法到 O(k) 的空间复杂度吗?详见:https://leet ...

  2. 118 Pascal's Triangle 帕斯卡三角形 杨辉三角形

    给定 numRows, 生成帕斯卡三角形的前 numRows 行.例如, 给定 numRows = 5,返回[     [1],    [1,1],   [1,2,1],  [1,3,3,1], [1 ...

  3. leetcode-119-Pascal's Triangle II(生成某一行的帕斯卡三角形)

    题目描述:   Given a non-negative index k where k ≤ 33, return the kth index row of the Pascal's triangle ...

  4. leetcode-118-Pascal's Triangle(生成具有n行的帕斯卡三角形)

    题目描述: Given a non-negative integer numRows, generate the first numRows of Pascal's triangle. Example ...

  5. 【LeetCode-面试算法经典-Java实现】【118-Pascal&#39;s Triangle(帕斯卡三角形)】

    [118-Pascal's Triangle(帕斯卡三角形(杨辉三角))] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given numRows, generate ...

  6. [LeetCode] Triangle 三角形

    Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent n ...

  7. [LeetCode 120] - 三角形(Triangle)

    问题 给出一个三角形,找出从顶部至底部的最小路径和.每一步你只能移动到下一行的邻接数字. 例如,给出如下三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 从顶部至底部的最 ...

  8. LeetCode 976. 三角形的最大周长(Largest Perimeter Triangle) 33

    976. 三角形的最大周长 976. Largest Perimeter Triangle 题目描述 给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的.面积不为零的三角形的最大周长. ...

  9. leetcode 有效三角形的个数

    题目描述: 平明伞兵解法: 既然要求满足三角形要求的三边,简单来说,就是最短两边之和大于第三边,所以,第一步Arrays.sort().先排序,然后直接伞兵暴力法,三重循环.当然最后肯定是能跑出来的, ...

  10. LeetCode Triangle 三角形(最短路)

    题意:给一个用序列堆成的三角形,第n层的元素个数为n,从顶往下,每个元素可以选择与自己最近的两个下层元素往下走,类似一棵二叉树,求最短路. [], [,4], [6,,7], [4,,8,3] 注意: ...

随机推荐

  1. 【2017001】IList转DataTable、DataTable转IList

    IList转DataTable.DataTable转IList using System; using System.Collections.Generic; using System.Compone ...

  2. 大数据框架-HDFS

    HDFS:分布式文件系统,运行文件通过网络在多台主机分享的文件系统,分块写入(128M),适用于一次写入多次查询,不支持并发写(只能一块一块写),小文件不合适. nameNode(主节点,单个): 保 ...

  3. 使用 Solr 构建企业级搜索服务器

    最近因项目需要一个全文搜索引擎服务, 在考察了Lucene及Solr后,我们选择了Solr. 本文简要记录了基于Solr搭建一个企业搜索服务器的过程.网上的资料太多千篇一律,也可能版本不同,总之在参照 ...

  4. Swiper2和Swiper3区别详解与兼容IE8/IE9

    最近项目一些网站项目想到用Swiper3来制作响应式,但是发现IE9都不兼容, 而swiper2版本又少一个breakpoints参数 做响应式脚本非常不方便,于是想到新版的浏览器用3  ,iE9和以 ...

  5. .Net Core如何在任意位置获取配置文件的内容

    前几天群里有人问,我想在程序里的任意位置读取appsetting.json里的配置,该怎么搞. 话不多说上源码 首先,要想读取配置文件我们要用到IConfiguration 接口,这个接口在Start ...

  6. ubuntu下安装应用(搜狗输入法)

  7. Flask第三方组件之flask_session

    flask默认提供了session, 但是存在以下问题: ① session数据存在客户端, 不安全 ② 大小有限制 ③ 增加了客户端的压力 所以才产生了很多第三方的session机制, 我使用的是f ...

  8. 如何分析Mysql慢SQL

    内容摘要: 开启慢查询日志捕获慢SQL 使用explain分析慢SQL 使用show profile查询SQL执行细节 常见的SQL语句优化 一.开启慢查询日志捕获慢SQL ① 查询mysql是否开启 ...

  9. python应用:selenium之爬取天眼查信息

    inform_table.py # -*-coding:utf8-*- from selenium import webdriver from selenium.webdriver.common.pr ...

  10. JAVA基础 - 类的构造与实例化

    一个简单的demo,主要运用: 抽象类,类的继承 类的实例化,构造函数 @Override重写父类方法 package week4; abstract class Person { void show ...