如何在 Java 中查找数组的平衡索引?


在 Java 中,数组是一个对象。它是一种非原始数据类型,用于存储相同数据类型的多个值。

根据问题陈述,我们需要找到一个索引,使得该索引之前所有元素的总和等于该索引之后所有元素的总和,因此这个索引被称为数组的平衡索引。

在本文中,您将学习如何使用 Java 编程语言获取数组的平衡索引。让我们开始探索吧。

展示一些示例

示例 1

Suppose the original array is {-4, 6, 2, 1, -7, 5, 3 }

找到数组的平衡索引后,结果索引将是 -2。

示例 2

Suppose the original array is {-7, 1, 5, 2, -4, 3, 0}.

找到数组的平衡索引后,结果索引将是 -3。

示例 3

Suppose the original array is {11, 22, 33, 44, 55}

找到数组的平衡索引后,结果索引将是 -1。

算法

  • 步骤 1 - 声明并初始化一个整数数组。

  • 步骤 2 - 将数组转换为字符串。

  • 步骤 3 - 找到所有元素的总和。

  • 步骤 4 - 将当前总和与剩余总和进行比较,以查找平衡索引。

  • 步骤 5 - 打印所需的结果。

语法

要获取数组的长度(数组中的元素数量),数组有一个内置属性,即 length

以下是其语法:

array.length

其中,'array' 指的是数组引用。

要获取数组内容的字符串表示形式或将数组内容转换为字符串,Java Arrays 类提供了一个内置的 toString() 方法。

以下是其语法:

arr.toString()

其中,'arr' 指的是数组引用。

多种方法

我们提供了使用不同方法的解决方案。

  • 使用数组元素的静态初始化。

  • 使用用户定义的方法。

让我们逐一查看程序及其输出。

方法 1:使用数组元素的静态初始化

示例

在这种方法中,数组元素将在程序中初始化。然后,根据算法找到总和,并将当前总和与剩余总和进行比较,以查找平衡索引。

import java.util.Arrays; 

public class Main {

   //main method
   public static void main(String[] args) {
   
      //Declare and initialize the array elements
      int[] nums =  {-4, 6, 2, 1, -7, 5, 3 };
      
      //converting array  to string
      System.out.println("Original array: "+Arrays.toString(nums));
      
      //find total sum of element in an array
      int Sum = 0;
      for (int n : nums){
         Sum += n;
      }
      
      //compare current sum to remaining sum to find equilibrium indices
      int currentSum = 0;
      for (int i = 0; i < nums.length; i++){
         int n = nums[i];
         if (Sum - currentSum - n == currentSum){
         
            //printing the desired output
            System.out.println("Equilibrium indices is found at index number : "+i);
         }
         currentSum += n;
      }
   }
}

输出

Original array: [-4, 6, 2, 1, -7, 5, 3]
Equilibrium indices is found at index number : 2

方法 2:使用用户定义的方法

示例

在这种方法中,数组元素将在程序中初始化。然后,通过将数组作为参数传递来调用用户定义的方法,并在方法内部根据算法找到总和,并将当前总和与剩余总和进行比较,以查找平衡索引。

import java.util.Arrays; 
public class Main{

   //main method
   public static void main(String[] args){
   
      //Declare and initialize the array elements
      int[] nums =  {-4, 6, 2, 1, -7, 5, 3 };
      
      //converting array  to string
      System.out.println("Original array: "+Arrays.toString(nums));
      equal(nums);
   }
 
   //user defined method
   public static void equal(int[] nums){
   
      //find total sum of element in an array
      int Sum = 0;
      for (int n : nums){
         Sum += n;
      }
      
      //compare current sum to remaining sum to find equilibrium indices
      int currentSum = 0;
      for (int i = 0; i < nums.length; i++) {
         int n = nums[i];
         if (Sum - currentSum - n == currentSum){
         
            //printing the desired output
            System.out.println("Equilibrium indices is found at index number : "+i);
         }
         currentSum += n;
      }
   }
}

输出

Original array: [-4, 6, 2, 1, -7, 5, 3]
Equilibrium indices is found at index number : 2

在本文中,我们探讨了如何使用 Java 编程语言查找数组的平衡索引。

更新于: 2023 年 1 月 5 日

1K+ 次查看

启动您的 职业生涯

通过完成课程获得认证

开始
广告

© . All rights reserved.