Skip to content

📚 6.0~n-1缺失的数字

💻 代码实现

typescript
/**
 * @url https://leetcode.cn/problems/que-shi-de-shu-zi-lcof/description/
 */

// ps: 可以使用二分查找来高效定位缺失的学号:
// ps: 如果 records[mid] == mid,说明左侧部分没有缺失,缺失的学号在右半部分。
// ps: 如果 records[mid] != mid,说明缺失的学号在左半部分或当前位置。通过最后的区间来排除掉

/**
 * @param {number[]} records
 * @return {number}
 */

// 0 2 3 4
var takeAttendance = function (records) {
    let left = 0;
    let right = records.length - 1;

    while (left <= right) {
        let mid = Math.floor((left + right) / 2);
        if (records[mid] === mid) {
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }

    return left;
};

Released under the MIT License.