算法
小马笑哈哈
这个作者很懒,什么都没留下…
展开
-
比KMP算法更简洁,更高效的sunday算法
KMP算法中next数组计算比较难懂,sunday算法更高效,但是网络中各个版本都有bug,自己调试的无错误的权当作笔记://sunday算法/*,Sunday算法其实思想跟BM算法很相似,只不过Sunday算法是从前往后匹配,在匹配失败时关注的是文本串中参加匹配的最末位字符的下一位字符。如果该字符没有在匹配串中出现则直接跳过,即移动步长= 匹配串长度+ 1;否则,同BM算法一样其移动步原创 2017-12-03 21:15:42 · 1988 阅读 · 2 评论 -
聚类分析经典算法讲解及实现
https://www.ibm.com/developerworks/cn/analytics/library/ba-1607-clustering-algorithm/index.html前言本文将系统的讲解数据挖掘领域的经典聚类算法,并给予代码实现示例。虽然当下已有很多平台都集成了数据挖掘领域的经典算法模块,但笔者认为要深入理解算法的核心,剖析算法的执行过程,那么通过代码的实现及运行结果来进行...转载 2018-03-26 21:16:19 · 1288 阅读 · 0 评论 -
海量数据:快速查找一个数字是否出现在40亿个数字中
腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?看到问题的想法是采用bitmap:1个字节可以表示8个整数是否出现的情况(出现则对应的位置1,否则为0),那么表示40亿个整数的情况需要40亿/8=5亿,约500M的空间.空间复杂度是O(n)+O(1);还有更好的方法:这个问题在《编程珠玑》里有很原创 2018-01-21 23:03:54 · 10897 阅读 · 3 评论 -
实现strcpy,考虑内存重叠
/*考虑有重叠区的情况下必须分别处理*/#include #include using namespace std;char *Mystrcpy(char *pdes,const char *psrc){ if(pdes == NULL || psrc == NULL) return NULL; char *res = pdes; int len = strlen(psrc)原创 2018-01-21 22:33:05 · 525 阅读 · 0 评论 -
leetcode 34. Search for a Range
Given an array of integers sorted in ascending order, find the starting and ending position of a given target value.Your algorithm's runtime complexity must be in the order of O(log n).If the原创 2017-12-06 21:09:52 · 236 阅读 · 0 评论 -
如何写出正确的二分查找?——利用循环不变式理解二分查找及其变体的正确性以及构造方式
二分查找太强大,不敢贸然说学会~~https://www.cnblogs.com/wuyuegb2312/archive/2013/05/26/3090369.html序言 本文以经典的二分查找为例,介绍如何使用循环不变式来理解算法并利用循环不变式在原始算法的基础上根据需要产生算法的变体。谨以本文献给在理解算法思路时没有头绪而又不甘心于死记硬背的人。转载 2017-12-05 22:54:35 · 265 阅读 · 0 评论 -
32. Longest Valid Parentheses 动态规划解法
动态规划解法,十分简洁,len[i]定义为以下标i结尾的之前的字符串所能组成的最大有效括号class Solution{ public: int longextValidParentheses(string s) { int result=0; vector dp(s.length(),0); for(int i=1;i<s.len原创 2017-12-05 22:08:08 · 603 阅读 · 0 评论