Array.Exists-可能的错误?

问题描述 投票:0回答:1

我最近试图完成一个相当不错的LeetCode练习,我可以说我尝试使用的解决方案不是最好的,但这仍然是一种好的做法。但是,我注意到在使用Array.Exists函数时,无法获得与使用Console.WriteLine进行调试时期望的一致的结果。当然,我在锯齿状的数组上使用了它,但是我想这会起作用,在数组上逐行迭代。考虑以下示例二维数组:

[[0,1],[0,1],[0,1]]

给出此数组,您将认为在遍历该数组时,您将能够使用Array.Exists来发现每个子数组确实存在1和0,就像在运行这些行时一样:

Console.WriteLine(Array.Exists<int>(grid[i], x => x.Equals(0)));
Console.WriteLine(Array.Exists<int>(grid[i], x => x.Equals(1)));

我希望在使用i和j迭代器遍历数组时返回以下内容:

True
True

但是,当从FIRST子数组(例如,从grid [0]移到grid [1]时),我会得到假阴性,好像数组中确实没有1,我们知道这是假的:

True
False

在这个锯齿状的数组中,这两个都是正确的,但显然,至少在LeetCode网站上不是这样。

其他人还能复制吗?

这是一个小程序,显示在控制台应用程序中运行时我正在谈论的问题:

using System;

public class Solution {

    public static void Main(String[] args) {

        int[][] exampleGrid = new int[][]
        {
            new int[] {2,0},
            new int[] {1,0}
        };

        Solution.Feedback(exampleGrid);

    }

    public static void Feedback(int[][] grid) {
          for(int i = 0; i < grid.GetLength(0); i++)
          {
              Console.WriteLine(Array.Exists<int>(grid[i], x => x.Equals(0)));
              Console.WriteLine(Array.Exists<int>(grid[i], x => x.Equals(1)));
           }
  }
}

请注意:仅在mono 5.18.0-C#7中可以重现。

c# arrays mono
1个回答
0
投票

我可以确认这绝对不是任何形式的编译器错误,而是代码本身。我无法在他们的操场上的Leetcode上进行复制。

然后我发现这绝对是我自己的错误。去图吧!

对于那些希望找到我的错误,进行任何输入或其他不同的人,请随时转到这里:

https://leetcode.com/playground/PSz4zMzL

但是这不再是本文的讨论范围,因此,我将继续讨论。

© www.soinside.com 2019 - 2024. All rights reserved.