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/ 题意分析: 给出一个排好序的数组,根据这 ...
随机推荐
- 了解SVG
页的节点类型,我们将说明怎样通过Illustrator高速的把SVG文档加入到网页中.我们还会讲讲D3.js,一个强大的.SVG控制的JavaScript库. "SVG并不仅仅用于像素处理. ...
- 使用CSS为内容设定特定的鼠标样式(cursor)介绍
相信大家都知道我们的鼠标在网页中不同的元素中有不同的显示(例如 a 元素就显示为“箭头指针”),但是其实我们还可以自定义这些有趣的东西哦!今天“畅想资源”就来教大家如何使用CSS为内容设定特定的鼠标样 ...
- Android(java)学习笔记258:JNI之hello.c(c代码功能实现)指针语法解析
1. 接下来我们细讲分析一下前面一讲中,c功能实现的代码: (1)hello.c : #include <jni.h> char* getHello() { //////// return ...
- img的onerror事件
使用场景 其实on error使用上是比较简单的. 当我们网站上出现了无效图片,而我们希望用友好的方式告诉用户,而不是显示红叉叉. w3c上解释的 定义和用法: onerror 事件会在文档或图像加载 ...
- eclipse 库 library jar包 工程 总结
引用库错误 如果在libraries中发现有小红叉,表明引用库错误 解决办法:在左侧projects中add引用到的库 如:我们的支付库引用了以下三个库 那么需要在projects中add这三个库 ...
- hibernate01ORM的引入
/**01.之前的方式 在while()中书写的 * int id = rs.getInt("gradeid"); String gradeName = rs.getString( ...
- css06背景图片
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- SGU131--NYOJ435
参考blog http://m.blog.csdn.net/blog/u012760629/36927465 http://www.cppblog.com/menrowitianya/archive/ ...
- (转)HTML特殊字符
HTML 原始码 显示结果 描述 < < 小於号或显示标记 > > 大於号或显示标记 & & 可用於显示其它特殊字符 " " 引号 ® ® ...
- jQuery 基本实现功能模板
下面是列出了基本功能的实现 <!DOCTYPE html> <html> <head> <script src="http://libs.baidu ...