【双周赛】第123场双周赛

🔥博客主页: A_SHOWY
🎥系列专栏:力扣刷题总结录 数据结构  云计算  数字图像处理  力扣每日一题_ 

【1】三角形类型Ⅱ

100222. 三角形类型 IIicon-default.png?t=N7T8https://leetcode.cn/problems/type-of-triangle-ii/

 简单题,直接过了

class Solution {
public:string triangleType(vector<int>& nums) {if(nums[0] + nums[1] <= nums[2] ||nums[0] + nums[2] <= nums[1] || nums[2] + nums[1] <= nums[0]) return "none";else{if(nums[0] == nums[1] && nums[0] == nums[2]) {return "equilateral";}else if(nums[0] == nums[1] ||nums[2] == nums[1] ||nums[0] == nums[2]) {return "isosceles";}else {return "scalene";}}}
};

【2】人员站位的方案数

100194. 人员站位的方案数 Iicon-default.png?t=N7T8https://leetcode.cn/problems/find-the-number-of-ways-to-place-people-i/

是一个二维数组的题目,用到一个小技巧,判断这个矩形里面有没有数,可以按照行坐标排序从小到大,再对相同行坐标的从大到小排序,降低维度了。然后进行枚举

 判断范围内有没有点,技巧是先把这个points排序,比如按照横坐标从小到大,那么后续的枚举只需要考虑纵坐标即可。如果横坐标相同,从上到下枚举。

这样我们只需要考虑下一个点的纵坐标是否比我们当前定义的最大值要大,保证大才能满足不包含点。

class Solution {
public:int numberOfPairs(vector<vector<int>>& points) {ranges::sort(points,[](const auto &p,const auto &q){return p[0] != q[0] ? p[0] < q[0] : p[1] > q[1];});int ans = 0;int  n = points.size();for(int i = 0; i < n ; i++){// 记录第一个的yint y0 = points[i][1];// 记录比第一个的y小的,初始值设置为最小int max_y = INT_MIN;for(int j = i + 1; j < n; j++){int y = points[j][1];if(y <= y0 && y > max_y) {max_y = y;ans++;}}}return ans;}
};

【3】最大子数组和

100183. 最大好子数组和icon-default.png?t=N7T8https://leetcode.cn/problems/maximum-good-subarray-sum/

 这个题目太可惜了,其实如果暴力思路不算难的,比赛的时候我先是,用了一个o(n的三次方的方法超时),然后优化了一下前缀和o(n方)还是超时!我人就麻了,最后几个用例一直通不过,今天看了题解动态的维护前缀和,太巧妙了

 方法一:前缀和+模拟双重循环

class Solution {
public:long long maximumSubarraySum(vector<int>& nums, int k) {int n = nums.size();long long ans = INT_MIN;vector<long long> preSum(n + 1, 0);for (int i = 0; i < n; ++i) {preSum[i + 1] = preSum[i] + nums[i];}for (int i = 0; i < n; ++i) {for (int j = i + 1; j < n; ++j) {int diff = abs(nums[i] - nums[j]);if (diff == k) {ans = max(ans, preSum[j + 1] - preSum[i]);}}}if(ans != INT_MIN)return ans;else return 0;}
};

 (超时,4个长用例过不去)

方法二:动态维护前缀和

  1. 为了方便描述把nums数组描述为a。子数组a[i 。。。j]的元素和为s[j + 1] - s[ i ](因为s这个数组首项为0。我们的总体思路是枚举j,找到最小的s[ i ]满足| a[ i ] - a[ j ] | = k。定义哈希表sum_s,键为a[i] 值为相同a[i] 下的s[i] 的最小值。
  2. 核心就是遍历右边,左边找合适的存到哈希表,并且动态维护这个值的最小前缀和。
class Solution {
public:long long maximumSubarraySum(vector<int>& nums, int k) {long long ans = LLONG_MIN;long long sum = 0;unordered_map<int , long long> min_s;for(int x : nums){auto it = min_s.find(x - k);if(it != min_s.end()){ans = max(ans,sum + x - it->second);}it = min_s.find(x + k);if(it != min_s.end()){ans = max(ans,sum + x - it -> second);}//  找最小的那个满足条件的左边的值,遍历所有的当右边的值it = min_s.find(x);if(it == min_s.end() || sum < it -> second){min_s[x] = sum;}sum += x;}return ans == LLONG_MIN ? 0 : ans;}
};

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

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

相关文章

高级Java开发工程师岗位的基本职责(合集)

高级Java开发工程师岗位的基本职责1 职责&#xff1a; 1、负责区块链产品的研发&#xff0c;独立或与团队合作&#xff0c;按时保质完成软件开发项目; 2、参与产品系统设计、概要设计工作&#xff0c;核心功能的代码编写; 3、独立解决和指导其他同事处理开发中遇到的难点问题; …

智能决策的艺术:探索商业分析的最佳工具和方法

文章目录 一、引言二、商业分析思维概述三、数据分析在商业实践中的应用四、如何培养商业分析思维与实践能力五、结论《商业分析思维与实践&#xff1a;用数据分析解决商业问题》亮点内容简介作者简介目录获取方式 一、引言 随着大数据时代的来临&#xff0c;商业分析思维与实…

MagicVideo-V2:多阶段高保真视频生成框架

本项工作介绍了MagicVideo-V2&#xff0c;将文本到图像模型、视频运动生成器、参考图像embedding模块和帧内插模块集成到端到端的视频生成流程中。由于这些架构设计的好处&#xff0c;MagicVideo-V2能够生成具有极高保真度和流畅度的美观高分辨率视频。通过大规模用户评估&…

【AG32VF407】国产MCU+FPGA Verilog双边沿检测输出方波

视频讲解 [AG32VF407]国产MCUFPGA Verilog双边沿检测输出方波 实验过程 本次使用使用AG32VF407开发板中的FPGA&#xff0c;使用双clk的双边沿进行检测&#xff0c;同步输出方波 同时可以根据输出的方波检测clk的频率&#xff0c;以及双clk的相位关系&#xff0c;如下为verilog…

#从零开始# 在深度学习环境中,如何用 pycharm配置使用 pipenv 虚拟环境

为Python项目创建虚拟环境 在深度学习环境和一般python环境中安装pipenv基本一致&#xff0c;只需要确认好pipenv指定的python版本即可,安装pipenv前&#xff0c;可以通过python --version来确认安装版本 快捷键&#xff1a;crtl alt S 查看interpreter&#xff0c;查看所有…

MySQL知识点总结(三)——事务

MySQL知识点总结&#xff08;三&#xff09;——事务 事务事务的四大特性ACID原子性一致性隔离性持久性 脏读、幻读、不可重复读脏读不可重复读幻读 隔离级别读未提交读已提交可重复读串行化 事务的原理InnoDB如何实现事务的ACID事务的两阶段提交redo log与binlog的区别事务两阶…

k8s学习-Kubernetes的包管理器Helm

1.1 为何需要Helm Kubernetes能够很好地组织和编排容器&#xff0c;但它缺少⼀个更高层次的应用打包工具&#xff0c;而Helm就是来干这件事的。 先来看个例子。 比如对于⼀个MySQL服务&#xff0c;Kubernetes需要部署下面这些对象&#xff1a; &#xff08;1&#xff09;Serv…

【消息队列】kafka整理

kafka整理 整理kafka基本知识供回顾。

vulhub中spring的CVE-2022-22965漏洞复现

在JDK 9上运行的Spring MVC或Spring WebFlux应用程序可能存在通过数据绑定执行远程代码&#xff08;RCE&#xff09;的漏洞。 现在已知的利用方法要求应用程序以WAR部署的形式在Tomcat上运行&#xff0c;然而&#xff0c;该漏洞的性质更为普遍&#xff0c;可能有其他方法可以利…

C++友元函数/友元类

目录 1.友元函数/友元类定义2.友元函数、类成员函数、非友元函数的区别3.友元函数和友元类的比较4.友元函数/友元类的优缺点5.参考内容 1.友元函数/友元类定义 (1)在类中用friend关键字去声明函数/类&#xff0c;则这个函数/类就会变成友元函数/友元类&#xff1b; (2)友元函数…

Zookeeper 集群安装

载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一,它通常是指,将请求/数据【均匀】分摊到多个操作单元上执行,负载均衡的关键在于【均匀】。常见互联网分布式架构如上,分为客户端层、反向代理nginx层、站点层、服务层、数据层。 现在使用最多的基于软件的负…

鉴权失败原因

在技术领域&#xff0c;鉴权失败是指一个系统或应用程序中的身份验证或权限验证过程失败。当用户试图访问受限资源或执行受限操作时&#xff0c;系统会进行鉴权过程来确认用户是否具有足够的权限。如果鉴权过程失败&#xff0c;则表示用户无法获得所需的访问权限。 鉴权失败可…