自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Accept

生活,请对我好一点

  • 博客(67)
  • 资源 (1)
  • 收藏
  • 关注

原创 剑指offer总目录

剑指offer总目录算法有多重要?为什么要写《剑指offer》专栏题解?目录1~10题11~20题21~30题31~40题41~50题51~60题61~65题刷题网站算法有多重要?为什么要写《剑指offer》专栏题解?目录1~10题1.二维数组中的查找2.替换空格3.从头到尾打印链表4.重建二叉树5.用两个栈实现队列6.旋转数组的最小数7.斐波那契数列8.跳台...

2019-08-29 15:27:06 3196 2

原创 机器人的活动范围

第六十五题:机器人的活动范围题目描述思路具体图解如下具体实现代码如下题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该...

2019-08-28 17:15:16 317

原创 矩阵中的路径

第六十四题:矩阵中的路径题目描述思路具体图解如下具体实现代码如下题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一...

2019-08-26 17:53:45 189 1

原创 滑动窗口的最大值

第六十三题:滑动窗口的最大值题目描述思路具体图解如下(双端队列)具体实现代码如下(双端队列)具体图解如下(大顶堆)具体实现代码如下(大顶堆)题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5...

2019-08-26 17:51:31 359

原创 数据流中的中位数

第六十二题:数据流中的中位数题目描述思路具体图解如下具体实现代码如下题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。思路根据题意可知当数据为 ...

2019-08-26 17:48:03 135

原创 二叉搜索树的第k个结点

第六十一题:二叉搜索树的第k个结点题目描述思路具体图解如下具体实现代码如下题目描述给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。思路1.根据二叉搜索树的特点(中序遍历是排序的结果)2. 得到中序遍历的结果,找到 k-1 的位置具体图解如下具体实现代码如下public class S...

2019-08-26 17:45:37 147

原创 序列化二叉树

第六十题:序列化二叉树题目描述思路具体图解如下具体实现代码如下题目描述请实现两个函数,分别用来序列化和反序列化二叉树思路利用先序遍历:将二叉树序列化为字符串将字符串反序列化为二叉树具体图解如下具体实现代码如下public class Solution { // 序列化 String Serialize(TreeNode root) { ...

2019-08-26 17:36:20 118

原创 把二叉树打印成多行

第五十九题:把二叉树打印成多行题目描述思路具体图解如下具体实现代码如下题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。思路1.创建一个队列用于存储结点(按照每行存储)2.声明两个变量 nextNode(代表已经输出的大小) size(代表队列的大小)3.根据两个变量是否相等控制队列每行输出具体图解如下具体实现代码如下public class...

2019-08-26 17:33:44 111

原创 按之字形顺序打印二叉树

第五十八题:按之字形顺序打印二叉树题目描述思路具体图解如下具体实现代码如下题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。思路1.准备两个栈空间,分别存储奇数行和偶数行2.通过变量Count进行控制输出的是奇数行或偶数行3.每次弹栈时必须要把空间的数全部弹出,直到stack为空...

2019-08-26 17:28:17 105

原创 对称的二叉树

第五十七题:对称的二叉树题目描述思路DFS图解如下DFS具体实现代码如下BFS图解如下BFS具体实现代码如下递归版具体实现代码如下题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。思路递归 --> case条件 right left 都为 null(说明已经到了根节点)DFS --> 根节点的 left...

2019-08-26 15:30:17 117

原创 二叉树的下一个结点

第五十六题:二叉树的下一个结点题目描述思路具体图解如下(注:这里引用牛客网***小河沟大河沟***的图解)具体实现代码如下题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路① 将给出的二叉树中序遍历的结果保存,在找到目标结点Target的下一个结点② 结点中包含指向父节点的指针,利用该父...

2019-08-26 15:17:42 121

原创 删除链表中重复的结点

第五十五题:删除链表中重复的结点题目描述思路图解如下非递归的代码实现递归代码实现题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5思路实现原理都是删除重复的Node结点递归非递归图解如下非...

2019-08-26 15:13:11 125

原创 链表中环的入口节点

第五十四题:链表中环的入口节点题目描述思路Hash表实现Hash表具体代码快慢指针快慢指针具体代码题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。思路题目明确给出链表包含环,也就是说明该链表不存在指向 NULL 的末尾结点Hash表:遍历链表并将每个节点添加到hash表中,直到有重复的Node节点,返回该结点快慢指针:定义慢指针p1,快指针p...

2019-08-26 15:08:16 114

原创 字符流中第一个不重复的字符

第五十三题:字符流中第一个不重复的字符题目描述思路具体实现代码如下题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。输出描述:如果当前字符流没有存在出现一次的字符,返回#字符。思路①使用 LinkedHashMa...

2019-08-26 15:01:24 109

原创 正则表达式匹配

第五十一题:正则表达式匹配题目描述思路先看 * 再看 匹配先看匹配 ,再看 *题目描述请实现一个函数用来匹配包括’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(包含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配思路①先看 ...

2019-08-26 14:57:49 274

原创 构建乘积数组

第五十一题:正则表达式匹配题目描述思路先看 * 再看 匹配先看匹配 ,再看 *题目描述请实现一个函数用来匹配包括’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(包含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配思路①先看 ...

2019-08-23 11:05:34 82

原创 表示数值的字符串

第五十题:构建乘积数组题目描述思路暴力解暴力解如下图所示暴力解代码如下优化解优化解下图所示优化解代码如下题目描述给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。思路首先我们要看清楚这个B[i]公式的规律B[i] = A[0] * A[1] * A[i-1...

2019-01-30 16:35:30 162

原创 数组中重复的数字

第四十九题:数组中重复的数字题目描述思路Hash表Hash表如下图所示Hash表代码如下数值与索引对应数值与索引对应下图所示数值与索引对应代码如下题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的...

2019-01-30 16:27:34 173

原创 把字符串转换成整数

第四十八题:把字符串转换成整数题目描述思路具体实现如下图所示具体实现代码如下题目描述将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字...

2019-01-30 16:21:49 183

原创 不用加减乘除做加法

第四十七题:不用加减乘除做加法题目描述思路具体实现如下图所示具体实现代码如下题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。思路这类题只能靠平时的积累了,反正我一般是想不到,位运算平时用的少。前提:二进制中每位数字相加就相当于各个位做异或操作(这里没有考虑进位) 例如: 12 + 9 ==> 1100 ^ 1001计算进位值:相当...

2019-01-30 16:17:50 149

原创 求1+2+3+...+n

第四十六题:求1+2+3+...+n题目描述思路短路&&特性:具体实现如下图所示具体实现代码如下题目描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。思路短路&&特性:首先要看看我们可以使用那些运算符进行解决问题单目运算符:++,–双目运算符:+,-移位...

2019-01-30 16:14:41 545

原创 孩子们的游戏(圈中最后剩下的数)

第四十五题:孩子们的游戏(圈中最后剩下的数)题目描述思路具体实现如下图所示:循环链表代码如下:递归(参考剑指offer书中原解):递归实现代码如下:题目描述每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次...

2019-01-30 16:08:53 188

原创 扑克牌顺子

第四十四题:扑克牌顺子题目描述思路具体实现如下图所示:具体实现代码如下:题目描述LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子…LL不高兴了,他想了想,决定...

2018-12-03 16:49:45 200 2

原创 反转单词顺序列

第四十三题:反转单词顺序列题目描述思路reversereverse如下图所示reverse代码实现stackstack如下图所示stack代码实现题目描述思路reverse①整体反转②在单独进行反转reverse如下图所示reverse代码实现// reversepublic class Solution { public String ReverseSen...

2018-12-03 16:45:37 174

原创 左旋转字符串

第四十二题:左旋转字符串题目描述思路循环队列循环队列如下图所示循环队列代码实现reversereverse如下图所示reverse代码实现题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XY...

2018-12-03 16:41:07 210

原创 和为S的两个数

第四十题:和为S的两个数题目描述思路hash表hash表代码双指针双指针代码题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:对应每个测试案例,输出两个数,小的先输出。思路hash表①将所有元素存储在hash表中②key = 数字 value = 数组的索引③遍历数组查询ha...

2018-12-03 16:33:18 164

原创 和为S的连续正数序列

第四十题:和为S的连续正数序列题目描述思路滑动窗口(从头推导):具体实现如下图所示:具体实现代码如下:定范围,找符合的条件:具体实现如下图所示:具体实现代码如下:题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的...

2018-12-03 14:09:18 160

原创 数组中只出现一次的数字

第三十九题:数组中只出现一次的数字题目描述思路hash表解:hash表解(代码实现):异或运算:具体实现如下图所示:具体实现代码如下:题目描述思路hash表解:将元素都存入hash表,我们会发现只有两个数出现1次hash表解(代码实现):// hash public class Solution { public void FindNumsAppearOnce(int ...

2018-11-25 19:58:17 199

原创 平衡二叉树

第三十八题:平衡二叉树题目描述概念:思路:递归:断每个节点是否是AVL树(代码实现):判断结点的高度:具体实现如下图所示:返例具体实现如下图所示:具体实现代码如下:题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。概念:它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1。若将二叉树节点的平衡因子BF定义为该节点的左子树的深度减去它的右子树的深度,则平衡二叉...

2018-11-25 19:50:05 133

原创 二叉树的深度

第三十七题:二叉树的深度题目描述思路递归:具体实现代码如下(递归):BFS(宽度优先遍历):具体实现如下图所示:具体实现代码如下(BFS):题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。思路递归:假如是空节点,则返回0;否则,原树的深度由左右子树深度较深的加1,为原树的深度具体实现代码如下(递归):...

2018-11-25 19:43:20 192

原创 数字在排序数组中出现的次数

第三十六题:数字在排序数组中出现的次数题目描述思路:暴力解:具体实现代码如下:二分查找:具体实现如下图所示:具体实现代码如下:题目描述统计一个数字在排序数组中出现的次数。思路:暴力解:①定义计数器,遍历②只要找到相同的target(目标值),计数器+1缺点:数组很大时,会做很多无用功具体实现代码如下:public int GetNumberOfK(int [] array ,...

2018-11-25 14:36:55 157

原创 两个链表的第一个公共节点

第三十五题:两个链表的第一个公共节点题目描述思路:具体实现如下图所示:解析:hash表具体实现代码如下:stack栈具体实现代码如下:快慢指针具体实现代码如下:题目描述输入两个链表,找出它们的第一个公共结点。思路:①首先要想清楚链表相交的实质问题,相交后的结点全部相同②考虑到的case情况到底有哪些?链表到底有没有环?③由于此题是找出第一个公共结点,说明两个链表一定相交④转换成具体...

2018-11-25 14:32:36 238

原创 数组中的逆序对

第三十四题:数组中的逆序对题目描述思路暴力解(穷举法)具体实现代码如下:题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007输入描述:题目保证输入的数组中没有的相同的数字数据范围:对于%50的数据,size<=104对于%75的数据...

2018-11-25 13:40:13 197

原创 第一次只出现一次的字符

第三十三题:第一次只出现一次的字符 题目描述在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 思路:        暴力解:                           ①遍历 对每个字符进行判断(是否再次出现)                 ...

2018-11-17 18:29:39 182

原创 丑数

第三十二题:丑数 题目描述把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 思路1:        暴力解:                     从0开始,一直查找到第N个丑数为止,这里写一个判断该数字是否为丑数的方法,该方法的具体实...

2018-11-17 18:27:13 198

原创 把数组排成最小数

第三十一题:把数组排成最小数 题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 思路:         穷举法(暴力解):                                                 把数组中的数字组...

2018-11-17 18:22:14 179

原创 整数中1出现的次数

第三十题:整数中1出现的次数 题目描述求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。 思路:      ...

2018-11-17 18:17:50 546

原创 连续子数组的最大和

第二十九题:连续子数组的最大和 题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第...

2018-11-17 18:13:26 761

原创 最小的k个数

第二十八题:最小的k个数 题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 解析:               此题属于topK问题,还有几种其他的问法,大量数据中取出最小的k个数(或者取出最大k个数)表面上看使用排序可以解决这个问题,但是当数据量足够大的时候,此时还能单纯的使用排序解决这...

2018-11-08 18:01:09 193

原创 数组中出现次数超过一半的数字

第二十七题:数组中出现次数超过一半的数字 题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 思路:             ①首先要找到该数组中出现次数最多的数字target             ②...

2018-11-06 00:25:18 737

yum私服的搭建

经本人亲自测试过,没有问题,可任意测试,如有问题可以留言

2017-11-30

空空如也

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

TA关注的人

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