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.length
1 <= 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)