zoukankan      html  css  js  c++  java
  • Leetcode 456. 132模式

    题目链接

    https://leetcode-cn.com/problems/132-pattern/

    给定一个整数序列:a1, a2, ..., an,一个132模式的子序列 ai, aj, ak 被定义为:当 i < j < k 时,ai < ak < aj。设计一个算法,当给定有 n 个数字的序列时,验证这个序列中是否含有132模式的子序列。

    注意:n 的值小于15000。

    示例1:

    输入: [1, 2, 3, 4]

    输出: False

    解释: 序列中不存在132模式的子序列。
    示例 2:

    输入: [3, 1, 4, 2]

    输出: True

    解释: 序列中有 1 个132模式的子序列: [1, 4, 2].
    示例 3:

    输入: [-1, 3, 2, 0]

    输出: True

    解释: 序列中有 3 个132模式的的子序列: [-1, 3, 2], [-1, 3, 0] 和 [-1, 2, 0].

    思路:通过打擂台的方式

    第一个循环跑最小值,如果当前值最小,就进入第二层循环,第二层循环要找到32,也就是比nums[j]>min,且nums[j]<nums[i],这样子就确认了最大值和次小值

     1 int min(int a,int b)
     2 {
     3     return a>b?b:a;
     4 }
     5 bool find132pattern(int* nums, int numsSize)
     6 {                
     7     int i,j,min1=9999999999;
     8     for(i = 0; i<numsSize; i ++)
     9     {
    10         min1 = min(min1,nums[i]);
    11         if(min1 != nums[i])
    12         {
    13            for(int j=numsSize-1;j>i;j--)
    14            {
    15                if(min1<nums[j]&&nums[j]<nums[i])
    16                 return true;
    17            }
    18         }
    19     }
    20     return false;
    21 }
    View Code
  • 相关阅读:
    [opencv] 生成标定棋盘格
    [opencv] cmake编译opencv并去窗口边框
    [opencv] matlab生成opencv可读的xml
    [matlab] vc++和matlab混合编程
    全息摄影
    [opencv&opengl]多窗口显示
    CPLEX
    ios读取设备姿态并传输
    python: 基本知识记录
    css: position的使用;
  • 原文地址:https://www.cnblogs.com/tijie/p/12120053.html
Copyright © 2011-2022 走看看