題名
整数型の配列番号が与えられた場合、配列の「センターインデックス」を返すメソッドを記述します。
配列の中心インデックスを次のように定義します。配列の中心インデックスの左側にあるすべての要素の合計は、右側にあるすべての要素の合計に等しくなります。
配列に中央インデックスがない場合は、-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用户