unique_count_sorted.js

/**
 * 对于一个已排序的输入,计算唯一值的数量可以在常数时间和常数内存内完成。
 * 这是该算法的一个简单实现。
 *
 * 值使用 `===` 进行比较,因此对象和非原始对象不会以任何特殊方式处理。
 *
 * @param {Array<*>} x 包含任意类型值的数组
 * @returns {number} 唯一值的数量
 * @example
 * uniqueCountSorted([1, 2, 3]); // => 3
 * uniqueCountSorted([1, 1, 1]); // => 1
 */
function uniqueCountSorted(x) {
    let uniqueValueCount = 0;
    let lastSeenValue;
    for (let i = 0; i < x.length; i++) {
        if (i === 0 || x[i] !== lastSeenValue) {
            lastSeenValue = x[i];
            uniqueValueCount++;
        }
    }
    return uniqueValueCount;
}

export default uniqueCountSorted;