本文最后更新于568 天前,其中的信息可能已经过时,如有错误请发送邮件到1986413837@qq.com

本题思路:模拟+哈希表
因为手串的珠子有顺序和颜色数目信息 我们可以考虑使用二维数组 map[i][j]
其中表示竹子的序号 map[ i ][ 0 ] 表示珠子上有的颜色数目 map[ i ][ j ](map[ i ][ 0 ] >= j >=1) 表示珠子上包含第j种颜色 这样我们就成功模拟出一个手串的各珠子情况
如图为根据样例画出的map表单

完成基本构建后 我们就可以开始遍历了
对于每一个珠子 我们需要考虑由他开始往后的m个珠子的颜色情况 需要设置一个哈希表 记录当前区间内已经使用过的颜色情况 并将结果这个颜色记录到result数组中记录为1(不能是+1因为颜色的重复使用情况是考虑整个手串 只要记录一次) 接着遍历颜色种类 发现已经标记就给sum+1 最后输出sum就大功告成了
!!!注意!!!
手串是成环形状 所以在遍历时需要考虑是否超过界限 解决这个问题只需要进行取余即可
源代码和解析贴在这里 可以仔细再思考一下步骤

算法也是面试重点呀~加油加油加油!!!