Day1力扣打卡

news/2025/2/12 19:56:41/

打卡记录

在这里插入图片描述


最长相邻不相等子序列 I(脑筋急转弯)

链接

思路:形如 11100110001 要达到最大,必须在重复数字选出一个,即在111中取一个1,在00中取一个0,以此类推最终便得到最长相邻不相等子序列。

class Solution {
public:vector<string> getWordsInLongestSubsequence(int n, vector<string>& words, vector<int>& groups) {vector<string> ans;for (int i = 0; i < n; i++)if (i == n - 1 || groups[i] != groups[i + 1]) ans.push_back(words[i]);return ans;}
};

最长相邻不相等子序列 II(DP)

链接

思路:「子序列 + 考虑相邻元素」DP

子序列 DP 的思考套路
子序列 + 不考虑相邻元素:选或不选。代表题目:494. 目标和(0-1 背包)
子序列 + 考虑相邻元素:枚举选哪个。代表题目:300. 最长递增子序列


class Solution {
public:vector<string> getWordsInLongestSubsequence(int n, vector<string>& words, vector<int>& groups) {auto check = [&](string& a, string& b) -> bool{if (a.size() != b.size()) return false;int m = a.size();bool flag = false;for (int i = 0; i < m; ++i){if (a[i] != b[i]){if (flag) return false;flag = true;}}return flag;};int dp[n], max_len = 1, pre[n], idx = 0;memset(pre, -1, sizeof pre);for (int i = 0; i < n; ++i){dp[i] = 1;for (int j = 0; j < i; ++j){if (groups[i] != groups[j] && check(words[i], words[j]) && dp[i] < dp[j] + 1){dp[i] = dp[j] + 1;pre[i] = j;}if (max_len < dp[i]){max_len = dp[i];idx = i;}}}vector<string> ans;for (int i = idx; i != -1; i = pre[i]) ans.push_back(words[i]);reverse(ans.begin(), ans.end());return ans;}
};

执行操作使两个字符串相等

链接
在这里插入图片描述

class Solution {
public:int minOperations(string s1, string s2, int x) {if (count(s1.begin(), s1.end(), '1') % 2 != count(s2.begin(), s2.end(), '1') % 2) {return -1;}int n = s1.length();int memo[n][n + 1][2];memset(memo, -1, sizeof(memo)); // -1 表示没有计算过function<int(int, int, bool)> dfs = [&](int i, int j, bool pre_rev) -> int {if (i < 0) {return j || pre_rev ? INT_MAX / 2 : 0;}int &res = memo[i][j][pre_rev]; // 注意这里是引用if (res != -1) { // 之前计算过return res;}if ((s1[i] == s2[i]) == !pre_rev) { // 无需反转return dfs(i - 1, j, false);}res = min(dfs(i - 1, j + 1, false) + x, dfs(i - 1, j, true) + 1);if (j) { // 可以免费反转res = min(res, dfs(i - 1, j - 1, false));}return res;};return dfs(n - 1, 0, false);}
};

http://www.ppmy.cn/news/1157848.html

相关文章

windows内网渗透正向代理

内网渗透正向代理 文章目录 内网渗透正向代理1 正向代理图2 环境准备2.1 正向代理需求&#xff1a; 3 网卡配置3.1 【redream】主机3.2 【base】主机双网卡3.3 【yvkong】网卡设置 4 启动4.1【redream】网卡配置&#xff1a;4.2【base】网卡配置&#xff1a;4.3【yvkong】网卡地…

[GSEP202306 一级] C++ 时间规划

题目描述 小明在为自己规划学习时间。现在他想知道两个时刻之间有多少分钟&#xff0c;你通过编程帮他做到吗? 输入格式 输入4行&#xff0c;第一行为开始时刻的小时&#xff0c;第二行为开始时刻的分钟&#xff0c;第三行为结束时刻的小时&#xff0c;第四行为结束时刻的分…

23基于MATLAB的小波降噪,默认阈值消噪,强制消噪,给定软阈值消噪方法,数据直接替换后就可以跑。

基于MATLAB的小波降噪&#xff0c;默认阈值消噪&#xff0c;强制消噪&#xff0c;给定软阈值消噪方法&#xff0c;数据直接替换后就可以跑。 https://www.xiaohongshu.com/explore/652d57c600000

redis的应用

文章目录 一.分布式锁1.简易版2.Redisson 二.延时队列1.异步消息队列2.加锁冲突失败处理3.zset实现延迟队列 三.位图四.HyperLogLog1.基本命令2.实现原理 五.布隆过滤器六.简单限流1.实现2.缺点 七.漏斗限流八.GeoHash九.scan1.keys2.scan 一.分布式锁 可以保证操作的原子性。…

Windows10安装MySQL5.7.43

下载安装包 mysql-5.7.43-winx64.zip 解压到目录C:\Program Files\mysql-5.7.43-winx64&#xff0c;并在该目录中创建配置文件my.ini。 [mysql] # 设置mysql客户端默认字符集 default-character-setutf8[mysqld] # 设置3306端口 port 3306 # 设置mysql的安装目录 basedirC:…

关于 Ceph 的一些维护工作总结

OSD的状态可能在ceph集群内&#xff08;in&#xff09;或集群外&#xff08;out&#xff09;&#xff0c;也可能处于运行中&#xff08;up&#xff09;或者不运行中&#xff08;down&#xff09;。 OSD处于UP状态时&#xff0c;可能处于集群内&#xff08;in&#xff09;或集群…

常见场景面试题(二)

typora-copy-images-to: imgs theme: cyanosis 敏感词库的设计&#xff0c;要求增删改查敏感词。敏感词文本匹配&#xff0c;敏感词一万个&#xff0c;文本长度在 20 - 1000 答&#xff1a;使用 trie 树来实现敏感词库的设计&#xff0c;可以利用字符串公共前缀来节约存储空间。…

【2】c++11新特性(稳定性和兼容性)—>超长整型 long long

c11标准要求long long整型可以在不同的平台上有不同的长度&#xff0c;但是至少64位&#xff0c;long long整型有两种&#xff1a; 有符号long long&#xff1a;–对应类型的数值可以使用LL或者ll后缀 long long num1 123456789LL; long long num2 123456789ll;无符号unsign…