首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
刷穿 LeetCode
宫水三叶的刷题日记
创建于2021-05-19
订阅专栏
本专栏除了讲解解题思路以外,还会给出最简洁的代码。
等 2930 人订阅
共980篇文章
创建于2021-05-19
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
你真的了解什么是「暴力解法」吗 ...
这是 LeetCode 上的995. K 连续位的最小翻转次数,难度为 Hard。 在仅包含 0 和 1 的数组 A 中,一次 K 位翻转包括选择一个长度为 K 的(连续)子数组,同时将子数组中的每个 0 更改为 1,而每个 1 更改为 0。 返回所需的 K 位翻转的最小次数,…
【Top K】问题的多种解法:冒泡排序 & 快速排序 & 优先队列 ...
这是 LeetCode 上的703. 数据流中的第 K 大元素,难度为 Easy。 设计一个找到数据流中第 k 大元素的类(class)。注意是排序后的第 k 大元素,不是第 k 个不同的元素。 KthLargest(int k, int[] nums) 使用整数 k 和整数流…
【每日算法/刷穿 LeetCode】992. K 个不同整数的子数组(困难)
给定一个正整数数组 nums。 如果 nums 的某个子数组中不同整数的个数恰好为 k,则称 nums 的这个连续、不一定不同的子数组为好子数组。 例如,[1,2,3,1,2] 中有 3 个不同的整数:1,2,以及 3。 返回 nums 中好子数组的数目。 找到其左边「最远」满…
LeetCode 第 45 场双周赛题解
t1:5657. 唯一元素的和(简单) 给你一个整数数组 nums 。数组中唯一元素是那些只出现恰好一次的元素。 请你返回 nums 中唯一元素的和。 一道模拟题,直接使用哈希表或者数组来存元素出现次数即可。 对于一些给定了元素数据范围的题目,建议使用数据来进行统计,这样对于 …
【每日算法/刷穿 LeetCode】23. 合并K个升序链表(困难)
给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 做有关链表的题目,有个常用技巧:添加一个虚拟头结点(哨兵),帮助简化边界情况的判断。 由于所有链表本身满足「升序」,一个直观的做法是,我们比较每条链表的头结点,选取值最小的节点…
【每日算法】【刷穿 LeetCode】22. 括号生成(中等)
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。 既然题目是求所有的方案,那只能爆搜了,爆搜可以使用 DFS 来做。 从数据范围 1 <= n <= 8 来说,DFS 应该是稳稳的 AC。 一对合法的括号,应该是先出…
【刷穿 LeetCode】480. 滑动窗口中位数(困难)
中位数是有序序列最中间的那个数。 如果序列的长度是偶数,则没有最中间的数;此时中位数是最中间的两个数的平均数。 给你一个数组 nums,有一个长度为 k 的窗口从最左端滑动到最右端。 窗口中有 k 个数,每次窗口向右移动 1 位。 你的任务是找出每次窗口移动后得到的新窗口中元素…
【刷穿 LeetCode】20. 有效的括号(简单)
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 这是道模拟题,同一类型的括号,一个右括号要对应一个左括号。 时间复杂度:对字符串…
【刷穿 LeetCode】19. 删除链表的倒数第 N 个结点(中等)
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 删除链表的倒数第 n 个结点,首先要确定倒数第 n 个节点的位置。 我们可以设定两个指针,分别为 slow 和 fast,刚开始都指向 head。 然后先让 fast 往前走 n 步,slow 指针不动,这时候…
【刷穿 LeetCode】18. 四数之和(中等)
给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。 答案中不可以包含重复的四元组。 这道题的思路和 【刷…
【刷穿 LeetCode】17. 电话号码的字母组合(中等)
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。 对于字符串 ds 中的每一位数字,都有其对应的字母映射数组。 时间复杂…
【刷穿 LeetCode】16. 最接近的三数之和(中等)
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。 假定每组输入只存在唯一答案。 这道题的思路和 【刷穿 LeetCode】15. 三数之和(中等) 区别不大。 对数组进…
【刷穿 LeetCode】15. 三数之和(中等)
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 对数组进行排序,使用三个指针 i、j 和 k 分别代表要找的三个数。 …
【刷穿 LeetCode】14. 最长公共前缀(简单)
编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 说明:判断条件不一定要写成 i < Integer.MAX_VALUE,题目给出了范围是 200 以内,写成 i <= 200 也可以。不影响执行效率。 时间复杂度:对…
【刷穿 LeetCode】13. 罗马数字转整数(简单)
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。 通常情况下,罗马数字中小的数字在大的数字的右边。…
【刷穿 LeetCode】12. 整数转罗马数字(中等)
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。 通常情况下,罗马数字中小的数字在大的数字的右边。…
【刷穿 LeetCode】11. 盛最多水的容器(中等)
给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器。 …
面试官问我斐波拉契数列,我从暴力递归讲到动态规划 ...
在系统学习动态规划之前,一直搞不懂「动态规划」和「记忆化搜索」之间的区别。 总觉得动态规划只是单纯的难在于对“状态”的抽象定义和“状态转移方程”的推导,并无具体的规律可循。 本文将助你彻底搞懂动态规划。 其实动态规划也就是这样演练过来的。 可以说几乎所有的「动态规划」都可以通过…
【刷穿 LeetCode】9. 回文数(简单)
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 既然进阶里提到了不能用字符串来解决,那么三叶就提供一下吧。 时间复杂度:数字 n 的位数,数字大约有 log10(n) 位,翻转操作要执行循环。复杂度为 O(log10(n)) 空间复杂度…
【刷穿 LeetCode】8. 字符串转换整数 (atoi) (中等)
请你来实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下: 如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。 假如第一…
下一页