JavaScript

 Computer >> コンピューター >  >> プログラミング >> JavaScript
  1. JavaScriptで「要素の合計+インデックスの差」が最大となるペアを求める方法

    問題 整数の配列 arr を唯一の引数として受け取る JavaScript 関数を作成します。 関数は、配列内のすべてのインデックスペアの中で (arr[i] + arr[j]) + (i − j) の値が最も大きくなるようなペア (i, j) を選び、その最大値を返す必要があります。 入力例 const arr = [8, 1, 5, 2, 6]; この場合、期待される出力は次のとおりです。 const output = 11; 出力の説明 i = 0、j = 2 を選んだ場合、計算は以下のようになります。 (8 + 5) + (0 - 2) = 11 これは、他のどのインデックスペアを選

  2. 【JavaScript】配列を合計が等しい3つの部分に分割できるか判定する方法

    問題概要整数の配列を唯一の引数として受け取るJavaScript関数を作成します。この関数は、配列を合計が等しい3つの空でない部分に分割できる場合にのみ true を返し、それ以外の場合は false を返す必要があります。例えば、関数への入力が次の場合を考えてみましょう。const arr = [3, 3, 6, 5, -2, 2, 5, 1, -9, 4];このとき、期待される出力は次のとおりです。const output = true;出力の解説この入力が true になる理由は、配列を以下のように3つに分割でき、それぞれの合計が等しくなるからです。3 + 3 = 6 = 5 - 2 +

  3. JavaScriptで最大num個の0を1に変更した後の最長連続1の長さを求める方法

    問題JavaScriptの関数を作成します。この関数は、0と1のみを含むバイナリ配列arrを第一引数に、数値numを第二引数として受け取ります。配列内の0を最大num個まで1に変更できるとき、変更後の配列において1のみが連続する最長の(連続した)部分配列の長さを返す必要があります。例えば、関数への入力が以下の場合 −const arr = [1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0];const num = 2;このときの出力は以下のようになります −const output = 6;出力の説明2つの0を1に変更すると、配列の末尾6要素がすべて1になるためです。スライディ

  4. 【JavaScript】最小枚数のコインで指定金額を作る方法|動的計画法による解説

    問題概要 JavaScriptで、第一引数に配列 arr を受け取る関数を実装します。この配列には、利用可能な硬貨の額面(種類)が格納されています。 第二引数には数値 amount を渡します。これは合計したい目標金額を表し、関数はその金額をちょうど作るために必要な最小のコイン枚数を返します。 なお、どうしてもその金額を作れない場合は -1 を返す必要があります。 例えば、次のような入力があったとします。 const arr = [1, 2, 5]; const amount = 17; この場合の出力は次のようになります。 const output = 4; 出力の解説 17という金額は「

  5. JavaScriptで2つの配列から作れる最大の数を求める方法

    問題1桁の数字を要素とする2つの配列 arr1 と arr2 を第1・第2引数として受け取り、さらに数値 num(num <= arr1.length + arr2.length)を第3引数として受け取るJavaScript関数を作成します。この関数が返すのは、長さ num の1桁の数字からなる新しい配列です。この配列自体が1つの数値を表しており、その値は両方の配列の要素を組み合わせて作成できる最大の数でなければなりません。ただし、重要な条件がひとつあります。それは、同じ配列内の要素の相対的な順序は維持しなければならないという点です。例えば、関数への入力が次の場合を考えてみましょう。co

  6. JavaScriptで解く電球のオン・オフ切替問題:nラウンド後に点灯している電球の数を求める

    問題の概要次のような状況を考えてみましょう。初期状態でオフになっている電球が n 個あります。まず最初に、すべての電球をオンにします。続いて2回目のラウンドでは、2個ごとの電球をオフにします。3回目のラウンドでは、3個ごとの電球をトグル(オフならオンに、オンならオフに)します。一般に、i 回目のラウンドでは「i 個ごと」の電球をトグルし、最後の n 回目のラウンドでは n 番目の電球だけをトグルします。ここで求めたいのは、n 回のラウンドがすべて終わった時点で点灯している電球の個数です。入力として n のみを受け取り、結果を返すJavaScript関数を作成してください。たとえば、関数への入力

  7. JavaScriptで共通文字を持たない2つの単語の最大長の積を求める方法

    問題小文字の英字のみで構成された文字列の配列を、最初かつ唯一の引数として受け取るJavaScript関数を作成する必要があります。この関数の役割は、配列の中から共通する文字を1つも持たない2つの文字列を選び出し、それらの長さの積が最大になる組み合わせを見つけることです。そして、その積を戻り値として返します。該当する組み合わせが1つも存在しない場合は、0を返してください。入力例const arr = ["karl", "n", "the", "car", "mint", "alpha&q

  8. JavaScriptで各文字を1回だけ出現させ、辞書順最小の文字列を作る方法

    本記事では、JavaScriptを使って「各文字が1回だけ出現する文字列」を作成する問題を解説します。単に重複を取り除くだけでなく、結果として得られる文字列が辞書順で最小になるよう、残す文字の出現位置を適切に選ぶ必要があります。 問題の概要 文字列 str を唯一の引数として受け取るJavaScript関数を作成してください。 この関数は、入力文字列をもとに新しい文字列を生成します。生成される文字列では、それぞれの文字が1回だけ出現し、かつ残した文字の組み合わせが辞書順で最小になるようにします。 例えば、関数への入力が次の場合: const str = cbacdcbc; 期待される出力は次の

  9. JavaScriptで各要素より右側にある小さい数字の個数を数える方法

    問題概要今回は、数値の配列を唯一の引数として受け取るJavaScript関数を作成します。この関数は、入力された配列をもとに新しい配列を生成します。新しく作られる配列の各要素には、元の配列内で「対応する要素より右側に位置し、かつその値より小さい要素」の個数が格納されます。たとえば、次のような配列を入力したとします。const arr = [4, 7, 1, 4, 7, 5, 3, 8, 9];この場合、期待される出力は以下の通りです。const output = [2, 4, 0, 1, 2, 1, 0, 0, 0];出力結果の解説先頭の「4」よりも右側にあり、値がそれより小さい要素は「1」と

  10. JavaScriptでスーパー・アグリー数を求めるアルゴリズム

    スーパー・アグリー数とは スーパー・アグリー数(Super Ugly Number)とは、すべての素因数が、あらかじめ与えられたサイズkの素数リスト「primes」の中に含まれる正の整数のことです。 たとえば、素数リストとして [2, 7, 13, 19] を指定した場合、最初の12個のスーパー・アグリー数は [1, 2, 4, 7, 8, 13, 14, 16, 19, 26, 28, 32] となります。これらの数はすべて、素因数が2・7・13・19のいずれかだけで構成されている点が特徴です。 問題の定義 今回作成するのは、第1引数に整数 num、第2引数に素数の配列 arr を受け取る

  11. JavaScriptで2次元配列の合計が最小となるパスを求める方法

    問題概要 数値の2次元配列を第1引数(かつ唯一の引数)として受け取るJavaScript関数を考えます。 この関数の目的は、各行からちょうど1つの要素を選んで「パス(経路)」を構成し、その際に隣り合う行から選んだ要素が同じ列にならないようにすることです。そして、条件を満たすすべてのパスの中から、合計値が最小となるものを見つけ、その合計を返します。 例えば、次のような入力が与えられたとします。 const arr = [     [4, 7, 1],     [2, 8, 3],    

  12. JavaScriptで他の区間に包含される区間を削除するアルゴリズム

    問題概要JavaScriptで、2次元配列 arr を唯一の引数として受け取る関数を作成します。入力配列の各サブ配列は、必ず2つの数値から構成され、それぞれ時間区間(インターバル)を表しています。この関数では、配列 arr 内で他の区間によって完全に包含されている区間をすべて削除する必要があります。区間 [a, b) が区間 [c, d) に包含されるとは、c <= a かつ b <= d が成り立つ場合を指します。最終的に、削除後に残った区間の数を返します。入力例const arr = [ [2, 5], [5, 7], [3, 9] ];出力例const

  13. ソート済み配列から25%超出現する要素をJavaScriptで効率的に見つける方法

    問題概要本記事では、昇順にソートされた整数配列を受け取り、全体の4分の1(25%)を超える回数出現している整数を返すJavaScript関数を実装します。このような特別な出現頻度を持つ要素は、配列内にちょうど1つだけ存在することが保証されているため、工夫された探索戦略によって高速に答えを導き出せます。入力例と出力例たとえば、関数に次の配列を渡した場合を考えてみましょう。const arr = [3, 5, 5, 7, 7, 7, 7, 8, 9];期待される出力は以下の通りです。const output = 7;配列の長さは9なので、その4分の1は2.25です。7は合計4回出現しており、2.2

  14. JavaScriptで整数を分割して積を最大化する方法【動的計画法で解く】

    問題の概要整数 num を唯一の引数として受け取る JavaScript 関数を作成する必要があります。この関数の役割は、受け取った整数を少なくとも2つの部分に分割することです。分割後の各部分の合計は元の整数 num と一致し、かつ各部分を掛け合わせた積が最大になるようにします。最終的に、関数はこの最大の積を返します。例として、関数への入力が次の場合を考えてみましょう。const num = 10;このとき、期待される出力は以下の通りです。const output = 36;出力の解説10 は「3 + 3 + 4」に分解できます。これらを掛け合わせると 3 × 3 × 4 = 36 となり、こ

  15. JavaScriptで数値が4の累乗かどうかを判定する方法

    問題 整数 num を唯一の引数として受け取るJavaScript関数を作成する必要があります。この関数は、渡された数値が有効な4の累乗であるかどうかを判定し、4の累乗であれば true を、そうでなければ false を返します。 例えば、関数への入力が次の場合を考えてみましょう。 const num1 = 2356; const num2 = 16; このとき、期待される出力は次のとおりです。 const output1 = false; const output2 = true; 解決のアプローチ 4の累乗は 4⁰ = 1、4¹ = 4、4² = 16、4³ = 64 のように続きます

  16. JavaScriptでネストされた配列の加重和を計算する方法

    ```html 問題 任意の深さまでネストされた配列 arr を唯一の引数として受け取り、その加重和(weighted sum)を計算して返す JavaScript 関数を作成する必要があります。 加重和とは、各要素に「その要素が属するネストの深さ(レベル)」を掛けた値を、配列全体にわたって合計したものです。 入力例と出力例 たとえば、関数に次の配列を渡した場合を考えてみましょう。 const arr = [4, 7, [6, 1, [5, 2]]]; このとき、期待される出力は次のとおりです。 const output = 46; なぜ 46 になるのか? 最上位の要素はレベル1、その中

  17. JavaScriptで2進表現に含まれる1の個数を効率的に計算する方法

    問題JavaScriptで、引数として単一の整数 num を受け取る関数を作成することを考えてみましょう。この関数は、0から num まで(両端を含む)のすべての整数に対応する配列を生成し、各要素にはその数値の2進表現に含まれる「1」の個数を格納します。例えば、次の入力が与えられた場合:const num = 4;期待される出力は以下のとおりです:const output = [0, 1, 1, 2, 1];出力の説明0 の2進表現は「0」(1の個数:0個)、1 は「1」(1個)、2 は「10」(1個)、3 は「11」(2個)、4 は「100」(1個)となるためです。実装例const num

  18. JavaScriptで文字列を結合して回文(パリンドローム)ペアを見つける方法

    問題の概要 文字列の配列を引数として受け取るJavaScript関数を作成します。この関数は、配列内の文字列同士を結合したときに回文(パリンドローム)となるすべてのインデックスペアを、配列の配列として返す必要があります。 例えば、関数への入力が次のような場合を考えてみましょう。 const arr = [tab, cat, bat]; この場合、期待される出力は次のとおりです。 const output = [[0, 2], [2, 0]]; 出力の解説 これは、「battab」と「tabbat」がどちらも回文であるためです。つまり、インデックス0の「tab」とインデックス2の「bat」は、

  19. JavaScriptで増加するトリプレットが存在するか判定する方法

    増加数列とは各要素が直前の要素以上の値を持つ数列のことを「増加数列」と呼びます。例えば、次のような数列が挙げられます。4, 6, 8, 9, 11, 14 は増加数列です3, 3, 3, 3, 3, 3, 3 も増加数列です問題数値の配列 arr を唯一の引数として受け取るJavaScript関数を作成する必要があります。この関数は、配列内に「増加する3つの要素(トリプレット)」が存在するかどうかを判定して返します。例えば、関数への入力が次の場合 −const arr = [4, 1, 5, 7, 3, 1, 4];出力は次のようになります −const output = true;出力の説明

  20. 【JavaScript】配列に要素を追加して0〜numまでの全ての合計を作れる最小追加数を求める

    問題概要数値の配列 arr を第1引数、単一の数値 sum を第2引数として受け取る JavaScript 関数を作成します。配列に新しい要素を追加していき、[0, sum](両端を含む)の範囲の任意の合計値を、配列内のいくつかの要素を選んで足し合わせることで表現できるようにします。そして最終的に、この条件を満たすために配列へ追加が必要となる要素の最小個数を返します。入力例const arr = [1, 5, 10]; const sum = 20;出力例const output = 2;出力の解説配列に 2 と 4 の2つの数を追加すると、配列は [1, 2, 4, 5, 10] となり、こ

Total 5937 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:25/297  20-コンピューター/Page Goto:1 19 20 21 22 23 24 25 26 27 28 29 30 31