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;
        }
    }
  • 相关阅读:
    springboot + druid
    springboot + lombok
    springboot + swagger2
    Timer / TimerTask 源码解析
    Nginx(三) upstream目前支持的5种分配方式
    Nginx(一) 配置负载均衡
    Intellij IDEA 2018.02 激活方法
    Class常量池、String常量池、运行时常量池
    IntelliJ 结合 javap 实现class文件分析(反编译)
    关于登录注册的简单实现方式
  • 原文地址:https://www.cnblogs.com/fatttcat/p/13896443.html
Copyright © 2011-2022 走看看