- 博客(22)
- 收藏
- 关注
原创 Leetcode刷题Python之3261.统计满足k约束的子字符串II
时间复杂度:O(n + m),其中 n 为字符串长度,m 为查询数量。双指针遍历字符串为 O(n),每个查询可以在 O(1) 时间内得到结果。空间复杂度:O(n),用于存储前缀和数组和右边界数组。这个题目用暴力法会执行超时,因此考虑其他方法。
2024-11-13 10:53:19
945
原创 Leetcode刷题Python之3258.统计满足k约束的子字符串I
时间复杂度:本算法的时间复杂度为 O(n^2),其中 n 是字符串的长度。因为对于每一个起始位置 i,我们要检查以 i 为起点的所有可能子字符串。空间复杂度:O(1),只需要一些常量空间来记录 0 和 1 的数量,以及符合条件的子字符串数量。虽然暴力法的时间复杂度较高,但对于中小规模的输入,性能可以接受。
2024-11-12 13:00:56
1172
原创 Leetcode刷题Python之1547.切棍子的最小成本
时间复杂度:填充 dp 表格需要三重循环,时间复杂度为 O(m3),其中 m 是 cuts 数组的长度。空间复杂度:dp 表的空间复杂度为 O(m2这道题是经典的动态规划问题,通过划分子问题并构建状态转移方程,可以有效地求解最小切割成本。
2024-11-11 19:09:26
877
原创 Leetcode刷题Python之540.有序数组中的单一元素
时间复杂度:O(log n),每次迭代时我们都将搜索空间减半。空间复杂度:O(1),只使用了常量级别的额外空间。通过使用二分查找方法,我们能够在有序数组中高效地找到只出现一次的元素。这种方法巧妙地利用了数组的有序性,将问题简化为更小的子问题,使得我们可以在比线性搜索更短的时间内得到结果。
2024-11-10 10:02:11
885
原创 Leetcode刷题Python之3242.设计相邻元素求和服务
时间复杂度init_ 构造函数遍历二维数组,复杂度为O(n2adjacentSum 和 diagonalSum 查找元素位置并进行固定方向的遍历,复杂度O(1)。空间复杂度:构造的字典 pos 占用O(n2)的空间。总之,NeighborSum 类通过将数组元素值映射到坐标位置来完成题目要求。
2024-11-09 17:13:00
1005
原创 Leetcode刷题Python之3235.判断矩形的两个角落是否可达
时间复杂度:最坏情况下为 O(N2) 是圆的数量。每个圆的DFS遍历会检查其他圆的交集关系。空间复杂度:O(N),用于记录 visited 数组和递归栈。
2024-11-08 21:09:34
2110
原创 Leetcode刷题Python之3255.长度为k的子数组的能量值II
这种实现方式通过一次遍历数组就完成了对所有子数组能量值的计算,时间复杂度为 O(n),其中 n 是输入数组的长度。相比一些暴力解法,提高了效率,比较高效简洁。
2024-11-07 13:52:16
749
原创 Leetcode刷题Python之3254.长度为K的子数组的能量值I
时间复杂度由于需要遍历所有子数组并计算最大值,时间复杂度为 O(n * k),其中 n 是数组长度,k 是子数组的长度。空间复杂度除了输入数组和结果数组,我们使用的额外空间是常量,因此空间复杂度为 O(1)。
2024-11-06 18:28:15
590
原创 Leetcode刷题Python之3222.求出硬币游戏的赢家
在这个问题中,Alice 和 Bob 的博弈策略取决于硬币的数量和组合。通过简单的数学计算和逻辑推理,我们可以快速确定赢家。时间复杂度:O(1)空间复杂度:O(1)
2024-11-05 13:23:03
664
原创 Leetcode刷题Python之3226.使两个整数相等的位更改次数
时间复杂度:O(log n),因为我们需要遍历 n 和 k 的二进制表示,长度为 O(log n)。空间复杂度:O(log n),存储 n 和 k 的二进制表示需要 O(log n) 空间。本题通过二进制字符串的位操作实现目标。关键在于理解只允许将 1 改为 0 的限制。通过逐位对比并计数,可以高效地求解最少更改次数。
2024-11-02 00:28:06
1717
原创 Leetcode刷题Python之3165.不包含相邻元素的子序列的最大和
本题展示了线段树在区间查询与更新问题中的强大应用,尤其在需要高效维护复杂状态的情况下,线段树提供了优秀的解决方案。
2024-10-31 13:22:27
1097
原创 Leetcode刷题Python之3216.交换后字典序最小的字符串
这道题目考察了如何利用奇偶性判断和字典序比较来解决字符串问题。通过最多交换一次相邻的具有相同奇偶性的数字,我们可以轻松找到字典序最小的字符串。
2024-10-30 10:52:42
731
原创 Leetcode刷题Python之685.冗余连接II
并查集是一种常用的数据结构,适用于动态连通性问题。查找(Find):查找某个元素所属的集合的代表元素。合并(Union):将两个不同的集合合并为一个集合。路径压缩:在查找操作时,将树的节点直接连接到根节点,从而减少树的高度。按秩合并:在合并时,总是将较小的树挂到较大的树上,从而尽量保持树的高度较小。在这个算法中,每条边的查找和合并操作都经过优化,时间复杂度为 O(n),其中n 是节点的数量。时间复杂度:O(n),因为每个节点的查找和合并操作的时间复杂度是近似常数的。
2024-10-28 10:38:50
992
原创 Leetcode刷题Python之684.冗余连接
并查集是解决图的连通性问题的一个强大工具。通过路径压缩和按秩合并的优化,可以在近乎线性时间内处理大量的合并和查询操作。在这个算法中,每个节点的查找和合并操作都带有路径压缩和按秩合并优化,因此时间复杂度接近于线性的 O(nα(n)) ,其中α(n)是阿克曼函数的反函数,增长非常缓慢,几乎可以看作常数时间。因此,这个解法对于 n 的范围在 1000以内的场景是非常高效的。
2024-10-27 17:21:58
1137
原创 Leetcode刷题Python之3181.执行操作可获得的最大总奖励II
本文的方法使用了集合来去重和加速查找,同时利用位运算来计算奖励的组合。位运算提供了一种非常高效的方式来表示和处理多个奖励值的累加问题。这使得算法在处理大规模数据时仍然能够保持较高的性能。时间复杂度:主要是排序操作的时间复杂度为 O(nlogn),位运算部分的时间复杂度为 O(n)。空间复杂度:由于使用了集合和位掩码,空间复杂度为 O(n)。这种方法能够通过位运算压缩信息,并快速得出结果。
2024-10-26 22:05:03
844
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人