(Js)Leetcode724。配列の中心インデックスを見つけます

トピック:

整数の配列numsが与えられた場合、配列の「センターインデックス」を返すメソッドを記述してください。

配列の中央のインデックスは配列のインデックスであり、左側のすべての要素の合計は、右側のすべての要素の合計に等しくなります。

センターインデックスが配列に存在しない場合は、-1が返されます。配列に複数の中央インデックスがある場合は、左に最も近いものを返す必要があります。

注:中央のインデックスは、配列の両端に表示される場合があります。

 

例1:

入力:nums = [1、7、3、6、5、6]
出力:3
説明:
インデックス3(nums [3] = 6)の左側の合計(1 + 7 + 3 = 11)、および右サイド番号の合計(5 + 6 = 11)は等しい。
同時に、3は要件を満たす最初のセンターインデックスでもあります。
例2:

入力:nums = [1、2、3]
出力:-1
説明:
配列にこの条件を満たすセンターインデックスがありません。
例3:

入力:nums = [2、1、-1]
出力:0
説明:
インデックス0の左側に要素がなく、合計は0と見なされます。右側の数値の合計は1 +( -1)= 0であり、2つは等しい。
例4:

入力:nums = [0、0、0、0、1]
出力:4
説明:
インデックス4の左側の数値合計は0です。右側に要素はなく、合計は0と見なされます。そして2つは等しい。
 

促す:

numsの長さの範囲は[0、10000]です。
nums [i]は、[-1000、1000]の範囲の整数になります。

アイデア:

プレフィックスと

公式アイデアを見るには

コード:

/**
 * @param {number[]} nums
 * @return {number}
 */
var pivotIndex = function(nums) {
    const total = nums.reduce((a, b) => a + b, 0);
    let sum = 0;
    for (let i = 0; i < nums.length; i++) {
        if (2 * sum + nums[i] === total) {
            return i;
        }
        sum += nums[i];
    }
    return -1;
};

演算結果:

おすすめ

転載: blog.csdn.net/M_Eve/article/details/113361220