自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Keep Coding

点关注,不迷路 ↓↓↓❤️

  • 博客(850)
  • 收藏
  • 关注

原创 写于LeetCode刷完900题之际的感想

时光匆匆,距离开始写博客转瞬便是大半年已过, 从最初寒假每天十题的刷题狂热信徒,到如今一周也做不到二十题的佛系上岸选手,有了很多感想经验,因而有了这篇文章。我的第一轮刷题,始于二叉树,接着按照二叉搜索树, 哈希表,栈, 堆,优先级队列,贪心, 数组,链表, 二分查找, 字符串, DFS, 回溯, BFS, 字典树, 并查集,动态规划这样的顺序, 在同一个Tag内按由易到难的顺序做题(ha...

2019-11-01 08:35:52 7323 10

原创 Python爬虫抓取LeetCode题解,获取力扣中国(leetcode-cn.com)提交代码,自动保存submission到本地,同步上传到github

力扣中国虽然可以和github绑定账号,但是我提交的题解并不能同步到github上……辛辛苦苦三个月,勤勤恳恳四百题,leetcode一片绿,github万里白。手动上传是不可能手动上传的,这辈子也懒得手动上传。找了一圈只能找到 Leetcode 的提交爬虫,没有力扣中国的,所以只能自己造轮子了。学了两天爬虫鼓捣了这么个东西出来,我用的蛮顺手的,希望你们也能用的顺手。项目地址:...

2019-05-24 19:13:40 5068 34

原创 LeetCode数据规模跟算法时间复杂度的对应关系

大致对应关系如下: Input Size Complexity 50000 O(n) 20000 O(n logn) 1000 O(n ^ 2) 30 O(n ^ 4) 20 O(2 ^ n)

2019-05-10 16:43:32 3421

原创 LeetCode 700题 题解答案集合 Python

2019.5.12更新至题号796,目前共有265题。2019.5.26更新至题号72, 目前共有347题。2019.6.16更新至题号70,目前共有382题。2019.7.7更新至题号5120,目前共有442题。2019.8.5更新至题号1147,目前共有502题。2019.9.6更新至题号288, 目前共有551题。2019.11.13更新至题号426,目前共有602题...

2019-03-27 21:24:58 100634 12

原创 LeetCode-Python-424. 替换后的最长重复字符(滑动窗口)

原理大概是:定义 窗口里出现次数最多的字符的出现次数 = p。对于当前窗口,假设就算 p 已经是历史上最大值,我仍然需要改大于 k 的字符来让窗口满足条件。那么在正常的情况下,我需要改的字符必然也大于k。其实我们完全不用每次循环都重新找窗口里出现次数最多的字符的出现次数,只需追踪历史窗口里出现次数最多的字符的出现次数。题意等价于在 s 里找一个滑动窗口,使得此滑动窗口里的【出现次数最多字符的出现次数】>= 窗口长度 - k。将中间的一个'A'替换为'B',字符串变为 "AABBBBA"。

2024-02-20 04:29:02 384 1

原创 LeetCode-Python-567. 字符串的排列(滑动窗口)

题意等价于在 s 里找一个滑动窗口,使得此滑动窗口的 Counter 等于 t 的 Counter。这里的 Counter 就是字符到频率的一个 mapping 字典。2. 调整左指针,去掉不必要或者不合适的部分。s2 包含 s1 的排列之一 ("ba").1. 让右指针向右一步,新字符入队。时间复杂度: O(M + N)空间复杂度:O(1)

2024-02-20 03:19:52 370

原创 LeetCode-Python-​76. 最小覆盖子串​(滑动窗口)

题意等价于在 s 里找一个滑动窗口,使得此滑动窗口的 Counter 大于等于 t 的 Counter。最小覆盖子串 "BANC" 包含来自字符串 t 的 'A'、'B' 和 'C'。这里的 Counter 就是字符到频率的一个 mapping 字典。2. 调整左指针,去掉不必要或者不合适的部分。t 中两个字符 'a' 均应包含在 s 的子串中,因此没有符合条件的子字符串,返回空字符串。所有字符的子串,则返回空字符串。整个字符串 s 是最小覆盖子串。时间复杂度: O(M + N)所有字符的最小子串。

2024-02-20 03:16:08 477

原创 LeetCode-Python-1686. 石子游戏VI(贪心)

比方说,Alice 拿石子 1 ,Bob 拿石子 2 , Alice 拿石子 0 ,Alice 会得到 6 分而 Bob 得分为 7 分。如果 Alice 拿石子 1 (下标从 0开始),那么 Alice 可以得到 3 分。不管 Alice 怎么操作,Bob 都可以得到比 Alice 更高的得分。Alice 拿石子 0 , Bob 拿石子 1 ,他们得分都为 1 分。一个石子并得到这个石子的价值。Alice 和 Bob 轮流玩一个游戏,Alice 先手。Bob 只能选择石子 0 ,得到 2 分。

2024-02-03 14:59:59 383

原创 LeetCode-Python-2487. 从链表中移除节点(单调栈 + 递归)

根据题意,next_res 一定是后面最大的那个节点,把这个节点跟 head 作比较来判断 要不要把 head 放到结果里即可。从递归的角度出发,假设从第二个节点开始的链表已经处理好了,我们叫它 next_res。每个节点的值都是 1 ,所以没有需要移除的节点。需要移除的节点是 5 ,2 和 3。- 节点 13 在节点 5 右侧。- 节点 13 在节点 2 右侧。- 节点 8 在节点 3 右侧。给你一个链表的头节点。时间复杂度:O(N)空间复杂度:O(N)时间复杂度:O(N)空间复杂度:O(N)

2024-01-13 14:22:13 367

原创 LeetCode-Python-1599. 经营摩天轮的最大利润

2. 9 位游客抵达,4 位登舱,11 位等待(2 位是先前就在等待的,9 位新加入等待的),摩天轮轮转。2. 3 位游客抵达,4 位在等待的游客登舱,其他 3 位等待,摩天轮轮转。3. 最后 6 位游客抵达,4 位登舱,13 位等待,摩天轮轮转。1. 10 位游客抵达,4 位登舱,6 位等待下一舱,摩天轮轮转。4. 5 位游客抵达,4 位登舱,1 位等待,摩天轮轮转。1. 8 位游客抵达,4 位登舱,4 位等待下一舱,摩天轮轮转。2. 4 位游客抵达,4 位登舱,0 位等待,摩天轮轮转。

2024-01-13 14:04:13 976

原创 LeetCode-Python-2182. 构造限制重复的字符串(栈)

接着由于限制连续出现次数,所以可以每次把当前最大字符处理完之后,如果还需对它进行以后处理,就把它拿出来,再处理次大的字符,再把最大字符塞进栈。注意,尽管 "zzcccca" 字典序更大,但字母 'c' 连续出现超过 3 次,所以它不是一个有效的 repeatLimitedString。注意,尽管 "bbabaaa" 字典序更大,但字母 'a' 连续出现超过 2 次,所以它不是一个有效的 repeatLimitedString。但其实由于字符串的大小是连续并且已知上下界的,所以数组其实也可以。

2024-01-13 11:27:44 380

原创 LeetCode-Python-763. 划分字母区间(字符串)

像 "ababcbacadefegde", "hijhklij" 这样的划分是错误的,因为划分的片段数较少。划分结果为 "ababcbaca"、"defegde"、"hijhklij"。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是。先找出来每个字母第一次出现的下标和最后一次出现的下标,返回一个表示每个字符串片段的长度的列表。每个字母最多出现在一个片段中。时间复杂度:O(N)空间复杂度:O(1)

2023-08-31 10:53:03 212

原创 Python 实现命令行界面的贪吃蛇小游戏教程(OOD)

请你设计一个贪吃蛇小游戏,这是我最近的一道北美CS面试题,不同于传统的 LC 类型算法题,这类 Object-Oriented Design的问题更侧重于 Object 的设计以及娴熟的代码能力。我准备的时候觉得非常有意思,于是用本文记录下来。

2023-08-10 12:52:01 297

原创 刷题小白入门攻略

明明自觉学会了不少知识,可真正开始做题时,却还是出现了“一支笔,一双手,一道力扣(Leetcode)做一宿”的窘境?你是否也有过这样的经历,题型不算很难,看题解也能弄明白,可一到自己做就变成了与题面面相觑无从下手。这种困境如今正烦恼着你还是已经被你克服呢?

2023-07-20 08:39:09 478

原创 LeetCode-Python-2765. 最长交替子序列(数组 + 模拟)

交替子数组有 [3,4] ,[3,4,3] 和 [3,4,3,4]。最长的子数组为 [3,4,3,4] ,长度为4。[4,5] 和 [5,6] 是仅有的两个交替子数组。它们长度都为 2。子数组中,最长的长度,如果不存在交替子数组,请你返回。满足以下条件,我们称它是一个。找到所有可能的最长的交替子数组。子数组是一个数组中一段连续。时间复杂度:O(n)空间复杂度:O(1)

2023-07-16 13:00:18 301

原创 LeetCode-Python-2780.合法分割的最小下标(哈希表)

两个数组 [2,1,3,1,1] 和 [1,7,1,2,1] 都有与 nums 一样的支配元素,所以这是一个合法分割。数组 [2,1,3,1,1] 中,元素 1 是支配元素,因为它在数组中出现了 3 次,且 3 * 2 > 5。数组 [1,7,1,2,1] 中,元素 1 是支配元素,因为它在数组中出现了 3 次,且 3 * 2 > 5。我们将数组在下标 4 处分割,得到 [2,1,3,1,1] 和 [1,7,1,2,1]。我们将数组在下标 2 处分割,得到 [1,2,2] 和 [2]。

2023-07-16 12:43:57 193

原创 LeetCode-Python-2779.数组的最大美丽值(扫描线区间)

特点在于,对于每一个区间,比如这道题里的 [num - k, num + k],我们只需要处理区间头尾,中间的部分不用管,在最后所有区间都处理完了之后再整体扫一遍就可以确定每个点出现的频率。- 选择下标 1 ,将其替换为 4(从范围 [4,8] 中选出),此时 nums = [4,4,1,2]。- 选择下标 3 ,将其替换为 4(从范围 [0,4] 中选出),此时 nums = [4,4,1,4]。定义是:经由原数组删除一些元素(也可能不删除)得到的一个新数组,且在此过程中剩余元素的顺序不发生改变。

2023-07-16 12:37:05 132

原创 LeetCode-Python-2778.特殊元素平方和(数组 + 模拟)

因此,nums 中所有元素的平方和等于 nums[1] * nums[1] + nums[2] * nums[2] + nums[3] * nums[3] + nums[6] * nums[6] = 2 * 2 + 7 * 7 + 1 * 1 + 3 * 3 = 63。因此,nums 中所有元素的平方和等于 nums[1] * nums[1] + nums[2] * nums[2] + nums[4] * nums[4] = 1 * 1 + 2 * 2 + 4 * 4 = 21。

2023-07-16 12:28:11 98

原创 LeetCode-Python-2766. 重新放置石块(哈希表)

第 i = 0 步操作中,我们将位置 1 处的石块移到位置 2 处,有石块的位置为 [2,2,3,3]。第 i = 1 步操作中,我们将位置 3 处的石块移到位置 2 处,有石块的位置为 [2,2,2,2]。第 i = 0 步操作中,我们将位置 1 处的石块移到位置 2 处,位置 2,6,7,8 有石块。第 i = 1 步操作中,我们将位置 7 处的石块移到位置 9 处,位置 2,6,8,9 有石块。第 i = 2 步操作中,我们将位置 2 处的石块移到位置 5 处,位置 5,6,8,9 有石块。

2023-07-12 13:03:11 53

原创 LeetCode-Python-2761. 和等于目标值的质数对

这两个质数对分别是 [3,7] 和 [5,5],按照题面描述中的方式排序后返回。可以证明不存在和为 2 的质数对,所以返回一个空数组。如果不存在符合要求的质数对,则返回一个空数组。请你以二维有序列表的形式返回符合题目要求的所有。的自然数,并且只有两个因子,即它本身和。在这个例子中,存在满足条件的两个质数对。

2023-07-12 12:44:03 68

原创 LeetCode-Python-2760. 最长奇偶子数组

在这个示例中,我们选择从 l = 1 开始、到 r = 3 结束的子数组 => [2,5,4] ,满足上述条件。在这个示例中,我们选择从 l = 0 开始、到 r = 2 结束的子数组 => [2,3,4]。在这个示例中,我们选择从 l = 1 开始、到 r = 1 结束的子数组 => [2]。因此,答案就是这个子数组的长度 3。可以证明 3 是满足题目要求的最大长度。因此,答案就是这个子数组的长度 3。可以证明 1 是满足题目要求的最大长度。以整数形式返回满足题目要求的最长子数组的长度。

2023-07-12 12:31:39 157

原创 LeetCode-Python-2544. 交替数字和

返回所有数字及其对应符号的和。水题,直接模拟即可。时间复杂度:O(1)空间复杂度:O(1)

2023-07-12 12:24:21 75

原创 Databricks Certified Spark Developer Associate 3.0 考试经验分享

Databricks Certified Spark Developer Associate 3.0 是 Databricks 认证大数据处理框架 Spark 基础水平的证书。考试卷面语言只有英文,编程语言可以选 Python 或者 Scala,两者几乎完全相同(官方用词: incredibly similiar),所以备考资料可以通用。考试费用小贵,原价200🔪,不着急的同学可以等活动,比如去年有全免券,今年一月有活动能拿75% discount 券。考试时间120分钟,一共60道五选一选择题。

2023-07-12 12:03:50 311

原创 LeetCode-Python-1657. 确定两个字符串是否接近

2. 两个单词的字母的词频必须完全相同,比如都满足一个字母出现一次,另一个字母出现两次。具体是哪个字母不重要,因为可以通过操作2转换。时间复杂度:O(l1 + l2) + O(26log26) = O(l1 + l2),因为排序数组的长度最长是26。不管执行多少次操作,都无法从 word1 得到 word2 ,反之亦然。不管执行多少次操作,都无法从 word1 得到 word2 ,反之亦然。如果可以使用以下操作从一个字符串得到另一个字符串,则认为两个字符串。2 次操作从 word1 获得 word2。

2023-07-09 12:33:54 117

原创 LeetCode-Python-1861. 旋转盒子

由于重力原因,部分石头的位置会发生改变。每个石头会垂直掉落,直到它遇到障碍物,另一个石头或者箱子的底部。遇到叶子时把它移到队列里最旧也就是最右边的空位置,然后把它本身的位置入队,因为它移走之后原地就空了。首先可以先旋转再施加重力的影响,也可以先重力再旋转,这里我选择前者。中的石头要么在一个障碍物上,要么在另一个石头上,要么在箱子的底部。,它表示一个箱子的侧视图。的矩阵,表示按照上述旋转后,箱子内的结果。影响障碍物的位置,同时箱子旋转不会产生。,也就是说石头的水平位置不会发生改变。时间复杂度:O(MN)

2023-07-09 12:25:45 52

原创 两天速通Terraform Associate证书经验分享

Terraform是Hashicorp下的一个Infra as Code(IaC)的工具,可以直接写代码来配置云上的Infra,就不用在Console里各种点点点创建云上的各种Resources。考试时间60分钟,总共57道题,题型包括单选多选,填空和对错,不需要写代码。考试的prerequisite建议要懂基本的Terminal操作以及基本的Cloud概念。考试费用七十刀,只能选英语。考完试当场出分,48小时内可拿badge。

2023-06-18 14:53:34 715 2

原创 LeetCode-Python-879. 盈利计划(记忆化搜索 + DP)

这道题是套皮的01背包问题,group[i] 其实是 size[i], profit[i] 是 values[i],有 7 种可能的计划:(0),(1),(2),(0,1),(0,2),(1,2),以及 (0,1,2)。至少产生 3 的利润,该集团可以完成工作 0 和工作 1 ,或仅完成工作 1。至少产生 5 的利润,只要完成其中一种工作就行,所以该集团可以完成任何工作。如果成员参与了其中一项工作,就不能参与另一项工作。名员工,他们可以完成各种各样的工作创造利润。总的来说,有两种计划。

2023-06-13 05:15:11 66

原创 LeetCode-Python-1449. 数位成本和为目标值的最大数字(记忆化搜索 + DP)

添加数位 '7' 的成本为 2 ,添加数位 '2' 的成本为 3。"977" 也是满足要求的数字,但 "7772" 是较大的数字。这道题是套皮的完全背包,让你从 1 - 9 里选数字,每个数字的价值就是 cost 数字,可以重复选,使得你选出来的数字的价值之和等于 target。添加数位 '8' 的成本是 7 ,添加数位 '5' 的成本是 5。"85" 的成本为 7 + 5 = 12。我在处理是否完全等于 target 的时候,用了 "#" 表示无效的组合,因为最后组合之和不是 target。

2023-06-13 02:10:55 53

原创 LeetCode-Python-1049. 最后一块石头的重量 II(递归 + DP)

组合 2 和 4,得到 2,所以数组转化为 [2,7,1,8,1],组合 1 和 1,得到 0,所以数组转化为 [1],这就是最优值。组合 7 和 8,得到 1,所以数组转化为 [2,1,1,1],组合 2 和 1,得到 1,所以数组转化为 [1,1,1],,然后将它们一起粉碎。假设石头的重量分别为。如果没有石头剩下,就返回。有一堆石头,用整数数组。时空复杂度相同于递归解。把递归解推广到DP解。

2023-06-12 14:11:51 69

原创 LeetCode-Python-717. 1 比特与 2 比特字符(数组)

链接:https://leetcode.cn/problems/1-bit-and-2-bit-characters。给你一个以 0 结尾的二进制数组 bits ,如果最后一个字符必须是一个一比特字符,则返回 true。用一个变量 connected_with_prev 表示当前字符是否需要和前一字符组合成二比特字符。解释: 唯一的解码方式是将其解析为一个两比特字符和一个一比特字符。解释:唯一的解码方式是将其解析为两比特字符和两比特字符。输入:bits = [1,1,1,0]空间复杂度:O(1)

2023-06-01 03:05:31 59

原创 LeetCode-Python-1110. 删点成林(树 + DFS)

如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合)。输入:root = [1,2,3,4,5,6,7], to_delete = [3,5]输入:root = [1,2,4,null,3], to_delete = [3]每个节点都有一个介于 1 到 1000 之间的值,且各不相同。给出二叉树的根节点 root,树上每个节点都有一个不同的值。输出:[[1,2,null,4],[6],[7]]输出:[[1,2,4]]2. 它自己不能被删。

2023-05-30 02:36:18 70

原创 LeetCode-Python-2685. 统计完全连通分量的数量(模拟)

给你一个整数 n 。现有一个包含 n 个顶点的 无向 图,顶点按从 0 到 n - 1 编号。给你一个二维整数数组 edges 其中 edges[i] = [ai, bi] 表示顶点 ai 和 bi 之间存在一条 无向 边。返回图中 完全连通分量 的数量。

2023-05-29 09:05:49 193

原创 LeetCode-Python-2684. 矩阵中移动的最大次数(DP + BFS)

给你一个下标从 0 开始、大小为 m x n 的矩阵 grid ,矩阵由若干 正 整数组成。你可以从矩阵第一列中的 任一 单元格出发,按以下方式遍历grid :从单元格 (row, col) 可以移动到(row - 1, col + 1)、(row, col + 1) 和 (row + 1, col + 1) 三个单元格中任一满足值 严格 大于当前单元格的单元格。返回你在矩阵中能够 移动 的 最大 次数。

2023-05-29 08:56:37 235

原创 LeetCode-Python-2683. 相邻值的按位异或(模拟)

下标从 0 开始、长度为 n 的数组 derived 是由同样长度为 n 的原始 二进制数组 original 通过计算相邻值的 按位异或(⊕)派生而来。如果 i = n - 1 ,那么 derived[i] = original[i] ⊕ original[0]否则 derived[i] = original[i] ⊕ original[i + 1]解释:不存在能够派生得到 [1,0] 的有效原始二进制数组。输入:derived = [1,1,0]输入:derived = [1,1]时间复杂度:O(N)

2023-05-29 08:41:24 61

原创 LeetCode-Python-2682. 找出转圈游戏输家(模拟)

n 个朋友在玩游戏。这些朋友坐成一个圈,按 顺时针方向 从 1 到 n 编号。从第 i 个朋友的位置开始顺时针移动 1 步会到达第 (i + 1) 个朋友的位置(1

2023-05-29 08:36:13 92

原创 三周速通AWS Certified Solutions Architect - Associate(SAA-C03)经验分享

Solutions Architect - Associate(SSA-C03) 是亚马逊云的基础级考试,参加考试没有门槛,适用于任何人群,但是难度会比 Cloud Practitioner (CLF-C01) 略高一筹。报名费在北美是$150美金,现在报名可以在官网()获得PROMO CODE: AWSRETAKE。使用这个CODE之后,2023年5月31日前的考试如果挂了可以免费重新考一次。这个CODE可以在多个考试报名里使用,但是一个考试只能用一个CODE。考试为65道选择题,其中15题不计分。

2023-05-23 15:11:47 3996 2

原创 20小时速通AWS Certified Cloud Practitioner (CLF-C01) 证书经验分享

Cloud Practitioner是AWS的入门级证书,适用于任何人群,难度较低,零基础即可报名。考试全部为基础概念或基础场景应用的选择题,不涉及写代码。

2023-04-30 13:30:45 2630 2

原创 LeetCode-Python-2325. 解密消息(哈希表)

例如,key = "happy boy"(实际的加密密钥会包含字母表中每个字母 至少一次),据此,可以得到部分对照表('h' -> 'a'、'a' -> 'b'、'p' -> 'c'、'y' -> 'd'、'b' -> 'e'、'o' -> 'f')。输入:key = "the quick brown fox jumps over the lazy dog", message = "vkbs bs t suepuv"key 包含英文字母表中每个字符('a' 到 'z')至少一次。空格 ' ' 保持不变。

2023-02-07 12:37:35 156

原创 LeetCode-Python-1817. 查找用户活跃分钟数(哈希表)

请你统计用户活跃分钟数的分布情况,统计结果是一个长度为 k 且 下标从 1 开始计数 的数组 answer ,对于每个 j(1

2023-01-20 14:56:45 114

原创 2299. 强密码检验器 II(模拟法)

它 不 包含 2 个连续相同的字符(比方说 "aab" 不符合该条件,但是 "aba" 符合该条件)。给你一个字符串 password ,如果它是一个 强 密码,返回 true,否则返回 false。解释:密码不包含数字,且包含 2 个连续相同的字符。@#$%^&*()-+" 这些特殊字符。至少包含 一个特殊字符。@#$%^&*()-+" 中的一个。输入:password = "Me+You--IsMyDream"解释:密码满足所有的要求,所以我们返回 true。至少包含 一个数字。

2023-01-19 08:08:37 131

空空如也

空空如也

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

TA关注的人

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