强化训练: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,一经查实,立即删除!

相关文章

llama2阅读: logits是什么?

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

Sequelize 操作 MySQL 数据库

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

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…

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

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

HTML+CSS+JavaScript入门学习

目录 1. 前言2. HTML2.1 HTML简介2.2 HTML标签 3. CSS3.1 CSS知识整理及总结3.2 CSS之flex布局 4. JavaScript4.1 JavaScript知识整理及总结1-基础篇4.2 JavaScript知识整理及总结2-进阶篇 1. 前言 本文主要采用转载的形式&#xff0c;偶尔发现了一个比较不错的博客站点&#…

WPS+Python爬取百度之星排名

运行效果 手动拉取 https://www.matiji.net/exam/contest/contestdetail/146 如果手动查找&#xff0c;那么只能通过翻页的方式&#xff0c;每页10行&#xff08;外加一行自己&#xff09;。 爬取效果预览 本脚本爬取了个人排名和高校排名&#xff0c;可以借助WPS或MS Offi…

华为OSPF配置DR和BDR与指定DR

基础配置 <Huawei>sys #进入配置模式 Enter system view, return user view with CtrlZ. [Huawei]un in en #关闭报文弹窗 Info: Information center is disabled. [Huawei]sys R1 #设备名更改为R1 [R1]int g0/0/0 …

调度系统揭秘(下):调度算法与架构设计

文章目录 一、调度算法1.1、广度优先:1.2、深度优先1.3、总结广度优先搜索&#xff08;BFS&#xff09;深度优先搜索&#xff08;DFS&#xff09; 二、架构设计2.1、Master/Slave架构优劣分析 2.2、Leader架构优劣分析 2.3、总结 一、调度算法 在调度系统中&#xff0c;调度算…

.hmallox勒索病毒:全面防御策略

引言 近年来&#xff0c;随着网络技术的飞速发展&#xff0c;勒索病毒成为网络安全领域的一大威胁&#xff0c;其中.hmallox勒索病毒以其高度的隐蔽性和破坏性&#xff0c;尤为引人注目。这种病毒通过加密用户计算机中的重要文件&#xff0c;并以支付赎金作为解密条件&#xff…

MyBatis中二级缓存的配置与实现原理

大家好&#xff0c;我是王有志&#xff0c;一个分享硬核 Java 技术的金融摸鱼侠&#xff0c;欢迎大家加入 Java 人自己的交流群“共同富裕的 Java 人”。 上一篇文章《MyBatis中一级缓存的配置与实现原理》中&#xff0c;我们已经掌握了 MyBatis 一级缓存的配置&#xff08;虽然…

vue3实现echarts——小demo

版本&#xff1a; 效果&#xff1a; 代码&#xff1a; <template><div class"middle-box"><div class"box-title">检验排名TOP10</div><div class"box-echart" id"chart1" :loading"loading1"&…

Linux操作系统中逻辑卷的缩减

流程&#xff1a;第一步先是要缩减逻辑卷的文件系统。 第二步就是要去缩减逻辑卷的物理边界。 注意事项&#xff1a; 1.逻辑卷要处于卸载状态&#xff0c; 2.建议先备份数据 3.在缩减逻辑卷的时候&#xff0c;要注意xfs文件系统的逻辑卷是不支持直接进行缩减的。 4.在缩减…

Linux:DHCP服务配置

目录 一、DHCP概述以及DHCP的好处 1.1、概述 1.2、DHCP的好处 二、DHCP的模式与分配方式 2.1、模式 2.2、DHCP的分配方式 三、DHCP工作原理 四、安装DHCP服务 五、DHCP局部配置并且测试 5.1、subnet 网段声明 5.2、客户机预留指定的固定ip地址 一、DHCP概述以及DHCP…

下载nvm 管理多个node版本并切换

nvm管理多个node版本并切换 安装nvm时不能安装任何node版本&#xff08;先删除node再安装nvm&#xff09;&#xff0c;保证系统无任何node.js残留 1. 卸载node 控制面板中卸载nodejs 删除以下文件夹&#xff1a; C:\Program Files (x86)\Nodejs C:\Program Files\Nodejs C…

MybatisX插件的简单使用教程

搜索mybatis 开始生成 module path&#xff1a;当前项目 base package:生成的包名&#xff0c;建议先独立生成一个&#xff0c;和你原本的项目分开 encoding&#xff1a;编码&#xff0c;建议UTF-8 class name strategy&#xff1a;命名选择 推荐选择camel&#xff1a;驼峰命…

Go:hello world

开启转职->Go开发工程师 下面是我的第一个go的程序 在上面的程序介绍&#xff1a; 1、package main 第一行代码package main定义了包名。必须在源文件中非注释的第一行指明这个文件属于哪个包&#xff0c;如&#xff1a;package main。package main表示一个可独立执行的程…

spRAG框架学习小结

spRAG是什么 spRAG是一个针对非结构化数据的检索引擎。它特别擅长处理对密集文本的复杂查询&#xff0c;比如财务报告、法律文件和学术论文。有两种关键方法用于提高性能&#xff0c;超越了普通的RAG系统&#xff1a; 自动上下文&#xff08;AutoContext&#xff09;&#xff…

µCOS-III 任务同步机制-任务信号量

1. 什么是任务信号量 任务信号量是一种用于任务间同步和通信的计数器&#xff0c;通常用于解决任务间的竞争条件和资源共享问题。在C/OS-III中&#xff0c;任务信号量提供了二进制信号量和计数信号量两种类型&#xff1a; 二进制信号量&#xff1a;只能取值0或1&#xff0c;适…