Algorithm
文章平均质量分 56
vonzhou
这个作者很懒,什么都没留下…
展开
-
Reverse bits of an unsigned integer
1.将原无符号从低到高按比特取出构造出它的反转typedef unsigned int uint;uint reverseBits2(uint x){ uint i,y=0; for(i = 0;i < 32;i++){ y <<= 1; y |= (x & 1); //原创 2013-12-12 17:04:30 · 1241 阅读 · 0 评论 -
KMP算法理解
KMP算法理解字符串匹配算法之KMP算法一直以来都很难理解,虽然知道要减少不必要的匹配,但是仍然不懂里面的思想,即使看着代码。后来看到(2)中博客中的解释才清晰了许多,不至于在什么DFA,前缀表,部分匹配表等概念中迷失自己。主要的指导思想在于当发生不匹配的时候如何更有效的利用现在已经匹配的字符串的信息来加速移动过程,部分匹配表的存在正是挖掘一个字符串中前缀和后缀中最长公共串,比原创 2015-04-14 20:57:26 · 941 阅读 · 0 评论 -
剑指offer实践(Java)
移步github : https://github.com/vonzhou/learning-java/tree/master/src/oj/swordoffer原创 2015-03-08 16:41:27 · 1041 阅读 · 0 评论 -
最大流问题(Ford-Fulkerson算法)
最大流量问题 对于最大流量问题的详细分析和理论参见算法导论,Ford-Fulkerson算法,伪代码如下:SetFtotal = 0Repeat until there is no path from s to t: Run DFS from s to find a flow path to t Letcp be the minimum原创 2015-03-30 20:41:31 · 2761 阅读 · 0 评论 -
通过Edit Distance问题理解动态规划算法
动态规划算法理解 动态规划(Dynamic Programming)是通过组合子问题的解来解决问题。所以对于一个问题是否能够用DP,就要看是否具有相同的子问题结构,而且计算有重叠。导致直接用递归来解决的话就带来巨大开销,甚至栈溢出,动态规划就是一种改进暴力递归的策略,有自顶向下和自底向上2个角度来看问题。Top-Down的话就是为了避免递归过程中的重复计算,会记录下中间步骤可以原创 2015-03-25 21:24:47 · 2327 阅读 · 0 评论 -
[LeetCode] Triangle 解题记录
题目描述:Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below.For example, given the following triangle[ [2],原创 2014-11-04 19:03:26 · 1244 阅读 · 0 评论 -
[LeetCode]Valid Sudoku解题记录
这道题考查对二维数组的处理,哈希表。1.最自然的方法就是分别看每个数是否符合三个规则,所以就需要相应的数据结构来记录这些信息,判定是否存在,显然最先想到用哈希表。2.学会把问题抽象成一个个的子问题。3.在索引的构建上下工夫。4.底层数组如何对应的细节没有那么重要,重要的是构成了问题的全集。代码:附图:一趟遍历时根据i,j,对应到具体的grid,这里的构造模式有多种(??原创 2014-10-29 19:41:57 · 1173 阅读 · 0 评论 -
排序算法
选择排序定义:依次选择最小的元素放在相应的位置上特点:比较次数是 N(N-1)/2 交换次数是 N (each exchange puts an item into its final position, so the number of exchanges is N. Thus, the running time is dominated by the number of com原创 2014-07-03 11:19:26 · 1177 阅读 · 0 评论 -
Bloom filter的实现以及常用的hash函数
Bloom filter的实现以及常用的hash函数bloom filter利用时间换空间的思想,利用多个哈希函数,将一个元素的存在状态映射到多个bit中,特别是在网络环境中,BF具有广泛的用途,关键问题就是要减少false positive rate(可以设置参数来调节),扩展有 counting BF。这里选用的hash函数是表现较好的 BKDRHash , SDBMHash, D原创 2014-06-12 15:14:10 · 4123 阅读 · 0 评论 -
Union-Find 算法实现
Union-Find动态连接问题描述:给定一个n个序列的对象,有两种操作: -Union command:连接两个对象; -Find/connected query:两个对象是否连接(有路径)算法实现方式1.用一个数组保存着每个对象所在的connected component,这种方式可以快速进行FIND,但是在union操作时需要遍历整原创 2014-07-01 19:04:00 · 2461 阅读 · 0 评论 -
生成1000万行7位数字文件(编程珠玑)
生成1000万行7位数字文件(编程珠玑)今天看《编程珠玑》排序的问题,输入是一个千行文件,每行是7位数字,并且无重复。搜索了下,没有现成的数据集,所以简单用python生成了下,虽然简单! 思路:顺序生成,然后shuffle。#!/usr/bin/pythonf = open("numbers.txt", "w");for i in range(0, 9999999): s = str(原创 2015-08-23 21:16:47 · 1191 阅读 · 0 评论