​LeetCode刷题实战334:递增的三元子序列

简介: 算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !

今天和大家聊的问题叫做 递增的三元子序列,我们先来看题面:https://leetcode-cn.com/problems/increasing-triplet-subsequence/

Given an integer array nums, return true if there exists a triple of indices (i, j, k) such that i < j < k and nums[i] < nums[j] < nums[k]. If no such indices exists, return false.

给你一个整数数组 nums ,判断这个数组中是否存在长度为 3 的递增子序列。如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ,使得 nums[i] < nums[j] < nums[k] ,返回 true ;否则,返回 false 。

示例

示例 1:
输入:nums = [1,2,3,4,5]
输出:true
解释:任何 i < j < k 的三元组都满足题意
示例 2:
输入:nums = [5,4,3,2,1]
输出:false
解释:不存在满足题意的三元组
示例 3:
输入:nums = [2,1,5,0,4,6]
输出:true
解释:三元组 (3, 4, 5) 满足题意,因为 nums[3] == 0 < nums[4] == 4 < nums[5] == 6

解题

用a、b、c来表示三元子序列的三个元素:其中用c来遍历数组,用a来始终记录最小的元素,用b来记录子序列中最大的元素。然后再遍历的时候,不断地更新a,同时也要保证b尽可能地小,如果遍历到的元素c大于a同时也大于b的话,表示找到三元组了,返回true。

class Solution {
public:
    bool increasingTriplet(vector<int>& nums) {
        if(nums.size()<3)return false;
        //用a始终记录最小的元素,b为子序列中第二大的元素
        int a=INT_MAX,b=INT_MAX;
        //然后不断更新a,同时保持b尽可能的小。如果下一个元素比b大证明找到了三元组
        for(const auto c:nums){
            if(c<=a)a=c; //c小于等于a,a更新为新出现的较小值
            else if(c<=b)b=c; //c大于a同时c小于等于b,b更新为大于a的较小值
            else return true; //c大于a同时也大于b,证明找到三元组了
        }
        return false;
    }
};

好了,今天的文章就到这里,如果觉得有所收获,请顺手点个在看或者转发吧,你们的支持是我最大的动力 。


相关文章
|
1天前
leetcode代码记录(最长连续递增序列
leetcode代码记录(最长连续递增序列
11 2
|
1天前
leetcode代码记录(最长递增子序列
leetcode代码记录(最长递增子序列
9 1
|
1天前
|
算法 C++
【刷题】Leetcode 1609.奇偶树
这道题是我目前做过最难的题,虽然没有一遍做出来,但是参考大佬的代码,慢慢啃的感觉的真的很好。刷题继续!!!!!!
8 0
|
1天前
|
算法 索引
【刷题】滑动窗口精通 — Leetcode 30. 串联所有单词的子串 | Leetcode 76. 最小覆盖子串
经过这两道题目的书写,相信大家一定深刻认识到了滑动窗口的使用方法!!! 下面请大家继续刷题吧!!!
11 0
|
1天前
|
算法
【刷题】 leetcode 面试题 08.05.递归乘法
递归算法是一种在计算机科学和数学中广泛应用的解决问题的方法,其基本思想是利用问题的自我相似性,即将一个大问题分解为一个或多个相同或相似的小问题来解决。递归算法的核心在于函数(或过程)能够直接或间接地调用自身来求解问题的不同部分,直到达到基本情况(也称为基础案例或终止条件),这时可以直接得出答案而不必再进行递归调用。
25 4
【刷题】 leetcode 面试题 08.05.递归乘法
|
1天前
|
存储 算法 安全
【刷题】 leetcode 面试题 01.06 字符串压缩
来看效果: 非常好!!!过啦!!!
25 5
【刷题】 leetcode 面试题 01.06 字符串压缩
|
1天前
|
存储 算法 测试技术
|
1天前
|
算法 C语言 C++
|
1天前
|
算法
leetcode代码记录(摆动序列
leetcode代码记录(摆动序列
9 0

热门文章

最新文章