
算法面试100题
EverydayIsLife
这个作者很懒,什么都没留下…
展开
-
算法面试100题——1、把二元查找树转变成排序的双向链表
题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。10 / \ 6 14 / \ / \ 4 8 12 16转换成双向链表 4=6=8=10=12=14=16。首先我们定义的二元查找树 节点的数据结构如下: struct BSTreeNode { int m_nValue; // value of n原创 2017-09-04 10:00:56 · 429 阅读 · 0 评论 -
算法面试100题——7.微软亚院之编程判断俩个链表是否相交
1、题目:给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交。 为了简化问题,我们假设俩个链表均不带环。 2、知识点:链表、排序 3、思路:将指向结点的指针排序,排序后判断指针是否相交。排序复杂度为O(NlogN),判断相交的复杂度为O(M+N)。/*用途: **说明: **算法:复制结点指针,排序 *///#define LOCAL #include <cstdio> #in原创 2017-09-04 10:26:47 · 339 阅读 · 0 评论 -
算法面试100题——8.逻辑思维题
1、题目:有两个房间,一间房里有三盏灯,另一间房有控制着三盏灯的三个开关,这两个房间是 分割开的, 从一间里不能看到另一间的情况。 现在要求受训者分别进这两房间一次,然后判断出这三盏灯分别是由哪个开关控制的。 有什么办法呢? 2、思路:我的办法是,先打开第一个开关,一段时间后把它关掉,在打开第二个开关,那么第二个房间里灯泡有点热的那盏灯对应第一个开关,正点亮的那盏灯对应第二个开关,剩下的那盏原创 2017-09-04 10:33:40 · 6253 阅读 · 0 评论 -
算法面试100题——2.设计包含min函数的栈
1、题目:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。/*用途: **说明:mstack.h头文件 **算法: */#ifndef MSTACK_H #define MSTACK_H#include <cstdio> #include <limits.h> using namespace std; #define MAX原创 2017-09-04 10:06:37 · 410 阅读 · 0 评论 -
算法面试100题——4.在二元树中找出和为某一值的所有路径
1、题目:输入一个整数和一棵二元树。 从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。 打印出和与输入整数相等的所有路径。 例如 输入整数22和如下二元树 10 / \ 5 12 / \ 4 7 则打印出两条路径:10, 12和10, 5, 7。二元树节点的数据结构定义为:struct BinaryTreeNode // a node in t原创 2017-09-04 10:13:34 · 381 阅读 · 0 评论