この解答例は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)); // 7console.log(findNext(arr, 11)); // 13console.log(findNext(arr, 13)); // -1