JavaScript

 Computer >> コンピューター >  >> プログラミング >> JavaScript
  1. JavaScriptでダブルトン数(Doubleton Number)を判定する方法

    ダブルトン数とは 自然数のうち、ちょうど2種類の異なる数字のみで構成されている数を「ダブルトン数(doubleton number)」と呼びます。 例えば、以下の数はダブルトン数です。 23(「2」と「3」の2種類) 35(「3」と「5」の2種類) 100(「1」と「0」の2種類) 12121(「1」と「2」の2種類) 一方、123 は「1」「2」「3」の3種類、9980 は「9」「8」「0」の3種類の数字を含むため、ダブルトン数ではありません。 課題 数値を1つ受け取り、それがダブルトン数であれば true を、そうでなければ false を返すJavaScript関数を作成します。

  2. JavaScriptで組み込み関数を使わずに数値を文字列へ変換する方法

    問題数値 n を引数として受け取り、それを対応する文字列に変換して返す JavaScript 関数を記述します。ただし、組み込み関数である String() や toString() を使用することは禁止されており、さらに文字列連結(+ 演算子による結合)も使えないという制約が課されています。アプローチの考え方この問題を解く鍵となるのは、数値の各桁を一つずつ取り出して処理するという発想です。具体的には以下の手順で行います。まず、10 で割った余りを求めることで、数値の一番下の桁(一の位)を取得します。次に、Math.floor() を使って数値を 10 で割り、処理済みの桁を切り捨てます。この

  3. JavaScriptで月の番号から四半期を求める方法

    問題1始まりの月の番号(1〜12)を受け取り、その月が属する四半期を返すJavaScript関数を作成する必要があります。一般的に四半期は以下のように区分されます。第1四半期(Q1):1月〜3月第2四半期(Q2):4月〜6月第3四半期(Q3):7月〜9月第4四半期(Q4):10月〜12月コード例以下は、if文を使って実装した基本的なコードです。 {   if (month <= 3) {     return 1;   } else if (month <= 6) {     

  4. JavaScriptで複数の文字列に共通する文字を重複込みで抽出する方法

    問題文字列の配列 arr を第一引数(かつ唯一の引数)として受け取るJavaScript関数を作成することを考えます。この関数の役割は、配列内のすべての文字列に出現する文字を抽出し、それらを配列として返すことです。重複も含めて扱う必要がある点に注意してください。たとえば、ある文字がすべての文字列の中で2回ずつ出現している場合(3回ではない場合)、最終的な結果にもその文字を2回だけ含めます。入力と出力の例たとえば、関数への入力が次のような場合を考えてみましょう。const arr = [door, floor, crook];r は3つの文字列すべてに1回ずつ現れ、o は door に2回、fl

  5. 【JavaScript】腐ったトマトが全体に広がるまでの最小時間を求める問題をBFSで解く

    問題概要 数値の2次元配列 arr を唯一の引数として受け取る JavaScript の関数を作成します。配列の各セルには、以下のいずれかの値が格納されています。 0 … 空のセル 1 … 新鮮なトマト 2 … 腐ったトマト 毎分、腐ったトマトと上下左右(4方向)で隣接している新鮮なトマトは腐っていきます。 この関数は、新鮮なトマトが1つも残らなくなるまでにかかる最小の経過時間(分)を返す必要があります。もしすべてのトマトを腐らせることが不可能な場合は、代わりに -1 を返してください。 入力例 const arr = [     [2, 1, 1

  6. JavaScriptで異なる要素をちょうどn個含む部分配列の数を求める方法

    問題リテラル値からなる配列 arr を第1引数に、整数 num を第2引数に受け取る JavaScript の関数を作成する必要があります。この関数は、元の配列の中から「異なる要素をちょうど num 個含む連続した部分配列(サブ配列)」の個数を数え、その結果を返します。たとえば、関数への入力が次の場合を考えてみましょう。const arr = [12, 15, 12, 15, 18]; const num = 2;このとき、出力は次のようになります。const output = 7;出力の解説「異なる要素がちょうど 2 個」となる部分配列は、以下の 7 つです。[12,15], [15,12]

  7. JavaScriptでmからnに到達するための最小操作回数を求めるアルゴリズム

    問題2つの数値 m と n を引数として受け取るJavaScript関数を作成します。関数は、m の状態から開始して n に到達するまでに必要な最小の操作回数を求めて返します。使用できる操作は、次の2つだけです。2倍(Double) – 表示中の数値を2倍するデクリメント(Decrement) – 表示中の数値から1を引くたとえば、次のように関数を呼び出した場合を考えてみましょう。const m = 5;const n = 8;この場合の出力は次のようになります。const output = 2;出力の解説m = 5 から n = 8 へは、次の手順で2回の操作で到達できます。5 → 4 →

  8. JavaScriptで等式の整合性を検証する方法:Union-Findを使った実装解説

    問題概要配列 arr を唯一の引数として受け取るJavaScript関数を作成する必要があります。配列 arr の各要素は、次の2種類のいずれかの形式で表された文字列の等式です。X===YX!==Yここで、X と Y は任意の変数を表します。この関数の目的は、配列内のすべての等式に対して適切な値を各変数に割り当てたとき、すべての等式が同時に成立(true)となるような割り当てが存在するかどうかを判定することです。入力例const arr = [X===Y, Y!==Z, X===Z];出力例const output = false;出力の解説X、Y、Z にどのような値を選んでも、3つの等式すべ

  9. JavaScriptで2つの区間配列の共通部分を求める方法【2ポインタ法】

    問題概要本記事では、2つの区間(インターバル)配列を受け取り、その共通部分を返すJavaScript関数を実装します。入力となる配列 arr1 と arr2 には以下の前提があります。各区間は互いに重なり合わない(pairwise disjoint)各区間はソートされた順序で格納されている閉区間 [a, b](a ≤ b)は、a ≤ x ≤ b を満たす実数 x の集合を表します。また、2つの閉区間の共通部分(積集合)は、空集合になるか、あるいは1つの閉区間として表現できます。例えば、[1, 3] と [2, 4] の共通部分は [2, 3] です。入力例const arr1 = [[0,2]

  10. JavaScriptでソート済み配列の各要素の二乗を昇順に求める方法

    問題昇順にソートされた整数の配列 arr を引数として受け取るJavaScript関数を作成する必要があります。この関数は、各数値の二乗を計算し、それらも昇順に並べ替えた配列として返さなければなりません。例えば、関数への入力が次のような場合 −const arr = [-2, -1, 1, 3, 6, 8];出力は次のようになります −const output = [1, 1, 4, 9, 36, 64];解法のポイント:二ポインタ法この問題は二ポインタ(Two Pointers)と呼ばれる手法を使うと効率的に解けます。元の配列が昇順にソートされているため、負の数でも絶対値が大きいほど二乗した

  11. JavaScriptで「nで割り切れる部分配列の合計」を求める方法

    問題の概要JavaScriptで、第一引数として数値の配列 arr を、第二引数として数値 num を受け取る関数を作成する必要があります。この関数は、要素の合計が num で割り切れるような連続した(コンティギュアスな)非空の部分配列の個数を返します。たとえば、関数への入力が次の場合を考えてみましょう。const arr = [4, 5, 0, -2, -3, 1]; const num = 5;この場合、出力は次のようになります。const output = 7;出力の解説合計が5で割り切れる部分配列は、以下の7つ存在します。[4, 5, 0, -2, -3, 1], [5], [5, 0

  12. JavaScriptで原点に最も近い座標ポイントを見つける方法

    この記事では、JavaScriptを使って「原点(0, 0)に最も近い座標ポイント」を効率よく見つける方法を解説します。配列操作とユークリッド距離の計算を組み合わせた、シンプルかつ実用的なアルゴリズムを紹介します。問題の定義まず、次のような要件を持つJavaScript関数を作成します。第1引数として、複数の座標を格納した配列 arr を受け取る第2引数として、取得したいポイントの数 num を受け取る原点 (0, 0) から num 番目まで近いポイントを見つけて返すなお、平面上の2点間の距離はユークリッド距離(直線距離)を使用します。ユークリッド距離は次の式で求められます。distance

  13. JavaScriptで二分探索木が一値(Univalued)かどうかを判定する方法

    一値二分探索木(Univalued Binary Search Tree)とは?一値二分探索木(Univalued Binary Search Tree)とは、木を構成するすべてのノードが同じ値を持つ二分探索木(BST:Binary Search Tree)のことです。全ノードの値が完全に一致していれば「一値」とみなされ、ひとつでも異なる値が混ざっていれば「一値ではない」と判断されます。問題の概要今回求められているのは、二分探索木のルートノードを引数として受け取り、その木が一値である場合にのみ true を返し、そうでなければ false を返すJavaScript関数を作成することです。たと

  14. JavaScriptで指定範囲内の連続数字をすべて見つける方法

    連続数字(Sequential Digits)とは? 「連続数字」とは、数値の各桁がひとつ前の桁よりもちょうど1大きくなっている数のことです。たとえば 1234、5678、12345 のように、左から右へ向かって数字が順番に増えていくという特徴を持ちます。 問題の定義 今回は、範囲を指定する2つの要素からなる配列 arr を引数として受け取るJavaScript関数を作成します。 この関数は、指定された範囲内(両端を含む)に存在する連続数字の整数をすべて抽出し、昇順に並べ替えた配列として返す必要があります。 たとえば、次のような入力が与えられた場合を見てみましょう。 const arr =

  15. JavaScriptで解くバナナ配布問題:配列を使った実装方法を解説

    問題 n人が一列に並んでいるとします。この人たちに対して、次のルールに従ってバナナを配布していきます。 まず、1人目に1本、2人目に2本…というように順番に渡し、n人目にn本を渡します。 次に、列の先頭に戻り、1人目にn+1本、2人目にn+2本…というように渡し、n人目に2n本を渡します。 このプロセスを、バナナがなくなるまで繰り返します(毎回渡す本数を1本ずつ増やし、列の末尾に達したら先頭に戻ります)。途中でバナナが足りなくなった場合は、残りの本数をすべてその時点の相手に渡します。 ここで求められているのは、人数 num を第1引数、バナナの総本数 m を第2引数として受け取るJava

  16. JavaScriptで2つの二分探索木(BST)のノード値の合計が目標値に一致するか判定する方法

    問題 JavaScriptの関数を作成します。この関数は、第1引数として1つ目の二分探索木のルートroot1を、第2引数として2つ目の二分探索木のルートroot2を受け取り、さらに第3引数として整数targetを受け取ります。 この関数は、「1つ目の木の中のあるノード」と「2つ目の木の中のあるノード」の値を足し合わせた結果がtargetと一致するようなペアが存在する場合にのみtrueを返し、存在しない場合はfalseを返す必要があります。 たとえば、次のような入力が与えられたとします。 const target = 23; 2つのBSTの例 この場合の出力は次のようになります。 const

  17. JavaScriptで配列要素を再配置!隣接する重複をなくす並べ替えアルゴリズム

    問題 リテラル値からなる配列 arr を第一引数(唯一の引数)として受け取るJavaScriptの関数を作成します。この配列には、隣接して並んでいる重複した値がいくつか含まれています。 関数の役割は、隣り合う2つの要素が同じ値にならないように配列の要素を並べ替えることです。ただし、そのような並べ替えが少なくとも1つは存在することが保証されているものとします。関数は再配置後の配列を返します。 たとえば、関数への入力が次の場合を考えてみましょう。 const arr = [7, 7, 7, 8, 8, 8]; このとき、期待される出力は次のとおりです。 const output = [7, 8,

  18. JavaScriptで解く「最長の文字列チェーン」:動的計画法による実装と解説

    文字列チェーン(Word Chain)とは ある単語 word1 の任意の位置にちょうど1文字を追加することで word2 と一致させられるとき、word1 は word2 の「先行語(predecessor)」であると定義します。たとえば、「abc」に「a」を挿入すると「abac」になるため、「abc」は「abac」の先行語です。 文字列チェーンとは、[word_1, word_2, ..., word_k](k >= 1)という単語の列で、word_1 が word_2 の先行語、word_2 が word_3 の先行語、という関係が順番に成り立つものを指します。 問題の概要 文字

  19. 【初心者向け】JavaScriptで文字列から隣接する重複文字を削除する方法

    問題文字列 str を唯一の引数として受け取る JavaScript 関数を作成します。ここでいう「重複の削除」とは、隣接する2つの同じ文字を選び、それらを取り除く操作を指します。この操作を文字列 str に対して繰り返し実行し、それ以上削除できる箇所がなくなるまで続けます。最終的に、すべての重複削除が完了した後の文字列を関数から返します。たとえば、関数への入力が以下だった場合:const str = kllkmk;出力は次のようになります:const output = mk;出力の解説まず文字列から「ll」を削除して「kkmk」にし、続けて「kk」を削除することで、最終的な文字列「mk」が得

  20. JavaScriptで連結リストの各ノードの「次に大きい値」を効率的に求める方法

    問題概要JavaScriptで、連結リストの先頭ノード(head)を唯一の引数として受け取る関数を作成することを考えます。この連結リストには数値データが格納されており、リスト内の各ノードには「次に大きい値(next larger value)」が存在する場合があります。ノードiに対して next_larger(node_i) とは、j > i かつ node_j.val > node_i.val を満たすノードの中で、j が最小になるような node_j.val のことです。そのような j が存在しない場合、次に大きい値は 0 となります。つまり私たちの関数は、リスト内の各要素に対

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