配列インデックスの中心を見つけますLeetCode-

件名の説明:

整数型の配列NUMSを考えると、「センター指数」の配列を返すメソッドを記述してください。

配列インデックスの中央の左右側面上のすべての要素の合計とすべての要素の和に等しい:配列インデックスとして、我々は、中心が定義されています。

中央インデックス配列が存在しない場合、我々は返す必要があります-1。配列は、中央インデックスが複数ある場合は、我々は1つ左に最も近い返す必要があります。

例1:

入力: 
NUMS = [1、7,3 ,. 6 ,. 5 ,. 6]
出力:3
説明: 
インデックス3(NUMS [3] = 6 ) の左及び(1 + 7 + 3 = 11)の数、および右の及び辺の数(5 + 6 = 11)は等しいです。
一方、図3は、インデックスの要求に沿って第1の中心です。
例2:

入力: 
[1、2 ,. 3] NUMS =
出力:-1
説明: 
この条件が存在しないアレイの中央インデックスを満たします。

アイデア:逆思考の問題は、アレイ、統計のアレイ内のすべての数字の合計を反復処理するために使用することができます。次いで、アレイを介して、各要素がleftsumを横断し、付加価値を保持し、== leftsum * 2 + NUM [J]和を満たすまで、すなわち、インデックスjは、アレイの中心の指標です。

class Solution {
public:
    int pivotIndex(vector<int>& nums) {
        int leftsum = 0;
        int sum = 0;
        for(int i = 0;i < nums.size();i++)
        {
            sum += nums[i];
        }
        for(int j = 0;j < nums.size();j++)
        {
            if(leftsum * 2 + nums[j] == sum)
                return j;
            else
                leftsum += nums[j];
        }
        return -1;
    }
};

 

公開された120元の記事 ウォン称賛17 ビュー20000 +

おすすめ

転載: blog.csdn.net/tangya3158613488/article/details/104066186