一、滑动窗口的定义

滑动窗口是指在一个数组/字符串中,每次移动一个位置,将窗口内的元素进行处理的一种算法。在颜色分类的问题中,滑动窗口的作用是每次处理一个颜色,将它移动到正确的位置,最终实现颜色的分类。

二、实现步骤

1. 创建一个颜色数组,存储要分类的颜色;

2. 遍历颜色数组,判断当前颜色是否与滑动窗口内的颜色相同,如果不同,则将当前颜色放入滑动窗口;

3. 如果当前颜色与滑动窗口内的颜色相同,则将滑动窗口内的颜色放入新的数组,并将滑动窗口重新置为当前颜色;

4. 重复步骤2和3,直到遍历完整个颜色数组。

三、实现代码

function classifyColors(colors) {
    let window = [colors[0]];
    let result = [window];
    for (let i = 1; i < colors.length; i++) {
        if (window.indexOf(colors[i]) === -1) {
            window.push(colors[i]);
        } else {
            result.push(window);
            window = [colors[i]];
        }
    }
    result.push(window);
    return result;
}