2014年11月24日

第七十九题合集 【微软面试100题 第七十九题】

摘要: 题目要求: 问题1:编写实现链表排序的一种算法。 问题2:编写实现数组排序的一种算法。 问题3:编写能直接实现strstr()功能的代码。问题分析: 问题1分析: 方法1 首先想到的是冒泡排序,因为简单; 方法2 如果内存空间允许,可以通过一个数组来辅助排序,时间复杂度O(Nlo... 阅读全文

posted @ 2014-11-24 16:15 tractorman 阅读(1165) 评论(4) 推荐(2) 编辑

链表和数组的区别在哪里 【微软面试100题 第七十八题】

摘要: 题目要求: 链表和数组的区别在哪里?题目分析: 数组静态分配内存,链表动态分配内存; 数组预先定义长度,链表预先无需管理长度; 数组在内存中连续,链表可能连续; 数组元素在栈区,链表元素在堆区; 数组利用下标定位,时间复杂度为O(1),链表定位元素时间复杂度O(n); 数组插入或删... 阅读全文

posted @ 2014-11-24 14:48 tractorman 阅读(321) 评论(0) 推荐(0) 编辑

2014年11月23日

关于链表问题的面试题目 【微软面试100题 第七十七题】

摘要: 题目要求: 1.给定一个单链表,检测是否有环; 2.判断两个无环单链表是否有交点; 3.给定两个单链表,检测两个链表是否有交点; 4.给定单链表,如果有环的话请返回从头结点进入环的第一个结点; 5.只给定单链表中某个结点p(并非最后一个结点,即p->next!=NULL)指针,删除该结点;... 阅读全文

posted @ 2014-11-23 16:43 tractorman 阅读(1102) 评论(1) 推荐(0) 编辑

【转】快速成为优秀程序员的十个有效方法

摘要: 文章转载自:爱思资源网http://www.aseoe.com/show-63-426-1.html如何快速成为一个优秀的程序员?优秀的程序员是在穿过一条单行道的时候还会往两边看的人。 作为一个IT行业的软件程序员,每天驱使我们日复一日的辛勤工作的,是来自我们对编程的兴趣和激情。但是要让编程变得始... 阅读全文

posted @ 2014-11-23 15:26 tractorman 阅读(176) 评论(0) 推荐(0) 编辑

复杂链表的复制 【微软面试100题 第七十六题】

摘要: 题目要求: 一个复杂链表,其结点除了有一个m_pNext指针指向想一个结点外,还有一个m_pSibling指向链表中的任一结点或NULL,其结点的C++定义为: typedef struct ComplexNode{ int m_nValue; ComplexNode *m_pNext... 阅读全文

posted @ 2014-11-23 14:20 tractorman 阅读(201) 评论(0) 推荐(0) 编辑

二叉树两个结点的最低公共父结点 【微软面试100题 第七十五题】

摘要: 题目要求: 输入二叉树中的两个结点,输出这两个及诶单在数中最低的共同父结点。题目分析: 还有一种情况:如果输入的两个结点中有一个或两个结点不在二叉树中,则输出没有共同父结点; 因此,可以在程序中定义一个flag=0,找到一个点之后flag就加1,最后判断的时候,如果flag=2,则说明在二叉树... 阅读全文

posted @ 2014-11-23 13:39 tractorman 阅读(185) 评论(0) 推荐(0) 编辑

数组中超过出现次数一半的数字 【微软面试100题 第七十四题】

摘要: 问题要求: 数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字。 参考资料:编程之美2.3 寻找发帖水王问题分析: 方法1 对数组排序,然后顺次查找其中最多的; 方法2 对数组排序,最中间一个肯定为要找的数字,时间复杂度O(NlogN); 方法3 每次消去数组中两个不同的数,最后... 阅读全文

posted @ 2014-11-23 09:23 tractorman 阅读(926) 评论(3) 推荐(0) 编辑

2014年11月22日

对称字符串的最大长度 【微软面试100题 第七十三题】

摘要: 题目要求: 输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串"google",由于该字符串里最长的对称子字符串"goog",因此输出4.题目分析: 代码实现: #include int LongestPalindrome(const char *s, int n);int... 阅读全文

posted @ 2014-11-22 23:16 tractorman 阅读(223) 评论(0) 推荐(0) 编辑

Singleton模式类 【微软面试100题 第七十二题】

摘要: 题目要求: 实现C++单例模式,即只能生成一个实例的类。题目分析: 1.一般情况:用构造函数私有化和静态函数实现。 2.如果考虑内存泄露:用智能指针+一般情况方法。 3.如果考虑线程安全:加锁。代码实现: //一般情况#include #include #include using nam... 阅读全文

posted @ 2014-11-22 23:04 tractorman 阅读(169) 评论(0) 推荐(0) 编辑

【转】PC-Lint的使用方法

摘要: PC-Lint是一款C/C++软件代码静态分析工具,不仅可以检查一般的语法错误,还可以检查潜在的错误,比如数组访问越界、内存泄漏、使用未初始化变量、使用空指针等。在单元测试前使用PC-Lint来检查代码,可以提前发现程序中的潜在的错误,提高代码的质量。本文主要从两个方面介绍PC-lint,第一部分是... 阅读全文

posted @ 2014-11-22 22:49 tractorman 阅读(857) 评论(0) 推荐(0) 编辑

数值的整数次方 【微软面试100题 第七十一题】

摘要: 题目要求: 实现函数double Power(double base,int exponent),求base的exponent次方。 不得使用库函数,不需要考虑溢出。 参考资料:剑指offer第11题。题目分析: 考虑情况: 1.底数为0,指数为非负; 2.底数为0,指数为负; ... 阅读全文

posted @ 2014-11-22 22:43 tractorman 阅读(208) 评论(0) 推荐(0) 编辑

2014年11月18日

旋转数组中的最小元素 【微软面试100题 第六十九题】

摘要: 题目要求: 把一个不降序数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1。 参考资料:剑指offer第8题。题目分析: 情况1... 阅读全文

posted @ 2014-11-18 16:37 tractorman 阅读(216) 评论(0) 推荐(0) 编辑

把数组排成最小的数 【微软面试100题 第六十八题】

摘要: 题目要求: 输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。 例如输入数组{32,321},则输出这两个能排成的最小数字32132. 请给出解决问题的算法,并证明该算法。 参考资料:剑指offer第33题。 链接:http://zhedahht.blog.1... 阅读全文

posted @ 2014-11-18 15:37 tractorman 阅读(334) 评论(0) 推荐(0) 编辑

两个闲玩娱乐 【微软面试100题 第六十七题】

摘要: 题目要求: 1.扑克牌的顺子 从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2-10为数字本身,A为1,J为11,Q为12,K为13,而大小王可以看成任意数字。 参考资料:剑指offer第44题。 2.骰子游戏 n个骰子的点数。把n个骰子扔在地上,所有骰子... 阅读全文

posted @ 2014-11-18 10:29 tractorman 阅读(214) 评论(0) 推荐(0) 编辑

颠倒栈 【微软面试100题 第六十六题】

摘要: 题目要求: 用递归颠倒一个栈。 例如输入栈{1,2,3,4,5},1在栈顶。颠倒之后的栈为{5,4,3,2,1},5处在栈顶。题目分析: 令函数申明为:void ReverseStack(stack oldStack);代码实现:#include #include using namespac... 阅读全文

posted @ 2014-11-18 09:51 tractorman 阅读(175) 评论(0) 推荐(0) 编辑

2014年11月17日

输出1到最大的N位数 【微软面试100题 第六十五题】

摘要: 题目要求: 输入数字n,按顺序输出从1到最大的n位10进制数。 例如,输入3,则输出1、2、3...、999(最大的3位数)。 参考资料:剑指offer第12题。题目分析: 如果我们在数字前面补0的话,就会发现n位所有十进制数其实就是n个从0到9的全排列。也就是说,我们把数字的每一位都从0到... 阅读全文

posted @ 2014-11-17 22:20 tractorman 阅读(314) 评论(0) 推荐(0) 编辑

寻找丑数 【微软面试100题 第六十四题】

摘要: 题目要求: 我们把只包含因子2、3和5的数称为丑数。例如6、8都是丑数,但是14不是,因为它包含因子7. 习惯上我们把1当作是第一个丑数。 求按从小到大的顺序的第1500个丑数。 参考资料:剑指offer34题。题目分析: 方法1 从1开始逐个遍历整数,每个整数如果包含2、3和5中的任何一... 阅读全文

posted @ 2014-11-17 22:00 tractorman 阅读(287) 评论(0) 推荐(0) 编辑

在字符串中删除特定的字符 【微软面试100题 第六十三题】

摘要: 题目要求: 输入两个字符串,从第一个字符串中删除第二个字符串中所有的字符。例如,输入"They are students."和"aeiou",则删除之后的第一个字符串变成了"Thy r stdnts.".题目分析: 1. 把第二个字符串的所有字符都存入一个set中; 2. 遍历第一个字符串的每... 阅读全文

posted @ 2014-11-17 13:05 tractorman 阅读(191) 评论(0) 推荐(0) 编辑

找出链表的第一个公共结点 【微软面试100题 第六十二题】

摘要: 题目要求: 两个无环单向链表,找出它们的第一个公共结点。 参考资料:剑指offer第37题。题目分析: 代码实现: #include using namespace std;typedef struct ListNode{ struct ListNode *next; int d... 阅读全文

posted @ 2014-11-17 11:04 tractorman 阅读(169) 评论(0) 推荐(0) 编辑

找出数组中两个只出现一次的数字 【微软面试100题 第六十一题】

摘要: 题目要求: 一个整型数组里除了两个数字机之外,其他的数字都出现了两次。 请写程序找出这两个只出现一次的数字。要求时间复杂度O(N).空间复杂度O(1). 参考资料:剑指offer第40题。题目分析: 已知: 1.两个相同的数字异或的结果为0,即a^a = 0. 2.两个不相同的数... 阅读全文

posted @ 2014-11-17 10:19 tractorman 阅读(211) 评论(0) 推荐(0) 编辑

导航