JavaScript

 Computer >> コンピューター >  >> プログラミング >> JavaScript
  1. JavaScriptで配列を分割したときの平均値の合計の最大値を求める方法

    問題の概要 数値の配列 arr を第一引数に、数値 num(num は arr の長さ以下)を第二引数に受け取るJavaScript関数を作成します。 この関数の目的は、配列 arr を最大 num 個の「隣接する空でないグループ」に分割することです。分割の際、どの要素も取り残してはいけません。 そして、考えられるすべての分割方法の中から、各グループの平均値の合計が最大になるような分割を選び出し、その最大の合計値を返します。 例として、次の入力を考えてみましょう。 入力 const arr = [10, 2, 3, 4, 10]; const num = 3; 出力 const output

  2. JavaScriptで2つの配列を厳密に増加させるための最小スワップ回数を求める方法

    厳密に増加する数列とは 数列が厳密に増加する(strictly increasing)とは、arr[0] < arr[1] < arr[2] < ... < arr[arr.length - 1] という条件が成り立つことを指します。つまり、隣り合うどの要素を見ても、必ず右側の要素が左側の要素より大きくなければならないということです。 問題の概要 2つの数値配列 arr1 と arr2 を引数として受け取るJavaScript関数を実装します(第一引数が arr1、第二引数が arr2 です)。 この操作では、同じインデックス位置にある要素同士のみを入れ替えることがで

  3. JavaScriptで一致する部分文字列(部分列)の数を効率的に数える方法

    問題JavaScriptで、第1引数に文字列 str、第2引数に文字列の配列 arr を受け取る関数を作成します。この関数は、配列内の各要素 arr[i] のうち、文字列 str の「部分列」となっているものの個数を数えて返す必要があります。ここでの「部分列」とは、元の文字列から0個以上の文字を削除して得られる文字列であり、必ずしも連続している必要はない点に注意してください。これは「部分文字列」とは異なる概念です。例として、次のような入力が与えられた場合を考えてみましょう。入力const str = klmnop; const arr = [k, ll, klp, klo];出力const o

  4. JavaScriptで英字の大文字・小文字を組み合わせた全パターン(順列)を生成する方法

    問題概要文字列 str を第一引数(唯一の引数)として受け取るJavaScript関数を作成する必要があります。この関数は、文字列に含まれる英字をそれぞれ個別に小文字または大文字へ変換することで新しい文字列を生成し、作成可能なすべての文字列のリストを返します。なお、数字などの英字以外の文字はそのまま維持されます。たとえば、入力が以下の場合:入力const str = k1l2;出力const output = [k1l2,k1L2,K1l2,K1L2];解法のアプローチこの問題は再帰(バックトラッキング)を使うことで効率よく解決できます。考え方は次のとおりです。文字列を先頭から1文字ずつ処理し

  5. JavaScriptで有効な括弧列にするために必要な最小の追加数を求める方法

    問題今回は、[ と ] のみで構成される文字列 str を受け取るJavaScript関数を作成します。この関数の目的は、結果として得られる括弧の組み合わせが有効(バランスの取れた状態)になるように、必要な最小数の角括弧([ または ])を任意の位置に追加することです。そして最後に、追加した括弧の最小数を返します。例えば、関数への入力が以下の場合を考えてみましょう。入力const str = []];出力const output = 1;出力の説明先頭に [ を1つ追加すれば、文字列は [[]] となりバランスが取れます。したがって答えは 1 です。アルゴリズムの考え方この問題はスタックを使用

  6. JavaScriptで循環配列の最大部分配列和を求める方法

    問題JavaScriptで、整数の配列 arr を唯一の引数として受け取る関数を作成します。この配列 arr は循環配列として扱います。循環配列とは、配列の末尾の要素の後に先頭の要素が続く構造のことです。私たちのタスクは、arr の空でない部分配列の中から、要素の合計が最大となる値を見つけて返すことです。入出力の例入力:const arr = [2, -2, 3, -1];出力:const output = 4;出力の説明:この場合、最適な部分配列は [3, -1, 2] です。末尾の -1 の後に先頭の 2 が続くため、3 + (-1) + 2 = 4 となり、これが最大の合計値になります。

  7. JavaScriptで文字列内のアルファベットだけを反転する方法

    問題の概要JavaScriptで、アルファベットといくつかの特殊文字(記号)が混在する文字列 str を受け取る関数を作成することを求められています。この関数は、入力文字列をもとに新しい文字列を返します。その際のルールは次のとおりです。アルファベット以外の文字(記号・数字など)は、元の位置にそのまま留まります。アルファベットの文字だけが、互いに反転した位置へ移動します。入力例と出力例たとえば、関数への入力が以下だった場合を考えてみましょう。入力const str = k_lmn_opq;出力const output = q_pon_mlk;「_」という記号は位置が変わっておらず、アルファベット

  8. JavaScriptで2つの配列の合計を等しくする!要素交換アルゴリズムの解説

    問題の概要数値を格納した2つの配列 arr1 と arr2 を、それぞれ第1引数・第2引数として受け取るJavaScript関数を実装することを考えます。ここで、arr1 の要素の合計と arr2 の要素の合計は互いに異なっています。この関数には次のような役割を持たせます。まず arr1 から1つの要素を取り出して arr2 へ移動させ、同時に arr2 から1つの要素を取り出して arr1 へ移動させます。この操作によって、両方の配列の要素の合計が等しくなるようにします。最後に、交換した2つの要素を配列として返します。例として、関数への入力が以下の場合を確認してみましょう。入力const a

  9. JavaScriptでリンクリスト(連結リスト)の中央ノードを見つける方法

    問題概要連結リストの先頭ノード(head)を唯一の引数として受け取るJavaScript関数を作成することを考えます。この関数は、リストの中央に位置するノードに格納されている値を返す必要があります。もし中央にあたるノードが2つ存在する場合(ノード数が偶数の場合)は、そのうち後ろ側(2番目)のノードの値を返します。たとえば、次のようなリストが与えられた場合を考えてみましょう。入力例[4, 6, 8, 9, 1]出力例const output = 8;5つのノードがあるため、中央は3番目のノード「8」になります。実装コード例class Node {     

  10. JavaScriptで配列内の最長フィボナッチ部分列を見つける方法

    フィボナッチ数列とは 数列 X_1, X_2, ..., X_n がフィボナッチ数列であるとは、以下の条件を満たすことを指します。 n >= 3 である すべての i + 2 <= n に対して、X_i + X_{i+1} = X_{i+2} が成り立つ つまり、隣り合う2項の和が常に次の項になる数列のことです。 問題の概要 数値の配列 arr を第1引数(唯一の引数)として受け取り、配列 arr 内に存在する最長のフィボナッチ部分列の長さを見つけて返すJavaScript関数を作成する必要があります。 ここでいう「部分列」とは、元の配列 arr から任意の個数の要素(0個で

  11. JavaScriptで配列をシャッフルし、相手配列に対する勝利数を最大化する方法

    問題概要 同じ長さを持つ2つの数値配列 arr1 と arr2 を受け取り、arr1 の要素をシャッフルすることで、arr2 の対応する要素よりも大きい要素の数を最大限に増やすJavaScript関数を作成します。最終的に、シャッフル後の配列を返します。 例えば、次のような入力があった場合を考えてみましょう。 入力: const arr1 = [3, 5, 12, 19]; const arr2 = [2, 9, 3, 12]; 出力: const output = [3, 12, 5, 19]; 出力の説明: シャッフル前の arr1 では、arr2 より大きい対応要素は3つでしたが

  12. JavaScriptで全ての客に正確な釣り銭を渡せるかどうかを判定する方法

    問題 数値の配列 arr を唯一の引数として受け取るJavaScript関数を作成する必要があります。 次のような状況を想定してみましょう。 ある店主が、価格がちょうど₹5(5ルピー)の商品を販売しています。店の前には複数の客が列になって並んでおり、それぞれがこの商品を1つずつ購入します。客が支払えるのは₹5、₹10、₹20のいずれかの紙幣です。店主は最初は1枚も現金を持っておらず、配列には列に並んだ順番に各客が支払う紙幣が記録されています。 このとき、店主はすべての客に対して正確な釣り銭を渡せるでしょうか。それを判定するのが今回作成する関数の役割です。 例えば、関数への入力が次の場合を考えま

  13. JavaScriptで括弧文字列のスコアを計算する方法

    問題の概要バランスの取れた角括弧([ と ])のみで構成された文字列 str を引数として受け取り、そのスコアを計算して返すJavaScript関数を作成する必要があります。スコアの計算は、以下のルールに従います。[] のスコアは 12つのバランスの取れた括弧文字列 A と B を連結した AB のスコアは A + Bバランスの取れた括弧文字列 A を囲んだ [A] のスコアは 2 × A入出力例例えば、関数への入力が次の場合:入力const str = [][];出力const output = 2;この場合、[] が2つ並んでいるため、スコアは 1 + 1 = 2 となります。解決アプロー

  14. JavaScriptで隣接する同一単語のペアを数える方法

    問題概要英文の文章を表す文字列 str を引数として受け取るJavaScript関数を作成します。この関数の目的は、文字列の中で隣り合って登場する同じ単語のペアがいくつあるかを数え、その個数を返すことです。比較の際には大文字と小文字を区別しないため、it と It は同一の単語としてカウントされます。入力例const str = This this is a a sample string;出力例const output = 2;出力の説明文中の This this と a a の2箇所で同じ単語が連続して現れているため、結果は 2 となります。実装コード以下が実際のコード例です。const

  15. JavaScriptで数値をできるだけ近い値を持つn個に分割する方法

    問題 JavaScriptで関数を作成することを考えます。この関数は、第1引数として数値 num を、第2引数として数値 parts を受け取ります。 関数は、num をちょうど parts 個の数値に分割し、次の2つの条件を満たす必要があります。 各数値は互いにできるだけ近い値にすること 可能であれば偶数にすること なお、出力される数値の順序は重要ではありません。 たとえば、関数への入力が以下の場合を考えてみましょう。 入力 const num = 20; const parts = 6; 出力 const output = [3, 3, 3, 3, 4, 4]; 解き方のアプローチ

  16. JavaScriptで解くアルファベット軍団の戦い問題:爆弾による勝敗判定

    問題の概要 2つのアルファベット軍団が戦場で対決する状況を想像してください。両チームの兵士とそれぞれの重み(ウェイト)は次の表の通りです。 チームA 兵士重みA1B2C3D4 チームB 兵士重みW1X2Y3Z4 兵士のほかに、戦場には「!」で表される爆弾も配置されています。爆弾が爆発すると、その左右に隣接する位置にいた兵士は消滅します。 たとえば「A!BC」の場合、爆弾の左隣の「A」と右隣の「B」が倒され、結果は「C」になります。また「!!CC!!」の場合は、すべての「C」が爆弾に隣接しているため、結果は空文字列になります。 今回作成する関数の役割は、戦場のすべての爆弾が爆発した後、どちらの

  17. JavaScriptで文字列を大文字小文字を区別せずアルファベット順に並べ替え、空白を削除する方法

    問題アルファベットと空白を含む文字列 str を引数として受け取る JavaScript 関数を作成する必要があります。この関数は入力文字列を走査し、文字を「大文字小文字を区別せず、出現順に基づくアルファベット順」で新しい文字列へ連結する処理を行います。空白や句読点は単純に削除します。例えば、関数への入力が以下の場合を考えてみましょう。入力const str = some simple letter combination!;出力const output = abceeeeiiillmmmnnoooprssttt;解決のアプローチこの問題は、次の手順で解決できます。小文字 a(文字コード 97

  18. JavaScriptで複数の配列から要素を交互に取り出して1つの配列にまとめる方法

    問題 今回は、任意の個数の配列を引数として受け取り、それらすべての配列から要素を交互に(順番に一つずつ)取り出して、新しい配列を組み立てるJavaScript関数を作成します。 例えば、関数への入力が次のような場合を考えてみましょう。 入力 const arr1 = [1, 2, 3, 4]; const arr2 = [11, 12, 13, 14]; const arr3 = [a, b, c]; 出力 const output = [1, 11, a, 2, 12, b, 3, 13, c, 4, 14]; ご覧のとおり、まず各配列の先頭要素(1、11、a)、次に各配列の2番目の要素(

  19. JavaScriptで任意の記法の文字列をキャメルケースに変換する方法

    問題 JavaScriptで、通常の文・スネークケース・パスカルケースなどどんな記法で書かれた文字列でも受け取れる関数を作成し、その文字列をキャメルケース(camelCase)に変換することを考えます。 たとえば、関数への入力が次のようになっているとします。 入力 const str = New STRING; 期待される出力 const output = newString; サンプルコード 以下が実際のコードです。 const str = New STRING; const toCamelCase = (str = ) => { return str .re

  20. JavaScriptで配列の要素が2乗の関係かどうかをチェックする方法

    問題 2つの数値の配列 arr1 と arr2 をそれぞれ第1・第2引数として受け取るJavaScript関数を作成することを考えます。 この関数は、arr2 のすべての要素が、出現順序に関係なく arr1 のいずれかの要素の2乗と一致する場合にのみ true を返し、それ以外の場合は false を返す必要があります。 たとえば、関数への入力が次のようであった場合を考えてみましょう。 入力 const arr1 = [4, 1, 8, 5, 9]; const arr2 = [81, 1, 25, 16, 64]; 出力 const output = true; この場合、81 = 9²、

Total 5937 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:8/297  20-コンピューター/Page Goto:1 2 3 4 5 6 7 8 9 10 11 12 13 14