随笔分类 -  july面试算法

两个栈实现双端队列
摘要:一个笔试题,当时竟然没想出来,现在实现下 1 /* 2 用两个栈实现双端队列 3 栈s1,s2。 4 pushback()和popback(),必须在s2为空的情况,把s2的都放s1中 5 pushfront()和popfront(),必须是在s1为空,把s1的都给放到s2中 6 */ ... 阅读全文
posted @ 2014-09-21 22:47 zmlctt 阅读(1110) 评论(0) 推荐(0)
KMP算法详解 --从july那学的
摘要:KMP代码: 1 int KmpSearch(char* s, char* p) 2 { 3 int i = 0; 4 int j = 0; 5 int sLen = strlen(s); 6 int... 阅读全文
posted @ 2014-09-01 17:12 zmlctt 阅读(767) 评论(0) 推荐(0)
带通配符的字符串匹配问题
摘要:1 /* 2 不使用c,c++库,?表示任意一个,*表示>=0任意,匹配规则要求匹配最大的字符子串,例如a*d ,匹配abbdd而非abbd,即最大匹配字符串 3 input :abcadefg 4 reule : a?c 5 ouput : abc 6 7 input : new... 阅读全文
posted @ 2014-07-26 22:14 zmlctt 阅读(2694) 评论(0) 推荐(0)
字符串编辑距离问题
摘要:1 /* 2 字符串编辑问题,给定一个源字符串和目的字符串,源字符串可以insert,delete,replace,求最少操作使其变成目标字符串,有两种方法,方法一采用 3 动态规划方法,f[i][j]=min{f[i-1][j]+1,f[i+1][j]+1,f[i-1][j-1]+(s[i... 阅读全文
posted @ 2014-07-24 22:45 zmlctt 阅读(386) 评论(0) 推荐(0)
使负数在正数之前,不改变原来的顺序
摘要:1 /* 2 不改变正负号序列,使得负数在正数前面,要求O(n),时间复杂度,O(1)空间复杂度 3 实际情况,很可能做不到,可以用类似快排partition的方法,但是不能保证有序了,保证有序的一个方法是用翻转,例如 4 2,3,4,-1,-2,3,-5,-6——————翻转为2,3,4,-1,... 阅读全文
posted @ 2014-07-24 22:43 zmlctt 阅读(566) 评论(0) 推荐(0)
N个数的数组求N-1个数组合乘积最大的一组
摘要:1 /* 2 编程之美题,给定N个数的数组,只能使用乘法,不使用除法,找出N-1个数的乘积最大的一组,有两种方法,方法一:采用两个数组分别保存从左向右 3 和从又向左的两个乘积值,然后在扫描一次,求出最大乘积,空间换时间的方法。 4 方法二:通过分析这些数的性质,看有多少正数,多少负数,多... 阅读全文
posted @ 2014-07-24 22:41 zmlctt 阅读(974) 评论(0) 推荐(0)
最大连续乘积子串
摘要:1 /* 2 A="2,9,-1,3,7,0,8,9,-3",求最大连续乘积子串,有三种方法,方法一:采用动态规划方法,最容易理解,也最容易实现,方法二:同样采用动态规划的 3 思路,但是不用保存两个数组空间。方法三:采用记录最大值,最小值的方法 4 */ 5 6 /* 7 动态规划方法,,两个... 阅读全文
posted @ 2014-07-24 22:39 zmlctt 阅读(821) 评论(0) 推荐(0)
最短摘要问题
摘要:/*最短摘要问题,给一定字符串序列 wo,w1,w2,w3,op1,w4,op2,w5,op1,w6,w7,op1,op2,指定关键字符串为op1,op2,求包含关键字的最小字符串序列。常见于搜索引擎的分词,op1,op2这里没有顺序,否则就更复杂了,最短序列为op1,op2。思路:(1)第一次扫描... 阅读全文
posted @ 2014-07-24 22:37 zmlctt 阅读(293) 评论(0) 推荐(0)
完美atoi,哈哈
摘要:1 /* 2 atoi算法,要求完美版 3 有两种,一种是用longlong,一种是真用int 4 “” 5 " " 6 “-” 7 “+” 8 “ -23” 9 “ +23” 10 “12a" 11 "abc" 12 越界情况 13 */ 14 #include 15 ... 阅读全文
posted @ 2014-07-24 22:35 zmlctt 阅读(303) 评论(0) 推荐(0)
全排列,组合问题
摘要:包括了排列,组合,子集问题,子集带重复问题,基本全了,就差在看看leetcode以前怎么写的了 1 //全排列的两种方法 2 #include 3 #include 4 #include 5 using namespace std; 6 7 //方法一,采用swap方法 8 ... 阅读全文
posted @ 2014-07-16 10:33 zmlctt 阅读(295) 评论(0) 推荐(0)
斐波那契加求幂运算
摘要:斐波那契博大精深啊,还有求幂的迭代也有点意思 1 //斐波那契有好多中方法 2 #include 3 #include 4 using namespace std; 5 6 //注意普通斐波那契,在太大数时就会发生越界,比如long long 只能存表示第92个数,这些都是小的斐波... 阅读全文
posted @ 2014-07-15 01:18 zmlctt 阅读(581) 评论(0) 推荐(0)
给10^7个数据量的磁盘文件进行排序
摘要:输入:给定一个文件,里面最多含有n个不重复的正整数(也就是说可能含有少于n个不重复正整数),且其中每个数都小于等于n,n=10^7。输出:得到按从小到大升序排列的包含所有输入的整数的列表。条件:最多有大约1MB的内存空间可用,但磁盘空间足够。且要求运行时间在5分钟以下,10秒为最佳结果。分析:下面咱... 阅读全文
posted @ 2014-07-14 18:55 zmlctt 阅读(603) 评论(0) 推荐(0)
500万内的亲合数
摘要:直接上代码吧,看似容易,却也有要注意的地方啊,还是要练习才行 1 //500万亲合数问题,亲和数就是真因子只和A[A[m]]=m,真因子是不包括他本身的 2 //方法,采用的很巧妙,通过因子找2,3,4,5,6.....,往里放数的方法 3 #include 4 #include 5 using... 阅读全文
posted @ 2014-07-14 15:47 zmlctt 阅读(434) 评论(0) 推荐(0)
最长回文子串问题
摘要:思路很简单,就是通过向两边扩展的方法,找出最大的,注意要分成奇数和偶数两种情况,都要计算才行。 1 //最长回文子串,就是利用了回文数的另一种思想,从中间想两边扩展的思想,很有意思 2 #include 3 using namespace std; 4 5 int maxhuiwenzichua... 阅读全文
posted @ 2014-07-14 14:51 zmlctt 阅读(227) 评论(0) 推荐(0)
单链表逆序
摘要:非常简单,就当练个手吧 1 //单链表逆序问题,其实很容易的,就是把指针指向给变一下,注意的几个问题 2 //(1)如果就一个元素,不算头结点,直接返回 3 //(2)注意头结点最后要单独处理问题 4 #include 5 using namespace std; 6 7 typedef str... 阅读全文
posted @ 2014-07-14 13:39 zmlctt 阅读(281) 评论(0) 推荐(0)
bitset位图讲解
摘要:bitset可以用来处理位图问题,用位可以大大减少占用的空间内存,但是位图问题适合处理不重复的,在一定范围内的整数问题。用两个位图可以处理只出现一次问题#include bitset bit;//初始化会默认都为0。bitset用法bitset最大支持到多少?理论上只要内存够大就可以,跟数组一样细节... 阅读全文
posted @ 2014-07-14 13:03 zmlctt 阅读(1391) 评论(0) 推荐(0)
最长递增子序列和网易去除最少使从左向右递增又递减问题
摘要:(1)最长递增子序列问题有两种方法:(1)动态规划方法(2)类似二分查找的方法O(nlogn)动态规划方法: 以i结尾的序列的最长递增子序列和其[0, i - 1]“前缀”的最长递增子序列有关,设LIS[i]保存以i结尾的最长递增子序列的长度:若i = 0,则LIS[i] = 1; 若i > 0,... 阅读全文
posted @ 2014-07-14 12:46 zmlctt 阅读(628) 评论(0) 推荐(0)
最长公共子序列LCS
摘要:最长公共子序列,典型的动态规划,时间复杂度O(mn),空间复杂度O(mn),如果只要长度,不要序列,优化时间复杂度O(mn),空间复杂度用两行min(O(m),O(n))代码如下: 1 #include 2 using namespace std; 3 #include 4 5 void lc... 阅读全文
posted @ 2014-07-11 23:33 zmlctt 阅读(486) 评论(0) 推荐(0)
1到n数组,和为指定数所有序列问题
摘要:(1)方法一,背包问题解法 1 #include 2 using namespace std; 3 #include 4 #include 5 6 //采用背包问题方法,从后向前,最后一个放和不放背包里,注意递归退出条件和sum==n后,没有return而是继续 7 vector a; ... 阅读全文
posted @ 2014-07-09 00:22 zmlctt 阅读(275) 评论(0) 推荐(0)