第 111 场双周赛 - 力扣(LeetCode)
第 111 场双周赛 - 力扣(LeetCode)
2824. 统计和小于目标的下标对数目 - 力扣(LeetCode)
枚举即可
class Solution {
public:
int countPairs(vector<int>& nums, int target) {
int n = nums.size();
int ans = 0;
for(int i = 0;i + 1< n;i ++){
for(int j = i + 1; j < n;j ++){
if(nums[i] + nums[j] < target)
ans ++;
}
}
return ans;
}
};
2825. 循环增长使字符串子序列等于另一个字符串 - 力扣(LeetCode)
双指针跑一遍即可
class Solution {
public:
bool canMakeSubsequence(string str1, string str2) {
int cnt = 0;
for (int i = 0; i < str1.size(); i ++) {
if (str1[i] == str2[cnt]) {
cnt ++;
} else if (str1[i] + 1 == str2[cnt] || str1[i] == 'z' && str2[cnt] == 'a') {
cnt ++;
}
}
if (cnt == str2.size()) {
return true;
}
return false;
}
};
2826. 将三个组排序 - 力扣(LeetCode)(状态机dp)
哈哈赛时写了个暴力shit代码qwq,算了能过就行
shit代码
class Solution {
public:
int minimumOperations(vector& nums) {
int n = nums.size();
int ans = n;
if(nums == vector(n,1) || nums == vector(n,2) || nums == vector(n,3))
return 0;
for(int i = 0;i + 1 < n;i ++){
if(nums[i] > nums[i + 1]) break;
if(i == n - 2)
return 0;
}
int numi = 0,numj = 0,numk = 0;
for(int i = 0;i < n;i ++){
numi += (nums[i] != 1);
}
for(int j = 0;j < n;j ++){
numj += (nums[j] != 2);
}
for(int k = 0;k < n;k ++){
numk += (nums[k] != 3);
}
ans = min({ans, numk,numi,numj});
numk = 0,numi = 0, numj = 0;
for(int j = 0;j < n;j ++){
numj += (nums[j] != 2);
numk = 0;
for(int k = j + 1;k < n;k ++){
numk += (nums[k] != 3);
}
ans = min(ans, numj + numk);
}
numi = 0,numj = 0,numk = 0;
for(int i = 0;i < n;i ++){
numi += (nums[i] != 1);
numj = 0,numk = 0;
for(int j = i + 1;j < n;j ++){
numj += (nums[j] != 2);
numk = 0;
for(int k = j + 1;k < n;k ++){
numk += (nums[k] != 3);
}
ans = min(ans, numi + numj + numk);
}
ans = min(ans, numi +numj +numk);
numk = 0;
for(int j= i + 1;j< n;j++){
numk += (nums[j] != 3);
}
ans = min(ans, numi + numk);
}
return ans ;
}
};
正解是\(dp\)啦,
\(dp[i][j]\)表示到第\(i\)个数为止,将第\(i\)个数改成\(j\)后的最小步数
class Solution {
public:
int minimumOperations(vector<int>& nums) {
int n = nums.size();
vector<vector<int>> dp(n,vector<int>(4,0));
dp[0][1] = nums[0]!=1;
dp[0][2] = nums[0]!=2;
dp[0][3] = nums[0]!=3;
for(int i=1;i<n;i++){
dp[i][1] = dp[i-1][1]+(nums[i]!=1);
dp[i][2] = min(dp[i-1][1]+(nums[i]!=2),dp[i-1][2]+(nums[i]!=2));
dp[i][3] = min(dp[i-1][1],min(dp[i-1][2],dp[i-1][3]))+(nums[i]!=3);
}
return min(dp[n-1][1],min(dp[n-1][2],dp[n-1][3]));
}
};
可以省略第一维,即每次找最小的进行转移
class Solution {
public:
int minimumOperations(vector<int>& nums) {
int f[4]{0};
for(auto num : nums)
for(int i = 3;i ; i--)
f[i] = *min_element(f + 1, f + i + 1) + (i != num);
return *min_element(f + 1, f + 4);
}
};
2827. 范围中美丽整数的数目 - 力扣(LeetCode)(数位dp)
后面补qwq
第 111 场双周赛 - 力扣(LeetCode)的更多相关文章
- 力扣Leetcode 179. 最大数 EOJ 和你在一起 字符串拼接 组成最大数
最大数 力扣 给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数. 示例 1: 输入: [10,2] 输出: 210 示例 2: 输入: [3,30,34,5,9] 输出: 9534330 说 ...
- 力扣Leetcode 45. 跳跃游戏 II - 贪心思想
这题是 55.跳跃游戏的升级版 力扣Leetcode 55. 跳跃游戏 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃 ...
- 【力扣leetcode】-787. K站中转内最便宜的航班
题目描述: 有 n 个城市通过一些航班连接.给你一个数组 flights ,其中 flights[i] = [fromi, toi, pricei] ,表示该航班都从城市 fromi 开始,以价格 p ...
- 力扣Leetcode 面试题56 - I. 数组中数字出现的次数
面试题56 - I. 数组中数字出现的次数 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次.请写程序找出这两个只出现一次的数字.要求时间复杂度是O(n),空间复杂度是O(1). 示例 ...
- LeetCode第8场双周赛(Java)
这次我只做对一题. 原因是题目返回值类型有误,写的是 String[] ,实际上应该返回 List<String> . 好吧,只能自认倒霉.就当涨涨经验. 5068. 前后拼接 解题思路 ...
- LeetCode 第 15 场双周赛
1287.有序数组中出现次数超过25%的元素 1288.删除被覆盖区间 1286.字母组合迭代器 1289.下降路径最小和 II 下降和不能只保留原数组中最小的两个,hacked. 1287.有序数组 ...
- LeetCode 第 14 场双周赛
基础的 api 还是不够熟悉啊 5112. 十六进制魔术数字 class Solution { public: char *lltoa(long long num, char *str, int ra ...
- LeetCode第29场双周赛题解
第一题 用一个新数组newSalary保存去掉最低和最高工资的工资列表,然后遍历newSalary,计算总和,除以元素个数,就得到了平均值. class Solution { public: doub ...
- Java实现 LeetCode第30场双周赛 (题号5177,5445,5446,5447)
这套题不算难,但是因为是昨天晚上太晚了,好久没有大晚上写过代码了,有点不适应,今天上午一看还是挺简单的 5177. 转变日期格式 给你一个字符串 date ,它的格式为 Day Month Yea ...
- 力扣Leetcode 572. 另一个树的子树
另一个树的子树 给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树.s 的一个子树包括 s 的一个节点和这个节点的所有子孙.s 也可以看做它自身的一棵子树. 示例 ...
随机推荐
- Linux系统与网络管理
0. 背景 0.1 Unix Unix诞生于1969年 特点 多任务 多用户 多平台 保护模式 可移植操作系统接口(POSIX) 0.2 Linux 与Unix关系 类Unix系统,完全按照Unix的 ...
- python并发执行request请求
在Python中,我们可以使用requests库来发送HTTP请求,并使用threading.multiprocessing.asyncio(配合aiohttp)或concurrent.futures ...
- STM32 CubeMX 学习:06-配置DMA
--- title: mcu-stm32-cube-06-配置DMA date: 2020-05-31 16:39:05 categories: tags: - stm32 - cubeMx - dm ...
- 实测14us,Linux-RT实时性能及开发案例分享—基于全志T507-H国产平台
本文带来的是基于全志T507-H(硬件平台:创龙科技TLT507-EVM评估板),Linux-RT内核的硬件GPIO输入和输出实时性测试及应用开发案例的分享.本次演示的开发环境如下: Windows开 ...
- Java for循环倒序输出
1.实现一个for循环的倒序输出 在Java中,要实现一个for循环的倒序输出,通常我们会使用数组或集合(如ArrayList)作为数据源,然后通过倒序遍历这个数组或集合来实现.下面,我将给出一个详细 ...
- debian12 安装ch343驱动
前言 最近心血来潮,装了一台debian12玩,安装完毕arduino后发现没有ch343驱动,倒是在 ls /lib/modules/6.1.0-13-amd64/kernel/drivers/us ...
- JSP快速上手与MVC模式和三层架构的知识点总结+综合案例
阅读提示: 说明 由于JSP实在是太 难读 难写 复杂 占资源 难调试 不分离 了,拉跨!(节目效果哈,勿喷),作为一种有(ji)更(hu)好(jiu)的(yao)上(bei)位(tao)替(tai) ...
- 记一次 CDN 流量被盗刷经历
先说损失,被刷了 70 多RMB,还好止损相对即时了,亏得不算多,PCDN 真可恶啊. 600多G流量,100多万次请求. 怎么发现的 先是看到鱼皮大佬发了一篇推文突发,众多网站流量被盗刷!我特么也中 ...
- Unity的Package库在IDE里不显示API注释的解决方法
当你在代码里使用Package库的API的时候,比如Addressable和Unity.Entities等等,以Visual Studio为例,鼠标放到API上,会发现不显示注释: 然而按F12访问源 ...
- 操作系统|C语言模拟实现首次适应和最佳适应两种内存分配算法以及内存回收
两种算法 首次适应 首次适应算法从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法目的在于减少查找时间.为适应这种算法,空闲分区表(空闲区链)中的空闲分区要按地址由低到 ...