![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
bluegreen315
这个作者很懒,什么都没留下…
展开
-
剑指offer 6.4 抽象建模能力3 -圆圈中最后剩下的数字
题目:n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第m个数字。求出在这个圆圈中剩下的最后一个数字。转载 2014-08-12 10:26:40 · 525 阅读 · 0 评论 -
剑指offer 6.3 知识迁移能力5-和为s的两个数字
面试题41: 和为s的两个数字 VS 和为s的连续正数序列题目一:输入一个转载 2014-08-12 10:20:08 · 402 阅读 · 0 评论 -
剑指offer 4.2 画图形象化问题2- 顺时针打印矩阵
面试题20:顺时针打印矩阵题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如:如果输入如下矩阵1 2 3 45 6 7 89 10 11 1213 14 15 16依次打印出数字1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10原创 2014-08-11 09:50:39 · 472 阅读 · 0 评论 -
剑指offer 3.4 代码的鲁棒性2- 反转链表
题目:输入一个链表的头结点,反转该链表,并返回反转后链表的头结点。链表结点定义如下:struct ListNode{ int m_nKey; ListNode* m_pNext;};Microsoft面试题为了正确地反转一个链表,需要调整指针的指向。a->b->...->h->i->j->...h、原创 2014-08-10 16:40:58 · 457 阅读 · 0 评论 -
剑指offer 2.3 数据结构2-二维数组中的查找
面试题3:二维数组中的查找题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。原创 2014-08-10 16:09:41 · 292 阅读 · 0 评论 -
剑指offer 2.2 - sizeof()
2、定义一个空的类型,里面没有任何成员变量和成员函数,对该类求sizeof,得到的结果是多少?空类型的实例中不包含任何信息,但当我们声明该类型的实例的时候,他必须在内存中占有一定的空间,否则无法使用这些实例。至于占用多少内存,由编译器决定。 Visual Studio中每个空类型的实例占用1字节的空间。=========如果给该空类型添加一个构造函数和析构函数,求sizeof还是为1.原创 2014-08-10 16:08:57 · 356 阅读 · 0 评论 -
剑指offer 3.3 代码的完整性1- 求数值的整数次方
1 、从3个方面确保代码的完整性: 功能测试、边界测试、负面测试2、3中错误处理的芳芳:a. 函数用返回值来告知调用者是否出错b. 当发生错误时设置一个全局变量。c. 异常。原创 2014-08-10 15:03:12 · 426 阅读 · 0 评论 -
剑指offer 2.4 在O(n)时间排序公司所有员工的年龄
排序和查找, 二分查找,归并排序,快速排序递归和循环位运算:与、或、异或、左移、右移2.4.1 查找和排序小提示:如果面试题是要求在排序的数组(或者部分排序的数组)中查找一个数组或者统计某个数字出现的次数,我们都可以尝试用二分查找。哈希表、二叉树查找 重点在于考察数据结构 而不是算法。 哈希表优点是能够在O(1)时间找到某一元素,效率原创 2014-08-10 11:34:26 · 758 阅读 · 0 评论 -
剑指offer 2.3 数据结构1-数组求sizeof()
字符串、数组:最基本的数据结构,他们用连续的内存分别存储数字和字符。链表和树:对他们的操作需要大量的指针,解决相关问题一定要注意其鲁棒性,否则容易出现程序崩溃的问题。栈:与递归紧密相关的数据结构队列:与广度优先遍历算法紧密相关=======================================================================2.原创 2014-08-10 11:25:17 · 473 阅读 · 0 评论 -
剑指offer 6.5 发散思维 - 不能被继承的类
面试题48 : 不能被继承的类面试题48:不能被集成的转载 2014-08-12 10:28:12 · 449 阅读 · 0 评论 -
剑指offer 6.3 知识迁移能力4- 数组中只出现一次的数字
面试题40: 数组中只出现一次的数字题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。转载 2014-08-12 10:20:50 · 374 阅读 · 0 评论 -
剑指offer 6.4 抽象建模能力2 -扑克牌的顺序
面试题44: 扑克牌的顺序原创 2014-08-12 10:25:15 · 455 阅读 · 0 评论 -
剑指offer 6.3 知识迁移能力1- 数字在排序数组中出现的次数
面试题38:数字在排序数组中出现的次数思路:使用二分查找法。假设要统计数字k在排序数组中出现的次数。分别找到数组中第一个k和最后一个k。使用二分法查找找到第一个k : 先拿数组中间的数和k作比较。如果中间的数比k大,那么k只可能出现在数组的前半段,下一轮在前半段中查找; 如果数组中间的数比k小,那么k只可能出现在后半段,下一轮在后半段中查找;原创 2014-08-11 15:24:18 · 392 阅读 · 0 评论 -
剑指offer 5.3 时间与空间效率2 - 第一个只出现一次的字符
面试题36: 第一个只出现一次的字符在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。转载 2014-08-11 15:11:11 · 405 阅读 · 0 评论 -
剑指offer 5.2 时间效率1 - 数组中出现次数超过一半的数字
面试题29:数组中出现次数超过一半的数字原创 2014-08-11 11:13:21 · 574 阅读 · 0 评论 -
剑指offer 6.3 知识迁移能力6-和为s的连续正数序列
面试题41:和为s的两个数字VS和为s的连续正数序列原创 2014-08-12 10:22:44 · 426 阅读 · 0 评论 -
剑指offer 5.3 时间与空间效率平衡 -丑数
面试题34:丑数我们把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第1500个丑数。分析:这是一道在网络上广为流传的面试题,据说google曾经采用过这道题。所谓一个数m是另一个数n的因子,是指n能被m整除,也就是n % m == 0转载 2014-08-11 14:35:21 · 436 阅读 · 0 评论 -
剑指offer 6.3 知识迁移能力2- 二叉树的深度
题目:输入一棵二元树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。例如:输入二元树: 10 / \转载 2014-08-11 15:44:09 · 350 阅读 · 0 评论 -
##剑指offer 5.2 时间效率2 -最小的K个数
面试题30: 最小的K个数解法一:最直观的解法莫过于将n个数按升序排列后输出前k个。但是就效率来看,这种方法并不是最理想的。一种改进方法是借助快速排序中对数组的划分,以第k个元素对数组进行划分,使得比第k个数字小的数字都在其左边,比其大的数字都在它的右边。 算法的时间复杂度是O(n),是一种比较高效的解法。但是上述算法存在的问题是修改了原始数组数据,因此在不允许修改原转载 2014-08-11 12:40:05 · 409 阅读 · 0 评论 -
剑指offer 6.3 知识迁移能力7-反转单词顺序
剑指offer 6.3 知识迁移能力5-和为s的连续正数序列原创 2014-08-12 10:21:18 · 456 阅读 · 0 评论 -
##剑指offer 4.4 排列组合(正方体、八皇后)
八皇后题目:在8×8的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后不得处在同一行、同一列或者同一对角斜线上。下图中的每个黑色格子表示一个皇后,这就是一种符合条件的摆放方法。请求出总共有多少种摆法。转载 2014-08-11 10:07:51 · 655 阅读 · 0 评论 -
剑指offer 4.3 举例形象化问题5-二叉树中和为某一值的路径
题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如输入整数22和如下二元树 10 / \转载 2014-08-11 09:53:55 · 393 阅读 · 0 评论 -
剑指offer 2.4 位运算,求二进制中1的个数
2.4.3 位运算面试题:二进制中1的个数题目:输入见编程之美2.1原创 2014-08-10 16:21:22 · 326 阅读 · 0 评论 -
剑指offer 2.2 - C++ 类型转换相关的关键字
1、在C++中,有哪四种与类型转换相关的关键字?C风格(C-style)强制转型(T) expression // cast expression to be of type T函数风格(Function-style)强制转型使用这样的语法:T(expression) // cast expression to be of type TC++提供了4种强制转换形式con原创 2014-08-10 10:25:55 · 541 阅读 · 0 评论 -
##剑指offer 4.4 分解简化问题1-复杂链表的复制
面试题26:复杂链表的复制题目:有一个复杂链表,其结点除了有一个m_pNext指针指向下一个结点外,还有一个m_pSibling指向链表中的任一结点或者NULL。其结点的C++定义如下: struct ComplexNode{ int m_nValue; ComplexNode* m_pNext;转载 2014-08-11 10:03:02 · 404 阅读 · 0 评论 -
剑指offer 3.4 代码的鲁棒性2- 合并两个排序的链表
struct ListNode{ int m_nKey; ListNode* m_pNext;};转载 2014-08-10 18:54:05 · 395 阅读 · 0 评论 -
剑指offer 3.4 代码的鲁棒性1- 链表中倒数第K个节点
面试题15:链表中倒数第k个节点题目:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。链表结点定义如下:struct ListNode{ int m_nKey; ListNode* m_pNext;};为了得到倒数第k个结点,很自然的想法是先走到链表的尾端,再从尾端回溯k步。可是输入的是单向链表,转载 2014-08-10 16:37:30 · 365 阅读 · 0 评论 -
剑指offer 4.2 画图形象化问题1- 二叉树的镜像
面试题19:二叉树的镜像题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。镜像,即让该二叉树照镜子得到的结果原创 2014-08-10 19:09:23 · 361 阅读 · 0 评论 -
剑指offer 2.3 数据结构4-替换字符串中的空格
面试题4 : 替换空格 请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy.”,则输出“We%20are%20happy.”。在原来的字符串上替换,并保证输入的字符串后面有足够的空余内存。思路:解法一:最容易想到的就是当遇到空格时,将后面的字符向后面移动2位。此方法的时间复杂度为O(N^2)。解法二: 首先遍历字符原创 2014-08-10 16:13:42 · 357 阅读 · 0 评论 -
剑指offer 2.2 - 赋值运算函数
3、程序问题分析A. 编译错误; B 编译成功,运行时程序崩溃; C 编译运行正常,输出10.Class A{private: int value;public: A(int n) {value = n;} A(A other) {value = other.value;} void print(){std::cout << value << std:原创 2014-08-10 16:04:08 · 396 阅读 · 0 评论 -
剑指offer 6.3 知识迁移能力8-左旋字符串
面试题42: 反转单词顺序 VS 坐旋转字符串转载 2014-08-12 10:23:55 · 468 阅读 · 0 评论 -
剑指offer 3.3 代码的完整性3- 在O(1)时间删除链表结点
面试13:在O(1)时间删除链表结点题目:给定链表的头指针和一个结点指针,在O(1)时间删除该结点。链表结点的定义如下:struct ListNode{ int m_nKey; ListNode* m_pNext;};函数的声明如下:void DeleteNode(ListNode*转载 2014-08-10 16:24:27 · 382 阅读 · 0 评论 -
排序算法总结
///////////////////////////////////////////////////////////////////// 插入排序void insertSort(int arr[], int n){ for(int i = 1; i < n; i ++) { int key = arr[i]; int j = i - 1; while(j >= 0 && a原创 2014-08-11 09:49:42 · 339 阅读 · 0 评论 -
剑指offer 2.3 数据结构3-字符串
2.3.2 字符串字符串是由若干字符组成的序列。由于字符串在编程时使用的平率非常高,为了优化,很多语言都对字符串做了特殊的规定。C/C++ 中每个字符都以字符‘\0'结尾,能很方便找到字符串的尾部。但是每个字符串都有一个额外的字符开销,稍不留神就会造成字符串的越界。如: char str[10]; strcpy(str, "0123456789")原创 2014-08-10 16:10:45 · 422 阅读 · 0 评论 -
##剑指offer 4.4 分解简化问题3-字符串的排序(排列问题)
剑指offer 4.4 分解简化问题2-二叉搜索树与双向链表转载 2014-08-11 10:05:02 · 429 阅读 · 0 评论 -
剑指offer 4.4 分解简化问题2-二叉搜索树转双向链表
面试27:二叉搜索树与双向链表 题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 比如将二元查找树 10 / \转载 2014-08-11 10:03:55 · 372 阅读 · 0 评论 -
剑指offer 3.3 代码的完整性2- 打印1到最大的n位数
面试题12:打印1到最大的n位数题目:输入数字n,按顺序输出从1到最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999。方法一:先求出最大的n位数,然后用一个循环从1开始逐个打印。但,没有规定n的范围,当输入的n很大时,求得的最大的n位数可能会溢出方法二:用字符串来解决大数问题用字符串表达数字的时候,最直观的方法就是字符串里每个字原创 2014-08-10 16:21:23 · 390 阅读 · 0 评论 -
剑指offer 2.4 递归和循环-斐波那契数列计算改进
2.4.2 递归和循环递归:函数内调用这个函数自身循环:通过设置计算的初始值及终止条件,在一个范围内重复与运算在树的遍历中,递归的实现明显比循环简单得多。在面试的时候,如果没有特别要求,要尽量使用递归。递归的缺陷:递归由于是函数调用自身,而函数调用是有时间和空间的消耗的:每一次函数调用,都需要在内存栈中分配空间以保存参数、返回地址及临时变量,而往栈中压入原创 2014-08-10 16:18:20 · 758 阅读 · 0 评论 -
剑指offer 4.3 举例形象化问题4-二叉搜索树的后续遍历序列
面试题24:二叉搜索树的后续遍历序列题目:输入一个转载 2014-08-11 09:53:12 · 285 阅读 · 0 评论 -
剑指offer 3.3 代码的完整性4-在O(n)时间内调整数组顺序,使奇数位于偶数前面
面试题14: 调整数组顺序,使奇数位于偶数前面题目:输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求时间复杂度为O(n)。最简单的思路应该是从头扫描这个数组,每碰到一个偶数时,拿出这个数字,并把位于这个数字后面的所有数字往前挪动一位。挪完之后在数组的末尾有一个空位,这时把该偶数放入这个空位。由于碰到一个偶数,需要移动O(n)个原创 2014-08-10 16:26:34 · 448 阅读 · 0 评论