自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hh_zheng的博客

一次只做一件事,并做好它!

  • 博客(29)
  • 收藏
  • 关注

原创 自定义广播接收不到(静态注册广播接收器)

问题:按照《第一行代码》中写的自定义广播接收器,采用静态注册的方式,在Android8.0以及更高的版本中无法收到广播信息。需要给intent添加Component或者setPackage也行,就是需要更明确的指定处理这个intent的组件信息。自定义广播接收器代码:public class MyBroadcastReceiver extends BroadcastReceiver {...

2019-08-12 23:08:59 3357 1

原创 百分比布局问题-第一行代码

项目所用版本: api level28 最低兼容至22, JDK 1.8自己的开发版本和书中《第一行代码》不一样,按照书中的源代码出错。在gradle中添加依赖库语句如下:implementation 'androidx.percentlayout:percentlayout:1.0.0'书中原代码: compile 'com.android.support: percent ...

2019-08-12 23:00:01 340 1

原创 MyBatis配置延迟加载,以及延迟加载无效的问题

延迟加载的意思是说,在关联查询时,利用延迟加载,先加载主信息。需要关联信息时再去按需加载关联信息。这样会大大提高数据库性能。首先在resultMap标签中的association和collection标签具有延迟加载的功能第二,在xxxConfig.xml中需要开启延迟加载:<settings> <!-- 开启延迟加载,默认值是true --> <settin...

2018-04-25 16:08:46 2973 2

原创 spring+JDBC+dbcp出现连接不上异常,请问如何解决

就是做一个通过Spring JdbcTemplate连接数据库的Demo,发生了错误,花了很长时间解决,记下来希望可以帮到碰到类似问题的人!控制台大概就是这么一堆连接错误org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.a...

2018-04-22 22:50:27 2142

原创 剑指Offer 面试题34:二叉树中和为某一值的路径 Java代码实现

题目:输入一棵二叉树和整数,打印出二叉树中节点值得和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。解题思路:路径从根节点开始,应该用类似于前序遍历的方式访问树节点。我们需要整个路径,就需要一个容器保存经过路径上的节点,以及一个变量记录当前已有节点元素的和。当前序遍历到某一个节点时,添加该节点到路径,累加节点值。如果该节点为叶子节点并节点值累计等于目标整数,则找

2018-01-11 21:09:58 1279 2

原创 剑指Offer 面试题33:二叉搜索树的后序遍历序列 Java代码实现

题目:输入一个整数数组,判断该数组是不是某个二叉搜索树的后序遍历序列。假设数组的任意两个数字都不相同。解题思路:这里是二叉搜索树,其左子树应该都小于根节点,右子树则都大于根节点。在后续遍历序列中,最后一个数字是根节点,我们根据最后一个数字可以把数组剩余部分按顺序分成两块,小于该数字的以及剩下的。小于该数字的是其左子树的后序遍历序列,另一部分应该是其右子树的后序遍历序列。然后判断这剩余部分也就是

2018-01-11 20:49:51 173

原创 剑指Offer 面试题32:从上到下打印二叉树 Java代码实现

题目一:不分行从上到下打印二叉树解题思路:这其实就是二叉树的层次遍历,树的其他几种遍历方式容易用递归或者借助栈结构实现遍历。分析层次遍历的顺序,不难发现这儿可以借助一个队列作为辅助容器实现层次遍历。具体代码如下:// 层次遍历打印二叉树 public ArrayList printFromTopToButtom(TreeNode root) { ArrayList list = ne

2018-01-11 20:30:12 895

原创 剑指Offer 面试题31:栈的压入、弹出序列 Java代码实现

题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。解题思路:判断一个序列是不是栈的弹出顺序的规律:如果下一个弹出的数字刚好是栈顶数字,那么直接弹出。如果下一个弹出的数字不在栈顶,我们把压栈序列中还没有入栈的数字压入辅助栈,知道把下一个需要弹出的数字压入栈顶为止。如果所有的数字都压入栈了仍没有找到下一个弹出的数字,那么该序列不

2018-01-11 20:21:26 215

原创 剑指Offer 面试题30:包含min函数的栈 Java代码实现

题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min,push及pop的时间复杂度都是O(1)这道题第一反应就是用一个额外的变量存储栈中的最小元素,但是仔细一想,在取出这个最小元素之后呢?怎么得到下一个最小元素。也就是说,在压入这个最小元素之前,我们还要把次小元素保存起来。仔细分析过程,可以这样做,把每次的最小元素都保存起来,放在另外一个辅

2017-12-26 21:17:59 263

原创 剑指Offer 面试题29:顺时针打印 Java代码实现

题目:输入一个矩阵按照从外向里以顺时针的顺序依次打印出每一个数字。把矩阵想象成若干个圈,可以用一个循环来打印矩阵,每一次打印矩阵中的一个圈。此外还需要给出循环结束的条件,我们总是从左上角开始打印,开始的下标依次为(0,0)、(1,1)、(2,2)...举几个栗子,可以得到循环终止条件为,cols>start*2并且rows>start*2。需要注意的是,最后一圈有可能退化成只有一行、只有一

2017-12-26 20:59:59 222

原创 剑指Offer 面试题28:判断一棵二叉树是否镜对称 Java代码实现

题目:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的. public static boolean isSymmetrical(TreeNode root){ if(root==null) return true; return isSym(root.left,root.right); } private sta

2017-12-26 20:50:19 193

原创 剑指Offer 面试题27:二叉树的镜像 Java代码实现

题目:输入一个二叉树,输出该二叉树的镜像。分析树的镜像的定义,就是前序遍历二叉树,如果存在左右子树,就交换左右节点。方便用递归实现。public static void mirrorTree(TreeNode root){ //递归结束条件 if(root==null) return; if(root.left==null&&root.right==null) re

2017-12-07 16:49:56 237 2

原创 剑指Offer 面试题26:树的子结构 Java代码实现

题目:输入两棵二叉树A和B,判断B是不是A的子结构。解题思路分为两步:1.在树A中找到节点值跟B根节点值相同的节点R2.判断A中以R为根节点的子树是否包含和树B一样的结构 //递归hasSubtree其实就是前序遍历了root1 //如果发现root1中存在节点的值等于root2的根节点 那么调用doesTree1HaveTree2进行判断 public static bool

2017-12-07 16:27:25 178

原创 剑指Offer 面试题25:合并两个排序的链表(递归+非递归) Java代码实现

题目:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。不断比较两个链表中的节点,将小的添加到新的链表中,直到有一个链表全部添加完后,直接把另一个链表剩下的拼接到新链表后。要注意空链表的处理。非递归的代码://采用不带头结点的链表 非递归实现 public static ListNode merge(ListNode list1,ListNode list2

2017-12-07 16:09:19 1325

原创 剑指Offer 面试题23:链表中环的入口节点 Java代码实现

题目描述一个链表中包含环,请找出该链表的环的入口结点。这题又用到了一快一慢两个指针的方法,快指针一次走两步慢指针一次走一步。可以证明,若存在环路,则这两个指针一定会在环路中某个地方相遇。这也是检测一个链表是否存在环路的方式。接下来具体分析一下这两个指针什么时候会相遇。假设从第一个数据节点到环的入口节点需要走k步,那么当慢指针slow走到环的入口节点时,快指针fast已经走了2k步,

2017-11-29 22:07:16 289

原创 剑指Offer 面试题24:反转链表 Java代码实现

题目:定义一函数,输入链表的头结点,反转该链表并输出反转后的链表头结点。因为在反转一个节点时,需要把该节点的指针域指向其前一节点,这样就无法访问其后续节点。所以,需要有三个指针分别指向当前节点,前一节点以及后一节点。同样,习惯使用带有头结点的链表结构,第一个数据域为head.next。代码如下:public static ListNode reversedList(ListNode

2017-11-29 21:51:08 340

原创 剑指Offer 面试题22:链表中倒数第k个节点 Java代码实现

题目 输入一个链表,输出该链表中倒数第k个结点。这个问题可以用两个链表指针来实现,这个方法在单向链表的问题中经常使用。具体而言,就是一快一慢两个指针,快指针先走(k-1)步,然后两个指针同时走,当快指针到达链表尾部的时候,慢指针就指向倒数第k个节点。当然移动过程中,还需要判断链表是否存在倒数第k个节点。我们约定链表尾部是倒数第一个节点。private class ListNode{

2017-11-26 13:28:27 207

原创 剑指Offer 面试题21:调整数组顺序使奇数位于偶数前面 Java代码实现

题目:输入一个整数数组,实现一个函数调整数组中数字的顺序,使得所有奇数位于数组前半部分,偶数位于后半部分。最容易想到的方法就是从前往后扫描数组,每遇到一个偶数,取出这个数字,后面所有数字往前挪,然后把这个偶数放在数组末尾。这样的时间复杂度是O(n^2)。为了提高效率,用两个指针,一个指向数组首部,只往后移动;一个指向数组尾部,只向前移动。第一个指针始终在第二个指针前面。如果发现第一个指针指

2017-11-20 21:40:21 467

原创 剑指Offer 面试题20:表示数值的字符串 Java代码实现

题目:表示数值的字符串不喜欢这道题目,偷懒用Java正则表达式和String类的方法来处理了public static boolean isNumeric(String str){ String regex="[+-]?\\d*(\\.\\d*)?([eE][+-]?\\d+)?"; return str.matches(regex); } pu

2017-11-20 21:27:47 370

原创 剑指Offer 面试题19:正则表达式匹配 Java代码实现

题目:正则表达式匹配请实现一个函数用来匹配包含'.'和'*'的正则表达式。字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)主要思想就是字符的第一个字符和模式第一个字符相匹配,那么字符串和模式都向后移动一个字符继续匹配;出现不匹配时直接返回false。但是当第二个字符是'*'时,比较复杂,可以有不同的匹配方式。具体来说:

2017-11-20 19:58:50 2573 6

原创 剑指Offer 面试题18:删除链表节点 Java代码实现

题目:在O(1)时间内删除链表节点。给定单向链表头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点。这儿采用有头结点的单链表结构,头结点的存在是为了方便操作,针对单链表来说,如果带头结点的话,头指针指向头结点,头结点指向首结点;如果不带头结点的话,头指针指向首结点,如果进行插入和删除操作,必须要注意是否是在链表头进行,要分情况处理,而带头结点的不用分情况,比较方便。

2017-11-16 22:08:36 532 1

原创 剑指Offer 面试题17:打印从1到最大的n位数 Java代码实现

题目:输入数字n,按顺序打印从1到最大的n位的十进制数。比如,输入3,则打印出1、2、3一直到999。这个题目好像很简单,求出最大的n位数,然后for循环打印就好了。但是Java中int类型的范围是-2147483648~2147483647,也就是输入的n如果是10,那么int的范围就不够了。我们事先不知道这个数的范围,这一类关于大数的问题,经常使用字符串或者说是字符数组来解决。这里

2017-11-14 21:40:50 382 1

原创 剑指Offer 面试题16:数值的整数次方 Java代码实现

题目:实现函数double power( double base, int exponent),求base的exponent次方。不得使用库函数,同时需要考虑大数问题。大体思路很简单啊,就是base做exponent次相乘就好了。但是我们需要全面,比如base为0,指数为复数,这些情况怎么处理。数学上,0的0次是没有意义的,我们这儿返回0。当指数为负数的时候,可以先求base的 |expone

2017-11-09 17:56:11 177

原创 剑指Offer 面试题15:二进制中1的个数 Java代码实现

剑指Offer 面试题15:二进制中1的个数题目:实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如,9的二进制是1001,有两位是1,那么输入9,函数输出2。看完题目我就想到了Java中Integer类中的bitCount()方法,记得在leetcode上就是这么偷懒完成accepted的,哈哈!正确的解题思路是让1和该数的二进制表示的每一位相与,若不为零则表示该位是

2017-11-08 21:44:18 343

原创 剑指Offer面试题14:剪绳子 Java代码实现

剑指Offer 面试题14:剪绳子原题描述:面试题14:剪绳子给你一根长度为n的绳子,请把绳子剪成m段(m,n都是大于1 的整数)。每段绳子长度的可能最大乘积是多少。分析问题的时候,很容易就可以得出这个问题的递归式:记长度为n的最大乘积为f(n),易知f(n)=max{ f(i)*f(n-i) },其中0首先,计算出最基本的几个子

2017-11-07 21:30:16 2669

原创 剑指Offer面试题13:机器人的运动范围 Java实现

剑指Offer 面试题13:机器人的运动范围原题描述:面试题13:机器人的运动范围地上有一个m行n列的方格,机器人从坐标(0,0)的各自开始移动,每次可以往上下左右移动一格,但不能进入行列坐标的数位之和大于k的格子。问机器人能够达到多少个格子。这题还是用回溯法解决问题,直接上Java代码了!/** * @param thres

2017-11-06 22:19:33 426

原创 剑指offer面试题12:矩阵中的路径Java实现版

剑指Offer 面试题12:矩阵中的路径代码思路完全来自剑指Offer书中,因Java和c++的语言区别,有少量改动。代码整体思路都在代码注释中,仅供参考,共勉。原题描述:面试题12:矩阵中的路径设计一个函数,判断在一个矩阵中是否存在包含某字符串的所有字符的路径。路径可以从任意一格开始,每步可以向上下左右移动一格。路径不能重复进入某一格子。该面试题所在章节为 2.4.3回溯

2017-11-03 22:14:33 304

原创 Java RTTI(Run-Time Type Identification) 运行时类型识别

Java在运行时识别对象和类的信息,主要有两种方式:一种是“传统的RTTI”,它嘉定我们在编译时已经知道了所有的类型;另一种是“反射机制”,它允许我们在运行时发现和使用累的信息。

2017-10-19 21:29:12 244

原创 剑指offer面试题7:重建二叉树 Java代码实现

剑指offer面试题7:重建二叉树的Java实现思路基本根据书中的代码,部分代码因Java和c++的不同有少量变化。自己这个Java新手所写,可能存在一些问题,欢迎大家一起探讨!二叉树节点类代码如下:public class BinaryTreeNode { int value; BinaryTreeNode left; BinaryTreeNode right;

2017-10-17 18:33:38 292

空空如也

空空如也

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

TA关注的人

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