456. 132模式image.png

不会做

  1. class Solution {
  2. public boolean find132pattern(int[] nums) {
  3. int len = nums.length;
  4. if(len<3) {
  5. return false;
  6. }
  7. int[] leftLow = new int[len];
  8. leftLow[0] = nums[0];
  9. int min = nums[0];
  10. for(int i = 0 ; i < len;i++) {
  11. if(nums[i]<min) {
  12. min = nums[i];
  13. }
  14. leftLow[i] = min;
  15. }
  16. Stack<Integer> stack = new Stack();
  17. stack.push(nums[len-1]);
  18. for(int j = len-2; j>=0;j--) {
  19. if(nums[j]==leftLow[j]) continue;
  20. while(!stack.isEmpty() && stack.peek() <= leftLow[j])
  21. stack.pop();
  22. if(!stack.isEmpty() && nums[j]>stack.peek()) {
  23. return true;
  24. }
  25. stack.push(nums[j]);
  26. }
  27. return false;
  28. }
  29. }