leetcode medium

Espresso Macchiato4 天前
leetcode·leetcode medium·leetcode周赛452·leetcode 3567
Leetcode 3567. Minimum Absolute Difference in Sliding Submatrix这一题想了一下,没想到啥好的思路,就是暴力直接求解了一下,直接一个三重循环强行求取了一下答案。唯一可以谈得上优化的就是在滑动过程中通过控制有序数列的方式来优化临近值的求解。
Espresso Macchiato4 天前
动态规划·leetcode medium·leetcode 3566·leetcode周赛452
Leetcode 3566. Partition Array into Two Equal Product Subsets这一题我的实现还是比较暴力的,首先显而易见的,若要满足题目要求,则给出的数组的所有元素的乘积必然是target的平方,因此,我们可以快速由此判断该数组是否可分。
Espresso Macchiato9 天前
动态规划·leetcode medium·leetcode 3557·leetcode双周赛157
Leetcode 3557. Find Maximum Number of Non Intersecting Substrings这一题就是一个比较直接的动态规划的题目,我们只需要考察每一个位是否可以作为一个子串的开头,如果可以那么比较其被取用以及不被取用时的较大值将其进行返回,如果不可以,那么直接返回其不被取用时的值即可。
Espresso Macchiato17 天前
广度优先遍历·leetcode medium·leetcode周赛450·leetcode 3552·堆排
Leetcode 3552. Grid Teleportation Traversal这一题的话核心就是一个广度优先遍历,我们只需要从原点开始,一点点考察其所能到达的位置,直至其最终到达终点即可。
Espresso Macchiato18 天前
leetcode·排序·leetcode medium·leetcode 3551·leetcode周赛450
Leetcode 3551. Minimum Swaps to Sort by Digit Sum这一题思路上我实现的非常暴力,就是先求出正确的排列,然后从头考察每一个元素是否处在其目标位置上,如果没有,则给出一次置换。
Espresso Macchiato21 天前
leetcode·leetcode medium·图遍历·leetcode 3543·leetcode双周赛156
Leetcode 3543. Maximum Weighted K-Edge Path这一题思路上就是一个遍历的思路,我们只需要考察每一个节点作为起点时,所有长为 k k k的线段的长度,在符合条件的结果当中选出最大值即可。
Espresso Macchiato1 个月前
leetcode medium·dsu·leetcode 3532·leetcode周赛447·uf
Leetcode 3532. Path Existence Queries in a Graph I这一题算是一个比较典型的DSU的题目,我们就是不断地根据前后节点的距离将其进行聚类,然后考察query当中的两个节点是否属于同一个簇即可。
Espresso Macchiato1 个月前
leetcode··leetcode medium·leetcode 3523·leetcode周赛446
Leetcode 3523. Make Array Non-decreasing这一题思路上来说就是一个栈的问题,就是从后往前依次考察每一个元素,显然,当前位置要么被舍弃,要么被保留,但是无论如何其对应位置一定会留下一个至少不小于当前元素大小的新元素,因此,后续所有比起更小的元素都无法被保留。
Espresso Macchiato5 个月前
leetcode·动态规划·leetcode medium·leetcode 3418·leetcode周赛432
Leetcode 3418. Maximum Amount of Money Robot Can Earn这一题我的思路比较暴力,就是一个动态规划,本质上就是全量遍历,然后找到最优路径。给出python代码实现如下:
Espresso Macchiato6 个月前
leetcode·z算法·leetcode medium·leetcode周赛428·leetcode 3388
Leetcode 3388. Count Beautiful Splits in an Array这一题我的思路还是比较暴力的,首先,我们通过z算法,可以很快找到所有满足subarray 1为subarray 2的prefix的全部可能的分割方法。
Espresso Macchiato8 个月前
leetcode·动态规划·leetcode medium·leetcode 3316·leetcode双周赛141
Leetcode 3316. Find Maximum Removals From Source String这一题思路上的话就是一个动态规划的题目,我们仿照lcs,考察每一个位置是否可以drop即可。而关于lcs算法,网上有很多介绍文章,这里就不过多赘述了。
Espresso Macchiato8 个月前
leetcode·滑动窗口·leetcode medium·leetcode 3306·leetcode周赛417
Leetcode 3306. Count of Substrings Containing Every Vowel and K Consonants II这一题的话思路上就是一个滑动窗口,考察没一个点作为起始位置时,满足同时包含5个元音字符以及恰好 k k k个辅音字符的第一个位置,然后从该位置到其下一个辅音字符之间的任意一个位置都可以构成一个满足条件的substring。
Espresso Macchiato8 个月前
leetcode·leetcode medium·leetcode双周赛140·leetcode 3301
Leetcode 3301. Maximize the Total Height of Unique Towers这一题思路上还是比较直接的,我们只需要排序之后从大到小依次分配最大可能的高度即可。如果出现某个位置最大允许分配的高度为0,那么就说明无法构造成功,反之即可给出最大高度了。
Espresso Macchiato8 个月前
leetcode medium·lcs·leetcode 3302·leetcode双周赛140·最大公共子序列
Leetcode 3302. Find the Lexicographically Smallest Valid Sequence这一题的话由于至多只能够修改一个字符,因此,我们就是要考察每一个字符前正向的最大公共子序列的长度和其后方的从后往前的最大公共子序列的长度。如果两者相加不小于目标目标字符串word2的长度减一,即表示调整当前位置上的字符的话即可获得一个子串使之与目标字符串word2相同。
Espresso Macchiato10 个月前
leetcode·leetcode medium·leetcode 3255·leetcode 3254·leetcode周赛137
Leetcode 3255. Find the Power of K-Size Subarrays II这一题是题目3254的进阶版,其实主要就是增加了算法复杂度。整体上来说的话思路还是一个分段的思路,我们找到所有的满足条件的连续递增数列,显然他们之间不可能有交集。
Espresso Macchiato10 个月前
leetcode·leetcode medium·回文·leetcode 3240·leetcode双周赛136
Leetcode 3240. Minimum Number of Flips to Make Binary Grid Palindromic II这一题的话要同时满足行列上都是回文,因此我们每次考察需要考虑四个角上对应的元素,考察通过最少次数的变换使之变得都相同,显然如果他们本身相同,那么不变即可,如果有三个元素相同,变剩下那个即可,如果有两个元素相同,随机变两个即可。且变换之后的1的个数总是4的倍数。
Espresso Macchiato10 个月前
排列组合·leetcode medium·容斥原理·leetcode 3234·leetcode周赛408
Leetcode 3234. Count the Number of Substrings With Dominant Ones这一题要求被1 dominate的substring的个数,整体上来说是一个 O ( N 2 ) O(N^2) O(N2)算法复杂度的东西,还挺麻烦的,所幸题中限制了1的个数需要多于0的平方数,因此我们可以反其道而行,依次考察所有存在 i i i个零的substring,看看其中有多少个满足1的个数不少于 i 2 i^2 i2,将其累加即为我们最终的答案,如此一来,整体的算法复杂度可以优化至 O ( N 3 / 2 ) O(N^{3/2}) O(N3/2),勉强可以接受吧。
Espresso Macchiato1 年前
leetcode medium·leetcode题解·leetcode 3201·leetcode周赛404
Leetcode 3201. Find the Maximum Length of Valid Subsequence I这一题我们注意到,要使得条件成立,那么选择出来的数列在奇数位和偶数位上的数字奇偶性必然相同,因此,我们只需要讨论以下4种情况就行了:
Espresso Macchiato1 年前
leetcode·动态规划·leetcode medium·leetcode周赛403·leetcode 3196
Leetcode 3196. Maximize Total Cost of Alternating Subarrays这一题就是一个动态规划,只需要考虑每一个元素作为开始和处于序列当中的二元态即可,其中,如果处在序列当中但刚好在奇数的位置,那么两种情况刚好可以归并。
Espresso Macchiato1 年前
leetcode·leetcode medium·leetcode题解·leetcode 3195·leetcode周赛403
Leetcode 3195. Find the Minimum Area to Cover All Ones I这一题还是挺简单的,只要找到所有1所在的元素的上下左右4个边界,作为目标矩形的四个边即可。给出python代码实现如下: