この解答例は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