- 博客(10)
- 资源 (17)
- 收藏
- 关注
原创 动态规划算法(微软一面笔试题:股票交易,O(N)时间复杂度O(1)空间复杂度)
自从暑假面试被鄙视之后,回来就经常想这个问题,到今天应该快两个月了。在这个下午,我又拿出草稿纸,总算找到了思路,把它给搞定了。就像一个心愿一样,完结了。问题是这样的,如同题目:原题就不赘述了,化简之后的问题就是在数组中找到两个元素,计算后面的元素减去前面的元素的差。求出所有差的最大值。(你可以认为你在炒股票,买入价格和卖出价格就是你的盈利)当时想到的方法是,如果一遍遍历这个数组,找到MAX,MIN
2012-08-24 15:18:13 8832 9
原创 设计模式(一)单例模式Singleton
在面试的时候,面试官提到了单例模式。我没有接触过,但也了解。这让面试官对我的影响有所失望,回来之后就买了《设计模式-可复用面向对象软件的基础》。翻开单例模式,发现用C++实现的单例模式还真的有点水平。单例模式指在我们的程序中有一个组件,它的类只有唯一的一个对象,也不可以创建更多的对象。这种模式就是单例模式。实现如下:上面的单例模式的实现要求我们如下方式使用类Singletonclass
2012-08-22 10:09:49 1692
原创 微软笔试题 大型文件外部排序(二路归并和k路归并的实现和比较)
这两种排序方法都是先将一个无序的大的外部文件,分成若干块,分别读到内存中。将每一块都先排好序,放到一个新的外部文件中。二路归并的思路是每次将外部排序的文件两两合并,变成一个二倍大小的文件,然后对二倍大小的文件继续两两合并。直到最终合并为一个文件为止。k路归并是将外部排好序的子文件一次合并。先在各个文件中取出第一个数据,放到一个优先级队列中。然后选出最小的数据输出到外部结果文件里。并从最
2012-08-20 21:45:41 5028
原创 C++合并两个有序的二进制文件
有时候很多基于文件的外部排序算法都需要合并两个有序的文件。下面就给出简单的C++实现方法。具体思路和合并两个有序的单链表的思路是一样的。void merge_file(const string& file_in_name1,const string& file_in_name2,const string& file_out_name){ //打开两个输入文件和一个输出文件 ifst
2012-08-16 10:15:09 5373 2
原创 微软笔试题 给一个包含10^7个整数的大文件排序
这个题目有一个前提条件,大文件的中的数据有有一个特点,那就是不存在重复的数据。就算是重复的数据,也只让你求出去除重复之后的那些数据的排序结果。 如果题目变成了这样,我们就可以考虑创建一个大的数组。数组的下表表示一个整数,数组的内容在我遍历文件的时候再赋值。如果数组下标代表的那个整数存在,我们就把数组的这个元素赋值为1,否则赋值为0.这样我们就可以再次遍历数组,把元素的值为1的那
2012-08-11 01:25:19 2229
原创 微软笔试题 跳台阶问题
题目 : 一个台阶有n个台阶。每次可以上一个台阶,也可以上两个台阶。有多少种不同的上法?可以这么递归的来考虑,第一次跳一个台阶,这种情况的跳法总数是后面的跳法总数f(n-1);第一次跳两个台阶,这种情况下跳法总数是后面的跳法总数f(n-2);所以全部的跳法数就是f(n)=f(n-1)+f(n-2),n>2f(1)=1,n=1f(2)=2;n=2这正是Fibonacci数列,可
2012-08-10 22:16:55 2120 2
原创 逆向迭代器
有时候我们要写一些从数组的后面往前遍历的程序,但使用的却是正向迭代器。比如:typedef vector::iterator iter; iter last=--a.end(); for (iter i=last-1;i>=a.begin();i--) { for (iter j=last;j>=i+1;j--) { if ( *i {
2012-08-09 15:09:57 2048
原创 排列组合算法(微软笔试题:输出1到n的全排列)
这里希望能更清楚,如果不好,欢迎拍砖。12345的next是12354,从这里我们可以看出,next就是将大数字提到小数字的前面,即对调一个升序的两个数字。 而对于更一般的情况,对如下排列234578 改变任意个升序的数字对都可以得到后续的排列。哪一个才是next呢? 当有多个升序的数对事,在高位对调,低位的对调会被跳过。我们应该先把低位的都改对调完再对调高位的。
2012-08-09 14:36:40 4530
转载 STL iterators
STL 主要是由 containers(容器),iterators(迭代器)和 algorithms(算法)的 templates(模板)构成的. 对应于它们所支持的操作,共有五种 iterators(迭代器)。 input output \ / forw
2012-08-09 14:10:52 1218
原创 STL容器如何正确调用自己的erase方法
今天写一个小例子时遇到了一个如下的问题:我要遍历一个vector,但遍历过程中某些条件具备的时候我就打算删除复合条件的元素。删除时使用erase永久删除,然后继续完成遍历(这个情况在Effective C++上面看到过,但没找到,还记得有解决办法的,所以就自己想办法了)。比如现在我打算在遍历遇到2的时候直接删除2,删除后的数组还可以当做它用。int b[]={1,2,3,4,5};ve
2012-08-07 18:52:24 1496
RabbitMQ C++ Client on Windows
2014-04-10
C++ Network Programming Volume 2.chm
2014-03-05
Aho算法的C++实现
2010-12-20
汇编编译器 集成开发环境 适用于初学者循序渐进学习asm2010
2010-04-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人