自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 【0031】反转整数/判断回文

Reverse Integer反转一个整数C++ Code1234567891011121314151617181920212223242526272829303132classSolution{public:intreverse(intx){/*一位数的情况*/...

2014-06-13 13:06:00 151

转载 【003】链表或字符串的【反转】【左旋转】

反转链表/反转链表的某一段/左旋转链表/k长度反转/反转字符串当中的单词/左旋转字符串============================================面试题16:反转链表反转单链表,返回新链表的头指针。C++ Code12345678910111213141516171819202122...

2014-06-11 09:29:00 192

转载 【002】链表或字符串模拟加法/加一/乘法

链表模拟加法/字符串模拟二进制加法/数组模拟加一操作/打印1到最大的n位数/字符串模拟乘法============================================Add Two Numbers两个链表代表两个数字,每个结点的值都是一位数字,单链表逆序存放这两个数字,构造出一个新的链表,代表这两个链表的和。链表的尾插法,头结点dummy结点...

2014-06-10 09:15:00 160

转载 【01】数组中只出现一次的数字

其他两次,一个一次/其他三次,一个一次/其他两次,两个一次============================================任何一个数字异或他自己都得零。注意异或运算的初始化变量为0,因为0异或任何数字都得那个数字自身。Single Number1.一个整型数组中除了一个数字之外,其他数字都出现了两次,找出这个出现一次的数字。...

2014-06-09 09:29:00 132

转载 【面试题050】树中两个结点的最低公共祖先

【面试题050】树中两个结点的最低公共祖先题目: 树中两个节点的最低公共祖先。思路一: 输入两个树节点,求他们的最低公共祖先,——如果是二叉树,而且是二叉搜索树,那么是可以找到公共节点的。二叉搜索树都是排序过的,位于左子树的节点都比父节点小,而位于右子树上面的节点都比父节点大。如果当前节点的值比两个结点的值都大,那么...

2014-06-08 12:09:00 141

转载 【面试题049】把字符串转换成整数

【面试题049】把字符串转换成整数题目: 用C++定义一个不可以被继承的类。思路一: 正整数的最大值是0x7FFF FFFF,最小的负整数是0x8000 0000,因此我们需要分两种情况来分别判断整数是否发生上溢出和下溢出。1234567891011121314151617181920212223242526...

2014-06-07 15:08:00 101

转载 【面试题048】不能继承的类

【面试题048】不能继承的类题目: 用C++定义一个不可以被继承的类。思路一: 把构造函数设为私有的函数。1234567891011121314151617181920212223242526272829303132#include<iostream>usingnamespace...

2014-06-06 08:57:00 105

转载 【面试题047】不用加减乘除做加法

【面试题047】不用加减乘除做加法题目: 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、* 、/四则运算符号。思路一: 用二进制,位移运算来模拟加法运算。123456789101112131415161718192021222324#include<iostream>us...

2014-06-05 09:24:00 101

转载 【面试题046】求1+2+...+n

【面试题046】求1+2+...+n题目: 求1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。思路一: 利用构造函数求解。12345678910111213141516171819202122232425262728293...

2014-06-04 09:21:00 164

转载 【面试题045】圆圈中最后剩下的数字

【面试题045】圆圈中最后剩下的数字题目: 0, 1, ... , n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。思路一: 用环形链表来模拟这个圆圈。 std::list,并不是一个环形链表,因此扫描到链表末尾的时候,我们要记得把迭代器移到链表的头部。——这种方法没删除一个数字...

2014-06-03 09:51:00 89

转载 【面试题044】扑克牌的顺子

【面试题044】扑克牌的顺子题目: 从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大小王可以看成任意的数字。思路一: 可以吧五张牌看成是五个数字组成的数字,大小王是特殊的数字,把他填为0(为了和其他牌区分),对数组排序统计数...

2014-06-02 11:41:00 123

转载 【面试题043】n个骰子的点数

【面试题043】n个骰子的点数题目: 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s,输入n,打印出s的所有可能的值出现的概率。n个骰子的总点数,最小为n,最大为6n,根据排列组合的知识,那个骰子,所有点数的排列数为6^n。我们先统计每一个点数出现的次数,然后把每一个点数出现的次数除以6^n,就能求出每个点数出现的概率。思路一:...

2014-06-01 14:26:00 118

转载 【面试题042】翻转单词顺序VS左旋转字符串

【面试题042】翻转单词顺序VS左旋转字符串题目一: 输入一个英文句子,反转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。 例如输入字符串“I am a student.”,则输出“student. a am I”。思路一: 反转字符串的顺序,这样子每个单词的顺序也反转了,然后再次反转每个单词,这样子就...

2014-05-31 10:32:00 125

转载 【面试题041】和为s的两个数字VS和为s的连续正数序列

【面试题041】和为s的两个数字VS和为s的连续正数序列题目一: 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,输出任意一对即可。思路一: 现在数组中固定一个数字,再依次判断数组中其他的n-1个数字与它的和是不是等于s,——时间复杂度O(n)思路二:...

2014-05-30 08:15:00 78

转载 【面试题040】数组中只出现一次的数字

【面试题040】数组中只出现一次的数字题目: 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。思路一: 考虑,只有一个元素出现一次的情况,任何一个数字异或自己都得0,也就是说我们从头到位异或每个元素,那么最后得到的就是那个出现一次的。思路二: ...

2014-05-29 09:55:00 100

转载 【面试题039】二叉树的深度

【面试题039】二叉树的深度题目一: 输入一棵二叉树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根,叶结点)形成树的一条路径,最长路径的长度为树的深度。二叉树结点的结构如下:123456structBinaryTreeNode{intm_nValue;BinaryTreeNode*m_...

2014-05-28 09:38:00 52

转载 【面试题038】数字在排序数组中出现的次数

【面试题038】数字在排序数组中出现的次数题目: 统计一个数字在排序数组中出现的次数。例如输入排序数组{1, 2, 3, 3, 3, 3, 4, 5}和数字3,由于3在这个数组中出现了4次,因此输出4。思路一: 利用二分查找法,找到这个数字,然后在奇拿后遍历得到这个数字的个数。——时间复杂度是O(n)思路二: 可以...

2014-05-27 09:21:00 127

转载 【面试题037】两个链表的第一个公共结点

【面试题037】两个链表的第一个公共结点题目: 输入两个链表,找出它们的第一个公共结点。链表结点定义如下:12345structListNode{intm_nKey;ListNode*m_pNext;}思路一: 蛮力法,在第一个链表上面遍历,对...

2014-05-26 08:42:00 92

转载 【面试题036】数组中的逆序对

【面试题036】数组中的逆序对题目: 在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。 输入一个数组,求出这个数组中的逆序对的总数。思路一: 遍历扫描整个数组,没扫描到一个数字的时候,逐个比较这个数字和它后面的数字的大小。 如果后面的数字比它小,则这两个数字就组成了一个逆序对。——算法...

2014-05-25 10:41:00 117

转载 【面试题035】第一个只出现一次的字符

【面试题035】第一个只出现一次的字符题目: 在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”,则输出‘b’。思路一: 从头遍历字符串,每遍历一个字符就和后面的字符做比较,如果没有发现后面出现相同的字符,那么这个时候还挺复杂的,例如上面的字符串,第一个a发现后面有a,但是第二个a,发现后面没有a,起始得重头到位做判断,而且得...

2014-05-24 10:12:00 119

转载 【面试题034】丑数

【面试题034】丑数题目: 我们把只包含因子2、3和5的数称为丑数(Ugly Number)。 求按从小到大的顺序的第1500个丑数。 例如6、8都是丑数,但14不是,因为他包含因子7。习惯上我们把1当做第一个丑数。思路一: 逐个的判断,效率不高。123456789101112131415161...

2014-05-23 10:06:00 57

转载 【面试题033】把数组排成最小的数

【面试题033】把数组排成最小的数题目: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数, 打印能拼接出的所有数字中最小的一个。 例如输入数组{3, 32, 321},则打印出这3个数字能排成的最小数字321323。思路一: 最直观的想法是求出所有数字的全排列,然后取最小值即可, 根据排列组合的知识,...

2014-05-22 09:50:00 61

转载 【面试题032】从1到n整数中1出现的次数

【面试题032】从1到n整数中1出现的次数题目: 输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。 例如输入12,从1到12这些整数中包含1的数字有1,10,11和12,1出现了5次。思路一: 对每一个数字做判断,把1出现的数字累加。 可以通过对10取余,判断这个数字个位上的数字是不是等于1,然后这把这个数字除...

2014-05-21 07:53:00 100

转载 【面试题031】连续子数组的最大和

【面试题031】连续子数组的最大和题目: 输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。 求所有子数组的和的最大值。要求时间复杂度为O(n)。思路一: 枚举出数组的所有子数组并求出他们的和,最快也需要O(n^2)的时间,思路二: 举例分析数组的规律,如果加上一...

2014-05-20 09:16:00 125

转载 【面试题030】最小的k个数

【面试题030】最小的k个数题目: 输入n个整数,找出其中最小的k个数。 例如输入4、5、1、6、2、7、3、8这8个字,则其中最小的4个数字是1、2、3、4。思路一: 可以同样的基于随机快速排序的Partition函数,来对数组做划分, 基于k来作调整,返回调用Partition函数,直到左边的k个数字是整个数组中最小...

2014-05-19 08:47:00 108

转载 【面试题029】数组中出现次数超过一半的数字

【面试题029】数组中出现次数超过一半的数字题目: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 例如输入一个长度为9的数组{1, 2, 3, 2, 2, 2, 5, 4, 2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2.思路一: 对数组排序最快O(n*logn),排序后统计每个数字出现的次数,只需要...

2014-05-18 14:34:00 45

转载 【面试题028】字符串的排列

【面试题028】字符串的排列题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有的字符串abc,acb,bac,bca,cab和cba。StringPermutation.cppC++ Code123456789101112131415161718192021222...

2014-05-17 10:47:00 89

转载 【面试题027】二叉搜索树与双向链表

【面试题027】二叉搜索树与双向链表题目: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调用书中结点的指向。二叉树的结点定义如下:C++ Code123456structBinaryTreeNode{intm_nValue;BinaryTre...

2014-05-16 07:27:00 67

转载 【面试题026】复杂链表的复制

【面试题026】复杂链表的复制请实现函数ComplexListNode* Clone(ComplexListNode* pHead),复制一个复杂链表。在复杂链表中,每个结点除了有一个m_pNext指针指向下一个结点外,还有一个m_pSibling指向链表中的任意结点或者NULL。结点的C++定义如下:C++ Code123456...

2014-05-15 09:12:00 67

转载 【面试题025】二叉树中和为某一值的路径

【面试题025】二叉树中和为某一值的路径只有前序遍历,首先访问根结点。前序遍历访问到某个结点,把该结点添加到路径上,并累加该结点的值,递归函数推出前,要在路径上删除当前结点,并且减去当前结点的值,递归返回的条件是到了叶子结点。保存路径的数据结构实际上就是一个栈。PathInTree.cpp:123456789101112131415...

2014-05-14 09:27:00 97

转载 【面试题024】二叉搜索树的后序遍历序列

【面试题024】二叉搜索树的后序遍历序列解决树的问题就是分析,怎么把树的结构一点一点变小,变成子树,问题的域一直在变小,然后怎么递归的解决这个子问题,递归这个子问题的返回条件是什么。先找到二叉树的根结点,再基于根结点把整棵树的遍历序列拆分成左子树对应的子序列和右子树对应的子序列,接下来再递归的处理这两个子序列。SquenceOfBST.cpp:...

2014-05-13 16:20:00 71

转载 【面试题023】从上往下打印二叉树

【面试题023】从上往下打印二叉树层次遍历二叉树就是队列的应用树是图的一种特殊退化形式,从上到下按层次遍历二叉树,从本质上来说就是广度优先遍历二叉树。PrintTree.cpp:123456789101112131415161718192021222324252627282930313233343536373839404142434445464...

2014-05-12 08:45:00 108

转载 【面试题022】栈的压入、弹出序列

【面试题022】栈的压入、弹出序列如果所有的数字都压入栈了仍然没有找到下一个弹出的数字,StackPushPop.cpp:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263...

2014-05-11 12:53:00 120

转载 【面试题021】包含min函数的栈

【面试题021】包含min函数的栈MinStack.cpp:1234567891011121314151617181920212223242526272829303132333435363738394041424344454647#include<iostream>#include"StackWithMin.h"#inc...

2014-05-10 11:15:00 61

转载 【面试题020】顺时针打印矩阵

【面试题020】顺时针打印矩阵输入一个矩阵,按照从外到里的顺序打印出每一个数字,如果只有一行,那么就不用第二步了,第二步的前提条件是终止行号大于起始行号。第三步的前提条件是圈内至少要有两行两列,也就是说除了终止行号要大于起始行号外,还要求终止利好大于起始列号;同理第四步的前提条件是要有三行两列,因此要求终止行号比起始行号至少大2,同时终止列号大于起始列号;...

2014-05-09 10:17:00 54

转载 【面试题019】二叉树的镜像

【面试题019】二叉树的镜像这道题很简单就是交换结点,利用递归解解决问题思路清晰,代码简洁;MirrorTree.cpp:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616...

2014-05-08 11:26:00 65

转载 【面试题018】树的子结构

【面试题018】树的子结构输入两个二叉树A,B,判断B是不是A的子结构,SubTree.cpp:1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666...

2014-05-07 10:51:00 79

转载 【面试题017】合并两个排序的链表

【面试题017】合并两个排序的链表两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。MergeList.cpp:12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565...

2014-05-06 08:38:00 102

转载 【面试题016】反转链表

【面试题016】反转链表定义一个函数,输入一个链表的头结点,反转该链表并且输出反转后链表的头结点;我们定义三个指针,分别指向当前遍历到的结点,她的前一个结点,她的后一个结点;RevList.cpp:12345678910111213141516171819202122232425262728293031323334353637383940...

2014-05-05 09:12:00 100

转载 【面试题015】链表中倒数第k个结点

【面试题015】链表中倒数第k个结点可以用两个指针,当第一个指针指向了第k个时候,第二个指针让他指向链表的第一个元素,然后这两个指针同时向后面移动,当第一个指针移动到末尾的时候,第二个指针指向的就是倒数第K个结点;两个指针的间距保持为k-1;当我们遍历列表的时候发现用一个指针是解决不了问题的,我们可以尝试用两个指针来解决问题,一个指针走的比另外一个指针走得快...

2014-05-04 08:53:00 64

空空如也

空空如也

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

TA关注的人

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