剑指offer
JF_Ma
好好学习,不断进步
展开
-
剑指offer 面试题2
单例模式是面试经常会提及的题目 那么什么是单例模式?怎么实现单例模式? 以上问题是本节的核心首先,单例模式是指一个类只能定义一个对象,或者说一个类只能拥有一个对象。其次,怎么实现单例模式,通过将构造函数声明为private,利用static 参数的特性作为标识进行判断。如下代码:#include<iostream>using namespace std;class CSingleton{原创 2015-06-21 10:37:09 · 393 阅读 · 0 评论 -
面试49
以下是剑指offer的有关atoi函数的实现对于这种简单的面试算法题目,面试官的用意往往是考察我们程序的容错能力,考察我们在编程的时候对程序各方面的考虑。下面是模仿作者的算法写的程序。#include<iostream>using namespace std;bool flag = false;int MyCore(char*p,bool minus){ int num = 0;原创 2015-06-11 18:55:54 · 643 阅读 · 0 评论 -
面试题 47
本节介绍有关位操作的算法剑指offer中提到了一个经典面试题目,就是不用加减乘除实现两个数字的加法。 作者的代码如下:#include<iostream>using namespace std;void add(int num1,int num2){ int sum; int carry; do { sum = num1^num2;原创 2015-06-11 16:17:14 · 452 阅读 · 0 评论 -
剑指offer 面试题11
题目: 实现函数double Power(double base,int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。#include<iostream>using namespace std;double PowerUnsigned(double base ,unsigned int exponent){ if (exponent =原创 2015-06-29 16:35:46 · 611 阅读 · 0 评论 -
剑指offer 面试题10
题目: 请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001,有两位是1.因此如果输入9,该函数输出2。我们编程的时候需要注意关于负数的处理,忽略负数容易造成死循环。有两种解法: 第二种最好第一种:#include<iostream>using namespace std;int Number(int n){ int count=0; u原创 2015-06-28 21:23:09 · 348 阅读 · 0 评论 -
剑指offer 面试题9
题目:写一个函数,输入n,求斐波那契额数列的第n项。#include<iostream>using namespace std;long long Fibonacci(unsigned int n){ int result[] = {0,1}; if (n < 2) return result[n]; long long One = 1, Two = 0;原创 2015-06-26 15:44:39 · 539 阅读 · 0 评论 -
剑指offer 例题
题目: 实现一个排序算法,排序对象是本公司员工的年龄,要求时间复杂度O(n),空间复杂度不能超过O(n)。#include<iostream>using namespace std;void SortAge(int Ages[],int length){ if (NULL == Ages || length <= 0) return; const int ol原创 2015-06-26 11:57:05 · 611 阅读 · 0 评论 -
剑指offer 面试题8
题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数列的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。解释一下: 就是比如输入数组{3,4,5,1,2},要求输出数字1.要求时间复杂度小于O(n)。 本题有一个陷阱,就是如何处理{1,1,1,1,1,0,1,1,1,1}这种序列。原创 2015-06-26 14:45:35 · 494 阅读 · 0 评论 -
剑指offer 面试题9
第二道题目: 已知一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级台阶一共有多少种跳法。扩展题: 如果一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶,也可以跳上3级台阶。。。也可跳上n级台阶。求该青蛙跳上一个n级台阶一共有多少种跳法。对于第二道题目,我们可以认为有一个函数f(),放台阶数是n时,有f(n)种跳法,当台阶数n-1时有f(n-1)种跳法,以此类推; 那么f(原创 2015-06-26 17:07:29 · 525 阅读 · 0 评论 -
剑指offer 面试题7
题目: 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入节点和队列头部删除节点的功能。在解这道题的时候,直接想很难想出各种情况。举个例子,思路就清晰了。 代码如下:#include<iostream>#include<stack>using namespace std;template<typename T>clas原创 2015-06-24 16:40:44 · 508 阅读 · 0 评论 -
剑指offer 快速排序
快速排序一般的写法,教科书上很详细,这里介绍作者的写法。程序如下:#include<iostream>#include<stack>using namespace std;void swap(int *value1, int *value2){ int temp = *value1; *value1 = *value2; *value2 = temp;}int pa原创 2015-06-25 18:44:28 · 824 阅读 · 0 评论 -
剑指offer 面试题6
重建二叉树题目: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出二叉树并输入头结点。 二叉树定义如下: struct BinaryNode { int m_nValue; BinaryNo原创 2015-06-23 16:43:19 · 639 阅读 · 0 评论 -
剑指offer 面试题5
从尾到头打印出每一个结点的值题目: 输入一个链表的头结点,从尾到头反过来打印出每个结点的值。说明: 本题要求不能破坏原本的数据结构。#include<iostream>#include<stack>using namespace std;struct ListNode{ int m_nKey; ListNode *m_pNext;};void PrintListRever原创 2015-06-22 15:38:43 · 504 阅读 · 0 评论 -
剑指offer 面试题4
替换空格题目: 请实现一个函数,把字符串中的每个空格替换成“20%”。例如输入“we are happy.”,则输出“we20%are20%happy.”。本题的解决方法还有一个限制,即在当前字符串上进行替换操作,不能申请额外内存。所以,前提该字符串数组的总长度要比替换后的长度大,不然替换失败。#include<iostream>using namespace std;void ReplaceB原创 2015-06-22 14:37:46 · 426 阅读 · 0 评论 -
Effective C++ 条款4
调用empty而不是检查size()是否为零本节告诉大家,如果在判断容器是否为空时,调用empty函数,而不用size函数。这样做可以使程序在常数范围内完成。至于size函数,对于一些list来说,使用它是线性时间内完成。我们在编程时,当然选择在线性时间内得出结果。我们来看一下splice函数的使用方法list<int> a1{1,2,3},a2{4,5,6}; a1.splice(a1.b原创 2015-06-21 22:12:05 · 403 阅读 · 0 评论 -
剑指offer 面试题1
题目:赋值运算符函数写出一个类的赋值运算符。 注意事项: 1.是否返回该类的引用类型2.是否传入的参数类型是常量引用。3.是否释放自身已有内存4.是否是同一实例代码如下:CMyString & CMyString::operator=(CMyString &str){ if (this == &str) return *this; else {原创 2015-06-19 16:17:14 · 767 阅读 · 0 评论 -
剑指offer 面试题3
如何判定一个数值在一个二维数组中,该数组的特征是,每行数值从左到右增加,每列数值从上到下增加。 利用该数组的特征,找到编程的突破口。#include<iostream>using namespace std;bool Find(int *matrix,int rows,int columns,int number){ bool found = false; if (matri原创 2015-06-21 16:32:33 · 405 阅读 · 1 评论 -
剑指offer 面试题3
#includeusing namespace std;bool Find(int *matrix,int rows,int columns,int number){ bool found = false; if (matrix!=NULL && rows>=0 && columns>=0) { int row = 0, column = colu原创 2017-03-13 12:19:11 · 320 阅读 · 0 评论