当前位置:网站首页>leetcode:334. 递增的三元子序列
leetcode:334. 递增的三元子序列
2022-08-10 10:09:00 【OceanStar的学习笔记】
题目来源
题目描述


题目解析
本质是问最长递增子序列长度能否超过2而已
一次遍历
因为我们需要求解的长度仅仅为3,所以我们可以直接将这个三元子序列的值记录下来;

使用两个指针m1和m2,初始化为INT_MAX,然后遍历数组:
- 如果m1 >= curr,则令m1 = curr
- 如果m1 < curr && m2 >= curr,则令m2 = curr
一旦m2被更新了,说明一定会有一个数小于m2,也就是我们成功组成了一个长度为2的递增子序列。所以我们一旦遍历到比m2还大的数,我们直接返回ture。
如果我们遇到比m1小的数,还是要更新m1,有可能的话也要更新m2为更小的值,毕竟m2的值越小,能组成长度为3的递增序列的可能性越大
class Solution {
public:
bool increasingTriplet(vector<int>& nums) {
int m1 = INT32_MAX, m2 =INT32_MAX;
for(auto a : nums){
if(m1 >= a){
m1 = a;
}else if(m2 >= a){
m2 = a;
}else{
return true;
}
}
return false;
}
};
暴力超时
class Solution {
bool process(vector<int>& nums, int idx, std::vector<int>&path){
if(idx == nums.size()){
return path.size() >= 3;
}
bool p1 = process(nums, idx + 1, path);
bool p2 = false;
if(path.empty() || path.back() < nums[idx] ){
path.emplace_back(nums[idx]);
p2 = process(nums, idx + 1, path);
path.pop_back();
}
return p1 || p2;
}
public:
bool increasingTriplet(vector<int>& nums) {
std::vector<int>path;
return process(nums, 0, path);
}
};
类似题目
边栏推荐
猜你喜欢
随机推荐
PTA 7-2 Summation and Counting of Diagonal Elements of Square Matrices Solution
跨公网环境,路由策略,进行设备的访问
Development environment variable record under win
【STL】位图的介绍使用以及代码的模拟实现
ES复杂操作搜索
SQL中的字符串截取函数
大连理工&鹏城&UAE提出用于伪装目标检测的混合尺度三重网络ZoomNet,性能SOTA!
LCD DRM驱动框架分析二
Behind iFLYTEK's translation machine stealing the spotlight, cross-language communication has entered a new era
CentOS和Ubantu的Mysql主从配置
【Software Exam System Architect】Case Analysis ⑥ Web Application System Architecture Design
VBA: Inputbox Function and Inputbox Method
《MySQL高级篇》六、索引的创建与设计原则
武功修炼:内功
14 high-frequency handwritten JS interview questions and answers to consolidate your JS foundation
2022.8.8-----leetcode.761
「第二部:容器和微服务架构」(1) 基于容器应用架构设计原则
负载均衡原理分析与源码解读
腾讯云校园大使开始招募啦,内推名额和奖金等你来拿
gin-gonic/gin使用详解
![[Internet of Things Architecture] The most suitable open source database for the Internet of Things](/img/e9/10cf128dec3000daf7a3b2c816588f.jpg)








