- 博客(119)
- 收藏
- 关注
原创 leetcode70.爬楼梯
你有多少种不同的方法可以爬到楼顶呢?1. 1 阶 + 1 阶 + 1 阶。有两种方法可以爬到楼顶。1. 1 阶 + 1 阶。有三种方法可以爬到楼顶。2. 1 阶 + 2 阶。3. 2 阶 + 1 阶。
2026-05-10 11:29:22
64
原创 leetcode88.合并两个有序数组
需要合并的数组是 [] 和 [1]。合并结果是 [1]。注意,因为 m = 0 ,所以 nums1 中没有元素。nums1 中仅存的 0 仅仅是为了确保合并结果可以顺利存放到 nums1 中。利用 nums1 后面全是 0 的特点,从两个数组的最后一个有效元素开始比较,将较大的放在 nums1 的最后面。需要合并 [1,2,3] 和 [2,5,6]。,5,6] ,其中斜体加粗标注的为 nums1 中的元素。需要合并 [1] 和 []。个元素表示应合并的元素,后。中,使合并后的数组同样按。
2026-04-19 20:17:28
248
原创 leetcode543. 二叉树的直径
经过节点 node 最大路径是其左子树最大深度 + 右子树最大深度。3 ,取路径 [4,2,1,3] 或 [5,2,1,3] 的长度。这条路径可能经过也可能不经过根节点。是指树中任意两个节点之间最长路径的。给你一棵二叉树的根节点,返回该树的。由它们之间边数表示。
2026-03-28 16:24:31
54
原创 leetcode142.环形链表II
指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。一个慢指针从 head开始走和慢指针继续从相遇点同时走D步,会相遇在环起始点。快慢指针相遇时,慢指针走了 D + X步,快指针走了 D + X + 若干圈;假设从起点到环入口的距离是 D,从入口到相遇点的距离是 X。链表中有一个环,其尾部连接到第二个节点。链表中有一个环,其尾部连接到第一个节点。,返回链表开始入环的第一个节点。来表示链表尾连接到链表中的位置(,仅仅是为了标识链表的实际情况。,则在该链表中没有环。
2026-02-27 17:52:10
375
原创 leetcode160. 相交链表
请注意相交节点的值不为 1,因为在链表 A 和链表 B 之中值为 1 的节点 (A 中第二个节点和 B 中第三个节点) 是不同的节点。换句话说,它们在内存中指向两个不同的位置,而链表 A 和链表 B 中值为 8 的节点 (A 中第三个节点,B 中第四个节点) 在内存中指向相同的位置。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,6,1,8,4,5]。从各自的表头开始算起,链表 A 为 [1,9,1,2,4],链表 B 为 [3,2,4]。- 相交的起始节点的值。
2026-02-22 20:44:25
505
原创 leetcode54.螺旋矩阵
思路: 看图模拟走一遍写代码即可,关键在于把握i和j临界点,另外时刻注意如果matrix元素已经全遍历过了,立即终止程序;时间复杂度:O(MN) ——矩阵中的每个元素都要被访问一次。,返回矩阵中的所有元素。
2026-02-13 14:39:55
59
原创 leetcode73.矩阵置零
第二次循环遍历除了0行0列元素,在置零行|列元素置零,注意先不动0行0列元素;根据第0行|第0列是否有0标记,对第0行元素进行修改。思路:直接上进阶解法思路——仅使用常量空间解决方案。第一次循环遍历,记录置零的行号和列号。,则将其所在行和列的所有元素都设为。(0行 0列用来记录置零行列位置)的矩阵,如果一个元素为。
2026-02-12 15:27:11
275
原创 leetcode189.轮转数组
思路:这道题纯规律啊,三次翻转,先整体将所有元素反转,然后分别反转 k 和 nums.length - k数组;时间复杂度为 O(n)向右轮转 1 步: [7,1,2,3,4,5,6]向右轮转 2 步: [6,7,1,2,3,4,5]向右轮转 3 步: [5,6,7,1,2,3,4]向右轮转 1 步: [99,-1,-100,3]向右轮转 2 步: [3,99,-1,-100。,将数组中的元素向右轮转。你可以使用空间复杂度为。算法解决这个问题吗?
2026-02-10 19:24:02
41
原创 leetcode438.找到字符串中所有字母异位词
思路:典型滑动窗口题目,滑动窗口关键在于窗口左右指针。直接设置p大小滑动窗口,然后将窗口子串和p比较。起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。起始索引等于 0 的子串是 "ab", 它是 "ab" 的异位词。起始索引等于 1 的子串是 "ba", 它是 "ab" 的异位词。起始索引等于 2 的子串是 "ab", 它是 "ab" 的异位词。的子串,返回这些子串的起始索引。标签:滑动窗口 双指针。
2026-02-05 18:34:07
130
原创 leetcode3.无重复字符的最长子串
/ 反之,出现位置在之前得到子串中间,最长长度就是发生重复处之间的字符串a....a,省略号之间就是最长子串,相当于为了将最后的加进去,对之前的无重复子串进行了切割。// 理想情况是i字母从未出现过或者出现但是出现的位置不在i-1字母结尾无重复最长字串中,则可以直接入伙,在i-1字母基础上+1。因为无重复字符的最长子串是 "abc",所以其长度为 3。因为无重复字符的最长子串是 "wke",所以其长度为 3。因为无重复字符的最长子串是 "b",所以其长度为 1。的长度,"pwke"是一个。
2026-02-04 19:27:31
70
原创 leetcode128. 最长连续序列
思路:查找以元素为nums[i]为序列结尾时,最长序列长度:如果存在nums[i]-1,length++...注意nums可能有重复数字,需要放到HashSet去重,之后查找时遍历的是set,而不是原nums。时间复杂度分析:时间复杂度:虽然是双层循环,但妙在条件判断,使得最内层循环语句执行总次数就是各个序列长度之和,也就是O(n),找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。最长数字连续序列是 [1, 2, 3, 4]。标签:hashset,hot100。给定一个未排序的整数数组。
2026-01-20 12:29:19
210
原创 leetcode49.字母异位词分组
思路:map:key-排序后的字符串,value-字符串列表;时间复杂度O(nklogk);解题完毕后一定要顺便分析下时间复杂度啊,几乎每场面试都会让你分析的......给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。标签:hot100,哈希表。
2026-01-17 18:58:58
467
原创 二进制中1的个数
标签:进制转换 面试真题输入一个整数 n ,输出该数32位二进制表示中1的个数。其中负数用补码表示。数据范围:−231<=n<=231−1−231<=n<=231−1即范围为:−2147483648<=n<=2147483647−2147483648<=n<=2147483647。
2025-05-12 14:07:15
363
原创 leetcode504.七进制数
思路:求n进制就是循环取余数,然后倒序即可得到n进制数。注意负数和0的特殊处理即可。标签:进制转换 机试真题。,并以字符串形式输出。
2025-05-10 18:03:35
476
原创 leetcode1823.找出游戏的获胜者
递推公式的思路为——当有i-1个人时得到的幸存者和第i个人会组成一个新的约瑟夫环,这个问题就简化为一直是有两个人,即i-1个人时幸存者和新增的第i个人,从这两人里面找到幸存者即可。小伙伴离开圈子的顺序:5、4、6、2、3。2) 顺时针数 2 名小伙伴,也就是小伙伴 1 和 2。4) 顺时针数 2 名小伙伴,也就是小伙伴 3 和 4。6) 顺时针数 2 名小伙伴,也就是小伙伴 5 和 1。8) 顺时针数 2 名小伙伴,也就是小伙伴 3 和 5。3) 小伙伴 2 离开圈子。1) 从小伙伴 1 开始。
2025-05-10 15:06:01
501
原创 java并发编程
进程:指在系统中正在运行的一个应用程序;程序一旦运行就是进程;进程——资源分配的最小单位。比如在Windows系统中,一个运行的xx.exe就是一个进程。线程:线程与进程相似,但线程是一个比进程更小的执行单位。一个进程至少有一个线程,多个线程可共享数据。线程是处理器任务调度和执行的基本单位。线程和进程联系与区别线程是进程划分成的更小的运行单位。一个进程中可以有多个线程,多个线程共享进程的资源。
2025-04-08 14:58:54
362
原创 Map(***)
对 Null key 和 Null value 的支持: HashMap 可以存储 null 的 key 和 value,但 null 作为键只能有一个,null 作为值可以有多个;底层数据结构: HashMap 在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为 8)时,将链表转化为红黑树,以减少搜索时间。另外,Hashtable 基本被淘汰,不要在代码中使用它;线程是否安全:HashMap 是非线程安全的,Hashtable 是线程安全的,因为 Hashtable 内部的方法基本都经过。
2025-03-25 14:47:54
224
原创 java集合
我们只需要存放元素值时,就选择实现Collection 接口的集合,需要保证元素唯一时选择实现 Set 接口的集合比如 TreeSet 或 HashSet,不需要就选择实现 List 接口的比如 ArrayList 或 LinkedList。我们需要根据键值获取到元素值时就选用 Map 接口下的集合,需要排序时选择 TreeMap,不需要排序时就选择 HashMap,需要保证线程安全就选用 ConcurrentHashMap。根据集合的特点来选择合适的集合。
2025-03-20 12:41:16
271
原创 java代理模式
我们使用代理对象来代替对真实对象(real object)的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。
2025-03-18 16:24:50
229
原创 java IO流
数据输入到计算机内存的过程即输入,反之输出到外部存储(比如数据库,文件,远程主机)的过程即输出。IO 流在 Java 中按照方向分为输入流和输出流,而根据数据的处理方式又分为字节流和字符流。因为对于文本文件,字节流直接操作字节,无法自动处理字符编码(如 UTF-8、GBK),需要手动处理编码和解码,容易导致乱码。InputStream/Reader: 所有的输入流的基类,前者是字节输入流,后者是字符输入流。OutputStream/Writer: 所有输出流的基类,前者是字节输出流,后者是字符输出流。
2025-03-14 11:23:36
323
原创 java注解
1.编译期直接扫描:编译器在编译 Java 代码的时候扫描对应的注解并处理,比如某个方法使用@Override 注解,编译器在编译的时候就会检测当前的方法是否重写了父类对应的方法。这个过程是编译器基于自身对 Java 语法规则的理解和实现来完成的,并不涉及运行时反射。2.运行期通过反射处理:像框架中自带的注解(比如 Spring 框架的 @Value、@Component)都是通过反射来进行处理的。
2025-03-12 14:04:21
255
原创 反射java
反射机制是在运行状态中,对于任意一个类,都能够知道这个类中的所有属性和方法;对于任意一个对象,都能够调用它的任意一个属性和方法。就像是一个万能钥匙,想用哪个就拿哪个。
2025-03-10 13:16:14
136
原创 泛型java
消除强制类型转换:在没有泛型的情况下,从集合等数据结构中取出元素时往往需要进行强制类型转换,这种强制类型转换不安全,可能会报异常“ClassCastException ”提高安全:Java泛型提高类型安全的核心原理在于,它让编译器知道变量的类型限制,从而在编译时进行严格的类型检查。泛型方法——public static <E> void printArray(E[] inputArray)泛型类——public class Generic<T>泛型一般有三种使用方式:泛型类、泛型接口、泛型方法。
2025-03-10 13:15:12
290
原创 异常相关八股
Error:Error 属于程序无法处理的错误 ,我们没办法通过 catch 来进行捕获。例如 Java 虚拟机运行错误(Virtual MachineError)、虚拟机内存不够错误(OutOfMemoryError)等。这些异常发生时,Java 虚拟机(JVM)一般会选择线程终止。在 Java 中,所有的异常都有一个共同的祖先 Throwable 类。Exception :程序本身可以处理的异常,可以通过 catch 来进行捕获。
2025-03-05 14:29:07
197
原创 Object类
类重写了 equals()方法:一般我们都重写 equals()方法来比较两个对象中的属性是否相等;若它们的属性相等,则返回 true。例如String 中的 equals 方法是被重写过的。类没有重写 equals()方法:通过equals()比较该类的两个对象时,等价于通过“==”比较两个对象,
2025-03-02 16:41:01
199
原创 面向对象基础
在 Java 里,当你没有为类定义任何构造方法时,Java 编译器会自动为该类提供一个默认的无参构造方法。面向对象编程:面向对象编程的设计思想是以对象为中心,通过对象之间的交互来完成程序的功能,具有灵活性和可扩展性。面向过程编程:面向过程把解决问题的过程拆成一个个方法,通过一个个方法的执行解决问题。自动执行:在生成类的对象时,构造方法会自动执行,无需显式调用。对象引用存放对象实体的地址,对象实体存储对象具体的数据。对象的相等一般比较的是内存中存放的内容是否相等。一个对象引用可以指向 0 个或 1 个对象;
2025-02-27 14:09:39
216
原创 java方法篇
在类的非静态成员不存在的时候静态方法就已经存在了,此时调用在内存中还不存在的非静态成员,属于非法操作。而非静态成员属于实例对象,只有在对象实例化之后才存在,需要通过类的。静态方法是属于类的,在类加载的时候就会分配内存,可以通过。(先加载类,再加载实例对象)
2025-02-22 17:24:00
236
原创 java基本语法
文档注释:以 /** 开头,以 */ 结尾。多行注释:以 /* 开头,以 */ 结尾。总结:单行注释和文档注释比较常用。单行注释:// 我是注释。
2025-02-15 20:13:21
349
原创 java基础知识
Java SE (Standard Edition)是 Java 的基础版本,Java EE (Enterprise Edition)是 Java 的高级版本。3. 平台无关性:即所谓的“一次编写,到处运行” java 程序编译后生成的是字节码文件(.class),这些字节码文件可以在任何安装了 Java 虚拟机(JVM)的平台上运行。JVM使得Java程序具备跨平台性。1.简单易学:Java 的语法类似于 C 和 C++,但去掉了一些复杂容易引起错误的内容,例如指针,从而降低了学习和使用的难度。
2025-02-13 12:51:47
361
原创 leetcode200.岛屿数量
思路:遍历整个网格 grid: 遇到一个 '1' 时,就表示发现了一个新岛屿,nums_island 增加 1。同时通过广度优先搜索淹没整个岛屿(即将与当前 '1' 相连的所有 '1' 变为 '0'),以免重复计数。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。(水)组成的的二维网格,请你计算网格中岛屿的数量。此外,你可以假设该网格的四条边均被水包围。
2025-02-11 15:15:50
202
原创 leetcode208.实现Trie(前缀树)
是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补全和拼写检查。// 返回 False。// 返回 True。// 返回 True。// 返回 True。(发音类似 "try")或者说。思路:就是哈希表的简单应用。
2025-02-09 14:04:35
189
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅