随笔分类 -  算法_洗脑系列【转】

http://www.cnblogs.com/huangxincheng/category/340148.html
摘要:在所有具有性能优化的数据结构中,我想大家使用最多的就是hash表,是的,在具有定位查找上具有O(1)的常量时间,多么的简洁优美,但是在特定的场合下:①:对10亿个不重复的整数进行排序。②:找出10亿个数字中重复的数字。当然我只有普通的服务器,就算2G的内存吧,在这种场景下,我们该如何更好的挑选数据结... 阅读全文
posted @ 2014-09-02 22:14 mmcmmc 阅读(302) 评论(0) 推荐(0)
摘要:设T[0:n-1]是n 个元素的数组。对任一元素x,设S(x)={ i | T[i]=x}。当| S(x) |>n/2 时,称x 为T 的主元素。设计一个算法,确定T[0:n-1]是否有一个主元素。算法描述如下:a1 a2 a3 a4 … aj aj+1 … … an 首先取a1 存入m 中,计数器... 阅读全文
posted @ 2014-09-01 23:52 mmcmmc 阅读(1048) 评论(0) 推荐(0)
摘要:如何产生1-100之间的100个不重复的随机数 如果这是你是第一次看到这个题目,也许你的想法有很多。1:首先从原始数组中随机选择一个数字,然后将该数字从数组中剔除,再随记选,再剔除,重复99次,就解决了。 我们知道从数组中剔除一个元素的复杂度为O(N),那么随机选取n个数字,它的复杂度就是O(N... 阅读全文
posted @ 2014-08-30 21:55 mmcmmc 阅读(5263) 评论(0) 推荐(0)
摘要:今天跟大家分享下算法思想中比较难的一种"动态规划",动态规划给人像是作战时常用的“迂回战术”,或者说是游击战,在运动中寻找突破口。一: 思想 首先要了解”动态规划“,必须先知道什么叫做”多阶段决策“,百科里面对这个问题解释的很全,我就load一段出来,大家得要好好品味,好好分析。上面图中最后一句话就... 阅读全文
posted @ 2014-08-30 21:26 mmcmmc 阅读(186) 评论(0) 推荐(0)
摘要:一: 思想 有时我们要得到问题的解,先从其中某一种情况进行试探,在试探过程中,一旦发现原来的选择是错误的,那么就退回一步重新选择, 然后继续向前试探,反复这样的过程直到求出问题的解。二:场景 回溯思想是一个非常重要的思想,应用场景也是非常广泛。 ① “下棋”: 每一次走棋的位置都要考虑... 阅读全文
posted @ 2014-08-30 21:23 mmcmmc 阅读(198) 评论(0) 推荐(0)
摘要:一: 思想 有时候我们处理一个复杂的问题,可能此问题求解步骤非常杂,也可能是数据非常多,导致我们当时很难求出或者无法求出,古语有云:步步为营,各个击破,这个思想在算法中称为分治思想,就是我们可以将该问题分解成若干个子问题,然后我们逐一解决子问题,最后将子问题的答案组合成整个问题的答案。二: 条件 ... 阅读全文
posted @ 2014-08-30 20:22 mmcmmc 阅读(216) 评论(0) 推荐(0)
摘要:一: 思想 有时我们解决某个问题时找不到一点规律,此时我们很迷茫,很痛苦,很蛋疼,突然我们灵光一现,发现候选答案的问题规模在百万之内,此时我们就想到了从候选答案中逐一比较,一直找到正确解为止。二: 条件 前面也说了,枚举是我们在无奈之后的最后一击,那么使用枚举时我们应该尽量遵守下面的两个条件。 ... 阅读全文
posted @ 2014-08-30 19:48 mmcmmc 阅读(470) 评论(0) 推荐(0)
摘要:这个贪心的行为在算法中也成为了一种指导思想,也就是说贪心算法所作出的选择在当时的环境下是最好的,说深一点就是它只是某种意义上的局部最优解,但不一定是全局最优解,此时往往接近于最优解。一: 优点 前面也说了,贪心只是求的当前环境下的最优解,而不是追究整体的最优解,所以贪心就避免了为求的整体最优解而枚... 阅读全文
posted @ 2014-08-30 19:37 mmcmmc 阅读(149) 评论(0) 推荐(0)
摘要:今天说说递归思想,在我们编码时,有的时候递归能够让我们的算法更加通俗易懂,并且代码量也是大大的减少。比如我先前的系列中说到了关于树的“先序,中序和后序”遍历,那么看看用递归来描叙这个问题是多少的简洁,多么的轻松。 1 #region 二叉树的先序遍历 2 /// 3 /// ... 阅读全文
posted @ 2014-08-30 10:25 mmcmmc 阅读(204) 评论(0) 推荐(0)
摘要:顺推的例子 上过大学的应该都知道著名的“斐波那契”数列吧,说的是繁殖兔子的问题,题目我就大概说一下。如果1对兔子每月能生1对小兔子,而每对小兔在它出生后的第3个月就可以生1对小兔子,如果从1对初生的小兔子开始,1年后能繁殖多少兔子?思路:其实这个问题我们可以将兔子划分为“1月大的兔子“,”2月... 阅读全文
posted @ 2014-08-30 10:21 mmcmmc 阅读(259) 评论(0) 推荐(0)