leetcode medium

Espresso Macchiato1 个月前
leetcode·动态规划·leetcode medium·leetcode 3316·leetcode双周赛141
Leetcode 3316. Find Maximum Removals From Source String这一题思路上的话就是一个动态规划的题目,我们仿照lcs,考察每一个位置是否可以drop即可。而关于lcs算法,网上有很多介绍文章,这里就不过多赘述了。
Espresso Macchiato2 个月前
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 Macchiato2 个月前
leetcode·leetcode medium·leetcode双周赛140·leetcode 3301
Leetcode 3301. Maximize the Total Height of Unique Towers这一题思路上还是比较直接的,我们只需要排序之后从大到小依次分配最大可能的高度即可。如果出现某个位置最大允许分配的高度为0,那么就说明无法构造成功,反之即可给出最大高度了。
Espresso Macchiato2 个月前
leetcode medium·lcs·leetcode 3302·leetcode双周赛140·最大公共子序列
Leetcode 3302. Find the Lexicographically Smallest Valid Sequence这一题的话由于至多只能够修改一个字符,因此,我们就是要考察每一个字符前正向的最大公共子序列的长度和其后方的从后往前的最大公共子序列的长度。如果两者相加不小于目标目标字符串word2的长度减一,即表示调整当前位置上的字符的话即可获得一个子串使之与目标字符串word2相同。
Espresso Macchiato3 个月前
leetcode·leetcode medium·leetcode 3255·leetcode 3254·leetcode周赛137
Leetcode 3255. Find the Power of K-Size Subarrays II这一题是题目3254的进阶版,其实主要就是增加了算法复杂度。整体上来说的话思路还是一个分段的思路,我们找到所有的满足条件的连续递增数列,显然他们之间不可能有交集。
Espresso Macchiato4 个月前
leetcode·leetcode medium·回文·leetcode 3240·leetcode双周赛136
Leetcode 3240. Minimum Number of Flips to Make Binary Grid Palindromic II这一题的话要同时满足行列上都是回文,因此我们每次考察需要考虑四个角上对应的元素,考察通过最少次数的变换使之变得都相同,显然如果他们本身相同,那么不变即可,如果有三个元素相同,变剩下那个即可,如果有两个元素相同,随机变两个即可。且变换之后的1的个数总是4的倍数。
Espresso Macchiato4 个月前
排列组合·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 Macchiato5 个月前
leetcode medium·leetcode题解·leetcode 3201·leetcode周赛404
Leetcode 3201. Find the Maximum Length of Valid Subsequence I这一题我们注意到,要使得条件成立,那么选择出来的数列在奇数位和偶数位上的数字奇偶性必然相同,因此,我们只需要讨论以下4种情况就行了:
Espresso Macchiato5 个月前
leetcode·动态规划·leetcode medium·leetcode周赛403·leetcode 3196
Leetcode 3196. Maximize Total Cost of Alternating Subarrays这一题就是一个动态规划,只需要考虑每一个元素作为开始和处于序列当中的二元态即可,其中,如果处在序列当中但刚好在奇数的位置,那么两种情况刚好可以归并。
Espresso Macchiato5 个月前
leetcode·leetcode medium·leetcode题解·leetcode 3195·leetcode周赛403
Leetcode 3195. Find the Minimum Area to Cover All Ones I这一题还是挺简单的,只要找到所有1所在的元素的上下左右4个边界,作为目标矩形的四个边即可。给出python代码实现如下:
Espresso Macchiato5 个月前
动态规划·leetcode medium·leetcode题解·leetcode 3186·leetcode周赛402
Leetcode 3186. Maximum Total Damage With Spell Casting这一题就是一个简单的动态规划的题目,我们只需要考虑每一个位置上的元素取或者不取即可:给出python代码实现如下:
Espresso Macchiato5 个月前
leetcode medium·leetcode题解·leetcode 3175·leetcode双周赛132
Leetcode 3175. Find The First Player to win K Games in a Row这一题我的解答比较暴力,基本就是暴力解答,唯一优化的就是对于特殊情况进行了一下剪枝,具体来说的话,如果k大于长度n,那么显然最后首先达到胜利条件的一定是最大的那个元素,而对于其他的情况,我就暴力求解了。
Espresso Macchiato6 个月前
leetcode medium·leetcode题解·leetcode双周赛130·leetcode 3143
Leetcode 3143. Maximum Points Inside the Square这一题由于都是从中心开始的正方形,因此,我们只要找到所有tag下的点距离中心的位置最小的点,然后看有多少可以包括其中即可,我们可选的点必然是最近的点,次近的点的距离就是我们的边际,因此我们就可以定义出距离还有边界,看一共可以包括多少个不同tag的点。
Espresso Macchiato6 个月前
leetcode medium·leetcode题解·leetcode 3128·leetcode双周赛129
Leetcode 3128. Right Triangles这一题的话对于任意一个位置,如果该位置为1,假设其所在行中1的个数 r i r_i ri,所在列中1的个数为 c j c_j cj,那么以该位置作为三角形顶点的三角形的个数就是 ( r i − 1 ) ⋅ ( c j − 1 ) (r_i-1)\cdot(c_j-1) (ri−1)⋅(cj−1),因此,我们只需要先求出所有行和列当中的1的个数,然后遍历一下所有1的位置,将对应的三角形个数相加即可得到最终的答案。
Espresso Macchiato6 个月前
leetcode medium·leetcode题解·leetcode 3137·leetcode周赛396
Leetcode 3137. Minimum Number of Operations to Make Word K-Periodic这一题的话我们只需要将原始的字符串按照k个字母为一组进行分组,然后看各自出现的频次即可,取出最大频次的subarray作为最终的目标,即可快速得到答案为总的group数减去最大单一频次。
Espresso Macchiato8 个月前
滑动窗口·leetcode medium·leetcode题解·leetcode周赛389·leetcode 3085
Leetcode 3085. Minimum Deletions to Make String K-Special这一题思路上来说的话我们只需要统计一下word当中所有的字符出现的频次,然后依次排序,我们只需要考察各个删除方案使得所有存在的频次之间的差值不多于 k k k即可。
Espresso Macchiato8 个月前
排列组合·leetcode medium·leetcode题解·leetcode 3084·leetcode周赛389
Leetcode 3084. Count Substrings Starting and Ending with Given Character这一题其实挺简单的,只要看一下目标的character在string当中出现了几次即可,然后就是一个 C n 2 C_n^2 Cn2的头尾选择问题即可。
Espresso Macchiato8 个月前
排序算法·leetcode medium·leetcode题解·leetcode 3075·leetcode周赛388
Leetcode 3075. Maximize Happiness of Selected Children这一题只需要想清楚一个点就行了:因此,我们的选取策略就是将孩子按照happiness进行排序,然后选择最大的k个孩子从大到小依次进行选取就行了,这样就能确保获得最大的score。
Espresso Macchiato9 个月前
leetcode medium·回文·leetcode题解·leetcode 3035·leetcode周赛384
Leetcode 3035. Maximum Palindromes After Operations这一题的话因为可以任意交换,因此事实上要考察回文的最大个数,我们只需要统计所有单词当中字符出现的频次,看看他们能组成多少回文即可。
Espresso Macchiato10 个月前
leetcode medium·leetcode题解·leetcode 3016·leetcode周赛381·频率统计
Leetcode 3016. Minimum Number of Pushes to Type Word II这道题的话思路其实还是蛮简单的,显然我们的目的是要令对给定的word在键盘上敲击的次数最小。因此,我们只需要对单词当中按照字符的频次进行倒序排列,然后出现频次越高的字母就安排尽量靠前的位置即可。