当前位置: 首页 > 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;}
};


http://www.mrgr.cn/news/23523.html

相关文章:

  • 钢铁百科:NM360D执行标准、NM360D焊接性能、NM360D应用范围
  • 第三天旅游线路预览——从禾木景区入口到景区换乘中心
  • 【云服务器介绍】选择指南 腾讯云 阿里云全配置对比 搭建web 个人开发 app 游戏服务器
  • SprinBoot+Vue高校就业管理系统设计与实现的设计与实现
  • Jmeter_循环获取请求接口的字段,并写入文件
  • 无人机动力系统设计之桨叶推力计算
  • 安装一些大模型微调相关的库
  • [苍穹外卖]-07使用缓存优化查询接口
  • 2024年PDF转换器大集合:哪4款是互联网人的首选?
  • TikTok内容电商:短视频与直播带货如何重塑消费者购物决策
  • 国产游戏蓄力,火山引擎ByteHouse助力游戏厂商造爆款
  • DFS算法专题(二)——穷举vs暴搜vs深搜vs回溯vs剪枝【OF决策树】
  • 骨传导耳机哪个牌子值得买?推荐五款表现出色的骨传导耳机!
  • 基于人工智能的个性化学习推荐系统
  • OpenCV结构分析与形状描述符(14)拟合直线函数fitLine()的使用
  • 【C#生态园】JSON数据处理利器盘点:六款C#库全方位对比
  • 如何使用github build安装yolo v8
  • iPhone16无新意,华为三折叠横空出世,国产供应链要变天了?
  • Vue3.0项目实战(四)——大事件管理系统文章管理页面 - [element-plus 强化]
  • 如何使用Pyecharts创建数据可视化大屏