算法
文章平均质量分 55
simon-zhao
学习、探索
展开
-
python实现的遗传算法实例(一)
def b2d(b): #将二进制转化为十进制 x∈[0,10] t = 0 for j in range(len(b)): t += b[j] * (math.pow(2, j)) t = t * 10 / 1023 return tpopsize = 50 #种群的大小#用遗传算法求函数最大值:#f(x)=10*sin(5x)+7*cos(4x) x∈[0原创 2014-04-12 16:34:36 · 37864 阅读 · 23 评论 -
堆排序在TOP K问题中的应用
问题从数组中找出最大或者最小的k个数。思路以最小的k个数为例。可以使用一个大小为k的数组,然后依次遍历原始数据,当有元素比数组里的元素小时,就用这个数据将其替换出来。思路是对的,但是从大小为k的数组里面搜索最大元素的复杂度是O(n)。接下来优化一下,我们知道堆排序获得最大值(最小值)的复杂度是O(1),调整堆的复杂度是O(log n)。在海量数据处理的时候这个优化的效果是很明显的。代码题目描述:原创 2015-10-22 15:09:58 · 1674 阅读 · 0 评论 -
回溯法应用:整数拆分
题目笔试的时候遇到这么一个问题:6 = 1+1 +1+ 1+ 1 +1 6 = 1+ 1+ 1+ 1+ 2 6 = 1+ 1+ 1+ 3 6 = 1+ 1+ 2+ 2 6 = 1+ 1+ 4 6 = 1+ 2+ 3 6 = 1+ 5 6 = 2+ 2+ 2 6 = 2+ 4 6 = 3+ 3 6 = 6就这样,给定一个数,打印出这种形式分析递归,回溯。代码#include<ios原创 2015-08-09 16:04:15 · 3660 阅读 · 0 评论 -
数组中只出现一次的数字
一、一个数组中有一个数字出现了一次,其余的数字都出现了两次。快速找出只出现一次的那个数字。思路:位运算中两个相同的数按位异或结果是0,另外0与任何数异或结果就是那个数。因此将数组中所有的元素一起做异或运算,出现两次的元素会消掉,最后只剩那个只出现一次的数字。二、一个数组中有两个数字出现了一次,其余的数字都出现了两次。快速找出只出现一次的那两个数字。例如:1,1,2,2,3,3,8,9 借鉴第一个问原创 2015-09-08 19:34:05 · 1713 阅读 · 0 评论 -
hihoCoder Magic Box
题目题目1 : Magic Box 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 The circus clown Sunny has a magic box. When the circus is performing, Sunny puts some balls into the box one by one. The balls are in thre原创 2015-07-12 17:59:14 · 1708 阅读 · 0 评论 -
二叉搜索树(binary search tree)
定义二叉搜索树:二叉树中任何节点的键值一定大于其左子树中每一个节点的键值,并且小于其右子树中每一个节点的键值。查找基于此,在二叉搜索树中搜索最小元素和最大元素是方便的,从根节点开始,一直往左走,直至无路可走,就得到了最小元素;从跟节点开始,一直往右走,直至无路可走,就得到了最大元素。 查找任何一个节点也是方便的。从跟节点开始,目标值比当前节点的键值大,就继续往右走,目标值比当前节点的键值小,就继续原创 2015-05-22 14:59:26 · 1772 阅读 · 0 评论 -
红黑树(RBtree)
有可能是因为输入不够随机,也有可能经过某些插入和删除操作,二叉搜索树有可能会失去平衡而造成效率低下的情况。红黑树是一种平衡的二叉搜索树。红黑树(RBtree)定义红黑树不仅仅是一个二叉搜索树,而且满足以下规则:每个节点的颜色不是红色就是黑色;根节点的颜色为黑色。NULL节点视为黑色;如果每个节点的颜色为红色,则其子节点的颜色必须为黑色;任何一个节点到NULL(树尾端)的任何路径,所含的黑色原创 2015-05-22 17:57:09 · 1782 阅读 · 0 评论 -
字典树(Trie树)用法及例子(一)
字典树(Trie)概述字典树,又名Trie树。顾名思义,在字典中很好用。我们在查牛津词典时都是先按第一个字母找到以这个字母为首的单词所在的初始位置,在此位置的基础上,再按照第二个字母继续找。。。 插一句,字符串的字典序也是这个意思,先按照第一个字母排序,第一个字母相同的情况下再按照第二个字母排序。 字典树的数据结构图: 注意:节点中的value并不存储字符,节点中的value按需使用。每个原创 2015-05-15 20:53:31 · 7876 阅读 · 1 评论 -
leetcode:Largest Rectangle in Histogram
Largest Rectangle in Histogram这是leetcode上面的一道题,百度面试的时候也遇到了。原题是这么说的: 思路简单思路:对于数组中的每一个元素height[i],算出包含它的最大的矩形面积。也就是找到它左边第一个小于它高度的下标l(height[l] < height[i]),找到它右边第一个小于它高度的下标r(height[r] < height[i])。包含hei原创 2015-05-14 11:02:53 · 1527 阅读 · 1 评论 -
leetcode:Maximal Rectangle
这是leetcode的第85题,原题如下:Given a 2D binary matrix filled with 0’s and 1’s, find the largest rectangle containing all ones and return its area.leetcode的第84题是Largest Rectangle in Histogram,原题如下: 解决方案在http原创 2015-05-14 12:50:46 · 1666 阅读 · 0 评论 -
字典树(Trie树)用法及例子(二)
上接http://blog.csdn.net/u010902721/article/details/45749447例二问题:有一组字符串,这一组字符串中,有没有两个字符串A和B,满足A是B的前缀。分析:我们只要区分开”abcde”、”abcxy”、”ab”就行了。node中i就用做一个flag了,等于1表示这个字符是某个已插入字符串的结尾字符。这样在在先插入了”ab”之后再插入”abcde”就能找原创 2015-05-15 21:25:50 · 2678 阅读 · 0 评论 -
BloomFilter
Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法。通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合。一. 实例 为了说明Bloom Filter存在的重要意义,举一个实例: 假设要你写一个网络蜘蛛(web crawler)。由于网络间的链接错综复杂,蜘蛛在网络间爬行很可能会形成“环”。为了避免形成“环”,就需要知道蜘蛛已经转载 2017-01-11 20:32:38 · 497 阅读 · 0 评论