この解答例は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を返します。