当前位置: 首页 > news >正文

枚举专题.

=====模式=====

“132模式”——Leetcode 456. 132 模式

分析与思路:

class Solution {
public:bool find132pattern(vector<int>& nums) {int n = nums.size();if(n < 3)   return false;// 枚举最大的那个nums[j](在中间的那个数)// ①维护一个左边的最小值int left_min = nums[0];multiset<int> right_all;// ②右边的元素维护成一个有序的集合(方便二分)for(int k = 2; k < n; k ++) right_all.insert(nums[k]);for(int j = 1; j < n - 1; j ++) // 0一定留给左边的元素, n-1一定留给k{if(nums[j] > left_min){auto it = right_all.upper_bound(left_min);if(it != right_all.end() && *it < nums[j]){return true;}}// 维护一下两个变量left_min = min(left_min, nums[j]);right_all.erase(right_all.find(nums[j + 1]));   // erase应该传入迭代器!!!}return false;}
};

“1324模式”——Leetcode 2552. 统计上升四元组

 

思路与132模式类似,通过维护一些信息来控制复杂度。(维护什么,如何维护是重点。)

总体思路:

维护细节:

class Solution {
public:     // 顺序(i, j, k, l)long long countQuadruplets(vector<int>& nums) {long long res = 0;int n = nums.size();// ①维护great[k][x]:即idx在k的右边, 且比x(=nums[j])大的元素个数vector<vector<int>> great(n, vector<int>(n + 1));   // 注意:数组内的元素都是<=n 的for(int k = n - 2; k >= 2; k --){   // 按照定义,至少要留一个第四位置给l,所以从n-2开始倒序枚举great[k] = great[k + 1];for(int x = 1; x < nums[k + 1]; x ++)great[k][x] ++;}// ②less[j][x]:即idx在j的左边,且x(=nums[k])小的元素个数// 这里可以简化为一维的, 随着j的更新而更新(第一维就是当前的j, 预处理出来直接用)vector<int> less(n + 1, 0);for(int j = 1; j < n - 2; j ++){for(int x = nums[j - 1]; x <= n; x ++)less[x] ++;for(int k = j + 1; k < n - 1; k ++)if(nums[j] > nums[k])res += (long long)less[nums[k]] * great[k][nums[j]];}return res;}
};

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 有效寻找潜在客户的五个方法
  • Docker常用操作(基础篇)
  • 主动学习和贝叶斯优化 - smartly collect data
  • 2024外滩大会:机器人汽车飞机都来了
  • MIT License:全面解析与商用指南
  • C++---string类常见接口
  • MySQL 8.0.24 表 ‘/tmp/#sql1_f519f_7‘ 已满
  • Linux常见操作指令
  • VScode:前端开发中的常用快捷键和技巧
  • Comsol 点激励条件下薄板声辐射响应
  • C#游戏服务器开发框架设计与架构详解
  • [数据集][目标检测]机油泄漏检测数据集VOC+YOLO格式43张1类别
  • 论文翻译:arxiv-2024 Benchmarking Benchmark Leakage in Large Language Models
  • 那些你不知道的3个comfyui小技巧,分享给大家!
  • JAVA实习生(月薪3K-5K)应该具备哪些知识、能力
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • java中的hashCode
  • JDK 6和JDK 7中的substring()方法
  • js继承的实现方法
  • Leetcode 27 Remove Element
  • leetcode386. Lexicographical Numbers
  • leetcode98. Validate Binary Search Tree
  • Python_网络编程
  • RxJS: 简单入门
  • text-decoration与color属性
  • vue2.0项目引入element-ui
  • windows下mongoDB的环境配置
  • windows下使用nginx调试简介
  • 初识 webpack
  • 从伪并行的 Python 多线程说起
  • 汉诺塔算法
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 我是如何设计 Upload 上传组件的
  • 在Mac OS X上安装 Ruby运行环境
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • #window11设置系统变量#
  • #大学#套接字
  • (2)STL算法之元素计数
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (一)Kafka 安全之使用 SASL 进行身份验证 —— JAAS 配置、SASL 配置
  • (译) 函数式 JS #1:简介
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .bat文件调用java类的main方法
  • .NET MAUI Sqlite程序应用-数据库配置(一)
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .net/c# memcached 获取所有缓存键(keys)
  • .net下的富文本编辑器FCKeditor的配置方法