第 123 场 LeetCode 双周赛题解

A 三角形类型 II

在这里插入图片描述
在这里插入图片描述

三条边能构成三角形的充要条件是任意一边都小于其余两边之和,枚举各边判断能否构成三角形,若能再判断是否存在边想等

class Solution {
public:string triangleType(vector<int> &nums) {int s = accumulate(nums.begin(), nums.end(), 0);for (int i = 0; i < 3; i++)if (nums[i] >= s - nums[i])return "none";if (nums[0] == nums[1] && nums[1] == nums[2])return "equilateral";if (nums[0] == nums[1] || nums[1] == nums[2] || nums[0] == nums[2])return "isosceles";return "scalene";}

B 人员站位的方案数 I

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

枚举:枚举 liupengsay 和小羊肖恩的坐标,若两人的坐标满足 liupengsay 在左上小羊肖恩在右下,再枚举判断是否存在坐标在以两人为对角线形成的矩阵中,若存在则当前坐标对为可行的方案

class Solution {
public:int numberOfPairs(vector<vector<int>> &points) {int n = points.size();auto cmp = [&](vector<int> &lu, vector<int> &rd) {//判读是否满足lu在左上,rd在右下return lu[0] <= rd[0] && lu[1] >= rd[1];};int res = 0;for (int i = 0; i < n; i++)//枚举liupengsay的位置for (int j = 0; j < n; j++)//枚举小羊肖恩的位置if (i != j && cmp(points[i], points[j])) {//两人坐标满足条件int tag = 1;for (int k = 0; k < n; k++)//判断是否存在坐标在以两人为对角线形成的矩阵if (k != i && k != j && cmp(points[i], points[k]) && cmp(points[k], points[j]))tag = 0;if (tag)res++;}return res;}
};

C 最大好子数组和

在这里插入图片描述在这里插入图片描述

前缀和 + 哈希表:枚举 n u m s [ i ] nums[i] nums[i] ,用哈希表记录遍历过的末尾元素为 v v v 的最小前缀和: m n [ v ] = m i n ( { ∑ i = 0 k n u m s [ i ] ∣ k < i , n u m s [ k ] = v } ) mn[v]=min(\{\sum_{i=0}^knums[i]\;|\; k<i ,nums[k]=v \}) mn[v]=min({i=0knums[i]k<i,nums[k]=v}),若之前遇到过元素为 n u m s [ i ] + k nums[i]+k nums[i]+k n u m s [ i ] − k nums[i]-k nums[i]k 则尝试更新答案

class Solution {
public:using ll = long long;long long maximumSubarraySum(vector<int> &nums, int k) {ll res = INT64_MIN;unordered_map<int, ll> mn;//哈希表ll ps = 0;//当前前缀和for (int i = 0; i < nums.size(); i++) {ps += nums[i];if (ll pre = nums[i] - k;mn.count(pre))//之前遇到过nums[i]-kres = max(res, ps - (mn[pre] - pre));if (ll pre = nums[i] + k;mn.count(pre))//之前遇到过nums[i]+kres = max(res, ps - (mn[pre] - pre));//更新哈希表    if (!mn.count(nums[i]))mn[nums[i]] = ps;elsemn[nums[i]] = min(mn[nums[i]], ps);}return res != INT64_MIN ? res : 0;}
};

D 人员站位的方案数 II

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

哈希表 + 枚举 + 二分: 先遍历 p o i n t s points points 中的坐标 ( x , y ) (x,y) (x,y) ,将 x x x 加入数组 r o w [ y ] row[y] row[y]。然后将各个行数组 r o w [ i ] row[i] row[i] 排序,设 r o w row row 中各行数组按纵坐标降序排序,枚举 p o i n t s points points 中的坐标 ( x , y ) (x,y) (x,y),从纵坐标为 y y y 开始枚举各行,在对应行数组中二分查找不小于 x x x 的最小元素 u b ub ub,若存在且其小于 “之前行中能与 ( x , y ) (x,y) (x,y) 构成满足条件的坐标对的横坐标最小的 ( r i g h t , y i ) (right,yi) (right,yi) 的横坐标 r i g h t right right ”,则 ( x , y ) (x,y) (x,y) 能与 u b ub ub 构成构成满足条件的坐标对,同时更新 r i g h t right right

class Solution {
public:int numberOfPairs(vector<vector<int>> &points) {map<int, vector<int>, greater<int>> row;//哈希表按纵坐标记录行数组,各行按纵坐标降序排序for (auto &p: points)row[p[1]].push_back(p[0]);for (auto &[ci, ri]: row)//行数组排序sort(ri.begin(), ri.end());int res = 0;for (auto r = row.begin(); r != row.end(); r++) {//遍历各行for (auto it: r->second) {//遍历当前行中元素itint right;if (auto ub = upper_bound(r->second.begin(), r->second.end(), it);ub != r->second.end()) {//与it同一行,需要>itres++;right = *ub;//更新right} elseright = INT32_MAX;for (auto nr = next(r); nr != row.end(); nr++) {if (auto ub = lower_bound(nr->second.begin(), nr->second.end(), it);ub != nr->second.end() && *ub < right) {与it非同一行,需要>=itres++;right = *ub;//更新right} }}}return res;}
};

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

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

相关文章

CTF-show WEB入门--web17

今日完成web12,老规矩先看看题目提示&#xff1a; 我们可以看到题目提示为&#xff1a; 备份的sql文件会泄露敏感信息 然后我们再打开题目链接; 然后我们查看页面内容和网页源代码&#xff0c;什么有用的信息都没有得到&#xff1a; 根据题目提示为敏感信息泄露&#xff0c;那…

一周学会Django5 Python Web开发-Django5介绍及安装

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计10条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…

【芯片设计- RTL 数字逻辑设计入门 7 -- 同步复位与异步复位详细介绍】

文章目录 复位的类型和划分同步复位综合后电路优缺点 异步复位优缺点 异步复位的时序分析&#xff08;recovery time/removal time&#xff09;异步复位&#xff0c;同步释放综合后电路优缺点 转自&#xff1a;https://blog.csdn.net/qq_40281783/article/details/128969188 复…

Datax3.0+DataX-Web部署分布式可视化ETL系统

一、DataX 简介 DataX 是阿里云 DataWorks 数据集成的开源版本&#xff0c;主要就是用于实现数据间的离线同步。DataX 致力于实现包括关系型数据库&#xff08;MySQL、Oracle 等&#xff09;、HDFS、Hive、ODPS、HBase、FTP 等各种异构数据源&#xff08;即不同的数据库&#x…

挑战杯 python+opencv+深度学习实现二维码识别

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; pythonopencv深度学习实现二维码识别 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;3分 该项目较为新颖&…

从 AGP 4.1.2 升级到 7.5.1——动态添加仓库

AGP 升级问题 Build was configured to prefer settings repositories over project repositories but repository ‘maven4’ was added by plugin ‘***’ 添加仓库警告信息说&#xff1a; 依赖查找以你在 setting.gradle 文件配置的仓库为准&#xff08;因为你配置了 PRE…

基于SpringBoot+Vue的实验室管理系统

末尾获取源码作者介绍&#xff1a;大家好&#xff0c;我是墨韵&#xff0c;本人4年开发经验&#xff0c;专注定制项目开发 更多项目&#xff1a;CSDN主页YAML墨韵 学如逆水行舟&#xff0c;不进则退。学习如赶路&#xff0c;不能慢一步。 目录 一、项目简介 二、开发技术与环…

2024年小白学编程需要什么基础

学习编程需要什么基础&#xff1f;答案是意识基础和实践基础。 一、学习编程的意识基础 所谓学习编程的意识基础&#xff0c;实际上就是指建立在逻辑思维上的理解能力。只有具备逻辑思考能力&#xff0c;才能比较无障碍地理解编程语言的代码语句所描述的过程步骤&#xff0c;…

如何在Mac上允许主流浏览器使用弹出式窗口?这里有详细步骤

这篇文章教你如何关闭流行的Mac浏览器上的弹出窗口阻止程序,包括Safari、Chrome和Firefox。它还探讨了你可能希望这样做的原因及其影响。 如何在Mac上允许Safari使用弹出窗口 如果你经常在Mac上使用Safari,你会注意到默认情况下弹出窗口阻止程序是打开的。有时,这并不方便…

鲲志说:向我跌宕起伏,喜忧参半的2022致敬!

今天是2022的倒数第二天&#xff0c;就着CSDN的活动正好为自己做一个年度总结&#xff0c;也确实需要做一个年度总结来正式和过去的一年道个别 回想这一年&#xff0c;确实经历了很多&#xff0c;寒冬裁员、千里相赴见双方父母、成功夺冠&#x1f411;。。。成年人的世界确实很…

C#验证字符串是否大写、小写,正则表达式vs用Char.IsUpper和Char.IsLower方法遍历字符数组

目录 一、使用的方法 1.正则表达式 2.用Char.IsUpper或Char.IsLower方法 二、源代码 1.源码 2.生成效果 一、使用的方法 1.正则表达式 正则表达式“^[A-Z]$”&#xff0c;其中[A-Z]表示匹配一个到多个大写字母。 正则表达式“^[a-z]$”&#xff0c;其中[a-z]表示匹配一个…

快速渲染效果图:设计师的高效工作流揭秘

渲染技能是每个建模设计师需求的一个重要技能&#xff0c;尽管在许多设计公司里&#xff0c;建模和渲染往往是分开由各自的专家来完成。不过&#xff0c;一个全能型的建模师还是应该精通渲染技术。对于那些接外包项目来制作渲染效果图的设计师来说&#xff0c;掌握如何提速渲染…