随笔分类 -  算法

摘要:第六十一题:找出整型数组中两个只出现了一次的数(其余都出现了两遍)思路:凡是涉及到出现了两次,出现了一次的都用XOR。把所有的数都XOR一遍得到一个数tmp,这个数就是要得到的两个数的XOR。tmp肯定不为0,因为这要得的两个数一定不相等。则使用tmp为1的位可以把原数组分为两组。因为这两个数的这一位一定不同(1^0=1),所以这两个数一定各自落在一个组里,而出现了两次的同一个数也会在同一组里。重新对各个组XOR一编即可找到这个组中唯一出现一次的数了。整个过程遍历了两次数组,复杂度O(2n)=O(n)void twoSingleNum(const int *a,int cnt){ int... 阅读全文
posted @ 2013-03-28 09:24 iyjhabc 阅读(235) 评论(0) 推荐(0)
摘要:第七十一题:求a的b次方思路1:循环乘积思路2:half=a^(b/2) 即a^b=half*half,复杂度从O(n)降为O(logn)PS:除以二可以用>>1代替,判断可以否整除2可以用 & 1代替,位操作提高系效率。double helper(double base,int power){ if(power==1)return base; if(power==-1)return 1/base; if(power%2==0){ double half=helper(base,power/2); return half*half; }els... 阅读全文
posted @ 2013-03-28 08:57 iyjhabc 阅读(439) 评论(0) 推荐(0)
摘要:内存池STL实现:内存池(Memory Pool)是一种内存分配方式。 通常我们习惯直接使用new、malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能。 内存池则是在真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够再继续申请新的内存。这样做的一个显著优点是尽量避免了内存碎片,使得内存分配效率得到提升。 在内核中有不少地方内存分配不允许失败. 作为一个在这些情况下确保分配的方式, 内核开发者创建了一个已知为内存池(或者是 &qu 阅读全文
posted @ 2012-12-12 15:42 iyjhabc 阅读(285) 评论(0) 推荐(0)
摘要:通过一个哈希函数建立值与存储位置的一个对应关系,在寻找该值时,可以直接通过该函数计算得出其存储位置,而不需要像其它数据结构一样通过比较来查找。理想情况下查找的时间复杂度为o(1)。哈希函数的构造方法有很多种,一个好的哈希函数应该让数据地址平均分布,并且避免冲突。此处通过除留余数法来构造哈希函数:key = value % p (p不大于哈希表长度)哈希表的长度应远大于数据存储量。当存储量接近哈希表长度时,哈希表的搜索效率将非常低。原因是冲突太多。这里使用解决冲突的办法是链地址法。就是当HASH函数计算的KEY已经存储值时,在该KEY位置上再开辟一个位置存储新值。搜索时,要检查存放在新开辟空间的 阅读全文
posted @ 2012-09-08 17:04 iyjhabc 阅读(426) 评论(0) 推荐(0)
摘要:Trie树就是字典树,其核心思想就是空间换时间。后缀树 suffix tree:http://www.cnblogs.com/snowberg/archive/2011/10/21/2468588.html字典树作用:1、查找单词是否出现2、查找单词第一次出现位置(在最后一个字母节点标记第一次出现位置)3、查找包含前序的单词个数(每新增一个单词进树,所经过的节点的计数器加一)4、将所有单词按字母次序输出举个简单的例子。给你100000个长度不超过10的单词。对于每一个单词,我们要判断他出没出现过,如果出现了,第一次出现第几个位置。这题当然可以用hash来,但是我要介绍的是trie树。在某些方面 阅读全文
posted @ 2012-09-02 20:17 iyjhabc 阅读(325) 评论(0) 推荐(0)
摘要:1219char str[100000]; while (gets(str)) { cout<<str<<endl; string abc=str; cout<<abc<<endl; cout<<abc.size()<<endl; }此例子证明可以用gets方便地读取一行数据(注意gets不检查buf是否足够),然后传给shring,string的大小是实际数据大小,非buf大小。1228map<string,int> num;num["one"]=1;map格式1229string str 阅读全文
posted @ 2012-09-01 14:12 iyjhabc 阅读(158) 评论(0) 推荐(0)