Thought: I use min1, max1 to record the starting point and end point of increasing subarray of length two. They are initialized to both 1 as an indicator if such array ever exists. Thus, I can avoid the usage of INT_MAX.
So, starting from position 1, when we encounter a new number, we have the following situations:

It’s the global min. Minimum so far

Length of two subarray already exists(max1 > 0), and this number is greater than nums[max1], so answer is found.

If all above didn’t happen, and we found that current number is actually greater than global min, so they become the length of two increasing subarray. Please note that this could be 1) the first length of 2 array or 2) a better length of 2 candidate array. The new nums[max1] should be less or equal to the prior nums[max1] if it exists. Why? Otherwise, we should already return true in scenario 2 already right?

Done. Return false if true never happens :) Hope this helps.
As an example:
e.g. 6.......5.......3.......5.......5.......4.......2.......5
......................min1 max1
......................min1...................max1 (better candidate min1, and max1)
.................................................................found (6 > nums[max1], so [3, 4, 5] satisfies the requirement)
class Solution {
public:
bool increasingTriplet(vector<int>& nums) {
if(nums.size() < 3) return false;
int idx_globalMin = 0;
int min1 = 1, max1 = 1;
for(int i = 1; i < nums.size(); i++){
if(nums[i] < nums[idx_globalMin]){
idx_globalMin = i;
}
else if(max1 > 0 && nums[i] > nums[max1]) return true;
else if(nums[i] > nums[idx_globalMin]) {
min1 = idx_globalMin;
max1 = i;
}
}
return false;
}
};