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
        for (int i = 1; i < nums.length; i++) {
            nums[i] += nums[i - 1];
        }
        int x = -1;
        for (int j = 0; j < nums.length; j++) {
            int m = j > 0 ? nums[j - 1] : 0;
            int n = j < nums.length - 1 ? nums[nums.length - 1] - nums[j] : 0;
            if (n == m)
                x = j;
        }
        return x;
    }
}

该代码使用的编程语言是Java。

该题考察的是数组操作和逻辑判断

代码中的解决思路是通过两次遍历数组来实现。第一次遍历使用动态规划的思想,计算从数组开头到每个索引处的元素之和并保存在数组 nums 中。第二次遍历依次检查每个索引处,将数组分为左半部分和右半部分,并比较两部分的和是否相等。如果相等则返回当前索引值,否则返回默认值 -1

代码的文字解释如下:

  1. 传入一个整型数组 nums 作为参数。
  2. 第一次遍历数组,从索引 1 开始,将每个索引处的元素值加上前一个索引处的元素值,即 nums[i] += nums[i - 1]
  3. 初始化一个变量 x 并赋值为 -1,用于存储最终的索引值。
  4. 第二次遍历数组,依次检查每个索引处。对于当前索引 j,将数组根据当前索引分为左半部分和右半部分。左半部分的和为 m,如果 j > 0 则取 nums[j - 1],否则取 0。右半部分的和为 n,如果 j < nums.length - 1 则取 nums[nums.length - 1] - nums[j],否则取 0。如果左半部分的和等于右半部分的和,将索引 j 赋值给变量 x。
  5. 返回变量 x 作为结果。如果找不到符合条件的索引,则默认返回 -1
全部评论

相关推荐

10-14 21:00
门头沟学院 Java
吃花椒的狸猫:这个人说的倒是实话,特别是小公司,一个实习生哪里来的那么多要求
点赞 评论 收藏
分享
__Offer__:认识的室友啥也不回细节,线下面联想大模型一次通关我给我干不回了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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