uva 11572 - Unique Snowflakes(Towpointer)

来源:互联网 发布:matlab智能算法 温正 编辑:程序博客网 时间:2024/06/05 07:58

题目连接:uva 11572 - Unique Snowflakes


题目大意:给出一个字符串,找出最长的连续子串不含相同的数字。


解题思路:Towpointer,维护一个区间,保证没有相同的数字,同时维护最大长度。然后有因为数字比较大不能开数组直接记录,所以用map离散化。


#include <stdio.h>#include <string.h>#include <algorithm>#include <map>using namespace std;const int N = 1000005;int n, g[N];map<int, int> v;void init() {v.clear();scanf("%d", &n);for (int i = 0; i < n; i++) scanf("%d", &g[i]);}int solve() {int l = 0, ans = 0;for (int r = 0; r < n; r++) {v[g[r]]++;while (v[g[r]] == 2) v[g[l++]]--;ans = max(r - l + 1, ans);}return ans;}int main() {int cas;scanf("%d", &cas);while (cas--) {init();printf("%d\n", solve());}return 0;}


1 0
原创粉丝点击