456. 132 Pattern 发表于 2022-09-27 123456789101112131415161718192021222324class Solution { public boolean find132pattern(int[] nums) { int[] leftMinArray = new int[nums.length]; leftMinArray[0] = Integer.MAX_VALUE; for (int i = 1; i < leftMinArray.length; i++) { leftMinArray[i] = Math.min(leftMinArray[i - 1], nums[i - 1]); } Stack<Integer> decreaseStack = new Stack<>(); // 从栈底至栈顶值非严格递减 for (int j = nums.length - 1; j > 0; j--) { int numK = Integer.MIN_VALUE; while (!decreaseStack.isEmpty() && decreaseStack.peek() < nums[j]) { // 弹出栈中小于 nums[j] 的元素,最后一个弹出的即为小于 nums[j] 的最大元素 numK = decreaseStack.pop(); } if (numK > leftMinArray[j]) { return true; } decreaseStack.push(nums[j]); } return false; }} Reference456. 132 Pattern