观鸟人
码龄4年
求更新 关注
提问 私信
  • 博客:50,054
    50,054
    总访问量
  • 163
    原创
  • 198
    粉丝
  • 38
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:四川省
加入CSDN时间: 2021-09-24

个人简介:一个在读大学生,目标考研,时不时分享算法与其他知识点,本科篮球杯国二,主后端。 //2025.4.8 考研上岸西南某2,希望今后也有机会与大家分享各种知识。

博客简介:

qq_62235017的博客

查看详细资料
个人成就
  • 获得320次点赞
  • 内容获得15次评论
  • 获得365次收藏
  • 代码片获得1,185次分享
  • 博客总排名31,439名
  • 原力等级
    原力等级
    4
    原力分
    932
    本月获得
    24
创作历程
  • 17篇
    2025年
  • 32篇
    2024年
  • 114篇
    2023年
成就勋章
TA的专栏
  • 力扣热题100
    17篇
  • 早期杂乱代码
    5篇
  • PTA
    13篇
  • Awcing
    118篇

TA关注的专栏 2

TA关注的收藏夹 0

TA关注的社区 0

TA参与的活动 2

兴趣领域 设置
  • 数据结构与算法
    算法
  • 后端
    mysqlspring boot
  • 嵌入式
    stm32
创作活动更多

AI 镜像开发实战征文活动

随着人工智能技术的飞速发展,AI 镜像开发逐渐成为技术领域的热点之一。Stable Diffusion 3.5 FP8 作为强大的文生图模型,为开发者提供了更高效的图像生成解决方案。为了推动 AI 镜像开发技术的交流与创新,我们特此发起本次征文活动,诚邀广大开发者分享在 Stable Diffusion 3.5 FP8 文生图方向的实战经验和创新应用 本次征文活动鼓励开发者围绕 Stable Diffusion 3.5 FP8 文生图方向,分享以下方面的内容: 1. 技术实践与优化 - Stable Diffusion 3.5 FP8 模型架构解析与优化技巧 - 文生图生成效果的提升方法与技巧 - 模型部署与加速策略,例如使用 Hugging Face、Diffusers 等工具 - 针对特定场景(例如二次元、写实风)的模型微调与定制化开发 2. 应用场景探索 - Stable Diffusion 3.5 FP8 在不同领域的应用案例分享,例如游戏设计、广告创意、艺术创作等 - 利用 Stable Diffusion 3.5 FP8 实现图像编辑、图像修复、图像增强等功能的探索 - 结合其他 AI 技术(例如 NLP、语音识别)构建更强大的应用 3. 创新应用与思考 - 基于 Stable Diffusion 3.5 FP8 的创新应用场景设计 - AI 镜像开发的未来发展方向的思考与展望 - 对 AI 镜像开发伦理、安全等问题的探讨

28人参与 去参加
  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

(leetcode)力扣100 17缺失的第一个正数(哈希)

摘要 本文探讨了在未排序整数数组中寻找缺失最小正整数的算法问题。通过分析,发现缺失的最小正整数必然在1到n+1范围内(n为数组长度)。提出了一种巧妙的空间优化方案:利用原数组本身作为哈希表,通过符号标记元素是否存在。算法分为三步:1) 将非正数替换为n+1;2) 遍历数组,用负号标记存在的数字;3) 扫描找出第一个未被标记的位置。该方案实现了O(n)时间复杂度和常数空间复杂度(假设原数组不计入空间消耗),解决了常规哈希表方法的空间限制问题。
原创
博文更新于 12 小时前 ·
318 阅读 ·
13 点赞 ·
0 评论 ·
9 收藏

(leetcode)力扣100 16除自身以外数组的乘积(预处理前项后项积)

摘要:本文介绍了一种不使用除法的方法计算数组中每个元素除自身外的乘积。通过两次遍历数组,分别计算并存储每个元素左侧和右侧的乘积,最后相乘得到结果。该方法时间复杂度为O(n),空间复杂度优化至O(1)。适用于处理大数组(长度≤10^5),保证结果在32位整数范围内。示例展示了输入[1,2,3,4]和[-1,1,0,-3,3]的正确输出结果。
原创
博文更新于 前天 17:12 ·
202 阅读 ·
4 点赞 ·
1 评论 ·
3 收藏

(leetcode) 力扣100 15轮转数组(环状替代)

我们利用这个过程,首先计算需要多少个从起点走回起点的圈数(count,为数组长度与步数的最大公约数,具体推推导后面会给),然后再遍历每一圈,通过创建一个临时变量(current,next,类似于指针的作用),来存储需要移动的变量将其移动到下一个位置,而下一个位置变为信的需移动变量,直到走完当前圈数。我们可以把数组想象一个圆圈,如果我们每次固定步数前进,肯定会在有限圈数回到出发点,这个过程中,有可能会遍历完数组所有数,有可能遍历有限数。这句话的意思是:在这个游戏中,你启动一次任务,只能覆盖到。
原创
博文更新于 前天 17:02 ·
572 阅读 ·
16 点赞 ·
0 评论 ·
6 收藏

(leetcode)力扣100 14合并区间(差分/排序)

本文介绍了合并重叠区间的两种解法:1)博主提出的差分法,通过二倍坐标处理区间重叠问题,时间复杂度为O(N);2)官方解法先排序再合并,时间复杂度O(nlogn)。差分法利用预处理和前缀和计算,适用于大数据量场景;排序法逻辑简单直观,适合小规模数据。两种方法都能正确处理区间合并问题,但差分法在时间复杂度上更优。文章提供了Java代码实现,并解释了关键思路和处理重叠区间的技巧。
原创
博文更新于 2025.12.17 ·
118 阅读 ·
7 点赞 ·
0 评论 ·
2 收藏

(leetcode) 力扣100 13最大子序和(动态规划&卡达内算法&分治法)

本文介绍了三种求解最大子数组和的算法:动态规划、Kadane算法和分治法。动态规划通过状态转移方程f(i)=max{f(i−1)+nums[i],nums[i]}求解,时间复杂度O(n)。Kadane算法在遍历数组时维护当前和,若为负则清零,每次更新最大值,空间更优。分治法采用类似归并排序的思路,将数组分为左右子区间分别求解后合并,需维护四个区间信息。三种方法都能正确求解,其中Kadane算法最简洁高效,分治法虽然复杂但有助于理解线段树等数据结构。
原创
博文更新于 2025.09.19 ·
1012 阅读 ·
15 点赞 ·
1 评论 ·
20 收藏

(leetcode) 力扣100 12最小覆盖子串(滑动窗口&哈希表)

本文介绍了在字符串s中寻找包含字符串t所有字符的最小子串的滑动窗口解法。通过维护两个哈希表分别记录窗口字符和目标串字符的出现次数,使用双指针动态调整窗口大小。关键点在于优化check函数,避免每次新建哈希表导致超时。当窗口满足条件时收缩左边界以寻找更小的子串,否则扩展右边界。该方法时间复杂度为O(n),空间复杂度为O(m),适用于大字符串情况。文中还对比了正确和错误的check函数实现,强调了优化细节的重要性。
原创
博文更新于 2025.09.19 ·
289 阅读 ·
5 点赞 ·
0 评论 ·
7 收藏

(leetcode) 力扣100 11.滑动窗口最大值(优先队列/单调队列)

这道题博主的思路如下,首先这道题关于滑动窗口,想到队列情理之中,接下来为最大值,要维护队列的通知还要维护最大值,那么首先想到优先队列来解决这道题便顺理成章。这道题虽然是困难,但主要困难在官解的解法2上的思路,解法1 的思路不难,也能通过。我们在优先队列的基础上,应该思考如何维护队列,关于解法1,博主方法中使用remove来维护队列纯纯不可取,因为remove会造成额外o(N)的时间复杂度。导致总复杂度为O(n^2^),从而超时。官解1很巧妙,使用了额外在队列中存入下标来维护队列,将维护队列集中到
原创
博文更新于 2025.07.02 ·
643 阅读 ·
5 点赞 ·
0 评论 ·
16 收藏

(leetcode) 力扣100 10.和为K的子数组(前缀和+哈希)

题目要求统计整数数组中所有和为k的连续子数组的个数。博主首先提出了一个O(n^2)的解法,通过预处理前缀和数组,然后遍历所有可能的子数组,计算其和是否等于k。虽然这种方法在数据范围内可行,但时间复杂度较高。官方题解则进一步优化,利用前缀和和哈希表,将时间复杂度降低到O(n)。具体思路是将前缀和公式转换为p[j-1] = p[i] - k,并通过哈希表记录前缀和的出现次数,从而在遍历时快速找到符合条件的子数组数量。这种方法不仅效率更高,也为类似问题提供了通用的解决思路。
原创
博文更新于 2025.05.12 ·
383 阅读 ·
3 点赞 ·
0 评论 ·
5 收藏

(leetcode) 力扣100 9.找到字符串中所有字母异位词(滑动窗口)

题目要求在字符串 s 中找到所有与字符串 p 的异位词(即字符相同但顺序不同的子串)的起始索引。解题思路主要基于滑动窗口和哈希表。博主的解法通过维护两个哈希数组,分别记录 p 和当前窗口的字符频率,并通过 check() 方法比较两者是否相同,时间复杂度为 O(m + (n - m) × 26),其中 n 和 m 分别为 s 和 p 的长度。官方题解二进一步优化,通过维护一个 differ 变量来记录字符频率的差异,减少了每次比较的时间,时间复杂度为 O(n + m + 26)。两种方法均能有效解决问题,但
原创
博文更新于 2025.05.09 ·
344 阅读 ·
4 点赞 ·
0 评论 ·
6 收藏

(leetcode) 力扣100 8.无重复字符的最长子串(滑动窗口)

我们继续观察题目,我们可以得到,我们需要的是连续的最长子串,因为连续,我们做进一步思考。如果字符串中 位置0-3是一个连续的长度为4的非重复子串,那么接下来我们在这个范围内,无论怎么右移左边界,新的最长非重复子串的右边界不可能小于3,因为0-3无重复是前提。如何维护滑动窗口方法多种多样,博主用的是队列来维护,官方题解用的是双指针来维护,都可以,时空复杂度差距都不大,依照个人喜好。有了这个思想,我们可以使用滑动窗口实现,通过动态维护左右边界,一个数组只会遍历两边,实现O(N。,那么我们遍历的方法直接失效。
原创
博文更新于 2025.05.08 ·
165 阅读 ·
5 点赞 ·
0 评论 ·
2 收藏

(leetcode) 力扣100 7.接雨水(两种非官解,三种官解,对官解进一步解释)

如果此时遍历到了i,i的高度大于i-1,由于单调栈我们知道,i-2的高度也是大于i-1的,那么当前遍历进度下,i-1这个点的储水量我们就能计算出了(注注意,计算水位高度要减去i-1的高度,因为这种方法计算的并不是这个点最终水位高度,i-1高度的水之前就可能计算过,如图),然后将计算过的点弹出,同时根据新进入的点i维持单调栈,遍历一遍即可。首先我想讲的思路是leetcode中某位路人大佬的思路,大佬的思路是先确定最高的柱子,那么在最高的柱子左侧,所有水柱,一定是从左到右递增的,为什么,如图。
原创
博文更新于 2025.05.08 ·
1152 阅读 ·
8 点赞 ·
0 评论 ·
17 收藏

(leetcode) 力扣100 6.三数之和 (双指针)

博主的第一版代码犯了一个大忌,博主的第一版代码没有选择先去定点,而是直接在双指针模版里再去找一个点,这样处理逻辑难度思维难度提升的同时,还会造成一些细节的情况不好处理。博主想先对左右指针的和进行判断,根据具体的值来确定接下来从什么方向找到第三个符合条件的数。最后再给根据这个和来移动左右指针。例如l与r的和为5那么肯定要找小于0的数,第三个数就从l+1开始寻找,这样就能减少遍历次数。
原创
博文更新于 2025.05.06 ·
666 阅读 ·
27 点赞 ·
0 评论 ·
12 收藏

(leetcode) 力扣100 5. 盛最多水的容器(双指针 O(n))

其实最开始做这道题的时候,我首先联想到了acwing的奶牛牛棚问题,但仔细思考后,那一道题更难,那道题同样是找一段范围内的最大面积,但每一个点的高度都会对面积产生限制,而不是这道题中的只有两端的高度会对面积产生限制,方法也就截然不同了,那道题常规遍历需要是O(10。即无论我们怎么移动右指针,得到的容器的容量都小于移动前容器的容量。也就是说,这个左指针对应的数不会作为容器的边界了,那么我们就可以丢弃这个位置,将左指针向右移动一个位置,此时新的左指针于原先的右指针之间的左右位置,才可能会作为容器的边界。
原创
博文更新于 2025.04.30 ·
897 阅读 ·
16 点赞 ·
0 评论 ·
13 收藏

(leetcode) 力扣100 4.移动零(两种O(n)方法 双指针)

博主采用的思路很简单,不管原始数组如何,最后得到的数组形式是一样的,前面一串非0数字,最后几个连续的0,那么就不需要考虑交换的逻辑,而是去把数字放到他最后应该存在的位置即可。这道题整体思路简单,但题目提到,不能新建数组,那么目的很明确了,就是要求你在O(1)的空间复杂度和O(n)的时间复杂度完成这道题。整体来说,对于没接触过或不熟悉双指针的人来说,官方题解虽然优雅,但还是具有一定的思维难度,大家多联系即可。给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
原创
博文更新于 2025.04.29 ·
392 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

(leetcode)力扣100 3.最长连续序列(哈希?排序)

这道题博主实现没想出来O(n)时间复杂度的解法(太菜),就用了排序之后二分的算法,时间复杂度O(nlogn),其实如果用排序了的话,不用二分直接枚举就行,只是稍微需要处理一下枚举逻辑。对于官方解法,使用contain这个方法规避了需要提前排序的操作,通过contains进行枚举,通过判断是否为连续序列的开头来减少遍历次数,十分很巧妙。但有一个奇怪的现象,博主写的排序的实际运行时间与空间均远优于官方题解,有懂的大佬可以解答一下。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。
原创
博文更新于 2025.04.28 ·
351 阅读 ·
9 点赞 ·
0 评论 ·
1 收藏

(leetcode) 力扣100 2.字母异位词分组(哈希)

因为思路一样,所以这道题重要的是细节处理,博主也是做了这道题之后,才知道Arrays.sort()可以直接对字符数组进行排序。通过快排,可以将数据进行哈希前的预处理时间降低到O(logk)级别,而不是博主再用了一层hash进行O(k)的预处理,浪费了时间和空间。这道题很明显是一道哈希存储,最后返回结果的题,思维难度依然不高,同样对时间复杂度的要求也不高,纯暴力遍历解也就10。,博主没有多想直接哈希遍历出结果,没有细节处理,理所当然时间和空间排名在所有提交者里都是靠后的。strs[i] 仅包含小写字母。
原创
博文更新于 2025.04.27 ·
209 阅读 ·
9 点赞 ·
0 评论 ·
1 收藏

(leetcode)力扣100 1.两数之和(两种方法:O(nlogn)/O(n))

lt上的官方题解使用了仅使用哈希,代码简单明了,通过依次而非一次性向哈希表加入数值巧妙地规避了重复数据map不好处理的同时,又保证了最后输出的顺序正确。给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。这个题目整体简单,如果博主思路写的过于草率抽象,大家可移步力扣观看官方题解(虽然我觉得大部分人都是看官方题解,谁会来csdn找题解呢。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。
原创
博文更新于 2025.04.27 ·
417 阅读 ·
4 点赞 ·
0 评论 ·
3 收藏

Acwing.883 高斯消元解线性方程组

如果给定线性方程组存在唯一解,则输出共n行,其中第i行输出第i个未知数的解,结果保留两位小数。如果给定线性方程组存在无数解,则输出"Infinite group solutions"。这道题是运用了线性代数中求解矩阵的方法 高斯消元法,并且用代码实现。接下来n行,每行包含n+1个实数,表示一个方程的n个系数以及等号右侧的常数。如果给定线性方程组无解,则输出"No solution"。所有输入系数以及常数均保留两位小数,绝对值均不超过100。输入一个包含n个方程n个未知数的线性方程组。方程组中的系数为实数。
原创
博文更新于 2024.08.13 ·
251 阅读 ·
0 点赞 ·
3 评论 ·
0 收藏

Acwing.1402 星空之夜(哈希)

这时候就需要用到离散化,离散化这个算法不一定对,但大多数情况都是对的,就如快速排序的平均时间复杂度是nlogn,最坏复杂度是n²,所以可以将离散化这种算法当成正确的算法使用。这道题可以用之前博客中使用的Flood fill算法来实现,但是这其中有一个难点,如何判断两个星系是相同的,我看有大佬的题解是把每个星系放在坐标远点旋转,产生八个模型一一比较,这种实现方式意义不大,在比赛中没有这么多时间调试这种代码。如果两个星群的形状、包含星星的数目相同,那么无论它们的朝向如何,都认为它们是相似的。
原创
博文更新于 2024.06.05 ·
497 阅读 ·
4 点赞 ·
1 评论 ·
5 收藏

Acwing.876 快速幂求逆元

给定n组ai ,pi,其中p;的乘法逆元,若逆元不存在则输出impossible。的乘法逆元存在,则输出一个整数,表示逆元,否则输出impossible。接下来n行,每行包含一个数组ai, pi,数据保证p;就是逆元,因此用快速幂快速求得即可,一下图片为推导过程。输出共n行,每组数据输出一个结果,每个结果占一行。求逆元用到了飞马定理,公式推到得得a。
原创
博文更新于 2024.05.27 ·
175 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏
加载更多