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

【序列贪心】摆动序列 / 最长递增子序列 / 递增的三元子序列 / 最长连续递增序列

头像
⭐️个人主页:@小羊
⭐️所属专栏:贪心算法
很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~

动图描述

目录

      • 摆动序列
      • 最长递增子序列
      • 递增的三元子序列
      • 最长连续递增序列


摆动序列

  • 摆动序列

在这里插入图片描述

贪心策略:统计出所有的极大值和极小值,以及最前和最后的两个点。

class Solution {
public:int wiggleMaxLength(vector<int>& nums) {int n = nums.size();if (n < 2) return n;int ret = 0, left = 0;for (int i = 0; i < n - 1; i++){int right = nums[i + 1] - nums[i];// 计算接下来的趋势if (right == 0) continue;// 是否水平if (right * left <= 0) ret++;// 极大值或极小值left = right;// 更新趋势}return ret + 1; // 加上最后一个数}
};

最长递增子序列

  • 最长递增子序列

在这里插入图片描述

贪心策略:用辅助数组存储当前最长递增子序列,遍历数组,先拿当前元素和辅助数组的最后一个数比较,如果大于则插入到辅助数组最后一个位置,如果不大于则在辅助数组中二分查找当前元素可以替换的位置,再插入。遍历完数组后辅助数组中存的就是最长递增子序列。

class Solution {
public:int lengthOfLIS(vector<int>& nums) {vector<int> v;v.push_back(nums[0]);for (int i = 1; i < nums.size(); i++){if (nums[i] > v.back()) v.push_back(nums[i]);int l = 0, r = v.size() - 1; // 插在它刚好大过的数前面while (l < r){int mid = (l + r) / 2;if (v[mid] < nums[i]) l = mid + 1;else r = mid;}v[l] = nums[i];}return v.size();}
};

递增的三元子序列

  • 递增的三元子序列

在这里插入图片描述

class Solution {
public:bool increasingTriplet(vector<int>& nums) {int n = nums.size();int a = nums[0], b = INT_MAX;for (int i = 1; i < n; i++){if (nums[i] > b) return true;else if (nums[i] > a) b = nums[i];else a = nums[i];}return false;}
};

最长连续递增序列

  • 最长连续递增序列

在这里插入图片描述

class Solution {
public:int findLengthOfLCIS(vector<int>& nums) {int n = nums.size(), ret = 0;for (int i = 0; i < n;){int j = i + 1;while (j < n && nums[j] > nums[j - 1]) j++;ret = max(ret, j - i);i = j;}return ret;}
};

本篇文章的分享就到这里了,如果您觉得在本文有所收获,还请留下您的三连支持哦~

头像
http://www.xdnf.cn/news/3742.html

相关文章:

  • 黑客学习计划
  • PowerBI企业运营分析——多维度日期指标分析
  • stm32f4 声音传感器采集
  • [UVM]在SoC中用寄存器模型backdoor访问寄存器的案例
  • 存在重复元素II(简单)
  • 用 DuckDB 高效分析 JSON 数据:从入门到实战
  • 机器学习常用评价指标
  • P1004 [NOIP 2000 提高组] 方格取数
  • api补充
  • 在GPU集群上使用Megatron-LM进行高效的大规模语言模型训练
  • 有效的字母异位词(简单)
  • 闭包(Closure)及其作用和影响
  • 《ATPL地面培训教材13:飞行原理》——第5章:升力
  • 【算法应用】基于灰狼算法优化深度信念网络回归预测(GWO-DBN)
  • C# 运算符重载深度解析:从基础到高阶实践
  • MIT6.S081-lab8
  • 十一岁少年叶珉雪用艺术点亮公益之路 个人原创公益演唱会传递大爱与担当
  • C++类_构造函数
  • DBSCAN对比K-means
  • 软件第三方测试报告:从测试背景目的到方法范围全解析?
  • 域名与官网的迷思:数字身份认证的全球困境与实践解方-优雅草卓伊凡
  • Java 网络安全新技术:构建面向未来的防御体系
  • 【三班网】初中最后一次研学活动纪实
  • 如何提升个人的理解能力?
  • 生成式 AI 的优势
  • 软件管理(安装方式)
  • 【关于LM311实现过零比较器输出波形】2022-9-27
  • 【自然语言处理与大模型】使用Xtuner进行模型合并与导出
  • NHANES指标推荐:triglyceride levels
  • MySQL安装完全指南:从零开始到配置优化(附避坑指南)