码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【力扣】杨辉三角问题


    力扣|杨辉三角

    • 【力扣】杨辉三角I
      • ✌杨辉三角快速入门
      • 💬输出杨辉三角I问题
      • 🍵思路分析
      • ✍️ 算法实现
    • 【力扣】杨辉三角II
      • 💬 输出杨辉三角II问题
      • 🍵思路分析
      • ✍️ 算法实现

    【力扣】杨辉三角I

    ✌杨辉三角快速入门

    每行端点与结尾的数为1,每行其他元素的值等于它左上方和右上方的数的和。

    💬输出杨辉三角I问题

    给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。
    在「杨辉三角」中,每个数是它左上方和右上方的数的和。

    示例 1:
    输入: numRows = 5
    输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
    示例 2:
    输入: numRows = 1
    输出: [[1]]
    

    🍵思路分析

    根据输入的numRows,可以知道每行的长度len,然后对每行长度进行判断即可,如果是头尾则赋值为1,否则就等于上一行的左上方和右上方元素相加。

    ✍️ 算法实现

     public List<List<Integer>> generate(int numRows) {
            //返回数组
            List<List<Integer>> lists = new ArrayList<>();
            //从第一行开始的,下标为1
            for (int row = 1; row < numRows + 1; row++) {
                List<Integer> tmp = new ArrayList<>();
                int len = row;
                for (int i = 0; i < len; i++) {
                    if (i == 0 || i == len - 1) {
                        tmp.add(1);
                    } else {
                        tmp.add(lists.get(row - 2).get(i - 1) + lists.get(row - 2).get(i));
                    }
                }
                lists.add(tmp);
            }
            return lists;
        }
    
    

    在这里插入图片描述

    【力扣】杨辉三角II

    💬 输出杨辉三角II问题

    给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。

    输入: rowIndex = 3
    输出: [1,3,3,1]
    
    输入: rowIndex = 0
    输出: [1]
    
    输入: rowIndex = 1
    输出: [1,1]
    

    🍵思路分析

    为减少空间复杂度,每次迭代依赖“上一行”的数据,迭代之后的数据覆盖“上一行”的数据,每次迭代计算时,从前往后进行计算,可以避免“上一行”数据发生变化

    ✍️ 算法实现

    class Solution {
        public List<Integer> getRow(int rowIndex) {
            List<Integer> list = new ArrayList<>(rowIndex + 1);
            int left = 1, right = 1;
            list.add(1);
            for (int i = 1; i < rowIndex + 1; i++) {
                list.add(1);
                left = 1;
                for (int j = 1; j < i; j++) {
                    right = list.get(j);
                    list.set(j, left + right);
                    left = right;
                }
            }
            return list;
        }
    }
    

    在这里插入图片描述

    如果觉得对你有帮助的话:
    👍 点赞,你的认可是我创作的动力!
    ⭐️ 收藏,你的青睐是我努力的方向!
    👄 评论,你的意见是我进步的财富!

  • 相关阅读:
    leetCode 125. 验证回文串 + 双指针
    Vulnhub靶机:GEMINI INC_ 1
    SpringBoot-线程池ThreadPoolExecutor异步处理(包含拆分集合工具类)
    Java面试八股之什么是mybatis流式查询
    15、JAVA入门——封装
    Python基础教学之五:异常处理与文件操作——让程序更健壮
    苹果 AirPods Pro 2 耳机新固件(6A305)
    webgl(three.js)实现室内三维定位,3D定位,3D楼宇bim、实时定位三维可视化解决方案——第十四课(定位升级版)
    DOM系列之动画函数封装
    424-计算机网络(14-17)
  • 原文地址:https://blog.csdn.net/qq_41080854/article/details/126960352
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号