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

news2024/9/24 21:49:49

不愧是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;
    }
}

 

 

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

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

相关文章

Video Studio会声会影2024中文直装旗舰版

Corel Video Studio会声会影2024中文直装旗舰版是一款很流行的视频编辑处理软件&#xff0c;由于其简单易用&#xff0c;且功能不错&#xff0c;在国内拥有众多使用者&#xff0c;小编之前给大家分享过Corel Video Studio Ultimate会声会影2024旗舰版中文版&#xff0c;今天再为…

知识蒸馏的蒸馏损失方法代码总结(包括:基于logits的方法:KLDiv,dist,dkd等,基于中间层提示的方法:)

有两种知识蒸馏方法&#xff1a;一种利用教师模型的输出概率&#xff08;基于logits的方法&#xff09;[15,14,11]&#xff0c;另一种利用教师模型的中间表示&#xff08;基于提示的方法&#xff09;[12,13,18,17]。基于logits的方法利用教师的输出作为辅助信号来训练一个较小的…

免费的SEO外链发布工具,提升排名的利器

互联网已经成为信息传播和商业发展的重要平台。而对于拥有网站的个人、企业来说&#xff0c;如何让自己的网站在搜索引擎中脱颖而出&#xff1f;SEO&#xff08;Search Engine Optimization&#xff09;作为提高网站在搜索引擎中排名的关键手段. 什么是SEO外链&#xff1f; S…

C#,数值计算——计算实对称矩阵所有特征值和特征向量的雅可比(Jacobi)方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// Computes all eigenvalues and eigenvectors of /// a real symmetric matrix by Jacobis method. /// </summary> public class Jacobi { private …

09、pytest多种调用方式

官方用例 # content of myivoke.py import sys import pytestclass MyPlugin:def pytest_sessionfinish(self):print("*** test run reporting finishing")if __name__ "__main__":sys.exit(pytest.main(["-qq"],plugins[MyPlugin()]))# conte…

Linux 输入输出重定向

Linux 系统默认的输入输出有3种类型&#xff0c;分别为标准输入、标准输出、错误输出&#xff0c;并且Linux 还为这几类设备分别分配了一个所谓的文件描述符&#xff0c;如下是他们之间的对应关系。 输入输出类型文件描述符系统中设备名通常对应的物理设备标准输入设备0/dev/s…

IntelliJ IDEA的下载安装配置步骤详解

引言 IntelliJ IDEA 是一款功能强大的集成开发环境&#xff0c;它具有许多优势&#xff0c;适用于各种开发过程。本文将介绍 IDEA 的主要优势&#xff0c;并提供详细的安装配置步骤。 介绍 IntelliJ IDEA&#xff08;以下简称 IDEA&#xff09;之所以被广泛使用&#xff0c;…

SpringBoot集成i18n(多语言)

配置文件 spring: messages: basename: il8n/messages # 配置国际化资源文件路径 fallback-to-system-locale: true # 是否使用系统默认的语言环境作为备选项 国际化配置 import org.springframework.context.annotation.Bean; import org.spr…

基于Eclipse+Mysql+Tomcat开发的 教学评价管理系统

基于EclipseMysqlTomcat开发的 教学评价管理系统 项目介绍&#x1f481;&#x1f3fb; 随着教育信息化的发展&#xff0c;教学评价管理系统已经成为了学校、教育机构等场所必不可少的一部分。本项目是基于EclipseMysqlTomcat开发的一套教学评价管理系统&#xff0c;旨在帮助教育…

成为AI产品经理——回归模型评估(MSE、RMSE、MAE、R方)

分类问题的评估是看实际类别和预测类别是否一致&#xff0c;它的评估指标主要有混淆矩阵、AUC、KS。回归问题的评估是看实际值和预测值是否一致&#xff0c;它的评估指标包括MAE、MSE、RMSE、R方。 如果我们预测第二天某支股票的价格&#xff0c;给一个模型 y1.5x&#xff0c;…

计算机网络之IP篇

目录 一、IP 的基本认识 二、DNS 三、ARP 四、DHCP 五、NAT 六、ICMP 七、IGMP 七、ping 的工作原理 ping-----查询报文的使用 traceroute —— 差错报文类型的使用 八、断网了还能 ping 通 127.0.0.1 吗&#xff1f; 8.1、什么是 127.0.0.1 &#xff1f; 8.2、为…

利用 FormData 实现文件上传、监控网路速度和上传进度(前端原生,后端 koa)

利用 FormData 实现文件上传 基础功能&#xff1a;上传文件 演示如下&#xff1a; 概括流程&#xff1a; 前端&#xff1a;把文件数据获取并 append 到 FormData 对象中后端&#xff1a;通过 ctx.request.files 对象拿到二进制数据&#xff0c;获得 node 暂存的文件路径 前端…

12.2旋转,SPLAY树的各种操作(SPLAY与AVL是两种BST)

Splay树和AVL树是两种不同的自平衡二叉搜索树实现。 1. 平衡条件&#xff1a;AVL树通过维护每个节点的平衡因子&#xff08;左子树高度减去右子树高度&#xff09;来保持平衡&#xff0c;要求每个节点的平衡因子的绝对值不超过1。Splay树则通过经过每次操作后将最近访问的节点…

Mybatis 操作续集(连着上文一起看)

"查"操作(企业开发中尽量不使用*,需要哪些字段就写哪些字段,都需要就全写上) Mybatis 会自动地根据数据库的字段名和Java对象的属性名进行映射,如果名称一样就进行赋值 但是那些名称不一样的,我们想要拿到,该怎么拿呢? 一开始数据库字段名和Java对象属性名如下图…

mfc 设置excel 单元格的列宽

CString strTL, strBR;strTL.Format(L"%s%d", GetExcelColName(cd.nCol), cd.nRow);strBR strTL;CRange rangeMerge range.get_Range(_variant_t(strTL), _variant_t(strBR));rangeMerge.put_ColumnWidth(_variant_t((long)(20))); 宽度设置函数为 &#xff1a; pu…

软件测试要学习的基础知识——黑盒测试

黑盒测试概述 黑盒测试也叫功能测试&#xff0c;通过测试来检测每个功能是否都能正常使用。在测试中&#xff0c;把程序看作是一个不能打开的黑盒子&#xff0c;在完全不考虑程序内部结构和内部特性的情况下&#xff0c;对程序接口进行测试&#xff0c;只检查程序功能是否按照…

Milvus 再上新!支持 Upsert、Kafka Connector、集成 Airbyte,助力高效数据流处理

Milvus 已支持 Upsert、 Kafka Connector、Airbyte&#xff01; 在上周的文章中《登陆 Azure、发布新版本……Zilliz 昨夜今晨发生了什么&#xff1f;》&#xff0c;我们已经透露过 Milvus&#xff08;Zilliz Cloud&#xff09;为提高数据流处理效率&#xff0c; 先后支持了 Up…

为告警设备设置服务端属性,在tb中标记存在告警的设备

有位读者想要实现标记系统中存在告警的设备,于是我给他做了三个方案。各有优缺点。 第一个方案时,告警是在规则链里手动创建的,通过告警数,+1,-1来标记设备告警属性。 第二种是当设备通过设备配置创建,清空告警。这种情况只适用于一次遥测创建,清空一个告警。不支持单次…

【Vue】使用 Vue CLI 脚手架创建 Vue 项目(使用GUI创建)

前言 在开始使用Vue进行开发之前&#xff0c;我们需要先创建一个Vue项目。Vue CLI&#xff08;Command Line Interface&#xff09;是一个官方提供的脚手架工具&#xff0c;可以帮助我们快速创建Vue项目。Vue CLI也提供了一个可视化的GUI界面来创建和管理Vue项目。 步骤 打开终…

【离散差分】LeetCode2953:统计完全子字符串

作者推荐 [二分查找]LeetCode2040:两个有序数组的第 K 小乘积 本题其它解法 【滑动窗口】LeetCode2953:统计完全子字符串 涉及知识点 分块循环 离散差分 题目 给你一个字符串 word 和一个整数 k 。 如果 word 的一个子字符串 s 满足以下条件&#xff0c;我们称它是 完全…