自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2025年- G34-Lc108-207. 课程计划--java版

你需要完成 numCourses 门课程,课程编号从 0 到 numCourses - 1。如果你可以完成所有课程,返回 true;否则,返回 false。课程安排 (Course Schedule) - 题目翻译。如果你想选修课程 a_i,你必须先完成课程 b_i。

2025-04-01 18:11:38 109

原创 2025年- G33-Lc107-150. 评估逆波兰表示法--java版

(2)遇到运算符,先从栈顶弹出两个元素,进行计算,把结果压入栈中。(1)遇到数字,将数字压入栈中,遵循先进后出得策略。

2025-04-01 16:51:45 144

原创 2025年- G32-Lc106-133. 克隆图--java版(很抽象,没有很能理解)

方法 1:BFS(广度优先搜索 + 队列)方法 2:DFS(深度优先搜索 + 递归)方法二:深度优先队列+递归(带测试方法)方法一:深度优先队列+递归。方法三:广度优先遍历+队列。

2025-03-27 16:00:46 104

原创 后端学习day1-Spring(八股)--还剩9个没看

参考答案。

2025-03-26 15:33:57 848 1

原创 2025年- G31-Lc105-102. 二叉树层次遍历--java版

使用 队列 Queue 来存储当前层的所有节点。关键点在于 levelSize = queue.size() 这一行,它决定了当前层的节点数量。

2025-03-26 11:05:04 159

原创 2025年- G30-Lc104-15. 3Sum--java版

总结:首先创建使用 HashSet 避免重复三元组,存储的三元组元素 列表(里面的元素和为0)。其次k也就是target=-(num[i]+num[j]),再创建一个hashset保存已经遍历过的元素num[j],避免重复计算。

2025-03-26 09:59:54 210

原创 2025年- G29-Lc103-3. 最长无重复字符的子字符串--java版

思路1:在字符串 s 中寻找最长的无重复字符子串的长度,它使用了 滑动窗口 和 HashMap 记录字符索引 的方法。start来更新索引,也就是遇到重复字符,说明按此顺序的字符有重复。我们应该跳到下一个字母继续执行。总结:用hashmap记录键值对,键唯一,但是值可以不同。

2025-03-25 20:48:51 206

原创 2025年- G28-Lc102-973. K 个距离原点最近的点--java版

,把每个坐标的欧式距离入堆之后,用对象.size()的方法,列出总共的元素,根据题目要求要前k跟原点近的点的欧式距离,保留前k个,其他用对象.poll()按最大开始剔除,直到剩最小的k个,最后用一个二维数组输出。首先输入是一个二维数组,然后开始计算二维数组忠每个元素(每一个点)与原点直接的距离(可以直接对每个点求勾股定理),最后输出是离原点距离最近的点(k代表返回的点的个数),按升序排序。在 PriorityQueue 中,标准的 poll() 方法并不接受任何参数。

2025-03-25 18:17:21 253

原创 2025年- G27-Lc101-542. 01 矩阵--java版

个人总结:0值保持不变,1值赋值为-1.从0的位置出发,上下左右扫描,遇到-1,将距离更新为1并且赋值给当前遇到的元素。从当前元素(比如1)出发遇到值为-1的继续更新,并把此时距离2赋值给当前遇到的-1.以此类推,从当前元素(比如2)出发,遇到值为-1的值再次更新,并把此时距离=3赋值给遇到的-1.总结:用广度优先搜索,首先要确定0的位置,不为0的位置,我们要更新的它的值,只能往上下左右寻找跟它最近的0的位置。✅ 先把 0 入队,1 变 -1。BFS 遍历所有 1,把 -1 变成最短距离,直到 队列为空。

2025-03-24 22:03:08 371

原创 2025年- G26-Lc100-57.插入间隔(max、min)--java版

总结: intervals[i][0] <= newInterval[1],那么 intervals[i] 的开始位置在 newInterval 的结束位置之前,说明 intervals[i] 的区间有可能和 newInterval 重叠。例如,newInterval = [2, 5],intervals[i] = [4, 7],这时 intervals[i][0] = 4,newInterval[1] = 5,满足 4 <= 5,说明它们有重叠。返回创建newInterval后intervals。

2025-03-24 10:46:55 385

原创 2025年- G25-Lc99-53. 最大子数组(动态规划)--java版

在给定的整数数组 nums 中,找到一个连续子数组(即数组中某一段连续的元素),使其元素之和最大,并返回该最大和。

2025-03-22 10:41:57 127

原创 2025年- G24-Lc98-217.包含重复(使用hashSet解决)-java版

我的想法是直接用集合来判断,如果集合的元素不能添加说明之前已经存在这个元素,也就是发现了重复元素,所以返回false。Map、ArrayList的定义和声明。

2025-03-22 09:31:57 159

原创 2025年- G23-Lc97-104.二叉树的最大深度-java版(递归调用左右子树)

在每个递归返回时,我们 必须把当前节点的深度算进去,否则我们只计算了子树的深度,而没有包括当前节点。要用到max函数,返回的时候返回左右子树的最大值。其次要递归调用左右子树,寻找最大深度。

2025-03-21 17:13:29 115

原创 2025年- G22-Lc96-链表的中间-java版(false)

使用快慢指针,慢指针(slow):每次移动 1 步;快指针(fast):每次移动 2 步,当 fast 到达链表末尾时,slow 正好位于中间。慢指针(slow):每次移动 1 步,快指针(fast):每次移动 2 步。当 fast 到达链表末尾时,slow 正好位于中间。使用arraylist排序,list.get(index)获取对应的索引元素。快慢指针可以判断链表是否有环,也可以判断寻找链表中点。时间复杂度:O(n),空间复杂度:O(1)。方法一:(快慢指针 )

2025-03-21 16:29:52 408

原创 JAVA学习--java数组--打印稀疏数组和稀疏数组的还原

1.题目描述。

2025-03-21 15:33:19 226

原创 java在mavenclean之后点击主启动函数,一直显示java找不到符号的解决办法

2.右侧defaultt设置启动注解处理,从项目类路径获取处理器。然后修改模块输出目录。3.右侧的Maven default annotation处理器的设置如下。

2025-03-04 10:37:05 158

原创 2025年- G21-Lc95-二叉树的直径-java版

这个题目是找任意两个节点的最长路径,两个节点就是屁话,就是找最大长度。

2025-02-28 13:55:12 205

原创 2025年- G20-Lc94-67.二进制相加-java版

【代码】2025年- G20-Lc94-67.二进制相加-java版。

2025-02-28 11:20:27 173

原创 2025年- G19-Lc93-206.反向链接链表-java版

在链表反转的过程中,prev 代表的是当前节点的前一个节点。它是一个用来帮助我们反转链表指针的辅助指针。(2)每一步,curr 节点的 next 指针都指向了 prev,反转了链表的方向。链表是一个典型的链表操作,通常可以通过迭代或递归来完成,而不是通过排序。(1)prev 是用于存储当前节点的前一个节点,反转过程中不断向前移动。(3)最终,prev 会指向新的头节点,即链表反转后的头节点。

2025-02-26 22:32:37 234

原创 2025年- G18-Lc92-169. 多数元素-java版

(2)m.keySet() 是一个方法,用于获取 HashMap 中所有的键(key)。(3)keySet() 返回的是一个包含所有键的 集合(Set),你可以通过这个集合来遍历所有的键。(1)我打算用hashmap的getOrDefault()取键的值。

2025-02-26 21:40:14 181

原创 2025年- G17-Lc91-409.最长回文-java版

m.values() 返回的是 Map 中所有值的集合。在你的代码中,它用于获取每个字符的出现次数,并基于这些次数来计算最大回文串的长度。这段 Java 代码的作用是 统计字符 c 在 freqMap 中的出现次数,并将结果存储在 reqMap 中。将更新后的计数值存入 reqMap,键为 c,值为 freqMap 里 c 的当前计数加 1。如果 freqMap 包含 键 c,则返回其对应的值(即 c 的计数)。这个方法在 freqMap 中查找键 c 的值。对 c 的计数加 1,表示 c 又出现了一次。

2025-02-23 22:03:59 326

原创 2025年- G16-Lc90-70.爬楼梯-java版

爬楼梯问题通常指的是一个动态规划问题,其中给定一座楼梯,每次可以选择爬1步或2步,问爬到第n阶楼梯有多少种不同的方法。初始化:first = 1, second = 1(表示第 0 阶和第 1 阶的方法数都是 1)最终,返回 second = 5,表示从第 0 阶到第 4 阶有 5 种不同的方法。dp[0] = 1,表示从楼梯底(第0阶)到达第0阶只有一种方式(什么都不做)。dp[1] = 1,表示从第0阶到第1阶有一种方式(一步跳到第1阶)。设dp[i]表示爬到第i阶楼梯的不同方法数。

2025-02-23 18:55:51 272

原创 2025年- G15-Lc89-383.赎金记录-java版

在最后的目的是,只有在 ransomNote 中的所有字符都能从 magazine 中找到并且数量足够时,才返回 true,表示可以构建出 ransomNote 字符串。第一个 a,m_cnt[0] 为 2,减 1,更新为 1。第二个 a,m_cnt[0] 为 1,减 1,更新为 0。第三个 b,m_cnt[1] 为 1,减 1,更新为 0。第一个 a,m_cnt[0] 为 2,减 1,更新为 1。第二个 b,m_cnt[1] 为 1,减 1,更新为 0。所有字符都能找到且满足要求,返回 true。

2025-02-23 13:31:07 427

原创 2025年-G14-Lc88-278.第一个坏版本 -java版

不幸的是,你产品的最新版本未通过质量检查。由于每个版本都是基于前一个版本开发的,所以坏版本之后的所有版本也都是坏的。, n],你想找出第一个坏版本,它导致后面所有版本都变坏。给你一个 API bool isBadVersion(version),它返回版本是否坏。实现一个函数来查找第一个坏版本。如果中间mid是好的,那么第一个坏的版本在mid的右边。当left和right重合时,left就是第一个坏版本。用二分查找,如果中间mid是坏的,那么所以第一个坏版本在mid的左边。

2025-02-22 23:43:53 213

原创 2025年-G13-Lc87-141. 使用栈实现队列-java版

主要问题是 stack1 和 stack2 的作用域问题,导致你无法在其他方法中访问它们。通过将 stack1 和 stack2 声明为类的成员变量,确保它们能在类的其他方法中使用。push() 和 pop() 方法的调用需要正确传入参数。= null 的判断是多余的,因为 stack2 已经初始化,可以直接用 stack2.isEmpty() 判断栈是否为空。用双栈实现队列的先进先出。

2025-02-21 11:21:34 213

原创 2025年-G12-Lc86-141.链表循环-java版

1.题目描述2.思路思路一:快指针一次性走两步,慢指针一次性走一步。3.java代码实现

2025-02-21 09:49:02 118

原创 2025年-G11-Lc85-110.平衡二叉树-java版

二叉树中求高度的常见模板要记住,树节点类型,传入节点node。

2025-02-20 11:50:47 194

原创 2025年-G10-Lc84-235.二叉搜索树的最低公共祖先-java版

【代码】2025年-G10-Lc84-235.二叉搜索树的最低公共祖先-java版。

2025-02-20 10:37:54 121

原创 NK--Day1---前端面经

(只要把内部的引用数据不过是一层还是多层,都开辟出一个内存空间,让他们之间都不要有共用,数据完全互不干扰就是深拷贝)(1)新建一个js的代码。深拷贝:基本数据类型。浅拷贝:引用数据类型。

2025-02-19 17:08:26 252

原创 2025年-G9-Lc83-733.泛洪填充--(java版)

函数名(参数1, 参数2, …

2025-02-19 13:56:31 153

原创 2025年--G8-LC82--704.二分查找--(java版)

如果 nums[mid] > target,应该缩小右边界 right,但你却使用了 return,直接退出了函数。因为题目要求时间复杂度是o(logn),所以用二分查找。定义左右指针left、right。然后中间节点是mid。

2025-02-19 09:25:07 147

原创 2025年-G7-lc81--242.异位词--Java版

先判断长度,如果cnt计数器最后为0来判断出现的字符是不是相同。(s字符串出现字符,相应的索引+1;t字符串出现字符,相应的索引-1;最后通过cnt计数器为0,来判断出现的字符是不是相同)如果只涉及小写字母(a-z),可以使用一个单一的 int 类型计数器数组来记录每个字符出现的次数。这个方法是方法 1 的一种优化。使用 HashMap 记录每个字符出现的次数,遍历两个字符串,更新计数并进行比较。将字符串进行排序,然后再判断字母是否相等。使用 int 类型计数器(针对小写字母)

2025-02-18 14:29:37 193

原创 2025年-G6-Lc80--反转二叉树-(java版)

思路:因为节点的类已经定义好了,所以首先用两个数字对调的思想去交换左右字数。前提这个左右子树是treenode类型,递归调用invertTree函数。

2025-02-18 11:56:31 133

原创 2025年-G5-Lc79--有效回文-(java版)

【代码】2025年-G5-Lc79--有效回文-(java版)

2025-02-18 11:26:06 165

原创 2025年-G4--lc75--Best Time to Buy and Sell Stock(java版)

【代码】2025年-G4--lc79--Best Time to Buy and Sell Stock(java版)

2025-02-17 23:29:28 210

原创 2025年-G4-Lc78--121. 买卖股票的最佳时机--(java版)

做两轮排序,第一轮排序找到最小的那个数,然后再判断最小的那个数之后还有其他数吗,如果有在进行排序,选出最大的那个数,然后值相减。(1)你需要找到一个买入和卖出的时间点,使得卖出的价格大于买入的价格,从而最大化利润。(2)如果数组中的股票价格是递减的,你不能获得任何利润,此时最大利润为 0。

2025-02-16 23:16:25 351

原创 2025-G3-Lc77-合并两个排序列表-java版

ListNode是类,new ListNode(0)实例化 一个 ListNode 对象,并使用构造函数 ListNode(0) 来初始化该对象。dummy 是一个变量名,它是我们定义的链表节点的引用。这个变量会指向新创建的 ListNode 对象。方法2:没有虚拟头节点。方法一:有虚拟头节点。

2025-02-16 16:43:17 172

原创 2025年-G2-Lc76-有效括号-java版

是 String 类中的一个方法,它的作用是将一个字符串转换为字符数组(char[])。1)如果栈一开始就为空,也就是一开始没有左括号,所以返回false。)右括号分别与[,(匹配,此时[已经被弹出栈顶了。有效括号匹配联想到Stack的后进先出。2)如果栈不为空,则拿栈顶元素进行匹配。违反了第2条原则,左括号必须按顺序闭合。(2)遇到右括号,开始判断。如果不匹配,返回false。(1)先把左括号压入栈中。

2025-02-14 10:58:59 248

原创 2025G74--Two Sum--java版

采用暴力检索的方法,注意要返回异常类:代表没有在数组中找到符合条件的两个元素=target。

2025-02-14 09:35:52 222

原创 Lc73---171.Excel 表列序号(Java版)----字符串

(2)columnTitle.charAt(i) 是 Java 中 字符串操作 的方法,用来获取字符串 columnTitle 在索引 i 位置的 字符。其返回值是一个 char 类型。当你对 char 类型的值进行减法操作(例如 columnTitle.charAt(i) - ‘A’),Java 会自动将字符转换为其对应的 Unicode 数值,再进行算术运算。(4)在 Java 中,字符 (char) 实际上是可以参与算术运算的,因为 char 类型在底层是基于 Unicode 编码的整数表示。

2024-12-09 10:27:43 252

空空如也

空空如也

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

TA关注的人

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