2 条题解

  • 3
    @ 2023-4-15 15:03:50

    算法分析:哈希,指针。

    解题思路:题目中的M个单元我们可以用一个bool类型的数组,a[i]用来记录i是否在单元里面,用int 类型b[]来记录数据的顺序,再用两个变量指向b[]的头和尾。

    时间复杂度:O(n)

    代码部分:

    不能抄题解
    #include<bits/stdc++.h>
    using namespace std;
    int n,m,ans,l,r,b[1001];    不能抄题解//b[1001] 记录单词顺序 
    bool a[i];
    int main(){
        cin>>m>>n;
        for(int x,i=1;i<=n;i++){
            cin>>x
            if(a[x]==0){          不能抄题解//判断是否在单元里 
                an++;
                r++;
                b[r]=x;
                a[x]=1;
                if(r>m){          不能抄题解//判断是否超出单元数量 
                    l++;
                    a[b[l]]=0;
                }
            }
        }
        cout<<anss;
        return 0;
    不能抄题解
    此题解中有许多防止抄代码的陷阱,请谨慎食用
    

    信息

    ID
    1100
    时间
    1000ms
    内存
    128MiB
    难度
    7
    标签
    递交数
    26
    已通过
    8
    上传者