Leetcode - 周赛416

目录

一,3295. 举报垃圾信息

二,3296. 移山所需的最少秒数

三,3297. 统计重新排列后包含另一个字符串的子字符串数目 I

四,3298. 统计重新排列后包含另一个字符串的子字符串数目 II


一,3295. 举报垃圾信息

本题就是求message中是否至少存在2两个单词在banndedWord中,我们可以直接使用hash记录banndedWord中的字符串,再枚举message,使用cnt记录有几个单词在哈希表中,最后返回 cnt > 1.

代码如下:

class Solution {public boolean reportSpam(String[] message, String[] bannedWords) {Set<String> set = new HashSet<>();for(String x : bannedWords){set.add(x);}int cnt = 0;for(String x : message){if(set.contains(x)) cnt++;}return cnt > 1;}
}

二,3296. 移山所需的最少秒数

本题有两种做法:

1.最小堆

维护每个工人降低山的高度 x 所花费的时间,直到山的高度为0,返回堆顶的元素。

class Solution {public long minNumberOfSeconds(int mountainHeight, int[] workerTimes) {PriorityQueue<long[]> que = new PriorityQueue<>((x,y)->Long.compare(x[0], y[0]));for(long x : workerTimes){que.offer(new long[]{x, 1L, x});//时间,降低h,倍率}long ans = 0;while(mountainHeight-- > 0){long[] t = que.poll();long x = t[0], h = t[1], base = t[2];ans = x;que.offer(new long[]{x+(h+1)*base, h+1, base});}return ans;}
}

2.二分答案

给的时间越长,工人就越可能完成移山,具有单调性,可以二分,接下来就是如何判断二分的时间 t 是否能完成移山,假设 x = workertimes[i],能减低的山的高度为 h,我们可以得到这个方程 (h+1)*h/2*x = t,化简得到 h^2 + h - 2*t/x = 0,通过一元二次方程求根公式x = -b+sqrt(b^2-4ac)/2a 或者-b-sqrt(b^2-4ac)/2a(由于答案为正整数,舍去), 求解 h = -1 + sqrt(1+8*t/x))/2,然后将所有工人在 t 时间内所能降低的山的高度加起来,如果 < mountainHeight,l = mid + 1,否则 r = mid - 1.

class Solution {public long minNumberOfSeconds(int mountainHeight, int[] workerTimes) {long ans = 0;long l = 1, r = (long)(mountainHeight+1)*mountainHeight / 2 * workerTimes[0]; while(l <= r){long mid = (l + r) / 2;if(check(mid, mountainHeight, workerTimes))r = mid - 1;elsel = mid + 1;}return r + 1;}boolean check(long t, int h, int[] w){int ans = 0;for(int x : w){ans += Math.max(0, (int)(-1 + (int)Math.sqrt(1+8*t/x))/2);}return ans >= h;}
}

三,3297. 统计重新排列后包含另一个字符串的子字符串数目 I

本题题意就是找word1中有多少个子字符串,且都要包含word2中的每个字符。直接使用滑动窗口来做。先使用一个数组cnt记录word2中每个字符出现的次数。枚举word1中子字符串的右端点,如果[L,R]的字符串中包含word2中的每个字符,我们就可以移动左端点,直到不满足条件为止,也就是说以L为左端点时,右端点[R,n)都满足条件,这时将 ans += n - R,代码如下:

class Solution {public long validSubstringCount(String word1, String word2) {char[] w1 = word1.toCharArray();char[] w2 = word2.toCharArray();int[] cnt = new int[26];for(char c : w2){cnt[c-'a']++;}long ans = 0;for(int l=0, r=0; r<w1.length; r++){boolean flg = false;char c = w1[r];cnt[c-'a']--;for(int i=0; i<26; i++){if(cnt[i] > 0) flg = true; }if(flg) continue;while(cnt[w1[l]-'a'] <= 0){ans += w1.length - r;if(++cnt[w1[l++]-'a'] > 0) break;}}return ans;}
}

四,3298. 统计重新排列后包含另一个字符串的子字符串数目 II

本题与T3相同,不过数据范围更大,这里我们再讲一个O(n)做法,T3的做法是O(26n),也就是判断子字符串是否包含所有word2需要枚举cnt数组,其实我们可以额外添加一个变量less,记录word2中几个不同的字符。当word1子字符串中包含了n个x字符(word2中存在n个x字符)时,即cnt[x-'a']=0时,less--,那么 less = 0 说明该字符串满足条件。

代码如下:

class Solution {public long validSubstringCount(String word1, String word2) {char[] w1 = word1.toCharArray();char[] w2 = word2.toCharArray();int[] cnt = new int[26];for(char c : w2){cnt[c-'a']++;}int less = 0;for(int x : cnt){if(x > 0){less++;}}long ans = 0;for(int l=0, r=0; r<w1.length; r++){char c = w1[r];if(--cnt[c-'a'] == 0) less--;//只有原来cnt[x]>0(即删去的全是word2中存在的字符时),less--while(less == 0){  ans += w1.length - r; if(++cnt[w1[l++]-'a'] > 0){less++;}   }}return ans;}
}

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

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

相关文章

Linux 安装nginx

下载安装 https://nginx.org/en/download.html 解压 tar -zxvf nginx-1.26.2.tar.gz -C /opt chmod 777 -R /opt/nginx-1.26.2/编译 && 安装 # 安装到同目录以免乱套&#xff0c;一定要先创建目录 mkdir /opt/nginx-1.26.2/nginx/# 编译 make # 安装&#xff0c;大…

将Mixamo的模型和动画导入UE5

首先进入Mixamo的官网 , 点击 Character 选择一个模型 (当然你也可以自己上传模型/绑定动画) 然后点击下载 , 这个作为带骨骼的模型 选择FBX格式 , T Pose 直接下载 点击 Animations 选择动画 , 搜索 idle 默认站立动画 点击下载 , 格式选择 FBX , 不带模型只要骨骼 , 帧数选6…

MySQL_表_进阶(2/2)

上一章我们谈了排序子句&#xff0c;使用ORDER BY 字段 DESC/ASC。以及左右连接的多关系查询。 今天&#xff0c;没错&#xff0c;四张表最后两个需求 ✨涉及聚合函数查询与指定别名 四张表&#xff1a; 学院表&#xff1a;(testdb.dept) 课程表&#xff1a;(testdb.course) 选…

Rust编程的if选择语句

【图书介绍】《Rust编程与项目实战》-CSDN博客 《Rust编程与项目实战》(朱文伟&#xff0c;李建英)【摘要 书评 试读】- 京东图书 (jd.com) Rust编程与项目实战_夏天又到了的博客-CSDN博客 Rust语言实现选择结构时&#xff0c;根据某种条件的成立与否而采用不同的程序段进行…

基于nodejs+vue的农产品销售管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

FortiGate 无线组网

无线管理与配置 FortiAP 连接 internal 接口之后自动获得 ip 地址&#xff1a;192.168.1.xxx/24在 FortiGate 中创建 SSIDFortiGate 自动发现 FortiAP&#xff0c;将 FortiAP 添加到 FortiGate将 SSID 和 FortiAP 关联创建防火墙策略 下面我们就来一起看看在 FortiGate 中该如…

ModbusTCP通讯错误的排查

Modbus是一种由MODICON公司开发的工业现场总线协议标准&#xff0c;是一项应用层报文传输协议。该协议用于传输数字和模拟变量[1]。有关该协议的报文具体格式&#xff0c;以及一些基本概念&#xff0c;见[1]。 本文以一个例子&#xff0c;阐述当ModbusTCP通讯出现错误的时候&a…

开源鸿蒙OpenHarmony系统更换开机Logo方法,瑞芯微RK3566鸿蒙开发板

本文适用于开源鸿蒙OpenHarmony系统更换开机Logo&#xff0c;本次使用的是触觉智能的Purple Pi OH鸿蒙开源主板&#xff0c;搭载了瑞芯微RK3566芯片&#xff0c;类树莓派设计&#xff0c;是Laval官方社区主荐的一款鸿蒙开发主板。 介绍 OpenHarmony的品牌标志、版本信息、项目…

计算机毕业设计 基于Hadoop的智慧校园数据共享平台的设计与实现 Python 数据分析 可视化大屏 附源码 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

探索EasyCVR视频融合平台:在视频编解码与转码领域的灵活性优势

随着视频监控技术的飞速发展&#xff0c;各类应用场景对视频数据的处理需求日益复杂多样。从公共安全到智慧城市&#xff0c;再到工业监控&#xff0c;高效、灵活的视频处理能力成为衡量视频融合平台性能的重要标准。在众多解决方案中&#xff0c;EasyCVR视频融合平台凭借其在视…

大觅网之自动化部署(Automated Deployment of Da Mi Network)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 本人主要分享计算机核心技…

音视频整体解码流程和同步流程

目录 1. 整体解码流程1. 初始化 FFmpeg2. 打开媒体文件3. 查找解码器4. 打开解码器5. 读取和解码数据6. 处理解码后的帧7. 释放资源 2. 音视频同步整体流程1. 解复用媒体流2. 解码3. 以音频为时钟源进行音视频同步的策略4. 缓冲区设计 现在先说大体流程&#xff0c;不分析代码 …

使用python爬取豆瓣网站?如何简单的爬取豆瓣网站?

1.对python爬虫的看法 首先说说我对python的看法&#xff0c;我的专业是大数据&#xff0c;我从事的工作是java开发&#xff0c;但是在工作之余&#xff0c;我对python又很感兴趣&#xff0c;因为我觉得python是一门很好的语言&#xff0c;第一&#xff1a;它可以用来爬取数据…

如何使用 Rust 框架进行 RESTful API 的开发?

一、RESTful API 的开发 使用 Rust 框架进行 RESTful API 开发&#xff0c;你可以选择多种流行的 Rust Web 框架&#xff0c;如 Actix-web、Rocket、Warp 和 Tide 等。以下是使用这些框架进行 RESTful API 开发的基本步骤和概念&#xff1a; 选择框架&#xff1a;根据项…

探索 Snowflake 与 Databend 的云原生数仓技术与应用实践 | Data Infra NO.21 回顾

上周六&#xff0c;第二十一期「Data Infra 研究社」在线上与大家相见。活动邀请到了西门子数据分析师陈砚林与 Databend 联合创始人王吟&#xff0c;为我们带来了一场关于 Snowflake 和 Databend 的技术探索。Snowflake&#xff0c;这个市值曾超过 700 亿美元的云原生数据仓库…

李宏毅机器学习2023-HW10-Adversarial Attack

文章目录 TaskBaselineFGSM (Fast Gradient Sign Method (FGSM)I-FGSM(Iterative Fast Gradient Sign Method)MI-FGSM(Momentum Iterative Fast Gradient Sign Method)M-DI2-FGSM(Diverse Input Momentum Iterative Fast Gradient Sign Method) Reportfgsm attackJepg Compress…

性能优化与资源管理:优化Selenium脚本的执行效率,合理管理浏览器实例和系统资源

目录 引言 一、Selenium基础与常用方法 1.1 Selenium简介 1.2 Selenium基础用法 二、Selenium性能优化技巧 2.1 使用WebDriverWait实现显式等待 2.2 启用无头模式 2.3 设置合理的页面加载策略 2.4 禁用图片和JavaScript加载 2.5 优化元素定位 2.6 合理使用隐式等待和…

从0开始linux(5)——vim

欢迎来到博主的专栏&#xff1a;从0开始linux 博主ID&#xff1a;代码小豪 文章目录 vim的多种模式底行模式命令命令模式视块模式&#xff08;visual block&#xff09; vim的配置 vim是linux系统的文本编辑器。就像windows的记事本一样。 使用vim指令可以使用vim打开一个文本文…

JavaWeb美食推荐管理系统

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 spring-mybatis.xml3.5 spring-mvc.xml3.5 login.jsp 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优…

JavaScript 学习

一、输出 为方便调试可以输出内容&#xff0c;但是用户是看不到的。要在开发者模式中看。 console . log ( "Hello" )&#xff1b; 二、外部文件引用 可以直接在html中写JS <head> <meta charset"utf-8"> <script> console.log("he…