题目链接:https://uva.onlinejudge.org/external/115/11572.pdf

题意:找到一个尽量长的连续子序列 A~ AR ,使得该序列没有相同的元素。

分析:枚举超时,怎么优化呢? 当我不停的将右端点右移,当我移不动的时候,说明之前的 l ~ r  里面有一个和 r++的元素相同。

但是,不代表 l ~ r 就没有用了,他本身还是有作用的,只要将 l 右移即可。这样,单看这里,时间复杂度为O(n) ,

然后就是查看 r++ 的元素是否和前面的相同,用 set 集合,时间复杂度是 O(log n) ;

 #include <bits/stdc++.h>

 using namespace std;

 const int maxn =  + ;

 int a[maxn];

 int main()
{
int t;
cin>>t;
while(t--) {
int n;
cin>>n;
for(int i=;i<n;i++)
cin>>a[i]; set<int> s;
int L = ;
int R = ;
int ans = ;
while(R<n) {
while(R<n&&!s.count(a[R])) s.insert(a[R++]);
ans = max(ans,R-L);
s.erase(a[L++]);
}
cout<<ans<<endl;
} return ;
}

最新文章

  1. ubuntu(Mint-17)修改dns
  2. Django--BBS项目
  3. 313. Super Ugly Number
  4. Java 理论与实践: 流行的原子——新原子类是 java.util.concurrent 的隐藏精华(转载)
  5. linux 第一次获得root权限
  6. C#中Thread.sleep()
  7. ExtJs双ActionResult共用同一Js文件ID冲突解决方案
  8. POJ3368(RMQ)
  9. HTML系列(七):多媒体
  10. 详解Objective-C中委托和协议
  11. 【转】OCR识别引擎tesseract使用方法——安装leptonica和libtiff
  12. linux服务器开发二(系统编程)--线程相关
  13. TP5.0 PHPExcel 数据表格导出(原)
  14. Android studio签名与代码混淆
  15. zookeeper入门系列 : 分布式事务
  16. 历史命令与实时记录(redhat6.8)
  17. 正则表达式验证input文本框
  18. AFN 二次封装
  19. Python进阶【第十一篇】模块(下)之常用模块
  20. Oracle SQL语句执行步骤

热门文章

  1. ZPL JS 调用共享打印机
  2. shell脚本启动java程序
  3. app的deviceName,apppackage,appactivity获取
  4. impdp参数TABLE_EXISTS_ACTION
  5. RTT之shell
  6. Kure讲HTML_HTML界面结构
  7. DedeCMS {dede:field name=&#39;array&#39; /}的用法
  8. pat04-树7. Search in a Binary Search Tree (25)
  9. Andrew Ng 的 Machine Learning 课程学习 (week4) Multi-class Classification and Neural Networks
  10. vue学习中遇到的onchange、push、splice、forEach方法使用