前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >三分钟帮你解决所有杨辉三角的算法题目

三分钟帮你解决所有杨辉三角的算法题目

作者头像
千与编程
发布2023-04-28 14:36:32
2640
发布2023-04-28 14:36:32
举报
文章被收录于专栏:公众号:千与编程

大家好,我是千与千寻,最近更新的有点频繁啊,主要是最近感觉学到了太多有用的东西,想来和大家分享。

上一期我们分享了LeetCode算法题目中的股票交易合集,今天我们来讲解一下LeetCode中的一个特例——杨辉三角问题合集。更多题解合集持续关注我,编程能力的提高,需要用算法题的刷题数量来喂出来的,下面我们直接进入技术环节!

另外,各位最近的股票基金怎么样了,不用说了,都是泪啊~

所以还是要说投资是一场持久战,就如同人生一样,一时的失利,那算不了什么,只要我们坚持心中的目标,终会有实现的一天,白酒,反弹!

在本次的算法题解中我们介绍杨辉三角的题目,涉及杨辉三角的题目一共有两道,分别为LeetCode118,以及LeetCode119,我们逐一进行讲解。

LeetCode 118:

杨辉三角 I:

给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。

代码语言:javascript
复制
测试示例:
输入: 5输出:[     [1],    [1,1],   [1,2,1],  [1,3,3,1], [1,4,6,4,1]]
代码语言:javascript
复制
思路解析:
代码语言:javascript
复制
针对本道题目我们需要先进行思路的转换,
代码语言:javascript
复制
因为我们总是将杨辉三角想像成为等腰三角形
代码语言:javascript
复制
但是这样其实很不利于思路的构建,
代码语言:javascript
复制
因为本题中的数据结构其实是一个二维数组,
代码语言:javascript
复制
而且是一个首位对齐的二维数组,
代码语言:javascript
复制
本题的关键在于搞清楚杨辉三角整体的计算规律,
代码语言:javascript
复制
其计算公式为下一层的数字为上一层数组的两个相邻数字相加之和
代码语言:javascript
复制
搞清楚了杨辉三角的本质,我们看一下具体的算法步骤。
代码语言:javascript
复制
算法流程:
代码语言:javascript
复制
(1)新建一个二维数组list,用于最终结果的返回
代码语言:javascript
复制
(2)搭建每一层的杨辉三角元素存储数组,用于存放杨辉三角的数组
代码语言:javascript
复制
(3)根据杨辉三角的外部元素特点,对索引为0,以及索引为当前所在层
代码语言:javascript
复制
最右端的元素进行赋值为1的操作
代码语言:javascript
复制
(4)如果不是最外围的元素,我们对其进行公式的计算,
代码语言:javascript
复制
第i行杨辉三角的第j个元素等于:
代码语言:javascript
复制
第i-1行第j-1的元素与第i-1行的第j个元素进行相加。
代码语言:javascript
复制
(5)将当前的计算得到的杨辉三角所在行
代码语言:javascript
复制
放入整个杨辉三角的二维数组
代码语言:javascript
复制
(6)返回整个杨辉三角的二维数组即可
代码语言:javascript
复制
编写代码:
代码语言:javascript
复制
class Solution {
    public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> list = new ArrayList();
        for(int i=0;i<numRows;i++){
            List<Integer> res = new ArrayList<>();
            for(int j=0;j<=i;j++){
                if(j==0||j==i){
                    res.add(1);
                }else{
                    res.add(list.get(i-1).get(j-1)+list.get(i-1).get(j));
                }
            }
            list.add(res);
        }
        return list;
    }
}

LeetCode 119:

杨辉三角 II

给定一个非负索引 k,其中k ≤ 33,返回杨辉三角的第k行。

代码语言:javascript
复制
测试示例:
输入: 3输出: [1,3,3,1]

思路解析:
本题与上一道题的原理是相同的,只不过上一道题目要求输出的是整个的杨辉三角二维数组,本题目输出的为其中一层的数组。因此整体构建的是杨辉三角的内容也是相同的。仅仅需要在实际的编码中对二维数组的输出进行修改。其计算公式为下一层的数字为上一层数组的两个相邻数字相加之和搞清楚了杨辉三角的本质,我们看一下具体的算法步骤。
算法流程:
(1)新建一个二维数组list,用于最终结果的返回(2)搭建每一层的杨辉三角元素存储数组,用于存放杨辉三角的数组
(3)根据杨辉三角的外部元素特点,对索引为0,以及索引为当前所在层最右端的元素进行赋值为1的操作(4)如果不是最外围的元素,我们对其进行公式的计算,第i行杨辉三角的第j个元素元素为第i-1行第j-1的元素与第i-1行的第j个元素进行相加。(5)将当前的计算得到的杨辉三角所在行放入整个杨辉三角的二维数组(6)返回对应索引的杨辉三角对应行数的一维数组即可。
代码语言:javascript
复制
 编写代码:
代码语言:javascript
复制
class Solution {
    public List<Integer> getRow(int rowIndex) {
        List<List<Integer>> list = new ArrayList();
        for(int i=0;i<=rowIndex;i++){
            List<Integer> res = new ArrayList<>();
            for(int j=0;j<=i;j++){
                if(j==0||j==i){
                    res.add(1);
                }else{
                    res.add(list.get(i-1).get(j-1)+list.get(i-1).get(j));
                }
            }
            list.add(res);
        }
        return list.get(rowIndex);
    }
}

············END············

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 千与编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 杨辉三角 II
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档