2020-07-13
132模式
题解:
思路1:暴力。。。
var find132pattern = function (nums) { // i 记录当前的左侧 j记录当前的右侧 let i = Number.MAX_SAFE_INTEGER, j = Number.MIN_SAFE_INTEGER, tmp; // ir是左边界点的值 对应的jr是右界点的值 ir[i] j[i] 组成的是出现过的区间 let ir = [], jr = []; // 遍历nums for (let index = 0; index < nums.length; index++) { tmp = nums[index]; // 记录当前值 for (let ii = 0; ii < ir.length; ii++) { // 遍历左右界点 看看是tmp是否符合题意 if (tmp > ir[ii] && tmp < jr[ii]) return true; } if (tmp > i && tmp < j) return true; // tmp与当前ij是否符合题意 也就是出现了[i,j]=[1,3] tmp=2的情况 else if (tmp < i) { // 如果tmp比i小 if (tmp < j) { // 且如果tmp比j也小 说明出现了 [i, j]=[1, 3] tmp=0 这种的情况 ir.push(i); // 将i j 分别推入ir jr 记录出现过的区间 jr.push(j); j = Number.MIN_SAFE_INTEGER; // 重新赋值j } i = tmp; // 将更小的tmp赋值给i } else if (tmp > j) j = tmp; // 如果tmp比i大也比j大 也就是出现了 [i,j] = [1,3] tmp = 4的情况 } return false; // 遍历完 没有符合题意的结果 返回false };