寻找数组的中心索引
思路:
左边总和和右边总和如果相等。那么两边总和中间那个共同拥有的数,就是这个数组的中间索引。也就是nums[i]
如果循环结束,都没有中间索引,则返回-1
代码实现:
package 数据结构.数组;
public class 寻找数组中心索引 {
public static void main(String[] args) {
Solution02 solution02 = new Solution02();
int[] arr = {2,1,-1};
System.out.println(solution02.pivotIndex(arr));
}
}
class Solution02 {
public int pivotIndex(int[] nums) {
int sum =0;
for (int i = 0; i < nums.length; i++) {
sum=sum+nums[i]; //将数组全部加起来
}
int leftSum = 0; //左边的数组和
int rightSum = 0; //右边的数组和
for (int i = 0; i < nums.length; i++) {
leftSum = leftSum +nums[i];
rightSum = sum - leftSum +nums[i]; //为什么加上num[i],看上面的解析
if (leftSum == rightSum) return i;
}
return -1;
}
}
这是运行情况: