Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

バイナリJavaScriptでの1間の最長距離


正の整数、たとえばnでJavaScript関数を作成する必要があります。この関数は、nのバイナリ表現で隣接する2つの1の間の最長距離を見つけて返す必要があります。

隣接する1が2つない場合は、0を返す必要があります。

2つの1が隣接しているのは、それらを分離しているのが0しかない場合(おそらく0がない場合)です。 2つの1の間の距離は、それらのビット位置間の絶対差です。たとえば、「1001」の2つの1の距離は3です。

例-

入力が22の場合、出力は2になります

なぜなら、

  • 22のバイナリコードは10110です
  • 最初に隣接する1のペアは、距離2の「10110」です。
  • 2番目に隣接する1のペアは、距離1の「10110」です。
  • 答えは、これら2つの距離の中で最大の2です。

下線が引かれた2つの1を区切る1があるため、「10110」は有効なペアではないことに注意してください。

const num = 22;
const binaryGap = (num = 1) => {
   let last = -1;
   let ans = 0; // go through every bit
   for (let i = 0; i < 32; i++) {
      // check whether the bit is `1`. //
      if true, calculate the longest distance with
      // previous `1` if `1` was previously found.
      if ((num >> i) & 1 > 0) {
         if (last >= 0) {
            ans = Math.max(ans, i - last);
         }
         last = i;
      }
   }
   return ans;
};
console.log(binaryGap(num));

出力

そして、コンソールの出力は-

になります
2

  1. Javascriptの二分探索木

    二分探索木は特別な動作を示します。ノードの左の子はその親の値よりも小さい値である必要があり、ノードの右の子はその親の値よりも大きい値である必要があります。 このセクションでは、主にそのような木に焦点を当てます。 二分探索木の操作 二分探索木で次の操作を定義します- キーをツリーに挿入する ツリー内の順序どおりの走査 ツリーでトラバーサルを事前注文する ツリー内のポストオーダートラバーサル ツリー内の値の検索 ツリーで最小値を検索する ツリーで最大値を検索する ツリーのリーフノードを削除する

  2. Javascriptのバイナリツリー

    バイナリツリーは、データストレージの目的で使用される特別なデータ構造です。二分木には、各ノードが最大2つの子を持つことができるという特別な条件があります。バイナリツリーには、検索が並べ替えられた配列と同じくらい高速であり、挿入または削除操作がリンクリストと同じくらい高速であるため、順序付き配列とリンクリストの両方の利点があります。 これは、以下で説明するいくつかの用語を含む二分木の図です- 重要な用語 以下は、ツリーに関する重要な用語です。 パス −パスとは、ツリーのエッジに沿ったノードのシーケンスを指します。 ルート −ツリーの最上部にあるノードはルートと呼ばれます。ツ