hackerrank:Almost sorted interval
题目链接:https://www.hackerrank.com/challenges/almost-sorted-interval
题目大意:
定义一个“几乎单调”区间(区间最小值在最左面,最大值在最右面)
给一个N的排列,求“几乎单调”区间的个数
N=100W 解法为O(n)
很好的思维题!
想了一下午,其实自己离正解已经不远了,,不过最后还是看了学长的ac代码
然后基本上秒懂了
具体思维方式不好说啊。。贴个代码,以后又不会了的话慢慢回忆吧= =||
#include <iostream>
#include <stdio.h>
#include<string.h>
#include<algorithm>
#include<string>
#include<ctype.h>
#include<queue>
using namespace std;
#define MAXN 10000
deque<int> qinc;
deque<int> qdec;
int a[];
int num[];
int main()
{
int n;
scanf("%d",&n);
for(int i=;i<=n;i++)
{
num[i]=;
}
long long ans=;
for(int i=;i<n;i++)
{
scanf("%d",a+i);
}
for(int i=;i<n;i++)
{
if(qinc.empty())
{
qinc.push_back(a[i]);
}
else
{
int tmp=qinc.back();
while(tmp>a[i])
{
num[qdec.back()]--;
if(num[qdec.back()]==)
qdec.pop_back();
qinc.pop_back();
if(qinc.empty())
break;
tmp=qinc.back();
}
qinc.push_back(a[i]);
}
if(qdec.empty())
{
qdec.push_back(a[i]);
ans++;
continue;
}
int tmp=qdec.back();
while(tmp<a[i])
{
num[a[i]]+=num[tmp];
qdec.pop_back();
if(qdec.empty())
break;
tmp=qdec.back();
}
ans+=num[a[i]];
qdec.push_back(a[i]);
}
cout<<ans<<endl;
return ;
}
hackerrank:Almost sorted interval的更多相关文章
- Redis in .NET Core 入门:(5) Sorted SET
第1篇:https://www.cnblogs.com/cgzl/p/10294175.html 第2篇 String:https://www.cnblogs.com/cgzl/p/10297565. ...
- LeetCode第[88]题(Java):Merge Sorted Array(合并已排序数组)
题目:合并已排序数组 难度:Easy 题目内容: Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as ...
- LeetCode OJ:Convert Sorted List to Binary Search Tree(将排序好的链表转换成二叉搜索树)
Given a singly linked list where elements are sorted in ascending order, convert it to a height bala ...
- LeetCode第[21][23]题(Java):Merge Sorted Lists
题目:合并两个已排序链表 难度:Easy 题目内容: Merge two sorted linked lists and return it as a new list. The new list s ...
- LeetCode OJ:Merge Sorted Array(合并排序的数组)
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note:Yo ...
- LeetCode OJ:Convert Sorted Array to Binary Search Tree(将排序好的数组转换成二叉搜索树)
Given an array where elements are sorted in ascending order, convert it to a height balanced BST. 讲一 ...
- leetcode 题解:Merge Sorted Array(两个已排序数组归并)
题目: Given two sorted integer arrays A and B, merge B into A as one sorted array. Note:You may assume ...
- [LeetCode]题解(python):109-Convert Sorted List to Binary Search Tree
题目来源: https://leetcode.com/problems/convert-sorted-list-to-binary-search-tree/ 题意分析: 给定一个排好序的链表,将这个链 ...
- [LeetCode]题解(python):108-Convert Sorted Array to Binary Search Tree
题目来源: https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/ 题意分析: 给出一个排好序的数组,根据这 ...
随机推荐
- C# string.Format谨慎使用
string.Format string.Format在处理文本的时候很有用处,但是在使用占位符的时候一定要注意内容中的特殊字符{}. 示例 string.Format("你好{0},这是{ ...
- DBMS_STATS常用方法(收集oracle信息)
–收集数据库信息EXEC DBMS_STATS.gather_database_stats;EXEC DBMS_STATS.gather_database_stats(estimate_percent ...
- AS 自动生成选择器 SelectorChapek
简介 https://github.com/inmite/android-selector-chapek 设计师给我们提供好了各种资源,每个按钮都要写一个selector是不是很麻烦? 这么这个插件就 ...
- ListView 水平滑动 水平和竖直滑动
效果 Activity public class MainActivity extends Activity { @Override protected void onCreate(B ...
- css07家用电器分类
1.创建一个html页面 <!DOCTYPE html> <html> <head lang="en"> <meta charset=&q ...
- jquery 验证框架的问题 remote的
1.dataType 类型:String 预期服务器返回的数据类型.如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如 XML MIME 类型就被识别为 XML.在 1 ...
- Ubuntu桌面版与服务器版有什么不同?
提到安装Linux,Ubuntu可谓是最受欢迎的.为了满足每个人的需求,出现了不少版本或风格的Ubuntu;其中两项便是桌面版与服务器版.只要发布版本号一致,这两者从核心来说也就是相同的,唯 ...
- java.sql.SQLException: ORA-00604: 递归 SQL 级别 1 出现错误
后台报出如下错误: Caused by: java.sql.SQLException: ORA-00604: 递归 SQL 级别 1 出现错误 ORA-01000: 超出打开游标的最大数 ORA-00 ...
- 用 CALayer 定制下载进度条控件
// // RPProgressView.h // CALayer定制下载进度条控件 // // Created by RinpeChen on 16/1/2. // Copyright © 2016 ...
- Swift - 41 - swift1.2新特性(2)
swift 和 OC 的桥接 //: Playground - noun: a place where people can play import UIKit var PI = "3.14 ...