强化训练:day13(牛牛冲钻五、最长无重复子数组、重排字符串)

文章目录

  • 前言
  • 1. 牛牛冲钻五
    • 1.1 题目描述
    • 1.2 解题思路
    • 1.3 代码实现
  • 2. 最长无重复子数组
    • 2.1 题目描述
    • 2.2 解题思路
    • 2.3 代码实现
  • 3. 重排字符串
  • 3.1 题目描述
    • 3.2 解题思路
    • 3.3 代码实现
  • 总结

前言

  1. 牛牛冲钻五
  2. 最长无重复子数组
  3. 重排字符串

1. 牛牛冲钻五

1.1 题目描述

在这里插入图片描述

1.2 解题思路

  使用前缀和思路统计出结束当前对局连胜数量,再根据连胜数量依次加上星星就可以了。

1.3 代码实现

#include <iostream>
using namespace std;
#include <string>
#include <vector>
int main()
{int t = 0; cin >> t;while(t--){int n = 0, k = 0; cin >> n >> k;string s; cin >> s;vector<int> dp(n, 0);dp[0] = s[0] == 'W' ? 1 : 0;// 统计连胜for(int i = 1; i < n; i++){if(s[i] == 'W') dp[i] = dp[i-1] + 1;}int ret = 0;for(int i = 0; i < n; i++){if(s[i] == 'W'){if(dp[i] >= 3) ret += k;else ret += 1;}else{ret -= 1;}}cout << ret << endl;}
}

2. 最长无重复子数组

2.1 题目描述

在这里插入图片描述

2.2 解题思路

  典型的滑动窗口的问题,使用双指针来维护我们需要的合法区间即可。

2.3 代码实现

class Solution {public:// 滑动窗口int maxLength(vector<int>& nums) {int ret = 0;int n = nums.size();// 维护一段有效区间int left = 0, right = 0;// 判断前面是否出现过这个数字unordered_set<int> hash;while (right < n){while (right < n && hash.count(nums[right]) == 0) {hash.insert(nums[right++]);}ret = max(ret, right - left);while (hash.count(nums[right]) == 1) {hash.erase(nums[left++]);}}return ret;}
};

3. 重排字符串

3.1 题目描述

在这里插入图片描述

3.2 解题思路

  想要将不同的字符串进行分割,只要出现次数最多的字符没有超过总字符的一半,那么就可以重排成功。因为我们采用的方法是,隔上一个方一个字符,就比如第一个位置放字符a,下一个就到第三个位置放字符a,通过这样的放置方法,来实现所有相同字符的分隔。所以当出现次数最多的字符超过总字符的一半时,那么就无论如何都无法将相同字符进行分隔了,直接返回就行了。
  因为我们可以先使用哈希表,统计出每一个字符出现的次数,以及最多出现的次数和最多出现的字符,先放置出现次数最多的字符,防止这种情况:aaabbbb ----> abababb。因此需要先放置出现最多的字符。

3.3 代码实现

#include <iostream>
using namespace std;
#include <string>
#include <vector>
#include <cstring>
int main()
{int n = 0; cin >> n;string s; cin >> s;int hash[26];memset(hash, 0 ,sizeof hash);int maxCount = 0,maxIndex = 0;for(int i = 0; i < n; i++){int ch = s[i] - 'a';hash[ch]++;if(hash[ch] > maxCount){maxCount = hash[ch];maxIndex = ch;}}if((n + 1) / 2 < maxCount){cout << "no";return 0;}vector<string> ret(n);int cur = 0;while(maxCount--){ret[cur] = maxIndex + 'a';cur += 2;}for(int i = 0; i < 26; i++){if(hash[i] && i != maxIndex){while(hash[i]--){if(cur >= n) cur = 1;ret[cur] = i + 'a';cur += 2;}}}cout << "yes" << endl;for(int i = 0; i < n; i++){cout << ret[i];}return 0;
}

总结

  前两个题都是由固定的算法思路,进行专项训练就可以了,至于第三个题那么就只能看个人的想法了。不过多做题肯定是没错的,希望大家可以继续练习下去。
  那么第十三天的内容就到此结束了,如果大家发现有什么错误的地方,可以私信或者评论区指出喔。我会继续坚持训练的,希望能与大家共同进步!!!那么本期就到此结束,让我们下期再见!!觉得不错可以点个赞以示鼓励!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/42603.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Scrapy】深入了解 Scrapy 中间件中的 process_spider_output 方法

准我快乐地重饰演某段美丽故事主人 饰演你旧年共寻梦的恋人 再去做没流着情泪的伊人 假装再有从前演过的戏份 重饰演某段美丽故事主人 饰演你旧年共寻梦的恋人 你纵是未明白仍夜深一人 穿起你那无言毛衣当跟你接近 &#x1f3b5; 陈慧娴《傻女》 Scrapy 是…

使用Python连接本地MySQL数据库并创建表

一、使用Python连接本地MySQL数据库并创建表 端口号&#xff1a;3307 用户名&#xff1a;root 密码&#xff1a;lms123456 数据库&#xff1a;test_01 from orm import *# 数据库连接对象 db MySQLDatabase(host"localhost",port3307,user"root",pas…

CUDA Install--Configure

CUDA环境正确设置 要确保你的系统环境变量正确设置&#xff0c;以包含CUDA 12.2的路径&#xff0c;可以按照以下步骤操作 步骤1&#xff1a;编辑.bashrc文件 打开并编辑你的.bashrc文件&#xff0c;以确保环境变量正确设置。 nano ~/.bashrc 在文件末尾添加以下内容&#xff…

LeetCode 35, 242, 994

目录 35. 搜索插入位置题目链接标签思路代码 242. 有效的字母异位词题目链接标签思路代码 994. 腐烂的橘子题目链接标签思路代码 35. 搜索插入位置 题目链接 35. 搜索插入位置 标签 数组 二分查找 思路 本题与 704. 二分查找 十分相似&#xff0c;只不过本题在找不到 tar…

llama2阅读: logits是什么?

Logits是一个在深度学习中&#xff0c;几乎一直都有的概念&#xff0c;它意味着模型unnormalized final scores. 然后你可以通过softmax得到模型针对你class的概率分布。 而在llama2的代码中&#xff0c;同样有logits的使用&#xff0c;那么针对llama2&#xff0c;logits的作用…

centos7.9安装redis

安装redis mkdir redis sudo yum install epel-release -y sudo yum update -y sudo yum install redis -y sudo systemctl start redis sudo systemctl enable redis redis-cli ping sudo yum install gcc make -y wget http://download.redis.io/releases/redis-6.0.9.tar.…

CF构造题

1900-2100 1.Arithmancy (Easy) 注意题目要求唯一对应&#xff0c;也就是不能存在两种选择使得这两种选择的"power"都是一样的 Ans && Conclusion

零知识证明;电路,编码,多项式是什么;零知识验证流程

目录 零知识证明怎么应用到神经网络模型不变的验证中 应用背景 应用过程 举例说明 技术挑战与解决方案 实际应用案例 零知识中,电路,编码,多项式是什么 电路(Circuit) 编码(Coding) 多项式(Polynomial) 零知识中涉及的概念 零知识验证流程 零知识证明怎么…

Sequelize 操作 MySQL 数据库

安装 npm install --save sequelize安装驱动程序&#xff1a; npm install --save mysql2连接到数据库 要连接到数据库,必须创建一个 Sequelize 实例. 这可以通过将连接参数分别传递到 Sequelize 构造函数或通过传递一个连接 URI 来完成&#xff1a; const {Sequelize} re…

ActiViz实战:vtkMath中的陷阱

文章目录 一、vtkMath简介二、vtkMath在C#中的使用三、C#版本vtkMath的陷阱四、vtkPlane同理五、总结一、vtkMath简介 vtkMath是VTK(Visualization Toolkit)库中的一个核心类,它提供了一系列用于执行基本数学运算和高级数学计算的静态方法。这个类主要用于矢量和矩阵运算,…

Canal架构以及使用规范

Canal架构以及使用规范 一、Canal的作用 相关文档&#xff1a;GitHub - alibaba/canal: 阿里巴巴 MySQL binlog 增量订阅&消费组件 MySQL主备复制原理 MySQL master 将数据变更写入二进制日志( binary log, 其中记录叫做二进制日志事件binary log events&#xff0c;可…

Gitlab代码管理工具安装配置

前言&#xff1a; 没有真正的证书与域名建议使用httpip的方式在内网使用&#xff0c;不建议使用假的域名地址 一、安装前配置 #更改主机域名 hostnamectl set-hostname gitlab.dome.com bash #配置hosts 底部添加下面内容 vim /etc/hosts ############################ ip gi…

Stowaway搭建隧道打CFS内网靶场

目录 渗透带出主机阶段 先把我们的服务端上传到kali ​先把我们的客户端上传到目标机 客户端去连接我们的kali机端口去上线 出现admin&#xff0c;上线成功 detail相当于msf的sessions​ 和msf差不多功能&#xff0c;但是我们用它主要是搞隧道代理 抓发的 ​开启socks…

Pytorch中分类回归常用的损失和优化器

Pytorch中分类回归常用的损失和优化器 在机器学习和深度学习中&#xff0c;分类任务和预测任务&#xff08;回归任务&#xff09;有不同的常用损失函数和优化器。下面将详细介绍这些常用的损失函数和优化器。 分类任务 1. 损失函数 交叉熵损失&#xff08;Cross-Entropy Los…

07-7.1.1 查找的基本概念

&#x1f44b; Hi, I’m Beast Cheng &#x1f440; I’m interested in photography, hiking, landscape… &#x1f331; I’m currently learning python, javascript, kotlin… &#x1f4eb; How to reach me --> 458290771qq.com 喜欢《数据结构》部分笔记的小伙伴可以…

Elasticsearch 自定义评分和脚本评分

在Elasticsearch中&#xff0c;默认的评分机制&#xff08;如BM25算法&#xff09;在大多数情况下能够提供良好的搜索结果排序。然而&#xff0c;在某些特定场景下&#xff0c;我们可能需要根据业务需求对搜索结果进行更精细化的排序。这时&#xff0c;Elasticsearch提供了自定…

C++ 进程间通信举例

C++进程通信 C++ 中的进程间通信(IPC)可以通过多种方式实现,包括管道、消息队列、共享内存和信号等。以下是每种方法的详细示例和说明。 总结 上述示例展示了 C++ 中几种常见的进程间通信方法。根据不同的应用场景,可以选择合适的 IPC 机制: 管道(Pipe):适用于父子进…

序列化是什么 为什么要序列化 何时序列化

目录 序列化是什么 为什么要用序列化 什么时候用序列化 序列化是什么 序列化(Serialization)是指将数据结构或对象的状态信息转换为可以存储或传输的形式的过程,比如将Java对象转化成字节流(二进制流)。这个状态信息包括对象的字段(包括基本类型和对象引用)以及对象的类…

Android | RxJava 中的调度器(Schedulers)的主要作用是什么?

RxJava 中的调度器&#xff08;Schedulers&#xff09;的设计主要是为了帮助开发者有效地管理和控制异步操作的执行线程&#xff0c;以提高应用程序的响应性和用户体验。虽然防止卡顿是其中一个重要的方面&#xff0c;但调度器的作用不仅限于此。 主要作用包括&#xff1a; 响…

[终端安全]-4 移动终端之硬件架构安全

1 移动终端硬件架构 上图图展示了典型移动终端硬件架构&#xff0c;包括应用处理器&#xff08;AP&#xff09;、基带处理器&#xff08;BP&#xff09;以及各类共享组件和外设&#xff0c;所有组件通过AXI总线&#xff08;和APB桥&#xff09;连接在一起。以下分别介绍基于整…