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

【算法手记11】NC41 最长无重复子数组 NC379 重排字符串

🦄个人主页:修修修也

🎏所属专栏:刷题

⚙️操作环境:牛客网


目录

一.NC41 最长无重复子数组

题目详情:

题目思路:

解题代码:

二.NC379 重排字符串

题目详情:

题目思路:

解题代码:

结语


一.NC41 最长无重复子数组

牛客网题目链接(点击即可跳转):NC41 最长无重复子数组

题目详情:

本题详情如下图:


题目思路:

本题解题思路如下:

        哈希双指针滑动窗口, 图解如下:


解题代码:

本题解题代码如下:

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

二.NC379 重排字符串

牛客网题目链接(点击即可跳转):NC379 重排字符串

题目详情:

本题详情如下图:


题目思路:

本题解题思路如下:

        首先先统计所有字母出现的次数,如果有字母出现的次数大于(总数+1)/2,那么说明这个根本没法重排,所以直接返回"".统计好字母后,先排数量多的,把它们在双数下标间隔一个排列,然后双数下标排满了再把剩下的排在单数位置上,这样就可以保证不会出现相同的字母相邻的情况啦.解法算是一个小贪心,然后统计字母用到了数组存pair键值对的形式.(此处发现一个小tips:sort排pair数组的话会默认按first的值排升序,如果懒得现场手搓排序函数的可以把待排序的数据类型作为pair的first,这样可以省一点事).


解题代码:

本题解题代码如下:

class Solution 
{
public:
    string rearrangestring(string str) 
    {
        vector<pair<int,char>> vp;
        string ret;
        ret.resize(str.size());
        for(int i=0;i<26;i++)
            vp.push_back(pair<int,char>{0,'a'+i});
        for(auto e:str)
            if(++vp[e-'a'].first > (str.size()/2))
                return ""; 
        sort(vp.begin(),vp.end());
        int i=vp.size()-1, sin=0, even=1;
        while(sin<ret.size())
        {
            while(vp[i].first==0)
                i--;
            ret[sin]=vp[i].second;
            vp[i].first--;
            sin+=2;
        }
        while(even<ret.size())
        {
            while(vp[i].first==0)
                i--;
            ret[even]=vp[i].second;
            vp[i].first--;
            even+=2;
        }
        return ret;
    }
};

结语

        说点啥好呢..."有志者事竟成!沉淀复盘!" -> "人生哪有一帆风顺!这次聊的很好~" -> "没事哒没事哒~先去学点东西也好" -> "OUT"

相关文章:

  • 质数筛(循环遍历,埃氏筛法,欧拉筛法)
  • 多线程编程:提高程序效率与响应性
  • Plusar集群搭建-Ubuntu20.04-Winterm
  • 容器化技术
  • AJAX简介
  • 漫画 Coco AI——打造跨平台、定制化搜索与 AI 智能问答体验
  • tradingview 隐藏按钮,隐藏菜单,
  • QML面试笔记--UI设计篇05容器控件
  • PG:incorrect prev-link
  • Tomcat 负载均衡
  • [实战] 天线阵列波束成形原理详解与仿真实战(完整代码)
  • oracle 12c密码长度,复杂度查看与设置
  • android14 keycode 上报 0 解决办法
  • 微软模拟飞行2004快速操作手册
  • 快瞳犬种识别效果图示,120种狗品种精准覆盖
  • MATLAB的24脉波整流器Simulink仿真与故障诊断
  • SU-YOLO:基于脉冲神经网络的高效水下目标检测模型解析
  • Git入门篇
  • 02-阿里云与HTTP协议
  • c++进阶之----c++11(可变参数模板)
  • 国家统计局:4月份居民消费价格同比下降0.1%
  • 东方红资管官宣:41岁原国信资管董事长成飞出任新总经理
  • 罕见沙尘再度入川,官方:沙尘传输高度达到平流层,远超以往
  • 牛市早报|国家发改委:今年将推出约3万亿元优质项目,支持民营企业参与
  • 【社论】以法治力量促进民企长远健康发展
  • 王日春已任教育部社会科学司司长,此前系人教社总编辑