【leetcode】334. 递增的三元子序列

题目内容

334. 递增的三元子序列

思路分析

本题比较简单(没怎么思考,直接看的答案)

方法一:脑筋急转弯

设置两个变量small=INT_MAX和mid=INT_MAX,依次遍历数组,若小于等于small则更新small,若小于等于mid则更新mid。

注意一定要加上等于号的限制,等于号能保证遇到相等情况时能对small和mid正确更新。否则遇到类似于[1, 1, -2, 6]的情况,就会导致small和mid都为1,然后6>1,判定为true,而正确答案显然为false。

代码

#include <vector>
#include <math.h>
#include <limits.h>

using namespace std;

class Solution {
   public:
      bool increasingTriplet(vector<int>& nums) {
         int small{ INT_MAX }, mid{ INT_MAX };
         if (nums.size() < 3) return false; // 记得加这个,养成习惯
         for (auto num : nums) {
            if (num <= small) {
               small = num;
            } else if (num <= mid) {
               mid = num;
            } else if (num > mid) {
               return true;
            }
         }

         return false;
      }
};

int main() {
   Solution s;
   vector<int> input{ 1,2,3,4,5 };
   s.increasingTriplet(input);
}

收获

  • 没有太多收获