day15

news2024/9/23 15:30:49

第一题

1419. 数青蛙

        本题主要是采用模拟的解题思路,用一个croak来模拟青蛙的叫声,在一堆字符串中来找到几个croak,并判断这是由几个青蛙叫的;

        

        首先我们使用数组来模拟hash表,其次我们使用hash表来映射青蛙叫的字符中的每一个元素x(x,x在数组中所对应的下标);

        接下来就是来分析解题思路:

步骤一:

        首先把青蛙的叫的字符串放在hash表中,其次使用指针来遍历给出的一串字符中有多少个青蛙叫;

步骤二:

        当我们指针所指字符串中的元素指的是青蛙叫的第一个元素时(c),首先判断数组数组中的最后一位(k)是否为1,(当k为1时,表示青蛙此前已经完整的叫了一声音,此时开始从新叫),所以当前k位置的数字-1;c位置的数字加一;如果当前的k为0,说明当前的青蛙是第一次叫,所以,只需要进行c所在位置的数字加一操作;

        当我们的指针指向青蛙叫的非第一个元素的时候,判断数组中该元素位置的前一位元素是否为1,如果是,则青蛙叫继续,前一位元素在数组中的位置进行-1操作,当前元素在数组中的位置进行+1操作,(我们是通过hash表来通过元素来查找数组中该元素的位置);如果该元素在数组中的前一个位置的元素数字不为1,则该字符串不是青蛙所能叫的,所以直接返回-1;

 步骤三:

        上述操作完成后,判断数组中1的位置,1只能出现在数组的最后一个位置,如果其他的位置上还有1,则直接返回-1;

代码如下所示:

class Solution {
    public int minNumberOfFrogs(String c) 
    {
        char[] croakOfFrogs = c.toCharArray();
        String t = "croak";
        int n = t.length();
        int[] hash = new int[n]; // 数组模拟哈希表
        Map<Character, Integer> index = new HashMap<>(); // [x, x这个字符对应的下标

        for(int i = 0; i < n; i++)
            index.put(t.charAt(i), i);

        for(char ch : croakOfFrogs)
        {
            if(ch == t.charAt(0)){
                if(hash[n - 1] != 0) hash[n - 1]--;
                hash[0]++;
            } else{
                int i = index.get(ch);

            if(hash[i - 1] == 0) return -1;

            hash[i - 1]--; hash[i]++;
            }
        }
        for(int i = 0; i < n - 1; i++)
            if(hash[i] != 0)
            return -1;
 
        return hash[n - 1];
 }
}
      

第二题

        

        首先举例子来分析:

        本题我们采用模拟和双指针的方法来解决:

        如下图所示,右指针右移,直到所遇到的数和前一个不一样时,记录该数的个数,right-left,同时将左指针移到右指针的位置,开始进行新的一轮判断;

注意事项,同时题目给的额数为n,我们只需要进行n-1次循环遍历可以;

class Solution
    {
    public String countAndSay(int n) {
        String ret = "1";
        for(int i = 1; i < n; i++) // 解释 n - 1 次 ret 即可
        {
            StringBuilder tmp = new StringBuilder();
            int len = ret.length();
            for(int left = 0, right = 0; right < len; )
                {
                    while(right < len && ret.charAt(left) == ret.charAt(right)) right++;
                    tmp.append(Integer.toString(right - left));
                    tmp.append(ret.charAt(left));
                    left = right;
                }
            ret = tmp.toString();
        }
        return ret;
    }
}

ps:本次的内容就到这里了,如果大家感兴趣的话,就请一键三连哦!!!

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

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

相关文章

smart-link + STP的vlan映射 + monitor-link实现二层链路的负载均衡+主备切换

一、适用场景 1、保护原有投资&#xff0c;不浪费原有网络设备及链路的投资&#xff1b; 2、对高可靠、高可用要求的业务&#xff0c;链路中的设备、接头、线路故障时&#xff0c;毫秒级切换&#xff0c;不影响业务的运行&#xff1b; 3、使用华为、华三智能管理型的交换设备&…

香橙派 AIpro评测

一. 香橙派AIpro开箱 官网外观&#xff1a; ​ ​ 外观实测&#xff1a;做工精致&#xff0c;散热片有精致的金属感 ​ ​ 反面&#xff1a;由于加装了wifi蓝牙模块&#xff0c;如果需要做外壳&#xff0c;需要注意保护天线贴片。在树莓派pi5的前面一版&#xff0c;增加了wifi…

MedSegDiff: Medical Image Segmentation with Diffusion Probabilistic Model 论文总结

题目&#xff1a;MedSegDiff: Medical Image Segmentation&#xff08;图像分割&#xff09;with Diffusion Probabilistic Model&#xff08;扩散概率模型&#xff09; 论文&#xff08;MIDL会议&#xff09;&#xff1a;MedSegDiff: Medical Image Segmentation with Diffusi…

【数组】Leetcode 452. 用最少数量的箭引爆气球【中等】

用最少数量的箭引爆气球 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points &#xff0c;其中points[i] [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。 一支弓箭可以沿着 x 轴从不同点 完全垂直 地…

Linux C++ Socket 套接字、select、poll、epoll 实例

文章目录 1. 概述2. TCP 网络编程实例2.1 服务器端2.2 客户端2.3 运行截图 3. I/O 模型3.1 阻塞式I/O模型3.2 非阻塞I/O模型3.3 I/O 复用模型3.4 信号驱动式I/O3.5 异步I/O模型 4. I/O复用之 select4.1 select 函数描述4.2 服务端代码4.3 客户端代码4.4 运行截图 5. I/O复用之 …

虚拟海外仓用什么系统最好?5个步骤帮你选出适合自己仓库的WMS系统

面对国际市场越来越大的仓储需求&#xff0c;虚拟海外仓的受众还是非常广泛的。不过很多经营虚拟海外仓的企业往往都会陷入管理混乱&#xff0c;低效的怪圈。 要想突破这个经营的瓶颈&#xff0c;快速发展企业&#xff0c;选择一个适合自己的海外仓WMS系统是个不错的选择。 1…

Java中Stack的使用详解

Stack是一种运算受限的线性表&#xff0c;其特点在于仅允许在表的一端&#xff08;即表尾&#xff09;进行插入和删除操作。这一端被称为栈顶&#xff0c;而相对的另一端则称为栈底。向一个栈插入新元素的操作称为进栈或入栈&#xff0c;它将新元素放到栈顶元素的上面&#xff…

昂达固态硬盘数据恢复方法:全面解析与操作指南

在数字化时代&#xff0c;数据已经成为我们生活和工作中不可或缺的一部分。而固态硬盘&#xff08;SSD&#xff09;由于其读写速度快、抗震性强等优点&#xff0c;慢慢取代了传统的机械硬盘&#xff0c;成为我们存储数据的主要选择。然而&#xff0c;即便再先进的存储设备&…

如何远程访问Redis?

远程访问Redis是一种常见的需求&#xff0c;特别是在分布式系统或跨地域网络中。通过远程访问&#xff0c;我们可以轻松地对远程的Redis数据库进行操作和管理。 天联保障数据安全 对于远程访问Redis的安全性问题&#xff0c;我们可以借助天联来保障数据的安全。天联是一种基于…

Oracle-修改用户名

1、项目背景 需要将导入一份最新的用户数据在tbl用户上&#xff0c;但需要将原来的tbl用户数据保留并能实现两个用户的比对。 2、解决思路 思路一&#xff1a;1&#xff09;新建用户tbl_feng,导入数据&#xff1b;2&#xff09;将两个用户换名称 3&#xff09;比对 思路二&…

STM32实现HAL库LED点灯

目录 一、相关环境 STM32CubeMX 介绍 安装下载 相关配置完善 尝试使用该软件&#xff0c;点亮LED灯 项目创建 代码示例 二、任务实现 1、使用HAL库方式完成LED灯的周期闪烁 要求1 项目创建 代码示例 要求2 项目创建 代码示例 2、使用仿真软件分析仪功能观察…

VS2022配合Qt与boost.asio实现一个TCP异步通信系统远程操作mysql数据库

上一篇博客我们通过boost.asio搭建了一个简单的异步服务器&#xff0c;但是那是基于命令行的&#xff0c;所有用起来还是相当枯燥的&#xff0c;这次我们配合Qt实现一个简陋的前端页面来控制后端mysql数据库中的表&#xff0c;实现添加密钥的功能(本次博客使用的boost版本是1.8…

为什么大部分新手做抖音小店赚不到钱?

大家好&#xff0c;我是喷火龙。 今天来给大家聊聊&#xff0c;为什么大部分新手做抖店赚不到钱&#xff1f; 不知道大家想过这个问题没有&#xff0c;可能有些人把赚不到钱的原因归结于市场、或者平台、又或者运营技术以及做店经验。 但我觉得这些都不是重点&#xff0c;重…

关于RAG(检索增强生成)的一些知识

写在前面 最近一直在看AI相关的文章&#xff0c;不出意外的话&#xff0c;后续几篇应该都是关于这方面的。希望能和大家一起了解这方面的技术。 什么是RAG 检索增强生成 (RAG,全称Retrieval-Augmented Generation) 是一种利用从外部来源获取的事实来提高生成式 AI 模型的准确…

视频监控管理平台LntonCVS安防监控平台实现接入监控视频资源的视频汇聚方案

随着各行业数字化转型的不断推进&#xff0c;视频监控技术在行业内的安防应用及管理支撑日益增多。然而&#xff0c;由于前期规划不清晰、管理不到位等问题&#xff0c;视频监管系统普遍存在以下问题&#xff1a; 1. 各部门单位在视频平台建设中以所属领域为单位&#xff0c;导…

Intellij IDEA创建springboot 3.2.5 项目

1、idea file -> new ->Project 点击 2、创建项目配置 完成配置-> 点击Next 3、选择对应jar 包 -> 点击Create 4、删除 .mvn、mvnw、mvnw.cmd

宝塔Nginx设置图片访问跨域

宝塔Nginx设置图片访问跨域 针对某一个站点设置 找到对应的站点点击 “设置” 增加对应header设置 代码&#xff1a; location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${#允许跨域add_header Access-Control-Allow-Origin *;add_header Access-Control-Allow-Headers X-Requeste…

数字图像处理系列 | 非线性滤波 (4)

非线性滤波就不能做卷积了 文章目录 前言. 去除噪声如果使用线性滤波 1. 中值滤波2. 重新思考一下 -- 高斯平滑滤波高斯平滑哪里不好用呢&#xff1f;but&#xff0c;我们是不是可以结合高斯平滑滤波的优点和非线性滤波的优点&#xff0c;来做这个去噪呢&#xff1f; 3. Bilat…

融资融券保证金比例,融资融券最低利率4.0%

融资融券保证金比例是指投资者交付的保证金与融资、融券交易金额的比例&#xff0c;用于控制投资者初始资金的放大倍数。这个比例分为融资保证金比例和融券保证金比例。 融资融券保证金比例的计算 1. 融资保证金比例是指投资者融资买入证券时交付的保证金与融资交易金额的比例…

Rust之函数式语言特性:迭代器和闭包(一):概述

开发环境 Windows 11Rust 1.78.0 VS Code 1.89.1 项目工程 这次创建了新的工程minigrep. 函数式语言特性:迭代器和闭包 Rust的设计从许多现有语言和技术中获得了灵感&#xff0c;其中一个重要影响是函数式编程。函数式编程通常包括通过在参数中传递函数、从其他函数返回函数、…