Leetcode 第 393 场周赛题解

Leetcode 第 393 场周赛题解

  • Leetcode 第 393 场周赛题解
    • 题目1:3114. 替换字符可以得到的最晚时间
      • 思路
      • 代码
      • 复杂度分析
    • 题目2:3115. 质数的最大距离
      • 思路
      • 代码
      • 复杂度分析
    • 题目3:3116. 单面值组合的第 K 小金额
      • 思路
      • 代码
      • 复杂度分析
    • 题目4:3117. 划分数组得到最小的值之和
      • 思路
      • 代码
      • 复杂度分析

Leetcode 第 393 场周赛题解

题目1:3114. 替换字符可以得到的最晚时间

思路

模拟。

代码

/** @lc app=leetcode.cn id=3114 lang=cpp** [3114] 替换字符可以得到的最晚时间*/// @lc code=start
class Solution
{
public:string findLatestTime(string s){int i = 0;if (s[0] == '?' && s[1] == '?'){s[0] = s[1] = '1';i += 3;}for (; i < 5; i++)if (s[i] == '?'){if (i == 0){if (s[1] < '2')s[i] = '1';elses[i] = '0';}else if (i == 1){if (s[0] == '1')s[i] = '1';elses[i] = '9';}else if (i == 3)s[i] = '5';else if (i == 4)s[i] = '9';}return s;}
};
// @lc code=end

复杂度分析

时间复杂度:O(1)。

空间复杂度:O(1)。

题目2:3115. 质数的最大距离

思路

双指针。

左指针下标初始化为 0,从左往右找到第一个素数;

右指针下标初始化为 nums.size()-1,从右往左找到第一个素数。

素数的最大距离=右指针下标-左指针下标。

代码

/** @lc app=leetcode.cn id=3115 lang=cpp** [3115] 素数的最大距离*/// @lc code=start
class Solution
{
private:bool isPrime(int x){for (int i = 2; i * i <= x; i++)if (x % i == 0)return false;return x != 1;}public:int maximumPrimeDifference(vector<int> &nums){int n = nums.size();int leftPrimeIdx = 0, rightPrimeIdx = n - 1;while (leftPrimeIdx < n && !isPrime(nums[leftPrimeIdx]))leftPrimeIdx++;while (rightPrimeIdx >= 0 && !isPrime(nums[rightPrimeIdx]))rightPrimeIdx--;return leftPrimeIdx == rightPrimeIdx ? 0 : rightPrimeIdx - leftPrimeIdx;}
};
// @lc code=end

复杂度分析

时间复杂度:O(n),其中 n 是数组 nums 的元素个数。

空间复杂度:O(1)。

题目3:3116. 单面值组合的第 K 小金额

思路

容斥原理 + 二分答案。

题解:二分答案+容斥原理+预处理(Python/Java/C++/Go)

代码

/** @lc app=leetcode.cn id=3116 lang=cpp** [3116] 单面值组合的第 K 小金额*/// @lc code=start
class Solution
{
public:long long findKthSmallest(vector<int> &coins, int k){auto check = [&](long long m) -> bool{long long cnt = 0;// 枚举所有非空子集for (int i = 1; i < (1 << coins.size()); i++){long long lcm_res = 1; // 计算子集 LCMfor (int j = 0; j < coins.size(); j++){if ((i >> j) & 0x1){lcm_res = lcm(lcm_res, coins[j]);if (lcm_res > m){ // 太大了break;}}}cnt += __builtin_popcount(i) % 2 ? m / lcm_res : -m / lcm_res;}return cnt >= k;};long long left = k - 1, right = (long long)ranges::min(coins) * k;while (left + 1 < right){long long mid = (left + right) / 2;(check(mid) ? right : left) = mid;}return right;}
};
// @lc code=end

复杂度分析

在这里插入图片描述

题目4:3117. 划分数组得到最小的值之和

思路

划分型 DP。

题解:记忆化搜索+选或不选(划分/不划分)Python/Java/C++/Go

代码

#
# @lc app=leetcode.cn id=3117 lang=python3
#
# [3117] 划分数组得到最小的值之和
## @lc code=start# 划分型 DPclass Solution:def minimumValueSum(self, nums: List[int], andValues: List[int]) -> int:n = len(nums)m = len(andValues)@cachedef dfs(i: int, j: int, and_: int) -> int:if m - j > n - i:  # 剩余元素不足return infif j == m:  # 分了 m 段return 0 if i == n else infand_ &= nums[i]if and_ < andValues[j]:  # 剪枝:无法等于 andValues[j]return infres = dfs(i + 1, j, and_)  # 不划分if and_ == andValues[j]:  # 划分,nums[i] 是这一段的最后一个数res = min(res, dfs(i + 1, j + 1, -1) + nums[i])return resans = dfs(0, 0, -1)return ans if ans < inf else -1
# @lc code=end

复杂度分析

在这里插入图片描述

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

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

相关文章

使用BibTeX导入参考文献到Overleaf项目(常用方法)

使用bib为overleaf导入参考文献的好处 整洁的管理&#xff1a; 使用 .bib 文件可以使你的参考文献管理更加整洁和有条理。你可以将所有的参考文献集中存储在一个文件中&#xff0c;而不是在文档中直接引用或复制粘贴。 易于维护和更新&#xff1a; 当你需要添加、删除或修改参考…

申请泛域名证书步骤

泛域名证书的广泛应用范围&#xff1a; 泛域名证书不同于普通的单域名数字证书和多域名数字证书&#xff0c;可以一次以一张证书对应无限多的域名&#xff0c;在功能性和方便性上远优于一般证书。 单域名证书顾名思义&#xff0c;一张证书只对应一个独立域名&#xff0c;多域…

迅睿CMS内容删除后ID重置与指定起始值操作指南

在使用迅睿CMS进行内容管理时&#xff0c;经常会涉及到内容的增删改查。本文将介绍如何在删除内容后重置ID值&#xff0c;或指定ID值从某一特定数开始自增&#xff0c;以便于更好的管理数据。 ID重置操作 共享模块ID重置 在执行删除操作时&#xff0c;若需要对共享模块的内容…

Unity类银河恶魔城学习记录13-4 p145 Save Skill Tree源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili GameData.cs using System.Collections; using System.Collections.Generic…

投票刷礼物链接怎么弄?最新投票活动创建系统源码 轻松创建活动

投票刷礼物链接怎么弄&#xff1f;投票活动创建系统的作用和功能多种多样&#xff0c;为用户提供一个便捷、高效且功能强大的平台&#xff0c;用于创建、管理和执行各种投票活动。分享一个最新投票活动创建系统源码&#xff0c;源码开源可二开&#xff0c;含完整代码包和详细搭…

【机器学习书籍推荐】机器学习算法原理与编程实践(附PDF)

哈喽啊大家&#xff0c;今天又来给大家推荐一本机器学习方面的书籍<机器学习算法原理与编程实践>。本书适用于中高水平的程序设计人员、大学理科生、以及对机器学习感兴趣的各类爱好者。 《机器学习算法原理与编程实践》围绕神经网络、智能推理、矩阵计算三大主线&#…

BM25检索算法 python

1.简介 BM25&#xff08;Best Matching 25&#xff09;是一种经典的信息检索算法&#xff0c;是基于 TF-IDF算法的改进版本&#xff0c;旨在解决、TF-IDF算法的一些不足之处。其被广泛应用于信息检索领域的排名函数&#xff0c;用于估计文档D与用户查询Q之间的相关性。它是一种…

【树莓派学习】开发环境配置

【树莓派学习】开发环境配置 ​ Raspberry Pi OS作为基于Linux的系统&#xff0c;其默认网络配置在国内的网络环境下容易出现访问慢甚至无法连接等问题&#xff0c;不便于我们的学习&#xff0c;同时&#xff0c;树莓派上C/C的使用需要单独安装WiringPi。本文主要介绍如何更改…

JavaScript系列------1

1. JavaScript组成 ECMAScript JS 语言基础。比如&#xff1a;变量、分支语句、循环语句、对象等等。 Web APIs DOM(页面文档对象模型): 操作文档&#xff0c;比如对页面元素进行移动、大小、添加删除等操作 BOM(浏览器对象模型): 操作浏览器&#xff0c;比如页面弹窗&#x…

javaScript中的闭包

什么是闭包 在理解 JavaScript 中的闭包前先了解以下两个知识点&#xff1a; JavaScript 中的作用域和作用域链JavaScript 中的垃圾回收 简单回顾一下这两个知识点&#xff1a; 1. JavaScript 中的作用域和作用域链 作用域就是一个独立的地盘&#xff0c;让变量不会外泄、…

开发简易复用 SDK(项目加分项)

文章目录 开发 SDK新建项目修改pom文件删除启动类创建配置类复制之前的客户端新建spring.factories打包 开发 SDK 为什么要开发SDK。 减少代码的冗余提高代码的复用 如果实际项目中需要使用到该SDK&#xff0c;在pom.xml中注入就可以了。 类似于maven一样&#xff0c;把需要…

女生学习PLC专业,好就业吗?

好就业&#xff0c;plc找工作容易 但不建议女生做PLC相关工作&#xff0c; plc的工作会涉及现场安装调试&#xff0c;难免体力或者登高爬梯&#xff0c;对女生来说有点辛苦。还都会长期出差&#xff0c;身体辛苦之外&#xff0c;心理是煎熬&#xff0c;初入行时出差或许是乐事…

【FX110网】股市、汇市一年有多少个交易日?

事实上&#xff0c;作为交易者&#xff0c;重要的是要了解并非每天都是交易日。虽然金融市场在大多数工作日开放交易&#xff0c;但在某些特定情况下无法进行交易。这些非交易日可能因各种原因而发生&#xff0c;包括节假日、周末和市场休市。 通过随时了解假期、交易时间表和市…

实施阶段(2024年4月)

【活动二】编程解决问题&#xff0c;二分查找法统计查字典次数。 任务要求&#xff1a;假设字典为1000页&#xff0c;若用二分法来翻到用户输入的具体指定的页数&#xff0c;则需要的最大查找次数为&#xff1f; 设计算法&#xff1a; 取总页码数据中间值&#xff0c;将待查数…

恶意软件狩猎新途径:使用.NET元数据分析跟踪恶意软件

本文由Blaze于2024年3月25日发表于其个人博客网站上。 就在不久前&#xff0c;我们意外发现了一个PureCrypter样本&#xff0c;而PureCrypter则是一款适用于各种类型恶意软件&#xff08;例如Agent Tesla和RedLine&#xff09;的加载器和混淆处理工具。深入分析之后&#xff0c…

简单谈谈URL过滤在网络安全中的作用

用户花在网络上的时间越来越多&#xff0c;浏览他们最喜欢的网站&#xff0c;点击电子邮件链接&#xff0c;或利用各种基于网络的 SaaS 应用程序供个人和企业使用。虽然这种不受约束的网络活动对提高企业生产力非常有用&#xff0c;但也会使组织面临一系列安全和业务风险&#…

网络连接与访问傻傻分不清?一文为你理清二者区别

网络连接指的是建立两个或多个计算机、设备或系统之间的物理或逻辑链接&#xff0c;使它们可以进行数据交换、通信和资源共享。连接可以是有线的或无线的&#xff0c;可以是临时的或长期的。 网络访问指的是在连接的基础上&#xff0c;通过合适的方式和权限进入特定资源、服务或…

计算机网络-IS-IS路由计算

前面已经学习了建立IS-IS邻接关系和同步LSDB&#xff0c;然后基于此路由器会进行路由计算。 一、路由计算 因为IS-IS路由器有不同的级别&#xff0c;只维护自身级别的LSDB&#xff0c;因此就是Level-1只有区域内的路由信息&#xff0c;Level-2有Level-2的路由信息&#xff0c;L…

数仓建模—数据语义层

数仓建模—数据语义层 什么是语义层 如今,企业产生大量数据,需要以正确的方式进行分析才能做出重要决策。数据可能来自多个来源并采用不同的格式,这使得清楚地了解其含义和重要性成为一项挑战。这就是语义层的用武之地。 语义层存在于数据仓库和最终用户使用的应用程序之间…

『 论文解读 』大语言模型(LLM)代理能够自主地利用1 day漏洞,利用成功率竟高达87%,单次利用成本仅8.8美元

1. 概览 该论文主要展示了大语言模型LLM代理能够自主利用现实世界的 1 day 漏洞。研究我发现&#xff0c; GPT-4 在提供了CVE描述的情况下&#xff0c;能够成功利用 87% 的漏洞。 这与其他测试模型&#xff08;如 GPT-3.5 和其他开源 LLM &#xff09;以及开源漏洞扫描器&…