第 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 也可以看做它自身的一棵子树. 示例 ...
随机推荐
- Nuxt3页面开发实战探索
title: Nuxt3页面开发实战探索 date: 2024/6/19 updated: 2024/6/19 author: cmdragon excerpt: 摘要:这篇文章是关于Nuxt3页面开 ...
- [代码]C语言进行md5,SHA256,SHA512加密
前言 原本在学puppet,它的user资源需要设置hash后的散列值,结果-我把加密算法,shadow文件,密码破解搞了个遍- 环境 CentOS7 gcc编译器 /etc/shadow文件解析 文 ...
- 小白也能懂的Mysql数据库索引详解
核心概念 主键索引/二级索引 聚簇索引/非聚簇索引 回表/索引覆盖 索引下推 联合索引/最左联合匹配 前缀索引 explain 一.[索引定义] 1.索引定义 在数据之外,数据库系统还维护着满足特定查 ...
- Linux设备模型:3、Uevent
作者:wowo 发布于:2014-3-10 20:39 分类:统一设备模型 http://www.wowotech.net/device_model/uevent.html Uevent Uevent ...
- 传统RNN网络及其案例--人名分类
传统RNN网络及其案例--人名分类 传统的RNN模型简介 RNN 先上图 这图看起来莫名其妙,想拿着跟CNN对比着学第一眼看上去有点摸不着头脑,其实我们可以把每一个时刻的图展开来,如下 其中,为了简化 ...
- 免费领 | 2000件“直击灵魂”的Polo衫,创龙科技10周年献礼!
一件"有灵魂"的Polo衫 时光荏苒,创龙科技即将迎来10周年庆!为感谢各位客户多年的支持与信任,创龙科技特推出10周年献礼活动--2000件"直击灵魂&qu ...
- 钉钉应用开发-Python操作钉钉文档(excel版)
钉钉应用开发-Python操作钉钉文档 一: 服务端SDK下载 服务端SDK下载 - 钉钉开放平台 (dingtalk.com) pip3 install alibabacloud_dingtalk ...
- 韦东山IMX6ULL Linux开发板基于Buildroot系统QT应用环境配置开发运行
@ 目录 一. 编译系统 1.设置交叉编译工具链 2.编译系统 二. QT下载 1.安装 Qtcreator 2.创建第一个程序 3.配置 QtCreator 开发环境 4.移植QT程序到开发板 一. ...
- Apifox 6月更新|定时任务、内网自部署服务器运行接口定时导入、数据库 SSH 隧道连接
Apifox 新版本上线啦!!! 看看本次版本更新主要涵盖的重点内容,有没有你所关注的功能特性: 自动化测试支持设置「定时任务」 支持内网自部署服务器运行「定时导入」 数据库均支持通过 SSH 隧道 ...
- Spring AOP面向切面编程核心概念
横切关注点 对那些方法进行拦截,拦截后怎么处理,这些就叫横切关注点 比如:权限认证.日志.事务 通知 Advice 在特定的切入点上执行的增强处理,有5种通知 用途:记录日志.控制事务.提前编写好通用 ...