- 博客(515)
- 收藏
- 关注

原创 CentOS 超详细保姆级安装教程(每步都有截图)
在 VMware 中安装和配置 CentOS 是许多系统管理员和开发者常用的虚拟化方法。首先,需要在计算机上安装 VMware Workstation 或 VMware Player,然后下载最新的 CentOS ISO 文件。启动 VMware,创建一个新的虚拟机,选择“安装程序光盘映像文件(iso)”选项,加载下载的 CentOS ISO 文件。接下来,配置虚拟机的硬件资源,包括分配内存、CPU 核心数量和硬盘空间。建议至少分配 2GB 内存和 20GB 硬盘空间以保证 CentOS 的顺利运行。
2024-09-01 11:22:48
5207

原创 Ubuntu 超详细保姆级安装教程(每步都有截图)
在 VMware 中安装和配置 Ubuntu 是一种常见的虚拟化实践,适用于开发、测试和学习目的。首先,确保已安装 VMware Workstation 或 VMware Player,并下载最新版本的 Ubuntu ISO 文件。启动 VMware,创建一个新的虚拟机,选择"安装程序光盘映像文件(iso)"选项,选择下载的 Ubuntu ISO 文件。然后,配置虚拟机的硬件设置,包括内存、处理器数量和硬盘大小等,建议至少分配 2GB 内存和 20GB 硬盘空间。
2024-09-01 11:17:03
76333
59
原创 [面试精选] 0206. 反转链表
文章摘要: 本文讲解了LeetCode 206题"反转链表"的解题方法。题目要求将单链表的所有节点指针方向反转。核心解法采用三指针法:使用pre、cur、nxt三个指针遍历链表,每次迭代时保存下一节点、反转当前指针、更新指针位置。代码实现简洁,时间复杂度O(n)仅需一次遍历,空间复杂度O(1)仅用常数空间。示例展示了输入[1,2,3,4,5]反转后输出[5,4,3,2,1]的效果。
2025-05-31 08:00:00
419
原创 [面试精选] 0160. 相交链表
这道题目要求找出两个单链表的相交节点。通过双指针法,让两个指针分别遍历两个链表,当一个指针到达链表末尾时跳转到另一个链表的头部继续遍历。由于两个指针最终会走过相同的路径长度(L1 + L2 - C,C为公共部分长度),它们将在相交节点处相遇或同时到达链表尾部(null)。该算法的时间复杂度为O(m+n),空间复杂度为O(1),是一种高效且节省内存的解决方案。
2025-05-31 07:00:00
404
原创 [面试精选] 0240. 搜索二维矩阵 ii
文章摘要: 本题要求在具有行列有序特性的二维矩阵中高效搜索目标值。解题关键在于从矩阵的左下角或右上角开始搜索,利用行列的单调性进行类似二叉搜索的移动策略:当前值大于目标值时向上移动,小于目标值时向右移动。该算法时间复杂度为O(m+n),空间复杂度为O(1),适用于大规模矩阵搜索。示例代码展示了从左下角出发的Java实现,通过逐次比较和指针移动快速定位目标值是否存在。
2025-05-30 08:00:00
397
原创 [面试精选] 0048. 旋转图像
这道题目要求将一个n×n的二维矩阵顺时针旋转90度,且必须原地修改矩阵。解题关键在于发现旋转90度等价于先转置矩阵(沿主对角线交换元素),再进行水平翻转(每行左右对称交换)。算法分为两步:转置和水平翻转,时间复杂度为O(n²),空间复杂度为O(1)。通过数学规律转换问题,实现了高效的原位旋转操作。
2025-05-30 07:00:00
457
原创 [面试精选] 0054. 螺旋矩阵
本文介绍了LeetCode 54题"螺旋矩阵"的解题方法。题目要求按顺时针螺旋顺序遍历二维矩阵并返回所有元素。解题采用边界收缩法,通过维护四个边界指针(左、右、上、下),依次按"右→下→左→上"方向遍历并收缩边界,直到边界相遇。算法时间复杂度为O(m×n),空间复杂度为O(1)(不考虑结果存储)。代码实现了这一过程,并处理了空矩阵等特殊情况。
2025-05-29 08:00:00
635
原创 [面试精选] 0073. 矩阵置零
摘要: 题目要求将矩阵中元素为0所在的行和列全部置零,且使用原地算法。核心思路是利用矩阵的第一行和第一列作为标记位,记录需要置零的行和列。具体步骤包括:检查第一行和第一列是否含0;遍历矩阵标记需置零的行列;根据标记位置零;最后处理第一行和第一列。时间复杂度为O(m×n),空间复杂度为O(1)。该方法高效且节省空间,适用于大规模矩阵操作。
2025-05-29 07:00:00
454
原创 [面试精选] 0041. 缺失的第一个正数
题目要求找出未排序整数数组中缺失的最小正整数,时间复杂度O(n),空间复杂度O(1)。采用原地哈希法,通过交换将数字归位到对应索引位置(x放到x-1处)。第一次遍历归位数字,第二次遍历检查首个不满足nums[i]=i+1的位置,返回i+1;若全部归位,则返回n+1。算法时间复杂度O(n),空间复杂度O(1)。
2025-05-28 08:00:00
969
原创 [面试精选] 0238. 除自身以外数组的乘积
本文介绍了LeetCode 238题“除自身以外数组的乘积”的解题方法。题目要求返回一个数组,其中每个元素是原数组中除该元素外所有元素的乘积,且不能使用除法。解题思路是使用前缀和后缀乘积数组,分别计算每个元素左边和右边元素的乘积,然后合并得到最终结果。算法通过三次遍历实现,时间复杂度为O(n),空间复杂度为O(n)。示例代码展示了如何用Java实现该算法,并通过递推计算前缀和后缀乘积数组来高效解决问题。
2025-05-28 07:00:00
442
原创 [面试精选] 0189. 轮转数组
本文介绍了LeetCode 189题“轮转数组”的解法。题目要求将数组元素向右旋转k个位置。通过三次翻转数组(整体翻转、前k个元素翻转、剩余元素翻转)的方法,实现了高效且空间复杂度为O(1)的解决方案。代码使用Java实现,时间复杂度为O(n),适用于大规模数据。示例展示了具体操作步骤,帮助理解算法流程。
2025-05-27 08:00:00
707
原创 [面试精选] 0056. 合并区间
文章摘要: LeetCode 56题要求合并重叠区间。解题思路是先将区间按起始点排序,然后遍历检查相邻区间是否重叠:若当前区间起点≤前一区间终点则合并,否则加入结果列表。采用贪心算法确保合并最优解。时间复杂度O(n log n)(排序主导),空间复杂度O(n)。代码示例展示了Java实现,通过排序和动态合并完成区间合并。
2025-05-27 07:00:00
474
原创 [面试精选] 0053. 最大子数组和
摘要:本文介绍了力扣第53题"最大子数组和"的解法。题目要求在一个整数数组中找到和最大的连续子数组。解法采用动态规划思想,遍历数组时维护以当前元素结尾的最大子数组和。若前一个元素对当前元素有增益效果(max>0),则累加前值;否则重新开始计算。最终返回遍历过程中的最大值。该算法时间复杂度O(n),空间复杂度O(1),代码简洁高效。示例输入[-2,1,-3,4,-1,2,1,-5,4]的最大子数组和为6。
2025-05-26 14:18:51
557
原创 [面试精选] 0076. 最小覆盖子串
摘要: 题目要求在字符串 s 中找出包含字符串 t 所有字符的最短子串。采用滑动窗口算法,通过双指针动态调整窗口范围,并用哈希表统计字符出现次数。当窗口满足条件时,记录最小窗口边界,最终返回对应子串。时间复杂度为 O(m),空间复杂度为 O(1),其中 m 是 s 的长度。
2025-05-26 14:16:51
594
原创 [面试精选] 0239. 滑动窗口最大值
本文介绍了如何解决LeetCode上的“滑动窗口最大值”问题。给定一个整数数组 nums 和一个窗口大小 k,需要找到所有大小为 k 的滑动窗口的最大值。解题思路是使用单调队列来维护当前窗口内的最大值候选,保持队列单调递减。算法分为两个阶段:首先处理前 k 个元素形成初始窗口,然后滑动窗口处理剩余元素,确保队列始终反映当前窗口的最大值。时间复杂度为 O(n),空间复杂度为 O(n)。通过这种方法,可以高效地找到每个滑动窗口的最大值。
2025-05-25 08:00:00
460
原创 [面试精选] 0560. 和为 K 的子数组
本文介绍了如何解决LeetCode上的“和为K的子数组”问题。给定一个整数数组nums和一个整数k,要求统计数组中所有和为k的连续子数组的个数。解题思路基于前缀和和哈希表优化,通过计算前缀和数组,将问题转化为两数之差的问题,并利用哈希表记录前缀和出现的次数,从而在O(n)时间内高效求解。文章详细描述了算法流程,并提供了Java代码实现,最后分析了算法的时间复杂度和空间复杂度,均为O(n)。
2025-05-25 07:00:00
321
原创 [面试精选] 0438. 找到字符串中所有字母异位词
本文介绍了如何在字符串 s 中找到所有与字符串 p 的异位词子串的起始索引。异位词要求字母种类和数量相同,但顺序可以不同。解题思路基于滑动窗口和字母统计,通过维护一个固定大小的窗口在 s 上滑动,并比较窗口内字母的统计与 p 的字母统计是否匹配。算法的时间复杂度为 O(n + m),空间复杂度为 O(n)。代码实现中使用了两个长度为26的数组分别统计 p 和当前窗口的字母频率,并通过滑动窗口遍历 s 来找到所有符合条件的起始索引。
2025-05-24 08:00:00
343
原创 [面试精选] 0003. 无重复字符的最长子串
本文介绍了如何解决“无重复字符的最长子串”问题。给定一个字符串,要求找出其中不含有重复字符的最长子串的长度。解题思路采用滑动窗口和哈希表结合的方法,通过双指针表示子串的起始和结束位置,并用哈希表记录字符的最后出现位置。当遇到重复字符时,动态更新窗口的起始位置。算法的时间复杂度为O(n),空间复杂度为O(min(m, n)),其中n为字符串长度,m为字符集大小。代码实现简洁高效,适用于处理大规模字符串。
2025-05-24 07:00:00
358
原创 [面试精选] 0042. 接雨水
本文介绍了LeetCode上“接雨水”问题的解题思路与实现。题目要求计算给定高度图中柱子排列后能接的雨水量。通过双指针法,从数组两端向中间移动,动态更新左右最大值,并根据较小值计算当前位置的积水量。算法的时间复杂度为O(n),空间复杂度为O(1)。代码实现简洁高效,适用于大规模数据处理。
2025-05-23 08:00:00
663
原创 [面试精选] 0015. 三数之和
本文介绍了如何解决LeetCode上的“三数之和”问题。给定一个整数数组,要求找出所有不重复的三元组,使得它们的和为零。解题思路包括对数组进行排序,然后使用双指针法来寻找满足条件的三元组,并通过跳过重复元素来避免重复结果。算法的时间复杂度为O(n²),空间复杂度为O(n)。代码实现中,首先对数组排序,然后通过外层循环固定一个数,内层使用双指针寻找另外两个数,确保三元组的和为零,并处理重复情况。
2025-05-23 07:00:00
412
原创 [每日一题] 3362. 零数组变换 iii
本文介绍了如何通过贪心算法和差分数组解决LeetCode上的“零数组变换 III”问题。给定一个整数数组 nums 和一组查询区间 queries,每个查询区间表示可以对数组的一个子区间进行最多减少1的操作。目标是通过选择一些查询区间,使得 nums 变为全零数组,并最大化未被使用的查询区间数量。解题思路包括:将查询区间按左端点排序,使用差分数组记录操作影响,并通过大顶堆动态选择右端点最大的区间进行操作。最终,如果无法满足所有点的操作次数要求,则返回-1,否则返回未被使用的查询区间数量。时间复杂度为 O(m
2025-05-22 21:12:26
1212
原创 [面试精选] 0011. 盛最多水的容器
题目要求在给定的整数数组height中,找出两条垂直线,使得它们与x轴构成的容器能容纳最多的水。容器的宽度由两条线之间的距离决定,高度由较短的线决定。解题思路采用双指针法,初始化左右指针分别指向数组的起始和末尾,通过比较指针所指的高度,移动较小高度的指针,以贪心策略逐步缩小范围,计算并更新最大面积。算法的时间复杂度为O(n),空间复杂度为O(1)。最终返回最大面积值。
2025-05-22 08:00:00
379
原创 [面试精选] 0283. 移动零
请注意 ,必须在不复制数组的情况下原地对数组进行操作。移动到数组的末尾,同时保持非零元素的相对顺序。,编写一个函数将所有。
2025-05-22 07:00:00
283
原创 [每日一题] 3356. 零数组变换ii
题目要求通过一系列查询操作将整数数组 nums 变为零数组,并找到最小的查询次数 k。每个查询表示对数组的一个区间 [l, r] 加上一个值 val。解题思路包括使用二分查找确定最小的 k,并通过差分数组高效处理区间更新操作。算法的时间复杂度为 O((n + q) log q),空间复杂度为 O(n)。如果无法通过查询使数组变为零数组,则返回 -1。
2025-05-21 22:14:15
496
原创 [面试精选] 0128. 最长连续序列
本文介绍了如何解决LeetCode上的“最长连续序列”问题。给定一个未排序的整数数组,要求找出其中数字连续的最长序列的长度,且算法时间复杂度需为O(n)。解题思路包括使用哈希集合去重、判断序列起点以及向后扩展序列。具体实现中,首先将所有数字存入HashSet,然后遍历集合中的每个数字,若该数字是某个连续序列的起点,则向后查找连续数字并统计序列长度,最终更新并返回最长序列长度。算法的时间复杂度和空间复杂度均为O(n)。
2025-05-21 08:00:00
336
原创 [面试精选] 0049. 字母异位词分组
题目要求将字符串数组中的字母异位词分组。字母异位词是指字母相同但排列不同的字符串。解题思路是通过排序归一化,将每个字符串排序后作为哈希表的键,异位词会被映射到同一个键。使用哈希表存储排序后的字符串和对应的异位词列表,利用computeIfAbsent方法简化插入操作。算法流程包括初始化哈希表、遍历字符串数组、排序字符串并插入哈希表,最后返回哈希表中的所有值。时间复杂度为O(n * k log k),空间复杂度为O(n * k)。
2025-05-21 07:00:00
660
原创 [面试精选] 0001. 两数之和
题目要求在整数数组 nums 中找到两个数,使其和等于目标值 target,并返回它们的索引。解题思路是使用哈希表来存储已遍历的数字及其索引,通过一次遍历数组,检查哈希表中是否存在与当前数字匹配的补数(即 target - x)。如果存在,则返回这两个数的索引。该方法的时间复杂度为 O(n),空间复杂度为 O(n)。代码示例展示了如何在 Java 中实现这一算法。
2025-05-20 22:32:34
750
原创 [每日一题] 3355. 零数组变换 i
本文介绍了如何通过差分数组和前缀和的方法,判断是否可以通过一系列区间减一操作将给定整数数组 nums 转换为零数组。具体步骤包括:初始化差分数组,处理每个查询并更新差分数组,计算前缀和得到每个位置的实际操作次数,最后检查每个元素是否可以被减到 0。该算法的时间复杂度为 O(n + m),空间复杂度为 O(n),适用于高效处理区间操作问题。
2025-05-20 22:29:17
770
原创 [每日一题] 2094. 找出 3 位偶数
题目要求从给定的数字数组 digits 中构造所有可能的3位偶数,且这些数不含前导零,且互不相同。解题思路包括统计数字频率和使用深度优先搜索(DFS)生成符合条件的3位数。具体步骤为:首先统计每个数字(0-9)的出现次数,然后通过DFS递归生成所有可能的3位数,确保第一位非0、第三位为偶数,且每个数字的使用次数不超过其在原数组中的出现次数。最终将结果按递增顺序返回。时间复杂度为O(n + 1000),空间复杂度为O(1000)。
2025-05-12 20:17:21
881
原创 1550. 存在连续三个奇数的数组
题目要求判断一个整数数组中是否存在连续三个元素都是奇数的情况。通过滑动窗口的方法,从数组的第三个元素开始遍历,检查当前元素及其前两个元素是否都是奇数。如果找到满足条件的三元组,则返回true;否则遍历结束后返回false。该算法的时间复杂度为O(n),空间复杂度为O(1),适用于处理任意长度的数组。
2025-05-12 07:00:00
588
原创 2918. 数组的最小相等和
题目要求将两个包含正整数和0的数组nums1和nums2中的所有0替换为严格正整数,使得两个数组的元素和相等,并返回最小的相等和。如果无法使两数组和相等,则返回-1。解题思路包括:计算每个数组的和(将0替换为1),检查是否可以通过替换0来平衡两个数组的和,并返回较大的和作为最小相等和。算法的时间复杂度为O(n + m),空间复杂度为O(1)。
2025-05-11 14:40:06
368
原创 3343. 统计平衡排列的数目
题目要求统计给定数字字符串的所有平衡排列数目。平衡排列定义为奇数位和偶数位数字之和相等。解题思路包括预处理阶乘和逆阶乘、统计数字频率、检查总和是否为偶数、使用记忆化搜索计算分配方案数,并最终通过组合数计算排列数。算法的时间复杂度主要由记忆化搜索决定,空间复杂度则包括阶乘数组和记忆化数组的存储。最终结果需对 (10^9 + 7) 取模。
2025-05-11 14:38:49
514
原创 3342. 到达最后一个房间的最少时间 ii
出发,每次可以移动到 相邻 的一个房间。在 相邻 房间之间移动需要的时间为:第一次花费 1 秒,第二次花费 2 秒,第三次花费 1 秒,第四次花费 2 秒……如果两个房间有一条公共边(可以是水平的也可以是竖直的),那么我们称这两个房间是 相邻 的。表示在这个时刻 以后 你才可以 开始 往这个房间 移动。个房间,它们呈网格状排布。所需要的 最少 时间。有一个地窖,地窖中有。
2025-05-10 08:00:00
700
原创 3341. 到达最后一个房间的最少时间 i
如果两个房间有一条公共边(可以是水平的也可以是竖直的),那么我们称这两个房间是 相邻 的。出发,每次可以移动到 相邻 的一个房间。在 相邻 房间之间移动需要的时间为 1 秒。表示在这个时刻 以后 你才可以 开始 往这个房间 移动。个房间,它们呈网格状排布。所需要的 最少 时间。有一个地窖,地窖中有。
2025-05-10 07:00:00
318
原创 1920. 基于排列构建数组
(下标也从 0 开始)。请你构建一个 同样长度 的数组。也包含在内)的不同整数组成的数组。给你一个 从 0 开始的排列。
2025-05-09 08:00:00
412
原创 0790. 多米诺和托米诺平铺
平铺指的是每个正方形都必须有瓷砖覆盖。两个平铺不同,当且仅当面板上有四个方向上的相邻单元中的两个,使得恰好有一个平铺有一个瓷砖占据两个正方形。的多米诺形,另一种是形如 “L” 的托米诺形。两种形状都可以旋转。给定整数 n ,返回可以平铺。的面板的方法的数量。有两种形状的瓷砖:一种是。
2025-05-09 07:00:00
641
原创 LCP 64. 二叉树灯饰
力扣嘉年华」的中心广场放置了一个巨型的二叉树形状的装饰树。每个节点上均有一盏灯和三个开关。表示灯处于「开启」状态。,请返回最少需要操作多少次开关,可以关闭所有节点的灯。表示灯处于「关闭」状态,节点值为。给定该装饰的初始状态。
2025-05-08 13:35:37
982
原创 [HOT 100] LCP 34. 二叉树染色
的二叉树模型,初始所有结点均为白色,可以用蓝色染料给模型结点染色,模型的每个结点有一个。小扣出于美观考虑,希望最后二叉树上每个蓝色相连部分的结点个数不能超过。个,求所有染成蓝色的结点价值总和最大是多少?
2025-05-07 08:00:00
945
原创 [HOT 100] 0968. 监控二叉树
节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。给定一个二叉树,我们在树的节点上安装摄像头。计算监控树的所有节点所需的最小摄像头数量。
2025-05-07 07:00:00
797
空空如也
在学习 Spring Boot 期间,常见的问题
2024-08-13
TA创建的收藏夹 TA关注的收藏夹
TA关注的人