自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 LeetCode笔记(java)

LeetCode笔记(java)哈希表哈希表1.两数之和

2021-01-20 18:37:36 281

原创 1894.找到需要补充粉笔的学生(java)

1894.找到需要补充粉笔的学生题目思路代码LeetCode笔记汇总题目一个班级里有 n 个学生,编号为 0 到 n - 1 。每个学生会依次回答问题,编号为 0 的学生先回答,然后是编号为 1 的学生,以此类推,直到编号为 n - 1 的学生,然后老师会重复这个过程,重新从编号为 0 的学生开始回答问题。给你一个长度为 n 且下标从 0 开始的整数数组 chalk 和一个整数 k 。一开始粉笔盒里总共有 k 支粉笔。当编号为 i 的学生回答问题时,他会消耗 chalk[i] 支粉笔。如果剩余粉笔数

2021-09-10 17:10:31 171

原创 746.使用最小花费爬楼梯(java)

746.使用最小花费爬楼梯题目思路代码LeetCode笔记汇总题目数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值 cost[i](下标从 0 开始)。每当你爬上一个阶梯你都要花费对应的体力值,一旦支付了相应的体力值,你就可以选择向上爬一个阶梯或者爬两个阶梯。请你找出达到楼层顶部的最低花费。在开始时,你可以选择从下标为 0 或 1 的元素作为初始阶梯。思路动态规划状态转移方程为 dp[i]=min(dp[i−1]+cost[i−1],dp[i−2]+cost[i−2]

2021-09-09 10:26:32 185

原创 70.爬楼梯(java)

70.爬楼梯题目思路代码LeetCode笔记汇总题目假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。思路类似于斐波那契数列。由题意可知上第n阶之前的情况有n-1和n-2两种,因此动态规划的公式dp[n] = dp[n-1] + dp[n-2]初始化dp[0]、dp[1]为1代码class Solution { public int climbStairs(int n) {

2021-09-09 10:02:00 190

原创 509.斐波那契数(java)

509.斐波那契数题目思路代码LeetCode笔记汇总题目斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1思路n为0时返回0,n为1时返回1。当n大于1时,返回fib(n-1)+fib(n-2)代码class Solution { public int fib(int n) {

2021-09-09 09:37:08 110

原创 1137.第N个泰波那契数(java)

1137.第N个泰波那契数题目思路代码LeetCode笔记汇总题目泰波那契序列 Tn 定义如下:T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2给你整数 n,请返回第 n 个泰波那契数 Tn 的值。思路特殊情况n为0时返回0,为1或2时返回1。当n大于3时,Tn为前三项和,因此我们可以用三个数来存储这三项的值,并且不断向后延长到n。代码class Solution { public int tri

2021-09-09 09:33:16 147

原创 11.盛水最多的容器(java)

11.盛水最多的容器题目思路代码LeetCode笔记汇总题目给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。思路盛水量即面积。用长方形的面积公式l*h计算即可。本题中先定义左右两个指针,计算两个指针所围成区域的面积,其中底l=right-left,高为两者高度中的较小者。

2021-09-07 11:13:02 270

原创 1221.分割平衡字符串(java)

1221.分割平衡字符串题目思路代码LeetCode笔记汇总题目在一个 平衡字符串 中,‘L’ 和 ‘R’ 字符的数量是相同的。给你一个平衡字符串 s,请你将它分割成尽可能多的平衡字符串。注意:分割得到的每个字符串都必须是平衡字符串。返回可以通过分割得到的平衡字符串的 最大数量 。思路代码...

2021-09-07 10:36:09 197

原创 力扣704.二分查找(java)

704.二分查找题目思路代码LeetCode笔记汇总题目给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。思路定义左右两个指针,左指针开始时指向0,右指针指向末尾,即nums.length-1。再计算一个中间指针mid,它的值即左右指针的中点。简单的计算方法为(left+right)/2 ,但是有可能左右指针相加会超过int类型的最大值,因此采用left + (right

2021-09-06 19:41:29 150

原创 力扣23.合并k个升序链表(java)

力扣23.合并k个升序链表题目思路代码LeetCode笔记汇总题目给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。思路先考虑特殊情况,当传入的lists中没有链表,即lists.length()==0 时,直接返回null当非空时,用容量为K的优先队列存储每个链表中的头节点,然后将队列中的最小元素出列,加入到结果链表中,再将出列链表的下一个元素加入到队列之中,即pq.add(list)最后返回结果链表,这里需要使用到虚拟头节点dummy

2021-09-05 15:54:04 233

原创 力扣6.Z字形变换(java)

力扣6.Z字形变换题目思路代码LeetCode笔记汇总题目思路先考虑特殊情况:当行数为1时,只有一行,即直接输出s即可当行数大于1时,由于涉及到了较多的字符串拼接,所以使用StringBuilder来处理主要的思路为按行读取字符,则一共需要读取numRows行。观察图像我们可以发现图像结构的规律为2*numRows-2为一组。我们以第i行(i从0开始)为例分析:首先每一组的第i个如果存在则一定就是第i行的字符。 当i不为第0行或第numRows行时,则还需添加位于z的斜边的字符代码c

2021-05-20 16:43:53 165

原创 力扣5.最长回文子串(java)

力扣5.最长回文子串题目思路代码LeetCode笔记汇总题目给你一个字符串 s,找到 s 中最长的回文子串。思路先考虑特殊情况:s为空或者s的长度小于1,此时的s必定不为回文串,直接返回一个空串""正常情况下,使用中心扩展算法如果一个子串是回文串,根据回文串的定义,将其左右两边各去掉一个字母之后仍然为回文串因此我们可以在已知的回文串两边各再扩展一个字符,如果相等,则仍未回文串代码class Solution { public String longestPalindrome(S

2021-05-20 15:53:59 175

原创 力扣292.Nim游戏(java)

力扣292.Nim游戏题目思路代码LeetCode笔记汇总题目思路拿石子问题的思路就是保证每次自己拿完之后,还剩下的个数是每次能拿去的最大个数+1本题中只要保证输入的不能被4整除即可代码class Solution { public boolean canWinNim(int n) { return (n % 4 != 0); }}...

2021-04-13 17:30:33 141

原创 Invalid content was found starting with element ‘{“http://xmlns.jcp.org/xml/ns/javaee“:init-param}‘.

Invalid content was found starting with element ‘{“http://xmlns.jcp.org/xml/ns/javaee”:init-param}’.解决方案:将标签写在标签之前<init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value

2021-04-13 15:30:32 279

原创 力扣153.寻找旋转排序数组中的最小值(java)

力扣153.寻找旋转排序数组中的最小值题目思路代码LeetCode笔记汇总题目思路直接遍历数组,输出最小值即可先定义一个ans,初始值为Integer.MAX_VALUE,然后在数组中寻找小于ans的值并替换遍历完之后返回ans因为原数组时升序排列的,故数组中左边的元素一定比右边的元素小。因此可以在数组中定义一个指针,如果这个指针左边的值小于右边的值,就返回右边的值。如果遍历完之后还没有return,则返回第一个元素代码class Solution { public in

2021-04-08 19:07:27 174

原创 javax.management.InstanceNotFoundException: Catalina:type=Server的解决

javax.management.InstanceNotFoundException: Catalina:type=Server在运行tomcat时,会出现如下异常javax.management.InstanceNotFoundException: Catalina:type=Server我的解决方式是更改tomcat配置文件中的Host标签和端口号配置文件是位于tomcat安装目录下的conf目录中的server.xml文件host标签<Host name="localhost" a

2021-04-07 19:48:21 2443

原创 java正则表达式

正则表达式语法在其他语言中,\\ 表示:我想要在正则表达式中插入一个普通的(字面上的)反斜杠,请不要给它任何特殊的意义。在 Java 中,\ \表示:我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。所以,在其他的语言中(如Perl),一个反斜杠 \ 就足以具有转义的作用,而在 Java 中正则表达式中则需要有两个反斜杠才能被解析为其他语言中的转义作用。也可以简单的理解在 Java 的正则表达式中,两个 \ \代表其他语言中的一个 \,这也就是为什么表示一位数字的正则表达式是 \\d,而表

2021-04-05 19:44:36 75

原创 Exception in thread “main“ org.apache.ibatis.exceptions.PersistenceException的解决

Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException在使用mybatis开发的时候,会出现如下异常Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException: 这是因为我们没有正确的配置数据库的驱动和连接信息。对于8.0以上的MySql数据库,需要在mybatis的主配置文件中修改下面两个信息<pr

2021-04-05 19:04:17 2313 1

原创 力扣96.不同的二叉搜索树(java)

力扣96.不同的二叉搜索树题目思路代码LeetCode笔记汇总题目思路代码

2021-04-05 18:44:42 193

原创 力扣94.二叉树的中序遍历(java)

力扣94.二叉树的中序遍历题目思路代码LeetCode笔记汇总题目给定一个二叉树的根节点 root ,返回它的 中序 遍历。示例 1:输入:root = [1,null,2,3]输出:[1,3,2]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[2,1]示例 5:输入:root = [1,null,2]输出:[1,2]提示:树中节点数目在范围 [0, 100] 内-100

2021-04-04 17:21:34 397 1

原创 力扣86.分隔链表(java)

力扣86.分隔链表题目思路代码LeetCode笔记汇总题目给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例 1:输入:head = [1,4,3,2,5,2], x = 3输出:[1,2,2,4,3,5]示例 2:输入:head = [2,1], x = 2输出:[1,2]思路本题没有限制不能使用额外的存储空间,因此我们可以定义两个链表left和ri

2021-04-02 18:36:34 197

原创 力扣206.反转链表(java)

力扣206.反转链表题目思路代码LeetCode笔记汇总题目思路双指针迭代迭代的思想是从左边开始两两交换链表中的节点。交换两个节点,使用一个长度为3的滑动窗口。窗口中的元素分别为pre,cur,temp。实际交换的是前两个节点,第三个temp节点主要用于存储,避免在改变cur.next后访问不到原链表中cur后面的元素。最开始时让pre指向null,从而达到将第一个节点的next置空的目的,否则将始终指向原链表的第二个元素。每次交换之后让三个指针后移一位即可,直至cur指针为空。递归代码

2021-04-01 15:45:33 202 1

原创 力扣27.移除元素(java)

力扣27.移除元素题目思路代码LeetCode笔记汇总题目示例 1:输入:nums = [3,2,2,3], val = 3输出:2, nums = [2,2]解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。示例 2:输入:nums = [0,1,2,2,3,0,4,2], val = 2输出:5

2021-03-31 15:41:23 178

原创 力扣7.整数反转(java)

力扣7.整数反转题目思路代码LeetCode笔记汇总题目给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321示例 3:输入:x = 120输出:21示例 4:输入:x = 0输出:0提示:-231 ^ <=

2021-03-30 16:12:00 261 1

原创 力扣4.寻找两个正序数组的中位数(java)

力扣4.寻找两个正序数组的中位数题目思路代码LeetCode笔记汇总题目给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3)

2021-03-30 15:42:13 1130

原创 力扣104.二叉树的最大深度(java)

力扣104.二叉树的最大深度题目思路代码LeetCode笔记汇总题目给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],返回它的最大深度 3 。思路递归确定单层递归的逻辑:先求它的左子树的深度,再求的右子树的深度,最后取左右深度最大的数值,较大值+1即为当前节点所处的深度。终止条件为节点为空,返回0。代码class Solution {

2021-03-26 20:30:48 254 1

原创 力扣61.旋转链表(java)

力扣61.旋转链表题目思路代码LeetCode笔记汇总题目给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4->5->1->2->3->NUL

2021-03-26 20:09:27 217

原创 力扣19.删除链表的倒数第 N 个结点(java)

力扣19.删除链表的倒数第 N 个结点题目思路代码LeetCode笔记汇总题目给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]提示:链表中结点的数目为 sz1 <= sz <= 300 <=

2021-03-25 20:06:46 200

原创 力扣24.两两交换链表中的节点(java)

力扣24.两两交换链表中的节点题目思路代码LeetCode笔记汇总题目给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:输入:head = [1,2,3,4]输出:[2,1,4,3]示例 2:输入:head = []输出:[]示例 3:输入:head = [1]输出:[1]提示:链表中节点的数目在范围 [0, 100] 内0 <= Node.val <= 100思路先生成一个哨兵节

2021-03-25 11:05:06 205

原创 力扣18.四数之和(java)

力扣18.四数之和题目思路代码LeetCode笔记汇总题目给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例 1:输入:nums = [1,0,-1,0,-2,2], target = 0输出:[[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]]示例 2:输入:

2021-03-20 20:44:20 902

原创 力扣16.最接近的三数之和(java)

力扣16.最接近的三数之和题目思路代码LeetCode笔记汇总题目给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。提示:3 <= nums.length <= 10^3-10^3 &l

2021-03-19 21:28:42 281

原创 力扣15.三数之和(java)

力扣15.三数之和题目思路代码LeetCode笔记汇总题目给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[]提示:0 <=

2021-03-18 21:53:34 183

原创 力扣82.删除排序链表中的重复元素2(java)

力扣82.删除排序链表中的重复元素2题目思路代码LeetCode笔记汇总题目给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。示例 1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例 2:输入: 1->1->1->2->3输出: 2->3思路先考虑特殊情况:删除头结点,故先创建一个哨兵节点dummy,使得dummy.next指向head再定义一个

2021-03-15 20:44:46 208

原创 力扣83.删除排序链表中的重复元素(java)

力扣83.删除排序链表中的重复元素题目思路代码LeetCode笔记汇总题目给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3思路由于题目所给的链表是已经排好序的,所以只需要比较每一个节点和它的前一个节点是否相同就可以判断是否需要删除该节点。代码class Solution { public List

2021-03-15 19:43:48 183

原创 力扣1290.二进制链表转整数(java)

力扣1290.二进制链表转整数题目思路代码LeetCode笔记汇总题目给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。请你返回该链表所表示数字的 十进制值 。示例 1:输入:head = [1,0,1]输出:5解释:二进制数 (101) 转化为十进制数 (5)示例 2:输入:head = [0]输出:0示例 3:输入:head = [1]输出:1示例 4:输入:head = [1,0,0,1,0,0,1,1,

2021-03-12 20:15:53 148

原创 力扣21.合并两个个有序链表(java)

力扣21.合并两个个有序链表题目思路代码LeetCode笔记汇总题目将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]提示:两个链表的节点数目范围是 [0, 50]-100 <= Node.val <=

2021-03-04 21:51:11 249 1

原创 力扣23.合并K个升序链表(java)

力扣23.合并K个升序链表题目思路代码题目给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[1->4->5,1->3->4,2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6示例 2:

2021-03-04 21:35:16 333 2

原创 力扣237.删除链表中的节点(java)

删除中间节点题目思路代码题目实现一种算法,删除单向链表中间的某个节点(即不是第一个或最后一个节点),假定你只能访问该节点。示例:输入:单向链表a->b->c->d->e->f中的节点c结果:不返回任何数据,但该链表变为a->b->d->e->f思路本题的最大难度在于理解题目的意思。题目中传入的是要删除的节点,而不是常见的头节点,因此不能用常见的"目标节点的上一个节点指向目标节点的下一个节点"的方式删除。本题中我们假设有 A-B-C-D四

2021-02-01 15:31:53 166

原创 力扣2.两数相加(java)

力扣2.两数相加题目思路代码题目给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 = [9,9

2021-01-24 21:32:41 297

原创 力扣3. 无重复字符的最长子串(java)

力扣3. 无重复字符的最长子串题目思路代码题目给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须

2021-01-24 21:02:54 330

空空如也

空空如也

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

TA关注的人

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