小白水平理解面试经典题目_数组类LeetCode 118 Pascal‘s Triangle【回归解法】

LeetCode 118 生成杨辉三角(Pascal’s Triangle)

小白渣翻译

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

在杨辉三角中,每个数是它左上方和右上方的数的和。

在这里插入图片描述

例子

在这里插入图片描述

这里是小白理解

那么这种题目一上来看,其实题目描述的还是很清晰了,还配了一个动图增加效果,总之就是让你看的清晰明了。
在这里插入图片描述
但是这题麻烦就在于得需要每个结果都和上一层有关系,这时候黑长直女神过来问:小白,你这题怎么思考的啊?

小白内心镇定:这题,白月光啊,哦,不对,小美,咱得用Recursion啊,这题才能做。

  • 递归方法通过递归调用生成前一行,然后在此基础上生成当前行,从而生成杨辉三角形。

第一步,咱们要有个Base case吧,如果给的numRows为1,就返回 [[1]]。

第二步,递归生成每一行

  • 进行递归调用以生成前 numRows - 1 行。
  • 根据列表中的最后一行生成第 numRows 行。

第三步,添加新行后返回三角形。

小美:小伙子,可以啊,这不仅逻辑感人,阅读理解也有俩下子!
在这里插入图片描述

真正面试环节

面试官:你可以解答这道”杨辉三角“的题目吗,来看看你对数学的理解

小白:嘿嘿,这不巧了么这不是

在这里插入图片描述

     public List<List<Integer>> generate(int numRows) {List<List<Integer>> result = new ArrayList<>();for (int i = 0; i < numRows; i++) {List<Integer> row = new ArrayList<>();generateRow(i, row);result.add(row);}return result;}private void generateRow(int rowNum, List<Integer> row) {if (rowNum == 0) {row.add(1);} else {List<Integer> prevRow = new ArrayList<>();generateRow(rowNum - 1, prevRow);// 第一个元素总是1row.add(1);// 中间元素是前一行对应位置的和for (int j = 1; j < rowNum; j++) {row.add(prevRow.get(j - 1) + prevRow.get(j));}// 最后一个元素总是1row.add(1);}}

小明:OK,完事儿,等着面试官来表扬自己吧。他肯定会说:小子,你是个好手!工位都给你准备好了,工资你说了算。

面试官:矮油,不错啊,我就是试试你,下边还有一道题接着来。

小明OS:今年这个找工市场,人言洛阳花似锦,偏我来时不逢春。。。不是,这面试官好体力啊!

在这里插入图片描述
编码道路漫漫,只要先看脚下的路,徐徐前进即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/662297.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

「连载」边缘计算(十二)01-31:边缘部分源码(源码分析篇)

&#xff08;接上篇&#xff09; EdgeCore中功能模块的启动 EdgeCore中功能模块的启动与中的CloudCore中功能模块的启动流程完全相同&#xff0c;大家可以参考该部分。 组件源码分析 本节将对Kubernetes的核心组件的源码进行梳理和分析。这些组件包括控制节点的kube-apiser…

4-树-合并两个有序链表

这是树的第4篇算法&#xff0c;力扣链接。 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4]示例 2&#xff1a; 输入&#xf…

关于使用js的循环语句打印一个金字塔的三种方案

//for循环方式 <html> <head> <title>金字塔三角形</title> <script> var ta prompt("请输入金字塔的行数"); //浏览行数 for(var i1;i<ta;i){ …

SQL Limit

在 SQL 中&#xff0c;LIMIT 通常用于限制查询结果的行数。然而&#xff0c;具体的语法和用法可能在不同的数据库系统中有所不同。以下是在一些常见的数据库系统中使用 LIMIT 的示例&#xff1a; 1. MySQL / MariaDB: -- 返回前10行 SELECT * FROM your_table LIMIT 10;-- 返…

Linux下gcc的使用与程序的翻译

gcc和程序的翻译过程 gcc介绍程序的翻译过程预编译编译汇编链接 命令行式宏定义 gcc介绍 gcc是一款编译C语言编译器&#xff0c;可以把我们用vim写的代码编译成可执行程序。编译C用g进行编译&#xff0c;C的文件后缀是test.cc或test.cpp或test.cxx 如果要安装g就执行以下命令 …

C# winform 多语言(json)方式实现

前后对比 使用nuget json工具包1.总体思路 创建对应的json字典对照表 { "测试":"Test", "语言":"Language", "设置":"Set", "中文(默认)":"Chinese (default)", "英文":"E…

【HarmonyOS应用开发】ArkTS 属性动画的使用(十二)

一、概述 属性动画&#xff0c;是最为基础的动画&#xff0c;其功能强大、使用场景多&#xff0c;应用范围较广。常用于如下场景中&#xff1a; 一、页面布局发生变化。例如添加、删除部分组件元素。二、页面元素的可见性和位置发生变化。例如显示或者隐藏部分元素&#xff0…

CANoe学习笔记——窗口类型

CANoe中的窗口类型&#xff0c;共分为三种 1&#xff1a;MDI windows 2&#xff1a;Standard Windows 3&#xff1a;Docking Windows 窗口有多种类型&#xff0c;每种类型都定义了特定的窗口行为。通过点击窗口顶部的区域&#xff0c;可以更改窗口类型。 如下图&#xff0…

Python的requests库与HTTP代理的使用:魔法般的网络探险之旅

嘿&#xff0c;各位魔法探险家们&#xff01;今天我们要一起探索Python的requests库与HTTP代理的神奇组合&#xff0c;开启一段魔法般的网络探险之旅&#xff01; 首先&#xff0c;我们要明白什么是requests库。简单说&#xff0c;requests库就是Python中的魔法飞毯&#xff0…

Linux基础知识合集

整理了一下学习的一些关于Linux的一些基础知识&#xff0c;同学们也可以通过公众号菜单栏查看&#xff01; 一、基础知识 Linux基础知识 Linux命令行基础学习 Linux用户与组概念初识 Linux文件与目录权限基础 Linux中文件内容的查看 Linux系统之计划任务管理 二、服务器管理 Vm…

MySql主从同步,同步SQL_ERROR 1032解决办法

1.登录从库 mysql -u root -p 2.输入命令查看状态 SHOW SLAVE STATUS\G; 3.找到对应的错误数据位置 Slave_IO_Running: YesSlave_SQL_Running: NoReplicate_Do_DB: app_push_centerReplicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Tabl…

“欢天喜地迎新春”下姜村邻里守望写对联活动

卯兔追冬去&#xff0c;辰龙报春来。空谷幽香谱佳期&#xff0c;红联金句寄吉祥。春联是我国特有的文学形式&#xff0c;贴春联是继承传统习俗的一种方式&#xff0c;是对祖先的尊敬&#xff0c;对传统的继承。春节前夕&#xff0c;家家户户贴上红红的春联&#xff0c;一副副透…

Ubuntu 关闭rsyslog,var/log/syslog文件过大解决

关闭命令&#xff1a; systemctl stop syslog.socket rsyslog.service这个命令会停止rsyslog服务和syslog.socket。在某些情况下&#xff0c;仅仅停止rsyslog服务是不够的&#xff0c;因为syslog.socket可能会重新启动它。所以&#xff0c;你需要同时停止这两个服务。 请注意&…

Android ViewPager2 同屏显示左右item

大家都知道Google最近发布的ViewPager2基本不兼容ViewPager&#xff0c;虽然众多特性仍然可以使用&#xff0c;但两者在代码和应用方面相差甚远。就比如ViewPager的显示左右ITEM使用在ViewPager2之上仍然会留下左右的边距&#xff0c;但是静止状态下无法显示出左右item&#xf…

西圣Olite开放式耳机持续100+天霸榜:品质优势再掀数码狂潮

随着开放式耳机的市场竞争加剧&#xff0c;用户对耳机的音质和配置要求越来越高。而西圣开放式耳机的不断推陈出新&#xff0c;正是对客户需求的完美回应&#xff01;西圣开放式耳机&#xff0c;在现在鱼龙混杂的市场上&#xff0c;能够获得着卓越的研发成果并且还在不断的追求…

qt学习:停车场管理系统+摄像头+http识别车牌+sqlite3数据库

目录 参考前面发的几篇文章http识别车牌&#xff0c;sqlite3数据库、摄像头的文章 步骤 部分代码 新建一个项目&#xff0c;加入前面用到的http和image两个文件&#xff0c;和加入用到的模块和头函数和成员&#xff0c;加入前面用到的全局变量 配置ui界面 在构造函数中初…

Java14常用类4:Java比较器

5.Java比较器 基本数据类型的数据&#xff08;除Boolean类型外&#xff09;需要比较大小的话&#xff0c;使用比较运算符即可&#xff0c;但是引用数据类型不能直接使用比较运算符来比较大小。 Java中经常涉及到对象数组的排序问题&#xff0c;对此Java有 2种方式实现对象的排…

Qt5 基于OpenGL实现六轴机械臂三维仿真

需求 在Qt中通过OPenGL方式加载三维模型STL文件&#xff0c;然后将多个结构的STL文件类型的模型进行组装&#xff0c;形成6轴机械臂三维模型的显示&#xff0c;并且可以对每个关节进行关节角度的控制。 新建一个C类STLFileLoader&#xff0c;用于加载STL文件&#xff0c;并进…

IP协议(2) 和 数据链路层协议基础

IP协议续 1.路由选择 在复杂的网络结构中,我们需要找到一个通往终点的路线,这就是路由选择 举个例子:我们在没有手机导航之前,想去一个地方得是到一个地方问一下路的方式最终找到目的地 路由的过程,其实就是样子问路的过程 1.当IP数据包到达路由器的时候,会查看目的IP 2.路由器…

Jmeter高级使用

文章目录 JMeter之计数器JMeter之集合点JMeter之断言JMeter之动态关联后置处理器&#xff1a;正则表达式提取器 JMeter之分布式测试JMeter之组件执行顺序元件的作用域元件的执行顺序配置元件Http Cookie管理器 多协议接口的性能测试Debug采样器Http请求中文乱码的解决Post参数设…