微软面试100题
littlestream9527
Hew out of the mountain of despair a stone of hope!
展开
-
微软面试100题之一,之四 二叉查找树变双向链表 和为某一值的所有路径
// 微软100题之一二叉查找树变双向链表.cpp : 定义控制台应用程序的入口点。//微软100题之四 二叉查找树找出和为某一值的所有路径#include "stdafx.h"#include #include #define N 100int path[N]={0};// used for calculating the pathusing namespace std;str原创 2012-11-26 22:15:26 · 386 阅读 · 0 评论 -
程序员面试题精选100题(48)-二叉树两结点的最低共同父结点
// 程序员面试题精选100题(48)-二叉树两结点的最低共同父结点.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include using namespace std;#define N 7struct TNode{ char chValue; TNode *leftChild; TNode *rightChild;原创 2013-01-03 22:06:24 · 539 阅读 · 0 评论 -
程序员面试题精选100题(49)-复杂链表的复制
略有所悟:不一定总是从头到尾一气呵成,像这样的一个节点一个节点的复制,先合成一个整体,之后在分开也是复制。关键是这样省去了寻找复制节点的时间(因为每当复制当前节点时一定要找到原来父节点所在的位置)。思路如下:在不用辅助空间的情况下实现O(n)的时间效率。第三种方法的第一步仍然是根据原始链表的每个结点N,创建对应的N’。这一次,我们把N’链接在N的后面。实例中的链表经过这一步之后变成了:原创 2013-01-04 21:23:10 · 381 阅读 · 0 评论 -
程序员面试题精选100题(50)-树的子结构.
// 程序员面试题精选100题(50)-树的子结构.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;struct TNode{ char chValue; TNode *leftChild; TNode *rightChild;};TNode* rebuildTree(char *p原创 2013-01-05 21:59:23 · 431 阅读 · 0 评论 -
程序员面试题精选100题(37)-寻找丑数(一种新的排序方法)
// 程序员面试题精选100题(37)-寻找丑数.cpp : 定义控制台应用程序的入口点。///*main idea is how sort ugly number ,it is impossible to sort the ugly one by one in regular method, so the sort method in the array is a good idea,wh原创 2012-12-22 22:03:06 · 484 阅读 · 0 评论 -
程序员面试100题之36在字符串中删除特定的字符
// 程序员面试100题之36在字符串中删除特定的字符.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;/** like hash table, fasten the search speed*/int _tmain(int argc, _TCHAR* argv[]){ char st原创 2012-12-22 09:37:07 · 438 阅读 · 0 评论 -
程序面100题(38)-输出1到最大的N数位
// 程序面100题(38)-输出1到最大的N数位.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;char chead[]={'1','2','3','4','5','6','7','8','9'};char ctail[]={'0','1','2','3','4','5','6','7',原创 2012-12-22 12:23:08 · 449 阅读 · 0 评论 -
程序员面试题精选100题(51)-顺时针打印矩阵
// 程序员面试题精选100题(51)-顺时针打印矩阵.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;#define M 9#define N 4int _tmain(int argc, _TCHAR* argv[]){ int arr[M][N]; int all=0; int原创 2013-01-07 20:37:51 · 370 阅读 · 0 评论 -
程序员面试题精选100题(55)-不用+、-、×、÷做加法
想到用位运算了,但没想到这么简洁的算法// 程序员面试题精选100题(55)-不用+、-、×、÷做加法.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;int AddWithoutArithmetic(int num1, int num2){ if(num2 == 0) retur原创 2013-01-08 19:41:28 · 580 阅读 · 0 评论 -
程序员面试题精选100题(57)-O(n)时间的排序
题目:某公司有几万名员工,请完成一个时间复杂度为O(n)的算法对该公司员工的年龄作排序,可使用O(1)的辅助空间。看到这题,我就开始蒙头想,一个小时过去了,还是不知道。只能看答案了:void SortAges(int ages[], int length){ if(ages== NULL || length return;原创 2013-01-08 20:46:38 · 461 阅读 · 0 评论 -
程序员面试题精选100题(58)-八皇后问题
// 程序员面试题精选100题(58)-八皇后问题.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;static int sum=0;void swap(int &a,int &b){ int temp; temp=a; a=b; b=temp;}bool isqueen(int原创 2013-01-11 20:29:25 · 507 阅读 · 0 评论 -
程序员面试题精选100题(60)-判断二叉树是不是平衡
// 程序员面试题精选100题(60)-判断二叉树是不是平衡.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;struct TNode{ char chValue; TNode *leftChild; TNode *rightChild;};TNode* rebuildTree(ch原创 2013-01-14 16:58:22 · 383 阅读 · 0 评论 -
程序员面试题精选100题(59)-字符串的组合
// 程序员面试题精选100题(59)-字符串的组合.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include using namespace std;void Combination(char* string, int number, vector& result){ if(number == 0原创 2013-01-14 16:08:39 · 401 阅读 · 0 评论 -
程序员面试题精选100题(52,53,54)-C++面试题
// 程序员面试题精选100题(52,53,54)-C++面试题.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;/*class A{};class B{public: B() {} ~B() {}};class C{public: C() {} virtual原创 2013-01-15 16:44:46 · 1049 阅读 · 0 评论 -
程序员面试题精选100题(61)-数对之差的最大值
// 程序员面试题精选100题(61)-数对之差的最大值.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;#define N 9int max(int a,int b,int c){ if (a>b) { if (a>c) { return a; } else原创 2013-01-15 16:25:51 · 447 阅读 · 0 评论 -
程序员面试题精选100题(47)-数组中出现次数超过一半的数字
// 程序员面试题精选100题(47)-数组中出现次数超过一半的数字.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;/*this method is terrific which can avoid creating an array*/int mostvalue(int *arr,in原创 2013-01-03 19:23:24 · 500 阅读 · 0 评论 -
程序员面试100题之32不能被继承的类
// 程序员面试100题之32不能被继承的类.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;class FinalClass1{public: static FinalClass1* GetInstance()// why static because can not return l原创 2012-12-18 22:02:09 · 324 阅读 · 0 评论 -
程序员面试100题之34找出数组中两个只出现一次的数字
// 程序员面试100题之34找出数组中两个只出现一次的数字.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;int _tmain(int argc, _TCHAR* argv[]){ int arr[]={1,3,2,5,4,9,8,6,7,4,6,8,1,9,5,3}; int su原创 2012-12-18 22:00:31 · 447 阅读 · 0 评论 -
程序员面试100题之二 设计含min函数的栈
// 程序员面试100题之二 设计包含min函数的栈.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"//#include //stack 允许新增元素、移除元素、取得最顶端元素。但除了最顶端外,没有 任何其他方法可以存取 stack 的其他元素,换言之,stack 不允许随机访问。#include #define N 100using namesp原创 2012-11-27 22:26:34 · 413 阅读 · 0 评论 -
程序员面试100题之16斐波那契 编程之美2.09
时间复杂度为O(log(n))// 程序员面试100题之16斐波那契数列.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;struct Matrix2by2{ int value00,value01,value10,value11; Matrix2by2(int v00,int v01,in原创 2012-11-29 21:59:59 · 959 阅读 · 0 评论 -
你的柔情我永远不懂(程序员面试100题之八求1+2+n)
来自程序员面试100答案题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。分析:这道题没有多少实际意义,因为在软件开发中不会有这么变态的限制。但这道题却能有效地考查发散思维能力,而发散思维能力能反映出对编程相关技术理解的深刻程度。通常求1+2+…+n除了用公式n(n+1)/2之外,无外乎循环和递原创 2012-11-28 20:52:52 · 749 阅读 · 0 评论 -
程序员100道面试题17把字符串转换成整数
int StrToInt(const char* str){ g_nStatus = kInvalid; long long num = 0;// attention if(str != NULL) { const char* digit = str; // the first char in the string maybe '+' or '-' bool minus =原创 2012-12-05 22:34:04 · 730 阅读 · 1 评论 -
程序员面试100题之十八 十四 两个栈实现队列
// 程序员面试100题之十八 两个栈实现队列.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include using namespace std;template class CQueue{public: CQueue() {} ~CQueue() {} //void appendTail(原创 2012-12-09 20:46:56 · 392 阅读 · 0 评论 -
程序员面试题精选100题(41)-把数组排成最小的数
// 程序员面试题精选100题(41)-把数组排成最小的数.cpp : 定义控制台应用程序的入口点。///*首先我们需要证明之前定义的比较两个数字大小的规则是有效的。一个有效的比较需要三个条件:1.自反性,即a等于a;2.对称性,即如果a大于b,则b小于a;3.传递性,即如果a小于b,b小于c,则a小于c。现在分别予以证明。1. 自反性。显然有aa=aa,所以a=a。2.原创 2012-12-23 22:22:03 · 704 阅读 · 0 评论 -
程序员面试题精选100题(39)-递归颠倒栈
// 程序员面试题精选100题(39)-递归颠倒栈.cpp : 定义控制台应用程序的入口点。///*it is possible to reverse a stack in regular method resulting from the FIFO property of stack, so the method utilized two recursive function to mee原创 2012-12-23 19:00:30 · 500 阅读 · 0 评论 -
程序员面试题精选100题(40)-扑克牌的顺子
// 程序员面试题精选100题(40)-扑克牌的顺子.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;bool isSuccessive(){ int arr[5]; int arrHash[16]={0};//大小王是14,15,有值为1 for (int i=0;i<5;i++)原创 2012-12-23 19:41:53 · 915 阅读 · 0 评论 -
程序员面试题精选100题(42)-旋转数组的最小元素
// 程序员面试题精选100题(42)-旋转数组的最小元素.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;int minrotatenum(int *num,int n)// binary search supposed that the num has been rotated in or原创 2012-12-24 22:15:48 · 385 阅读 · 0 评论 -
程序员面试100题之28字符串排列
// 程序员面试100题之28字符串排列.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include //string.h does not workusing namespace std;/*void permution(string &str)//函数中只是输出结果,所以不改变值{ // cout<<" str is原创 2012-12-13 21:47:34 · 365 阅读 · 0 评论 -
程序员面试100题之十五 和 三十, 含有指针成员的类的拷贝(异常安全的赋值运算符重载)
// 程序员面试100题之十五 含有指针成员的类的拷贝.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;template class Array_Wrong //含有指针的类复制时,会调用合成的默认复制构造函数,只复制指针的地址,这样容易出现悬垂指针。{public: Array_Wro原创 2012-12-07 21:02:48 · 647 阅读 · 0 评论 -
程序员面试题精选100题(43)-n个骰子的点数
// 程序员面试题精选100题(43)-n个骰子的点数.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include using namespace std;//////////////////////////////////////////////////////////////////////////i原创 2012-12-30 21:26:43 · 588 阅读 · 1 评论 -
程序员面试题精选100题(44)-数值的整数次方
// 程序员面试题精选100题(44)-数值的整数次方.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;double Power(double base, int exponent){ if (exponent==0) { return 1; } int index=abs(ex原创 2013-01-01 16:46:02 · 345 阅读 · 0 评论 -
程序员面试题精选100题(46)-对称子字符串的最大长度
// 程序员面试题精选100题(46)-对称子字符串的最大长度.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;int symmetry(string str,int begin,int end)// surppose begin is less than end{ //int len=0;原创 2013-01-02 21:58:01 · 473 阅读 · 0 评论 -
程序员面试题精选100题(63)-数组中三个只出现一次的数字
// 程序员面试题精选100题(63)-数组中三个只出现一次的数字.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;#define N 5int _tmain(int argc, _TCHAR* argv[]){ int arr[N]={2,14,6,6,5};// 0 is wrong原创 2013-01-15 21:31:44 · 535 阅读 · 0 评论