《算法闯关指南:优选算法--模拟》--43.数青蛙

《算法闯关指南:优选算法--模拟》--43.数青蛙
在这里插入图片描述

🔥草莓熊Lotso:个人主页
❄️个人专栏: 《C++知识分享》《Linux 入门到实践:零基础也能懂》
✨生活是默默的坚持,毅力是永久的享受!


🎬 博主简介:

在这里插入图片描述

文章目录


前言:

聚焦算法题实战,系统讲解三大核心板块:优选算法:剖析动态规划、二分法等高效策略,学会寻找“最优解”。 递归与回溯:掌握问题分解与状态回退,攻克组合、排列等难题。 贪心算法:理解“局部最优”到“全局最优”的思路,解决区间调度等问题 内容以题带点,讲解思路与代码实现,帮助大家快速提升代码能力。

43. 数青蛙

题目链接

1419. 数青蛙 - 力扣(LeetCode)

题目描述

在这里插入图片描述


题目示例

在这里插入图片描述

解法(模拟+分情况讨论):

算法思路:

模拟青蛙的叫声。

  • 当遇到 'r' 'o' 'a' 'k' 这四个字符的时候,我们要去看看每一个字符对应的前驱字符,有没有青蛙叫出来。如果有青蛙叫出来,那么就让这个青蛙接下来喊出这个字符;如果没有,直接返回 -1
  • 当遇到 ‘c’ 这个字符的时候,我们去看看 ‘k’ 这个字符有没有青蛙叫出来。如果有,就让这个青蛙继续去 ‘c’ 这个字符;如果没有的话,就重新整一个青蛙出来

C++算法代码:

classSolution{public:intminNumberOfFrogs(string croakOfFrogs){ string s="croak";int n=s.size(); unordered_map<char,int> index;//记录字符映射下标关系 vector<int>hash(n);//数组模拟哈希表for(int i=0;i<n;i++) index[s[i]]=i;for(auto& ch:croakOfFrogs){if(ch=='c'){if(hash[n-1]!=0) hash[n-1]--; hash[0]++;}else{int t=index[ch];if(hash[t-1]==0)return-1; hash[t-1]--,hash[t]++;}}for(int i=0;i<n-1;i++)if(hash[i]!=0)return-1;return hash[n-1];}};

算法总结&&笔记展示:

笔记字有点丑,大家见谅:

在这里插入图片描述


在这里插入图片描述

结尾:

🍓 我是草莓熊 Lotso!若这篇技术干货帮你打通了学习中的卡点: 👀 【关注】跟我一起深耕技术领域,从基础到进阶,见证每一次成长 ❤️ 【点赞】让优质内容被更多人看见,让知识传递更有力量 ⭐ 【收藏】把核心知识点、实战技巧存好,需要时直接查、随时用 💬 【评论】分享你的经验或疑问(比如曾踩过的技术坑?),一起交流避坑 🗳️ 【投票】用你的选择助力社区内容方向,告诉大家哪个技术点最该重点拆解 技术之路难免有困惑,但同行的人会让前进更有方向~愿我们都能在自己专注的领域里,一步步靠近心中的技术目标! 

结语:本文探讨了LeetCode 1419题"数青蛙"的解法,通过模拟青蛙叫声过程,分析字符序列croak的匹配逻辑。算法使用哈希表记录字符位置,并动态维护各阶段字符计数:当遇到c时复用已完成k的青蛙或新增青蛙;其他字符则需前驱字符存在才能继续。最后检查未完成序列的青蛙数量。解法高效且思路清晰。

✨把这些内容吃透超牛的!放松下吧✨ʕ˘ᴥ˘ʔづきらど

Read more

2026年最新版Python安装和PyCharm安装教程(图文详细 附安装包)

2026年最新版Python安装和PyCharm安装教程(图文详细 附安装包)

2026年最新版Python安装和PyCharm安装教程 * 前言:安装前友好提示 * 一、Python安装 * 1、 下载python安装包 * 2、 安装python * 3、验证安装成功 * 二、 安装Pycharm * 1、Pycharm介绍 * 2、Pycharm安装 * 3、Pycharm使用 前言:安装前友好提示 (1) 避免安装路径有中文 / 空格; (2) 如果非指定版本建议安装最新版; (3) 无特殊要求随便选一个python版本(建议3.11.9) (4)pycharm无特殊要求建议选择2025版本 一、Python安装 1、 下载python安装包 Python-Pycharm安装包:https://pan.quark.cn/s/6878d7cc5460 安装包我已经下载好了,点击上面网盘链接直接获取就行 2、 安装python 双击下载好的 .exe

By Ne0inhk
零基础学 OpenCV + Python 图像处理:手把手带你做人脸识别(附代码+典型案例)

零基础学 OpenCV + Python 图像处理:手把手带你做人脸识别(附代码+典型案例)

零基础学 OpenCV + Python 图像处理:手把手带你做人脸识别(附代码+典型案例) 关键词:opencv-python、opencv图像处理、opencv人脸识别代码python、python安装opencv库 亮点提示:本文面向零基础读者,手把手教你从环境搭建到实战应用,一步步深入,让你快速掌握 OpenCV+Python 图像处理与人脸识别技术。文中附带完整示例代码与典型案例,可直接复制、运行与深度改造,助你轻松入门并提升项目收藏率! 摘要 零基础学 OpenCV + Python 图像处理,手把手带你从 Python 安装 OpenCV 库、opencv-python 基础操作到 opencv图像处理、opencv人脸识别代码python 实战案例(静态图、人脸检测、摄像头实时识别)全流程讲解,附完整代码与典型案例,帮助初学者快速上手人脸识别项目。 目录 1. 为什么选择 OpenCV + Python?

By Ne0inhk
python Tkinter Frame 深度解析与实战指南

python Tkinter Frame 深度解析与实战指南

一、Frame 的核心定位与架构价值 在 Tkinter 的组件体系中,Frame(框架)是最基础却最重要的容器类组件。它本质上是一个矩形区域,充当其他组件的"父容器"和"布局单元"。与功能性组件(Button、Entry 等)不同,Frame 的核心使命是组织与分层。 在复杂的 GUI 应用中,直接将所有组件挂载到根窗口(Tk())会导致布局混乱、代码难以维护。Frame 通过引入层级化布局概念,允许开发者将界面划分为逻辑独立的模块(如导航栏、内容区、状态栏),每个模块内部独立管理布局,最终组合成完整界面。这种"分而治之"的思想是构建专业级桌面应用的基石。 二、基础创建与属性配置 2.1 基本实例化

By Ne0inhk
【经管论文复现】Python+FactSet Revere全球供应链数据库,测度供应链断裂与重构变量——丁浩员等(2024)《经济研究》复现

【经管论文复现】Python+FactSet Revere全球供应链数据库,测度供应链断裂与重构变量——丁浩员等(2024)《经济研究》复现

目录 * 1 对Factset全球供应链数据库的简单解读 * 2 对丁浩员等测度方式的解读 * 2.1 断裂和恢复指标的解读 * 2.2 转移指标的解读 * 2.3 遗留的问题 * 3 供应链断裂与重构指标的测度 * 3.1 原始数据库处理 * 3.2 中国沪深A股上市企业作为供应商的供应链关系对筛选、标记与调整 * 3.2.1 原始数据筛选 * 3.2.2 供应链数据标记 * 3.2.3 根据rel_type关系和flag标记进行调整 * 3.3 供应链关系的时间顺序调整与断裂、恢复变量测度 * 3.3.1 供应链关系的时间顺序调整 * 3.3.2 月度数据的生成 * 3.4

By Ne0inhk