CF1208B
CF1208B
题意:
给出n个数字,找出最小的一端连续区间进行删除操作,使其剩余元素不含重复元素,求要删除的最小区间长度
解法:
删除子段后,前缀和后缀保持不变,可能长度为0.让我们修复不包含任何重复元素的前缀,并找到我们可以获得的最大后缀而不重复元素。 我们可以使用map 来解决问题。
CODE:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <map>
using namespace std;
#define LL long long
#define INF 2147483647
#define N 2010
int a[N],n,ans = INF;
map<int,int> Hash;
int main() {
scanf("%d",&n);
for(int i = 1 ; i <= n ; i++)
scanf("%d",&a[i]);
int cnt = n;
while(cnt >= 1) {
if(Hash[a[cnt]] >= 1) break;
Hash[a[cnt]]++;
cnt--;
}
for (int i = 1; i <= n; i++) {
ans = min(ans, cnt - i + 1);
Hash[a[i]]++;
while (Hash[a[i]] >= 2 && cnt <= n) {
cnt++;
Hash[a[cnt]]--;
}
if (Hash[a[i]] >= 2)break;
}
printf("%d\n", ans);
system("pause");
return 0;
}
CF1208B的更多相关文章
随机推荐
- 数据结构-平衡二叉树Java实现
1,Node.java package com.cnblogs.mufasa.BalanceBinaryTree; public class Node { Node parent; Node left ...
- 关于Vue中,checkBox等组件在赋值后,点击切换页面未及时更新问题
我们经常碰到这样的问题,在v-for循环中,给某些组件(此处以checkBox为例)赋值后,组件并不能正常切换, 这是因为数据层太多,render函数没有自动更新,需手动强制刷新. 解决方法:在切换c ...
- js入门之函数
一. 函数 函数可以封装一段特定功能的代码,然后通过函数名可以重复调用 1 .函数的定义 funcation 函数名 (){ 函数体 } 函数名() 调用函数 2. 函数的参数 funcation f ...
- CentOS 7安装Hadoop集群
准备三台虚拟机,ip分别为192.168.220.10(master).192.168.220.11(slave1).192.168.220.12(slave2) 准备好jdk-6u45-linux- ...
- v-cloak 的用法
https://blog.csdn.net/knqiufan/article/details/81002957
- php 生成gif 动图,可控制每张图时间
<?php //namespace gifCreator; /** * Create an animated GIF from multiple images */ class gifcreat ...
- mongodb索引 多健索引
多健索引与单键索引创建形式相同,区别在于字段的值,单键索引,顾名思义,他的值为一个单一的值,例如字符串,数字或者日期,而多健索引,他的值具有多个记录,例如一个数组,两者建立方式类似 增加一条数组记录 ...
- GAN学习指南:从原理入门到制作生成Demo,总共分几步?
来源:https://www.leiphone.com/news/201701/yZvIqK8VbxoYejLl.html?viewType=weixin 导语:本文介绍下GAN和DCGAN的原理,以 ...
- 大数据之路week06--day01(VMware的下载与安装、安装CentOS)
好了,从今天开始就开始正式的进入大数据道路的轨道上了,当然了,Java 也是需要不断地在日后进行反复地学习,熟练掌握.(这里我要说一下,Java种还有一些I/O流.Lambda表达式和一些常用工具类有 ...
- Dijkstra算法和Floyd算法
一.简介 迪杰斯特拉(Dijkstra)算法和弗洛伊德(Flyod)算法均是用于求解有向图或无向图从一点到另外一个点最短路径. 二.Dijkstra 迪杰斯特拉算法也是图论中的明星算法,主要是其采用的 ...