06 2017 档案
摘要:根据中序遍历和后序遍历树构造二叉树 注意事项 你可以假设树中不存在相同数值的节点 您在真实的面试中是否遇到过这个题? Yes 根据中序遍历和后序遍历树构造二叉树 注意事项 你可以假设树中不存在相同数值的节点 根据中序遍历和后序遍历树构造二叉树 注意事项 你可以假设树中不存在相同数值的节点 你可以假设
阅读全文
摘要:根据前序遍历和中序遍历树构造二叉树. 注意事项 你可以假设树中不存在相同数值的节点 您在真实的面试中是否遇到过这个题? Yes 根据前序遍历和中序遍历树构造二叉树. 注意事项 你可以假设树中不存在相同数值的节点 根据前序遍历和中序遍历树构造二叉树. 注意事项 你可以假设树中不存在相同数值的节点 你可
阅读全文
摘要:给定一棵二叉树,找到两个节点的最近公共父节点(LCA)。 最近公共祖先是两个节点的公共的祖先节点且具有最大深度。 注意事项 假设给出的两个节点都在树中存在 您在真实的面试中是否遇到过这个题? Yes 给定一棵二叉树,找到两个节点的最近公共父节点(LCA)。 最近公共祖先是两个节点的公共的祖先节点且具
阅读全文
摘要:哎,没有接到笔试通知,不知道为啥就错过了。 之后见到题目,前两道编程题。其实都见过类似的题目,有点思路,但是直接快速完整实现出来,水平还是达不到。 这样的题目,也不算难,三道编程题至少AC两道才算可以。但是自己还是写代码写的少,需要多练习,增加熟练度。 第一道题,统计一个字符串中,出现的字母字符串,
阅读全文
摘要:给定一个二叉树,判断它是否是合法的二叉查找树(BST) 一棵BST定义为: 节点的左子树中的值要严格小于该节点的值。 节点的右子树中的值要严格大于该节点的值。 左右子树也必须是二叉查找树。 一个节点的树也是二叉查找树。 您在真实的面试中是否遇到过这个题? Yes 给定一个二叉树,判断它是否是合法的二
阅读全文
摘要:给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的距离。 您在真实的面试中是否遇到过这个题? Yes 样例 给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5 这个二叉树的最大深度为3. 思路:与二叉树最小深度思路一样,一次AC; 这种容易题目要很熟练,主要是思路要清晰。
阅读全文
摘要:给定一个二叉树,找出其最小深度。 二叉树的最小深度为根节点到最近叶子节点的距离。 您在真实的面试中是否遇到过这个题? Yes 样例 给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5 这个二叉树的最小深度为 2 思路:本来是很简单的一道题目,使用递归方法很容易求解,思路也清晰,但很久没AC。
阅读全文
摘要:对于一棵 最大线段树, 每个节点包含一个额外的 max 属性,用于存储该节点所代表区间的最大值。 设计一个 modify 的方法,接受三个参数 root、 index 和 value。该方法将 root 为跟的线段树中 [start, end] = [index, index] 的节点修改为了新的
阅读全文
摘要:线段树是一棵二叉树,他的每个节点包含了两个额外的属性start和end用于表示该节点所代表的区间。start和end都是整数,并按照如下的方式赋值: 根节点的 start 和 end 由 build 方法所给出。 对于节点 A 的左儿子,有 start=A.left, end=(A.left + A
阅读全文
摘要:对于一个有n个数的整数数组,在对应的线段树中, 根节点所代表的区间为0-n-1, 每个节点有一个额外的属性max,值为该节点所代表的数组区间start到end内的最大值。 为SegmentTree设计一个 query 的方法,接受3个参数root, start和end,线段树root所代表的数组中子
阅读全文
摘要:对于一个数组,我们可以对其建立一棵 线段树, 每个结点存储一个额外的值 count 来代表这个结点所指代的数组区间内的元素个数. (数组中并不一定每个位置上都有元素) 实现一个 query 的方法,该方法接受三个参数 root, start 和 end, 分别代表线段树的根节点和需要查询的区间,找到
阅读全文
摘要:转自:http://blog.csdn.net/metalseed/article/details/8039326 一:线段树基本概念 1:概述 线段树,类似区间树,是一个完全二叉树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问题,由于二叉结构的特性,它基本能
阅读全文
摘要:一、线段树的定义 线段树,又名区间树,是一种二叉搜索树。 那么问题来了,啥是二叉搜索树呢? 对于一棵二叉树,若满足: ①它的左子树不空,则左子树上所有结点的值均小于它的根结点的值 ②若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值 ③它的左、右子树也分别为二叉搜索树 那么这就是一棵二叉搜
阅读全文
摘要:转自:http://blog.csdn.net/liujian20150808/article/details/51137749 1.线段树的定义: 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。 对于线段树中的每一个非叶子节点[a,b]
阅读全文
摘要:线段树基本概念 1:概述 线段树,类似区间树,是一个完全二叉树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问题,由于二叉结构的特性,它基本能保持每个操作的复杂度为O(lgN)! 性质:父亲的区间是[a,b],(c=(a+b)/2)左儿子的区间是[a,c],右儿
阅读全文
摘要:深度复制一个二叉树。 给定一个二叉树,返回一个他的 克隆品 。 您在真实的面试中是否遇到过这个题? Yes 深度复制一个二叉树。 给定一个二叉树,返回一个他的 克隆品 。 深度复制一个二叉树。 给定一个二叉树,返回一个他的 克隆品 。 您在真实的面试中是否遇到过这个题? Yes Yes Yes 样例
阅读全文
摘要:给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。 注意事项 There may exist multiple valid solutions, return any of them. 您在真实的面试中是否遇到过这个题? Yes 给一个排序数组(从小到大),将其转换为一棵高度最小的排序
阅读全文
摘要:有两个不同大小的二进制树: T1 有上百万的节点; T2 有好几百的节点。请设计一种算法,判定T2 是否为 T1的子树。 注意事项 若 T1 中存在从节点 n 开始的子树与 T2 相同,我们称 T2 是 T1 的子树。也就是说,如果在 T1 节点 n 处将树砍断,砍断的部分将与 T2 完全相同。 您
阅读全文
摘要:翻转一棵二叉树 您在真实的面试中是否遇到过这个题? Yes 翻转一棵二叉树 翻转一棵二叉树 您在真实的面试中是否遇到过这个题? Yes Yes Yes 样例 1 1 / \ / \ 2 3 => 3 2 / \ 4 4思路:依旧采用递归的思路,判断特殊条件后,先交换根节点的左右孩子,然后再对其左右子
阅读全文
摘要:将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针。 注意事项 不要忘记将左儿子标记为 null,否则你可能会得到空间溢出或是时间溢出。 您在真实的面试中是否遇到过这个题? Yes 将一棵二叉树按照前序遍历拆解成为一个假链表。所
阅读全文
摘要:检查两棵二叉树是否等价。等价的意思是说,首先两棵二叉树必须拥有相同的结构,并且每个对应位置上的节点上的数都相等。 您在真实的面试中是否遇到过这个题? Yes 检查两棵二叉树是否等价。等价的意思是说,首先两棵二叉树必须拥有相同的结构,并且每个对应位置上的节点上的数都相等。 检查两棵二叉树是否等价。等价
阅读全文
摘要:给一棵二叉树,找出从根节点到叶子节点的所有路径。 您在真实的面试中是否遇到过这个题? Yes 给一棵二叉树,找出从根节点到叶子节点的所有路径。 给一棵二叉树,找出从根节点到叶子节点的所有路径。 您在真实的面试中是否遇到过这个题? Yes Yes Yes 样例 给出下面这棵二叉树: 1 / \ 2 3
阅读全文
摘要:在二叉树中寻找值最大的节点并返回。 您在真实的面试中是否遇到过这个题? Yes 在二叉树中寻找值最大的节点并返回。 在二叉树中寻找值最大的节点并返回。 您在真实的面试中是否遇到过这个题? Yes Yes Yes 样例 给出如下一棵二叉树: 1 / \ -5 2 / \ / \ 0 3 -4 -5 返
阅读全文
摘要:Given a Binary Search Tree (BST), convert it to a Greater Tree such that every key of the original BST is changed to the original key plus sum of all
阅读全文
摘要:给定一个二叉树,找出所有路径中各节点相加总和等于给定 目标值 的路径。 一个有效的路径,指的是从根节点到叶节点的路径。 您在真实的面试中是否遇到过这个题? Yes 给定一个二叉树,找出所有路径中各节点相加总和等于给定 目标值 的路径。 一个有效的路径,指的是从根节点到叶节点的路径。 给定一个二叉树,
阅读全文
摘要:在操作系统中存在多种调度算法,其中有的调度算法适用于作业调度,有的调度算法适用于进程调度,有的调度算法两者都适用。下面介绍几种常用的调度算法。 一、先来先服务(FCFS)调度算法 FCFS调度算法是一种最简单的调度算法,该调度算法既可以用于作业调度也可以用于进程调度。 在作业调度中,算法每次从后备作
阅读全文
摘要:引子1 猜猜看,下面这段代码有什么问题: 答案: 本来代码完全正常,但是为了优化性能,打开了编译器的优化。但是发现这个函数被编译器优化掉了。为了防止被优化掉,需要给函数的参数加上volatile: 引子2 再猜猜看,《程序员面试宝典》这段代码有什么问题: 答案: 由于*ptr指向一个volatile
阅读全文
摘要:C++ 类型转换(C风格的强制转换): 在C++基本的数据类型中,可以分为四类:整型,浮点型,字符型,布尔型。其中数值型包括 整型与浮点型;字符型即为char。 (1)将浮点型数据赋值给整型变量时,舍弃其小数部分。 (2)将整型数据赋值给浮点型变量时,数值不变,但是以指数形式存储。 (3)将doub
阅读全文
摘要:题目:求一个字符串中连续出现的次数最多的子串。 例如,字符串“abababc”,最多连续出现的为ab,连续出现三次。 思路: 例如字符串“abababc”,最多连续出现的为ab,连续出现三次。要和求一个字符串中的最长重复子串区分开来,还是上面的字符串,那么最长的重复子串为abab。 两个题目的解法有
阅读全文
摘要:Pair类型概述 pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同,基本的定义如下: pair<int, string> a; 表示a中有两个类型,第一个元素是int型的,第二个元素是string类型的,如果创建pair的时候没有对其进行初始化,则调用默认构造函数对其初始化。 pa
阅读全文
摘要:1. 用两个栈实现一个队列的功能(C++实现) 思路: 第一步,入队:用一个栈的push操作实现,将入队值压入一个栈中(栈一) 第二步,出队:在另一个栈中进行出栈操作(栈二):若栈二非空,直接从栈二中pop出即可 若栈二为空,则将栈一中的所有元素pop出来,一次push进栈二中,然后从栈二中pop出
阅读全文
摘要:进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。 IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。 一、管道 管
阅读全文
摘要:#include #include DWORD WINAPI Fun1Proc(LPVOID lpParameter);//thread data DWORD WINAPI Fun2Proc(LPVOID lpParameter);//thread data int index=0; int tickets=10; HANDLE hMutex; void main() { HAN...
阅读全文
摘要:从网上看到一篇总结的很不错的sklearn使用文档,备份勿忘。 引言 对于一些开始搞机器学习算法有害怕下手的小朋友,该如何快速入门,这让人挺挣扎的。 在从事数据科学的人中,最常用的工具就是R和Python了,每个工具都有其利弊,但是Python在各方面都相对胜出一些,这是因为scikit-learn
阅读全文
摘要:注意这里的C调用C++或者C++调用C意思是.c文件中调用.cpp文件中代码,或者相反。 C++和C是两种完全不同的编译链接处理方式,如果直接在C++里面调用C函数,会找不到函数体,报链接错误。 要解决这个问题,就要在 C++文件里面显示声明一下哪些函数是C写的,要用C的方式来处理。 1.引用头文件
阅读全文
摘要:1. memset 需要的头文件 在C中 <string.h> 在C++中 <cstring> 原型: 用法: memset是计算机中C/C++语言函数。将s所指向的某一块内存中的前n个字节的内容全部设置为ch指定的ascii值, 第一个值为指定的内存地址,块的大小由第三个参数指定,这个函数通常为新
阅读全文
摘要:assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义: assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单badpt
阅读全文
摘要:转自:http://www.cnblogs.com/cobbliu/archive/2012/08/25/2656176.html atoi 和 itoa是面试笔试经常要考到的题目,下面两份代码是用C语言实现的atoi和itoa: 1, atoi (将字符串转换为数字) 原型: int atoi(c
阅读全文
摘要:1. 最短作业优先: 最短作业优先(SJF)是一种调度任务请求的调度策略。每个任务请求包含有请求时间(即向系统提交的请求的时间)和持续时间(即完成任务所需时间)。 当前任务完成后,SJF策略会选择最短持续时间执行任务,若最短持续时间相同,则选择最早请求时间的任务。任务等待时间为请求时间和实际开始时间
阅读全文
摘要:TCP(Transmission Control Protocol) 传输控制协议 TCP:面向连接的,可靠的,基于字节流的传输层通信协议 TCP(传输层)位于IP层(网络层)之上,应用层之下,不同的主机之间需要可靠的连接,但IP层不提供这样的流机制,而是提供不可靠的包交换。 在可靠性上:采用超时重
阅读全文
摘要:(一)TCP/UDP,SOCKET,HTTP,FTP简析 TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层: 网络层:IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议 传输层:TCP协议与UDP协议 应用层:FTP、HTTP、TELNET、SMTP、DNS等协议 (二)
阅读全文
摘要:1、计算机的网络模型分为两种OSI模型和TCP/IP模型,它们的对应关系如下: 2、针对OSI模型,每一层都有各自的功能。 应用层 应用层是OSI模型中最靠近用户的一层,负责为用户的应用程序提供网络服务 。包括为相互通信的应用程序或进程之间建立连接,进行同步建立关于错误纠正和控制。同时还包含大量的应
阅读全文
摘要:转自:http://www.cnblogs.com/malecrab/p/5572119.html 1. 数据成员指针 对于普通指针变量来说,其值是它所指向的地址,0表示空指针。 而对于数据成员指针变量来说,其值是数据成员所在地址相对于对象起始地址的偏移值,空指针用-1表示。例: 代码示例: str
阅读全文
摘要:实现原理:虚函数表+虚表指针 关键字:虚函数底层实现机制;虚函数表;虚表指针 编译器处理虚函数的方法是:为每个类对象添加一个隐藏成员,隐藏成员中保存了一个指向函数地址数组的指针,称为虚表指针(vptr),这种数组成为虚函数表(virtual function table, vtbl),即,每个类使用
阅读全文
摘要:C++多态方式: (1)静态多态(重载,模板) 是在编译的时候,就确定调用函数的类型。 (2)动态多态(覆盖,虚函数实现) 在运行的时候,才确定调用的是哪个函数,动态绑定。运行基类指针指向派生类的对象,并调用派生类的函数。 虚函数实现原理:虚函数表和虚函数指针。 纯虚函数: virtual int
阅读全文