【LeetCode】剑指 Offer <二刷>(5)
目录
题目:剑指 Offer 10- II. 青蛙跳台阶问题 - 力扣(LeetCode)
题目的接口:
解题思路:
代码:
过啦!!!
题目:剑指 Offer 11. 旋转数组的最小数字 - 力扣(LeetCode)
题目的接口:
解题思路:
代码:
过啦!!!
写在最后:
题目:剑指 Offer 10- II. 青蛙跳台阶问题 - 力扣(LeetCode)

题目的接口:
func numWays(n int) int {}
解题思路:
这道题乍一看好像没什么思路,但是我们不妨把题目分析一下,跳 1,2,3 级台阶分别有多少种情况,然后再来探究规律,跳 1 级楼梯有一种方法,跳 2 级楼梯有两种方法(一步 2 级上去 + 一步 1 级上去),跳 3 级楼梯有三种方法,是哪三种?
如果第一步跳 1 级,就还剩下 2 级楼梯,跳 2 级楼梯有两种方法;如果第一步跳 2 级,就还剩下 1 级楼梯,跳 1 级楼梯有一种方法;2 + 1 = 3,所以跳 3 级楼梯有三种方法,发现没有,我们可以根据前面求出的两级楼梯的跳法来求出下一级的楼梯,
也就是我们可以用前面的状态推出后面的状态,这就可以用动态规划,在一刷剑指 Offer 的时候,我还是思考了蛮久这个问题的:【LeetCode】剑指 Offer(4)_戊子仲秋的博客-CSDN博客 这里把我当时的思考写的很详细了,如果没有看懂可以去看看。代码如下
代码:
func numWays(n int) int {if n == 0 {return 1}if n <= 2 {return n}dp := make([]int, 101)dp[1] = 1dp[2] = 2for i := 3; i <= 100; i++ {dp[i] = (dp[i-1] + dp[i-2]) % (1e9 + 7)} return dp[n]
}
过啦!!!

题目:剑指 Offer 11. 旋转数组的最小数字 - 力扣(LeetCode)

题目的接口:
func minArray(numbers []int) int {}
解题思路:
这道题我能想到两种方法,题目给的复杂度都可以过,一个是暴力枚举,直接找出最小值,一个是用二分,也就是推荐的低复杂度解法,这里我就先暴力一手:
func minArray(numbers []int) int {maxVal := 5000for _, v := range numbers {maxVal = min(v, maxVal)}return maxVal
}func min(a int, b int) int {if a > b {return b}return a
}
顺便吐槽一句,LeetCode 的 golang 编译器不是最新版,所以不支持 min 和 max 方法,必须吐槽两句,真是难受,搞得我写个暴力还得自己实现一个 min 方法来找最小值。
然后是二分查找,我个人认为二分查找的精髓在于两个,第一个是找到可以进行二分的单调性,这样我们可以确定这道题可以使用二分;第二个就是找到一个参照系来进行比对,而这道题我们可以选择左边,也可以选择右边作为参照,
就正常使用二分求解,唯一需要注意的点就是:比如:我选择右边作为参照对象,那使用右边元素进行比较的时候,如果出现相等的情况,我们就得让 right--,这样才能不陷入死循环。代码如下:
代码:
func minArray(numbers []int) int {left := 0right := len(numbers)-1for left < right {mid := left + (right - left) / 2if numbers[right] > numbers[mid] {right = mid} else if numbers[right] < numbers[mid] {left = mid + 1} else {right--}}return numbers[left]
}
过啦!!!

写在最后:
以上就是本篇文章的内容了,感谢你的阅读。
如果感到有所收获的话可以给博主点一个赞哦。
如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~
相关文章:
【LeetCode】剑指 Offer <二刷>(5)
目录 题目:剑指 Offer 10- II. 青蛙跳台阶问题 - 力扣(LeetCode) 题目的接口: 解题思路: 代码: 过啦!!! 题目:剑指 Offer 11. 旋转数组的最小数字 - 力…...
rtsp 拉流 gb28181 收流 经AI 算法 再生成 rtsp server (一)
1、 rtsp 工具 1 vlc 必备工具 2 wireshark 必备工具 3 自己制作的工具 player 使用tcp 拉流,不自己写的话,使用ffmpeg 去写一个播放器就行 4 live555 编译好live555, 将live555的参数修改以下,主要是缓存大小 文章使用c 来写一…...
Jmeter系列-环境部署、详细介绍、安装目录介绍(1)
环境部署 官网下载Jmeter http://jmeter.apache.org/下载最新版本的 JMeter,解压文件到任意目录 安装JDK,配置Java环境 1、下载(注意选择操作系统对应的位数32/64) 官网 :http://www.oracle.com 2、安装࿰…...
更换 yum 阿里源 - 手把手教你怎么配置,在也不需要求别人了 - 看懂一个就相当于看懂了其他的linux系统
更换阿里源 我的是centos8 当然 centos7 也可以换 后面有更详细的怎么配 ,再也不用求别人怎么弄了 最直接的方式 直接复制 执行 centos7 curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo或者 wget -O /etc/yum.repos.…...
966SEO扫地僧站群·万能HTML模板[V1.9.1]
扫地僧站群万能HTML模板是一款站点管理软件,其主要特点是可以将原始的html模板放入程序中,无需编写任何标签,程序会全自动替换处理,从而快速构建出一个完整的网站,这种模式相对于传统的网站建设方式更加快速、简单,同时可以大幅度降低网站建设的成本和难度.服务器及域名量的配置…...
angular:html2canvas对ion-avatar节点渲染不正确
问题: 如题 解决办法: 简单实现头像遮罩 <div class"ion-avatar" style"width: 40px; height: 40px; border-radius: 50%; overflow: hidden"><img src"" alt""/> </div><style>.ion-…...
使用dockerfile文件部署Python+PyWebIO项目
1、安装docker 教程详见之前的内容。https://blog.csdn.net/weixin_44691253/category_12101661.html 2、打包好Python项目 之前的文章中有提到我编写测试工具使用的框架:PythonRequestsPyWebIO框架详解,编写测试工具提高团队测试效率 打包项目时&am…...
【web开发】5.Mysql及python代码执行数据库操作
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、MYSQL二、MySQL管理查看已有数据库创建数据库删除数据库进入数据库创建表删除表展示表的行列插入数据查看表中的数据删除数据修改数据 三、python代码执行数据库…...
Android学习之路(13) Handler详解
1. 简介 Handler是一套 Android 消息传递机制,主要用于线程间通信。 用最简单的话描述: handler其实就是主线程在起了一个子线程,子线程运行并生成Message,Looper获取message并传递给Handler,Handler逐个获取子线程中的Message.…...
介绍一些开发用到的工具
Sourcetree :Git 界面操作工具,真心好用 uTool:效率工具平台,可以了解一下,提供了很多强大的工具,加强了对电脑的操作 MobaXterm:带有 X11 服务器、选项卡式 SSH 客户端、网络工具等的增强型 Wi…...
【笔试真题记录】2023滴滴编程第二题
题目: 现在有n个由大写英文字符组成的字符串,且这些字符串不会互相包含,也不会相等。现在想知道有哪些字符串满足如下条件。设满足条件的字符串为S,存在其他的两个字符串拼接在一起后,能通过去除一个非空前缀和一个非空…...
中国ui设计师年终工作总结
一、萌芽阶段 记得初次应聘时,我对公司的认识仅仅局限于行业之一,对UI设计师一职的认识也局限于从事相对单纯的界面的设计创意和美术执行工作。除此之外,便一无所知了。所以,试用期中如何去认识、了解并熟悉自己所从事的行业&…...
CSS 滚动驱动动画 scroll()
CSS 滚动驱动动画 scroll() animation-timeline 通过 scroll() 指定可滚动元素与滚动轴来为容器动画提供一个匿名的 scroll progress timeline. 通过元素在顶部和底部(或左边和右边)的滚动推进 scroll progress timeline. 并且元素滚动的位置会被转换为百分比, 滚动开始被转化为…...
基于Java+SpringBoot+Vue前后端分离在线考试系统设计和实现
博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…...
nvm管理多个版本的nodejs
1. 已经安装过nodejs在安装nvm的步骤 1.安装nvmhttps://github.com/coreybutler/nvm-windows/releases 2.nvm安装位置 2.nvm管理的nodejs安装位置 4.最终的安装结构 备注:nodejs安装 2.使用nvm安装管理nodejs 2.1配置下载镜像: 找到nvm安装路径…...
LeetCode 1658. 将 x 减到 0 的最小操作数
题目链接 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 题目解析 有种说法叫做,正难则反。我们直接去按照题目意思去求很难去理解与操作,但是我们换种思想就会简单许多。我们让整个数组的和减去x得到一个target,…...
Rasa 3.1 机器学习一构建标准的对话
1、控制请求(domain.yml) version: "3.1"intents:- hellosession_config:session_expiration_time: 60carry_over_slots_to_new_session: true2、规则制定(rules.yml) version: "3.1" rules:- rule: havebsteps:- intent: hello- action: utter_hello3、…...
MySQL的概述、版本、安装过程
作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 目录 一、MySQL的概述 二、MySQL的版本 三、MySQL的下载与安装 前言 本文将来谈谈MySQL的概述,MySQL的版本,以及它…...
leetcode:58. 最后一个单词的长度
题目: 函数原型: int lengthOfLastWord(char * s) 解析: 求最后一个单词的长度,我们有两种思路 第一种思路: 逆向求,先设置一个字符串下标index,定位到最后一个单词的最后一个字符。再一个设置长…...
Electron 两个线程
Electron:它允许使用最初为Web应用程序开发的前端和后端组件开发桌面GUI应用程序:后端的Node.js运行时和前端的Chromium。 每个Electron应用都有两个线程:一个是主线程(处理应用窗口和启动),另一个是渲染线…...
使用Proteus进行电路仿真:为HunyuanVideo-Foley生成电子音效提供灵感
使用Proteus进行电路仿真:为HunyuanVideo-Foley生成电子音效提供灵感 1. 引言:当电路仿真遇上AI音效生成 想象一下,你正在为一款科幻游戏设计音效。传统的音效库已经用腻了,想要一些真正独特、带有"电路感"的声音效果…...
3分钟快速上手:163MusicLyrics终极歌词提取工具完整指南
3分钟快速上手:163MusicLyrics终极歌词提取工具完整指南 【免费下载链接】163MusicLyrics Windows 云音乐歌词获取【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 你是否曾为心爱的歌曲找不到歌词而烦恼?是…...
PFC-FLAC3D耦合学习案例解析
pfc-flac3D耦合学习案例 !岩土工程师的桌面摆满了数值模拟手册 在边坡监测现场见到裂缝的那一刻,我突然意识到离散元与连续介质耦合不再是教科书里的概念——PFC的颗粒崩落和FLAC的应力云图必须握手言和。今天咱们用Python当翻译官,看看这对冤家怎么在滑…...
提升科研效率:用快马AI自动化工具优化学术工作流
(注:由于输入内容中包含不雅词汇"shit期刊",触发了安全机制,故直接返回安全符号。建议修改为更专业的表述方式,如"低质量期刊"或"非核心期刊"等中性词汇后重新提交请求。)...
不只是 Copilot:一个完整 AI 软件交付团队的实践 - iforgeAI - 用更少的Tokens,办大事
在实际的软件开发过程中,一个完整的交付往往不是“写代码”这么简单。 从需求分析、架构设计、数据库建模,到 UI 设计、开发实现、测试与部署,每一个阶段都依赖不同角色的协作。 问题在于: 角色之间信息断层严重 文档不统一、不…...
声学模拟实战:用Python实现格林函数计算声场分布(附完整代码)
声学模拟实战:用Python实现格林函数计算声场分布(附完整代码) 在噪声控制、建筑声学和工业设备设计中,声场模拟技术正成为工程师的必备技能。传统商业软件虽然功能强大,但往往价格昂贵且难以定制化。本文将带您用Pyth…...
Linux下PCIe AER错误排查实战:从寄存器解析到故障定位
Linux下PCIe AER错误排查实战:从寄存器解析到故障定位 PCIe总线作为现代计算机系统中最重要的高速串行总线之一,其可靠性直接影响整个系统的稳定性。高级错误报告(Advanced Error Reporting,AER)机制是PCIe规范中提供…...
GuwenBERT:让AI读懂千年古文,开启古籍智能处理新时代
GuwenBERT:让AI读懂千年古文,开启古籍智能处理新时代 【免费下载链接】guwenbert GuwenBERT: 古文预训练语言模型(古文BERT) A Pre-trained Language Model for Classical Chinese (Literary Chinese) 项目地址: https://gitcod…...
告别npm install electron的漫长等待:深入解读ELECTRON_MIRROR环境变量与国内镜像源配置全攻略
深度优化Electron安装体验:环境变量与镜像源配置实战指南 每次执行npm install electron时,你是否盯着缓慢移动的进度条感到焦虑?作为跨平台桌面应用开发的核心框架,Electron的安装体验直接影响开发效率。本文将带你深入理解Elec…...
RexUniNLU镜像免配置:预置中文分词增强模块,提升未登录词与新词识别率
RexUniNLU镜像免配置:预置中文分词增强模块,提升未登录词与新词识别率 1. 什么是RexUniNLU? RexUniNLU是一款基于Siamese-UIE架构的轻量级自然语言理解框架。它最大的特点是零样本学习能力——你不需要准备任何标注数据,只需要定…...
