算法
玉涵
这个作者很懒,什么都没留下…
展开
-
判断整数序列是不是二元查找树的后序遍历结果
好久没更新了,发一道水题。题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。 如果是返回true,否则返回false。 例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 8 / \ 6 10 / \ / \ 5 7 9 11 因此返回tru原创 2013-12-31 22:02:52 · 892 阅读 · 0 评论 -
根据上排十个数,算出下排十个数
腾讯面试的一道逗比题。。。脑筋急转弯的货色,摆明了愚弄人。题目描述:给你10分钟时间,根据上排给出十个数,在其下排填出对应的十个数 要求下排每个数都是先前上排那十个数在下排出现的次数。 上排的十个数如下: 【0,1,2,3,4,5,6,7,8,9】举一个例子, 数值: 0,1,2,3,4,5,6,7,8,9 分配: 6,2,1,0,0原创 2013-12-24 22:09:03 · 719 阅读 · 0 评论 -
判断俩个链表是否相交
《编程之美》上的一道微软亚院题,判断两个两个链表是否相交,难度系数低。描述如下:给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交。 为了简化问题,我们假设俩个链表均不带环。 问题扩展: 1.如果链表可能有环列? 2.如果需要求出俩个链表相交的第一个节点列? 逻辑分析:1、先考虑不带环的链表,最直观的方法就是,遍历h2链表的每一个元素,是否原创 2013-12-25 20:41:40 · 1513 阅读 · 1 评论 -
另类求1+2+…+n
一道出题人闲的蛋疼的题目,单纯的语法技巧,难度系数不做判定。题目描述如下:题目:求1+2+…+n, 要求不能使用乘除法、for、while、if、else、switch、case 等关键字以及条件判断语句 (A?B:C)。 逻辑分析:1、我们都知道1到n的和,计算方法可按照等差数列n(n+1)/2计算得出,但是显然,这里禁用了乘除法,而一般的思路,如果采用加法运原创 2014-01-22 11:34:35 · 1127 阅读 · 0 评论 -
二叉树中节点的最大距离
微软面试题之一,难度系数中,题目描述如下:求二叉树中节点的最大距离... 如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的, 我们姑且定义"距离"为两节点之间边的个数。 写一个程序, 求一棵二叉树中相距最远的两个节点之间的距离。 逻辑分析:1、看到这道题的时候,很容易产生一种错觉,这题不就是求二叉树高度吗。。。显然,出题人不是小白,所以这里面一定有文原创 2014-01-21 19:46:38 · 8426 阅读 · 5 评论 -
寻找链表的倒数第k个节点
过年实在闲得无聊,还是撸几道算法,写写博文,打发打发时间。微软的面试题,难度系数低,描述如下:题目:输入一个单向链表,输出该链表中倒数第k 个结点。链表的倒数第0 个结点为链表的尾指针。 链表结点定义如下: struct ListNode { int m_nKey; ListNode* m_pNext; }; 逻辑分析:1、前几天和钧哥会原创 2014-02-01 21:51:37 · 888 阅读 · 0 评论 -
二叉树层序遍历
微软面试题,难度系数低,题目描述如下:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。 例如输入 8 / \ 6 10 / \ / \ 5 7 9 11 输出8 6 10 5 7 9 11。 逻辑分析:1、显然就是二叉树的层序原创 2014-02-06 11:44:16 · 3080 阅读 · 2 评论 -
输入一颗二元查找树,将该树转换为它的镜像
微软面试题,难度系数中下,题目描述如下:题目:输入一颗二元查找树,将该树转换为它的镜像, 即在转换后的二元查找树中,左子树的结点都大于右子树的结点。 用递归和循环两种方法完成树的镜像转换。 例如输入: 8 / \ 6 10 / \ / \ 5 7 9 11 输出:原创 2014-02-05 21:09:14 · 1401 阅读 · 0 评论 -
升序数组中查找两个数,使得它们的和正好是输入的那个数字
微软面试题,难度系数低,题目描述如下:题目:输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。 要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。 例如输入数组1、2、4、7、11、15 和数字15。由于4+11=15,因此输出4 和11。 逻辑分析:1、针对一个元素相对少的数组,第一想原创 2014-02-05 18:49:46 · 1724 阅读 · 0 评论 -
在一个字符串中找到第一个只出现一次的字符
Google 2006年的一道笔试题,难度系数低题目描述:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。逻辑分析:1、简单粗暴O(n^2),一个显而易见的想法是像冒泡排序一样,采用两个循环,内层循环对外层判定元素arr[i]进行轮询,当发现arr[i] == arr[j]时,本次循环终止,显然,时间复杂度O(n^2),不使用额外空间。原创 2014-05-26 08:03:26 · 6308 阅读 · 1 评论 -
约瑟夫环
微软面试题之一,难度系数中题目描述:题目:n 个数字(0,1,…,n-1)形成一个圆圈,从数字0 开始, 每次从这个圆圈中删除第m 个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。 当一个数字删除后,从被删除数字的下一个继续删除第m 个数字。 求出在这个圆圈中剩下的最后一个数字。逻辑分析:前言:赫赫有名的约瑟夫环,接触过算法的朋友想必耳熟能原创 2014-05-27 21:22:05 · 793 阅读 · 0 评论 -
在字符串中找出连续最长的数字串
微软面试题之一,难度系数低。题目描述如下:写一个函数,它的原形是int continumax(char *outputstr,char *intputstr) 功能: 在字符串中找出连续最长的数字串,并把这个串的长度返回, 并把这个最长数字串付给其中一个函数参数outputstr 所指内存。 例如:"abcd12345ed125ss123456789"的首地址传给intpu原创 2014-07-05 18:44:32 · 2441 阅读 · 0 评论 -
左旋转字符串
微软面试题之一,难度系数高。题目描述如下:定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。 如把字符串abcdef 左旋转2 位得到字符串cdefab。请实现字符串左旋转的函数。要求时间对长度为n 的字符串操作的复杂度为O(n),辅助内存为O(1)。逻辑分析:1、这是一道很经典,很精妙的算法题。而对于我来说,这一道题尤为深刻,原因在于这是大神Ju原创 2014-07-05 21:05:26 · 1020 阅读 · 0 评论 -
斐波那契数列
微软面试题之一,难度系数中。题目描述如下:定义Fibonacci 数列如下: / 0 n=0 f(n)= 1 n=1 \ f(n-1)+f(n-2) n=2 输入n,用最快的方法求该数列的第n 项。逻辑分析:1、经典的斐波那契数列,故事背景就不介绍了,不了解的看客,面壁之前,自行百度脑补。对于斐波那契数列问题,经常在各种语言书中,作为递归的例子,所以提起递归原创 2014-06-15 21:22:02 · 1456 阅读 · 0 评论 -
字符串转换成整数
微软面试题之一,难度系数低。题目描述如下:输入一个表示整数的字符串,把该字符串转换成整数并输出。 例如输入字符串"345",则输出整数345。 逻辑分析:1、对于面试者来说,遇到这种题,算是很幸运的,比起思维灵活度,本题更加注重基础,也就是说,代码的稳定性,健壮性一定要好。对C/C++比较熟悉的读者应该很快会想到一个函数:atoi,没错,标准库中的atoi就是将字符串转为整数的函数原创 2014-06-20 21:39:35 · 972 阅读 · 0 评论 -
输入两个整数n 和m,从数列1,2,3.......n 中随意取几个数, 使其和等于m ,要求将其中所有的可能组合列出来
中兴面试题之一,难度系数中。题目描述如下:输入两个整数n 和m,从数列1,2,3.......n 中随意取几个数,使其和等于m ,要求将其中所有的可能组合列出来。逻辑分析:1、比起微软,google,百度这些公司,中兴的面试题还是略显逗比的,并非是说难度上差异,而是中兴的题目总是显得不伦不类。本体其实就是考察数的组合,对于此类问题,通常手段都是递归,而我们的目标就在于找出递归式。原创 2014-06-21 15:43:42 · 3903 阅读 · 0 评论 -
二叉查找树转变成排序的双向链表
大三党忙于应付考试,很久没写也没看算法文章了,鉴于本人对算法兴趣浓厚,所以忙里偷闲,每天做几道精选的算法题。本题源于百度面试,难度不大,描述如下:题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14 / \ / \ 4原创 2013-12-19 20:58:32 · 693 阅读 · 0 评论 -
翻转句子中单词的顺序
微软面试题之一,难度系数低。题目描述:题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。 例如输入“I am a student.”,则输出“student. a am I”。 逻辑分析:因为之前看过July的《程序与编程艺术系列》,而第一篇刚好就是左旋字符串问题,这题和左旋字符串问原创 2014-01-08 18:41:10 · 761 阅读 · 0 评论 -
查找最小的K个元素
好吧,看到这道题的时候,我无节操的笑了。记着这学期刚开学的时候,小速问过我这道题,我就借这个机会,把当时所有的想法写出来。另外,csdn的july也曾经对此题写过巨幅文字,推荐大家欣赏k这道题也是实在太经典,google,microsoft等各大公司都曾经把它作为面试题,这道题的难度系数还是相对高一些的。首先,我们看题目描述:题目:输入n个整数,输出其中最小的k个。 例如输入1,2原创 2013-12-22 22:03:25 · 947 阅读 · 0 评论 -
在二元树中找出和为某一值的所有路径
微软的一道面试题,难度系数较低,题目描述如下:题目:输入一个整数和一棵二元树。 从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。 打印出和与输入整数相等的所有路径。 例如输入整数22 和如下二元树 10 / \ 5 12 / \ 4 7 则打印出两条路径:10, 12 和10, 5, 7。 二原创 2013-12-22 12:36:37 · 663 阅读 · 0 评论 -
程序员编程艺术:第三章续、Top K算法问题的实现
程序员编程艺术:第三章续、Top K算法问题的实现 作者:July,zhouzhenren,yansha。 致谢:微软100题实现组,狂想曲创作组。 时间:2011年05月08日 微博:http://weibo.com/julyweibo 。 出处:http://blog.csdn.net/v_JULY_v 。 wiki:http转载 2013-09-27 16:04:50 · 661 阅读 · 0 评论 -
程序员编程艺术:第一章、左旋转字符串
第一章、左旋转字符串作者:July,yansha。时间:二零一一年四月十四日。微博:http://weibo.com/julyweibo。出处:http://blog.csdn.net/v_JULY_v。-------------------------------------------前言第一节、左旋转字符串第二节、两个指针逐步翻转第三节转载 2013-09-18 15:03:23 · 989 阅读 · 0 评论 -
程序员编程艺术:第三章、寻找最小的k个数
程序员编程艺术:第三章、寻找最小的k个数作者:July。时间:二零一一年四月二十八日。致谢:litaoye, strugglever,yansha,luuillu,Sorehead,及狂想曲创作组。微博:http://weibo.com/julyweibo。出处:http://blog.csdn.net/v_JULY_v。--------------------------转载 2013-09-23 21:55:25 · 1146 阅读 · 1 评论 -
图的广度优先搜索
/// @file breadth_first_search.cpp/// @brief 广度优先搜索/// @copyright 玉涵 updated,2013/11/1#include #include #include #include #include #include "graphics.h"using namespace std;name原创 2013-11-01 14:57:03 · 551 阅读 · 0 评论 -
求子数组的最大和
微软面试题之一,难度系数适中,趣味性较浓。不得不说,这道题实在是太经典了,不仅仅是微软,google,各大公司,小公司都曾经用这道题做过面试。csdn的July曾在程序员编程艺术系列的第七篇单独剖析过这道题,博文也已经转载于我的博客,强烈建议各位大神赏阅,初学者拜读,必能受益匪浅。july大神虽然已经阐述的很是详尽,我这里也就简单的归纳一些,毕竟会有一些朋友时间仓促,没有精力阅读july的原创 2013-12-20 20:58:16 · 740 阅读 · 0 评论 -
设计包含min函数的栈
google面试题之一,难度系数也比较低,题目描述如下:定义栈的数据结构,要求添加一个min 函数,能够得到栈的最小元素。 要求函数min、push 以及pop 的时间复杂度都是O(1)。 逻辑分析:1、知道,栈是一种LIFO的数据结构,亦即last in first out,后进先出。2、既然需要添加一个辅助的min函数,而且要求时间复杂度是常数步数O(1),那么原创 2013-12-20 13:29:03 · 622 阅读 · 0 评论 -
程序员编程艺术:第九章、闲话链表追赶问题
程序员编程艺术:第九章、闲话链表追赶问题作者:July、狂想曲创作组。出处:http://blog.csdn.net/v_JULY_v 。前奏 有这样一个问题:在一条左右水平放置的直线轨道上任选两个点,放置两个机器人,请用如下指令系统为机器人设计控制程序,使这两个机器人能够在直线轨道上相遇。(注意两个机器人用你写的同一个程序来控制)。 指令系统:转载 2013-11-21 19:13:04 · 804 阅读 · 0 评论 -
程序员编程艺术:第八章、从头至尾漫谈虚函数
程序员编程艺术:第八章、从头至尾漫谈虚函数作者:July。出处:http://blog.csdn.net/v_JULY_v 。 前奏 有关虚函数的问题层出不穷,有关虚函数的文章千篇一律,那为何还要写这一篇有关虚函数的文章呢?看完本文后,相信能懂其意义之所在。同时,原狂想曲系列已经更名为程序员编程艺术系列,因为不再只专注于“面试”,而在“编程”之上了。ok,转载 2013-11-17 22:22:45 · 542 阅读 · 0 评论 -
程序员编程艺术:第七章、求连续子数组的最大和
程序员编程艺术:第七章、求连续子数组的最大和 作者:July。出处:http://blog.csdn.net/v_JULY_v 。前奏希望更多的人能和我一样,把本狂想曲系列中的任何一道面试题当做一道简单的编程题或一个实质性的问题来看待,在阅读本狂想曲系列的过程中,希望你能尽量暂时放下所有有关面试的一切包袱,潜心攻克每一道“编程题”,在解决编程题的过程中,好好享受编程转载 2013-11-17 16:53:19 · 745 阅读 · 0 评论 -
最小生成树-Kruskal算法
/// @file kruskal.cpp/// @brief Kruskal最小生成树/// @copyright 玉涵,updated 2013/11/13#include #include #include "graphics.h"#include "disjoint_set_forest.h"using namespace std;namesp原创 2013-11-13 21:03:48 · 644 阅读 · 0 评论 -
并查集的森林封装
采用了启发式策略,按秩合并和路径压缩技术。/// @file disjoint_set_forest.h/// @brief 并查集/// @copyright 玉涵,updated,2013/11/11#include #include using namespace std;namespace algo{ /// @brief 并查集原创 2013-11-12 21:28:26 · 507 阅读 · 0 评论 -
程序员编程艺术:第六章、求解500万以内的亲和数
第六章、亲和数问题--求解500万以内的亲和数作者:上善若水、July、yansha。出处:http://blog.csdn.net/v_JULY_v 。前奏 本章陆续开始,除了继续保持原有的字符串、数组等面试题之外,会有意识的间断性节选一些有关数字趣味小而巧的面试题目,重在突出思路的“巧”,和“妙”。本章亲和数问题之关键字,“500万”,“线性复杂度”。转载 2013-11-02 22:33:21 · 637 阅读 · 0 评论 -
图的深度优先搜索
/// @file depth_first_search.cpp/// @brief 深度优先搜索/// @copyright 玉涵 updated,2013/11/1#include #include #include #include "graphics.h"using namespace std;namespace algo{ vect原创 2013-11-02 21:30:35 · 623 阅读 · 0 评论 -
图的两种结构封装
/// @file graphics.h/// @brief 图的结构:邻接表法 | 邻接矩阵法/// @copyright 玉涵 updated,2013/10/28#pragma once#include #include using namespace std;namespace algo{ //图的类型:有向图 | 无向图enum Grap原创 2013-10-28 22:17:30 · 786 阅读 · 0 评论 -
程序员编程艺术:第四章、现场编写类似strstr/strcpy/strpbrk的函数
第四章、现场编写类似strstr/strcpy/strpbrk的函数 作者:July。 说明: 如果在博客中代码使用了\n,csdn blog系统将会自动回给我变成/n。据后续验证,可能是原来旧blog版本的bug,新版已不存在此问题。至于,本文代码,日后统一修正。July、2012.05.02。 微博:http://weibo.com/julywei转载 2013-09-28 17:06:33 · 736 阅读 · 0 评论 -
程序员编程艺术:第二章、字符串是否包含及匹配/查找/转换/拷贝问题
程序员编程艺术:第二章、字符串是否包含及匹配/查找/转换/拷贝问题作者:July,yansha。时间:二零一一年四月二十三日。致谢:老梦,nossiac,Hession,Oliver,luuillu,啊菜,雨翔,及微软100题实现小组所有成员。微博:http://weibo.com/julyweibo。出处:http://blog.csdn.net/v_JULY_v。-转载 2013-09-23 13:50:47 · 1351 阅读 · 0 评论 -
一步一图一代码,一定要让你真正彻底明白红黑树
一步一图一代码,一定要让你真正彻底明白红黑树 作者:July 二零一一年一月九日-----------------------------本文参考:I、 The Art of Computer Programming Volume III、 Introduction to Algorithms, Second EditionIII、The Annota转载 2015-01-22 21:55:21 · 676 阅读 · 0 评论