zoukankan      html  css  js  c++  java
  • 456. 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.

    Follow up: The O(n^2) is trivial, could you come up with the O(n logn) or the O(n) solution?

    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 <= 104
    • -109 <= nums[i] <= 109

    maintain a stack and a variable third (2 in 132 pattern)
    stack stores all numbers larger than third (3 in 132 pattern)
    when we iterate the array, and current number is less than third,
    then we found the 1 in 132 pattern, return true

    time = O(n), space = O(n) worst case

    class Solution {
        public boolean find132pattern(int[] nums) {
            int third = Integer.MIN_VALUE;  // 2 in 132 pattern
            Deque<Integer> stack = new ArrayDeque<>();  // keep track of 3 in 132 pattern
            for(int i = nums.length - 1; i >= 0; i--) {
                if(nums[i] < third) {   // find 1 in 132 pattern
                    return true;
                }
                while(!stack.isEmpty() && nums[i] > stack.peek()) {
                    third = stack.pop();
                }
                stack.push(nums[i]);
            }
            return false;
        }
    }
  • 相关阅读:
    关于路径的小知识点
    转发与重定向
    一种反复的读写文件的方法
    文字排版reportlab
    Qgis中插件的安装位置
    spyder打开文件假死解决
    地图跳跃-超级码力
    尾部的零
    一探torch.nn究竟“What is torch.nn really?”
    KAZE特征和各向异性扩散滤波
  • 原文地址:https://www.cnblogs.com/fatttcat/p/13896443.html
Copyright © 2011-2022 走看看