码迷,mamicode.com
首页 > 其他好文 > 详细

求珠子的长度最小区间

时间:2016-08-28 16:39:05      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:有一串首尾相连的珠子   共有m个   每一个珠子有一种颜色   并且颜色的总数不超过n(n<=10)   求连续的珠子的颜�   

有一串首尾相连的珠子,共有m个,每一个珠子有一种颜色,并且颜色的总数不超过n(n<=10),求连续的珠子的颜色总数为n时,长度最小的区间。

#include <iostream>
using namespace std;
#define MAXN 10
int colors[MAXN];//record the counter of one color
int colorsCounter;
void find(int arr[],int len, int colorsNeed)
{
    int bestStartIndex = 0;
    int bestLen = len;
    int lastStartIndex = 0;
    
    for ( int i=0; i<len; ++i) {
        if (!colors[arr[i]])
            colorsCounter++;
        colors[arr[i]]++;
        if (colorsCounter==colorsNeed) {
            int j = lastStartIndex;
            while (colors[arr[j]]>1) {
                colors[arr[j]]--;
                ++j;
            }
            if (i-j+1<bestLen) {
                bestStartIndex = j;
                bestLen = i-j+1;
                if (bestLen==colorsNeed)
                    break;
            }
            lastStartIndex = j;
        }
    }

本文出自 “小止” 博客,请务必保留此出处http://10541556.blog.51cto.com/10531556/1843505

求珠子的长度最小区间

标签:有一串首尾相连的珠子   共有m个   每一个珠子有一种颜色   并且颜色的总数不超过n(n<=10)   求连续的珠子的颜�   

原文地址:http://10541556.blog.51cto.com/10531556/1843505

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!