算法
文章平均质量分 79
Citronnelle2
这个作者很懒,什么都没留下…
展开
-
算法-字符串压缩
今天做了一道字符串压缩的算法题,原题的输入字符串长度都固定了,突然想到如果输入不固定,也就是不知道要输入的字符串长度的话,那应该怎么做呢?C++中STL里的vector是个不错的选择。通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。压缩规则:1. 仅压缩连续重复出现的字符。比如字符串"ab原创 2015-04-04 17:32:54 · 986 阅读 · 0 评论 -
电梯调度算法
最近一直为2012年09月份找工作做准备,所以在不断的复习以前学过的知识,当然了也在不断学习新的知识。谈到找工作当然算法是比较重要的一部分了,似乎给我的感觉算法好的童鞋找到一个年薪十万的工作木有任何的问题,虽然说现在的情况,对于IT行业做技术的人,年薪十万已经是习以为常的事情了,但是刚毕业的我们能拿到十万年薪也是不错了吧,起码目前是刚毕业的学生嘛!!不说了,说说今天这篇文章要写的东西吧,今天要写的转载 2015-08-25 00:22:04 · 811 阅读 · 0 评论 -
快速模式匹配算法(KMP)
恐怕现在用过电脑的人,一定都知道大部分带文本编辑功能的软件都有一个快捷键ctrl+f 吧(比如word)。这个功能主要来完成“查找”,“替换”和“全部替换”功能的,其实这就是典型的模式匹配的应用,即在文本文件中查找串。1.模式匹配 模式匹配的模型大概是这样的:给定两个字符串变量S和P,其中S成为目标串,其中包含n个字符,P称为模式串,包含m个字符,其中m2.朴素的模式匹配转载 2015-08-24 17:08:22 · 424 阅读 · 0 评论 -
关于数组的几道面试题
关于数组的几道面试题数组是最基本的数据结构,关于数组的面试题也屡见不鲜,本文罗列了一些常见的面试题,仅供参考,如果您有更好的题目或者想法,欢迎留言讨论。目前有以下18道题目,如果有好的题目,随时更新。数组求和求数组的最大值和最小值求数组的最大值和次大值求数组中出现次数超过一半的元素求数组中元素的最短距离求两个有序数组的共同元素求三个数组的共同元素找出数组中唯一的重复元素找出出现奇数转载 2015-08-24 17:06:27 · 399 阅读 · 0 评论 -
字典树存在的意义
1.字典树 曾经遇到这样一个问题:很多单词,这些单词只含小写字母,并且不会有重复的单词出现,现在要统计出以某个字符串为前缀的单词数量,单词本身也是自己的前缀。先看看用常规的方法解决这个问题的复杂度。假设单词表容量为M,需要统计的前缀数量为N,前缀的平均长度是L,则常规算法思路是:对于每个前缀搜索每个单词,看看这个前缀是不是这个单词的前缀,如果是数量+1。这样的话时间复杂度为O(N*M*L),转载 2015-08-24 17:01:22 · 347 阅读 · 0 评论 -
那些年我们一起学过的“排序算法”
排序算法是经常使用的算法,在STL中也有一个比较牛X的快速排序(sort),但是我们不能只会调用sort呀!?作为一个好学的同学,我们要知道各种排序的内部是怎么实现滴~~~提到排序算法我们要知道两个经常提到的概念:(1)排序算法的稳定性:所谓“稳定性”是指,在待排序数组出现的两个相同的元素,排序之后相对维持保持不变。比如:待排序数组为arr[] = {1,4,3,1},排序之后元素变为arr_转载 2015-08-24 16:58:36 · 292 阅读 · 0 评论 -
面试中经常让写的关于链表的代码
还有一个月,各个公司都会开始秋季招聘了,作为即将成为一个被面试的人,说实话,我很紧张也很激动,紧张的原因是我没有进行过技术面试,激动的原因是要看看这大学三年我到底学的怎么样,到底哪些个公司会要我。而与此同时,学校还在进行着每年一度的课程很多的小学期,耽误着大家出去实习,耽误着大家准备找工作的时间,不知道学院的领导们到底是怎么想的。。今天上午,把以前写过的关于链表的代码重新练习了一下,不全,只是转载 2015-08-24 16:56:24 · 198 阅读 · 0 评论 -
二叉树中的那些常见的面试题
关于二叉树二叉树作为树的一种,是一种重要的数据结构,也是面试官经常考的东西。昨天看了一下关于树中的面试题,发现二叉树中的面试题比较常见的题型大概有下面几个:创建一颗二叉树(先序,中序,后序)、遍历一颗二叉树(先序,中序,后序和层次遍历)、求二叉树中叶子节点的个数、求二叉树的高度、求二叉树中两个节点的最近公共祖先、打印和为某一值的全部路径、求某一节点是否在一个树中等等。再详细的说这些面试转载 2015-08-24 16:55:16 · 240 阅读 · 0 评论 -
从头到尾彻底解析Hash表算法
作者:July、wuliming、pkuoliver 说明:本文分为三部分内容, 第一部分为一道百度面试题Top K算法的详解;第二部分为关于Hash表算法的详细阐述;第三部分为打造一个最快的Hash表算法。 第一部分:Top K 算法详解 问题描述(百度面试题): 搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255转载 2015-08-10 20:35:07 · 389 阅读 · 0 评论 -
全排列算法及实现
本文转自:http://blog.csdn.net/hackbuteer1/article/details/6657435,作者:Hackbuteer1,转载至此仅为方便学习参考。全排列在很多程序都有应用,是一个很常见的算法,常规的算法是一种递归的算法,这种算法的得到基于以下的分析思路。 给定一个具有n个元素的集合(n>=1),要求输出这个集合中元素的所有可能的排列。转载 2015-05-07 19:06:53 · 342 阅读 · 0 评论 -
二叉树常见算法总结(一)
一、在二叉树中,找到距离最远的两个节点的距离在二叉树中,找到距离最远的两个节点的距离。在上面的二叉树中,最远的节点的距离是:4(路径是2-3-13-5-2)。解决思路:遍历每个节点,找出以当前节点为根的最长路径,然后找出所有最长路径中的最大值。思路类似于最大路径和。下面直接给出代码。void longestPathUtil(Node* root, int& le原创 2015-08-30 18:53:47 · 8789 阅读 · 1 评论 -
<字符串移位包含问题>和<字符串相似度问题>
字符串处理的问题无论是做ACM题,还是实际项目开发中都是经常遇到的问题,字符串处理问题往往用到很多有意思的经典算法,个人觉得,对字符串的处理技巧能看出一个将要毕业的大学生的编码能力、算法基础和遇到问题的思考能力。最近就遇到两个字符串处理的问题:(1)字符串移位包含问题 (2)计算字符串相似度的问题。1.字符串的移位包含问题问题定义 :给定两个字符串str1和str2,所谓的移位包含就是转载 2015-08-24 17:00:02 · 277 阅读 · 0 评论 -
算法-三分法求极值
今天刷了一道hihoCoder上的一道题,用三分法求极值问题,感觉挺有意思,不多说题目如下:在直角坐标系中有一条抛物线y=ax^2+bx+c和一个点P(x,y),求点P到抛物线的最短距离d。提示:三分法输入第1行:5个整数a,b,c,x,y。前三个数构成抛物线的参数,后两个数x,y表示P点坐标。-200≤a,b,c,x,y≤200输出第1行:1个原创 2015-04-10 13:08:45 · 1472 阅读 · 0 评论 -
算法-逆序对
昨日在hihoCoder看到一题有关逆序对的赛题,题目大概是某个游戏中玩家拥有N艘船只,这些船只等级和火力并不挂钩,也就是说等级高的船只火力并不一定高。所以会存在A船比B船等级高,但是A船火力却低于B船这样的情况。现在将按照等级高低的顺序给出所有船的火力值,请你计算出一共有多少对船满足上面提到的这种情况。输入第1行:1个整数N。N表示舰船数量, 1≤N≤100,000原创 2015-04-04 13:27:23 · 440 阅读 · 0 评论 -
算法-正整数的加减运算式
通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。输入字符串的格式为:“操作数1 运算符 操作数2”,“操作数”与“运算符”之间以一个空格隔开。补充说明:1. 操作数为正整数,不需要考虑计算结果溢出的情况。2. 若输入算式格式错误,输出结果为“0”。要求实现函数: void arithmetic(const c原创 2015-04-05 16:38:57 · 790 阅读 · 0 评论 -
算法-简单的四则运算
•问题描述: 输入一个只包含个位数字的简单四则运算表达式字符串,计算该表达式的值注: 1、表达式只含 +, -, *, / 四则运算符,不含括号2、表达式数值只包含个位整数(0-9),且不会出现0作为除数的情况3、要考虑加减乘除按通常四则运算规定的计算优先级4、除法用整数除法,即仅保留除法运算结果的整数部分。比如8/3=2。输入表达式保证无0作为除数情况发生5、输入字符串一定是原创 2015-04-12 11:41:28 · 502 阅读 · 0 评论 -
算法-操作系统任务调度问题
操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中,系统任务的优先级 ,用户任务的优先级 >= 50且 <= 255。优先级大于255的为非法任务,应予以剔除。现有一任务队列task[],长度为n,task中的元素值表示任务的优先级,数值越小,优先级越高。函数scheduler实现如下功能,将task[] 中的任务按照系统任务、用户任务依次存放到 system_task[]原创 2015-04-13 15:54:20 · 715 阅读 · 0 评论 -
常见排序算法C++实现(冒泡,直接插入,希尔,堆,归并,简单选择,快排)
#includeusing namespace std;void swap(int &i,int &j)//实现i,j交换的函数{ i=i^j; j=i^j; i=i^j;}void Display(const int *arr,int原创 2015-04-14 13:38:14 · 658 阅读 · 0 评论 -
算法-骨牌覆盖问题(矩阵快速幂求Fibonacii)
在hihoCoder上遇到一道骨牌覆盖问题,分析后发现其实就是Fibonacii,但是要求高效的时间复杂度,也就是说传统递归方法实现是不能满足要求的。但是如果用快速幂方法求解的话,非常适用。时间限制:10000ms单点时限:1000ms内存限制:256MB描述骨牌,一种古老的玩具。今天我们要研究的是骨牌的覆盖问题:我们有一个2xN的长原创 2015-04-16 21:00:00 · 848 阅读 · 0 评论 -
《剑指Offer》学习笔记--面试题54:表示数值的字符串
题目:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串“+100”,“5e2”,“-123”,“3.1416”及"-1E-16"都表示数值,但“12e”,"1a3.14","1.2.3","+-5"及“12e+5.4”都不是。在数值之前可能有一个表示正负的'-'或者'+'。接下来是若干个0到9的数位表示数值的整数部分(在某些小数里可能没有数值的整数部分)。如果数值是一个原创 2015-05-15 16:27:06 · 434 阅读 · 0 评论 -
《剑指Offer》学习笔记--面试题53:正则表达式匹配
题目:请实现一个函数用来匹配包含‘.’和‘*’的正则表达式。模式中的字符'.'表示任意一个字符,而‘*’表示它前面的字符可以出现任意次(含0次)。本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串“aaa”与模式“a.a”和“ab*ac*a”匹配,但与“aa.a”及“ab*a”均不匹配。每次从字符串里拿出一个字符和模式中的字符去匹配。先来分析如何匹配一个字符。如果模式中的字符ch是‘.原创 2015-05-15 15:58:46 · 494 阅读 · 0 评论 -
二叉树的遍历(前序,中序,后序,层序)--递归和非递归算法实现
二叉树的每个结点最多有两个子树(即不存在度大于2的结点),二叉树常被用作二叉查找树和二叉堆或是二叉排序树。二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2的 i -1次方个结点;深度为k的二叉树至多有2^(k) -1个结点;对任何一棵二叉树T,如果其终端结点数(即叶子结点数)为n0,度为2的结点数为n2,则n0 = n2 + 1。二叉树的链式存储结构是一类重要的数据结构,其形式定义转载 2015-05-05 18:35:03 · 1323 阅读 · 0 评论