JavaScript

 Computer >> コンピューター >  >> プログラミング >> JavaScript
  1. JavaScriptで配列からn番目の欠落数を見つける方法

    問題の概要 1ずつ増加する数列があり、その一部の要素が欠落している状況を考えてみましょう。 const arr = [2,3,4,7,11]; このような配列を第1引数として、整数nを第2引数として受け取り、配列の中でn番目に欠けている数値を見つけるJavaScript関数を作成する必要があります。 具体例 上記の配列に対して n = 4 が与えられた場合、期待される出力は 8 です。 なぜなら、この配列に含まれていない数値(欠落数)は次の通りだからです。 1, 5, 6, 8 4番目の欠落数が 8 であるため、関数は 8 を返すことになります。 解決策:コード例 const arr = [2

  2. 組み込みメソッドを使わずに文字列を反転するJavaScript関数

    今回は、文字列を受け取って、その文字列を反転させた新しい文字列を返すJavaScript関数を作成します。ただし、以下の条件が課せられています。組み込みのStringメソッド(reverse()など)を使用してはいけない文字列をsplit()などで配列に変換してから反転する方法も使えないつまり、ループを使って文字列を1文字ずつ走査しながら、反転された新しい文字列を自力で構築する必要があります。実装の考え方基本的なアプローチはシンプルです。文字列の先頭から順に1文字ずつ取り出し、その文字を「結果となる文字列の先頭」に追加していきます。こうすることで、後から処理した文字ほど前に来るため、自然と文字

  3. JavaScriptでソート済み配列に数値を挿入する方法|二分探索で順序を維持

    問題の概要 本記事では、昇順に並べ替えられた数値配列を第1引数に、単一の数値を第2引数として受け取るJavaScript関数を作成します。 関数に求められる要件は以下のとおりです。 第2引数で指定された数値を、配列内の適切な位置に挿入する 挿入後も要素のソート順(昇順)を崩さないこと 新しい配列を作成せず、元の配列を直接操作して実現すること 解決のアプローチ 挿入位置の特定には二分探索(バイナリサーチ)を使用します。先頭から順に比較する線形探索(計算量 O(n))と比べ、二分探索なら O(log n) で効率的に位置を見つけられます。 位置が判明したら、その位置以降の要素を一つずつ後ろへシ

  4. JavaScriptで文字列が同一の部分文字列の繰り返しかどうかを判定する方法

    この記事では、引数として渡された文字列が同一の部分文字列の繰り返しのみで構成されているかを判定し、true または false を返す JavaScript 関数の作り方を解説します。 条件として、入力文字列の長さは必ず 1 より大きく、部分文字列は少なくとも 2 回以上繰り返されていなければなりません。 判定結果の例 'aa' → true:「a」が 2 回繰り返されているため 'aaa' → true:「a」が 3 回繰り返されているため 'abcabcabc' → true:「abc」が 3 回繰り返されているため 'aba&#

  5. JavaScriptで2つの文字列を比較して類似度(一致率)をパーセントで返す方法

    はじめに JavaScriptでは、2つの文字列を比較して「どのくらい似ているか」をパーセンテージで返す関数を実装できます。こうした類似度の判定は、検索候補の表示、フォーム入力の補完、データの重複チェック、簡易的なスペルチェッカーなど、さまざまな場面で役立ちます。 ここでいう類似度とは、2つの文字列が互いにどれだけ多くの文字を共有しているかを表す指標です。今回作成する関数は、次の仕様を満たします。 2つの文字列が完全に一致していれば 100 を返す 共通する文字がひとつもなければ 0 を返す 大文字・小文字の違いは区別しない 結果は小数第2位まで丸めた数値で返す アルゴリズムの鍵:レーベン

  6. JavaScriptでソース配列の連結によりターゲット配列を形成できるか判定する方法

    問題の概要 相異なる整数で構成される配列 arr(ターゲット配列)と、整数配列を要素として持つ配列 sourceArr(ソース配列)が与えられます。sourceArr 内の各サブ配列に含まれる整数も、全体として重複がありません。 目的は、sourceArr に含まれるサブ配列を任意の順序で連結することで、ターゲット配列 arr を完全に再現できるかどうかを判定する関数を実装することです。 重要な制約として、各サブ配列内部の要素を並べ替えることはできません。自由に決められるのは、サブ配列を連結する順序だけです。形成が可能であれば true、不可能であれば false を返します。 具体例 co

  7. JavaScriptで出現頻度の昇順に数値配列をソートする方法

    本記事では、重複した数値を含む可能性のある数値配列を受け取り、出現回数(頻度)が少ない要素から順に並べ替えるJavaScript関数の作成方法を解説します。具体的には、配列内の各要素が出現する回数をカウントし、頻度が低い要素ほど先頭に配置されるようにソートを行います。要件の確認例えば、入力配列が次のような場合を考えてみましょう。const arr = [1,1,2,2,2,3];この場合、期待される出力は以下の通りです。const output = [3,1,1,2,2,2];「3」は1回しか出現しないため最初に配置され、続いて2回出現する「1」、最後に3回出現する「2」が並びます。このように

  8. JavaScriptで同じ文字に挟まれた最長部分文字列の長さを求める方法

    本記事では、文字列を引数として受け取り、同じ文字2つに挟まれた最長の部分文字列の長さを求めて返すJavaScript関数の実装方法を解説します。問題の概要与えられた文字列の中から、「同じ文字で始まり、同じ文字で終わる」部分文字列を探し、その間にある文字数(挟まれた部分の長さ)が最大になるものを見つけます。例えば、入力文字列が以下の場合を考えてみましょう。const str = avbghvh;この場合、期待される出力は次のとおりです。const output = 3;理由は簡単で、2つの「v」の間に挟まれた部分文字列 bgh の長さが 3 であり、これが条件を満たす最長の部分文字列だからです。

  9. 【JavaScript】配列の最大値・最小値を除外して平均値を求める方法

    今回は、数値の配列を受け取り、その中の最大値と最小値を除外した状態での平均値を計算するJavaScript関数を作成します。統計処理やデータ分析において、外れ値の影響を排除したい場合によく使われるテクニックです。この処理には Array.prototype.reduce() メソッドを使用します。reduce() を活用すれば、配列要素の合計を計算しながら、同時に最大値と最小値も求めることができ、ループを1回で済ませられる効率的な実装になります。実装例 { const { length } = arr; if(length max){ max = va

  10. JavaScriptの「特別な配列」とは?判定アルゴリズムを実装して解説

    プログラミングにおいて「特別な配列(Special Array)」と呼ばれる概念があります。本記事では、その定義と、JavaScriptで特別な配列を判定する関数の実装方法をわかりやすく解説します。 特別な配列の定義 ある配列が「特別な配列」であるとは、次の条件を満たす正の整数 num が存在する場合を指します。 配列内に、num より大きい要素がちょうど num 個存在すること。 ここで重要なポイントは、num 自体が必ずしも配列の要素である必要はないという点です。あくまで、そのような整数が存在すればよいのです。 具体例 例えば、次の入力配列を考えてみましょう。 const arr = [2

  11. 【JavaScript】配列内のすべての奇数長部分配列の合計を求める方法

    今回は、数値の配列を唯一の引数として受け取るJavaScript関数を作成します。この関数の役割は、元の配列から取り得るすべての奇数長の部分配列を抽出し、それぞれの合計値を計算した上で、その総和を返すことです。部分配列とは何かここでの「部分配列(サブ配列)」とは、配列から任意の要素を組み合わせたものではなく、連続した要素からなる連続部分列を指す点に注意してください。具体例で確認する例えば、次のような入力配列が与えられたとします。const arr = [1, 2, 3, 4, 5];この場合、考えられるすべての奇数長の部分配列は以下の通りです。[1], [2], [3], [4], [5],

  12. JavaScriptで配列内の文字列から数値の合計を求める方法

    はじめに 本記事では、ハイフン区切りのクレジットカード番号が格納された配列を扱い、「各桁の数字の合計」が最も大きい番号を抽出する関数をJavaScriptで実装する方法を解説します。 問題設定 たとえば、次のようなデモ用のクレジットカード番号を含む配列があるとします。 const arr = [4916-2600-1804-0530, 4779-252888-3972, 4252-278893-7978, 4556-4242-9283-2260]; この配列を引数として受け取る関数を作成し、各番号を構成する数字の合計が最大となるカード番号を返します。ただし、合計が同点の場合は、配列内で最後に出

  13. JavaScriptで再帰を使ったクイックソートの実装方法を解説

    はじめに数値の配列を受け取り、クイックソートのアルゴリズムを適用して昇順または降順に並べ替えるJavaScript関数を作成してみましょう。本記事では、再帰処理を活用したクイックソートの実装方法を、実際のコード例とともにわかりやすく解説します。クイックソートのアルゴリズムクイックソートは、以下の手順で動作する代表的なソートアルゴリズムです。ステップ1 − 配列内の任意の要素を「ピボット」として選択します(先頭や末尾が一般的ですが、どの要素を選んでも問題ありません)ステップ2 − ピボットを基準に配列を分割(パーティション)しますステップ3 − 左側のパーティションに対して再帰的にクイックソート

  14. 【JavaScript】線形時間とO(n)空間で配列内の重複要素を検出する方法

    本記事では、1からnまでの範囲に含まれるn+1個の整数を持つ「読み取り専用」配列を引数として受け取るJavaScript関数の作成方法について解説します。 この関数が満たすべき要件は以下の2点です。 計算量が線形時間 O(n) であること 使用する追加メモリが最大でも O(n) であること 例えば、入力配列が次のような場合を考えてみましょう。 const arr = [3, 4, 1, 4, 1]; このとき、期待される出力の形式は以下の通りです。 const output = 1; 重複する数値が複数存在する場合(上記の例のように)、どれか1つを出力すれば問題ありません。また、重複が一切

  15. JavaScriptでn個の引数の加減算の全組み合わせから0に最も近い合計を求める方法

    任意の個数の数値型引数を受け取るJavaScript関数を作成してみましょう。この関数は、各引数に対してプラスとマイナスを割り当てたすべての組み合わせの合計を計算し、その中から0に最も近い値を返します。 例えば、引数が 1, 2, 3 の場合、考えられるすべての組み合わせは以下のとおりです。 1 + 2 + 3 1 - 2 - 3 1 + 2 - 3 1 - 2 + 3 これらの計算結果はそれぞれ 6, -4, 0, 2 となり、0に最も近いのは 0 です。したがって、この場合の答えは 0 となります。 アプローチ:Setを活用した効率的な計算 引数がn個ある場合、符号の組み合わせは2の(n-

  16. JavaScriptで配列の中から最長の減少列(連続する部分列)の長さを求める方法

    本記事では、整数の配列を受け取り、その中に含まれる最も長い減少列(連続する要素の並び)の長さを返すJavaScript関数の実装方法を解説します。減少列とは、隣り合う要素がそれまでの要素より大きくならずに、連続して減っていく部分列のことです。問題の概要たとえば、次のような入力配列が与えられたとします。const arr = [5, 2, 5, 4, 3, 2, 4, 6, 7];この場合、期待される出力は次のとおりです。const output = 4;これは、配列内で最も長く連続して減少している列が [5, 4, 3, 2] であり、その長さが 4 であるためです。実装コードconst ar

  17. JavaScriptで実装する文字列のあいまい検索(ファジー検索)アルゴリズム

    本記事では、検索文字列を受け取り、対象の文字列に対して緩やかな(あいまいな)一致判定を行うJavaScriptのString関数を実装する方法を解説します。実装の要件この関数は次の基準を満たす必要があります。検索クエリの各文字を先頭から順にループ処理するそれぞれの文字が、対象の文字列内で同じ順序で出現するかどうかを確認するすべての文字が順序どおりに見つかれば true を返し、途中で見つからない文字があれば false を返します。動作例(a haystack with a needle).fuzzySearch(hay sucks); // false (a haystack with a

  18. JavaScriptで別の配列に基づいて配列の要素を結合・変更する方法

    次のような、フレーズからなる参照用の配列があるとします。const reference = [your, majesty, they, are, ready];ここで、別の配列を基準として、上記の配列に含まれる一部の要素を結合する必要があります。たとえば、もう一方の配列が次のようなものだった場合を考えてみましょう。const another = [your, they are];このとき、期待される結果は次のようになります。result = [your, majesty, they are, ready];この例では、両方の配列の要素を比較し、最初の配列内で連続している複数の要素が、2番目の配

  19. JavaScriptで1からnまでの数値名の文字数をカウントする方法

    本記事では、数値 n を引数として受け取り、1 から n までの各数値を英語の名称(number name)で表記したときのアルファベットの文字数の合計を求める JavaScript 関数を作成する方法を解説します。 問題の例 まず、具体例で挙動を確認しましょう。n = 5 の場合、対象となる数値名は「one」「two」「three」「four」「five」です。 それぞれの文字数は 3・3・5・4・4 であるため、合計は 19 文字になります。したがって、この場合の出力は 19 となります。 解決アプローチ この問題を効率的に解くポイントは、毎回数値を文字列に変換して長さを測るのではな

  20. JavaScriptで階乗の各桁の合計を計算する方法

    本記事では、数値を引数として受け取り、まずその数値の階乗を計算した後、計算結果(階乗)の各桁の数字の合計を返すJavaScript関数の実装方法を解説します。たとえば、入力が 6 の場合を考えてみましょう。6の階乗は 720 なので、7 + 2 + 0 を計算し、出力は 9 となります。コード例 {    if (num == 1) return 1;    return num * factorial(num-1);}; {    const str = num.toStr

Total 5937 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:44/297  20-コンピューター/Page Goto:1 38 39 40 41 42 43 44 45 46 47 48 49 50