摘要: 题目链接:2612. 最少翻转操作数 方法:BFS + AVLTree 解题思路 先不考虑被 $ban$ 的位置: 假设当前 $1$ 的位置在下标 $i$ 上,那么将其按照包含 $i$ 且长度为 $k$ 的数组反转一次所能得到的对应下标的可能结果是一个从 $i - k + 1$ 起始到 $i + k 阅读全文
posted @ 2023-04-09 19:01 lixycc 阅读(96) 评论(0) 推荐(0)
摘要: 题目链接:1017. 负二进制转换 方法一:进制转换 解题思路 除基取余法,当基数 $x$ 为负数时,注意将余数 $c$ 取绝对值。重复操作,$c = abs(n % x), n = (n - c) / x$,直到 $n = 0$。 代码 class Solution { public: strin 阅读全文
posted @ 2023-04-09 01:08 lixycc 阅读(69) 评论(0) 推荐(0)
摘要: 题目链接:1053. 交换一次的先前排列 方法:贪心 解题思路 为了保证字典序最大,应该尽可能的使得左侧的元素不变,首先考虑交换数组靠右侧的两个数字。 那么可以从右往左遍历,找第一个逆序对;若没有则返回原数组; 找到逆序对$(i, i + 1)$后,再对$j$从$i + 1$ ~ $n$遍历,找$a 阅读全文
posted @ 2023-04-09 01:08 lixycc 阅读(22) 评论(0) 推荐(0)
摘要: 题目链接:2608. 图中的最短环 方法:BFS + 技巧 解题思路 环一定包含$edges$数组中的某条边; 遍历$edges$数组,对于某一条边<$u, v$>,以$v$为起点进行$bfs$搜索,禁止通过边<$u, v$>(技巧)。在此种情况下若能搜到$v$,说明存在环,且当前环的长度为$当前层 阅读全文
posted @ 2023-04-09 01:07 lixycc 阅读(45) 评论(0) 推荐(0)
摘要: 题目链接:2607. 使子数组元素和相等 方法:分组 + gcd + 中位数 解题思路 题意:将$arr$中某个元素$+1$或$-1$,使得任意长度为$k$的子数组的元素总和相等,且总操作数最少; 1、首先考虑数组$arr$为非循环数组: 任意$k$长的子数组总和相等,则有下述情形,依次可以将$ar 阅读全文
posted @ 2023-04-09 01:07 lixycc 阅读(67) 评论(0) 推荐(0)
摘要: 题目链接:1039. 多边形三角剖分的最低得分 方法:区间dp 解题思路 区间 DP:最长回文子序列 最优三角剖分【基础算法精讲 22】 代码 回溯写法 class Solution { public: int minScoreTriangulation(vector<int>& values) { 阅读全文
posted @ 2023-04-09 01:06 lixycc 阅读(26) 评论(0) 推荐(0)
摘要: 题目链接:2611. 老鼠和奶酪 方法:贪心 解题思路 题目要求第$mouse1$恰好吃掉 $k$ 块奶酪的情况下,计算最大得分。 假设$mouse1$当前吃掉了下标为$i$处的奶酪,那么应该满足,$diff[i] = reward1[i] - reward2[i]$是当前所有$diff$值的最大值 阅读全文
posted @ 2023-04-09 01:06 lixycc 阅读(33) 评论(0) 推荐(0)
摘要: 题目链接:2610. 转换二维数组 方法:哈希表 解题思路 统计$nums$中每个元素的数量,然后每行输出其中的$1$个,直到元素全部输出。 代码 class Solution { public: vector<vector<int>> findMatrix(vector<int>& nums) { 阅读全文
posted @ 2023-04-09 01:06 lixycc 阅读(23) 评论(0) 推荐(0)
摘要: 题目链接:2609. 最长平衡子字符串 方法:模拟 解题思路 统计当前$0$和$1$的数量$cnt0$,$cnt1$,如果当前字符为'$0$',且$1$的数量不为$0$,说明$0$前面出现$1$,则重置$cnt0 = 1$,$cnt1 = 0$。每次计算当前的最大值。 代码 class Soluti 阅读全文
posted @ 2023-04-09 01:05 lixycc 阅读(43) 评论(0) 推荐(0)
摘要: 题目链接:2606. 找到最大开销的子字符串 方法:动态规划 解题思路 实际是:子数组最大和 初始化每个字母的价值,保存在vector<int> value(26)中; 设$dp[i]$表示以$s[i]$结尾的子字符串的最大开销,那么就可以使得dp[i + 1]和dp[i]联系起来,有两种情况: 将 阅读全文
posted @ 2023-04-09 01:05 lixycc 阅读(24) 评论(0) 推荐(0)
摘要: 题目链接:2605. 从两个数字数组里生成最小数字 方法:哈希 解题思路 本题有两种情况: 两个数组有共同元素,则取其中最小值返回; 两个数组没有共同元素,则取两个数组中各自的最小元素组成最小的两位数返回。 代码 class Solution { public: int minNumber(vect 阅读全文
posted @ 2023-04-09 01:05 lixycc 阅读(79) 评论(0) 推荐(0)
摘要: 题目链接:剑指 Offer 57 - II. 和为s的连续正数序列 方法一:同向双指针 解题思路 使用两个双指针维护一个窗口,设窗口中元素的和为$curSum$。当$curSum > target$时,左指针右移一位;当$curSum < target$时,右指针右移一位;当$curSum == t 阅读全文
posted @ 2023-04-09 01:04 lixycc 阅读(22) 评论(0) 推荐(0)
摘要: 题目链接:剑指 Offer 56 - II. 数组中数字出现的次数 II 方法一:位运算 解题思路 由题意知,其他数值都出现了三次,那么其数值二进制位上的$1$也至少出现了三次,那么我们可以统计数值每一位上$1$的个数的总和,然后遍历每一位上$1$的数量,若某一位上的$1$的数量不能被$3$整除,说 阅读全文
posted @ 2023-04-09 01:04 lixycc 阅读(55) 评论(0) 推荐(0)
摘要: 题目链接:剑指 Offer 56 - I. 数组中数字出现的次数 方法:位运算 + 分类 解题思路 异或运算:当两个相同的数异或时,结果为$0$; 对于本题,假设答案为$res1$ 和 $res2$,那么对数组中所有的数求异或时,其结果实际等于 $res1$ ^ $res2$;并且此结果中二进制位为 阅读全文
posted @ 2023-04-09 01:03 lixycc 阅读(18) 评论(0) 推荐(0)
摘要: 题目链接:72. 编辑距离 方法:回溯 / 动态规划 解题思路 参考:最长公共子序列 编辑距离【基础算法精讲 19】 代码 回溯写法 class Solution { public: int minDistance(string word1, string word2) { int n = word 阅读全文
posted @ 2023-04-09 01:02 lixycc 阅读(23) 评论(0) 推荐(0)
摘要: 题目链接:1092. 最短公共超序列 方法一:转换为lcs(最长公共子序列)问题进行求解 解题思路 先得到两个字符串$lcs$,然后再计算$ans$。 $lcs$的获取:最长公共子序列 编辑距离【基础算法精讲 19】 动态规划的$dp$数组在本题有两种实现方式 (1)vector<vector<st 阅读全文
posted @ 2023-04-09 01:02 lixycc 阅读(118) 评论(0) 推荐(0)
摘要: 题目链接:2603. 收集树中金币 方法:拓扑排序 解题思路 参考:拓扑排序 + 记录入队时间(Python/Java/C++/Go) 代码 class Solution { public: int collectTheCoins(vector<int>& coins, vector<vector< 阅读全文
posted @ 2023-04-09 00:44 lixycc 阅读(36) 评论(0) 推荐(0)
摘要: 题目链接:2601. 质数减法运算 方法:质数打表 + 二分 解题思路 每次将当前$nums[i]$减去一个质数(或不减),使得其变为为大于上一个数的最小值,可以给后面的元素更多减小的空间。 质数打表; 遍历数组$nums$,每次要和前一个数做比较,因此初始化前一个数为$last$。对于当前的$nu 阅读全文
posted @ 2023-04-09 00:31 lixycc 阅读(72) 评论(0) 推荐(0)
摘要: 题目链接:2602. 使数组元素全部相等的最少操作次数 方法:排序 + 前缀和 + 二分查找 解题思路 初始化$target = queries[i]$,根据题意,对于每次询问要将数组$nums$中的元素$=>target$,那么对于小于等于$target$的元素要加上一个数,而大于$target$ 阅读全文
posted @ 2023-04-09 00:28 lixycc 阅读(80) 评论(0) 推荐(0)
摘要: 题目链接:剑指 Offer 49. 丑数 方法:动态规划 解题思路 参考:剑指 Offer 49. 丑数(动态规划,清晰图解) 代码 class Solution { public: int nthUglyNumber(int n) { int a = 0, b = 0, c = 0; int dp 阅读全文
posted @ 2023-04-09 00:25 lixycc 阅读(24) 评论(0) 推荐(0)