数据结构与算法
文章平均质量分 86
leonwei
腾讯专家游戏开发工程师(T12/T4-1) 《黎明觉醒》引擎组组长
展开
-
一些小算法
欧几里得辗转相除int gcd ( int a ,int b){ return b?gcd(b,a%b):a;}int lcm( int a , int b){ return a / gcd (a , b) * b;}原创 2011-08-10 15:23:12 · 764 阅读 · 0 评论 -
微软的22道数据结构算法面试题
1、反转一个链表。循环算法。 1 List reverse(List l) { 2 if(!l) return l; 3 list cur =转载 2011-08-10 16:11:45 · 924 阅读 · 0 评论 -
在从1到n的正数中1出现的次
题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1的数字有1,10,11和12,1一共出现了5次。 如: 30143:由于3>1,则个位上出现1的次数为(3014+1)*1由于4>1,则十位上转载 2011-08-19 11:14:29 · 796 阅读 · 0 评论 -
后缀树
在pongba的讨论组上看到一道Amazon的面试题:找出给定字符串里的最长回文。例子:输入XMADAMYX。则输出MADAM。这道题的流行解法是用后缀树(Suffix Tree)。这坨数据结构最酷的地方是用它能高效解决一大票复杂的字符串编程问题:在文本T里查询T是否包含子串P(复杂度同流行的KMP相当)。文本T里找出最长重复子串。比如abcdabcefda里abc同da都重复出现,而转载 2013-04-27 09:55:08 · 1045 阅读 · 0 评论 -
洗牌算法
几乎所有的程序员都写过类似于“洗牌”的算法,也就是将一个数组随机打乱后输出,虽然很简单,但是深入研究起来,这个小小的算法也是大有讲究。我在面试程序员的时候,就会经常让他们当场写一个洗牌的函数,从中可以观察到他们对于这个问题的理解和写程序的基本功。 在深入讨论之前,必须先定义出一个基本概念:究竟洗牌算法的本质是什么?也就是说,什么样的洗牌结果是“正确”的? 云风曾经有一篇博文,专转载 2013-05-14 13:17:48 · 3110 阅读 · 0 评论 -
扩展欧几里得定理的证明和代码
扩展欧几里得定理的证明和代码原创 2017-01-25 19:07:16 · 2003 阅读 · 1 评论