【问题标题】:Slicing an array [closed]切片数组[关闭]
【发布时间】:2017-04-13 15:21:13
【问题描述】:

我有这种类型的数组

int[] array = {1,2,3,2,2,2}; 

我需要确定前半部分元素的总和是否等于后半部分的总和,例如它应该打印:

是的

这是因为1 + 2 + 3 等于2 + 2 + 2

【问题讨论】:

  • 好吧,祝你好运。让我们知道您什么时候尝试过,如果没有奏效。
  • @da_funk 你的问题太笼统了。您需要更具体地了解您遇到的问题以及您尝试过的解决方案。
  • 如果数组包含奇数个元素怎么办?
  • return array.Take(array.Length/2).Sum() == array.Skip(array.Length/2).Sum()?我会留给你找出奇数长度的数组
  • @da_funk 提出这个问题的最佳方式是让您展示您尝试过但不起作用的代码。你指的是什么Slice 方法?这不是数组的内置方法。

标签: c# .net visual-studio


【解决方案1】:
        int[] array = { 1, 2, 3, 2, 2, 2 };
        int middle = array.Length /2;
        // take the middle and calculate the first half and then skip to the middle and compare it with the next half
        bool isEqual = array.Take(middle).Sum() == array.Skip(middle).Sum();

        MessageBox.Show(isEqual.ToString());

【讨论】:

    【解决方案2】:

    这是一个单行的解决方案,您的老师会打动

    bool result = array.Take(array.Length / 2).Zip(array.Reverse(), (x,y) => x - y).Sum() == 0;
    

    【讨论】:

    • 谢谢,但我想将数组分成两部分。我试过 Slice 方法,但它不会工作
    • @da_funk 你能展示一下你是如何尝试对数组进行切片的吗? (编辑您的问题)
    • foreach (int i in array.Slice(0, 1)) { Console.WriteLine(i); }
    • @da_funk 如果您想添加详细信息,请编辑您的问题。旁注 - 数组中没有 Slice 方法
    猜你喜欢
    • 2014-08-09
    • 2012-11-10
    • 1970-01-01
    • 2021-02-06
    • 2021-09-04
    • 2012-02-23
    • 2015-02-10
    • 2018-10-27
    • 1970-01-01
    相关资源
    最近更新 更多