# LeetCode 456. 132 Pattern

## 题目要求

Given a sequence of n integers a1, a2, …, an, a 132 pattern is a subsequence ai, aj, ak such that i < j < k and ai < ak < aj. Design an algorithm that takes a list of n numbers as input and checks whether there is a 132 pattern in the list.

Note: n will be less than 15,000.

Example 1:

Input: [1, 2, 3, 4]

Output: False

Explanation: There is no 132 pattern in the sequence.

Example 2:

Input: [3, 1, 4, 2]

Output: True

Explanation: There is a 132 pattern in the sequence: [1, 4, 2].

Example 3:

Input: [-1, 3, 2, 0]

Output: True

Explanation: There are three 132 patterns in the sequence: [-1, 3, 2], [-1, 3, 0] and [-1, 2, 0].

## 解法分析

1. 该数在某一范围内，返回true
2. 该数超出某一范围，更新这个范围；
3. 该数大于目前所有值，则清空列表，并将当前最小和最大作为范围放入队列；
4. 该数小于当前所有值，则将该值最为范围的起始和结束放入队列。

## 解题代码

    public boolean find132pattern(int[] nums) {
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
Map<Integer, Integer> ranges = new TreeMap<>();
Set<Integer> keys = new TreeSet<>();
for (int i = 0; i < nums.length; i++) {
if (min > nums[i]) {
min = nums[i];
}
if (max < nums[i]) {
max = nums[i];
}
if (ranges.isEmpty()) {
ranges.put(nums[i], nums[i]);
} else {
for (int key : keys) {
if (key < nums[i]) {
if (nums[i] < ranges.get(key)) {
return true;
} else {
ranges.put(key, nums[i]);
if (max == nums[i]) {
ranges.clear();
keys.clear();
ranges.put(key, nums[i]);
break;
}
}
} else if (key > nums[i]) {
ranges.put(nums[i], nums[i]);
break;
}
}
}
}

return false;
}

• 本文已收录于以下专栏：

## lintcode(636)132 Pattern

• sunday0904
• 2017年05月17日 08:52
• 620

## 456. 132 Pattern

• jmspan
• 2016年11月30日 04:37
• 924

• iyangdi
• 2017年08月18日 15:00
• 373

## LintCode 132 Pattern

Given a sequence of n integers a1, a2, ..., an, a 132 pattern is a subsequence ai, aj, ak such tha...
• zaqwsx20
• 2017年06月21日 16:19
• 252

## LeetCode 456. 132 Pattern

Problem Statement(Source) Given a sequence of n integers a1,a2,...,ana_1, a_2, ..., a_n, a 132 patte...
• junchen1992
• 2016年11月13日 14:26
• 711

## leetcode 456. 132 Pattern题解

Given a sequence of n integers a1, a2, …, an, a 132 pattern is a subsequence ai, aj, ak such that i ...
• u011693064
• 2017年01月21日 23:17
• 536

## Leetcode-456. 132 Pattern

• mcf171
• 2016年11月14日 17:22
• 605

## 456. 132 Pattern

• liushengxi_root
• 2017年12月08日 12:12
• 22

## 2017年6月17日22:32:41 456. 132 Pattern [easy]

Given a sequence of n integers a1, a2, ..., an, a 132 pattern is a subsequence ai, aj, ak such ...
• mj397062482
• 2017年06月17日 22:32
• 62

## 456. 132 Pattern

132模式
• u014376961
• 2016年11月13日 14:43
• 824

举报原因： 您举报文章：LeetCode 456. 132 Pattern 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)