バイナリ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
-
Javascriptの二分探索木
二分探索木は特別な動作を示します。ノードの左の子はその親の値よりも小さい値である必要があり、ノードの右の子はその親の値よりも大きい値である必要があります。 このセクションでは、主にそのような木に焦点を当てます。 二分探索木の操作 二分探索木で次の操作を定義します- キーをツリーに挿入する ツリー内の順序どおりの走査 ツリーでトラバーサルを事前注文する ツリー内のポストオーダートラバーサル ツリー内の値の検索 ツリーで最小値を検索する ツリーで最大値を検索する ツリーのリーフノードを削除する
-
Javascriptのバイナリツリー
バイナリツリーは、データストレージの目的で使用される特別なデータ構造です。二分木には、各ノードが最大2つの子を持つことができるという特別な条件があります。バイナリツリーには、検索が並べ替えられた配列と同じくらい高速であり、挿入または削除操作がリンクリストと同じくらい高速であるため、順序付き配列とリンクリストの両方の利点があります。 これは、以下で説明するいくつかの用語を含む二分木の図です- 重要な用語 以下は、ツリーに関する重要な用語です。 パス −パスとは、ツリーのエッジに沿ったノードのシーケンスを指します。 ルート −ツリーの最上部にあるノードはルートと呼ばれます。ツ