上一页 1 ··· 7 8 9 10 11 12 13 下一页
摘要: 题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1在栈顶。颠倒之后的栈为{5, 4, 3, 2, 1},5处在栈顶。个人并不觉得这道题设计的有多么好,纯粹就属于没事卖弄技巧的那种,蛋疼的用递归来颠倒一个栈,又浪费时间又浪费空间。解法的思想其实很简单,那么就是你要我颠倒栈,那么我就先把第一个元素保存了,然后弹出其余所有的元素,然后把第一个元素压进去,然后按原来的顺序,压入被弹出的元素,得到的就是 2 3 4 5 1, 2在栈顶,接着用对于前四个,用同样的方法,最后终于颠倒了。void reverseStack(stack<T>& s){ int count 阅读全文
posted @ 2012-10-28 10:49 三更_雨 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 题目的意思很简单,比如说有数组[1,6,9,2,1,5,15,20],那么满足上述条件的元素为1,15,20。暴力的方法就是从左到右进行遍历,到达某个数字后,在从0开始遍历到当前下标,找出最大的,再从当前下标遍历到尾,找出最小的,然后根据题意比较一下,这个算法为O(n^2)。比较简单的算法就是利用一下额外的空间,保存一下,每个元素右侧的最小值,或者左侧的最大值,在反向遍历一次。举个例子。就如[1,6,9,2,1,5,15,20],如果我们要找到该数组右侧的最小值,则从后向前遍历,20开始,20的右侧的最小值为20,之后15,15右侧的最小值为15,之后5,最小值为5,之后1,最小值为1,那么新 阅读全文
posted @ 2012-10-28 00:24 三更_雨 阅读(2427) 评论(0) 推荐(0) 编辑
摘要: 题目:已经两个已经排好序的数组,找出两个数组合起来的中间大的数字。要求算法复杂度尽可能低。如:x数组:1,7,9,10,30 y数组:3,5,8,11 则中间大数为:8这个题目看似简单,不过要处理起来还是有很多小细节需要注意的。主要思想就是用两个指针同时遍历两个数字,如果第一个数组的值比第二个的小,就第一个数组向前走,否则第二个数组向前走。如果两个的下标等于中间的下标了,那么输出,如果一个数组遍历完成了,还没有到达中间的下标,则说明中间值在另个数组中,标号为 中间下标减去走完的数组元素总数。代码如下: #include "stdafx.h"#include <iost 阅读全文
posted @ 2012-10-27 21:47 三更_雨 阅读(354) 评论(0) 推荐(0) 编辑
摘要: 传说是一道腾讯的面试题题目如下: 根据上排给出十个数,在其下排填出对应的十个数 要求下排每个数都是先前上排那十个数在下排出现的次数。 上排的十个数如下: 【0,1,2,3,4,5,6,7,8,9】没错,题目就是只有这么一点。思考过程:第一排的数字: 0 1 2 3 4 5 6 7 8 9 如果下一排全是0的话,那么,0下面(即指第二排,之后类似)就应该是10,这样,0下的的数字就应该是9,那么9下面就应该是1,那么1下面就应该是1,那么0下面就成了7,这样9下面的1就不应该存在了,反而7下面是1,这样1下面是1,7下面也是1,这样1下面就应该是2,不过这个又带来一个问题就是,1下面是2就是错的 阅读全文
posted @ 2012-10-27 21:09 三更_雨 阅读(4885) 评论(0) 推荐(0) 编辑
摘要: 原文地址: http://blog.csdn.net/wcyoot/article/details/6428248貌似原文说的不是太详细,表示理解之后,在这里重新解释下,同时感谢原文博主提供了这么多题目以及解答。题目:4个人在晚上过一座小桥,过桥时必须要用到手电筒,只有一枚手电筒,每次最多只可以有两人通过, 4个人的过桥速度分别为1分钟、2分钟、5分钟、10分钟,试问最少需要多长时间4人才可以全部通过小桥?抽象: N个人过桥,每个人过桥需要的时间为ti(1<=i<=N).每次最多两个人过桥,并且还要回来一个。求最快过桥时间。输入:每人过桥时间数组,人数(数组元素个数)。输出:最快时 阅读全文
posted @ 2012-10-27 20:06 三更_雨 阅读(636) 评论(0) 推荐(0) 编辑
摘要: 题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如 输入整数22和如下二元树 10 / \ 5 12 / \ 4 7则打印出两条路径:10, 12和10, 5, 7。先序遍历树即可得到结果。算法: PrintPath(TreeNode* pRoot, int sum, const int target) 用来计算,sum为栈中的元素的和,target为目标值。到达一个节点之后计算当前节点和sum的和,如果为target,输出路径返回,如果大于target,则直接... 阅读全文
posted @ 2012-10-26 21:30 三更_雨 阅读(6007) 评论(1) 推荐(0) 编辑
摘要: 以后的算法中可能需要有建树的过程,就把建树的过程,单独弄出来了。通过先序遍历来建立一棵树。如果要建立的树长成这样: 10 / \ 6 14 / \ / 4 8 12那么输入则是应该是这样 10 6 4 # # 8 # # 14 12 # # # 应该是每一个值成为一行,而不是我这样把所有的值都写成一行。他的规则就是,一个先序遍历的过程,先10,再6,在4,在NULL,在NULL,在8,在14,在12,在NULL,NULL,NULL#include <iostream>using namespace std;struct TreeNode{ int dat... 阅读全文
posted @ 2012-10-26 20:55 三更_雨 阅读(448) 评论(0) 推荐(0) 编辑
摘要: 原文地址: http://blog.csdn.net/wcyoot/article/details/6428297题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 比如将二元查找树 10 / \ 6 14 / \ / \ 4 8 12 16转换成双向链表4=6=8=10=12=14=16。很明显我们可以知道 中序遍历 一遍二叉查找树就可以得到一个递增的序列。同样,只要中序遍历一下儿茶查找数,调整一下左孩子指针和右孩子指针的指向,就可以得到一个双向链表。代码中的pListHead和pListLast的初始值都是NULL,其中... 阅读全文
posted @ 2012-10-26 20:31 三更_雨 阅读(468) 评论(0) 推荐(0) 编辑
摘要: 只是记录下网络层协议:包括:IP协议、ICMP协议、ARP协议、RARP协议。传输层协议:TCP协议、UDP协议。应用层协议:FTP、Telnet、SMTP、HTTP、RIP、NFS、DNS。应用层 ·DHCP(动态主机分配协议) · DNS (域名解析) · FTP(File Transfer Protocol)文件传输协议 · Gopher (英文原义:The Internet Gopher Protocol 中文释义:(RFC-1436)网际Gopher协议) · HTTP (Hypertext Transfer Protocol)超文本 阅读全文
posted @ 2012-10-26 08:44 三更_雨 阅读(4184) 评论(0) 推荐(1) 编辑
摘要: 在博客园看到这片文章: http://www.cnblogs.com/MikeZhang/archive/2012/10/26/swapPtr20121026.html的标题,就想自己实现下任务就是将两个指针进行交换,自己也实现了一下,记录一下,如果要看解释,还是去原帖吧。第一种方法就是用二级指针,第二种方法就是用 指针引用。代码如下:#include "stdafx.h"#include <iostream>using namespace std;void swap_point1(int **p1, int **p2){ int* temp = *p1; *p 阅读全文
posted @ 2012-10-26 07:55 三更_雨 阅读(1588) 评论(0) 推荐(0) 编辑
上一页 1 ··· 7 8 9 10 11 12 13 下一页