JavaScript

 Computer >> コンピューター >  >> プログラミング >> JavaScript
  1. 【JavaScript】各桁の積と合計の絶対差を求める方法

    概要 JavaScriptでは、正の整数を唯一の引数として受け取る関数を作成できます。この関数は、まずその数値の各桁の合計を計算し、次に各桁の積を計算します。そして最後に、積と合計の絶対差を結果として返します。 具体例 入力する数値が次の場合: const num = 12345; 各桁の合計は 1 + 2 + 3 + 4 + 5 = 15、各桁の積は 1 × 2 × 3 × 4 × 5 = 120 となります。したがって、絶対差は |120 − 15| = 105 となり、出力は次のようになります。 const output = 105; コード例 実際のコードは以下の通りです。 {

  2. JavaScriptで同じ文字だけを含む部分文字列の数を効率よく数える方法

    本記事では、文字列を唯一の引数として受け取り、その中に含まれる「たった1種類の文字だけで構成された連続する部分文字列」の総数を数えるJavaScript関数を作成します。作成した関数は、条件を満たす部分文字列の個数を返します。問題の概要例として、入力文字列が次のようになっている場合を考えてみましょう。const str = iiiji;このとき、期待される出力は次の通りです。const output = 8;理由は、条件を満たす部分文字列が以下の8つ存在するためです。iii, i, i, i, i, j, ii, ii解法の考え方この問題はランレングス(連続する同一文字のかたまり)に着目すると

  3. 【JavaScript】昇順ソート済み配列を最大値・最小値が交互になるように並べ替えるアルゴリズム

    問題の概要昇順にソート済みの整数配列が与えられたとします。ここで、組み込みの Array.prototype.sort() メソッドを使わずに、次のような規則で配列を並べ替えるJavaScript関数を作成することを考えます。1番目の要素は最大値2番目の要素は最小値3番目の要素は2番目に大きい値4番目の要素は2番目に小さい値以降も同様に、大きい値と小さい値を交互に並べる入出力の例入力配列が次の場合を考えてみましょう。const arr = [1, 2, 3, 4, 5, 6];このとき、期待される出力は次のとおりです。const output = [ 6, 1, 5, 2, 4, 3 ];最大

  4. JavaScriptでマトリックス内の単語を検索する方法(DFS+バックトラッキング)

    問題の概要 文字の配列を要素とする2次元配列(マトリックス)を第1引数に、文字列を第2引数として受け取るJavaScript関数を作成する必要があります。 関数の役割は、マトリックス内に存在する文字の中から重複なく選んだ組み合わせによって、第2引数で渡された文字列が作れるかどうかを判定することです。具体的には、縦・横に隣接するセルをたどって目的の単語が完成するかを確認します。 そのような組み合わせが存在すればtrueを、存在しなければfalseを返します。 入力例 たとえば、入力の配列と文字列が次のようなケースを考えてみましょう。 const arr = [ [s, d, k, e],

  5. JavaScriptで配列のすべての部分集合(サブセット)を取得する方法

    リテラル値を要素とする配列を第1引数(唯一の引数)として受け取り、元の配列から生成できるすべての部分配列(サブセット)を含む配列を構築して返すJavaScript関数を作成します。要件の確認例えば、入力配列が次のような場合を考えてみましょう。const arr = [1, 2, 3];この場合、期待される出力は次のようになります。const output = [ [2], [1], [3], [1,2,3], [2,3], [1,2], [1, 3], [] ];なお、部分配列が出力される順序は特に問いません。n個の要素を持つ配列

  6. JavaScriptで配列内の最長の連続する数列の長さを求める方法

    問題の概要 JavaScriptで、整数の配列を引数として受け取る関数を作成します。この関数は、配列内に存在する最長の連続する数列(シーケンス)の長さを見つけて返す必要があります。ここでいう「連続」とは、数値が1ずつ増加して並んでいることを意味し、要素が配列内で隣接しているかどうか(連続配置か非連続配置か)は問いません。 たとえば、入力配列が次の場合を考えてみましょう。 const arr = [4, 6, 9, 1, 2, 8, 5, 3, -1]; このとき出力は 6 になります。最も長い連続する数列が 1, 2, 3, 4, 5, 6 であり、その長さが6だからです。 アプローチ:ハッ

  7. JavaScriptで最大積となる部分配列を求めるアルゴリズム

    問題概要JavaScriptで、整数(正と負の両方)を含む配列を唯一の引数として受け取る関数を書く必要があります。この関数は、配列内の連続した要素からなる部分配列のうち、積が最大になるものを見つけ出し、その積を返します。例えば、次のような入力配列が与えられたとします。const arr = [4, -5, 2, -3, 1, -4, 0, -3];この場合、出力は次のようになります。const output = 120これは、部分配列 [4, -5, 2, -3] の積が 4 × (-5) × 2 × (-3) = 120 となり、これがすべての部分配列の中で最大の積だからです。負の数が偶数個

  8. JavaScriptで回転ソート配列から最小要素を二分探索で効率的に求める方法

    問題の概要整数の配列を引数として受け取るJavaScript関数を作成する必要があります。この配列は、まず昇順にソートされ、その後任意の数だけ回転(ローテート)されたものです。私たちの関数は、この配列の中から最小の要素を見つけて返す必要があります。ただし、重要な条件があります。それは線形時間未満(O(n)より速い)で処理を完了しなければならないという点です。この要件を満たすために、二分探索アルゴリズムを応用した手法を使用します。例入力配列が次の場合:const arr = [6, 8, 12, 25, 2, 4, 5];この配列は [2, 4, 5, 6, 8, 12, 25] を3要素分回転

  9. JavaScriptで隣接する要素よりも大きい「ピーク要素」を検索する方法

    本記事では、数値の配列を第1引数(唯一の引数)として受け取るJavaScript関数を作成します。この関数の役割は、配列の中から「すぐ左隣の要素」と「すぐ右隣の要素」のどちらよりも大きい値(いわゆるピーク要素)を見つけて返すことです。該当する要素が複数存在する場合は、そのうちのどれか1つを返せば問題ありません。例として、次のような入力配列が与えられた場合を考えてみましょう。const arr = [3, 6, 7, 9, 8, 2, 5];このとき期待される出力は次のとおりです。const output = 9;9は左隣の7よりも大きく、右隣の8よりも大きいため、条件を満たす要素だからです。二

  10. JavaScriptで文の最後から2番目の単語の文字数を求める方法

    問題の概要「文」とは、空白(ホワイトスペース)で区切られた複数の文字列――いわゆる「単語」――が連結されてできた文字列のことです。本記事では、文を表す文字列を1つ受け取り、その最後から2番目の単語に含まれる文字数を返す JavaScript 関数を作成します。また、文字列に含まれる単語が2個以下の場合は 0 を返すものとします。入力例const str = this is an example string;出力例const output = 7;出力が 7 になるのは、最後から2番目の単語である「example」の文字数が7だからです。実装のアイデアsplit() メソッドを使い、文を空白で

  11. JavaScriptでソート済み配列から目標の合計値になる2つの数値を検索する方法

    問題の概要昇順にソートされた整数の配列が与えられているとします。ここで求められるのは、この配列を第1引数として、目標となる合計値(target)を第2引数として受け取るJavaScript関数を実装することです。関数は、配列の中から「足し合わせると目標の合計値と一致する2つの数値」を見つけ出して返す必要があります。この問題を解く上での制約条件は次のとおりです。計算量は線形時間 O(n) であること使用するメモリは定数空間 O(1) であること解決アプローチ:ツーポインター法配列がすでにソートされているという前提条件があるため、この問題はツーポインター(Two Pointers)と呼ばれるテクニ

  12. JavaScriptで文字列内の最初の「重複しない文字」のインデックスを検索する方法

    問題の概要 今回は、文字列を唯一の引数として受け取る JavaScript関数を作成します。この関数が満たすべき要件は以下の通りです。 文字列の中で一度だけ出現する最初の文字を見つけ、そのインデックスを返す 一意な文字(重複していない文字)がひとつも存在しない場合は -1 を返す 入力例 const str = hellohe; この文字列の場合、「o」が最初に登場する位置はインデックス4なので、期待される出力は次のようになります。 const output = 4; 解決のアプローチ この問題は、以下の手順で効率よく解くことができます。 1回目の走査:各文字について「出現回数」と「最初

  13. JavaScriptで数値変換なしに文字列で表された数値同士を足し算する方法

    JavaScriptでは、2つの数値を表す文字列 str1 と str2 を受け取り、それらの合計を求める関数を作成する必要があります。 ここでのポイントは、Number() や parseInt() を使って文字列全体を一括で数値に変換することなく、合計を計算し、その結果を文字列として返すことです。 この手法は、Number.MAX_SAFE_INTEGER を超えるような非常に大きな数値を扱う場合に特に有効です。通常の数値型では精度の問題が発生しますが、文字列のまま1桁ずつ計算すれば、どれほど大きな桁数でも正確な結果を得られます。 例 たとえば、次のような2つの文字列が与えられたとします。

  14. JavaScriptで配列の合計を指定の数で割り切れるようにする、削除すべき最小の部分配列の求め方

    本記事では、第一引数に正の整数の配列、第二引数に正の整数を受け取るJavaScript関数を実装します。この関数の目的は、元の配列から削除すべき最小の部分配列(連続する要素)の長さを求めて返すことです。削除後の残りの要素の合計が、第二引数で指定された数で割り切れる状態になる必要があります。 問題の例 たとえば、次のような入力が与えられたとします。 const arr = [3, 8, 2, 6]; const num = 9; 配列全体の合計は 3 + 8 + 2 + 6 = 19 であり、これを 9 で割ると余りは 1 になります。ここで部分配列 [8, 2] を削除すると、残りの合計は 3

  15. JavaScriptで「全ての文字がn回以上出現する最長部分文字列」の長さを求める方法

    問題の概要本記事では、JavaScriptで以下のような関数を実装する方法を解説します。この関数は、第1引数として文字列を、第2引数として正整数 n を受け取ります。与えられる文字列には、同じ文字が繰り返し含まれている可能性があります。関数の目的は、元の文字列から「すべての文字が少なくとも n 回出現している」部分文字列のうち最も長いものを見つけ出し、その長さを返すことです。例えば、次のような入力を考えてみましょう。const str = kdkddj; const num = 2;この場合、期待される出力は次のようになります。const output = 5;理由は簡単です。条件を満たす最長

  16. JavaScriptで文字列を配列の指定順序どおりにシャッフルする方法

    本記事では、文字列 str を第一引数として、それと同じ長さの正の整数の配列 arr を第二引数として受け取る JavaScript 関数の実装方法を解説します。この関数は、文字列内の文字を並べ替え(シャッフル)し、i 番目の位置にある文字が、シャッフル後の文字列の arr[i] 番目の位置へ移動するようにします。入力例と期待される出力たとえば、次の文字列と配列が与えられたとします。const str = example; const arr = [5, 2, 0, 6, 4, 1, 3];この場合、期待される出力は次のとおりです。const output = alxepem;各文字がどのよう

  17. JavaScriptで要素の出現頻度に基づいて配列を並べ替える方法

    概要本記事では、リテラルの配列を第一引数(唯一の引数)として受け取るJavaScript関数を作成します。対象となる配列には同じ値が繰り返し含まれている可能性があり、作成する関数は出現頻度が低い値ほど前へ、出現頻度が高い値ほど後ろへ配置するように配列を並べ替えるものです。要件の確認たとえば、入力配列が次のような場合を考えてみましょう。const arr = [4, 7, 3, 5, 5, 4, 7, 9, 2, 1, 5, 7, 5, 5, 9];このとき、期待される出力配列は以下のとおりです。const output = [     3, 2, 1,

  18. JavaScriptで文章内の単語を文字数順に並べ替える方法

    本記事では、文章(センテンス)を引数として受け取り、含まれる単語を文字数の少ない順に並べ替えるJavaScript関数の実装方法を詳しく解説します。 問題の概要 ここで扱う「文章」とは、半角スペースで区切られた複数の単語からなる文字列のことです。作成する関数は、この文章を第一引数(唯一の引数)として受け取ります。 求められる処理は、最も文字数が少ない単語を先頭に配置し、以降は文字数が大きい順に並べ替えるというものです。同一文字数の単語が存在する場合は、元の文章での出現順序を維持する必要があります。 入出力の例 例えば、入力が次の文字列だったとします。 const str = this is a

  19. JavaScriptで指定した数より大きい最小の素数を求める方法

    本記事では、正の整数を第一引数(かつ唯一の引数)として受け取るJavaScript関数の作成方法を解説します。この関数の目的は、引数として渡された数値よりも大きい数の中から、最小の素数を見つけることです。例たとえば、入力が次の場合:const num = 18;期待される出力は次のとおりです。const output = 19;18より大きい最小の素数は19であるため、結果は19になります。コード例以下が実際のコードです。const num = 18; const justGreaterPrime = (num) => { for (let i = num + 1;; i++)

  20. JavaScriptで数値の先頭n桁の合計を求める方法

    今回は、2つの数値 m と n を引数として受け取るJavaScript関数を作成します。n は常に m の桁数以下であると仮定します。この関数の役割は、m の先頭から n 桁目までの各桁の数字を合計し、その結果を返すことです。問題の例たとえば、入力が次のような場合を考えてみましょう。const m = 5465767; const n = 4;このとき、出力は次のようになります。const output = 20;理由は簡単で、m の先頭4桁が「5, 4, 6, 5」であり、その合計は 5 + 4 + 6 + 5 = 20 となるためです。実装コードそれでは、実際のコードを見ていきましょう。

Total 5937 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:34/297  20-コンピューター/Page Goto:1 28 29 30 31 32 33 34 35 36 37 38 39 40