456.132-pattern.go 517 B

123456789101112131415161718192021222324252627
  1. func find132pattern(nums []int) bool {
  2. n := len(nums)
  3. if n < 3 {
  4. return false
  5. }
  6. one, three, two := 0, -1, 0
  7. for {
  8. for one = three + 1; one < n-1 && nums[one+1] <= nums[one]; one++ {
  9. }
  10. if n-2 <= one {
  11. break
  12. }
  13. for three = one; three < n-1 && nums[three] <= nums[three+1]; three++ {
  14. }
  15. if n-1 <= three {
  16. break
  17. } else if three == one {
  18. continue
  19. }
  20. for two = three + 1; two < n; two++ {
  21. if nums[one] < nums[two] && nums[two] < nums[three] {
  22. return true
  23. }
  24. }
  25. }
  26. return false
  27. }