Leetcode - 周赛400

目录

一,3168. 候诊室中的最少椅子数

二,3169. 无需开会的工作日

三,3170. 删除星号以后字典序最小的字符串

四,3171. 找到按位与最接近 K 的子数组


一,3168. 候诊室中的最少椅子数

本题是一道模拟题,直接使用一个变量存储实时的人数,每次修改之后,与之前的最大值比较,得出答案。

代码如下: 

class Solution {public int minimumChairs(String s) {int cnt = 0, ans = 0;for(char ch : s.toCharArray()){if(ch == 'E'){cnt++;}else{cnt--;}ans = Math.max(ans, cnt);}return ans;}
}

二,3169. 无需开会的工作日

本题要求没有安排会议的天数,可以正难则反,使用总天数减去工作的天数;也可以直接累加休息的天数。两者意思相同,能理解那种就使用那种。

代码如下:

//正难则反 -> 使用总天数 - 工作天数
class Solution {public int countDays(int days, int[][] meetings) {Arrays.sort(meetings,(x,y)->x[0]-y[0]);int s = 1, e = 0;for(int[] x : meetings){if(x[0] > e){days -= e - s + 1;s = x[0];}e = Math.max(e, x[1]);}days -= e - s + 1;return days;}
}//直接算 -> 累加休息的天数
class Solution {public int countDays(int days, int[][] meetings) {Arrays.sort(meetings,(x,y)->x[0]-y[0]);int ans = 0;int pre = 0;//前一段工作日的最后一天for(int[] x : meetings){ans += Math.max(0, x[0] - pre - 1);pre = Math.max(pre, x[1]);}return ans+days-pre;}
}

三,3170. 删除星号以后字典序最小的字符串

本题题意——每次遇到一个' * '字符,就要删去它本身及其前面字典序最小的字符,如果有多个,可以删除其中任意一个,求删除所有 ' * ' 字符后,剩余字符串的最小字符串。

在写本题之前,需要弄清楚一个问题,如果' * '前面有多个相同的最小字符,究竟要删除哪一个,才能使得剩余的字符串最小?例如:"aaba*",我们只有删除最后一个'a'才能使剩余字符串最小。

弄清上述问题后,就可以写代码了,我们可以使用一个堆来统计遇到 '*' 字符前,删除字符的优先级(如果字符不同,按字典序排序;如果字符相同,下标大的排在前面),再使用一个哈希表来统计删除的字符下标,最后再遍历一次字符串s,将保留下来的字符串起来,得到答案。

代码如下: 

class Solution {public String clearStars(String s) {char[] ch = s.toCharArray();PriorityQueue<int[]> que = new PriorityQueue<>((x, y) -> {if(x[0] == y[0]) return y[1] - x[1];//如果字符相同,下标大的排在前面return x[0] - y[0];//如果字符不同,按字典序排序});Set<Integer> set = new HashSet<>();for(int i=0; i<ch.length; i++){if(ch[i] != '*'){que.offer(new int[]{ch[i]-'a', i});}else{set.add(que.poll()[1]);//统计删除的字符set.add(i);}}StringBuilder res = new StringBuilder();for(int i=0; i<ch.length; i++){if(!set.contains(i)){res.append(ch[i]);}}return res.toString();}
}

四,3171. 找到按位与最接近 K 的子数组

1.位运算性质 + 数学

  • 该题如果暴力求解,它的时间复杂度为O(n^2),会超时,但是如果添加一个 if 判断,就可以将它的复杂度降为O(nlogU),画个图理解一下:

class Solution {//O(nlogU) U=max(nums)public int minimumDifference(int[] nums, int k) {int ans = Integer.MAX_VALUE;for(int i=0; i<nums.length; i++){int x = nums[i];ans = Math.min(ans, Math.abs(k - x));for(int j=i-1; j>=0; j--){if((nums[j]&x)==nums[j]) break;// nums[j] &= x 只会变小,而最多只有32位不一样// 所以时间复杂度最多就是O(32*n)nums[j] &= x;ans = Math.min(ans, Math.abs(k - nums[j]));}}return ans;}
}

2.滑动窗口

  • &的性质——&的数越多,&值越小,可以使用滑窗,假设and是【l,r】的&值,如果 and小于 k(再继续&的话,and会更小,abs(k-and)的值就会变大),所以要将 nums[l] 回退,l++。注意:要不断地更新ans的值。
class Solution {public int minimumDifference(int[] nums, int k) {int ans = Integer.MAX_VALUE;int[] cnt = new int[32];int and = -1;for(int l=0,r=0; r<nums.length; r++){and &= nums[r];for(int i=0; i<32; i++){cnt[i] += (nums[r]>>i)&1;}ans = Math.min(ans, Math.abs(k - and));while(l <= r && and < k){for(int i=0; i<32; i++){cnt[i] -= (nums[l]>>i)&1;if(cnt[i] == r-l){and |= (1<<i);}}l++;ans = Math.min(ans, Math.abs(k - and));}}return ans;}
}

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

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

相关文章

归并排序法

归并排序法是典型的分治算法应用&#xff0c;1946年由冯.诺伊曼发明。 算法思路&#xff1a;归并排序算法有两个基本操作&#xff0c;一是分&#xff0c;也就是把原数组划分成两个子数组的过程&#xff0c;另一个是治&#xff0c;它将两个有序数组合并成一个更大的有序数组。 …

基于小波区间相关的信号降噪方法(MATLAB 2021B)

在我们处理信号过程中最重要的任务就是找到信号隐藏的规律和信号的特征。常用的傅里叶分析法只能用于在时间域或者频率域上分析信号&#xff0c;而通常的数据会在时间域和频率域均有特征。而小波分析是继傅里叶分析之后的一大突破性创新&#xff0c;也是近年来在学术界非常热门…

扩散世界模型已训练出赶超人类的智能体?

论文标题&#xff1a; Diffusion for World Modeling:Visual Details Matter in Atari 论文作者&#xff1a; Eloi Alonso, Adam Jelley, Vincent Micheli, Anssi Kanervisto, Amos Storkey, Tim Pearce, Franois Fleuret 项目地址&#xff1a; https://github.com/eloial…

基于EBAZ4205矿板的图像处理:10gamma变换

基于EBAZ4205矿板的图像处理&#xff1a;10gamma变换 项目全部文件 会上传项目全部文件&#xff0c;如果没传&#xff0c;可以私信催我一下&#xff0c;最近太忙了 先看效果 我的项目中的gamma的变换系数为2.2&#xff0c;是会让图像整体变暗的&#xff0c;看右图说明我的ga…

CPVT(ICLR 2023)论文解读

paper&#xff1a;Conditional Positional Encodings for Vision Transformers official implementation&#xff1a;GitHub - Meituan-AutoML/CPVT 存在的问题 位置编码的局限性&#xff1a;传统Transformer中的绝对位置编码&#xff08;无论是可学习的还是固定的&#xff…

【c++进阶(二)】STL之string类的模拟实现

&#x1f493;博主CSDN主页:Am心若依旧&#x1f493; ⏩专栏分类c从入门到精通⏪ &#x1f69a;代码仓库:青酒余成&#x1f69a; &#x1f339;关注我&#x1faf5;带你学习更多c   &#x1f51d;&#x1f51d; 1.前言 本章重点 本章主要介绍一些关键接口的模拟实现&#xff…

0603《哎选》已经稳定运行2年

0603《哎选》已经稳定运行2年 0603《哎选》已经稳定运行2年 介绍 2022年6月3日经过一年的努力&#xff0c;优雅草蜻蜓G系统原生版诞生&#xff0c;本产品应用于《哎选》&#xff0c;经过2年的运营不断的更新迭代&#xff0c;目前产品已经有了一定的用户量&#xff0c;本产品…

Spark 3.5.1 升级 Java 17 异常 cannot access class sun.nio.ch.DirectBuffer

异常说明 使用Spark 3.5.1 升级到Java17的时候会有一个异常&#xff0c;异常如下 SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.htm…

离轴磁编案例分享 - 机器人关机模组

客户产品 六轴协作机器人产品 关机模组 关机模组内部结构 项目介绍 客户需求: 需要离轴&#xff0c;优点&#xff1a;可以中空走线&#xff0c;方便线缆从机器人中间穿过去&#xff0c;可以更好得保护好线缆&#xff0c;不需要把线漏在外面&#xff0c;影响使用和产品寿命。目…

最适合上班族和宝妈的兼职副业,一天500多,小众副业项目

近年来&#xff0c;地方特色小吃逐渐受到人们的热烈追捧&#xff0c;尤其是在直播的助力下&#xff0c;许多地方的特色小吃得以走进大众视野&#xff0c;吸引了大量流量和人气。因此&#xff0c;有很大一部分商家和创业者看准了这一商机&#xff0c;纷纷投身于地方特色小吃的制…

怎么把多种内容做成二维码?扫码展现多种内容的制作方法

现在很多的场景下都有不同类型的二维码&#xff0c;用来承载内容为用户提供内容展示&#xff0c;比如图片、视频、文字、文件、地图等等内容&#xff0c;都可以组合起来通过扫码的方式在手机上展示。那么如何制作组合内容的二维码相信有很多的小伙伴都非常的感兴趣。 其实二维…

众汇:外汇狙击指标如何使用?

对于投资者来说&#xff0c;我们各位交易的目的是什么?WeTrade众汇认为那就是盈利。所以来说有一个指标对各位投资者来说那是相当有帮助的。这是因为对于交易者而言&#xff0c;利用这些指标可以快速识别盈利的买卖时机。当我们选择一个指标之后&#xff0c;深入了解其适用范围…

「布道师系列文章」众安保险王凯解析 Kafka 网络通信

作者&#xff5c;众安保险基础平台 Java 开发专家王凯 引言 今天给大家带来的是 Kafka 网路通信主要流程的解析&#xff08;基于 Apache Kafka 3.7[2]&#xff09;。同时引申分析了业界当前较火的AutoMQ基于Kafka在网络通信层面的优化和提升。 01 如何构建一个基本的请求…

学习笔记(一)——Langchain基本操作与函数

学习笔记(一)——Langchain基本操作与函数 目录 学习笔记(一)——Langchain基本操作与函数基本初始化配置LangsmithLanguage Models 基础指令传递信息OutputParsers 输出解析器chain 链Prompt Templates 提示模板Message History 消息历史记录Managing Conversation History 管…

XL7005A SOP-8 0.4A1.25-20V 150KHz降压直流转换器芯片

XL7005A作为一款高性能的降压型电源管理芯片&#xff0c;在智能家居中有着广泛的应用。以下是一些具体的案例&#xff1a; 1. 智能灯具&#xff1a;XL7005A可用于控制LED灯的电源&#xff0c;提供稳定高效的电源支持&#xff0c;确保灯具亮度稳定且无频闪&#xff0c;提高用户体…

springboot从2.7.2 升级到 3.3.0

文章目录 概要准备报错调整小结后记 概要 时代在进步&#xff0c;springboot已经来到了3.3.0 , 于是我们也打算升级下sbvadmin到3.3&#xff0c; jdk使用21的版本&#xff0c;下面是升级过程中碰到的一些问题&#xff0c;问题不大。 2.7.2 -> 3.3.0 准备 下载jdk21&#…

windows的软件修改图标

要修改一个可执行文件&#xff08;.exe&#xff09;的图标&#xff0c;你可以使用 Resource Hacker 这样的工具。Resource Hacker 是一个免费的资源编辑器&#xff0c;可以用于修改和编辑 Windows 可执行文件中的资源。 以下是一个简单的步骤来修改一个 .exe 文件的图标&#x…

shell脚本 字符串拼接变量赋值失效

问题现象&#xff1a; 代码如下&#xff1a; 执行结果&#xff1a; 可以看到data_dir属性是有值的&#xff0c;但是做字符串拼接变量赋值失效了很奇怪 怀疑赋值哪里写错了 问题分析&#xff1a; 1. 还是觉得赋值没有问题&#xff0c;手动显式赋值再执行下 执行结果&#…

职场如同“染缸”,老板只是给你个平台,染的好坏,全凭运气!

无论哪个单位&#xff0c;在职场大染缸里总有那么一拨同事是你喜欢的&#xff0c;也有那么一拨同事是不痛不痒的&#xff0c;还有那么一拨同事却是你怎么看都觉得不顺眼的。“不顺眼”的定义很宽泛&#xff0c;可能是他曾经的一些言论触及了你的道德底线&#xff0c;可能是他的…

C++数据结构之:堆Heap

摘要&#xff1a; it人员无论是使用哪种高级语言开发东东&#xff0c;想要更高效有层次的开发程序的话都躲不开三件套&#xff1a;数据结构&#xff0c;算法和设计模式。数据结构是相互之间存在一种或多种特定关系的数据元素的集合&#xff0c;即带“结构”的数据元素的集合&am…