Leetcode 第 371 场周赛题解
Leetcode 第 371 场周赛题解
- Leetcode 第 371 场周赛题解
- 题目1:100120. 找出强数对的最大异或值 I
- 思路
- 代码
- 复杂度分析
- 题目2:100128. 高访问员工
- 思路
- 代码
- 复杂度分析
- 题目3:100117. 最大化数组末位元素的最少操作次数
- 思路
- 代码
- 复杂度分析
- 题目4:100124. 找出强数对的最大异或值 II
- 思路
- 代码
- 复杂度分析
Leetcode 第 371 场周赛题解
题目1:100120. 找出强数对的最大异或值 I
思路
模拟。
枚举 2 遍数组 nums 的元素,更新最大异或值。
代码
/** @lc app=leetcode.cn id=100120 lang=cpp** [100120] 找出强数对的最大异或值 I*/// @lc code=start
class Solution
{
public:int maximumStrongPairXor(vector<int> &nums){int ans = INT_MIN;for (const int &x : nums)for (const int &y : nums){if (abs(x - y) <= min(x, y))ans = max(ans, x ^ y);}return ans;}
};
// @lc code=end
复杂度分析
时间复杂度:O(n2),其中 n 是数组 nums 的长度。
空间复杂度:O(1)。
题目2:100128. 高访问员工
思路
模拟。
把名字相同的员工对应的访问时间(转成分钟数)分到同一组中。
对于每一组的访问时间 accessTime,排序后,判断是否有 accessTime[i] - accessTime[i - 2] < 60,如果有,那么把这一组的员工名字加到答案中。
代码
/** @lc app=leetcode.cn id=100128 lang=cpp** [100128] 高访问员工*/// @lc code=start
class Solution
{
private:static const int MINUTE = 60;public:vector<string> findHighAccessEmployees(vector<vector<string>> &access_times){map<string, vector<int>> employees;for (const vector<string> &access_time : access_times){string name = access_time[0];string time = access_time[1];int accessTime = MINUTE * stoi(time.substr(0, 2)) + stoi(time.substr(2));employees[name].push_back(accessTime);}vector<string> highAccessEmployees;for (auto &[name, accessTime] : employees){sort(accessTime.begin(), accessTime.end());for (int i = 2; i < accessTime.size(); i++)if (accessTime[i] - accessTime[i - 2] < 60){highAccessEmployees.push_back(name);break;}}return highAccessEmployees;}
};
// @lc code=end
复杂度分析
时间复杂度:O(Lnlogn),其中 n 为数组 access_times 的长度,L 为员工姓名的最大长度,本题不超过 10。
空间复杂度:O(Ln),其中 n 为数组 access_times 的长度,L 为员工姓名的最大长度,本题不超过 10。
题目3:100117. 最大化数组末位元素的最少操作次数
思路
总共就两种情况:
- 不交换 nums1[n-1] 和 nums[n-1]。
- 交换 nums1[n-1] 和 nums[n-1]。
设计一个函数 getOps:
设 n = nums1.size(),last1 = nums1.back(),last2 = nums2.back(),ops 为交换操作次数。对于每种情况,枚举下标 i=0 到 i = n-2,设 x = nums1[i],y = nums2[i],一旦发现 x > last1 || y > last2,就必须执行交换操作。如果操作后仍然满足 y > last1 || x > last2,说明这种情况无法满足要求,返回 INF;否则,说明交换 x 和 y 能满足要求,ops++。
ans = min(getOps(nums1.back(), nums2.back()), getOps(nums2.back(), nums1.back()) + 1)
如果两种情况都无法满足要求,返回 -1。
代码
/** @lc app=leetcode.cn id=100117 lang=cpp** [100117] 最大化数组末位元素的最少操作次数*/// @lc code=start
class Solution
{
private:const int INF = 0x3f3f3f3f;public:int minOperations(vector<int> &nums1, vector<int> &nums2){int n = nums1.size();function<int(int, int)> getOps = [&](int last1, int last2) -> int{int ops = 0;for (int i = 0; i < n - 1; i++){int x = nums1[i], y = nums2[i];if (x > last1 || y > last2){if (y > last1 || x > last2)return INF;elseops++;}}return ops;};int ans = getOps(nums1.back(), nums2.back());ans = min(ans, getOps(nums2.back(), nums1.back()) + 1);return ans >= INF ? -1 : ans;}
};
// @lc code=end
复杂度分析
时间复杂度:O(n),其中 n 是数组 nums1、nums2 的长度。
空间复杂度:O(1)。
题目4:100124. 找出强数对的最大异或值 II
思路
由于答案和数组 nums 的元素顺序无关,先排序。
排序后设 x ≤ y,那么 ∣x−y∣≤ min(x, y) 可以化简为 2x ≥ y。
这意味着对于每个 y = nums[i],我们需要选择 y 及其左边的满足 2x ≥ y 的 x,与 y 异或,求最大异或和。
与 Leetcode421. 数组中两个数的最大异或值 类似,把 hashset 改成 hashmap,一边遍历数组,一边记录每个 key 对应的最大的 nums[i]。
由于数组已经排好序,所以每个 key 对应的 x=nums[i] 一定是当前最大的,只要 2x ≥ y,就说明这个比特位可以是 1。
代码
/** @lc app=leetcode.cn id=100124 lang=cpp** [100124] 找出强数对的最大异或值 II*/// @lc code=start
class Solution
{
public:int maximumStrongPairXor(vector<int> &nums){sort(nums.begin(), nums.end());int high_bit = 31 - __builtin_clz(nums.back());int ans = 0, mask = 0;unordered_map<int, int> mp;// 从最高位开始枚举for (int i = high_bit; i >= 0; i--){mp.clear();mask |= 1 << i;int new_ans = ans | (1 << i); // 这个比特位可以是 1 吗?for (int y : nums){int mask_y = y & mask; // 低于 i 的比特位置为 0auto it = mp.find(new_ans ^ mask_y);if (it != mp.end() && it->second * 2 >= y){ans = new_ans; // 这个比特位可以是 1break;}mp[mask_y] = y;}}return ans;}
};
// @lc code=end
复杂度分析
时间复杂度:O(nlogn+nlogU),其中 n 为 nums 的长度,U=max(nums)。排序的时间复杂度为 O(nlogn),外层循环需要循环 O(logU) 次。
空间复杂度:O(n)。哈希表中至多有 n 个数。
相关文章:
Leetcode 第 371 场周赛题解
Leetcode 第 371 场周赛题解 Leetcode 第 371 场周赛题解题目1:100120. 找出强数对的最大异或值 I思路代码复杂度分析 题目2:100128. 高访问员工思路代码复杂度分析 题目3:100117. 最大化数组末位元素的最少操作次数思路代码复杂度分析 题目4…...
keras转onnx,TensorFlow转tf.keras.models.load_model,onnx精度转换
参考: https://blog.csdn.net/Deaohst/article/details/126864267 转onnx 别直接转onnx。 先转PB: import tensorflow as tfmodel_path ./models/model.h5 # 模型文件 model tf.keras.models.load_model(model_path) model.sa…...
高可用架构设计
1. 引言 软件系统有三个追求:高性能、高并发、高可用,俗称三高。三者既有区别也有联系,门门道道很多,本篇讨论高可用 高可用技术的重要性在于保证系统的连续可用性,提高系统的稳定性和可靠性。它可以应对高并发和大规…...
qemu 之 uboot、linux 启动
目录 编译uboot、kernel 编译启动从 uboot 中引导启动 linux注参考 本文主要说明 arm64 在 qemu 上的相关启动。 编译 使用的是 qemu-8.1.1 版本,编译命令如下: ../configure --cc/usr/local/bin/gcc --prefix/home/XXX/qemu_out --enable-virtfs --enable-slir…...
C语言--每日五道选择题--Day8
第一题 1、下列程序的输出是( ) #include<stdio.h> int main() {int a[12] {1,2,3,4,5,6,7,8,9,10,11,12};int *p[4];int i;for(i0;i<4;i){p[i]&a[i*3];}printf("%d\n",p[3][2]);return 0; } A: 上述程序有错误 B: 6…...
Outlook如何删除邮箱账户
Outlook如何删除邮箱账户 说明: 最近有用户询问到“我的Outlook登陆了很多个邮箱账号,不知道怎么退出”接下来将具体操作步骤加以说明 操作指引: 1、首先打开Outlook该软件,然后点击“文件” 2、点击账户设置下拉菜单 3、在下拉…...
ultrascale+mpsoc系列的ZYNQ中DDR4参数设置说明
ultrascalempsoc系列的ZYNQ中DDR4参数设置说明 标题1 概述标题2 讲述平台标题3 ZYNQ的DDR设置界面参数标题4 DDR参数界面说明如下 标题1 概述 本文用于讲诉ultrascalempsoc系列中的ZYNQ的DDR4的参数设置与实际硬件中的DDR选型之间的关系,为FPGA设计人员探明道路。 …...
maven-六类属性
Maven的六类属性_maven内置属性-CSDN博客 系统变量指的是java系统的变量,环境变量指的系统变量和用户变量 java系统仅针对java程序,环境变量是全局的。两者都可以传进java进程。 参考 01.java环境变量(env)和系统属性…...
微服务概念
微服务 微服务是什么 In short, the microservice architectural style [1] is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource A…...
响应式摄影科技传媒网站模板源码带后台
模板信息: 模板编号:540 模板编码:UTF8 模板颜色:黑白 模板分类:摄像、婚庆、家政、保洁 适合行业: 模板介绍: 本模板自带eyoucms内核,无需再下载eyou系统,原创设计、手…...
探索C#事件(Event)的强大应用
摘要 在现代软件开发中,对象之间的通信和交互是一个常见而重要的问题。为了解决这个问题,C#作为一种面向对象的编程语言提供了一种强大的特性:事件(Event)。事件可以帮助开发人员实现对象间的松耦合,提高代…...
学习c#的第四天
目录 C# 变量 C# 中的变量定义与初始化 接受来自用户的值 C# 中的 Lvalues 和 Rvalues 不同类型变量进行运算 静态变量 局部变量 C# 常量 整数常量 浮点常量 字符常量 字符串常量 定义常量 扩展知识 Convert.ToDouble 与 Double.Parse 的区别 静态常量和动态常…...
解析JSON字符串:属性值为null的时候不被序列化
如果希望属性值为null及不序列化,只序列化不为null的值。 1、测试代码 配置代码: mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); 或者通过注解JsonInclude(JsonInclude.Include.NON_NULL) //常见问题2:属性为null&a…...
短视频短剧小程序系统:用技术丰富你的碎片时间
在当今快节奏的生活中,人们的休闲时间变得越来越碎片化。短视频短剧小程序系统正是利用这一现象,通过技术手段为人们提供了丰富多样的娱乐内容,让碎片时间变得更加充实。 一、短视频短剧小程序系统的技术特点 高效加载与流畅播放࿱…...
服务器数据恢复—磁盘出现坏道掉线导致raid5阵列崩溃的数据恢复案例
服务器数据恢复环境: 某品牌服务器中有一组16块SAS接口硬盘组建的raid5磁盘阵列。 服务器故障&检测: 服务器raid5阵列中有2块硬盘掉线,上层服务器应用崩溃,导致服务器数据丢失。丢失的数据主要是4个1.5TB大小的卷中的数据&am…...
Android R.fraction
来源 我是在看Android10原生代码,绘制状态栏蓝牙电量相关类中第一次看到R.fraction的,如类BatteryMeterDrawable <fraction name"battery_button_height_fraction">10%</fraction> mButtonHeightFraction context.getResources(…...
C语言精华题目锦集1
第一题 test.c文件中包括如下语句,文件中定义的四个变量中,是指针类型的是()【多选】 #define INT_PTR int* typedef int* intptr; INT_PRT a,b; int_ptr c,d;A:a B:b C:c D:d #define是宏定义,此时在程序中IN…...
头歌答案Python——JSON基础
目录 编辑 Python——JSON基础 第1关:JSON篇:JSON基础知识 任务描述 第2关:JSON篇:使用json库 任务描述 Python——XPath基础 第1关:XPath 路径表达式 任务描述 第2关:XPath 轴定位 任务描述…...
TDengine 与煤科院五大系统实现兼容性互认,助力煤矿智能化安全体系搭建
近日,涛思数据与煤炭科学技术研究院(以下简称煤科院)已完成数个产品兼容互认证工作,经双方共同严格测试,涛思数据旗下物联网、工业大数据平台 TDengine V3.X 与煤炭科学技术研究院旗下煤矿复合灾害监测监控预警系统、煤…...
231030期就业班开班咯!我在前方护航,让你稳稳入职
就业哪家强?还得看优橙! 11月9日,231030期就业班的小伙伴结束了为期8天的基础班学习,正式进入了就业班。优橙教育也为新一批就业班的同学举办了开班典礼。 典礼环节中不仅有多彩的抽奖活动,也有丰富的超值礼品,旨在鼓…...
腾讯云ICP备案:变更主体备案准备
腾讯云ICP备案:变更主体&备案准备一、变更主体适用场景已经成功办理备案的网站/APP,支持备案主体信息的变更申请。当备案主体信息发生变化时,建议及时办理备案变更,避免影响业务运行,可直接通过腾讯云备案控制台办…...
Pix4D安装与激活全攻略:从卸载到成功运行的详细指南
1. 彻底卸载旧版本:不留任何残余 很多人在安装Pix4D时遇到问题,往往是因为旧版本没有卸载干净。我见过太多案例,就是因为残留的注册表项导致新版本无法正常激活。这里分享一个我用了多年的"深度清洁法"。 首先打开控制面板…...
终极指南:Noria线程域调度机制如何实现5倍性能提升的无锁并发数据流处理
终极指南:Noria线程域调度机制如何实现5倍性能提升的无锁并发数据流处理 【免费下载链接】noria Fast web applications through dynamic, partially-stateful dataflow 项目地址: https://gitcode.com/gh_mirrors/no/noria Noria作为一款专注于动态部分状态…...
ROS teb_local_planner实战:从源码编译到多机编队避障调优
1. 为什么选择TEB算法优化多机编队避障? 在狭窄环境中实现多机器人编队移动,就像让一群人在拥挤的走廊里保持队形行走。传统DWA算法就像个固执的领队,只愿意前进不愿后退,遇到死胡同就卡住。而TEB(Timed Elastic Band&…...
工业组态软件Intouch(单机版)基础功能实战指南
1. Intouch单机版基础认知与安装准备 第一次接触工业组态软件的朋友,可以把Intouch理解成工业界的"翻译官设计师"。它负责把PLC设备里那些冰冷的数字信号,转换成操作工能看懂的动画界面。我十年前刚入行时,最头疼的就是看不懂设备状…...
基于Matlab Simulink的单相PWM整流器仿真模型:全桥整流,电压电流PI双闭环控制...
单相PWM整流器仿真模型 单相全桥整流 电压电流PI双闭环 输出电压可调 输入交流220V/50Hz,输出直流电压可调 Maltab/simulink玩过电力电子的老铁们肯定对PWM整流器不陌生。今天咱们来撸一个单相全桥PWM整流器的Simulink仿真,支持输出电压连续可调的那种。先上张主电…...
STM32光敏传感器实战:从硬件连接到智能路灯控制(附完整代码)
STM32光敏传感器实战:从硬件连接到智能路灯控制(附完整代码) 在物联网和智能家居快速发展的今天,环境光检测已成为许多自动化系统的基础功能。作为一名嵌入式开发者,掌握光敏传感器与STM32微控制器的集成应用ÿ…...
Bedrock Launcher全攻略:解决Minecraft基岩版多版本管理难题的创新方案
Bedrock Launcher全攻略:解决Minecraft基岩版多版本管理难题的创新方案 【免费下载链接】BedrockLauncher 项目地址: https://gitcode.com/gh_mirrors/be/BedrockLauncher Minecraft基岩版玩家常面临版本管理的困境:想体验新特性需放弃现有存档&…...
用快马平台5分钟打造heic转jpg在线工具原型,零代码实现图片格式转换
最近工作中遇到一个需求:需要把手机拍摄的HEIC格式照片批量转换成JPG格式。这种格式转换的需求其实很常见,特别是现在iPhone默认都使用HEIC格式保存照片。作为一个前端开发者,我决定用InsCode(快马)平台快速实现一个在线转换工具的原型。 需求…...
IEEE Trans系列期刊投稿指南:如何高效命中CCF-B类1区Top期刊(附最新录用案例)
IEEE Trans系列期刊高效投稿策略:从选题到录用的全流程实战指南 在学术研究领域,IEEE Transactions系列期刊始终代表着工程技术学科的最高水准。对于国内高校教师、科研人员及博士生而言,成功在CCF-B类1区Top期刊发表论文,不仅意味…...
