X Tutup
class Solution { public boolean find132pattern(int[] nums) { if (nums.length < 3) { return false; } int[] minTillIndex = new int[nums.length]; minTillIndex[0] = nums[0]; for (int idx = 1; idx < nums.length; idx++) { minTillIndex[idx] = Math.min(minTillIndex[idx - 1], nums[idx]); } Stack stack = new Stack<>(); for (int idx = nums.length - 1; idx >= 0; idx--) { if (nums[idx] > minTillIndex[idx]) { while (!stack.isEmpty() && stack.peek() <= minTillIndex[idx]) { stack.pop(); } if (!stack.isEmpty() && stack.peek() < nums[idx]) { return true; } stack.push(nums[idx]); } } return false; } }
X Tutup