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)的更多相关文章

  1. codility上的练习 (1)

    codility上面添加了教程.目前只有lesson 1,讲复杂度的……里面有几个题, 目前感觉题库的题简单. tasks: Frog-Jmp: 一只青蛙,要从X跳到Y或者大于等于Y的地方,每次跳的距 ...

  2. codility上的问题(15) Xi 2012

    进入2012年的题 codility上的题目开始变难,变得有意思起来.给定两个长度在[1..300000]的只包含0和1的串S和T,它们是2进制表示的,S表示的数A不大于T表示的数B,即A<=B ...

  3. codility上的问题(34) Fluorum 2014

    好久没写codility的题了.一来没时间,二来有的题目不太好分析.这个题比較有意思,我还没有给出很严格的证明.

  4. codility上的问题 (19)Sigma 2012

    题目: 像最大直方图一样给定一个数组是每个单位长度上的高度,求至少几个矩形可以拼出这个形状. 例如:给出的数组 H[0] = 8 H[1] = 8 H[2] = 5 H[3] = 7 H[4] = 9 ...

  5. codility上的问题 (21) Upsilon 2012

    这是我目前最喜欢的codiltiy上的问题之一.问题描述是:给定一个整数数组A,所有的数均不相同.假设下标从0开始,找到一个数组B, 满足A[B[0]] > A[B[1]] > A[B[2 ...

  6. codility上的问题 (23)Chi 2012

    这个题也比较有意思.意思是给定一个数组A,长度为M,里面都是正整数,代表每块地形的高度.现在要测试一种加农炮,给定一个炮弹的高度H, 如果存在最小的I,满足0 < I <  M,满足A[I ...

  7. codility上的问题 (22)

    问题描述: 用1 * 1, 1 * 2的矩形覆盖一个n行m列的矩形,问有多少种方法. 数据范围 : n [1..10^6],  m [ 1..7] 要求复杂度: 时间  O(log(n) * 8 ^m ...

  8. codility上的练习(3)

    今天发现又出了lesson 3... 不过题目都很简单…… (1) Min-avg-slice 给定一个长度为n的整数数组,找到一个连续的子数组,数组元素的平均值最小. 数据范围N [1..10^5] ...

  9. codility上的问题(26) Hydrogenium 2013

    题目,挺无聊的.一个裸的最短路.n个点,你住在0,要去买东西,每个点有一个关门时间,问能最早买到食物的时间.有两点注意 (1)有重边 (2) 原图是dicrect连接...但不是有向边,被这个误导了. ...

随机推荐

  1. JavaScript 开发经验整理

    前言 今年接触了一个B/S的项目,总结了一些JavaScript开发经验,整理些有用的内容与大家分享. 本文会持续更新... 1.实现代码访问的控制 随着项目JavaScript代码库扩大,本应被控制 ...

  2. SqLite 使用 Dapper 查询INTEGER类型的主键问题

    在程序实体定义时: public int TableID { get; set; } 使用Dapper查询SqLite数据库时会报错 Error parsing column (= - Int64) ...

  3. Deep Learning(深度学习)学习笔记整理系列之(三)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  4. Java 中的resultset详解

    结果集(ResultSet)是数据中查询结果返回的一种对象,可以说结果集是一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,他同时还具有操纵数据的功能,可能完成对数据的更新等. 结果集读取数据 ...

  5. 交换机access和trunk的一些小结(转)

     以太网端口有 3种链路类型:access.trunk.hybird Access类型端口只能属于1个VLAN 般用于连接计算机 端口: Trunk类型端口可以允许多个VLAN通过,可以接收和发送多个 ...

  6. vs 中 vim vax 快捷键

    高效率移动 在插入模式之外 基本上来说,你应该尽可能少的呆在插入模式里面,因为在插入模式里面VIM就像一个“哑巴”编辑器一样.很多新手都会一直呆在插入模式里面,因为这样易于使用.但VIM的强大之处在于 ...

  7. CM 0313 Review

    中午无聊看了贴吧,看到有人截图说CM有爱的故事.看到SE03CH13,觉得图有点印象,似乎我很是记得这一集.于是刚才看了一下,嗯,果然记得.是我头一次翻译美剧的时候,7年前. 剧情还可以吧,剧中的Ji ...

  8. Linux编程环境介绍(3) -- linux下的c/c++程序开发

    目录: 1. 编辑器( Vi ) [vi 与 vim] vi(visual interface)是linux系统最重要的文本编辑器, 所有的 Unix-Like 系统都会内置vi文本编辑器.  vim ...

  9. js写的简单轮播图

    这个轮播图代码是从网上找来的,专门找了个写法简单的,只是作为一个小练习,大概原理如下: 1.首先是图片切换2.自动播放3.调用自动播放4.移动到容器上边停止播放,离开自动播放5.移动到导航上停止播放, ...

  10. python初探-数据类型

    数据类型 可以使用BIF type()来查看对象的类型 数字 int float long 布尔(bool) True 机内表示1,机器识别非0 False 机内表示0,机器识别0 空值 None 字 ...