Journal Archive

/**
 * @param {number[]} nums
 * @return {boolean}
 */
var find132pattern = function(nums) {
    if (nums.length < 3) return false;
    
    let potentialK = null;
    let stack = [];
    
    for (let pointer = nums.length - 1; pointer >= 0; pointer--) {
        // if a valid k is found and current number is less
        // than k, then we have found the subsequence
        if (potentialK !== null && nums[pointer] < potentialK) {
            return true;
        }
        
        // check for the highest potentialK in the stack
        while (stack.length > 0 && stack[stack.length - 1] < nums[pointer]) {
            potentialK = stack.pop();
        }
        
        stack.push(nums[pointer]);
    }
    
    
    return false;
};

Day 45: Solving one of LeetCode problems

456. 132 Pattern Difficulty - Medium

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].