2023-09-30 Daily Challenge
Today I have done leetcode's September LeetCoding Challenge with cpp.
September LeetCoding Challenge 30
Description
132 Pattern
Given an array of n integers nums, a 132 pattern is a subsequence of three integers nums[i], nums[j] and nums[k] such that i < j < k and nums[i] < nums[k] < nums[j].
Return true if there is a 132 pattern in nums, otherwise, return false.
Example 1:
Input: nums = [1,2,3,4] Output: false Explanation: There is no 132 pattern in the sequence.
Example 2:
Input: nums = [3,1,4,2] Output: true Explanation: There is a 132 pattern in the sequence: [1, 4, 2].
Example 3:
Input: nums = [-1,3,2,0] Output: true Explanation: There are three 132 patterns in the sequence: [-1, 3, 2], [-1, 3, 0] and [-1, 2, 0].
Constraints:
n == nums.length1 <= n <= 2 * 105-109 <= nums[i] <= 109
Solution
auto speedup = [](){
cin.tie(nullptr);
cout.tie(nullptr);
ios::sync_with_stdio(false);
return 0;
}();
class Solution {
public:
bool find132pattern(vector<int>& nums) {
if(nums.size() < 3) return false;
stack<int> three;
int two = INT_MIN;
three.push(nums.back());
for(int i = nums.size()-1; i >=0 ; --i) {
if(nums[i] < two) return true;
while(three.size() && three.top() < nums[i]) {
two = three.top();
three.pop();
}
three.push(nums[i]);
}
return false;
}
};
// Accepted
// 103/103 cases passed (49 ms)
// Your runtime beats 98.35 % of cpp submissions
// Your memory usage beats 85.68 % of cpp submissions (48 MB)