Leetcode周赛374补题(3 / 3) - EA专场

不愧是EA的题,我最爱的模拟人生……好难,呜呜

目录

1、找出峰值 - 暴力枚举

2、需要添加的硬币的最小数量 - 思维 + 贪心

3、统计完全子字符串 - 滑窗 + 分组循环


1、找出峰值 - 暴力枚举

2951. 找出峰值

class Solution {
    public List<Integer> findPeaks(int[] m) {
        List<Integer> res=new ArrayList<>();
        for(int i=1;i<m.length-1;i++) 
            if(m[i-1]<m[i]&&m[i]>m[i+1]) res.add(i);
        return res;
    }
}

2、需要添加的硬币的最小数量 - 思维 + 贪心

真难啊……

2952. 需要添加的硬币的最小数量

思路:

  • 题目只要求返回最少添加硬币数量,对硬币顺序没有关系,因此我们将数组顺序排序
  • 假设数组中一个数都不用,能凑出来的数就是[0,1),此时如果加入x,这个范围就会扩大,新得到的区间为[x,1+x),此时若两个区间没有重合,则需要新增硬币
  • 为了让新增硬币数最少,我们只能添加缺的硬币(只增加最紧缺的)
  • 我们设定右边界为v,遍历数组中每一个值x,如果右边界覆盖不到x,则加硬币,更新右边界,直到可以覆盖x后再返回来根据x更新右边界,直到右边界v > target,说明满足条件

class Solution {
    public int minimumAddedCoins(int[] a, int target) {
        int v=1,res=0,i=0;
        Arrays.sort(a);
        while(v<=target)
        {
            if(i<a.length&&a[i]<=v) 
            {
                v+=a[i]; //两区间重合,则更新右区间
                i++;
            }
            else //假如遍历完整个数组仍然不满足target 则需要不断扩大右边界
            {
                v*=2; //右区间拓展
                res++; //两区间不重合,新增硬币
            }
        }
        return res;
    }
}

 

3、统计完全子字符串 - 滑窗 + 分组循环

2953. 统计完全子字符串

分组循环

 

思路:

第一步:分组循环分割子串

根据【相邻字符在字母表中的顺序 至多 相差 2 】 的条件,我们可以将整个字符串分割成若干个子串,再逐个对子串进行处理

比如说:aabb | ffgg     ccddef | zzz | aaa

第二步:逐个对子串进行滑窗统计

根据【s 中每个字符 恰好 出现 k 次】,我们知道若字符串中有m种字母,则满足条件的子串长度必然是k*m,所以我们维护k*m的滑动窗口,每次对窗口内的字母出现次数进行统计,满足条件的子串res++

滑窗 —— 外层枚举右侧(一个一个走),内层根据情况移动左侧

class Solution {
    public int countCompleteSubstrings(String s, int k) {
        int n=s.length();
        int res=0;
        //首先划分若干子串,对每个子串再进行处理(分组循环)
        for(int i=0;i<n;)
        {
            int st=i;
            i++;
            for(;i<n&&Math.abs(s.charAt(i)-s.charAt(i-1))<=2;i++);
            //上面for循环结束后,i指向分割子串最末尾的下一个字符
            res+=f(s.substring(st,i),k); //将分割好的子串逐一处理
        }
        return res;
    }

    public int f(String x,int k)
    {
        char[] s=x.toCharArray();
        int res=0;
        for(int m=1;m<=26&&k*m<=s.length;m++) //枚举有m种字符
        {
            int[] cnt=new int[26]; //哈希表统计字符出现次数
            for(int r=0;r<s.length;r++)
            {
                cnt[s[r]-'a']++;
                int l=r+1-k*m;  //保证滑窗大小为k*m
                if(l>=0)
                {
                    boolean flag=true;
                    for(int t:cnt)
                        if(t!=k&&t>0)
                        {
                            flag=false;
                            break;  //如果滑窗内每个字符不是恰好满足k个
                        }
                    if(flag) res++; //统计满足条件的子串
                    cnt[s[l]-'a']--;
                }
            }
        }
        return res;
    }
}

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python实现FA萤火虫优化算法优化卷积神经网络分类模型(CNN分类算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 萤火虫算法&#xff08;Fire-fly algorithm&#xff0c;FA&#xff09;由剑桥大学Yang于2009年提出 , …

第3章 表、栈和队列

3.4 队列ADT 像栈一样&#xff0c;队列(queue)也是表。然而&#xff0c;使用队列时插入在一端进行而删除则在另一端 进行。 3.4.1 队列模型 队列的基本操作是Enqueue(入队)一它是在表的末端(叫作队尾(rear))插入一个元素&#xff0c;还有Dequeue(出队)——它是删除(或返回)在…

数据结构:字典树(前缀树,Trie树),压缩字典树(Radix)

字典树Trie Tree 字典树也称前缀树&#xff0c;Trie树。在 Elasticsearch 的倒排索引中用的也是 Trie 树。是一种针对字符串进行维护的数据结构。 字典树是对词典的一种存储方式&#xff0c;这个词典中的每个“单词”就是从根节点出发一直到某一个目标节点的路径&#xff0c;…

YOLO5Face算法解读

论文&#xff1a;YOLO5Face: Why Reinventing a Face Detector 链接&#xff1a;https://arxiv.org/abs/2105.12931v1 机构&#xff1a;深圳神目科技&LinkSprite Technologies&#xff08;美国&#xff09; 开源代码&#xff1a;https://github.com/deepcam-cn/yolov5-face…

GateWay的路由与全局过滤器

1.断言工厂 我们在配置文件中写的断言规则只是字符串&#xff0c;这些字符串会被Predicate Factory读取并处理&#xff0c;转变为路由判断的条件 例如Path/user/**是按照路径匹配&#xff0c;这个规则是由 org.springframework.cloud.gateway.handler.predicate.PathRoutePr…

CityEngine2023 shp数据城市与路网三维模型并导入UE5

目录 0 引言1 城市和道路数据获取1.1 常用方法1.2 OSM数据获取1.3 OSM数据格式1.3.1 所有格式1.3.2 Shapefile格式 2 实践2.1 导入数据&#xff08;.shp&#xff09;2.2 构建三维模型2.3 将模型导入UE5 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xf…

ElasticSearch学习笔记(一)

计算机软件的学习&#xff0c;最重要的是举一反三&#xff0c;只要大胆尝试&#xff0c;认真验证自己的想法就能收到事办功倍的效果。在开始之前可以看看别人的教程做个快速的入门&#xff0c;然后去官方网站看看官方的教程&#xff0c;有中文教程固然是好&#xff0c;没有中文…

处理器中的TrustZone之安全状态

在这个主题中&#xff0c;我们将讨论处理器内对TrustZone的支持。其他部分则涵盖了在内存系统中的支持&#xff0c;以及建立在处理器和内存系统支持基础上的软件情况。 3.1 安全状态 在Arm架构中&#xff0c;有两个安全状态&#xff1a;安全状态和非安全状态。这些安全状态映射…

第一个小记录达成:第一个年费会员用户

早上看到&#xff0c;欸&#xff0c;有个用户好像充了 9.9 元&#xff0c;挺开心&#xff0c;刚刚看飞书消息&#xff0c;看到了这条分享给朋友&#xff0c;等等&#xff0c;是充值了 99 元&#xff0c;有个用户充了年费&#xff0c;偶买噶&#xff0c;开心 &#x1fae1; 这是…

如何通过知识库推动企业创新?

如今的市场竞争激烈&#xff0c;企业创新是企业持续发展的关键之一。知识库作为企业内部的重要知识资源&#xff0c;对于推动企业创新具有不可替代的作用。接下来就跟大家探讨一下如何通过知识库推动企业创新。 | 一、知识库在推动企业创新中的作用 1.提高知识获取和分享效率 …

Python按要求从多个txt文本中提取指定数据

基本想法 遍历文件夹并从中找到文件名称符合我们需求的多个.txt格式文本文件&#xff0c;并从每一个文本文件中&#xff0c;找到我们需要的指定数据&#xff0c;最后得到所有文本文件中我们需要的数据的集合 举例 如现有名为file一个文件夹&#xff0c;里面含有大量的.txt格…

练习十二:利用SRAM设计一个FIFO

利用SRAM设计一个FIFO 1&#xff0c;任务目的2&#xff0c;设计要求3&#xff0c;FIFO接口的设计思路4&#xff0c;FIFO接口的测试&#xff0c;top.v5&#xff0c;FIFO接口的参考设计&#xff0c;fifo_interface.v6&#xff0c;SRAM模型&#xff0c;sram.v代码7&#xff0c;viv…

acwing算法基础之动态规划--数位统计DP、状态压缩DP、树形DP和记忆化搜索

目录 1 基础知识2 模板3 工程化 1 基础知识 暂无。。。 2 模板 暂无。。。 3 工程化 题目1&#xff1a;求a~b中数字0、数字1、…、数字9出现的次数。 思路&#xff1a;先计算1~a中每位数字出现的次数&#xff0c;然后计算1~b-1中每位数字出现的次数&#xff0c;两个相减即…

C盘分析文件大小的软件

https://sourceforge.net/projects/windirstat/ 上面是windirstat的下载链接 界面是这样的&#xff1a; 选择C盘或者D盘&#xff0c;点击OK&#xff0c;就可以分析了 然后就可以看到哪些占比最高&#xff0c;可以针对性的清理

react结合vant的Dialog实现签到弹框操作

1.需求 有时候在开发的时候&#xff0c;需要实现一个签到获取积分的功能&#xff0c;使用react怎么实现呢&#xff1f; 需求如下&#xff1a; 1.当点击“签到”按钮时&#xff0c;弹出签到框 2.展示签到信息&#xff1a; 签到天数&#xff0c; 对应天数签到能够获取的积分&…

JIRA 重建索引

JIRA为了增快搜索速度&#xff0c;为所有的问题的字段生成一个索引文件。这个索引文件存在磁盘的一个文件里面&#xff0c; 并且会实时更新。但是有时候某些操作后&#xff08;例如增加自定义字段&#xff09;&#xff0c;需要重新建索引。 详情请见 Re-indexing after major c…

UDS 诊断报文格式

文章目录 网络层目的N_PDU 格式诊断报文的分类&#xff1a;单帧、多帧 网络层目的 N_PDU(network protocol data unit)&#xff0c;即网络层协议数据单元 网络层最重要的目的就是把数据转换成符合标准的单一数据帧&#xff08;符合can总线规范的&#xff09;&#xff0c;从而…

Spring Initial 脚手架国内镜像地址

官方的脚手架下载太慢了&#xff0c;并且现在没有了Java8的选项&#xff0c;所以找到国内的脚手架镜像地址&#xff0c;推荐给大家。 首先说官方的脚手架 官方的脚手架地址为&#xff1a; https://start.spring.io/ 但是可以看到&#xff0c;并没有了Java8的选项。 所以推荐…

手把手带你离线部署Walrus,体验极简应用交付

Walrus 0.4 已于近日发布&#xff0c;新版本中采用的应用模型可以让运维团队仅需配置1次&#xff0c;即可在多模态的基础设施及环境中运行包括应用服务及周边依赖资源在内的全套应用系统。这极大减少了运维人员的工作量&#xff0c;同时为研发人员屏蔽了底层基础设施的复杂度. …

Web漏洞分析-SQL注入XXE注入(上)

随着互联网的不断普及和Web应用的广泛应用&#xff0c;网络安全问题愈发引起广泛关注。在网络安全领域中&#xff0c;SQL注入和XXE注入是两个备受关注的话题&#xff0c;也是导致许多安全漏洞的主要原因之一。本博客将深入研究这两种常见的Web漏洞&#xff0c;带您探寻背后的原…