读书代码汇总
YYyyCCCcccBb
觉得为时已晚的时候,恰恰是最早的时候。
展开
-
1.1字符串旋转--左移,右移x位置--三步反转
给定一个字符串,对其移动,向左或者 向右移动x位置。这类题对于我们最初学习c语言就是一个典型题。大概思路: 1。循环x次,每次执行一步左移或右移。时间复杂度O(m*n)。进一步优化: 三步反转法---时间复杂度O(n)。 具体思路: (1)。若左移3位,则将其分为X(1~3),Y(3~n)两部分。 (2)。将两部分分别反转。 (3)。 将整体反转原创 2016-06-24 14:35:25 · 1577 阅读 · 0 评论 -
1.2字符串包含
判断字符串A中是否包含字符串B。 方法一:两遍for循环暴力破解。也是我天梯PAT里L1超时的算法。很渣。 方法二:建立哈希映射,开int s[200]数组 将对应的 A[i]存入S[A[i]]中 置1 。之后遍历B数组。判断S[B[i]]是否为1。若为1则是A组中字符,若为0则break跳出。 下面给出书中 时间复杂度为O(m+n) 空间复杂度为O(1)的算法。超棒。然而位运算原创 2016-06-25 12:37:00 · 292 阅读 · 0 评论 -
荷兰国旗
题目:一串数组,0 1 2构成 使其成为0 0 .. 0 1 1 ..1 2 .. 2的形式#include #include using namespace std;int a[100];void Holland(int len){ int i; for(i=1;i cin>>a[i]; int begin=1,curr原创 2016-07-15 16:34:48 · 253 阅读 · 0 评论 -
STL-UVA136-Ugly Numbers
思路:从1开始往上*2 *3 *5,记录未出现过的元素。收获优先队列,set的find,count查找#include #include #include #include using namespace std;typedef long long ll;const int a[3]={2,3,5};int main(){ priority_queue,gr原创 2016-11-02 19:25:34 · 445 阅读 · 0 评论 -
优先队列C++与STL入门-刘汝佳
为了加深下印象,想一遍,方便下次查。 优先队列是一种抽象数据类型,先出队的不同于显出队列,而是队列中优先级最高的元素现出。(类似于“急诊病人插队”)STL的优先队列在头文件中,用“priority_queue pq”来声明,这个pq是一个“越小的整数优先级越低的优先队列”。注意:由于出队的元素并不是最先进队的元素,出队的方式由queue的front()改为了top() 即优先级最高的先原创 2016-11-02 19:38:59 · 1394 阅读 · 0 评论 -
HDU 1029 Ignatius and the Princess IV
题意:找众数,且必定存在思路: 忘记是在什么书上看到过的了, 理论是,如果存在一个众数:记录当前拿到的数字,以及个数,如果下个拿到的数字,与标记的数字不等,则个数-1,否则个数+1,如果个数#include #include #include #include #include #include #include using namespace std;typede原创 2017-03-06 13:13:03 · 608 阅读 · 0 评论 -
CodeForces 598B Queries on a String
思路:一年前学的三步翻转。。一年后才用上。!不过暴力好像也过了!#include #include #include #include using namespace std;void reverse(char *left,char *right){ while(left<right) { char temp=*left;原创 2017-04-03 20:55:32 · 290 阅读 · 0 评论