この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿からも解答例が見つかるかもしれませんよ。
BFE.devでのAI解答例 - JavaScript コーディング問題
48. 重複要素のある配列で特定要素の一番出現位置を返す
解法1: 線形探索 配列を先頭から順番に探索して、特定の整数が最初に現れるindexを返します。配列が昇順にソートされているため、見つかった最初のインデックスが返されます。 時間計算量はO(n)で、最悪の場合、すべての要素を一度調べる必要があります。
function findIndex(arr, num) { for (let i = 0; i < arr.length; i++) { if (arr[i] === num) { return i; } } return -1;}
解法2: 二分探索 配列が昇順にソートされているため、二分探索を使用して特定の整数を探します。私たちは、配列の中央の要素が特定の整数より大きいか小さいかを調べて、配列を半分に割ることができます。このプロセスを繰り返すと、特定の整数が見つかるか、配列を二分探索することができなくなるまで続けます。見つかった場合、そのインデックスを返します。見つからなかった場合、-1を返します。 時間計算量はO(log n)であり、配列が大きい場合でも高速に機能します。
function findIndex(arr, num) { let low = 0; let high = arr.length - 1; while (low <= high) { let mid = Math.floor((low + high) / 2); if (arr[mid] < num) { low = mid + 1; } else if (arr[mid] > num) { high = mid - 1; } else { // found it! return mid; } } // not found return -1;}