枚举中间位置基础篇

参考资料来源灵神在力扣所发的题单,仅供分享学习笔记和记录,无商业用途。

核心思路:

一:直接直接用数据结构记录需要的数据,在枚举右,维护左的循环中,删除当前位置的元素即可达成一样效果

二:(采用后缀表or其他:从后往前维护最有可能满足条件的数据结构 ),在枚举右,维护左。

应用场景:问题有三个下标,需要满足 0≤i<j<k<n。枚举 j,那么 i 和 k 自动被 j 隔开,互相独立,后续计算中无需关心 i 和 k 的位置关系。

模板题:2909. 元素和最小的山形三元组 II

class Solution {
public:int minimumSum(vector<int>& nums) {vector<int> ans(nums.size());ans[nums.size()-1]=nums.back();//后缀表:维护最有可能满足条件的数据for(int i=nums.size()-2;i>=2;i--) ans[i]=min(ans[i+1],nums[i]);int buff=nums[0],ret=INT_MAX;//枚举右,维护左for(int i=1;i<nums.size()-1;i++){//根据维护的左区间和后区间,判断当前元素是否满足条件if(buff<nums[i] && nums[i]>ans[i+1]) ret=min(ret,buff+nums[i]+ans[i+1]);buff=min(buff,nums[i]);}return ret==INT_MAX?-1:ret;}
};

力扣题单练习(灵神题单中摘取题目)

3583. 统计特殊三元组

class Solution {
public:int specialTriplets(vector<int>& nums) {const int MOD=1E9+7;unordered_map<int,int> map;vector<int> ans(nums.size(),0);int ret=0;//后缀表:从后往前维护当前元素右侧有多少满足条件的值for(int i=nums.size()-1;i>=1;i--){ans[i]=map[nums[i]*2];map[nums[i]]++;}map.clear();map[nums[0]]++;//枚举右,维护左。for(int i=1;i<nums.size()-1;i++){//当前元素前面满足条件的值的数量*后缀表[i]=当前元素可以构成的特殊三元组数量ret=(ret+(long long)ans[i]*map[nums[i]*2])%MOD;map[nums[i]]++;}return ret;}
};

1930. 长度为 3 的不同回文子序列

核心思路:用位运算将字符转化成二进制记录以当前元素作为中间值的各种不同回文序列

class Solution {
public://统计以当前元素为中间值可组成的不同回文序列的数量int check(int x){int ans=0;for(int i=0;i<26;i++) if((x>>i) & 1) ans++;return ans;}用位运算将字符转化成二进制记录以当前元素作为中间值的各种不同回文序列int countPalindromicSubsequence(string s) {//题意:给定一个字符串,选取从中选取三个元素要求组成回文字符串。记录不同回文字符串的总数量vector<int> last(26,0),head(26,0),has(26,0);//数组记录后续元素for(int i=1;i<s.size();i++) last[s[i]-'a']++;for(int i=1;i<s.size()-1;i++){last[s[i]-'a']--;  //在后序元素数组中剔除当前元素head[s[i-1]-'a']++; //前序元素数组中增加当前位置的前一位的元素for(int j=0;j<26;j++){if(head[j] && last[j]){  //前后序都有的元素可组成回文序列has[s[i]-'a']|=1<<j;  //记录以当前元素作为中间值的各种不同回文序列}}}int ret=0;for(int i=0;i<26;i++) ret+=check(has[i]);return ret;}
};

3128. 直角三角形

核心思路:枚举直角三角形的拐角位置

class Solution {
public:long long numberOfRightTriangles(vector<vector<int>>& grid) {vector<int> row(grid.size()),col(grid[0].size());//记录每行每列有多少个1for(int i=0;i<grid.size();i++){for(int j=0;j<grid[i].size();j++){if(grid[i][j]==1){row[i]++;col[j]++;}}}long long ret=0;for(int i=0;i<grid.size();i++){for(int j=0;j<grid[0].size();j++){//枚举直角三角形的拐角位置,当前行-1*当前列-1=当前拐角可构成的直角三角形if(grid[i][j]==1) ret+=(row[i]-1)*(col[j]-1);}}return ret;}
};

2874. 有序三元组中的最大值 II

class Solution {
public:long long maximumTripletValue(vector<int>& nums) {int n=nums.size();vector<int> ans(n+1,INT_MIN);//后缀表:从后向前维护当前最大值for(int i=n-1;i>=2;i--) ans[i]=max(ans[i+1],nums[i]);int buff=nums[0];long long ret=0;//枚举右,维护左(最大值)for(int i=1;i<n-1;i++){ret=max(ret,(long long)(buff-nums[i])*ans[i+1]);buff=max(buff,nums[i]);}return ret;}
};

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

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

相关文章

企业选择将服务器放在IDC机房托管的优势

在服务器作为数据存储和传输的核心设备的社会环境中&#xff0c;服务器的稳定性和安全性会直接影响到企业业务的连续性和用户的满意程度&#xff0c;随着云计算技术和大数据的兴起&#xff0c;企业对于服务器的需求也在日益增加&#xff0c;而如何高效、安全的管理服务器则是各…

自动化UI测试工具TestComplete的AI双引擎:即时数据集 + 自愈测试

随着敏捷开发和持续交付模式的普及&#xff0c;传统的软件测试方法正面临着前所未有的挑战。测试团队在追求快速迭代的同时&#xff0c;往往陷入测试数据准备和测试维护的泥潭&#xff0c;严重制约了交付效率和质量保障能力。 TestComplete作为业界领先的自动化测试工具&#…

用KNN实现手写数字识别:基于 OpenCV 和 scikit-learn 的实战教学 (超级超级超级简单)

用KNN实现手写数字识别&#xff1a;基于 OpenCV 和 scikit-learn 的实战教学在这篇文章中&#xff0c;我们将使用 KNN&#xff08;K-Nearest Neighbors&#xff09;算法对手写数字进行分类识别。我们会用 OpenCV 读取图像并预处理数据&#xff0c;用 scikit-learn 构建并训练模…

数据结构自学Day15 -- 非比较排序--计数排序

一、计数排序&#xff08;Counting Sort&#xff09;计数排序是一种非比较型的排序算法&#xff0c;它的核心思想是&#xff1a;利用“元素的值”来确定它在结果数组中的位置&#xff0c;通过“统计每个数出现的次数”来完成排序。二、如何实现计数排序&#xff08;核心步骤&am…

k8s的权限

来自博客&#xff1a;25-k8s集群中-RBAC用户角色资源权限_权限 资源 角色-CSDN博客 一.RBAC概述&#xff08;基于角色的访问控制&#xff09; 1.图解 用户&#xff1a; 1.user 2.serviceAccount 3.Group 用户角色 1.Role:局部资源角色 2.clusterRole:全局资源角色额 角色绑…

C++ - 仿 RabbitMQ 实现消息队列--服务端核心模块实现(三)

目录 队列数据管理 代码实现 测试代码 绑定信息(交换机-队列)管理 代码实现 测试代码 队列数据管理 当前队列数据的管理&#xff0c;本质上是队列描述信息的管理&#xff0c;描述当前服务器上有哪些队列。 定义队列描述数据类 队列名称是否持久化标志是否独占标志是否自…

51c自动驾驶~合集9

自己的原文哦~ https://blog.51cto.com/whaosoft/11627386 #端到端1 说起端到端&#xff0c;每个从业者可能都觉得会是下一代自动驾驶量产方案绕不开的点&#xff01;特斯拉率先吹响了方案更新的号角&#xff0c;无论是完全端到端&#xff0c;还是专注于planner的模…

时间长了忘记jupyter的环境是哪个了

有这些但是忘记是哪个了jupyter kernelspec list查看内核路径&#xff0c;这个内核是用来告诉jupyter 去哪找内核配置的到这个路径下打开json文件查看使用的python环境从而确定是哪个conda环境为jupyter使用的python环境jupyter的工作原理&#xff1a;在创建conda环境后会安装j…

PYTHON从入门到实践-15数据可视化

数据可视化是数据分析中不可或缺的一环&#xff0c;它能够将抽象的数据转化为直观的图形&#xff0c;帮助我们更好地理解数据特征和发现潜在规律。本文将介绍如何使用Python中的Matplotlib和Plotly库进行数据可视化&#xff0c;并通过掷骰子的概率模拟案例展示可视化的实际应用…

Spring IOC 容器 **默认注册 Bean** 的 8 条规则

Spring IOC 容器 默认注册 Bean 的 8 条规则 &#xff08;Spring Framework 6.x 源码级总结&#xff09;阅读提示&#xff1a;把下面 8 条规则背下来&#xff0c;再读 Spring 源码时&#xff0c;你会在任何一行代码里立刻知道「这个 BeanDefinition 是从哪儿来的」。1️⃣ 环境…

29.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--用户配置服务

用户配置服务是孢子记账中最简单的部分。简单说&#xff0c;用户配置服务就是用户自定义的配置项存储服务&#xff0c;用于我们的APP根据用户的配置实现指定的功能。它提供了一个简单的接口&#xff0c;允许用户存储和检索他们的配置数据。就目前来说&#xff0c;用户配置只有一…

Python实现PDF按页分割:灵活拆分文档的技术指南

Python实现PDF按页分割&#xff1a;灵活拆分文档的技术指南 PDF文件处理是日常工作中的常见需求&#xff0c;特别是当我们需要将大型PDF文档拆分为多个部分时。本文将介绍如何使用Python创建一个灵活的PDF分割工具&#xff0c;能够根据用户指定的页数范围任意分割文档。 需求分…

「iOS」——GCD其他方法详解

GCD学习GCD其他方法dispatch_semaphore &#xff08;信号量&#xff09;**什么是信号量**dispatch_semaphore主要作用dispatch_semaphore主要作用异步转同步设置一个最大开辟的线程数加锁机制dispatch_time_t 两种形式GCD一次性代码(只执行一次)dispatch_barrier_async/sync栅栏…

【图像处理基石】如何实现一个车辆检测算法?

基于AI的车牌检测和识别算法 问题描述、应用场景与难点 问题描述 车牌检测和识别是计算机视觉领域的一个特定任务&#xff0c;主要包含两个核心步骤&#xff1a; 车牌检测&#xff1a;从图像中准确定位车牌的位置和区域车牌识别&#xff1a;对检测到的车牌区域进行字符识别&…

计算机学报 2025年 区块链论文 录用汇总 附pdf下载

计算机学报 Year&#xff1a;2025 2024请看 1 Title: 基于区块链的动态多云多副本数据完整性审计方法研究 Authors: Key words: 区块链&#xff1b;云存储&#xff1b;多云多副本存储&#xff1b;数据完整性审计 Abstract: 随着云计算技术的快速发展和云存储服务的日益…

计算机网络-UDP协议

UDP&#xff08;用户数据报协议&#xff09;是传输层的一种无连接、不可靠、轻量级的协议&#xff0c;适用于对实时性要求高、能容忍少量数据丢失的场景&#xff08;如视频流、DNS查询等&#xff09;。以下是UDP的详细解析&#xff1a;1. UDP的核心特点特性说明无连接通信前无需…

子域名收集和c段查询

子域名收集方法一、sitesite&#xff1a; 要查询的域名可以查到相关网站二、oneforall &#xff08;子域名查找工具&#xff09;下载后解压的文件夹在当前文件夹打开终端然后运行命令 python oneforall.py --target xxxxxxxx&#xff08;这里放你要查的网址&#xff09; run最…

计网-TCP拥塞控制

TCP的拥塞控制&#xff08;Congestion Control&#xff09;是核心机制之一&#xff0c;用于动态调整发送方的数据传输速率&#xff0c;避免网络因过载而出现性能急剧下降&#xff08;如丢包、延迟激增&#xff09;。其核心思想是探测网络可用带宽&#xff0c;并在拥塞发生时主动…

依赖倒置原则 Dependency Inversion Principle - DIP

基本知识 1.依赖倒置原则&#xff08;DIP&#xff09;是面向对象设计&#xff08;OOD&#xff09;中的五个基本原则之一&#xff0c;通常被称为 SOLID 原则中的 D 2.核心思想&#xff1a; 高层模块不应该依赖低层模块&#xff0c;两者都应该依赖抽象。 (High-level modules sho…

原生input添加删除图标类似vue里面移入显示删除[jquery]

<input type"text" id"servicer-search" class"form-control" autocomplete"off" />上面是刚开始的input <div class"servicer-search-box"><input type"text" id"servicer-search" cla…