この解答例はChatGPTによって生成されています,正しいかは自己判断で。
BFE.devでのAI解答例 - JavaScript コーディング問題
50. 重複要素のある配列で特定要素の直前の要素を返す
/**
* @param {number[]} nums - sorted integer array with duplicates
* @param {number} target - integer to search in the array
* @return {number} - integer, the element just before the target or -1
*/
function findJustBefore(nums, target) {
let left = 0;
let right = nums.length - 1;
while (left <= right) {
const mid = Math.floor((left + right) / 2);
if (nums[mid] === target) {
// targetが見つかった場合、その直前の要素を返す
return nums[mid - 1];
} else if (nums[mid] < target) {
// 中央値よりも小さい場合、左側を見る
left = mid + 1;
} else {
// 中央値よりも大きい場合、右側を見る
right = mid - 1;
}
}
// 見つからなかった場合-1を返す
return -1;
}
この関数では、二分探索を使用して配列を検索します。特定の数字が見つかった場合、その直前の要素を返します。そのため、配列に重複がないと仮定している通常の二分探索とは異なります。見つからなかった場合は-1を返します。