百度研发鄙视题

来源:互联网 发布:linux命令vi怎么退出 编辑:程序博客网 时间:2024/05/29 07:31

2》一串首尾相连的珠子m个,有N中颜色,取其中一段包含N种颜色并且长度最短。

代码使用July的100题的代码,但是源代码没有考虑循环的情况,我将珠子串复制了一份,与原来的串首尾相连来解决循环。

看代码:

/* * 百度研发 一串首位相连的珠子(m个),有N种颜色 * @ a, 相连的珠子,有n个 * @ n,个数 * @ m, 颜色种数 */int shortestFullColor(int a[], int n, int m){//为了使用循环,我们将a转化成2份aa,int *aa = new int[2*n];int *c = new int[m];int ctr = m;int h = 0, t = 0;int min = n;for(int i = 0; i< n; ++i){aa[i] = a[i];aa[i + n] = a[i];}for(int i = 0; i < m; ++i){c[i] = 0;}while(1){//获取能够容纳ctr种颜色的hwhile(ctr > 0 && h < 2*n){if(c[aa[h]] == 0)ctr--;c[aa[h]]++;h++;}if(h >= 2*n)return min;//对t进行紧缩,使h-t构成的段最短while(1){c[aa[t]]--;if(c[aa[t]] == 0)break;t++;}if(min > h-t)min = h - t;//尾前移,颜色种数加1t++;ctr++;}}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 淘宝联盟账号和密码忘记了怎么办 社保用户名和密码都忘记了怎么办 江西银行网银用户名忘了怎么办 邮政银行网银登录密码忘了怎么办 建行网银支付密码忘了怎么办 建行手机网银登录密码忘了怎么办 特岗教师忘记用户名和密码怎么办 特岗教师用户名和密码忘了怎么办 电信登录用户名和密码忘记了怎么办 电脑登录用户名和密码忘了怎么办 电脑网络用户名忘了连不上网怎么办 微博忘记登录名怎么办只记得昵称 买房子付了首付现在要退房怎么办 玩lol延迟高怎么办但网速没问题 中维世纪监控密码忘记了怎么办 原店主营业执照不注销怎么办新的 苹果手机铃声调到最大还小怎么办 投标时措施费忘记套价了怎么办 美团商家更改手机号和银行卡怎么办 淘宝买的衣服颜色发错了怎么办 在淘宝买的衣服颜色不一样怎么办 新买的木柜气味好重怎么办 淘宝店铺动态评分一直很低怎么办? 刚生下来的宝宝睡觉不吃奶怎么办 宝宝吐奶咳嗽了可能被呛到怎么办 床下面的液压支架支撑不了了怎么办 沙发的海绵垫坐着感觉太硬怎么办 修公路占地补偿盖房子房产证怎么办 哺乳期乳房有硬块挤不出来怎么办 老公投的公司倒闭了钱怎么办 小丑鱼老在缸上边游不下去怎么办 海缸养珊瑚又想养蝴蝶鱼怎么办 被几个月的小狗咬了怎么办 木本植物继代长出大量愈伤怎么办 钱兜树叶子发黄掉叶怎么办 手机qq群200人满了怎么办 支票被背书人的章盖浅了怎么办 没病装病的心理病患者怎么办 20多岁被骗40多万怎么办 一个学生上课爱捣乱班级课堂怎么办 军训的时候大姨妈来了怎么办