この解答例はChatGPTによって生成されています,正しいかは自己判断で。
BFE.devでのAI解答例 - JavaScript コーディング問題
51. 重複要素のある配列で特定要素の次の要素を返す
解法:
二分探索を使用して、特定数字の位置を見つけます。その後、その位置の次の要素を返します。
以下はJavaScriptで実装したものです。
function findNext(arr, num) {
let low = 0;
let high = arr.length - 1;
let mid;
while (low <= high) {
mid = Math.floor((low + high) / 2);
if (arr[mid] === num) {
// 見つかった場合
if (arr[mid + 1] !== num) {
// 次の要素が異なる場合
return arr[mid + 1];
}
// 次の要素が同じ場合、右側を探す
low = mid + 1;
} else if (arr[mid] > num) {
// 左側を探す
high = mid - 1;
} else {
// 右側を探す
low = mid + 1;
}
}
// 見つからなかった場合
return -1;
}
例:
const arr = [2, 3, 5, 5, 7, 11, 11, 11, 13];
console.log(findNext(arr, 5)); // 7
console.log(findNext(arr, 11)); // 13
console.log(findNext(arr, 13)); // -1