枚举 · 例13-【模板】双指针
登录—专业IT笔试面试备考平台_牛客网
代码区:
#include<algorithm>
#include<iostream>
#include<vector>
#include<unordered_set>
using namespace std;struct INTER{int left,right;
};
bool compare(const INTER&a,const INTER&b){return a.left<b.left;
}
int main(){int n;cin>>n;vector<int> arr(n);for(int i=0;i<n;i++){cin>> arr[i];}int maxLength=0;vector<struct INTER> brr;//记录下标unordered_set<int> s;int left=0,right=0;while(right<n){if(s.count(arr[right])==0){//如果该元素不存在s.insert(arr[right]);int current_len=right-left+1;if(current_len>maxLength){maxLength=current_len;brr.clear();brr.push_back({left,right});}else if(current_len==maxLength){brr.push_back({left,right});}right++;}else{s.erase(arr[left]);left++;}}sort(brr.begin(),brr.end(),compare);cout<< brr.size()<<endl;for(int i=0;i<brr.size();i++){cout << brr[i].left+1<<" "<<brr[i].right+1<<endl;}return 0;
}
欢迎各位读者提出意见。
(菜菜奋斗小日记)