
剑指offer
YYlxid
这个作者很懒,什么都没留下…
展开
-
【剑指offer】5.2时间效率——面试题33:把数组排成最小的数
原创 2016-01-15 15:40:00 · 341 阅读 · 0 评论 -
【剑指offer】4.3举例让抽象问题具体化——面试题24:二叉搜索树的后序遍历序列
原创 2016-01-11 20:42:10 · 343 阅读 · 0 评论 -
【剑指offer】6.4抽象建模能力——面试题44:扑克牌的顺子
//题目描述//LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.....LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为原创 2016-01-15 17:16:03 · 413 阅读 · 0 评论 -
【剑指offer】6.3知识迁移能力——面试题42:翻转单词顺序VS左旋转字符串
左旋转字符串//题目描述//汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!class Solution {public: string原创 2016-01-15 17:14:57 · 687 阅读 · 0 评论 -
【剑指offer】6.3知识迁移能力——面试题39:二叉树的深度
//题目描述//输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(N原创 2016-01-15 17:11:22 · 421 阅读 · 0 评论 -
【剑指offer】6.3知识迁移能力——面试题38:数字在排序数组中出现的次数
暴力搜索//题目描述//统计一个数字在排序数组中出现的次数。class Solution {public: int GetNumberOfK(vector data ,int k) { int n=data.size(); if(n==0)return 0; int cnt=0; for(int i=0;i<n;i++){ if(data[i原创 2016-01-15 17:03:28 · 369 阅读 · 0 评论 -
【剑指offer】2.3.4树——面试题6:重建二叉树
树的性质:除了根结点之外每个结点只有一个父结点,根结点没有父结点;除了叶结点之外所有结点都有一个或多个子节点,叶结点没有子结点。二叉树即每个结点最多只能有两个子结点,其重要操作是遍历,包括前序、中序、后序、层次遍历。可通过宽度优先遍历和深度优先遍历实现。。。二叉搜索树,左子结点总小于等于根结点,右子结点总大于等于根结点。查找一个结点的时间复杂度平均为o(nlogn)堆也是一原创 2015-12-25 09:44:34 · 483 阅读 · 0 评论 -
【剑指offer】2.3.3链表——面试题5:从尾到头打印链表
链表是由指针把若干个结点连接成链状结构,是一种动态的数据结构。在创建链表时,无须知道链表的长度,当插入一个结点时,只需为新节点分配内存,然后调整指针的指向。由于链表是按需分配内存的,故其空间效率比较高。面试题5:从尾到头打印链表原创 2015-12-25 09:43:05 · 471 阅读 · 0 评论 -
【剑指offer】2.3.2 字符串——面试题4:替换空格
字符串是由若干字符组成的序列。c/c++中每个字符串都以字符'\0'作为结尾,因此每个字符串中都有一个额外字符的开销。为了节省内存,c/c++把常量字符串放到单独的一个内存区域。当几个指针赋值给相同的常量字符串时,他们实际会指向相同的内存地址,但用常量内存初始化数组,则不会指向同一个内存地址。在c#中封装的字符串类型System.String,其内容是不能改变的,一旦试图改变原创 2015-12-25 09:41:23 · 456 阅读 · 0 评论 -
【剑指offer】3.4代码的鲁棒性——面试题18:树的子结构
面试题18:树的子结构原创 2016-01-04 21:23:33 · 441 阅读 · 0 评论 -
【剑指offer】4.4分解让复杂问题简单化——面试题27:二叉搜索树与双向链表
原创 2016-01-11 21:07:48 · 403 阅读 · 0 评论 -
【剑指offer】4.4分解让复杂问题简单化——面试题28:字符串的排列
原创 2016-01-11 21:08:36 · 388 阅读 · 0 评论 -
【剑指offer】4.4分解让复杂问题简单化——面试题26:复杂链表的复制
使用map的思想//题目描述////输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)。 #include#include#includeusing namespace std;struct RandomListNode { int label; struct RandomListNode *next, *ra原创 2016-01-11 21:06:57 · 430 阅读 · 0 评论 -
【剑指offer】5.2时间效率——面试题32:从1到n整数中1出现的次数
原创 2016-01-13 10:01:46 · 361 阅读 · 0 评论 -
【剑指offer】4.3举例让抽象问题具体化——面试题25:二叉树中和为某一值的路径
//题目描述////输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 #include#include#includeusing namespace std;struct TreeNode { int val; struct TreeNode *left; struct TreeNode原创 2016-01-11 20:43:01 · 485 阅读 · 0 评论 -
【剑指offer】6.3知识迁移能力——面试题41:和为s的两个数字VS和为s的连续正数序列
和为S的连续正数序列//题目描述////小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck! //原创 2016-01-15 17:13:45 · 803 阅读 · 0 评论 -
【剑指offer】5.3时间效率与空间效率的平衡——面试题34:丑数
//题目描述//把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。#includeusing namespace std;class Solution {public: int GetUglyNumber_Solution(int index) {原创 2016-01-15 15:41:10 · 520 阅读 · 0 评论 -
【剑指offer】4.3举例让抽象问题具体化——面试题23:从上往下打印二叉树
//题目描述////从上往下打印出二叉树的每个节点,同层节点从左至右打印。 #include#include#include#includeusing namespace std;struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val原创 2016-01-11 20:41:22 · 474 阅读 · 0 评论 -
【剑指offer】4.3举例让抽象问题具体化——面试题22:栈的压入、弹出序列
//题目描述////输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。#include#include#includeusing namespace std;class S原创 2016-01-11 20:39:40 · 472 阅读 · 0 评论 -
【剑指offer】4.3举例让抽象问题具体化——面试题21:包含min函数的栈
//题目描述////定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。#include#includeusing namespace std;// stk 保存依次进入栈的数据// minstk 保存依次进入栈时当前的最小值的栈class Solution {public: void push(int value) { stk.push(value原创 2016-01-11 20:38:29 · 494 阅读 · 0 评论 -
【剑指offer】5.3时间效率与空间效率的平衡——面试题36:数组中的逆序对
树状数组的思想,不过会受到N的影响,扩展离散+树状数组//题目描述//在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。#include#includeusing namespace std;const int N=100005;class Solution {public: int Inve原创 2016-01-15 15:43:36 · 372 阅读 · 0 评论 -
【剑指offer】5.3时间效率与空间效率的平衡——面试题35:第一个只出现一次的字符
hash表//题目描述//在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符的位置。若为空串,返回-1。位置索引从0开始#include#includeusing namespace std;class Solution {public: int FirstNotRepeatingChar(string str) {原创 2016-01-15 15:42:24 · 412 阅读 · 0 评论 -
【剑指offer】2.3.1 数组——面试题3:二维数组中的查找
数组概念数组占据一块连续的内存并按照顺序存储数据。创建数组时,需要首先指定数组的容量大小,然后根据大小分配内存。因此数组的空间效率不高。内存连续的特点使得可根据下标在o(1)时间读/写任何元素,故时间效率很高。可用它实现简单的哈希表。为了解决数组空间效率不高的问题,设计了多种动态数组,例如c++中的vector。为了避免浪费,先为数组开辟较小的空间,然后向数组中添加数组。当数据的数原创 2015-12-25 09:31:05 · 602 阅读 · 0 评论 -
【剑指offer】3.3代码的完整性——面试题11:数值的整数次方
1、从3个方面确保代码的完整性2、3种错误处理的方法a、函数用返回值告知调用者是否出错b、当发生错误时设置一个全局变量c、异常面试题11:数值的整数次方/*题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。*/ #includeusing namespace std;class S原创 2015-12-31 22:00:00 · 339 阅读 · 0 评论 -
【剑指offer】2.4.2递归和循环——面试题9:斐波那契数列
递归是在一个函数内部调用这个函数自身,而循环则是通过设置计算的初始值及终止条件,在一个范围内重复运算。递归的代码通常会比较简洁,但由于递归是函数调用自身,而函数调用是有时间和空间的消耗,每次调用都需要在内存栈中分配空间以保存参数、返回地址及临时变量,因此递归实现往往效率不如循环。同时,递归中有可能有很多重复计算。还可能引发调用栈溢出。面试题9:斐波那契数列常用方法1原创 2015-12-31 19:48:31 · 504 阅读 · 0 评论 -
【剑指offer】2.4.1查找和排序——面试题8:旋转数组的最小数字
查找:顺序查找、二分查找、哈希表查找和二叉排序树查找。哈希表主要优点是利用它可在o(1)时间查找某一元素,但缺点是需要额外空间实现哈希表。与二叉排序树查找对应的数据结构是二叉搜索树。排序:插入排序、冒泡排序、归并排序、快速排序等算法。 面试题8:旋转数组的最小数字原创 2015-12-26 13:40:20 · 495 阅读 · 0 评论 -
【剑指offer】5.2时间效率——面试题31:连续子数组的最大和
//题目描述////HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?原创 2016-01-13 10:00:42 · 541 阅读 · 0 评论 -
【剑指offer】5.2时间效率——面试题30:最小的k个数
//题目描述////输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 #include#include#includeusing namespace std;class Solution {public: vector GetLeastNumbers_Solution(vector input, in原创 2016-01-13 09:59:57 · 454 阅读 · 0 评论 -
【剑指offer】6.4抽象建模能力——面试题45:圆圈中最后剩下的数字
原创 2016-01-15 17:16:49 · 391 阅读 · 0 评论 -
【剑指offer】6.4抽象建模能力——面试题43:n个骰子的点数
原创 2016-01-15 17:15:29 · 454 阅读 · 0 评论 -
【剑指offer】6.3知识迁移能力——面试题40:数组中只出现一次的数字
原创 2016-01-15 17:12:39 · 384 阅读 · 0 评论 -
【剑指offer】3.3代码的完整性——面试题14:调整数组顺序使奇数位于偶数前面
//题目描述////输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。#include#includeusing namespace std;class Solution {public: void reOrderArray(vector &array)原创 2015-12-31 22:02:55 · 357 阅读 · 0 评论 -
【剑指offer】3.4代码的鲁棒性——面试题16:反转链表
面试题16:反转链表//题目描述////输入一个链表,反转链表后,输出链表的所有元素。#include#include#includeusing namespace std;struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }}原创 2016-01-03 19:41:00 · 412 阅读 · 0 评论 -
【剑指offer】3.4代码的鲁棒性——面试题17:合并两个排序的链表
//题目描述////输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 #include#includeusing namespace std;struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};原创 2016-01-03 20:23:59 · 365 阅读 · 0 评论 -
【剑指offer】2.3.5栈和队列——面试题7:用两个栈实现队列
栈的应用:如操作系统会给每个线程创建一个栈用来存储函数调用时各个函数的参数、返回地址及临时变量等。栈的特点 后进先出,是一个不考虑排序的数据结构。队列 先进先出。 面试题7:用两个栈实现队列原创 2015-12-25 09:45:50 · 370 阅读 · 0 评论 -
【剑指offer】5.2时间效率——面试题29:数组中出现次数超过一半的数字
对时间空间影响的几个方面:1、编程习惯对代码的时间效率有很大影响,例如,c/c++程序员要养成采用引用(或指针)传递复杂类型参数的习惯。如果采用值传递的方式,从形参到实参会产生一次复制操作,造成时间和空间的浪费。2、使用循环和递归实现的时间效率可能会不一样。3、所使用的数据结构和算法也会带来影响原创 2016-01-13 09:59:09 · 554 阅读 · 0 评论 -
【剑指offer】4.2画图让抽象问题形象化——面试题19:二叉树的镜像
//题目描述////操作给定的二叉树,将其变换为源二叉树的镜像。 #include#includeusing namespace std;struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(原创 2016-01-04 21:24:37 · 519 阅读 · 0 评论 -
【剑指offer】6.5发散思维能力——面试题48:不能被继承的类
原创 2016-01-21 21:42:17 · 454 阅读 · 0 评论 -
【剑指offer】6.5发散思维能力——面试题47:不用加减乘除做加法
原创 2016-01-21 21:41:25 · 423 阅读 · 0 评论 -
【剑指offer】6.5发散思维能力——面试题46:求1+2+…+n
原创 2016-01-21 21:40:29 · 429 阅读 · 0 评论