【leetcode】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);
}
收获
- 没有太多收获