js-勝利はタイトルのレコードがブラシ(完全コード)を提供します

いくつかの正方形の1正の値

ダブル基本型と浮動小数点型int型の整数の指数を考えます。パワーベースの指数を求めて。

ベースと指数が同時にではないことを確認0

私の解決策

Math.pow(x,y)??
function Power(base, exponent)
{
        let r = 1
        while(exponent--){
            r*=base
        }
        return r
}

その他の分析

あなたは、問題の理解を参照してください場合は、上記のアプローチはしないだろう。べき乗電力は花を再生することができます。
高速電力
以下のようにBaiduの百科事典は、より直感的なインターフェースを説明し
ここに画像を挿入説明
ているが、1のコンピューティングパワー、2のパワー及び8のパワー、および、行を乗算する限り、11の計算された電力です。私たちは、ビット1つの指数のバイナリ表現を見つけるために必要な
プロセスを

  • 指数番号が0にシフトされ、サイクルが停止されます

    • ときexponent & 1 == 0の時間、res = res*x
    • x = x*x
    • exponet正しいものの数

    ここに画像を挿入説明

function Power(base, exponent)
{
    let res = 1
    let n
    if(exponent==0){
        return 1
    }else if(exponent<0){   //指数为负
        n = -exponent
    }else{
        n = exponent
    }
    
    while(n){
        if(n&1){
            res *=base 
        }
        base *=base  //这里注意!!!
        n = n >>1
    }
    return exponent>0 ? res:1/res
}

偶奇の前になるようにアレイの順序を調整2.

アレイ内の数字の順序を調整する機能を実現するために、整数の配列を入力し、そのようなアレイの前半のすべての奇数一部こと、全ての偶数列の後半に位置し、奇数の間と比較的偶数、奇数とを確保されています同じ位置。

私の解決策

最初のアイデア:反復は、その後も、数がプッシュの終わりに、配列から削除されますが発生しました。
しかし!アレイの端が奇数の場合、すなわち、偶数サイクル、続いて、全ての偶数端にプッシュを有する、アレイを通して完成配列を破壊しません。

function reOrderArray(array)  //错错错
{
    for(let i = 0;i<array.length;i++){
        if(array[i]%2 ==0){
            let tmp = array[i]
            array.splice(i,1)
            array.push(tmp)
        }
    }
    return array
}

方法をしたい:反復偶数、空の配列、オリジナルのステッチと空の配列の配列に。
しかし!私たちも、-でもトップフロントの後ろに削除されたとき、連続した偶数に会ったこの1つの契約に残るはずですが、私++、さらにはスキップされた上で

function reOrderArray(array) //错错错
{
    let arr = []
    for(let i = 0;i<array.length;i++){  //循环出问题了
        if(array[i]%2 ==0){
            let tmp = array[i]
            array.splice(i,1)
            arr.push(tmp)
        }
    }
    return array.concat(arr)
}

究極厄介:2つの空の配列、奇数の場所、場所偶数番号。二つの配列のスプライシング、オーバー通過後。

 function reOrderArray(array)  //对了
{
    let arr1 = []
    let arr2 = []
    for(let i = 0;i<array.length;i++){
        if(array[i]%2 ==0){
            arr2.push(array[i])
        }else{
            arr1.push(array[i])
        }
    }
    return arr1.concat(arr2)
}

実際には、理由は、エラーが発生したときに横断するビットによって元の配列、ビットを変更ときに、2つの前の問題は、アレイトラバーサルに近づくことです。

公開された21元の記事 ウォンの賞賛0 ビュー177

おすすめ

転載: blog.csdn.net/adrenalineiszzz/article/details/104842552