自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 【从零单排之微软面试100题系列】20之把字符串转换成整数

原题参见july大神博客系列【微软面试100题】题目描述:输入一个表示整数的字符串,把该字符串转换成整数(int)并输出。分析思路:(本题亦见于《剑指offer》面试题49)核心部分的代码其实就是 num = num*10 + flag * (*str - '0');但是本题还需要考虑到各种输入情况,比如正负号、空指针、空字符串以及溢出等方方面面。因此要尽量周到和完

2015-07-22 11:08:10 275

原创 【从零单排之微软面试100题系列】19之Fibonacci数列

原题参见july大神博客系列【微软面试100题】题目描述:用尽量快的方法求解Fibonacci数列第n项。分析思路:(本题亦见于《剑指offer》面试题9)显然适用递归的方法会比较慢,也不是面试官的考点,那就从迭代的思路考虑。long long Fibonacci(unsigned int n){ int result[2] = {0,1}; if(n<2)

2015-07-22 10:07:13 272

原创 【从零单排之微软面试100题系列】18之约瑟夫环问题

原题参见july大神博客系列【微软面试100题】题目描述:n个数字(0到n-1)排成一个圆圈,从0开始每次删除第m个数字。求剩下的最后一个数字。分析思路:(本题亦见于《剑指offer》面试题45)假设第一个删掉是元素k(其中k = (m-1)%n),那么下一轮将从剩下的n-1个元素删掉从元素k+1开始的第m个元素。若将元素k+1看成是第0个元素。则存在映射:k+1

2015-07-22 08:37:14 414

原创 【从零单排之微软面试100题系列】17之找到只出现一次的字符

原题参见july大神博客系列【微软面试100题】题目描述:在一个字符串中找到第一个只出现一次的字符。分析思路:(本题亦见于《剑指offer》面试题35)定义一个长度为256的数组,其中存放的是ASCII码为数组下表的字符的出现次数。这样需要遍历两次字符串,第一次遍历是更新数组,第二次遍历是找到第一个只出现一次的字符。其时间复杂度为O(n),空间复杂度为O(1)。参考代码

2015-07-22 08:08:01 335

原创 【从零单排之微软面试100题系列】16之打印二叉树

原题参见july大神博客系列【微软面试100题】题目描述:输入一个二叉树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。分析思路:其实就是二叉树的层序遍历,二叉树的层序遍历就是使用队列,先将根结点入队,然后作以下循环直到队列为空:第一个结点出队列并打印,将当前结点的左右孩子入队(如果有的话)。代码如下:void PrintBinaryTree(Nod

2015-07-22 07:45:58 282

原创 【从零单排之微软面试100题系列】15之二叉树的镜像

原题参见july大神博客系列【微软面试100题】题目描述:输入一个二叉树,输出其镜像。分析思路:(本题亦见于《剑指offer》面试题19)先前序遍历树的每个结点,如果其有子结点,就交换之。当交换完所有非叶子结点的左右子结点后,就得到了镜像代码如下:void MirrorRecursively(TreeNode* pNode){ if(pNode == NUL

2015-07-20 09:57:58 237

原创 【从零单排之微软面试100题系列】14之数组中和为s的两个数字

原题参见july大神博客系列【微软面试100题】题目描述:输入一个升序排列的数组和一个数字s,在数组查找两个数字使其和等于输入的数字s。如果有多对数字,输出任意一对即可。分析思路:(本题亦见于《剑指offer》面试题41)使用两个指针,一个从前往后遍历,一个从后往前遍历。由于数组是已经按升序排好的,那么当front指向的元素与tail指向元素之和小于s时,front指针

2015-07-20 09:57:16 338

原创 【从零单排之微软面试100题系列】13之输出链表倒数第k个结点

原题参见july大神博客系列【微软面试100题】题目描述:输入一个单向链表,输出该链表中倒数第k个结点,倒数第0个结点为链表的尾指针。链表结点定义如下:struct ListNode{ int m_nkey; ListNode* m_pNext;};分析思路:(本题亦见于《剑指offer》面试题15)一种方法是先遍历链表,得出链表长度n,再重新遍历,输出第n-k

2015-07-20 09:31:49 285

原创 【从零单排之微软面试100题系列】12之求1+2+3+…+n

原题参见july大神博客系列【微软面试100题】题目描述:求1+2+3+…+n,不能使用乘除法,for、if、while、switch、case等关键字以及条件判断 A?B:C 分析思路:(本题亦见于《剑指offer》面试题46)算是发散性思维的一道题,书中给出了4总解法解法1:利用构造函数和静态数据成员。class Temp{ public: Temp

2015-07-18 10:07:40 436

原创 【从零单排之微软面试100题系列】11之二叉树中结点的最大距离

原题参见july大神博客系列【微软面试100题】题目描述:求一棵二叉树中相距最远的两个节点之间距离,“距离”定义为两个结点间“边”的个数 分析思路:最大距离可能是从根结点到某一叶子结点,也可能是从一个叶子结点到另一个叶子结点。对于前者,树的高度就是最大距离,对于后者,找到这两个结点的第一个公共祖先结点,最大距离即为祖先结点的左右子树高度之和。在实现的时候,取左子树的最远距离

2015-07-18 08:24:03 393

原创 【从零单排之微软面试100题系列】10之翻转单词顺序

本题目选自July大神博客系列【微软面试100题】:july大神,该系列我主要用来记录我的学习笔记。题目描述:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。标点符号和普通字母一样处理。单词之间以空格隔开。 分析思路:(本题亦见于《剑指offer》面试题42)先将整个句子翻转,此时句子中的单词也被翻转了,然后再将每个单词中的字符顺序进行翻转。参考代码:

2015-07-12 09:44:20 382

原创 【从零单排之微软面试100题系列】09二叉查找树的后序遍历

本题目选自July大神博客系列【微软面试100题】:july大神,该系列我主要用来记录我的学习笔记。题目描述:输入1个整数数组,判断该数组是不是某二元查找树的后序遍历结果。数组保证任意两个数组均不相同。分析思路:(本题亦见于《剑指offer》面试题24)后序遍历的结果当中,最后一个树必然是根结点。由于又是二叉查找树,必然前k个元素全部小于根结点,位置k后面的元素全部大于根结

2015-07-12 09:42:54 356

原创 【从零单排之微软面试100题系列】08之反转链表

本题目选自July大神博客系列【微软面试100题】:july大神,该系列我主要用来记录我的学习笔记。题目描述:使用递归和不递归两种方法反转链表。()(本题亦见于《剑指offer》面试题16)递归方法:Node *Reverse(Node* pHead){ if(pHead == NULL || pHead->next == NULL) retu

2015-07-12 07:52:05 425

原创 【从零单排之微软面试100题系列】07之判断两个链表是否相交

本题目选自July大神博客系列【微软面试100题】:july大神,该系列我主要用来记录我的学习笔记。题目描述:给出两个单向链表的头指针,判断两个链表是否相交。 分析思路:如果只要判断是否相交,那么将每个链表遍历到表尾,看两个链表的表尾是不是同一个结点。因为相交的链表,最后一个结点肯定是公共的。bool is_jointed1(Node* h1, Node* h2){

2015-07-06 22:24:11 309

原创 【从零单排之微软面试100题系列】06之根据上排数写出下排数

本题目选自July大神博客系列【微软面试100题】:july大神,该系列我主要用来记录我的学习笔记。题目描述:根据给出的上排的十个数,在其下排填出对应的十个数,要求下排每个数都是先前上排那十个数在下排出现的次数。例如给出上排【0,1,2,3,4,5,6,7,8,9】那么对应下排【6,2,1,0,0,0,1,0,0,0】分析思路:一道无聊的智力题,据说是TX的面试题。

2015-07-06 21:42:52 462

原创 【从零单排之微软面试100题系列】05之查找最小的k个元素

本题目选自July大神博客系列【微软面试100题】:july大神,该系列我主要用来记录我的学习笔记。题目描述:输入n个整数,输出其中最小的k个(k 分析思路:(本题亦见于《剑指offer》面试题30)最简单的思路莫过于先排序,然后输出排序后的前k个数。如果使用快排,时间复杂度是O(nlogn)除此之外,还有其它解法。解法1:基于数组的第k个数字来调整,使比第k个数字小的

2015-07-06 19:53:42 423

原创 【从零单排之微软面试100题系列】04之二叉树中和为某一值的路径

本题目选自July大神博客系列【微软面试100题】:july大神,该系列我主要用来记录我的学习笔记。题目描述:输入一课二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为:从根结点到叶结点的所有结点,即总是以根结点为起点,叶结点为终点。二叉树结点定义:struct BinaryTreeNode{ int

2015-07-06 19:17:51 320

原创 【从零单排之微软面试100题系列】03之求子数组的最大和

本题目选自July大神博客系列【微软面试100题】:july大神,该系列我主要用来记录我的学习笔记。题目描述:输入一个整形数组,数组里有正也有负。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。要求:求所有子数组的和的最大值,时间复杂度为O(n)分析思路;(本题也见于《剑指offer》的面试题31)从头到尾逐个累加数组中的每个数字,初始化和为0。当累加到

2015-07-06 17:32:21 371

原创 【从零单排之微软面试100题系列】02之包含 min 函数的栈

本题目选自July大神博客系列【微软面试100题】:july大神,该系列我主要用来记录我的学习笔记。题目描述:设计包含 min 函数的栈要求:定义栈的数据结构,添加一个min函数,能够得到栈的最小元素,要求函数min、push及pop时间复杂度都是O(1)分析思路:(本题也见于《剑指offer》的面试题21)本题要注意, 如果仅仅是靠增加一个成员变量来保存最小元素的

2015-07-06 10:44:14 342

原创 【从零单排之微软面试100题系列】01之二叉查找树与双向链表

本题目选自July大神博客系列【微软面试100题】:july大神,该系列我主要用来记录我的学习笔记。题目描述:把二元查找数转变成排序的双向链表要求:输入一棵二元查找树,不能创建任何新的节点,只调整指针的指向分析思路:(本题也见于《剑指offer》的面试题27.)由于二元查找树左子树全部小于根结点,右子树全部大于根结点,可以采用中序遍历。这样遍历得到的双向链表就是

2015-07-06 10:26:58 340

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除