2 条题解

  • 0
    @ 2025-4-18 17:19:46
    #include <iostream>
    #include <unordered_map>
    #include <vector>
    using namespace std;
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        
        int n;
        cin >> n;
        vector<int> nums(n); // 改用vector,堆内存分配,支持1e6元素
        for (int i = 0; i < n; ++i) {
            cin >> nums[i];
        }
        
        unordered_map<int, int> lastPos;
        int left = 0, maxLen = 0;
        
        for (int right = 0; right < n; ++right) {
            int num = nums[right];
            // 关键修复:处理元素首次出现的情况(避免未初始化访问)
            if (lastPos.find(num) != lastPos.end() && lastPos[num] >= left) {
                left = lastPos[num] + 1;
            }
            lastPos[num] = right; // 无论是否存在,直接更新(首次出现时插入)
            maxLen = max(maxLen, right - left + 1);
        }
        
        cout << maxLen << endl;
        return 0;
    }
    
    

    信息

    ID
    4496
    时间
    1000ms
    内存
    512MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者