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

題名

整数型の配列番号が与えられた場合、配列の「センターインデックス」を返すメソッドを記述します。

配列の中心インデックスを次のように定義します。配列の中心インデックスの左側にあるすべての要素の合計は、右側にあるすべての要素の合計に等しくなります。

配列に中央インデックスがない場合は、-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
説明:
配列にこの条件を満たすセンターインデックスがありません。

説明:

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

問題解決のアイデア

1.配列全体の合計を求めます
。2。合計が順番に累積される限り、累積合計* 2はステップ1の結果です-現在の配列要素を減算し
ます。3。ステップ2を満たさず、-を返します。配列の長さを超えた場合は1。

問題解決コード:

class Solution {
    
    
    public int pivotIndex(int[] nums) {
    
    
        if(nums.length==0)
            return -1;
 //首先计算数组全部的值
        int sum=0;
        for (int i = 0; i < nums.length; i++) {
    
    
            sum+=nums[i];
        }
        int asum=0;
        for (int i = 0; i < nums.length; i++) {
    
    
            if(asum*2==sum-nums[i])
                return i;
            /*if(asum*2>sum-nums[i])
                return -1;*/
            asum+=nums[i];
        }
        return -1;
    }
}

効果

info
		解答成功:
		执行耗时:2 ms,击败了55.66% 的Java用户
		内存消耗:39.3 MB,击败了27.92% 的Java用户

おすすめ

転載: blog.csdn.net/tangshuai96/article/details/113311141