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;
        }
    }
  • 相关阅读:
    熟悉常用的Linux操作
    Python基础之五星红旗
    类似于铁道部12306的城市选择框的实现
    使用Django操作数据库入门
    进程和线程
    线程、进程、携程理解
    CentOS6.8部署Python3.6.8的Django项目
    爬取妹子图片
    聚类算法之DBSCAN
    机器学习算法优缺点总结
  • 原文地址:https://www.cnblogs.com/fatttcat/p/13896443.html
Copyright © 2011-2022 走看看