【LintCode】Pattern(C语言实现)
来源:互联网 发布:人机料法环测测知什么 编辑:程序博客网 时间:2024/06/05 06:49
题目描述
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.
n will be less than 20,000.
测试数据
Given nums = [1, 2, 3, 4]
return False // There is no 132 pattern in the sequence.
Given nums = [3, 1, 4, 2]
return True // There is a 132 pattern in the sequence: [1, 4, 2].
解题思路
找满足A[i] < A[k]
C实现代码
#include <stdio.h>#define true 1#define false 0#define VSIZE 100#define SSIZE 100#define INT_MIN -10000000typedef unsigned char bool;typedef struct{ int data[VSIZE]; int length;}vector;typedef struct{ int data[SSIZE]; int top;}stack;bool solve(vector v){ int third = INT_MIN; stack second; int i; second.top = -1; for(i = v.length - 1; i >= 0; --i) { //当前的数比third小,也肯定比栈里的数小,条件满足 if(v.data[i] < third) return true; else { while(second.top != -1) { //如果当前的数比栈顶的数大,可以用栈顶的数更新 //third,从而得到一个更大的third,加快算法速度 if(second.data[second.top] < v.data[i]) { if(third < second.data[second.top]) third = second.data[second.top]; --second.top; } else break; } second.data[++second.top] = v.data[i]; } } return false;}int main(int argc, char *argv[]){ vector v; int i; while(~scanf("%d", &v.length)) { for(i = 0; i < v.length; i++) scanf("%d", &v.data[i]); if(solve(v)) printf("YES\n"); else printf("NO\n"); } return 0;}
阅读全文
0 0
- 【LintCode】Pattern(C语言实现)
- lintcode(636)132 Pattern
- LintCode 132 Pattern
- Design Pattern - IDisposable Pattern(C#)
- 栈(C语言实现)
- 俄罗斯方块(C语言实现)
- 人事管理系统(C语言实现)
- 异质链表(C语言实现)
- 链表(C语言实现)
- 排序(C语言实现)
- Design Pattern - Singleton(C#)
- Design Pattern - Builder(C#)
- Design Pattern - Prototype(C#)
- Design Pattern - Adapter(C#)
- Design Pattern - Bridge(C#)
- Design Pattern - Composite(C#)
- Design Pattern - Decorator(C#)
- Design Pattern - Facade(C#)
- Python生成器
- JavaScript方法splice()和slice()
- OpenCV调试神器-ImageWatch
- git命令大全
- javaIO读和写和创建文件夹的基础简单操作
- 【LintCode】Pattern(C语言实现)
- 【2017多校】HDU6092 Rikka with Subset 【DP】
- 探秘Java中String、StringBuilder以及StringBuffer
- css系列教程1-选择器全解
- 计算n的阶乘后0的个数
- 慕课网学习Java入门第三季笔记
- CodeForces
- PyQt4编程之自定义插槽
- linux启动流程图