- 博客(56)
- 收藏
- 关注

原创 【剑指offer-第二版】部分题目与解答【C++版本】
20180612求职在即,《剑指offer》作为大家都推荐的一本应试宝典,确实也有刷一刷的必要。很多题目都比较经典,也涵盖了大多数的算法和数据结构。把自己刷题的过程做一个总结,权当是一个笔记。 我自己使用的《剑指offer》第二版,所以题目顺序也按照第二版书上的顺序。 如果是牛客网上面《剑指offer》专题上面有的题目,给出的代码都能够AC通过,但如果是没有的题目,就只做了几个简单...
2018-06-12 18:39:11
7509
1

原创 【剑指offer】面试题45:把数组排成最小的数【C++版本】
题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如:输入数组{3,32,321},则打印出这3个数字能排成的最小数字321323解题思路:1.制定一种新的排序规则,数组根据这个规则排序之后能够排成一个最小的数字。 2.要制定新的排序规则,就必须制定新的比较规则,即通过比较m和n,来确定哪一个应该排在前面(即哪一个更“小”)...
2018-06-09 16:33:57
1342

原创 ubuntu安装和使用git总结
1.安装gitsudo add-apt-repository ppa:git-core/ppa //添加源sudo apt-get update //更新sudo apt-get install git //自动安装gitgit --version ...
2018-04-28 20:12:11
31796
原创 【剑指offer】面试题10:斐波那契数列【C++版本】
总结的部分题目思路与代码,待完善。 【剑指offer-第二版】部分题目与解答【C++版本】题目:斐波那契数列求斐波那契数列的第n项。斐波那契数列的定义如下:f(0) = 0;f(1) = 1;f(n) = f(n - 1) + f(n - 2); n >= 2解题思路:1.使用递归的方法是最简单的,但是效率成问题,有很多重复的计算。其实就是一种自顶向下的...
2018-09-08 22:13:35
764
原创 【剑指offer】面试题9:用两个栈实现队列【C++版本】
总结的部分题目思路与代码,待完善。 【剑指offer-第二版】部分题目与解答【C++版本】题目:用两个栈实现队列用两个栈实现一个队列。队列的声明如下,请实现它的两个成员函数,分别完成在队列尾部插入节点和在队列的头部删除节点class solution{public: void push(int node); int pop();private: ...
2018-09-08 21:38:36
566
原创 【剑指offer】面试题8:二叉树的下一个节点【C++版本】
总结的部分题目思路与代码,待完善。 【剑指offer-第二版】部分题目与解答【C++版本】题目一:二叉树的下一个节点给定一颗二叉树和其中的一个节点,如何找出中序遍历序列的下一个节点?树中的节点除了指向左右子树的指针,还有一个指向父节点的指针。树节点定义如下:struct TreeLinkNode { int val; struct TreeLinkNode...
2018-09-08 21:19:06
685
原创 【剑指offer】面试题7:重建二叉树【C++版本】
总结的部分题目思路与代码,待完善。 【剑指offer-第二版】部分题目与解答【C++版本】题目一:重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树(假设没有重复数字)。树节点定义如下:struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(in...
2018-09-08 17:46:15
1967
原创 【剑指offer】面试题6:从尾到头打印链表【C++版本】
总结的部分题目思路与代码,待完善。 【剑指offer-第二版】部分题目与解答【C++版本】题目一:从尾到头打印链表输入一个链表的头节点,从尾到头反过来打印出每个节点的值。链表节点定义如下:struct ListNode { int val; struct ListNode *next; ListNode(int x) : ...
2018-09-08 16:39:50
641
原创 【剑指offer】面试题5:替换空格【C++版本】
总结的部分题目思路与代码,待完善。 【剑指offer-第二版】部分题目与解答【C++版本】题目一:替换空格请实现一个函数,把字符串中的每个空格替换成“%20”,例如,输入”We are happy.”,则输出”We%20are%20happy.”。解题思路:本题主要考察对字符串的处理 一般像这种需要向后扩充容量重新整理内存的,最好能够考虑到从尾部开始整理的方法 1...
2018-09-07 19:57:44
815
原创 【剑指offer】面试题4:二维数组中的查找【C++版本】
总结的部分题目思路与代码,待完善。 【剑指offer-第二版】部分题目与解答【C++版本】题目一:二维数组中的查找在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下的递增的顺序排序,请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。。解题思路:1.目标数为T,从二维数组的最右上角开始查找,如果T比该数字小,说明T比该数...
2018-09-07 19:28:52
600
原创 【剑指offer】面试题3:数组中重复的数字【C++版本】
总结的部分题目思路与代码,待完善。 【剑指offer-第二版】部分题目与解答【C++版本】题目一:找出数组中重复的数字在一个长度为n的数组里的所有数字都在0~n-1范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。...
2018-09-07 12:58:50
2171
原创 【剑指offer】面试题2:单例模式【C++版本】
总结的部分题目思路与代码,待完善。 【剑指offer-第二版】部分题目与解答【C++版本】题目:实现singleton模式设计一个类,我们只能生成该类的一个实例。解题思路:1.这个题《剑指offer》上面使用的是C#来解答,这里给出一种C++的解答方式,和原书中的解法三比较相似。实现单例模式【C++版本】//注意到实现中m_pInstance和GetInsta...
2018-09-06 17:52:10
956
原创 【剑指offer】面试题1:赋值运算符函数【C++版本】
总结的部分题目思路与代码,待完善。 【剑指offer-第二版】部分题目与解答【C++版本】题目:赋值运算符函数如下为类型CMyString的声明,请为该类型添加赋值运算符函数。class CMyString {public: //构造函数 CMyString(char *pData = nullptr); CMyString(const CM...
2018-08-31 12:04:19
1745
1
原创 【剑指offer】面试题66:构建乘积数组【C++版本】
总结的部分题目思路与代码,待完善。 【剑指offer-第二版】部分题目与解答【C++版本】题目:构建乘积数组给定一个数组A[0,1,...,n−1]A[0,1,...,n−1]A[0,1,...,n-1],请构建一个数组B[0,1,...,n−1]B[0,1,...,n−1]B[0,1,...,n-1],其中BBB的元素B[i]B[i]B[i] = A[0]∗A[1]∗......
2018-08-29 20:37:34
618
原创 【剑指offer】面试题65:不用加减乘除做加法【C++版本】
总结的部分题目思路与代码,待完善。 【剑指offer-第二版】部分题目与解答【C++版本】题目:不用加减乘除做加法写一个函数,求两个整数之和,要求在函数体内不得使用加减乘除四则运算符。解题思路:1.不能用四则运算那就使用位运算。 2.按照《剑指offer》上面的方法分三步分析:第一步各位相加但是不计进位,两个1和两个0相加的结果都为0,1和0相加的结果为1,这里可以...
2018-08-29 18:11:27
344
原创 【剑指offer】面试题64:求1+2+...+n【C++版本】
总结的部分题目思路与代码,待完善。 【剑指offer-第二版】部分题目与解答【C++版本】题目:求1+2+…+n求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字即条件判断语句(A?B:C)(A?B:C)(A?B:C)。解题思路:1.可以使用类的构造函数来解决,这个方法可以好好看看,因为很多小细节。比如使用类名来调...
2018-08-29 17:07:24
719
原创 【剑指offer】面试题63:股票的最大利润【C++版本】
总结的部分题目思路与代码,待完善。 【剑指offer-第二版】部分题目与解答【C++版本】题目:股票的最大利润假设把某股票的价格按照时间先后顺序储存在数组中,请问买卖该股票一次可能获得的最大利润是多少?例如,一只股票在某些时间节点的价格为{9,11,8,5,7,12,16,14}。如果我们能在价格为5的时候买入并在价格为16的时候卖出,则能收获最大的利润11。解题思路:...
2018-08-28 23:08:59
1782
2
原创 【剑指offer】面试题62:圆圈中最后剩下的数字【C++版本】
总结的部分题目思路与代码,待完善。 【剑指offer-第二版】部分题目与解答【C++版本】题目:圆圈中最后剩下的数字0,1,……,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里面删除第m个数字。求出这个圆圈里剩下的最后一个数字。解题思路:1.使用容器模拟一个环形链表来解答。可以AC的解法【C++版本】#include <iostream...
2018-08-28 21:26:07
600
原创 【剑指offer】面试题61:扑克牌中的顺子【C++版本】
总结的部分题目思路与代码,待完善。 【剑指offer-第二版】部分题目与解答【C++版本】题目:扑克牌中的顺子从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。其中A为1,J为11,Q为12,K为13,而大小王为0,且大小王能够当做任意一张牌。解题思路:1.首先应该对数组进行排序。 2.统计数组中大小王(0)出现的个数。 3.统计数组中所有相邻数...
2018-08-28 20:08:41
1084
原创 【剑指offer】面试题60:n个骰子的点数【C++版本】
总结的部分题目思路与代码,待完善。 【剑指offer-第二版】部分题目与解答【C++版本】题目:滑动窗口的最大值把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。解题思路:1.解法一可以使用递归来求解。详细代码见书。 2.解法二的思路为:在一轮循环当中,第一个数组总的第n个数字表示骰子和为n出现的次数。在下一轮循环中,我们...
2018-08-28 19:23:06
1204
原创 【剑指offer】面试题59:滑动窗口的最大值【C++版本】
总结的部分题目思路与代码,待完善。 【剑指offer-第二版】部分题目与解答【C++版本】题目:滑动窗口的最大值给定一个数组和滑动窗口的大小,请找出所有滑动窗口里的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,它们的最大值分别为{4,4,6,6,6,5}。解题思路:1.这个题目需要使用双向队列deque来进行解答...
2018-08-28 19:20:53
637
原创 【剑指offer】面试题58:翻转单词顺序/左旋转字符串【C++版本】
总结的部分题目思路与代码,待完善。 【剑指offer-第二版】部分题目与解答【C++版本】题目一:翻转单词顺序输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串“I am a student.”,则输出“student. a am I”。解题思路:1.第一步翻转句子中的所有字符,例如“I am a s...
2018-08-28 15:39:42
677
原创 【剑指offer】面试题57:和为S的两个数字/和为S的连续正数序列【C++版本】
总结的部分题目思路与代码,待完善。 【剑指offer-第二版】部分题目与解答【C++版本】题目一:和为s的两个数字输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得他们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。解题思路:1.使用hash表能够实现O(n)的时间复杂度,但是额外需要O(n)的空间,所以不是特别好。 2.应该抓住这里数组是一个递增...
2018-08-28 11:01:02
447
原创 【剑指offer】面试题56:数组中数字出现的次数【C++版本】
总结的部分题目思路与代码,待完善。 【剑指offer-第二版】部分题目与解答【C++版本】题目:数组中只出现一次的两个数字一个整形数组中除了两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。解题思路:1.注意到时间复杂度是O(n)而空间复杂度是O(1)。 2.看到这种出现偶数次数的情况,都可以考虑...
2018-08-27 20:20:37
867
原创 【剑指offer】面试题55:二叉树的深度/二叉平衡树【C++版本】
总结的部分题目思路与代码,待完善。 【剑指offer-第二版】部分题目与解答【C++版本】题目:题目一:二叉树的深度 输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。 树的节点的定义为:struct TreeNode { int val; treeNode *left;...
2018-08-27 17:21:28
636
1
原创 【剑指offer】面试题54:二叉搜索树的第K大节点【C++版本】
总结的部分题目思路与代码,待完善。 【剑指offer-第二版】部分题目与解答【C++版本】题目:给定一棵二叉搜索树,请找出其中第K大的节点。 树的节点的定义为:struct treeNode { int val; treeNode *left; treeNode *right; treeNode(int x) :val...
2018-08-24 20:06:14
2205
1
原创 【剑指offer】面试题53:在排序数组中查找数字【C++版本】
总结的部分题目思路与代码,待完善。 【剑指offer-第二版】部分题目与解答【C++版本】题目:数字在排序数组中出现的次数。统计一个数字在排序数组中出现的次数。例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,应该输出4。解题思路:1.遍历数组的复杂度为O(n),要找比该复杂度更低的算法,那么就能想到二分查找,其复杂度为O(logn)。 2.使用二分查找找到该数字...
2018-08-24 12:08:50
610
原创 【剑指offer】面试题52:两个链表的第一个公共节点【C++版本】
总结的部分题目思路与代码,待完善。 【剑指offer-第二版】部分题目与解答【C++版本】题目:输入两个链表,找出它们的第一个公共节点。链表节点定义如下:struct ListNode { int m_nKey; ListNode* m_pNext;};解题思路:1.这个题主要需要抓住一点,观察链表节点构造发现是一个单向链表,且对于一个节...
2018-08-23 22:34:30
616
原创 【剑指offer】面试题51:数组中的逆序对【C++版本】
总结的部分题目思路与代码,待完善。 【剑指offer-第二版】部分题目与解答【C++版本】题目:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。例如在数组{7,5,6,4}中,一共存在5个逆序对。解题思路:1.强解的复杂度太高了。 2.使用二分的思路来求解。具体解题思路见书可以AC的解法【C++...
2018-08-23 21:29:17
1292
1
转载 hadoop常用命令
hadoop常用命令: hadoop fs 查看Hadoop HDFS支持的所有命令 hadoop fs –ls 列出目录及文件信息 hadoop fs –lsr 循环列出目录、子目录及文件信息 hadoop fs –put test.txt /user/sunlightcs 将本地文件系统的test.txt复制到HDFS文件系统的/user/sunlightcs目...
2018-06-15 14:48:18
164
转载 Hadoop,MapReduce,YARN和Spark的区别与联系
(1) Hadoop 1.0 第一代Hadoop,由分布式存储系统HDFS和分布式计算框架MapReduce组成,其中,HDFS由一个NameNode和多个DataNode组成,MapReduce由一个JobTracker和多个TaskTracker组成,对应Hadoop版本为Hadoop 1.x和0.21.X,0.22.x。 (2) Hadoop 2.0 第二代Hadoop...
2018-06-14 20:02:35
888
原创 【剑指offer】面试题16:数值的整数次方【C++版本】
题目:实现函数double Power(double base,int exponent),求base的exponent次方。不需要考虑大数问题解题思路:1.这个题目看起来很简单,但其实考察的是考虑到边界问题和错误输入 2.应该分别分析底数和指数大于0、等于0、小于0的情况 两种最特殊的情况: 1.当底数为0而指数为负数的时候,是错误输入。 2.当指数为负数的...
2018-06-12 20:58:33
477
原创 【剑指offer】面试题15:二进制中1的个数【C++版本】
题目:请实现一个函数,输入是一个整数,输出该数二进制表示中1的个数。例如,把9表示成二进制是1001,有2位是1。因此,如果输入9,则该函数输出为2。解题思路:1.不对数据进行移位,而是移位和数据进行与操作的1。因为移位数据可能会因为符号位而造成死循环 2.O(1)的解法。使用公式n&amp;amp;nbsp;=&amp;amp;nbsp;(n-1)&amp;amp;amp;n;n&amp;amp;nbsp;=&
2018-06-12 19:26:29
868
原创 【剑指offer】面试题14:剪绳子【C++版本】
题目:给一段长度为n的绳子,把绳子剪成m段(m,n都是整数且n&amp;gt;1,m&amp;gt;1,即至少要剪一次),问每段绳子长度的乘积最大是多少?求解思路:1.使用动态规划求解: 2.确定子问题:例如绳子的长度为8,那么可以剪成1,7两段,那么此时又要求解长度为7的绳子怎么剪最好。依次类推。 3.确定转移方程,设方程f(i)&amp;nbsp;f(i)f(i)表示长度为i&amp;nbsp;ii的绳子剪成...
2018-06-12 17:24:20
2025
原创 【剑指offer】面试题50:(字符流中)第一个只出现一次的字符【C++版本】
题目:字符串中第一个只出现一次的字符。在字符串中找出第一个只出现一次的字符。如输入&amp;quot;abaccdeff&amp;quot;&amp;amp;nbsp;&amp;quot;abaccdeff&amp;quot;&amp;quot;abaccdeff&amp;quot;,则输出&amp;amp;nbsp;′&amp;amp;nbsp;b&a
2018-06-12 15:50:50
1153
原创 【剑指offer】面试题49:丑数【C++版本】
题目:我们把只包含因子2,3,5的数称作丑数。求按从小到大的顺序的第1500个丑数。例如,6,8都是丑数,但14不是丑数,因为它包含因子7。习惯上我们把1当作第一个丑数。解题思路:1.首先要理解丑数的概念。换个角度理解,因为丑数只能被2,3,5整除。也就是说,如果一个数能被2整除,就继续除以2,能被3整除,就继续除以3,能被5整除,就继续除以5。这样到最后得到的结果是1,那么这个数...
2018-06-12 11:34:48
1184
原创 【剑指offer】面试题48:最长不含重复字符的子字符串【C++版本】
题目:请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。假设字符串中只包含&amp;amp;amp;amp;nbsp;′&amp;amp;amp;amp;nbsp;a&amp;amp;amp;amp;nbsp;′&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;′a′'a'~&amp;amp;amp;amp;nbsp;′&amp
2018-06-11 21:24:59
2529
1
原创 【剑指offer】面试题47:礼物的最大价值【C++版本】
题目:在一个m×n&amp;nbsp;m×nm×n的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格,直到到达棋盘的右下角。给定一个棋盘及其上面的礼物,请计算你最多能够拿到多少价值的礼物。解题思路:1.使用动态规划求解。 2.定义一个函数f(i,j)&amp;nbsp;f(i,j)f(i,j)表示达到坐标(i,j)&amp;...
2018-06-11 19:43:23
1523
原创 【剑指offer】面试题46:把数字翻译成字符串【C++版本】
题目:给定一个数字,我们按照如下规则把它翻译为字符串:0翻译成“a”,1翻译成“b”,……,11翻译成“l”(小写的“L”),……,25翻译成“z”。一个数字可能有多个翻译。例如:12258有5种不同的翻译,分别是“bccfi” 、“bwfi” 、“bczi” 、“mcfi” 和 “mzi”。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。解题思路:1.使用动态规划的思...
2018-06-11 16:46:10
975
原创 【剑指offer】面试题44:数字序列中某一位的数字【C++版本】
20180609题目:数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从0开始计数)是5,第13位是1,第19位是4,等等。请写一个函数,求任意第n位对应的数字。解题思路:1.从位数为1开始统计不同的位数的数字所占的总位数,如0~9一共占10位,10~99一共占180位…并进行累加,一旦累加的和超过给定的位数,...
2018-06-09 15:20:19
967
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人