首页 > 其他分享 >936 戳印序列

936 戳印序列

时间:2024-02-27 16:23:10浏览次数:20  
标签:int 戳印 stamp vector 序列 1005 936

原题链接

题解:逆序思维

我们如果正着考虑戳印序列,那么题目会很复杂,但是如果我们倒着考虑,即最后按下的戳印位置一定和stamp一一对应,然后将该位置改为?后再取匹配,那么问题就容易解决了。

 

class Solution {
public:
    int n,m;
    int sum[1005],que[1005],bol[1005];
    vector<vector<int> > G;    //哪些位置的戳应在i位置是不匹配的
    vector<int> a;
    vector<int> movesToStamp(string stamp, string target) {
        n=target.size();
        m=stamp.size();
        int l=0,r=0;
        for (int i=0;i<n;i++) G.push_back(a);
        for (int i=0;i<n-m+1;i++){
            for (int j=0;j<m;j++){
                if (target[i+j]!=stamp[j]){
                    sum[i]++;    //不匹配的个数
                    G[i+j].push_back(i);   //i位置的戳应在i+j位置无法匹配
                }
            }
            if (sum[i]==0) que[r++]=i;   //全部匹配代表是最后按下的
        }
        while (l<r){
            int from=que[l++];
            for (int i=0;i<m;i++){
                if (bol[from+i]==0){   //防止重复位置的操作
                    for (auto &it : G[from+i]){
                       if (--sum[it]==0) que[r++]=it;
                    }
                    bol[from+i]=1;
                }
            }
        }
        if (r!=n-m+1) return a;  //如果没有对应答案返回空数组
        r--;
        while (r>=0){    //逆序一下
            a.push_back(que[r--]);
        }
        return a;
    }
};

 

标签:int,戳印,stamp,vector,序列,1005,936
From: https://www.cnblogs.com/purple123/p/18037109

相关文章

  • 【论文随笔】多行为序列Transformer推荐(Multi-Behavior Sequential Transformer Reco
    前言今天读的论文为一篇于2022年7月发表在第45届国际计算机学会信息检索会议(SIGIR'22)的论文,文章主要为推荐系统领域提供了一个新的视角,特别是在处理用户多行为序列数据方面,提出了一种有效的Transformer模型框架。要引用这篇论文,请使用以下格式:[1]Yuan,Enming,etal."Multi......
  • PyTimeTK: 一个简单有效的时间序列分析库
    时间序列分析是数据科学的重要组成部分,特别是在金融、经济、天气预报等领域。它包括分析随时间收集或索引的数据点,以确定趋势、周期或季节变化。由于时间序列数据的复杂性所以分析时间序列需要复杂统计方法,我最近在Github上发现了一个刚刚发布不久的Python时间工具包PyTimeTK,它可......
  • 代码随想录算法训练营第二十九天| 491.递增子序列 46.全排列 47.全排列 II
    491.递增子序列题目链接:491.非递减子序列-力扣(LeetCode)思路:一开始一直报访问异常的错误,最后只好参考官网答案,结果竟然是因为我递归参数写错了导致程序一直出问题???(⊙︿⊙)这里去重用的是标记数组,可以用集合unordered_set,但由于本题数据范围比较小,所以我们可以用数组更加高效的......
  • 【算法】关于最长递增子序列(LIS)二分+贪心解法
    前言我们都知道,解决LIS的常规解法为DP,时间复杂度为O(n^2),但是在一些条件苛刻的问题中,通常DP的解法会超时。那么,是否存在一种时间复杂度更优秀的解法呢?答案是肯定的,有一种二分加贪心的解法可以将时间复杂度降低为O(nlogn)。详解如果我们现在要求下面这一组数据的LIS:我们需......
  • (29/60)递增子序列、全排列、全排列Ⅱ
    递归子序列leetcode:491.非递减子序列回溯法思路类似子集Ⅱ,每个元素大于二的节点都放入结果集。在填充path的过程中,检查是否满足非严格递增(是否等于末元素或比它大)。但是由于本题不能排序,之前的去重策略(数组排序,检查nums[i-1]==nums[i]&&used[i-1]==false)要调整......
  • NFLS 省选模拟 序列
    题面Link给定一个长度为\(n\)的序列\(a\),可以进行无限次下列操作:对于\(i\in[2,n-1]\),依次执行(而不是择一执行)\[a[i-1]+=a[i]\\a[i+1]+=a[i]\\a[i]=-a[i]\]求最小的\(\max^n_{i=1}|a[i]|\)思路考虑一次操作对于序列前缀和的影响,对于\(x,y,z\),其前缀和为\(x,x+y......
  • [DotnetSec]XmlSerializer 反序列化 分析
    Dotnet-XmlSerializer反序列化序列化和反序列化的演示Demo参考微软的文档:https://learn.microsoft.com/zh-cn/dotnet/api/system.xml.serialization.xmlserializer?view=net-5.0XmlSerializer命名空间:System.Xml.Serialization程序集:System.Xml.XmlSerializer.dll演示......
  • STEP: 用于多变量时间序列预测的预训练增强时空图神经网络《Pre-training Enhanced Sp
    2023年12月27日,看一篇老师给的论文。论文:Pre-trainingEnhancedSpatial-temporalGraphNeuralNetworkforMultivariateTimeSeriesForecasting或者是:Pre-trainingEnhancedSpatial-temporalGraphNeuralNetworkforMultivariateTimeSeriesForecastingGitHub:https:......
  • 代码随想录 day60 回文子串 最长回文子序列
    回文子串dp[i][j]:[i,j]范围内为回文子串递推式分三种情况①:ij相等显然是回文②:j-i<1且s[i]==s[j]显然是回文③:j-i>1且dp[i+1][j-1]为true也就是当前两端元素相同看元素内部是否是回文如果是显然是ij范围内是回文初始化必须初始化falset......
  • powershell 获取 CPU RAM DISK 序列号
    PowerShell中获取CPU序列号可以通过WMI(WindowsManagementInstrumentation)来实现。下面是一个示例代码,演示如何在PowerShell中获取CPU序列号:powershellCopyCode#使用WMI获取CPU信息$cpu=Get-WmiObject-ClassWin32_Processor|Select-ObjectName,Processo......