456.132模式

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
};
原文地址:https://www.cnblogs.com/lanpang9661/p/13291835.html