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,一经查实,立即删除!

相关文章

ubuntu 18.04系统的镜像源

1 国内可用的镜像源 Ubuntu官方下载地址阿里云开源镜像站清华大学开源镜像站中国科技大学开源镜像站华为云开源镜像站 2 ubuntu 18.04 镜像说明 Ubuntu 18.04 是一个广泛使用的Linux发行版&#xff0c;它有多个版本的镜像可供下载。 在物理机上安装的镜像 如带desktop字样的…

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

使用Java实现交税计算功能:原理与实战编码

一、引言 税收是国家财政收入的重要来源&#xff0c;也是实现社会公平和经济调节的重要手段。在日常生活和工作中&#xff0c;交税是每个公民和企业应尽的义务。为了方便计算和管理税收&#xff0c;我们可以使用编程语言来实现交税计算功能。本文将介绍使用Java语言实现交税计…

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…

CentOS的常见命令

前言 CentOS 是一个以提供企业级计算平台为目标的 Linux 发行版&#xff0c;它与 RHEL (Red Hat Enterprise Linux) 兼容&#xff0c;因此它支持很多相同的命令。下面是一些在 CentOS 系统上常用的命令&#xff1a; 常见命令&#xff08;50个&#xff09; yum - 包管理器&…

javaScript中的闭包

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

shell脚本一键安装nginx-1.18.0

shell脚本一键安装nginx-1.18.0 #!/bin/bashset -euo pipefailNGINX_VERSION"1.18.0" DOWNLOAD_URL"https://nginx.org/download/nginx-$NGINX_VERSION.tar.gz" INSTALL_DIR"/apps/nginx" PACKAGE_LIST"gcc pcre-devel openssl-devel zlib-…

开发简易复用 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;包括节假日、周末和市场休市。 通过随时了解假期、交易时间表和市…

完美快速解决百度分享不支持Https的问题 bdimg.share.baidu.com

荆轲刺秦王 自从网站开启https以来 百度分享引用的js文件就一直报错 大意是不支持https 百度一番之后找到解决办法&#xff0c;那就是将在线引用改为本地文件&#xff0c;那么本地文件在github上即可找到&#xff0c;但是由于国内网络很不稳定 所以上传到本站 方便下载使用 …

如何备考华为OD机试?如何刷题以取得高分?常考的算法类型?

华为OD机试通常指的是华为在线开发&#xff08;Onsite Development&#xff09;机试&#xff0c;是华为公司招聘过程中的一项技术测试&#xff0c;主要针对求职者的编程能力和技术水平进行评估。这种机试通常包括编程题和技术题&#xff0c;目的是测试应聘者在实际工作中遇到问…

实施阶段(2024年4月)

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