【力扣周赛】第 112 场双周赛

文章目录

  • 竞赛链接
  • Q1:7021. 判断通过操作能否让字符串相等 I
  • Q2:7005. 判断通过操作能否让字符串相等 II(贪心)
  • Q3:2841. 几乎唯一子数组的最大和
    • 竞赛时代码——滑动窗口
  • Q4:8050. 统计一个字符串的 k 子序列美丽值最大的数目(贪心+计数+组合数学)
  • 成绩记录

竞赛链接

https://leetcode.cn/contest/biweekly-contest-112/

Q1:7021. 判断通过操作能否让字符串相等 I

https://leetcode.cn/problems/check-if-strings-can-be-made-equal-with-operations-i/

在这里插入图片描述

提示:
s1.length == s2.length == 4
s1 和 s2 只包含小写英文字母。

class Solution {public boolean canBeEqual(String s1, String s2) {// 取出各个字符char a = s1.charAt(0), b = s1.charAt(1), c = s1.charAt(2), d = s1.charAt(3);char a2 = s2.charAt(0), b2 = s2.charAt(1), c2 = s2.charAt(2), d2 = s2.charAt(3);// 比较return (a == a2 || a == c2) && (a + c == a2 + c2) && (b == b2 || b == d2) && (b + d == b2 + d2);}
}

Q2:7005. 判断通过操作能否让字符串相等 II(贪心)

https://leetcode.cn/problems/check-if-strings-can-be-made-equal-with-operations-ii/description/

在这里插入图片描述

提示:
n == s1.length == s2.length
1 <= n <= 10^5
s1 和 s2 只包含小写英文字母。

只要两个字符串的奇偶位的各个字符的数量相等,就一定可以通过交换位置换成相同的字符串。

class Solution {public boolean checkStrings(String s1, String s2) {// 分别记录两个字符串的奇偶位字符数量int[] cnt1 = new int[26], cnt2 = new int[26], cnt3 = new int[26], cnt4 = new int[26];int n = s1.length();for (int i = 0; i < n; ++i) {if (i % 2 == 0) {cnt1[s1.charAt(i) - 'a']++;cnt3[s2.charAt(i) - 'a']++;} else {cnt2[s1.charAt(i) - 'a']++;cnt4[s2.charAt(i) - 'a']++;}}// 比较是否相等return Arrays.equals(cnt1, cnt3) && Arrays.equals(cnt2, cnt4);}
}

Q3:2841. 几乎唯一子数组的最大和

https://leetcode.cn/problems/maximum-sum-of-almost-unique-subarray/

在这里插入图片描述
提示:
1 <= nums.length <= 2 * 10^4
1 <= m <= k <= nums.length
1 <= nums[i] <= 10^9

竞赛时代码——滑动窗口

滑动窗口,维护窗口内的总和以及独特元素数量。

class Solution {public long maxSum(List<Integer> nums, int m, int k) {Map<Integer, Integer> cnt = new HashMap<>();int n = nums.size();long sum = 0, ans = 0;// 双指针+滑动窗口for (int i = 0, j = 0; i < n; ++i) {// 加入元素cnt.merge(nums.get(i), 1, Integer::sum);sum += nums.get(i);// 移除元素if (i - j >= k) {       cnt.merge(nums.get(j), -1, Integer::sum);sum -= nums.get(j);if (cnt.get(nums.get(j)) == 0) cnt.remove(nums.get(j));j++;}// 如果是几乎唯一子数组,就尝试更新答案if (i - j + 1 == k && cnt.size() >= m) ans = Math.max(ans, sum);}return ans;}
}

Q4:8050. 统计一个字符串的 k 子序列美丽值最大的数目(贪心+计数+组合数学)

https://leetcode.cn/problems/count-k-subsequences-of-a-string-with-maximum-beauty/
在这里插入图片描述

提示:
1 <= s.length <= 2 * 10^5
1 <= k <= s.length
s 只包含小写英文字母。

贪心地选取出现次数最多的字符。

如果若干个字符的出现次数一样,那么就把答案乘上对应的组合数。

比如从 0,1,1,1,2,3 中取 k 为 4,那么 3 和 2 是一定要被选择的,然后在 3 个 1 中任意选择 2 个 1 即可。答案为 3 * 2 * 1 * C(3,2) = 18。

class Solution {public int countKSubsequencesWithMaxBeauty(String s, int k) {if (k > 26) return 0;long[] cnt = new long[26];          // 记录各个字符的数量for (char ch: s.toCharArray()) {cnt[ch - 'a']++;}Arrays.sort(cnt);                   // 按字符数量排序long ans = 1, MOD = (long)1e9 + 7;long mn = cnt[26 - k];              // 可选择的出现次数最少的字符出现次数ans = mn;// 求组合数是几选几 int end = -1;for (int i = 26 - k + 1; i < 26; ++i) {if (cnt[i] != mn) {if (end == -1) end = i;}ans = (ans * cnt[i]) % MOD;}if (end == -1) end = 26;for (int i = 0; i < end; ++i) {if (cnt[i] == mn) {int x = end - i;long y = op(x, k - 26 + end);   // 求组合数ans = (ans * y) % MOD;break;}}return (int)ans;}// 求组合数C(x, y)public long op(int x, int y) {long ans = 1, m = 1;while (y != 0) {ans *= x;m *= y;x--;y--;}return ans / m;}
}

成绩记录

在这里插入图片描述

就,还好。
WA 次数有点多。

在这里插入图片描述

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

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

相关文章

【设备树笔记整理7】实践操作

1 使用设备树给DM9000网卡_触摸屏指定中断 1.1 修改方法 根据设备节点的compatible属性&#xff0c;在驱动程序中构造/注册 platform_driver&#xff0c;在 platform_driver 的 probe 函数中获得中断资源。 1.2 实验方法 以下是修改好的代码&#xff1a;第6课第1节_网卡_触摸…

SIEM 中不同类型日志监控及分析

安全信息和事件管理&#xff08;SIEM&#xff09;解决方案通过监控来自网络的不同类型的数据来确保组织网络的健康安全状况&#xff0c;日志数据记录设备上发生的每个活动以及整个网络中的应用程序&#xff0c;若要评估网络的安全状况&#xff0c;SIEM 解决方案必须收集和分析不…

C/C++源程序到可执行程序exe的全过程(及汇编和反汇编的区别)

1.C/C源程序到可执行程序exe的全过程&#xff08;及汇编和反汇编的区别&#xff09; 一个现代编译器的主要工作流程如下&#xff1a; 源程序&#xff08;source code&#xff09;→预处理器&#xff08;preprocessor&#xff09;→编译器&#xff08;compiler&#xff09;→汇…

解决uniapp手机真机调试时找不到手机问题

1、检查 USB 调试是否开启 2、检查是否有选择 文件 传输 选项 3、如果上述都做了还找不到&#xff0c;可以看看开发者选项中的【USB设置】&#xff0c;把模式改为 MIDI 模式

ToBeWritten之ATTCK 场景实践

也许每个人出生的时候都以为这世界都是为他一个人而存在的&#xff0c;当他发现自己错的时候&#xff0c;他便开始长大 少走了弯路&#xff0c;也就错过了风景&#xff0c;无论如何&#xff0c;感谢经历 转移发布平台通知&#xff1a;将不再在CSDN博客发布新文章&#xff0c;敬…

PHP8创建数组-PHP8知识详解

在php 8中&#xff0c;您可以使用以下方法创建数组&#xff1a;使用数组字面量创建数组、使用 array() 函数创建数组、通过赋值的方式创建数组、使用array_push()函数将元素添加到数组末尾、使用range()函数创建数值数组、使用compact()函数创建带有变量名的数组、使用array_fi…

基于PyTorch的交通标志目标检测系统

一、开发环境 Windows 10PyCharm 2021.3.2Python 3.7PyTorch 1.7.0 二、制作交通标志数据集&#xff0c;如下图 三、配置好数据集的地址&#xff0c;然后开始训练 python train.py --data traffic_data.yaml --cfg traffic_yolov5s.yaml --weights pretrained/yolov5s.pt --e…

深入理解线段树

大家好&#xff0c;我是 方圆。线段树&#xff08;Segment Tree&#xff09; 是常用的维护 区间信息 的数据结构&#xff0c;它可以在 O(logn) 的时间复杂度下实现单点修改、区间修改、区间查询&#xff08;区间求和、区间最大值或区间最小值&#xff09;等操作&#xff0c;常用…

发生OOM时JVM会退出吗

程序是否退出和发生 OOM 无关 需要明确&#xff0c;程序是否退出和发生 OOM 无关&#xff0c;而和当前是否还有存活的非守护线程有关。 只要还有运行中的子线程&#xff0c;即使 main 线程结束或异常崩溃了&#xff0c;程序也不会停止。 public class TestThreadRun {privat…

Ubuntu下Python3与Python2相互切换

参考文章&#xff1a;https://blog.csdn.net/Nicolas_shen/article/details/124144931 设置优先级 sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 200

Spring Cloud--从零开始搭建微服务基础环境【四】

&#x1f600;前言 本篇博文是关于Spring Cloud–从零开始搭建微服务基础环境【四】&#xff0c;希望你能够喜欢 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大家&#xff0c;…

vue前端解决跨域

1,首先 axios请求&#xff0c;看后端接口路径&#xff0c;http://122.226.146.110:25002/api/xx/ResxxList&#xff0c;所以baseURL地址改成 ‘/api’ let setAxios originAxios.create({baseURL: /api, //这里要改掉timeout: 20000 // request timeout}); export default s…

LeetCode41.缺失的第一个正数

看到题目难度是hard的时候我就想先写半个小时试试看&#xff0c;如果没思路就看题解&#xff0c;没想到我就写了10来分钟就给通过了&#xff0c;通过的时候我都不敢相信&#xff0c;我感觉我是走了后门的&#xff0c;因为我用了 Arrays.sort()方法&#xff0c;他的时间复杂度是…

【云原生】容器编排工具Kubernetes

目录 一、 K8S介绍 官网地址&#xff1a; 1.1docker编排与k8s编排相比 1.2特性 1.3功能 二、K8S重要组件 2.1核心组件 &#xff08;1&#xff09;Kube-apiserver &#xff08;2&#xff09;Kube-controller-manager &#xff08;3&#xff09;Kube-scheduler &#x…

基于亚马逊云科技打造的游戏AIGC专业版,创梦天地快速上线AI生图服务

生成式人工智能&#xff08;以下简称“生成式AI”&#xff09;的热潮正在全球范围内掀起新一轮的科技革命&#xff0c;释放出巨大的商业价值。各类“AI绘画神器”的涌现&#xff0c;为创意行业带来了翻天覆地的变化。 在游戏领域&#xff0c;生成式AI技术也吸引了玩家们的广泛关…

AJAX学习笔记5同步与异步理解

AJAX学习笔记4解决乱码问题_biubiubiu0706的博客-CSDN博客 示例 前端代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>演示AJAX同步和异步</title> </head> <body> <script…

长胜证券:中特估一带一路央国企将见底反转加速

三季度开始龙头成绩将回转加快向上。(1)2022年第三季度基数环比下降&#xff0c;如2022第2/3单季度成绩增速:我国中铁14%/5%、我邦交建10%/-9%、我国铁建8%/-5%、我国中冶14%/-29%、我国化学50%/11%、北方世界38%/-50%、中工世界80%/20%。(2)在手订单增速高于收入增速&#xff…

如何实现MongoDB数据的快速迁移?

作为一种Schema Free文档数据库&#xff0c;MongoDB因其灵活的数据模型&#xff0c;支撑业务快速迭代研发&#xff0c;广受开发者欢迎并被广泛使用。在企业使用MongoDB承载应用的过程中&#xff0c;会因为业务上云/跨云/下云/跨机房迁移/跨地域迁移、或数据库版本升级、数据库整…

2023年下半年广州/深圳软考(中/高级)认证报名,当然弘博创新

软考是全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff08;简称软考&#xff09;项目&#xff0c;是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试&#xff0c;既属于国家职业资格考试&#xff0c;又是职称资格考试。 系统集成…

桌面平台层安全随手记录

声明 本文是学习桌面云安全技术要求. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 桌面平台层安全 桌面接入安全 用户标识 一般要求 本项要求包括&#xff1a; a) 系统应为用户提供唯一的身份标识&#xff0c;同时将用户的身份标识与该用户的所…