当前位置: 首页 > news >正文

算法之力扣数青蛙

题目连接

文章目录

  • 题目解析
  • 算法原理
    • 第一步
    • 第二步
    • 第三步
    • 第三步
    • 第四步指向o
  • 代码讲解
  • 代码实现

题目解析

在这里插入图片描述

先给大家来讲解一下这个题目的意思吧,这个题目是说呢给你一个蛙叫的字符串让你去设计一个算法求出发出这种蛙叫最少需要几只青蛙。比如说第一个样例发出这种叫声很明显一只青蛙叫两声就够了。

算法原理

我们以第二个样例为示范样列给大家讲解一下该怎么解决这个问题

第一步

在这里插入图片描述

我们以上面这个图为例,首先弄出一个表格这个表格第一行表示的是croak这五个字符每个字符的个数,然后用一个指针指向开头第一个字符在指针向后移动的过程中去改变表中的数字即可首先先看第一个字符是c因此先将c这个表格弄为1

第二步

在这里插入图片描述

第三步

当下面的指针向后移动到r的时候先查看表格中r前面的那个字符是不是大于0,之后如果大于那就是num[‘r’]++然后num[‘c’]–;
在这里插入图片描述

第三步

之后当指针再次向后移动的时候下一个字符为c我们可以看到c这个字符经过第二步变成了0并且k也是0因此我们让c再++
在这里插入图片描述

第四步指向o

第四步指向了o我们就让o前面的字符–并且让o++
在这里插入图片描述
然后就一直向后执行即可由此我们可以得到一个规律那就是
在这里插入图片描述

代码讲解

根据上面的讲解我们知道首先我们需要一个记录个数的数组,以及一个记录下标的哈希表

  string a="croak";unordered_map<char,int>hash;hash['c']=0;hash['r']=1;hash['o']=2;hash['a']=3;hash['k']=4;int num[300];memset(num,0,sizeof(num));

我们可以看到hash是为了记录每个字符在字符串中的下标,num为了记录每个字符此时个数

代码实现


class Solution {
public:int minNumberOfFrogs(string croakOfFrogs) {string a="croak";unordered_map<char,int>hash;hash['c']=0;hash['r']=1;hash['o']=2;hash['a']=3;hash['k']=4;int num[300];memset(num,0,sizeof(num));for(int i=0;i<croakOfFrogs.size();i++){if(croakOfFrogs[i]=='c'){if(num['k']==0){num['c']++;}else if(num['k']>0){num['k']--;num['c']++;}}else{if(num[a[hash[croakOfFrogs[i]]-1]]>0){num[a[hash[croakOfFrogs[i]]-1]]--;num[a[hash[croakOfFrogs[i]]]]++;}else{return -1;}}}for(int i=0;i<4;i++){if(num[a[i]]!=0){return -1;}}return num['k'];}
};
想一直在一起不想分开遇到不好的可以共同克服,我有让人厌烦甚至超过底线的缺点我也会去改正。
http://www.lryc.cn/news/301537.html

相关文章:

  • 【后端高频面试题--Nginx篇】
  • TiDB 在医疗保障信息平台的应用实践
  • 支付交易——跨境交易
  • 上位机图像处理和嵌入式模块部署(上位机主要功能)
  • 【前端工程化面试题】webpack的module、bundle、chunk分别指的是什么?
  • 软件实例分享,家具生产出库管理系统软件教程
  • [uniapp的页面传参]详细讲解uniapp中页面传参的传递方式和接受方式 使用案例 代码注释
  • Python实现时间序列分析霍尔特季节性平滑模型(Holt算法)项目实战
  • Rokid Station 进fastboot
  • Java支持的默认访问修饰符是什么?
  • Java使用Documents4j实现Word转PDF(知识点+案例)
  • CSimplemathproblem ---- 牛客网
  • [嵌入式系统-27]:RT-Thread -14- 操作系统配置:rtconfig.h文件与menuconfig命令
  • C++面向对象程序设计-北京大学-郭炜【课程笔记(一)】
  • C语言:国家名称按字母表排序
  • 2/18作业
  • 书生浦语笔记与作业汇总
  • 嵌入式培训机构四个月实训课程笔记(完整版)-Linux ARM驱动编程第五天-ARM Linux编程之自动创建节点 (物联技术666)
  • 基于51/STM32单片机的智能药盒 物联网定时吃药 药品分类
  • 【学网攻】 第(27)节 -- HSRP(热备份路由器协议)
  • 【实战】二、Jest难点进阶(三) —— 前端要学的测试课 从Jest入门到TDD BDD双实战(七)
  • Python编程中的异常处理
  • mysql3.7之触发器
  • 12.QT文件对话框 文件的弹窗选择-QFileDialog
  • ArcGIS学习(八)基于GIS平台的控规编制办法
  • 软件测试-自动化测试-面试题研究,知识要点,高频、重点知识点,自动化测试知识要点、知识梳理-PYTHON+自动化,评估试题
  • 一.重新回炉Spring Framework: 理解Spring IoC
  • 目标检测算法之YOLOv5的应用实例(零售业库存管理、无人机航拍分析、工业自动化领域应用的详解)
  • [蓝桥 2017]九宫幻方
  • Qt - 编译报错:“invalid use of incomplete type ‘class Ui::xxx‘ui(new Ui::xxx)”的解决方法