寻找数组的中心下标
100 Words|Read in about 1 Min|本文总阅读量次
寻找数组的中心下标。采用双指针。
寻找数组的中心下标
给定一个整数数组nums
,请编写一个能够返回数组“中心下标”
的方法。
中心下标是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。
如果数组不存在中心下标,返回-1。如果数组有多个中心下标,应该返回最靠近左边的那一个。
注意:中心下标可能出现在数组的两端。
示例:
1输入:[1, 7, 3, 6, 5, 6]
2输出:3
思路
这里用到了双指针思路
- 数组中某一个下标,左右两边的元素之后相等,该下标即为中心索引
- 先统计出整个数组的总和,然后从第一个元素开始叠加,总和递减当前元素,叠加递增当前元素,
- 直到两个值相等
解题
1public static int pivotIndex(int[] nums)
2{
3 int sum = 0;
4 for(int i = 0; i < nums.length; i++)
5 {
6 sum += nums[i];
7 }
8 int total = 0;
9 for(int i = 0; i < nums.length; i++)
10 {
11 total += nums[i];
12 if(sum == total)
13 return i;
14 sum -= nums[i];
15 }
16 return -1;
17}