Leetcode 第 379 场周赛题解

Leetcode 第 379 场周赛题解

  • Leetcode 第 379 场周赛题解
    • 题目1:10035. 对角线最长的矩形的面积
      • 思路
      • 代码
      • 复杂度分析
    • 题目2:10036. 捕获黑皇后需要的最少移动次数
      • 思路
      • 代码
      • 复杂度分析
    • 题目3:10037. 移除后集合的最多元素数
      • 思路
      • 代码
      • 复杂度分析
    • 题目4:10038. 执行操作后的最大分割数量
      • 思路
      • 代码
      • 复杂度分析

Leetcode 第 379 场周赛题解

题目1:10035. 对角线最长的矩形的面积

思路

模拟。

代码

/** @lc app=leetcode.cn id=10035 lang=cpp** [10035] 对角线最长的矩形的面积*/// @lc code=start
class Solution
{
public:int areaOfMaxDiagonal(vector<vector<int>> &dimensions){// 特判if (dimensions.empty())return 0;double maxDiagonal = 0.0;int maxArea = 0;for (vector<int> &dimension : dimensions){int length = dimension[0], width = dimension[1];if (sqrt(length * length + width * width) > maxDiagonal){maxDiagonal = sqrt(length * length + width * width);maxArea = length * width;}else if (sqrt(length * length + width * width) == maxDiagonal)maxArea = max(maxArea, length * width);}return maxArea;}
};
// @lc code=end

复杂度分析

时间复杂度:O(n),其中 n 是数组 dimensions 的长度。

空间复杂度:O(1)。

题目2:10036. 捕获黑皇后需要的最少移动次数

思路

分类讨论:

  • 如果车能直接攻击到皇后,答案是 1。
  • 如果象能直接攻击到皇后,答案是 1。
  • 如果车被象挡住,那么移走象,车就可以攻击到皇后,答案是 2。
  • 如果象被车挡住,那么移走车,象就可以攻击到皇后,答案是 2。
  • 如果车不能直接攻击到皇后,那么车可以水平移动或者垂直移动,其中一种方式必定不会被象挡住,可以攻击到皇后,答案是 2。

对于车,如果和皇后在同一水平线或者同一竖直线,且中间没有象,那么就可以直接攻击到皇后。

对于象,如果和皇后在同一斜线,且中间没有车,那么就可以直接攻击到皇后。

代码

/** @lc app=leetcode.cn id=10036 lang=cpp** [10036] 捕获黑皇后需要的最少移动次数*/// @lc code=start
class Solution
{
public:int minMovesToCaptureTheQueen(int a, int b, int c, int d, int e, int f){// 车和皇后在一条横线上,且它们之间没有象if (a == e && !(a == c && d > min(b, f) && d < max(b, f)))return 1;// 车和皇后在一条竖线上,且它们之间没有象if (b == f && !(b == d && c > min(a, e) && c < max(a, e)))return 1;// 象和皇后在一条斜线上,且它们之间没有车if ((c + d == e + f && !(a + b == e + f && a > min(c, e) && a < max(c, e))) ||(c - d == e - f && !(a - b == e - f && a > min(c, e) && a < max(c, e))))return 1;return 2;}
};
// @lc code=end

复杂度分析

时间复杂度:O(1)。

空间复杂度:O(1)。

题目3:10037. 移除后集合的最多元素数

思路

贪心。

可以将数组去重后分为三个部分:nums1 独有的,nums2 独有的,nums1 与 nums2 共有的。

求集合 S 时:

  1. 先选择两个数组独有的。
  2. 对于共有的,两个数组尽量选不一样的。

代码

/** @lc app=leetcode.cn id=10037 lang=cpp** [10037] 移除后集合的最多元素数*/// @lc code=start
class Solution
{
public:int maximumSetSize(vector<int> &nums1, vector<int> &nums2){int n = nums1.size();unordered_set<int> set1, set2;for (int &x : nums1)set1.insert(x);for (int &x : nums2)set2.insert(x);int common = 0; // 两个数组共有的元素个数for (int x : set1)if (set2.count(x))common++;// count1 和 count2 分别为数组 nums1 和 nums2 独有元素的个数int count1 = set1.size() - common, count2 = set2.size() - common;// 贪心策略:先选二者独有的,没得选才选二者共有的int s1 = min(count1, n / 2), s2 = min(count2, n / 2);return s1 + s2 + min(n - s1 - s2, common);}
};
// @lc code=end

复杂度分析

时间复杂度:O(n),其中 n 是数组 nums1/nums2 的长度。

空间复杂度:O(n),其中 n 是数组 nums1/nums2 的长度。

题目4:10038. 执行操作后的最大分割数量

思路

题解:两种方法:记忆化搜索/O(n)前后缀分解(Python/Java/C++/Go)

代码

/** @lc app=leetcode.cn id=10038 lang=cpp** [10038] 执行操作后的最大分割数量*/// @lc code=start// 记忆化搜索+记录字符集合class Solution
{
public:int maxPartitionsAfterOperations(string s, int k){unordered_map<long long, int> memo;function<int(int, int, bool)> dfs = [&](int i, int mask, bool changed) -> int{if (i == s.length()){return 1;}long long args_mask = (long long)i << 32 | mask << 1 | changed;auto it = memo.find(args_mask);if (it != memo.end()){ // 之前计算过return it->second;}int res;// 不改 s[i]int bit = 1 << (s[i] - 'a');int new_mask = mask | bit;if (__builtin_popcount(new_mask) > k){// 分割出一个子串,这个子串的最后一个字母在 i-1// s[i] 作为下一段的第一个字母,也就是 bit 作为下一段的 mask 的初始值res = dfs(i + 1, bit, changed) + 1;}else{ // 不分割res = dfs(i + 1, new_mask, changed);}if (!changed){// 枚举把 s[i] 改成 a,b,c,...,zfor (int j = 0; j < 26; j++){new_mask = mask | (1 << j);if (__builtin_popcount(new_mask) > k){// 分割出一个子串,这个子串的最后一个字母在 i-1// j 作为下一段的第一个字母,也就是 1<<j 作为下一段的 mask 的初始值res = max(res, dfs(i + 1, 1 << j, true) + 1);}else{ // 不分割res = max(res, dfs(i + 1, new_mask, true));}}}return memo[args_mask] = res; // 记忆化};return dfs(0, 0, false);}
};
// @lc code=end

复杂度分析

在这里插入图片描述

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

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

相关文章

SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts

继续上一节的内容&#xff0c;本节学习Apache ECharts&#xff0c;实现营业额统计、用户统计、订单统计和销量排名Top10功能。 数据统计效果图&#xff1a; 目录 Apache ECharts入门案例 营业额统计用户统计订单统计销量排名Top10 Apache ECharts Apache ECharts 是一款基于 …

解锁 JavaScript 数组的强大功能:常用方法和属性详解(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

毕业设计:基于python微博舆情分析系统+可视化+Django框架 K-means聚类算法(源码)✅

毕业设计&#xff1a;2023-2024年计算机专业毕业设计选题汇总&#xff08;建议收藏&#xff09; 毕业设计&#xff1a;2023-2024年最新最全计算机专业毕设选题推荐汇总 &#x1f345;感兴趣的可以先收藏起来&#xff0c;点赞、关注不迷路&#xff0c;大家在毕设选题&#xff…

C++ 完成Client分页显示log

分页显示t_log 1、获取用户的输入 1.1、写一个Input成员函数&#xff0c;处理输入进来的语句 std::string XClient::Input() {//清空缓冲//cin.ignore(4096, \n);string input "";for (;;){char a getchar();if (a < 0 || a \n || a \r)break;cout <<…

GPT编程:运行你的第一个聊天程序

环境搭建 很多机器学习框架和类库都是使用Python编写的&#xff0c;OpenAI提供的很多例子也是Python编写的&#xff0c;所以为了方便学习&#xff0c;我们这个教程也使用Python。 Python环境搭建 Python环境搭建有很多种方法&#xff0c;我们这里需要使用 Python 3.10 的环境…

一二三应用开发平台文件处理设计与实现系列之5——MinIO技术预研

背景 上篇介绍了文件读写框架设计与实现&#xff0c;同时顺便说明了本地磁盘存储模式的实现模式。 今天来说下基于文件读写框架&#xff0c;如何集成对象存储组件minio&#xff0c;集成之前&#xff0c;需要对minio进行必要的了解&#xff0c;本篇是minio的技术预研。 minio简…

两个Mesh路由、一个5口交换机,打造智能家居无缝网络覆盖

在现代家庭中&#xff0c;无线网络已经成为了必需品&#xff0c;每个人都希望享受到无缝连接的畅快体验。然而&#xff0c;由于信号覆盖范围的限制和信号干扰等问题&#xff0c;很多家庭在组网方面遇到了一些困难。 对于有需求的家庭而言&#xff0c;两个Mesh路由器是一种非常…

Linux|centos7操作系统|VMware虚拟机安装水星免驱USB网卡8188gu记录

引言&#xff1a; 最近对于嵌入式系统比较感兴趣&#xff0c;因此&#xff0c;计划先使用VMware workstation虚拟机试一试Linux系统下的网卡驱动安装 这不试不知道&#xff0c;一试吓一跳&#xff0c;发现Linux下的驱动安装还是比较麻烦的&#xff0c;下面将就本次的Linux系统…

机器学习 | 卷积神经网络

机器学习 | 卷积神经网络 实验目的 采用任意一种课程中介绍过的或者其它卷积神经网络模型&#xff08;例如LeNet-5、AlexNet等&#xff09;用于解决某种媒体类型的模式识别问题。 实验内容 卷积神经网络可以基于现有框架如TensorFlow、Pytorch或者Mindspore等构建&#xff…

格密码基础:SIS问题的困难性

目录 一. SIS问题的困难性 二. SIS问题归约的性质 2.1 2004年 [MR04] 2.2 2008年 【GPV08】 2.3 2013年【MP13】 三. 归约证明 3.1 核心理解 3.2 归约步骤 3.3 性质理解 一. SIS问题的困难性 推荐先阅读&#xff1a; 格密码基础&#xff1a;SIS问题的定义与理解-CSD…

专业课140总分410+大连理工大学852信号与系统考研经验电子信息与通信

通过将近一年的复习&#xff0c;今年如愿以专业140分&#xff0c;总分410被大连理工录取&#xff0c;回望这一年复习还是有很多做的不足&#xff0c;整理了一下自己复习的经验&#xff0c;希望可以对后面报考大连理工的同学有所帮助。●政治&#xff1a; 真心建议大家至少暑假…

python 列表的高级应用

当前版本&#xff1a; Python 3.8.4 简介 列表&#xff08;list&#xff09;是Python编程语言中的基本数据类型之一&#xff0c;也是一个非常重要的通用序列。在其它编程语言中&#xff0c;它们通常被称为“数组”。可以存储多个元素&#xff0c;包括数字、字符串、甚至其他列…

【RPC】序列化:对象怎么在网络中传输?

今天来聊下RPC框架中的序列化。在不同的场景下合理地选择序列化方式&#xff0c;对提升RPC框架整体的稳定性和性能是至关重要的。 一、为什么需要序列化&#xff1f; 首先&#xff0c;我们得知道什么是序列化与反序列化。 网络传输的数据必须是二进制数据&#xff0c;但调用…

(菜鸟自学)搭建虚拟渗透实验室——安装Ubantu 8.10 靶机

安装Ubantu 8.10 靶机 新建虚拟机 选择Ubuntu系统 网络适配器模式选用桥接模式 镜像选用ubuntu8.10版本 点击“开启此虚拟机”以开始安装Ubuntu Linux系统 安装ubuntu 首先需要选择安装时的语言&#xff0c;这里选择“中文&#xff08;简体&#xff09;” 选择“安装…

Pushmall智能AI数字名片— —SCRM客户资源管理系统

推贴数字AI名片说明&#xff1a; **Pushmall智能AI数字名片&#xff1a;**基于靠谱人脉的地理位置服务&#xff0c;资源查询&#xff0c;数字名片定制服务、企业名片&#xff1a;相互引荐、提供需求&#xff1b;建人脉群、客户群&#xff0c;及简介、短视频、宣传文档、电子图…

上海亚商投顾:创业板指冲高回落 光伏、航运股逆势走强

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指1月12日冲高回落&#xff0c;创业板指午后跌近1%。北证50指数跌超6%&#xff0c;倍益康、华信永道、众诚科…

Python基础知识:整理15 列表的sort方法

1 sorted() 方法 之前我们学习过 sorted() 方法&#xff0c;可以对列表、元组、集合及字典进行排序 # 1.列表 ls [1, 10, 8, 4, 5] ls_new sorted(ls, reverseTrue) print(ls_new) …

【软件测试】学习笔记-性能测试的基本方法与应用领域

这篇文章探讨并发用户数、响应时间和系统吞吐量这三个指标之间的关系和约束&#xff0c;性能测试七种常用方法&#xff0c;以及四大应用领域。 由于性能测试是一个很宽泛的话题&#xff0c;所以不同的人对性能测试的看法也不完全一样&#xff0c;同样一种方法可能也会有不同的…

基于鸿蒙HarmonyOS 元服务开发一款公司运营应用(ArkTS API 9)

前言 最近基于Harmony OS最新版本开发了一个作品&#xff0c;本文来详细讲解一下&#xff0c;如何我是如何开发这个作品的。以及如何使用OpenHarmony&#xff0c;基于ArkTS&#xff0c;API 9来开发一个属于自己的元服务。 废话不多说&#xff0c;我的作品名称叫做Company Oper…

Softmax回归(多类分类模型)

目录 1.对真实值类别编码&#xff1a;2.预测值&#xff1a;3.目标函数要求&#xff1a;4.使用Softmax模型将输出置信度Oi计算转换为输出匹配概率y^i&#xff1a;5.使用交叉熵作为损失函数&#xff1a;6.代码实现&#xff1a; 1.对真实值类别编码&#xff1a; y为真实值&#xf…