第 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 也可以看做它自身的一棵子树. 示例 ...
随机推荐
- python logging去掉selenium大量的日志
问题 二次封装logging模块,设置级别为DEBUG,默认所有级别的日志都可以收集到:在发起ui自动化,打开浏览器输入网址,进行页面操作时,打印了大量的connectionpool.remote_c ...
- 配置h5py、netCDF4库的方法:Anaconda环境
本文介绍基于Anaconda环境,下载并安装Python中h5py与netCDF4这两个模块的方法. 在Python语言中,h5py与netCDF4这两个模块是与遥感图像处理.地学分析等GIS ...
- C#去除时间格式化之后中间的T字母
需求是这样的, 前后端传参,然后后端序列化把字符串存在数据库. 然后发现时间类型的字段,序列化之后 ,有个字母T, DateTime dt = DateTime.Parse("2024-05 ...
- NXP i.MX 8M Plus工业开发板硬件说明书( 四核ARM Cortex-A53 + 单核ARM Cortex-M7,主频1.6GHz)
前 言 本文主要介绍创龙科技TLIMX8MP-EVM评估板硬件接口资源以及设计注意事项等内容. 创龙科技TLIMX8MP-EVM是一款基于NXP i.MX 8M Plus的四核ARM Cortex- ...
- Nuxt框架中内置组件详解及使用指南(一)
title: Nuxt框架中内置组件详解及使用指南(一) date: 2024/7/6 updated: 2024/7/6 author: cmdragon excerpt: 本文详细介绍了Nuxt框 ...
- 4. 简明说一下 CSS link 与 @import 的区别和用法?
两者的基本语法 link语法结构 <link href="外部CSS文件的URL路径" rel="stylesheet" type="text/ ...
- JVM学习笔记-如何在IDEA打印JVM的GC日志信息
若要在Idea上打印JVM相应GC日志,其实只需在Run/Debug Configurations上进行设置即可. 拿<深入Java虚拟机>书中的3-7代码例子来演示,如 1 public ...
- 透视开源生态,OSGraph——GitHub全域数据图谱的智能洞察工具
"透视开源生态,OSGraph--GitHub全域数据图谱的智能洞察工具 OSGraph (Open Source Graph) 是一个开源图谱关系洞察工具,基于GitHub开源数据全域图谱 ...
- 委托之Action与Func
1 例程代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...
- FPGA CFGBVS 管脚接法
说明 新设计了1个KU040 FPGA板子,回来之后接上JTAG FPGA不识别.做如下检查: 1.电源测试点均正常: 2.查看贴片是否有漏焊,检查无异常,设计上NC的才NC: 3.反复检查JTAG接 ...