wpcockroach

导航

随笔分类 -  Algorithm

谈一谈实际项目中的一个摇号需求
摘要:有多少人认为公司笔试的时候出的算法题(类似于leetCode上的题目)是极其无聊的东西?围脖上好像也有很多人认为这种笔试题毫无意义,不能反映一个程序员实际的工程能力。当然,我是从来不这么认为的。但是也不得不承认,实际的工作中确实遇不到这种笔试题中的场景。 不过,今天在工作中居然就遇到了这么一个问题, 阅读全文

posted @ 2014-06-11 23:18 wpcockroach 阅读(708) 评论(0) 推荐(0)

LeetCode之Unique Binry Search Trees
摘要:4月份很快就过半了,最近都在看WPF,有点落伍了...本来想写一点读书笔记的,还没想好要怎么写。所以为了能够达到每月一篇博客的目标,今天先说一个LeetCode上的面试题:Unique Binary Search Trees。 题目简单翻译过来就是说: 给定n个不同节点,问:可以构造出多少种异构的二 阅读全文

posted @ 2014-04-18 01:04 wpcockroach 阅读(525) 评论(0) 推荐(0)

字符串的编辑距离
摘要:字符串的编辑距离也被称为Levenshtein距离(Levenshtein Distance),一般用动态规划来实现。属于经典算法。这里对编辑距离进行简单的分析(经典算法,所以记录一下:-))。我们假定函数dist(str1, str2)表示字串str1转变到字串str2的编辑距离,那么对于下面3种极端情况,我们很容易给出解答(0表示空串)。dist(0, 0) = 0dist(0, s) = strlen(s)dist(s, 0) = strlen(s)对于一般的情况,dist(str1, str2)我们应该如何求解呢?假定我们现在正在求解dist(str1+char1, str2+char 阅读全文

posted @ 2009-03-17 23:07 wpcockroach 阅读(2684) 评论(0) 推荐(1)

求Fibonacci数的几种方法
摘要:先给出Fibonacci的定义:简单地总结了下,至少有5中方法来求Fibonacci(n)。直接带公式简单递归循环改进的递归使用矩阵这里主要介绍下如何用矩阵来求F(n)。直接公式简单递归int Fibonacci(int n){ if (1 >= n) return n; else return Fibonacci(n – 1) + Fibonacci(n – 2);} 循环int Fibonacci(int n){ int fib_n1 = 0, fib_n2 = 1; int fib_n; if (n <= 1) return n; for (int i... 阅读全文

posted @ 2009-03-14 20:37 wpcockroach 阅读(385) 评论(0) 推荐(0)

Exponentiation 的 O(logn) 算法
摘要:求幂的O(logn)算法应该已经众所周知了。这里就不做深入地分析,只是简单介绍下并提供两个样板程序。在写下O(logn)算法之前,还是先补充介绍下算法的数学背景。显然,上面的数学式具有递归形式。所以,递归实现可以写成:int Power(int base, unsigned exponent){ if (0 == exponent) return 1; if (1 == exponent) return base; if (exponent & 1) return Power(base * base, exponent >> 1) * base; else... 阅读全文

posted @ 2009-03-14 16:44 wpcockroach 阅读(592) 评论(0) 推荐(0)