リートコード:456。132パターン



Leetcode 456 132 Pattern



class Solution { public boolean find132pattern(int[] nums) { if (nums.length < 3) { return false } int[] minArray = new int[nums.length] int min_i = Integer.MAX_VALUE Stack<Integer> stack = new Stack<>() for (int j = 0 j < nums.length j++) { min_i = Math.min(min_i, nums[j]) minArray[j] = min_i } for (int k = nums.length - 1 k >= 1 k--) { if ( nums[k] > minArray[k] && (stack.isEmpty() || stack.peek() > nums[k])) { stack.push(nums[k]) } else if (!stack.isEmpty() && nums[k] > minArray[k] && stack.peek() < nums[k] { if (stack.peek() > minArray[k]) { return true } else { stack.pop() } } } return false } }