当前位置: 首页 > news >正文

【算法提升】牛牛冲钻五 最长无重复子数组 重排字符串 one_day

算法提升

  • 1.牛牛冲钻五
    • 1.2 解析
  • 2.最长无重复子数组
    • 2.1解析
  • 3.重排字符串
    • 3.1解析

1.牛牛冲钻五

在这里插入图片描述

1.2 解析

后面的数据要根据前面两个的状态来确定,我的做法是使用动态规划的方式
在这里插入图片描述

#include<iostream>
#include<string>
#include<vector>
using namespace std;int main()
{//1.输入int T=0;cin>>T;while(T--){int n=0,k=0;cin>>n>>k;string s;cin>>s;//2.代码vector<int> dp(n);//初始化if(s[0]=='W')dp[0]=1;elsedp[0]=-1;if(s[1]=='W')dp[1]=dp[0]+1;else    dp[1]=dp[0]-1;//填表for(int i=2;i<n;i++){if(s[i]=='L')dp[i]=dp[i-1]-1;else{if(s[i-1]=='W'&&s[i-2]=='W')dp[i]=dp[i-1]+k;elsedp[i]=dp[i-1]+1;}}printf("%d\n",dp[n-1]);}return 0;
}

2.最长无重复子数组

在这里插入图片描述

2.1解析

非常经典的滑动窗口的题目
使用hash表存储已经进入窗口内的值,如果出现重复元素,就出窗口然后再统计结果’

#include <unordered_map>
class Solution 
{
public:int maxLength(vector<int>& arr) {unordered_map<int, int> hash;int n=arr.size();int ret=1,left=0,right=0;while(right<n){//1.进hash[arr[right]]++;//2.判断+出while(hash[arr[right]]>1){hash[arr[left]]--;left++;}//3.更新结果ret=max(ret,right-left+1);right++;}return ret;}
};

3.重排字符串

在这里插入图片描述

3.1解析

今天最有难度的题目,整体思路使用贪心

//1.每次处理一批相同的字母
//2.优先处理出现次数最多的字母
//3.每次摆放中间隔一个位置
//判断是否可以重拍,x<=(n+1)/2

//贪心
//1.每次处理一批相同的字母
//2.优先处理出现次数最多的字母
//3.每次摆放中间隔一个位置
//判断是否可以重拍,x<=(n+1)/2
class Solution 
{
public:string rearrangestring(string s) {int n = s.size();vector<int> cnt(26, 0); // 初始化计数数组为0char max_char = 'a';    // 出现次数最多的字符int max_count = 0;      // 最多字符的次数// 统计字符频率并找最大值for (char c : s) {int idx = c - 'a';  // 修正:字符转0-25索引if (++cnt[idx] > max_count) {max_count = cnt[idx];max_char = c;}}// 无法重排的情况:最多字符超过 (n+1)/2if (max_count > (n + 1) / 2) return "";string ret(n, ' ');  // 初始化结果字符串为n长度int i = 0;// 优先放置最多字符(间隔放置)while (max_count--) {ret[i] = max_char;i += 2;  // 偶数位置:0,2,4...}// 处理剩余字符for (int j = 0; j < 26; ++j) {char c = 'a' + j;if (c == max_char || cnt[j] == 0) continue;while (cnt[j]--) {if (i >= n) i = 1;  // 偶数位置填满后用奇数位置:1,3,5...ret[i] = c;i += 2;}}return ret;}
};

相关文章:

  • 热点数据的统计到应用
  • 【Sqoop基础】Sqoop定位:关系型数据库与Hadoop生态间的高效数据桥梁
  • RabbitMQ 集群与高可用方案设计(三)
  • 如何用AI设计LOGO,DeepSeek+豆包免费批量生成
  • 【图论 并集查找】P3671 [USACO17OPEN] Where‘s Bessie? S|普及+
  • CodeGeeX - AI编程助手
  • Java Swing 自定义JOptionPane
  • 【文本分类】KG-HTC 知识图谱提升分类准确率
  • 有铜半孔工艺的制造难点与工艺优化
  • 2025年绿色材料与制造技术国际学术会议(GMMT 2025)
  • 易境通WMS系统:赋能快消品海外仓高效管理
  • 《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》第三次印刷
  • leetcode617.合并二叉树:迭代法中层序遍历与队列操作的深度解析
  • 7.安卓逆向2-frida hook技术-介绍
  • Real2Render2Real:无需动力学仿真或机器人硬件即可扩展机器人数据
  • gin使用Mysql连接池用法
  • 【排错】kylinLinx环境python读json文件报错UTF-8 BOM
  • Linux三剑客之grep命令使用教程
  • PTA练习题
  • 区块链与Web3:如何有效保障个人数据安全
  • 网站备案文件下载/吴江网站制作
  • 17岁日本免费完整版观看/厦门seo公司到1火星
  • wordpress制作婚礼/seo分析
  • 佛山做网站开发/seo的方式包括
  • 网站主编 做啥/网站怎么快速被百度收录
  • 乐清网站只做/最新足球新闻头条