
数据结构/算法
文章平均质量分 73
nanjunxiao
这个作者很懒,什么都没留下…
展开
-
Bellman Ford 单源最短路径
Bellman-Ford解决Dijkstra中负权重负环问题,转载自:http://blog.sina.com.cn/s/blog_6165e6920100e7e2.htmlBellman-Ford算法与另一个非常著名的Dijkstra算法一样,用于求解单源点最短路径问题。Bellman-ford算法除了可求解边权均非负的问题外,还可以解决存在负权边的问题(意义是什么,好好思考),而D转载 2012-10-04 23:05:04 · 895 阅读 · 0 评论 -
程序员面试题精选100题:51-63解题报告
程序员面试题精选100题(51)-顺时针打印矩阵[算法] 题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如:如果输入如下矩阵:1 2 3 45 6 7 89 10原创 2013-06-26 00:07:09 · 1663 阅读 · 0 评论 -
数组、字符串、链表、树面试题汇总
数组1. 如何用递归实现数组求和2. 如何用一个for打印出一个二维数组A[count/col][count%col]3. 在顺序表中插入和删除一个节点平均移动多少个节点插入:(0+n)/2删除:(0+n-1)/24. 如何用递归算法判断一个数组是否是递增?Bool up(int a[],int beg,int end){原创 2013-06-26 20:57:50 · 2310 阅读 · 0 评论 -
先序中序后序二叉树非递归实现
稍微解释一下: 先序遍历。将根节点入栈,考察当前节点(即栈顶节点),先访问当前节点,然后将其出栈(已经访问过,不再需要保留),然后先将其右孩子入栈,再将其左孩子入栈(这个顺序是为了让左孩子位于右孩子上面,以便左孩子的访问先于右孩子;当然如果某个孩子为空,就不用入栈了)。如果栈非空就重复上述过程直到栈空为止,结束算法。 中序遍历。将根节点入栈,考察当前节点(即栈顶节点),如果其左孩子未被访问原创 2013-06-13 17:13:55 · 1077 阅读 · 0 评论 -
主定理
对于T(n) = a*T(n/b)+c*n^k;T(1) = c 这样的递归关系,有这样的结论:if (a > b^k) T(n) = O(n^(logb(a)));if (a = b^k) T(n) = O(n^k*logn);if (a原创 2013-07-01 11:20:55 · 757 阅读 · 0 评论 -
C++ 大整数运算
//copyright@ 2011/03/06 yansha //实现大整数类 #include #include #include using namespace std; class CBigInt { public: // input friend istream& operator >> (istream &, CBigI转载 2013-08-15 00:20:32 · 3609 阅读 · 0 评论 -
精选的一些《编程之美》相关资料
转载自:http://blog.youkuaiyun.com/wuyuegb2312/article/details/9896831又要到一年的招聘季了,肯定又有很多人开始啃《编程之美》了吧。这本书从开阔视野的角度来说很好,不过限于篇幅,有的问题并没有讲清楚(甚至问题叙述模棱两可、被标榜为“鼓励同面试官交流以获得更多细节”);或者扩展问题本身很难,没有给予解答和提示。在我看书并在网络上查到的相关资转载 2013-10-09 20:42:02 · 1295 阅读 · 0 评论 -
关系型数据库笔试面试题
第一、二、三范式http://www.cnblogs.com/i233/archive/2009/04/08/1431627.html聚集索引、非聚集索引http://database.51cto.com/art/201104/257104.htm唯一索引 聚集索引 非聚集索引索引实际上是一组指向表中数据的指针,索引的排列顺序其实就是这组指针原创 2013-10-11 22:22:38 · 2232 阅读 · 0 评论 -
常见概念笔试题
1.TCP建立连接的三次握手?http://blog.youkuaiyun.com/whuslei/article/details/66674712.死锁的条件互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用。请求与保持条件(Hold and wait):已经得到资源的进程可以再次申请新的资源。非剥夺条件(No pre-emption):已经分配原创 2013-09-26 18:23:31 · 911 阅读 · 0 评论 -
如何判断两个矩形相交
假定矩形是用一对点表达的(minx, miny) (maxx, maxy),那么两个矩形 rect1{(minx1, miny1)(maxx1, maxy1)} rect2{(minx2, miny2)(maxx2, maxy2)} 相交的结果一定是个矩形,构成这个相交矩形rect{(minx, miny) (maxx, maxy)}的点对坐标是: minx转载 2013-10-15 14:38:12 · 1288 阅读 · 0 评论 -
程序员面试题精选100题:41-50解题报告
程序员面试题精选100题(41)-把数组排成最小的数[算法] 题目:输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。例如输入数组{32, 321},则输出这两个能排成的最小数字32132。请给出解决问题的算法,并证明该算法。根据题目的要求,两个数字m和n排成的数字mn和nm,如果mn接下来我们考虑怎么去拼接数字,即给出数字m和n,怎么得到数字mn和n原创 2013-06-25 18:18:38 · 1692 阅读 · 0 评论 -
程序员面试题精选100题:11-40解题报告
程序员面试题精选100题(11)-求二元查找树的镜像[数据结构] 题目:输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。例如输入: 8 / \ 6 10 /\ /\5 7 9 11输出: 8 / \原创 2013-06-25 14:37:19 · 2470 阅读 · 0 评论 -
N个数的全排列
之前没有注意到,原来C++ algorithm中有全排列函数,着实简单,而且包含元素可重复情况。#include #include #include #define maxN 4using namespace std; int main(){ int p[maxN] = {-1}; for(int i=0; i<maxN; ++i)原创 2012-10-29 23:00:17 · 6260 阅读 · 0 评论 -
最大值最小化问题
问题描述:把一个包含n个正整数的序列划分成m个连续的子序列。设第i个序列的各数之和为S(i),求所有S(i)的最大值最小是多少?例如序列1 2 3 2 5 4划分为3个子序列的最优方案为 1 2 3 | 2 5 | 4,其中S(1),S(2),S(3)分别为6,7,4,那么最大值为7;如果划分为 1 2 | 3 2 | 5 4,则最大值为9,不是最小。问题分析:能否使m原创 2012-11-04 16:11:41 · 10748 阅读 · 1 评论 -
蓄水池抽样 海量数据不知道总数只能遍历一次随机抽样问题
问题起源于编程珠玑Column 12中的题目10,其描述如下: How could you select one of n objects at random, where you see the objects sequentially but you do not know the value of n beforehand? For concreteness, how would原创 2013-05-26 10:12:05 · 1880 阅读 · 0 评论 -
如何找出字典中的兄弟单词
1. 给定一个单词a,如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的兄弟单词,例如单词army和mary互为兄弟单词。现在给定一个字典,用户输入一个单词,如何根据字典找出这个单词有哪些兄弟单词?要求时间和空间效率尽可能的高。【2012年百度实习生招聘笔试题】 思路一:使用trie树。在字典树的前缀中再存储一个vector结构的容器:Cpp转载 2013-06-14 10:32:41 · 3301 阅读 · 1 评论 -
从海量数据中找出中位数
题目:在一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。只写出思路即可(内存限制为 2G的意思就是,可以使用2G的空间来运行程序,而不考虑这台机器上的其他软件的占用内存)。分析:这是topK问题的一个特殊情况,唯一变化点在于内存限制,解决该中位数问题的方案也可以推广到其他topK,k比较大无法放入内存的问题。1.原数据不能一次性读进内存,所以不能选择常见的内排原创 2013-06-14 15:54:56 · 1129 阅读 · 0 评论 -
栈的push、pop序列-判断序列是否是栈的pop顺序
程序员面试题精选100题(24)-栈的push、pop序列[数据结构] 题目:输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。为了简单起见,我们假设push序列的任意两个整数都是不相等的。比如输入的push序列是1、2、3、4、5,那么4、5、3、2、1就有可能是一个pop系列。因为可以有如下的push和pop序列:push 1,push转载 2013-06-14 21:01:28 · 2563 阅读 · 1 评论 -
字符串的全排列和组合递归非递归--排列组合扩展问题
一、字符串的排列用C++写一个函数, 如 Foo(const char *str), 打印出 str 的全排列,如 abc 的全排列: abc, acb, bca, dac, cab, cba一、全排列的递归实现为方便起见,用123来示例下。123的全排列有123、132、213、231、312、321这六种。首先考虑213和321这二个数是如何得出的。显然这二个都原创 2013-06-12 23:19:04 · 4302 阅读 · 0 评论 -
程序员面试题精选100题:1-5解题报告
程序员面试题精选100题(01)-把二元查找树转变成排序的双向链表[数据结构] 题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 比如将二元查找树 10原创 2013-06-22 10:30:18 · 1523 阅读 · 0 评论 -
程序员面试题精选100题:6-10解题报告
程序员面试题精选100题(06)-二元查找树的后序遍历结果[数据结构] 题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 8 / \ 6 10 / \ / \ 5原创 2013-06-22 22:07:39 · 1875 阅读 · 0 评论 -
链表有无环经典问题汇总
参考http://blog.youkuaiyun.com/vividonly/article/details/6673758转载 2013-10-19 22:26:11 · 779 阅读 · 1 评论