自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode Hot100 腐烂的橘子

直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。的新鲜橘子都会腐烂。

2025-12-01 15:32:24 77

原创 LeetCode Hot100 下一个排列

本文介绍了如何找到整数数组的下一个字典序更大的排列。算法步骤如下:1)从右往左找第一个下降的位置i;2)若找不到则反转整个数组;3)否则从右往左找第一个大于nums[i]的元素nums[j]并交换;4)最后反转i+1到末尾的部分使其升序。该方法时间复杂度O(n),空间复杂度O(1),原地修改数组。示例展示了如何将[1,2,3]变为[1,3,2]等排列变换。

2025-11-26 11:33:11 171

原创 LeetCode Hot100 划分字母区间

给你一个字符串 s。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。例如,字符串 “ababcc” 能够被分为 [“abab”, “cc”],但类似 [“aba”, “bcc”] 或 [“ab”, “ab”, “cc”] 的划分是非法的。题目地址:https://leetcode.cn/problems/partition-labels/description/注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s。返回一个表示每个字符串片段的长度的列表。

2025-11-24 14:50:57 132

原创 Kaggle 下载依赖报错

在Kaggle下载依赖时若出现报错,可能是由于Kaggle网络未开启导致的。Kaggle平台需要手动开启互联网功能才能访问外部资源。解决方法:进入Notebook设置,开启"Internet"开关后重新运行代码即可正常下载依赖包。此功能默认关闭以保证计算环境安全。

2025-11-23 19:39:51 199

原创 LeetCode 可被三整除的最大和

本文提出了一种解决LeetCode问题"最大可被三整除的和"的算法。算法首先计算数组所有元素的总和sum及其模3余数mod。当mod为0时直接返回sum;否则,根据mod值寻找需要移除的最小元素组合:若mod为1,则寻找余1的最小元素或两个余2的最小元素之和;若mod为2,则寻找余2的最小元素或两个余1的最小元素之和。通过比较这些组合的最小值,从sum中减去该值得到最终结果。算法时间复杂度为O(n),空间复杂度为O(1)。

2025-11-23 14:47:32 99

原创 LeetCode Hot100 柱状图中最大的矩形

题目:柱状图中最大的矩形(LeetCode 84) 摘要:给定一个整数数组表示柱状图的高度,求能勾勒出的最大矩形面积。使用单调栈算法,维护栈中元素单调递增。遍历时遇到较小高度则出栈计算面积:当前高度乘以左右边界距离。遍历后处理栈中剩余元素,右边界为数组末尾。时间复杂度O(n),空间复杂度O(n)。核心思路是利用单调栈高效确定每个柱子的左右边界,从而计算可能的最大矩形面积。

2025-11-19 16:32:29 65

原创 LeetCode Hot100 每日温度

摘要: 本文介绍了LeetCode上"每日温度"问题的解决方案。给定一个温度数组,要求计算每天需要等待多少天后会出现更高温度。使用单调栈算法,栈中存储温度下标。遍历数组时,若当前温度高于栈顶温度,则计算天数差并出栈;否则将当前温度下标入栈。这种方法时间复杂度为O(n),空间复杂度为O(n)。给出的Go语言实现清晰地展示了如何使用单调栈来解决该问题。

2025-11-19 16:31:01 344

原创 LeetCode 分割数组的最大值

该题目要求在给定非负整数数组nums和整数k的情况下,将数组分成k个连续子数组,使得各子数组和的最大值最小。解题思路采用二分查找法:左边界为数组最大值,右边界为数组元素总和。通过二分查找确定一个中间值sum,验证能否将数组分成不超过k个子数组且每个子数组和不超过sum。若能满足则缩小右边界,否则增大左边界,直至找到最小的最大和。辅助函数splitBinary用于验证当前sum是否满足条件。最终返回的右边界即为所求的最小最大和。

2025-11-18 11:35:18 113

原创 LeetCode 爱吃香蕉的珂珂

该题目要求找出珂珂在规定时间内吃完所有香蕉的最小进食速度。解题思路是采用二分搜索法:首先确定速度的上下界(1到最大香蕉堆数量),然后对速度区间进行二分查找。对于每个中间速度值,计算吃完所有香蕉所需的时间,若时间超过规定则增大速度,否则减小速度。通过不断调整边界,最终找到能在规定时间内吃完香蕉的最小整数速度。时间复杂度为O(n log m),其中n为香蕉堆数,m为最大堆的香蕉数。

2025-11-17 15:20:05 369

原创 LeetCode 供暖器

摘要:该LeetCode问题要求在一条直线上为房屋和供暖器寻找最小加热半径,使得所有房屋都能被覆盖。解题思路是:首先对房屋和供暖器位置排序;然后遍历每个房屋,寻找其与最近供暖器的最小距离;最后在所有最小距离中取最大值作为结果。Go实现通过双指针优化,时间复杂度为O(nlogn + mlogm)。关键点在于对两数组排序后,利用贪心算法寻找每个房屋的最优供暖器,最终确定全局最小加热半径。

2025-11-16 15:11:55 140

原创 LeetCode Hot100 缺失的第一个正数

这篇文章介绍了一个寻找未排序数组中缺失最小正整数的算法。通过原地交换元素将每个正整数放到其正确位置(nums[i]=i+1),算法能在O(n)时间复杂度和常数空间内完成。主要思路是:当元素在有效范围内且不在正确位置时进行交换;若元素超出范围或重复则移到数组末端。最终遍历完成后,首个不满足nums[i]=i+1的位置即为缺失的最小正整数。该解法巧妙利用了数组本身作为哈希表,避免了额外空间的使用。

2025-11-16 15:09:30 234

原创 LeetCode 救生艇

摘要: 该问题要求计算承载所有人员所需的最小船数(每船最多载两人,重量不超过limit)。解决方法是先对人员体重数组排序,然后使用双指针策略:左指针指向最轻的人,右指针指向最重的人。如果两人重量之和超过limit,则重者单独乘船;否则两人同乘一艘船。每次操作后移动指针并增加船数,直到所有人被承载。时间复杂度为O(nlogn)(排序),空间复杂度O(1)。

2025-11-15 11:15:19 201

原创 LeetCode Hot100 接雨水

该题解使用双指针法计算柱状图中可接的雨水量。主要思路是:对每个位置计算其左右两侧的最大高度,该位置能接的雨水量等于左右最大高度的较小值减去当前高度。解法分为两种实现:1)预处理左右最大高度数组;2)优化版双指针法,使用两个变量动态维护左右最大高度。两种方法的时间复杂度均为O(n),但第二种方法空间复杂度优化至O(1)。关键点在于理解每个位置的水量由左右最高柱中的较小值决定,并合理利用双指针减少空间使用。

2025-11-15 11:04:46 352

原创 LeetCode 子矩阵元素加1

本文解决了LeetCode上的矩阵区域增量问题,使用二维差分数组优化子矩阵频繁更新操作。算法通过差分数组记录更新范围,最后通过前缀和计算还原最终矩阵。具体实现包含三个函数:add在差分数组上标记更新区域,build通过前缀和还原矩阵,rangeAddQueries整合流程处理所有查询。这种方法将每次子矩阵更新的时间复杂度优化到O(1),整体复杂度为O(n² + q),其中n是矩阵维度,q是查询次数,显著提高了大规模矩阵更新的效率。

2025-11-14 11:14:53 166

原创 LeetCode 加油站

LeetCode加油站问题要求判断能否从某个加油站出发绕环路一周。解题思路是统计总油量差值(total),若total<0则无解;否则维护当前剩余油量(sum),若sum<0则重置起点。算法复杂度O(n),关键点在于通过油量差值和贪心策略确定唯一可行起点。代码用Go实现,遍历数组计算油量差值并动态调整起点,最终返回可行起点或-1。

2025-11-14 11:05:01 153

原创 LeetCode N皇后(Hot 100)

摘要: 该问题要求在n×n棋盘上放置n个皇后,使其互不攻击(不在同一行、列或斜线)。使用回溯算法逐行尝试放置皇后,通过check函数验证位置合法性(检查列和对角线冲突),合法则递归处理下一行。当完成所有行(i == n)时,调用generate生成棋盘布局(用'Q'和'.'表示皇后和空位),并将解存入结果集。算法时间复杂度为O(n!),空间复杂度O(n),通过剪枝优化搜索效率。

2025-10-31 14:19:09 327

原创 LeetCode LRU缓存

本文实现了一个LRU缓存的数据结构,使用哈希表+双向链表来保证O(1)时间复杂度的get和put操作。主要思路是:哈希表存储键值对,双向链表维护访问顺序。最近访问的节点放在链表头部,最久未访问的放在尾部。当缓存满时,从尾部删除节点。代码实现包括初始化缓存、获取值(get)、插入/更新值(put)等核心方法,以及操作双向链表的辅助函数(添加节点、移动节点、删除节点等)。通过这种设计,既保证了快速查找,又能高效维护访问顺序。

2025-10-30 16:43:51 279

原创 LeetCode 将数组和减半的最少操作次数

【摘要】 LeetCode题目《将数组和减半的最少操作次数》要求通过每次将数组中任意元素减半的操作,使数组和至少减少一半。解题思路采用大顶堆优先处理最大值:1) 计算初始和并构建大顶堆;2) 循环取出堆顶元素减半后调整堆,累计操作次数直至和达标。Go实现中,通过自定义heapify函数维护堆结构,时间复杂度为O(n log n)。典型贪心策略,每次处理当前最大值以最快逼近目标。

2025-10-15 22:12:33 166

原创 LeetCode 合并K个升序链表

该算法使用小顶堆合并K个有序链表。首先将所有链表的头节点加入堆并构建小顶堆,然后每次取出堆顶元素(最小值)加入结果链表。若该节点有后继节点,则将其加入堆并调整堆结构,直到堆为空。通过堆排序保证每次取出的都是当前最小值,时间复杂度为O(NlogK),其中N是总节点数,K是链表数。关键步骤包括堆的初始化、调整和元素交换操作。

2025-10-15 15:58:44 362

原创 Go语言实现堆排序

这篇文章展示了用Go语言实现堆排序的代码。算法首先构建大顶堆,然后通过循环交换堆顶元素(最大值)与末尾元素,并重新调整堆结构,最终完成排序。核心函数heapify负责维护堆的性质,通过比较父节点与子节点的大小关系,确保始终保持大顶堆结构。该实现具有O(nlogn)的时间复杂度和O(1)的空间复杂度,是一种高效的原地排序算法。代码简洁明了,完整展示了堆排序的关键步骤。

2025-10-14 10:49:21 438

原创 LeetCode 数组最第k大的元素

该算法使用快速选择思想在O(n)时间复杂度内找到数组中第k大的元素。通过随机选取基准值x进行分区,将数组分为小于x、等于x和大于x三部分,并根据目标索引与分区边界的关系递归处理对应区间。关键点在于随机化基准选择保证期望时间复杂度,以及分区函数将数组划分为三个区域(<x, =x, >x)。当目标索引落入等于x的区间时直接返回结果,否则在相应子区间继续查找。这种方法避免了完整排序,实现了高效查找。

2025-10-13 09:32:17 142

原创 LeetCode 翻转对

该题目要求统计数组中满足i<j且nums[i]>2*nums[j]的逆序对数量。摘要:通过改进的归并排序算法,在合并左右子数组时统计跨子数组的逆序对。具体实现中,divide函数递归分割数组,merge函数在归并排序过程中,利用双指针遍历左右子数组满足条件的逆序对,时间复杂度为O(n log n)。示例输入[1,3,2,3,1]输出2,[2,4,3,5,1]输出3。

2025-10-12 09:51:56 144

原创 LeetCode-Hot100 最小栈实现

本文实现了一个支持常数时间获取最小值的栈结构MinStack。该结构使用两个切片:stack存储所有元素,minVal记录每个栈状态下的最小值。主要方法包括:构造函数初始化栈;Push方法在入栈时同时更新最小值;Pop方法同步删除两个切片的顶部元素;Top和GetMin方法分别返回栈顶元素和当前最小值,均能在O(1)时间内完成。该实现通过维护最小值副本来保证快速查询,同时保持栈的基本操作效率。

2025-09-28 23:10:10 267

原创 解决跨域问题

【代码】解决跨域问题。

2025-09-24 16:10:17 202

原创 docker 启用容器端口被占用报错500

服务器端口冲突导致500错误,提示13306端口无权限访问。解决方案:以管理员身份运行命令重启WinNAT网络地址转换服务:先执行"net stop winnat"停止服务,再执行"net start winnat"重启服务。该操作可释放被占用的端口,解决socket访问权限问题。

2025-09-23 22:50:11 319

原创 LeetCode-2390. 从字符串中移除星号

题目要求从字符串中移除所有星号及其左侧最近的字符,保证操作可行且结果唯一。使用栈结构实现:遍历字符串,非星号字符入栈,遇到星号时统计连续星号数量,并弹出栈顶相应数量的字符。最终栈中剩余字符即为结果。该解法时间复杂度O(n),空间复杂度O(n),确保高效可靠。

2025-06-21 08:56:56 295

原创 LeetCode-1679. K 和数对的最大数目

摘要:题目要求从数组中移除和为k的整数对,计算最大操作次数。通过哈希表统计元素频次,对每个元素查找补数(k-key),若存在则取两者频次的较小值作为操作次数。处理时需跳过大于k的元素,并特殊处理key为k/2的情况。时间复杂度O(n),空间复杂度O(n)。(96字)

2025-06-19 09:18:04 205

原创 LeetCode-283. 移动零

本文介绍了将数组中所有零移动到末尾的原地算法。使用双指针法:左指针(l)标记待处理位置,右指针(r)寻找非零元素。当l指向0时,r找到非零元素即交换;若r指向0则继续右移。确保非零元素顺序不变,时间复杂度O(n)。示例代码展示了该思路的Go语言实现,通过指针移动和元素交换完成操作,无需额外空间。

2025-06-18 17:04:21 229

原创 LeetCode-374. 猜数字大小

摘要: 这是一个经典猜数字游戏的二分查找实现。题目要求在1到n范围内通过调用guess()接口来查找目标数字。实现采用二分查找算法,通过比较中间值与目标值的关系来不断缩小搜索范围。当guess返回-1时表示猜测值过大,调整右边界;返回1时表示猜测值过小,调整左边界;返回0时找到目标。注意在更新左边界时需要设为mid+1以避免死循环。该方法时间复杂度为O(log n),空间复杂度O(1)。

2025-06-17 16:41:48 213

原创 LeetCode-151. 反转字符串中的单词

该题目要求反转字符串中的单词顺序并处理多余空格。实现思路是:先用空格分割字符串得到单词数组,然后逆序遍历数组,跳过空串,重组单词并用单个空格连接。最后用TrimSpace去除首尾空格。Go语言实现通过strings.Split分割字符串,逆序拼接非空单词,确保结果中单词间仅有一个空格且无多余空格。时间复杂度O(n),空间复杂度O(n)。

2025-06-16 18:06:24 222

原创 LeetCode-345. 反转字符串中的元音字母

摘要:题目要求反转字符串中的所有元音字母。实现思路是先使用栈存储所有元音字母,再遍历原字符串,遇到元音字母时从栈顶取出反转后的字母。代码中定义isVowel函数判断字符是否为元音(包括大小写),reverseVowels函数使用栈结构实现反转。时间复杂度O(n),空间复杂度O(n)。该方法简洁高效地实现了元音字母的反转。

2025-06-16 17:21:41 211

原创 使用Air对go项目实现热加载(Windows版)

go air实现热加载

2025-05-05 15:06:10 730

原创 Go-web开发之帖子功能

Go + Gin + Gorm实现帖子功能

2025-05-02 16:28:14 530

原创 Go-web开发之社区功能

Go + Gin + Gorm实现社区功能

2025-05-01 10:43:28 592 1

原创 JWT GenToken&ParseToken

获取Token、解密Token。

2025-04-30 16:09:30 414

原创 goweb-signup注册功能实现

golang+gorm实现注册功能

2025-04-26 23:55:56 367

原创 Typora 插入行内公式

Typora公式使用

2025-04-25 23:44:04 684

原创 go配置管理框架——viper

viper框架的常用操作

2025-04-24 16:03:00 432

原创 蓝桥杯 剪纸刀

蓝桥杯题解

2025-04-24 12:21:24 468 2

原创 LeetCode-392 判断子序列

因为判断s是否是t的子序列,所以只需要遍历一遍字符串t即可,如果发现t[i] == s[k]则k++;程序运行结束如果s是t的子序列,那么t一定等于s的长度。(k 为当前s中有几位是t的子序列)字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。给定字符串 s 和 t ,判断 s 是否为 t 的子序列。

2025-04-24 12:21:15 226

空空如也

空空如也

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

TA关注的人

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