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