自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (4)
  • 收藏
  • 关注

原创 博文目录

《剑指offer》1  、数组中任意一个重复的数2  、不修改数组找出重复的数字3  、二维数组中的查找4  、替换空格5  、从尾到头打印链表6  、重建二叉树7  、找出中序遍历后的下一个节点8  、用两个栈实现队列9  、旋转数组的最小数字10、矩阵中的路径11、机器人的运动范围12、剪绳子13、二进制中1的个数14、数值的整数次方15、数打印从1到最大的n位数16、在O1时间删除链表节点1...

2018-05-20 12:46:57 700

原创 BoxCoder for Detection

https://blog.csdn.net/leijieZhang/article/details/90900906宽高和中心的设计初衷https://blog.csdn.net/zijin0802034/article/details/77685438

2019-10-18 15:55:47 293

原创 30、从上到下打印二叉树——剑指offer

栈的压入和弹出顺序问题描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出序列。    首先考察基本功,逻辑判断能力,栈的特性。    本方法思想:创建一个辅助站,建立一个辅助站,模拟入栈出栈操作持续更新...代码附下Java实现:package 栈的压入和弹出序列;/** * 输入两个整数序列, * 第一个序列表示栈的压入顺序, * 请判断第二个序列是否为...

2018-05-21 09:58:55 426

原创 28、包含min函数的栈——剑指offer

包含min函数的栈问题描述:包含min函数的栈    首先考察基本功,栈的数据结构    本方法思想:创建一个辅助站来实现保存当前最小数据,所以现在有两个栈,一个是数据栈,一个是辅助站(存放最小数值),数据栈正常压栈出栈;对于辅助栈,如果压入的数据比min小,则压入,如果压入的数据比min大,则压入min,这样就能确保每次弹出的是当前最小的值。持续更新...代码附下Java实现:package 包...

2018-05-20 12:46:38 210

原创 27、顺时针打印矩阵——剑指offer

顺时针打印矩阵问题描述:顺时针打印矩阵    首先考察基本功,逻辑分析能力    本方法思想:一圈一圈的打印,每次打印的开始是(start,start),比如 0,0   1,1   2,2;判断条件是cols>2start  rows>2start;第二种是自己写的 只需要判断只有一行或者一列的情况,比较容易理解,有三种特殊情况,如下图所示,建议看第二种方法,更好理解持续更新...代...

2018-05-20 12:46:31 201

原创 26、判断二叉树是否为对称的二叉树——剑指offer

判断二叉树是否为对称的二叉树问题描述:判断二叉树是否为对称的二叉树,如果一棵二叉树和其镜像二叉树一样,那么它就是对称的 首先考察基本功,二叉树镜像、前序遍历等,我们可以写一个镜像二叉树的函数,然后判断两棵二叉树是否一样,如果一样则说明正确,二叉树镜像的函数在上一篇写过了,这里不赘述了,这里采用一种特殊的遍历方法的方法。 本方法思想:定义一个前序遍历和对称的前序遍历方法,如果遍历结果一样...

2018-05-20 12:46:20 9431 1

原创 25、二叉树的镜像——剑指offer

二叉树的镜像问题描述:二叉树镜像    首先考察基本功,前序遍历每个节点,交换其左右子树    本方法思想:前序遍历每个节点,如果遍历到节点有子节点,就左右交换两个节点,递归下去持续更新...代码附下Java实现:package 二叉树镜像;/** * 二叉树镜像 * @author user *思路:前序遍历每个节点,如果遍历到节点有子节点,就左右交换两个节点 *递归下去 */二叉树...

2018-05-20 12:46:12 229

原创 24、树的子结构——剑指offer

树的子结构问题描述:判断二叉树B是不是二叉树A的子结构    首先考察基本功,先找到根节点一样的节点,然后递归的判断左子树和右子树,类似于前序遍历    本方法思想:先找到根节点一样的节点,然后递归的判断左子树和右子树,类似于前序遍历持续更新...代码附下Java实现:package 树的子结构;//二叉树的数据结构public class BinaryTree {    int val;...

2018-05-20 12:46:01 319

原创 23、合并两个排序的链表——剑指offer

合并两个排序的链表问题描述:合并两个排序的链表    首先考察基本功,两种方法,一种是用递归的方法,一种非递归的方法。    本方法思想:当前指针指向两个链表头部比较小的那个持续更新...代码附下Java实现:package 合并两个排序的链表;/** * 一种递归方法 一种非递归方法 * @author user * */方法1:非递归class ListNode {    int...

2018-05-20 12:45:54 132

原创 22、反转链表——剑指offer

反转链表问题描述:翻转链表    首先考察基本功,面试时候是简单题,但是经常会被考到。    本方法思想:定义三个指针即可,就可以一次性遍历完并且反转持续更新...代码附下Java实现:package 反转链表;/** * 翻转链表 * 定义三个指针即可 * @author user * */class ListNode {    int val;    ListNode nex...

2018-05-20 12:45:47 157

原创 21、链表中环的入口节点——剑指offer

链表中环的入口节点问题描述:链表中环的入口节点    首先考察基本功,有两种方法,第一种建立一个set集合,添加失败的时候说明找到了重复的,但是需要额外的On的空间;第二种方法是用快慢指针。    本方法思想:分为3步,代码有注释        1、判断是否有环:一快指针,一慢指针,快指针追上满指针则有;        2、判断环的节点个数:一个指针走,一个指针静止,相等时走的次数就是环的个数co...

2018-05-20 12:45:43 107

原创 20、链表中倒数第k个结点——剑指offer

链表中倒数第k个结点问题描述:找到链表中倒数第k个结点    首先考察基本功,正常的方法只需要遍历两次链表,第一次获得链表的长度,第二次找到链表的第K个节点就可以了,这里就不赘述了。这里就提供一个只遍历一次的做法    本方法思想:用两个指针,一个先遍历k-1个点,然后两个一块遍历,最终当前面的遍历完以后,第二个就是倒数第K个节点持续更新...代码附下Java实现:package 链表中倒数第k个...

2018-05-20 12:45:36 137

原创 19、调整数组使得奇数位于偶数前面——剑指offer——前后指针

调整数组使得奇数位于偶数前面问题描述:调整数组使得奇数位于偶数前面    首先考察基本功,有O(n2)的做法,这里就不赘述了。这里就提供一个On的做法    本方法思想:类似于快速排序,设置两个指针,从前往后找偶数,从后往前找奇数,指针没碰到之前就交换。最多只需遍历一遍就能完成交换。持续更新...代码附下Java实现:package 调整数组使得奇数位于偶数前面;public class Tes...

2018-05-19 11:53:50 186

原创 18、表示数值的字符串——剑指offer

表示数值的字符串问题描述:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值, 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。    首先考察逻辑分析能力,具体就是分情况讨论,不存在什么特殊的算法之类的。    本方法思想:合法的数值可以表示为A[.[...

2018-05-19 11:48:22 144

原创 17、正则表达式的匹配——剑指offer

正则表达式的匹配问题描述:请实现一个函数用来匹配包含'.'和'*'的正则表达式, 模式中的字符‘.’表示任意一个字符, 而'*'表示它前面的字符可以出现任意次(含0次)    首先考察逻辑分析能力,具体就是分情况讨论。    本方法思想:分析过程比较复杂,可以直接先看代码,有注释,更加方便理解。        在每轮匹配中,Patttern第二个字符是'*'时: *         1:第一个字符...

2018-05-19 11:40:07 311

原创 16、在O1时间删除链表的节点——剑指offer

在O1时间删除链表节点问题描述:给定单向链表的头指针和一个节点指针, 定义一个函数在O(1)时间删除该节点。    首先本题只是说删除节点的操作是O1的,实际上查找是需要On的,这个要注意一下。    本方法思想:给定当前节点的话 我们是不知道上一个节点的,所以普通方法必须遍历才能找到上一个节点,所以可以这样做:将要要删除的节点的下一个节点的值赋给要删除的节点,删除下一个节点即可,注意判断边界条件...

2018-05-19 11:24:23 740

原创 15、数打印从1到最大的n位数——剑指offer——大数加法和全排列

数打印从1到最大的n位数问题描述:输入数字n,按顺序打印出从1到最大的n位进制数,比如输入3,则打印出1、2、3一直到999.    首先本题可以说非常有陷阱,没说N是多大,所以要考虑大数问题,或者用排列组合。    本方法思想:        方法1:因为没说N多大,所以考虑写一个大整数加法实现,难点在大整数加法的实现上        方法2:用排列组合实现,难点在全排列的递归调用上(本题打印时...

2018-05-19 11:14:30 221

原创 14、数值的整数次方——剑指offer——递归更快更简单

数值的整数次方问题描述:写一个Power函数,不能调用函数库,同时不需要考虑大数问题。    首先本题可以用循环求解,非常简单,这里不提供了就,不过需要注意负数问题。    本方法思想:如果求10次方用循环做,需要做十次,但是如果我们求5次方的2次方只需要五次即可,9次方=4次方*4次方*本身,所以这就使得我们想到用递归求解,同时要注意负数和0的问题。持续更新...代码附下Java实现:packa...

2018-05-19 11:14:19 2718

原创 13、二进制中1的个数——剑指offer——位运算

二进制中1的个数问题描述:输入一个整数,输出该数二进制表示中1的个数    首先本题可以用很多种算法求解,这里提供两种,一种常规方法,一种具有技巧性。    本方法思想:        方法1:通过与1做与运算实现判断,做一次,右移一次,这样直到最后为0时,可以判断一共有多少个1。这种算法在负数的情况下可能会出现死循环。        方法2:把一个整数减去1之后再和原来的整数做位与运算,得到的结...

2018-05-19 11:14:10 865

原创 12、剪绳子——剑指offer——动态规划

剪绳子问题描述:给你一根长度为n的绳子,请把绳子剪成m段(m和n都是整数,n>1并且m>1), 每段绳子的长度记为k[0],k[1],...,k[m]. 请问k[0]*k[1]*...*k[m]可能的最大乘积是多少?    首先本题可以用贪婪算法和动态规划算法求解,虽然贪婪算法的时间复杂度和空间复杂度都比动态规划算法要小,但是要求有一定数学基础,需要定制合理的贪婪策略(面试的时候如果换...

2018-05-19 11:14:01 7576 7

原创 11、机器人的运动范围——剑指offer——回溯法

机器人的运动范围问题描述:地上有一个m行n列的方格, 一个机器人从坐标(0,0)的格子开始移动,它每次可以向左,向右,向上,向下移动一格, 但不能进入行坐标和列坐标的位数之和大于k的格子, 例如:当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18; 但它不能进入方格(35,38),因为3 + 5+3+8 = 19.请问该机器人最多能到达多少个格子?    本方法思想:使用...

2018-05-19 11:13:35 1238

原创 10、矩阵中的路径——剑指offer——回溯法

矩阵中的路径问题描述:判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。 路径可以从矩阵中任意一格开始,每一步可以在矩阵中间向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。    本方法思想:使用回溯法。代码中有num记录共有多少种情况,暂时还存在些许错误,之后会改正,但是是否存在路径的判断是正确的,代码中也有大量注释,能够完成判断路径是否存在,具体见...

2018-05-19 11:12:51 1720

原创 9、旋转数组的最小数字——剑指offer

旋转数组的最小数字问题描述:输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素,例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1    常规方法:遍历数组,找到min即可,时间复杂度为On.    本方法思想:类似于二分查找,每次从中间查找,将数组分成两部分。因为数组是递增的,因此分成的两个数组的最后一个数(结束)有一个比第一个数(起始)小,比如{3,4}...

2018-05-18 19:56:32 169

原创 8、用两个栈实现队列——剑指offer

用两个栈实现队列问题描述:用两个栈实现队列,完成队列的添加(尾部)和删除(头部)操作    本方法思想:本题目主要考察的栈的先入后出的性质,添加的时候用一个栈,弹出的时候用另外一个栈,保证出栈的一定是最先添加的,具体的分析在代码中有注释,直接去看代码吧。持续更新...代码附下Java实现:package 两个栈构建一个队列;/** * 用两个栈构建一个队列 * @author user *...

2018-05-18 18:08:24 390

原创 7、找出二叉树中序遍历的下一个节点——剑指offer

找出中序遍历后的下一个节点问题描述:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点(不存在重复数据)。树中的结点不仅包含左右子结点,同时包含指向父结点的指针    本方法思想:本题目主要考察的是逻辑分析能力,不存在什么算法知识,具体的分析在代码中有注释,分几种情况导论即可,直接去看代码getNext方法吧。持续更新...代码附下Java实现:递归方法:package 找出中序遍历后...

2018-05-18 18:01:13 2979 1

原创 6、重建二叉树——剑指offer——找到根节点递归构建子树

重建二叉树问题描述:已知前序和中序遍历结果,重构二叉树(不存在重复数据)。    本方法思想:前序遍历的第一个遍历是根,找到中序中的根所在的位置loc;在中序遍历中,在loc之前的是左子树,之后的是右子树(中序遍历的性质),递归的去重建左子树和右子树。持续更新...代码附下Java实现:递归方法:package 重建二叉树;/** * 已知前序和中序遍历结果,重构二叉树 * 前序的第一个是根...

2018-05-18 17:52:49 1397

原创 5、从尾到头打印链表——剑指offer——递归方法和堆栈方法

从尾到头打印链表问题描述:从尾到头打印链表。    首先,我们先说一下,这道题目的两种做法:一是递归,二是堆栈。    本方法思想:        递归方法:递归的打印当前节点的下一个节点,但是这种方法当链表太多的时候,调用深度过深,速度很慢。        堆栈方法:遍历一个节点加入堆栈,遍历完成出栈,利用了栈的先进后出的数据结构思想持续更新...代码附下Java实现:1、递归方法:packag...

2018-05-18 17:43:08 360

原创 4、替换空格——剑指offer

替换空格问题描述:将空格替换为%20(王者荣耀的emoji差不多就是这个意思)。    首先,我们先说一下,用java做这个题是非常简单的:直接创建一个StringBuffer类即可。    本方法思想::没什么思想,StringBuffer动态扩容即可。持续更新...代码附下Java实现:package 替换空格;/** * 可以用stringbuffer类 *  * @author u...

2018-05-18 17:35:27 268

原创 3、二维数组中的查找——剑指offer

二维数组中的查找问题描述:一个二维数组,每一行从左到右递增,每一列从上到下递增, 输入一个二维数组和一个整数,判断数组中是否含有整数。    首先,我们先说一般的方法:暴力查找,相信大多数人都会做,这里不详细赘述了。    本方法思想::如果右上角元素大于要查找的元素,则那一列删除(那一列都比这个数字打,就不需要查找这一列了);如果右上角元素小于要查找的元素 ,则那一行删除(说明这一行的元素都比这...

2018-05-18 17:30:50 154

原创 2、不修改数组找出重复的数字——《剑指offer》

不修改数组找出重复的数字问题描述:在一个长度为n的数组里的所有数字都在1~n-1的范围内, 所以数组中至少有一个数字是重复的。请找出数组中任意一个重复的数字,但是不能修改输入的数组。时间最优方法:设置一个辅助数组记录即可  时间On  空间 On空间最优方法:不使用辅助数组,本例是空间最优 ,空间 O1, 时间nlogn思想:类似于二分查找,每次查找一个中间数,并且对整个数组计数,有重复的数字计数...

2018-05-18 17:24:03 265

原创 1、找出数组中任意重复的数字——《剑指offer》

数组中任意一个重复的数问题描述:在一个长度为n的数组里的所有数字都在0到n-1的范围内, 数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复几次。请找出数组中任意一个重复的数字。    首先,我们先说一般的方法:可以建立个数组记录,但是需要空间O(n),相信大多数人都会做,这里不详细赘述了。    比较好的方法:如果没重复的数字,应该是一个坑对应一个数字;有重复的情况下,肯定...

2018-05-18 17:11:01 294

21天学通C++

21天学通C++ 原书第7版_PDF电子书下载 高清 带索引书签目录

2018-12-08

python自然语言处理

python自然语言处理 扫描文档 中文翻译版本 • 剑桥 • 法纳姆 • 科隆 • 塞瓦斯托波尔 • 台北 • 东京

2018-04-24

空空如也

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

TA关注的人

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