题解 | #相等的草堆# 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语言。

该题考察的知识点是数组的操作和双指针思想。

代码的文字解释如下:

  1. pivotIndex()方法中,我们使用了双指针的思想。首先,定义两个指针startend,分别指向数组的起始位置和结束位置。同时,定义两个变量leftSumrightSum来记录左侧和右侧元素的和。
  2. 在循环中,根据leftSumrightSum的大小关系更新指针和累加和。如果leftSum小于rightSum,说明需要将左侧的指针右移,并将对应元素的值加到leftSum中。如果leftSum大于rightSum,说明需要将右侧的指针左移,并将对应元素的值加到rightSum中。如果leftSum等于rightSum,则同时更新左侧和右侧的指针,并将对应元素的值加到对应的累加和中。
  3. 判断leftSum是否等于rightSum,如果相等,则返回左侧指针start - 1的值,表示找到了中心索引;否则,返回-1,表示未找到中心索引。
全部评论

相关推荐

10-09 17:17
已编辑
门头沟学院 Java
活泼的代码渣渣在泡池...:同学你好,我也是学院本,后天要面这个亚信科技,是实习,请问问题都啥样呀,我项目就做了网上的,这是第一次面试
投递多益网络等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务