题目链接:https://leetcode-cn.com/problems/tvdfij/
分享个评论区的做法吧,感觉这种解法挺巧妙的。
class Solution {
public int pivotIndex(int[] nums) {
int sum=0,cur=0;
//求和
for(int i:nums) sum+=i;
for(int i=0;i<nums.length;i++){
sum-=nums[i];
//相等说明已经是中心下标
if(cur==sum) return i;
cur+=nums[i];
}
return -1;
}
}
然后是后缀和做法:
class Solution {
public int pivotIndex(int[] nums) {
//定义个数组,代表他后面所有数的和
int[] suffix = new int[nums.length];
//
for(int i=nums.length-2;i>=0;i--){
suffix[i] = nums[i+1] + suffix[i+1];
}
//再创建个变量,不断和前面数组的对应位置进行比较,如果相等,说明当前坐标就是对应的中间坐标
int prefix =0;
for(int i=0;i<nums.length;i++){
if(prefix == suffix[i]) return i;
prefix += nums[i];
}
return -1;
}
}