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

【算法提升】牛牛冲钻五 最长无重复子数组 重排字符串 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;}
};
http://www.xdnf.cn/news/8950.html

相关文章:

  • Hive 分桶(Bucketing)深度解析:原理、实战与核心概念对比
  • 水墨色调中国风PPT模版分享
  • 商务风企业公司推广培训计划PPT模版分享
  • IntelliJ IDEA Ultimate修改软件地区使用
  • C++模板与字符串:从入门到精通
  • python打卡day37
  • 云原生架构核心特性详解
  • AI时代新词-提示词、Agent、Chat:AI时代的交互新概念
  • 无限debugger
  • 特征分解:线性代数在AI大模型中的核心工具
  • AT_abc404_d [ABC404D] Goin#39; to the Zoo 题解
  • C++ 图像处理库 CxImage 简介 (迁移至OpenCV)
  • 精益数据分析(86/126):Parse.ly的转型启示——从用户增长到商业变现的艰难跨越
  • 地理卷积神经网络加权回归模型的详细实现方案
  • Netty应用:从零搭建Java游戏服务器网络框架
  • python:机器学习(KNN算法)
  • 【Linux】Linux 操作系统 - 18 , 重谈文件(二) ~ 文件描述符和重定向原理 , 手把手带你彻底理解 !!!
  • 游戏引擎学习第311天:支持手动排序
  • 单纯形是什么
  • 滑动窗口算法实时计算QPS:Java实现与原理分析
  • Steam发布游戏过程的若干问题
  • ABP VNext + Elsa Workflow:实现可视化流程引擎
  • 袁庭新陕西理工大学讲座报告:从技术原理到行业变革,构建AI时代的职业护城河
  • 每日算法刷题Day16 5.26:leetcode不定长滑动窗口求子数组个数越短越合法2道题+恰好型3道题,用时1h20min
  • Simple Factory(简单工厂)
  • PHP轻量级聊天室源码(源码下载)
  • HTML与Flask表单之间的关系(chatgtp提供)
  • Hive数据倾斜优化方法总结
  • PyTorch实现MLP信用评分模型全流程
  • 进程IO之 库