codility上的练习(5)
codility出了lesson 5了。
(1) 合法括号序列,包括( [ { ) ] }这6种字符的字符串,长度N在[0..200000]范围内,为其是否合法。
要求时间复杂度O(N),空间复杂度O(N)。
用堆栈简单判断就可以了。
// you can also use includes, for example:
// #include <algorithm>
#include <stack>
int solution(const string &S) {
// write your code in C++ 98
int n = S.size();
stack<int> s;
for (int i = 0; i < n; ++i) {
if (S[i] == ')') {
if ((s.empty()) || (S[s.top()] != '(')) {
return false;
}
s.pop();
}
else if (S[i] == ']') {
if ((s.empty()) || (S[s.top()] != '[')) {
return false;
}
s.pop();
}
else if (S[i] == '}') {
if ((s.empty()) || (S[s.top()] != '{')) {
return false;
}
s.pop();
}
else {
s.push(i);
}
}
return s.empty(); }
(2) x轴上有一群鱼,每条鱼的位置不同。每条鱼游动的方向可能沿着x正方向,也可能沿着x轴负方向。从左到右(沿着x轴正方向)知道每条鱼的大小和游动的方向,每条鱼的大小不同,游动速度一样,两条鱼相遇,大鱼会吃掉小鱼,问时间足够长之后能剩下多少条鱼。
数据范围 鱼数 N [1..10^5],每条鱼游动的方向只能是+1和-1,鱼大小的范围[0..10^9]。要求复杂度 时间O(N),空间O(N)。
这个题也不难因为每条鱼速度相同,所以只有反方向的鱼才可能相遇。 我们从左到右把往正方向游动的鱼压入堆栈,当出现第一条负方向游动的鱼时,不断从堆栈弹出那些鱼,这些鱼按顺序和这条鱼相遇,决定哪条被吃掉。直到这条负方向的鱼被吃掉或者堆栈为空。
// you can also use includes, for example:
// #include <algorithm>
#include <stack> int solution(vector<int> &A, vector<int> &B) {
// write your code in C++ 98
int n = A.size(),m = n;
stack<int> s;
for (int i = 0; i < n; ++i) {
if (B[i]) {
s.push(A[i]);
}
else {
while ((!s.empty()) && (s.top() < A[i])) {
s.pop();
--m;
}
if (!s.empty()) {
--m;
}
}
}
return m; }
(3) sigma 2012
http://blog.csdn.net/caopengcs/article/details/10260655
codility上的练习(5)的更多相关文章
- codility上的练习 (1)
codility上面添加了教程.目前只有lesson 1,讲复杂度的……里面有几个题, 目前感觉题库的题简单. tasks: Frog-Jmp: 一只青蛙,要从X跳到Y或者大于等于Y的地方,每次跳的距 ...
- codility上的问题(15) Xi 2012
进入2012年的题 codility上的题目开始变难,变得有意思起来.给定两个长度在[1..300000]的只包含0和1的串S和T,它们是2进制表示的,S表示的数A不大于T表示的数B,即A<=B ...
- codility上的问题(34) Fluorum 2014
好久没写codility的题了.一来没时间,二来有的题目不太好分析.这个题比較有意思,我还没有给出很严格的证明.
- codility上的问题 (19)Sigma 2012
题目: 像最大直方图一样给定一个数组是每个单位长度上的高度,求至少几个矩形可以拼出这个形状. 例如:给出的数组 H[0] = 8 H[1] = 8 H[2] = 5 H[3] = 7 H[4] = 9 ...
- codility上的问题 (21) Upsilon 2012
这是我目前最喜欢的codiltiy上的问题之一.问题描述是:给定一个整数数组A,所有的数均不相同.假设下标从0开始,找到一个数组B, 满足A[B[0]] > A[B[1]] > A[B[2 ...
- codility上的问题 (23)Chi 2012
这个题也比较有意思.意思是给定一个数组A,长度为M,里面都是正整数,代表每块地形的高度.现在要测试一种加农炮,给定一个炮弹的高度H, 如果存在最小的I,满足0 < I < M,满足A[I ...
- codility上的问题 (22)
问题描述: 用1 * 1, 1 * 2的矩形覆盖一个n行m列的矩形,问有多少种方法. 数据范围 : n [1..10^6], m [ 1..7] 要求复杂度: 时间 O(log(n) * 8 ^m ...
- codility上的练习(3)
今天发现又出了lesson 3... 不过题目都很简单…… (1) Min-avg-slice 给定一个长度为n的整数数组,找到一个连续的子数组,数组元素的平均值最小. 数据范围N [1..10^5] ...
- codility上的问题(26) Hydrogenium 2013
题目,挺无聊的.一个裸的最短路.n个点,你住在0,要去买东西,每个点有一个关门时间,问能最早买到食物的时间.有两点注意 (1)有重边 (2) 原图是dicrect连接...但不是有向边,被这个误导了. ...
随机推荐
- JavaScript继承的实现
怎样在JavaScript中实现简单的继承? 以下的样例将创建一个雇员类Employee,它从Person继承了原型prototype中的全部属性. function Employee(name, ...
- 各类形参(引用,const,指针)
#include <stdlib.h> #include <iostream> //这是一个关于引用形参,const形参,指针形参的程序,用于理解不同形式的区别 using n ...
- 简单的Cookie登录
登录页前台代码 <form id="form1" action ="" method="post"> <input typ ...
- web前端学习之路
test 随着自己对于web前端知识了解的越多,越来越发现自己真的好菜 一脸茫然阶段 两年前大学接触网页设计,那时对于网页设计一窍不通,只是看了一本自己大学编的一本入门教材,我甚至不知道那些网页设计的 ...
- 数据持久化------Archiving(归档,解档)
其中TRPerson为自定义的继承自NSObject的类的子类 其中有两个属性,name 和 age .h文件 #import @interface TRPerson : NSObject<& ...
- 前端页面优化:javascript图片延迟加载
自己写了个简单的图片延迟加载小插件. 功能如下: 页面刷新,当前屏幕图片直接加载真实地址,body被卷去的部分和下方未显示的部分的img均加载通用图片如:loding.gif 随着屏幕上下滚动加载相应 ...
- js添加删除元素
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...
- CloseHandle(),TerminateThread(),ExitThread()的区别
线程的handle用处:线程的handle是指向“线程的内核对象”的,而不是指向线程本身.每个内核对象只是内核分配的一个内存块,并且只能由内核访问.该内存块是一种数据结构,它的成员负责维护对象的各种信 ...
- 用C++写一个简单的发布者
节点是一个可执行程序,它连接到了ROS的网络系统中.我们将会创建一个发布者,也就是说话者节点,它将会持续的广播一个信息. 改变目录到之前所建立的那个包下: cd ~/catkin_ws/src/beg ...
- Linux流量监控工具使用总结 - iftop
在类Unix系统中可以使用top查看系统资源.进程.内存占用等信息.查看网络状态可以使用netstat.nmap等工具.若要查看实时的网络流量,监控TCP/IP连接等,则可以使用iftop. 一.if ...