题解 | #找出特定体重的牛群#
题目考察的知识点
- 二分查找:题目使用了二分查找算法来查找目标值在数组中的位置。
题目解答方法的文字分析
- 初始化起始位置
start为0,结束位置end为数组weights的长度减1。 - 进入循环,当起始位置
start小于等于结束位置end时执行以下步骤: a. 计算中间位置mid为起始位置start和结束位置end之和除以2。 b. 如果目标值target大于中间值weights[mid],则更新结束位置end为mid-1。 c. 如果目标值target小于中间值weights[mid],则更新起始位置start为mid+1。 d. 如果目标值等于中间值weights[mid],则进入内部循环:- 将起始位置
start和结束位置end都更新为mid。 - 在起始位置
start大于等于0且weights[start]等于目标值的条件下,递减起始位置start。 - 在结束位置
end小于数组长度且weights[end]等于目标值的条件下,递增结束位置end。 - 返回一个包含起始位置
start + 1和结束位置end - 1的数组,表示目标值在数组中的起始位置和结束位置。
- 将起始位置
- 循环结束后,如果未找到目标值,则返回一个包含-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];
}
题解 | 前端刷题 文章被收录于专栏
题目考察的知识点 题目解答方法的文字分析 本题解析所用的编程语言 完整且正确的编程代码
