栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

增减字符串匹配(贪心+双指针)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

增减字符串匹配(贪心+双指针)

942. 增减字符串匹配 - 力扣(LeetCode)

该题属于简单题,通过题目所给样例我们不难观察发现,如果输入' I ',则我们要保证输出的数组中相同位置的下一个数字大于该位置数字,那么我们对此进行“贪心处理”,我们为保证满足条件,我们直接选择我可选数字的最小值填入该位置

反之在输入' D '的时候,我们则选择可选数字里面的最大值填入对应位置

class Solution {
public://小就找到最小,大就找到最大
    vector diStringMatch(string s) {
        int n=s.length();
        vectornum(n+1);
        vectorans;
        for(int i=0;i<=n;i++)
        {
            num[i]=1;
        }
        for(int i=0;i=0;j--)
                {
                    if(num[j])
                    {
                        ans.push_back(j);
                        num[j]--;
                        break;
                    }
                }
            }
        }
        for(int i=0;i<=n;i++)
        {
            if(num[i])
            {
                ans.push_back(i);//注意最后还剩一个数
                break;
            }
        }
        return ans;
    }
};

这里由于我们的可选数字其实是由输入的字符串长度n决定的,相当于可选数字也是确定的

针对这点,我们可以使用双指针进行优化 

class Solution {
public:
    vector diStringMatch(string s) {
        int n=s.length();
        int r=0,l=n;
        vectorans;
        for(int i=0;i 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/876019.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号