题解 | #找出特定体重的牛群#

题目考察的知识点

  • 二分查找:题目使用了二分查找算法来查找目标值在数组中的位置。

题目解答方法的文字分析

  1. 初始化起始位置start为0,结束位置end为数组weights的长度减1。
  2. 进入循环,当起始位置start小于等于结束位置end时执行以下步骤: a. 计算中间位置mid为起始位置start和结束位置end之和除以2。 b. 如果目标值target大于中间值weights[mid],则更新结束位置endmid-1。 c. 如果目标值target小于中间值weights[mid],则更新起始位置startmid+1。 d. 如果目标值等于中间值weights[mid],则进入内部循环:
    • 将起始位置start和结束位置end都更新为mid
    • 在起始位置start大于等于0且weights[start]等于目标值的条件下,递减起始位置start
    • 在结束位置end小于数组长度且weights[end]等于目标值的条件下,递增结束位置end
    • 返回一个包含起始位置start + 1和结束位置end - 1的数组,表示目标值在数组中的起始位置和结束位置。
  3. 循环结束后,如果未找到目标值,则返回一个包含-1的数组,表示目标值不存在于数组中。

本题解析所用的编程语言

本题的解析使用了JavaScript作为编程语言。

完整且正确的编程代码

function searchRange(weights, target) {
    let start = 0;
    let end = weights.length - 1;
    while (start <= end) {
        let mid = Math.floor((start + end) / 2);
        if (weights[mid] < target) {
            end = mid - 1;
        } else if (weights[mid] > target) {
            start = mid + 1;
        } else {
            start = mid;
            end = mid;
            while (start >= 0 && weights[start] === target) {
                start--;
            }
            while (end < weights.length && weights[end] === target) {
                end++;
            }
            return [start + 1, end - 1];
        }
    }
    return [-1, -1];
}
题解 | 前端刷题 文章被收录于专栏

题目考察的知识点 题目解答方法的文字分析 本题解析所用的编程语言 完整且正确的编程代码

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务