自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 56. 合并区间

本文介绍了一种合并重叠区间的高效算法。算法首先按区间起始位置排序(O(nlogn)时间),然后线性扫描合并重叠区间。关键步骤是:比较当前区间与已合并的最后一个区间,无重叠则直接添加,有重叠则合并右端点。时间复杂度由排序决定为O(nlogn),空间复杂度为O(logn)(仅排序开销)。该算法通过预处理和贪心策略,确保正确覆盖所有输入区间。

2025-10-16 17:19:33 361

原创 53. 最大子数组和

本文介绍了两种解决最大子数组和问题的算法。动态规划法通过维护当前最大和(pre)和全局最大和(maxAns),在O(n)时间和O(1)空间内解决问题。分治法采用递归策略,将数组二分后合并子问题,通过Status类维护四个关键指标(lSum,rSum,mSum,iSum),时间复杂度为O(n),空间复杂度为O(logn)。两种方法都能高效求解该问题,动态规划更简洁,而分治法展示了分治思想的典型应用。

2025-10-16 11:22:03 626

原创 76. 最小覆盖子串-滑动窗口-优化版

该算法使用滑动窗口在字符串s中寻找涵盖t所有字符的最小子串。通过维护两个哈希表(need记录目标字符需求,window记录当前窗口字符)和变量have(已满足的字符种类数),优化了检查过程。右指针扩展窗口直到满足条件,然后左指针收缩窗口寻找最小子串。时间复杂度O(m+n),空间复杂度O(k),其中m、n为字符串长度,k为字符集大小。相比暴力解法显著提高了效率,确保在单次遍历中完成搜索。

2025-10-15 11:05:19 194

原创 文献学习:DeepSeek-R1 incentivizes reasoning in LLMs through reinforcement learning图片解读

摘要:DeepSeek-R1通过强化学习提升大语言模型的推理能力。研究显示,该模型在美国数学邀请赛(AIME)中的表现超越人类平均水平,且采用多数共识方法(cons@16)比单次尝试(pass@1)准确率更高。训练过程中模型自主延长响应长度,展现出更深入的思考能力。研究采用多阶段优化流程,包括监督微调和GRPO(群体相对策略优化)强化学习方法,后者通过组内奖励比较估计优势,比传统PPO方法更高效。模型在语言表达和人类偏好方面均有显著进步,但存在过度思考和重复问题。

2025-10-14 15:40:43 595

原创 论文学习:DeepSeek-R1 incentivizes reasoning in LLMs through reinforcement learning翻译

通用推理是人工智能(AI)领域长期存在的一个艰巨挑战。最近的突破,例如大型语言模型(LLM)和思想链(CoT)推理,在基础推理任务上取得了相当大的成功。然而,这一成功在很大程度上取决于广泛的人类-注释的演示,模型的能力仍然不足以解决更复杂的问题。在这里,我们表明,LLM的推理能力可以通过纯强化学习(RL)来激励,避免了对人类标记的推理轨迹的需要。所提出的RL框架促进了高级推理模式的紧急开发,例如自我反思,验证和动态策略适应。

2025-10-14 11:00:28 874

原创 239. 滑动窗口最大值-方法三:分块 + 预处理

(i+1) % k == 0,即i+1是k的整数倍,i+1=ak,i=ak-1,a为正整数,第一个块为0到k-1,第二个为k到2k-1,可以看出,(i+1) % k == 0时i是块的尾端。假如滑动了m次,窗口一个个元素的索引为m,那在当前所处索引的后缀最大项和窗口最后一个元素索引m+k-1的前缀最大项两个最大项其中更大的一个就是所求的值。如果i是一个块的开始,初始化prefixMax[i]为nums[i]。一个窗口从i开始,i+k-1结束,即i的后缀最大和i+k-1的前缀最大的最大值就是总的最大值。

2025-10-13 15:59:31 207

原创 239. 滑动窗口最大值-方法二:单调队列

初始化单调递减队列。while q首先确保q不为空,然后将当前元素与队尾元素进行比较,q[-1]即为队尾元素的索引。然后将右端小于等于当前元素的索引删掉,因为索引在这个元素之前并且小于他的元素不会成为最大值。维护一个单调递减队列,加入一个元素时删除右端小于他的索引,因为索引在这个元素之前并且小于他的元素不会成为最大值,将元素索引加入最右端,然后删除左端不在窗口内的索引。如果i为k,前k个索引是1到k,那么0就会被删除,k-k=0。初始化ans为数组,左端第一个索引对应的元素就是最大的,将其添加给ans。

2025-10-13 10:33:15 241

原创 239. 滑动窗口最大值-方法一:优先队列

如果nums单调递增,所有元素都会留在堆中,因为顶部永远是更大的元素,此时堆的大小就是n,n次插入就是O(nlogn)。初始的窗口为0到k-1,当i为k时,说明窗口向右滑动了一次,i-k为0,小于等于0的就是(-nums[0], 0),依次类推。heappush向堆中插入元素,q为要插入元素的堆,(-nums[i], i)为要插入的元素。初始化ans列表,q[0]是堆顶元素,-q[0][0]取堆顶元素的第一个值的相反数,即原数组最大值。初始化堆的heapify函数的复杂度是O(k),成本远小于n,忽略。

2025-10-11 15:53:43 176

原创 560. 和为 K 的子数组

给你一个整数数组nums和一个整数k,请你统计并返回该数组中和为k的子数组的个数。子数组是数组中元素的连续非空序列。

2025-10-11 11:33:55 188

原创 438. 找到字符串中所有字母异位词

ord('a')的结果是97,ord(s[i]) - 97将字符转换成0-25的索引。时间复杂度:O (n + m + Σ):O (m):对应两个初始化操作的总时间,O (n):对应滑动窗口移动的总时间,O (Σ):对应初始化differ变量的时间。ord(s[i]) - 97是左方删除的字符,如果索引为1,说明s比p多1,则在删除后数目一样。count为0到p_len-1中s的字符数减去p的字符数,列表记录每种字符数的差值。(n−m)×Σ:(n−m)为滑动窗口需要移动的总次数,Σ为字符集的大小,即26。

2025-10-11 10:45:49 459

空空如也

空空如也

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

TA关注的人

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