StarryNights

每一个你所后悔的现在,都有一个不够努力的曾经

站内检索

循着字句,邂逅星光

搜索文章标题与正文,直达命中的章节

开始一次轻盈的站内探索

从这些主题开始探索

输入关键词

可同时输入多个词语缩小范围

发现内容

在摘要中查看高亮的关键词

快速直达

点击文章或章节标题继续阅读

全部/2018 年/10月归档

21 篇本页 10 篇

201833 篇

10月

21 篇
  1. AI 摘要

    本文总结了LeetCode“串联所有单词的子串”题。题目给定字符串s和等长单词数组words,要求找出s中所有由words全部单词各用一次拼接而成的子串起始索引。题解采用滑动窗口与哈希表:先统计words词频,再按单词长度分多起点遍历,用窗口内词频与目标比较,动态调整左边界,记录合法起点。时间复杂度O(n),空间复杂度O(km)。文末给出C++和Go实现。

  2. AI 摘要

    本文讲解 LeetCode 两整数相除问题:在不能使用乘、除、取模运算且仅能存储 int32 的条件下,求整数商并处理溢出。朴素反复减法效率低,题解将商拆成 2 的幂之和,通过位移让除数成倍增长,再用被除数逐次减去 divisor<

  3. AI 摘要

    本文总结了 LeetCode 的 implement strStr() 题:在字符串 haystack 中查找模式串 needle 首次出现的索引,不存在返回 -1,needle 为空时返回 0。题解采用 KMP 算法,先构造 next 数组,再进行线性匹配,时间复杂度 O(n+m),空间复杂度 O(m)。文中给出了 C++ 与 Go 两种 AC 代码,并提醒空模式串是易错边界。

  4. AI 摘要

    本文介绍 LeetCode 移除元素题:给定数组 nums 和值 val,要求原地删除所有等于 val 的元素并返回新长度,只能使用 O(1) 额外空间,元素顺序可改变。题解通过一次遍历,用 res 指针记录保留位置,遇到不等于 val 的元素就写入 nums[res] 并递增,等于 val 则跳过。时间复杂度 O(n),空间复杂度 O(1),并给出 C++ 和 Go 实现。

  5. AI 摘要

    本文介绍 LeetCode“删除排序数组中的重复项”题解。题目要求对已排序数组原地去重,仅用 O(1) 额外空间修改输入,返回新长度,超出部分无需处理。核心思路是顺序遍历,用 index 指向下一个待放位置,当当前元素与前一个不同时,将其写入 index 并递增,同时计数。时间复杂度 O(n),空间复杂度 O(1),并给出 C++ 与 Go 实现。

  6. AI 摘要

    本文是 LeetCode“K 个一组翻转链表”的题解,说明给定链表需每 k 个节点翻转一次,剩余不足 k 个节点保持原序,并给出 k=2、k=3 示例。解题采用快慢指针:快指针先走 k 步确定待翻转区间,再原地反转该区间并接回原链表,重复至结束。时间复杂度 O(kn),空间复杂度 O(1),代码提供 C++ 和 Go 两种实现。

  7. AI 摘要

    本文讲解 LeetCode“两两交换链表节点”题解。要求交换相邻节点,不能修改节点值,只能用常数级额外空间。思路是创建虚拟头结点统一边界操作,用 pre 和 cur 指针遍历链表,每轮调整指针完成相邻两节点交换,再推进指针。时间复杂度 O(n),空间复杂度 O(1)。文末附 C++ 与 Go 实现代码。

  8. AI 摘要

    文章是 LeetCode“合并 K 个排序链表”的题解。题目要求将 k 个已排序链表合并为一个排序列表。题解核心是复用第 21 题“合并两个有序链表”的方法,再借用归并排序的分治思想,对链表两两合并,逐步缩小规模,直到只剩一个链表。时间复杂度为 O(nlogn),空间复杂度为 O(1)。最后给出 C++ 与 Go 的 AC 代码实现。

  9. AI 摘要

    文章总结了 LeetCode“生成括号”题:给定 n 对括号,要求输出所有合法组合。解法采用递归加回溯的 DFS,依次添加括号,并用剪枝条件保证有效:左括号数小于 n 时可加左括号,右括号数小于左括号数时可加右括号;当左右括号数都等于 n 时记录结果。原文给出 C++ 与 Go 实现,并称时间复杂度 O(2^n)、空间复杂度 O(n)。

  10. AI 摘要

    文章介绍 LeetCode 合并两个有序链表问题,给定两个有序链表,要求合并为一个新的有序链表。示例输入 1->2->4、1->3->4,输出 1->1->2->3->4->4。题解采用归并思路,逐个比较节点值,将较小节点接入结果链表,遍历结束后接上剩余部分。时间复杂度 O(n),空间复杂度 O(1),并提供 C++ 和 Go 的 AC 代码。

  11. AI 摘要

    本文讲解 LeetCode 有效括号题:给定仅含括号的字符串,判断同类型括号是否按正确顺序闭合,空串视为有效。题解指出该过程符合后进先出原则,用栈模拟:遍历字符,若与栈顶匹配则弹出,否则压入,遍历后栈空即有效。时间复杂度 O(n),空间复杂度 O(n),并提供 C++ 与 Go 的 AC 代码。

  12. AI 摘要

    本文讲解LeetCode删除链表倒数第n个节点的题解。题目给定链表和n,要求删除倒数第n个节点后返回链表。核心解法为快慢指针:先行指针先走n步,再与慢指针同步前进,当先行指针到达末尾时,慢指针位于待删节点的前驱,修改next即可删除。时间复杂度O(n),空间复杂度O(1),并给出C++和Go的AC代码实现。

  13. AI 摘要

    本文是 LeetCode 四数之和题解。题目要求在整数数组中找出所有不重复的四元组,使其和等于目标值。思路基于三数之和,先排序,再用两层循环固定前两个数,剩余区间用双指针寻找后两个数;各层通过跳过相同元素去重。时间复杂度 O(n^3),空间复杂度 O(1),并给出 C++ 与 Go 实现。

  14. AI 摘要

    本文讲解 LeetCode 电话号码的字母组合题,给定数字序列,要求返回所有可能字母组合。文章指出可用常规 BFS 或 DFS 搜索解决,并给出 C++ 的 BFS、DFS 实现及 Go 的 BFS 实现。时间复杂度为 O(4^n),空间复杂度为 O(4^n),其中 4 表示每个数字最多映射的字符数。核心是按数字映射表逐位扩展或递归拼接字符,最终得到全部组合。

  15. AI 摘要

    该文总结 LeetCode “盛最多水的容器”题。题目给定非负整数数组,每个元素表示垂直线高度,选取两条线与 x 轴构成容器,求最大盛水面积。题解采用双指针:从数组两端向中间移动,面积由较矮高度乘以两线下标差决定;每次移动较矮一侧,并持续更新最大值。时间复杂度 O(n),空间复杂度 O(1),并给出 C++ 与 Go 实现。

  16. AI 摘要

    文章讲解 LeetCode 3Sum Closest:给定整数数组和目标值,找出三数之和最接近目标值并返回该和。解法沿用第15题3Sum思路,先排序,固定一个数后用双指针查找,根据当前和与目标大小移动指针并更新最小差值。示例 nums=[-1,2,1,-4], target=1,结果为2。时间复杂度O(n^2),空间复杂度O(1),并给出C++和Go实现。

  17. AI 摘要

    文章讲解 LeetCode 三数之和问题:在整数数组中找出所有和为 0 且不重复的三元组。核心解法是先排序数组,固定第一个数,再用左右双指针在剩余区间夹逼寻找后两个数;根据三数之和与 0 的大小移动指针,并跳过重复元素避免重复结果。若首数大于 0 可提前结束。时间复杂度 O(n^2),空间复杂度 O(1),并给出 C++ 与 Go 实现。

  18. AI 摘要

    本文是 LeetCode“整数转罗马数字”的题解,先说明罗马数字符号、减法规则及示例,再给出思路:按从大到小列出含 900、400 等特殊组合的映射表,循环比较目标数字,能减则减去对应值并拼接符号,否则后移,从而避免对 4、9 单独判断。时间复杂度 O(n),空间复杂度 O(n),并附 C++ 与 Go 的 AC 代码。

  19. AI 摘要

    本文介绍 LeetCode“罗马数字转整数”题目及解法。题目要求按罗马数字规则将字符串转为整数,并说明 I、X、C 可作减法前缀的六种情况。题解采用简单模拟:顺序读取每个符号并累加其数值;若当前符号值大于前一符号,则减去两倍前一符号值,以修正 IV、IX、CM 等特殊情况。时间复杂度为 O(n),文末给出 C++ 和 Go 实现。

  20. AI 摘要

    文章介绍 LeetCode 最长公共前缀题:给定若干单词,求最长公共前缀,若不存在则返回空字符串。解法以第一个单词作为初始前缀,依次与后续单词逐字符比较,遇到不同字符或单词更短时,将前缀结束位置收缩到当前匹配长度,最后返回该前缀子串。时间复杂度 O(nk),空间复杂度 O(k),并给出 C++ 和 Go 实现。

  21. AI 摘要

    文章围绕 LeetCode 正则表达式匹配题,要求实现支持“.”和“*”且覆盖整个字符串的匹配。先给出递归法,按模式下一字符是否为“*”分情况处理零次或多次匹配;再给出动态规划法,定义 dp[i][j] 表示 s 前 i 个字符与 p 前 j 个字符是否匹配,并分析普通字符及“*”匹配零次、一次、多次的转移,复杂度 O(m*n)。最后附 C++ 递归、C++ DP 与 Go 代码实现。