当前位置: 首页 > 知识库问答 >
问题:

我们怎样才能得到左右子数组和相同的数组的索引呢

林炫明
2023-03-14

我已经完成了下面的编程练习:数组的等边。声明如下:

您将得到一个整数数组。您的任务是取这个数组并找到一个索引N,其中N左边的整数之和等于N右边的整数之和。如果没有索引可以做到这一点,则返回-1。

注意:如果给你一个数组有多个答案,返回最低正确的索引。

我已经阅读了用户Jenspiegsa提供的以下答案。这里有它的链接。

import java.util.stream.IntStream;

public class Kata {
  public static int findEvenIndex(int[] arr) {
    return IntStream.range(0, arr.length)
        .filter(n -> IntStream.of(arr).limit(n).sum() == IntStream.of(arr).skip(n + 1).sum())
        .findFirst().orElse(-1);
  }
}

我想知道是否有一种方法来代替循环整个Instream过滤,其中左和右子数组是相等的,然后返回第一个;只需在返回第一个相等值时中断执行。

public class Kata {
  public static int findEvenIndex(int[] arr) {
    int left = 0, right = 0;

    for(int i = 0; i < arr.length; i++, left = 0, right = 0){
      for(int j = 0; j < i; j++){
        left += arr[j];
      }
      for(int k = arr.length - 1; k > i; k--){
        right += arr[k];
      }
      if(left == right) return i;  
    }
    return -1;
  }
}

共有1个答案

杨学真
2023-03-14

如果您想要一个非O(n^2)的解决方案

    public Integer getfirstIndexEqual(Integer [] nums){
        Integer sum = 0;
        for (int i = 0; i < nums.length; i++){
            sum += nums[i];
        }
        Integer half = 0;
        for (int i=0; i< nums.length; i++){
            if (half.floatValue() == (sum-nums[i]) / 2){
                return i;
            }
            half += nums[i];
        }
        return -1;
    }
 类似资料:
  • 我一直在获取输出Student@42a57993.我想打印学生[0]中的结果,我还想打印学生数组中的所有元素,有人能帮我告诉我出了什么问题吗?我有一个主要的方法类是Client,另一个是Student。

  • 查找子数组的开始索引和结束索引以使给定数组的左右边和相等的C程序。如果不可能,打印-1。我需要它为任何数组工作,这只是为了测试。这是一个找到平衡的密码。

  • 我可以用什么代码打印出用户在这个数组中输入的最高值和最低值?这个程序需要取用户输入的平均值(我已经做过了)。现在我所需要做的就是让程序打印出用户输入的最高值和最低值。

  • 你好,stackoverflow的好人们!我有一个奇怪的问题,我不明白。我要发布我的两个有问题的方法: 另一个: 所以,我正在根据我在网上找到的一些代码制作一个数独解算器。现在,当我试着调试程序时,我可以很好地检查一些行(并且它按照预期工作),但是一旦程序第一次在方法“resi”中调用“next”方法,它就会崩溃,出现数组索引越界异常。如果我只是尝试在不进行调试的情况下运行该程序,那么在同一方法调

  • 我为我的angular表单中的表单输入元素设计了一个加载组件,以便在从api加载字段时显示。这里,我必须向< code>app-loader组件提供组件的高度和宽度,以便它可以相应地占用空间。 现在我所做的是使用手动开关 到目前为止,我有如下所示。

  • 我使用Selenium,需要无休止地等待页面加载(因为加载需要几个小时),然后解析其中的数据。我该怎么做? 我使用这样的一些代码: