题解 | #相等的草堆# java
相等的草堆
https://www.nowcoder.com/practice/0e2f3b27bbdc45fcbc70cc4fd41e15fe
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @return int整型
*/
public int pivotIndex (int[] nums) {
// write code here
int start = 0;
int end = nums.length - 1;
int leftSum = 0;
int rightSum = 0;
while (start <= end) {
if (leftSum < rightSum) {
leftSum += nums[start];
start++;
} else if (leftSum > rightSum) {
rightSum += nums[end];
end--;
} else {
leftSum += nums[start];
rightSum += nums[end];
start++;
end--;
}
}
return leftSum == rightSum ? start - 1 : -1;
}
}
使用的是Java语言。
该题考察的知识点是数组的操作和双指针思想。
代码的文字解释如下:
- 在
pivotIndex()方法中,我们使用了双指针的思想。首先,定义两个指针start和end,分别指向数组的起始位置和结束位置。同时,定义两个变量leftSum和rightSum来记录左侧和右侧元素的和。 - 在循环中,根据
leftSum和rightSum的大小关系更新指针和累加和。如果leftSum小于rightSum,说明需要将左侧的指针右移,并将对应元素的值加到leftSum中。如果leftSum大于rightSum,说明需要将右侧的指针左移,并将对应元素的值加到rightSum中。如果leftSum等于rightSum,则同时更新左侧和右侧的指针,并将对应元素的值加到对应的累加和中。 - 判断
leftSum是否等于rightSum,如果相等,则返回左侧指针start - 1的值,表示找到了中心索引;否则,返回-1,表示未找到中心索引。

查看1道真题和解析
阿里云工作强度 705人发布