自定义博客皮肤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)
  • 收藏
  • 关注

原创 Redis各模式运行方式及优缺点

Redis各模式运行方式及优缺点

2022-10-13 23:16:16 1302

原创 TimescaleDB简介及基本操作

Postgresql的扩展TimescaleDB简介及基本操作

2022-10-13 22:16:08 4056

原创 LDAP(Lightweight Directory Access Protocol)介绍

LDAP简介

2022-10-13 21:52:27 658

原创 @EnableApolloConfig不可用的解决方案

@EnableApolloConfig注解不可用的解决方案

2022-10-13 11:08:35 782

原创 剑指OFFER笔记_25_合并两个排序的链表_JAVA实现

剑指OFFER笔记_25_合并两个排序的链表_JAVA实现题目:合并两个排序的链表解题思路代码ListNode结构代码函数主体部分代码测试部分代码运行结果截图LeetCode运行截图题目:合并两个排序的链表输入两个递增排序的链表,合并这两个链表并使新链表中的节点依然是递增排序的。解题思路此题可以采用递归的方法。首先确定新链表的头节点。将两个链表的头节点值进行比较即可得到。然后确认新链表的头节点的next,此时可以递归调用自身这个函数,将形参进行变化,以获得除去被使用的头节点的两个链表合成之

2020-06-30 14:49:49 99

原创 剑指OFFER笔记_24_反转链表_JAVA实现

剑指OFFER笔记_24_反转链表_JAVA实现题目:反转链表解题思路代码ListNode结构代码函数主体部分代码测试部分代码运行结果截图LeetCode运行截图题目:反转链表定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。解题思路此题需要考虑到一个关键点:当一个节点的next被修改后,如何找到该节点的原next节点?我采取了提前保存的方法。起始的head节点如何处理?应该让这个节点指向null,也就是作为尾节点。如何判断到了尾节点?当这个节点的next==null

2020-06-30 14:27:20 177

原创 剑指OFFER笔记_23_链表中环的入口节点_JAVA实现

剑指OFFER笔记_23_链表中环的入口节点_JAVA实现题目:链表中环的入口节点解题思路代码ListNode结构代码函数主体部分代码测试部分代码运行结果截图题目:链表中环的入口节点如果一个链表中包含环,如何找出环的入口节点?解题思路首先应该判断这个链表中有没有环。可以定义两个节点都赋值为头节点,然后一个节点一次走一步,另一个一次走两步,如果没有环,走得快的节点会遇到node.next==null的情况,否则两个节点会在某一时刻相遇(即相同)。在确定了有无环之后,需要判断哪个节点是入口节点

2020-06-27 13:33:03 119

原创 剑指OFFER笔记_22_链表中倒数第k个节点_JAVA实现

剑指OFFER笔记_21_链表中倒数第k个节点_JAVA实现题目:链表中倒数第k个节点解题思路代码ListNode结构代码函数主体部分代码LeetCode运行截图题目:链表中倒数第k个节点输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。解题思路此题的核心思想是利用两个指针来进行寻找,以达到只遍历一次链表的目的。定义一个preNode指向头节点,定义一个endNode也指向头节点。然后endNode往前走k-1步,每走一步都

2020-06-25 20:31:38 133

原创 剑指OFFER笔记_21_调整数组顺序使奇数位于偶数前面_JAVA实现

剑指OFFER笔记_21_调整数组顺序使奇数位于偶数前面_JAVA实现题目:调整数组顺序使奇数位于偶数前面解题思路代码函数主体部分代码测试部分代码运行结果截图LeetCode运行截图题目:调整数组顺序使奇数位于偶数前面输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。解题思路分别指向数组的开头和结尾元素。指向开头元素的下标向后移动直到指向一个偶数。指向结尾元素的下标向前移动知道指向一个奇数。将两个元素互换位置。继续之前前

2020-06-25 15:05:05 140

原创 剑指OFFER笔记_20_表示数值的字符串_JAVA实现

剑指OFFER笔记_20_表示数值的字符串_JAVA实现题目:表示数值的字符串解题思路代码函数主体部分代码测试部分代码运行结果截图LeetCode运行截图题目:表示数值的字符串请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。解题思路这题需要仔细查看合法和不合法的用例分别有哪些特点:开头允许出现空格,结尾允许出现空格,字符串中间不允许。正负号只允许出现在底数的整数部分之前和指数之前,不可以出现在底数的小数部分之前。小数点只允许出现一次。指数部分不允许出现小数。可以没有整数部

2020-06-24 15:52:24 166

原创 剑指OFFER笔记_19_正则表达式匹配_JAVA实现

剑指OFFER笔记_19_正则表达式匹配_JAVA实现题目:正则表达式匹配解题思路代码函数主体部分代码测试部分代码运行结果截图LeetCode运行截图题目:正则表达式匹配请实现一个函数用来匹配包含’.‘和’*‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’*'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但与"aa.a"和"ab*a"均不匹配。解题思路此题可以利用动态规划法。因为

2020-06-22 15:19:31 257

原创 剑指OFFER笔记_18_2_删除链表中重复的节点_JAVA实现

剑指OFFER笔记_18_2_删除链表中重复的节点_JAVA实现题目:删除链表中重复的节点解题思路代码ListNode结构代码函数主体部分代码测试部分代码运行结果截图LeetCode运行截图题目:删除链表中重复的节点给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。解题思路此题需要将所有重复的数字都删除,而不是将重复的数字删除至只有一个。情况相对会复杂一点。若链表为[1,2,2,3,3,3,4],需要让1直接指向4,所以需要一个ListNode保存1,一个

2020-06-22 00:42:50 103

原创 剑指OFFER笔记_18_删除链表的节点_JAVA实现

剑指OFFER笔记_18_删除链表的节点_JAVA实现题目:删除链表的节点解题思路代码ListNode结构代码函数主体部分代码测试部分代码运行结果截图LeetCode运行截图题目:删除链表的节点给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点。解题思路若给定了节点指针,则不需要遍历整张链表以寻找当前的node。只需要将node的下一个节点用来替换node,node的next指向原node下一个节点的next。代码ListNode结构代码package q18

2020-06-19 13:34:15 113

原创 剑指OFFER笔记_17_打印从1到最大的n位数_JAVA实现

剑指OFFER笔记_17_打印从1到最大的n位数_JAVA实现题目:打印从1到最大的n位数解题思路代码函数主体部分代码测试部分代码运行结果截图LeetCode运行截图题目:打印从1到最大的n位数输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的三位数999。解题思路此题力扣的要求很低,因为规定了函数的返回类型是int[],所以注定不会实现n过大导致int类型无法存储的情况,所以我选择了加大难度。当n较大的时候,我们用int无法存储了,即使是用long

2020-06-16 14:53:10 180

原创 剑指OFFER笔记_16_数值的整数次方_JAVA实现

剑指OFFER笔记_16_数值的整数次方_JAVA实现题目:数值的整数次方解题思路代码函数主体部分代码测试部分代码运行结果截图LeetCode运行截图题目:数值的整数次方实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。解题思路此题让我们自己去实现一个库函数,常规状态下的输入是很简单的,关键的地方在于处理好各种特殊情况。底数为0。这种情况是没有数学意义的,可以自行设置返回值,只要

2020-06-15 14:08:17 169

原创 剑指OFFER笔记_15_二进制中1的个数_JAVA实现

剑指OFFER笔记_15_二进制中1的个数_JAVA实现题目:二进制中1的个数解题思路代码函数主体部分代码测试部分代码运行结果截图LeetCode运行截图题目:二进制中1的个数请实现一个函数,输入一个整数,输出该树二进制表示中1的个数。例如,把9表示成二进制是1001,有2位是1。因此,如果输入9,则该函数输出2。解题思路此题的代码思路很精巧,利用了二进制数的一些特点。假如该数的二进制以1结尾,如1001。此时将其减1,则得到1000。将1001和1000进行与操作,得到的就是1000。假

2020-06-15 11:50:37 138

原创 剑指OFFER笔记_14_2_剪绳子(贪婪算法)_JAVA实现

剑指OFFER笔记_14_2_剪绳子(贪婪算法)_JAVA实现题目:剪绳子(贪婪算法)解题思路代码函数主体部分代码测试部分代码运行结果截图LeetCode运行截图题目:剪绳子(贪婪算法)给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1]…k[m-1] 。请问 k[0]*k[1]*…*k[m-1]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。

2020-06-12 23:40:34 152

原创 剑指OFFER笔记_14_1_剪绳子(动态规划法)_JAVA实现

剑指OFFER笔记_14_1_剪绳子(动态规划法)_JAVA实现题目:解题思路代码函数主体部分代码测试部分代码运行结果截图LeetCode运行截图题目:给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1]…k[m-1] 。请问 k[0]*k[1]*…*k[m-1]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。解题思路如果将一个长度为10

2020-06-12 14:13:34 154

原创 剑指OFFER笔记_13_机器人的运动范围_JAVA实现

剑指OFFER笔记_13_机器人的运动范围_JAVA实现题目:机器人的运动范围解题思路代码函数主体部分代码测试部分代码运行结果截图LeetCode运行截图题目:机器人的运动范围地上有一个m行n列的方格。一个机器人从坐标(0,0)的格子开始移动,它每次可以向左、右、上、下移动一格,但不能进入行坐标和列坐标的数位之和大于k的格子。请问该机器人能够到达多少个格子?解题思路此题与前一题类似,采用回溯法。对(0,0)时的情况开始调用函数计算count,当此处的条件符合时,依次递归调用row±1和col

2020-06-11 17:18:12 237

原创 剑指OFFER笔记_12_矩阵中的路径_JAVA实现

剑指OFFER笔记_12_矩阵中的路径_JAVA实现题目:矩阵中的路径解题思路代码函数主体部分代码测试部分代码运行结果截图LeetCode运行截图题目:矩阵中的路径请设计一个函数,用来判断一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向上下左右移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。解题思路此题利用的方法是回溯法。这条路径有几个性质。1、不能重复走,这意味着需要一个矩阵来储存每个元素是否已经被路径访问过了。

2020-06-10 15:18:57 191

原创 剑指OFFER笔记_11_旋转数组的最小数字_JAVA实现

剑指OFFER笔记_11_旋转数组的最小数字_JAVA实现题目:旋转数组的最小数字解题思路代码函数主体部分代码测试部分代码运行结果截图LeetCode运行截图题目:旋转数组的最小数字把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。解题思路可以用从头到尾遍历一次找到最小值,时间复杂度为O(n)。旋转数组可以看作是两个排序的数组,其中

2020-06-10 13:21:43 131

原创 剑指OFFER笔记_10_2_青蛙跳台阶问题_JAVA实现

剑指OFFER笔记_09_2_青蛙跳台阶问题_JAVA实现题目:青蛙跳台阶问题解题思路代码函数主体部分代码测试部分代码运行结果截图LeetCode运行截图题目:青蛙跳台阶问题一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级的台阶总共有多少种跳法。解题思路代码函数主体部分代码测试部分代码运行结果截图LeetCode运行截图...

2020-06-07 16:42:50 136

原创 剑指OFFER笔记_10_1_斐波那契数列_JAVA实现(非递归)

剑指OFFER笔记_09_1_斐波那契数列_JAVA实现(非递归)题目:解题思路代码函数主体部分代码测试部分代码运行结果截图LeetCode运行截图题目:求斐波那契数列的第n项解题思路各类课程都用递归的方式来演示,而且通常利用这道题作为递归的引入用例。递归拥有代码简洁的优点,但是效率上较低。因为递归在函数中不断调用自身,在每一次调用的过程中,都要往内存栈中分配空间来保存参数,返回地址以及临时变量,而且往栈中压入和取出数据都需要时间,所以效率较低。而且递归的过程中,还会不断计算相同的值,比如

2020-06-06 14:29:24 152

原创 剑指OFFER笔记_09_用两个栈实现队列_JAVA实现

剑指OFFER笔记_09_用两个栈实现队列_JAVA实现题目:用两个栈实现队列解题思路情况分析代码函数主体部分代码测试部分代码运行结果截图LeetCode运行截图题目:用两个栈实现队列用两个栈实现一个队列。队列的生命如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入节点和再队列头部删除节点的功能。解题思路栈的特点是:先进后出,后进先出。队列的特点时:先进先出,后进后出。栈的特点是和队列相反的,题目给了我们两个栈,我们是不是可以利用入第一个栈后在出栈入

2020-06-05 16:40:12 405

原创 剑指OFFER笔记_08_二叉树的下一个节点_JAVA实现

剑指OFFER笔记_08_二叉树的下一个节点_JAVA实现题目:二叉树的下一个节点解题思路代码TreeNode结构代码函数主体部分代码测试部分代码运行结果截图题目:二叉树的下一个节点给定一颗二叉树和其中的一个节点,如何找出中序遍历序列的下一个节点?树中的节点除了有两个分别指向左右子节点的指针,还有一个指向父节点的指针。解题思路中序遍历,也就是说访问一个二叉树的时候,先访问当前节点的左子树,然后访问当前节点的值,最后访问当前节点的右子树。中序遍历的一个特点就是访问的第一个元素是当前二叉树的最左节

2020-06-04 20:28:38 119

原创 剑指OFFER笔记_07_重建二叉树_JAVA实现

剑指OFFER笔记_07_重建二叉树_JAVA实现题目:重建二叉树解题思路用例解析代码TreeNode结构代码函数主体部分代码测试部分代码运行结果截图LeetCode运行截图题目:重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并输出它的根节点。解题思路这题的解题关键在于前序遍历和中序遍历的结果中存在的联系。

2020-06-04 12:02:34 217

原创 剑指OFFER笔记_06_从尾到头打印链表_JAVA实现

剑指OFFER笔记_06_从尾到头打印链表_JAVA实现题目:从尾到头打印链表解题思路代码ListNode结构代码函数主体部分代码测试部分代码运行结果截图LeetCode运行截图题目:从尾到头打印链表输入一个链表的头节点,从尾到头反过来打印出每个节点的值。解题思路链表相比数组来说,各有优劣。链表的空间利用率更高,而数组在查找时时间复杂度更低(O(1))。在访问链表元素时,必须按照从前往后的固定顺序(单向链表),题目要求反向打印,所以可以使用递归的方式实现。递归的方式代码简洁,但是对内存空间

2020-06-03 22:06:02 234

原创 剑指OFFER笔记_05_替换空格_JAVA实现

剑指OFFER笔记_05_替换空格_JAVA实现题目:替换空格解题思路用例解析代码函数主题部分代码测试部分代码LeetCode运行结果截图题目:替换空格解题思路如果对原字符串的元素遍历,遇到空格就将所有元素后移两位,时间复杂度为O(n^2)。所以我采用了时间复杂度O(n),空间复杂度为O(n)的算法。首先遍历一次字符串,将空格的数量spaceCounter记录下来,用于确定待会儿需要建立的辅助存储的大小。确定了空格数之后,建立一个辅助数组,大小为原字符串长度加上2*spaceCounter。

2020-06-02 11:38:07 153

原创 剑指OFFER笔记_04_二维数组中的查找_JAVA实现

剑指OFFER_04_二维数组中的查找_JAVA实现题目:二维数组中的查找解题思路用例解析代码函数主体部分代码测试部分代码题目:二维数组中的查找在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解题思路如果我们将一个二维数组画成一个矩形,那么它将是这样的:用例解析代码函数主体部分代码测试部分代码...

2020-05-31 17:54:34 170

原创 剑指OFFER笔记_03_2_不修改数组找出重复的数字_JAVA实现

剑指OFFER笔记_02_不修改数组找出重复的数字_JAVA实现题目:不修改数组找出重复的数字题设条件中值得关注的点解题思路代码部分第一种方法函数主体部分测试部分第二种方法函数主体部分测试部分题目:不修改数组找出重复的数字在一个长度为n+1的数组里的所有数字都在1~n的范围内,所以数组中至少有一个数字是重复的。请找出数组中任意一个重复的数字,但不能修改输入的数。例如,如果输入长度为8的数组{2,3,5,4,3,2,6,7},那么对应的输出是重复的数字2或者3。题设条件中值得关注的点数组长度为n

2020-05-30 11:39:23 181

原创 剑指OFFER笔记_03_1_寻找数组中重复的数字_JAVA实现

剑指OFFER_01_寻找数组中重复的数字_JAVA实现题目:寻找数组中重复的数字题设条件中值得关注的点书中的算法思想代码函数主体部分代码测试部分代码运行结果LeetCode提交结果题目:寻找数组中重复的数字在一个长度为n的数组里的所有数字都在0~n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。题设条件中值得关注的点数字

2020-05-29 16:35:14 208

空空如也

空空如也

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

TA关注的人

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