[質問バンクをスワイプ] Swordは、Offer_プログラミングの質問、値の整数乗、配列の順序の調整、およびマトリックスのカバーを指します。

1.値の整数乗。

タイトル説明

double型の浮動小数点ベースとint型の整数指数が与えられます。ベースの指数パワーを見つけます。

底と指数が同時に0でないことを確認してください

 

1.電源オペレーター

function Power(base, exponent)
{
    return base ** exponent;
}

2.チューニング

function Power(base, exponent)
{
    return Math.pow(base, exponent);
}

3.累積乗算

function Power(base, exponent)
{
    var result = 1.0;
    if(exponent == 0) return 1;
    else if(exponent > 0){
        for(var i = 0 ; i < exponent;i++){
            result *= base;
        }
    }else {
        for(var i = 0 ; i < (0-exponent);i++){
            result *= base;
        }
        result = 1/result;
    }
    return result;
}

次に、奇数が偶数の前になるように配列の順序を調整します

タイトル説明

整数配列を入力し、すべての奇数が配列の前半にあり、すべての偶数が配列の後半にあり、奇数間の相対値になるように、配列内の数値の順序を調整する関数を実装します。奇数、偶数、偶数が保証されます場所は変更されません。

 

スプレッド演算子

function reOrderArray(array)
{
    var even = [];  //定义一个存放偶数的数组
    var odd = [];  //定义一个存放奇数的数组

    for (var i = 0; i < array.length; i++) {
      if(array[i] % 2 == 0) even .push(array[i]);
      else odd.push(array[i]);
    }
    return [...odd,...even ]; 
}

3、マトリックスカバレッジ

タイトル説明

2 * 1の小さな長方形を水平または垂直に使用して、大きな長方形をカバーできます。大きな2 * nの長方形をn2 * 1の小さな長方形でオーバーラップせずにカバーする方法はいくつありますか?

アイデア:フィボナッチ数列

方法1:

function rectCover(number)
{
    if(number == 0) return 0;
    if(number == 1) return 1;
    if(number == 2) return 2;
     
    return rectCover(number - 1)+ rectCover(number - 2);
}

方法2:

function rectCover(number)
{
    var a = [];
    a[0] = 0;
    a[1] = 1;
    a[2] = 2;
    if(number < 3) return a[number];
    for(var i = 3 ; i <= number ; i++){
        a[i] = a[i - 1]+ a[i - 2];
    }
    return a[number];
}

方法3:

function rectCover(number)
{
    if(number == 0) return 0;
    var a = 0;
    var b = 1;
    while(number-- > 0){
        var t = b;
        b += a;
        a = t;
    }
    return b;
}

 

おすすめ

転載: blog.csdn.net/weixin_42339197/article/details/100183073