Array.Exists - 可能的错误?
Array.Exists - Possible bug?
我最近试图完成一个很好的 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)));
我希望 return 在使用 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 中重现。
我可以确认这绝对不是任何类型的编译器错误,而是代码本身。我无法在他们的操场上复制 Leetcode 本身。
然后我发现这绝对是我自己的错误。去图吧!
对于那些希望找到我的错误、提供任何意见或其他不同内容的人,请随时访问此处:
https://leetcode.com/playground/PSz4zMzL
但这不再是本次 post 的范围 - 所以我继续前进。
我最近试图完成一个很好的 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)));
我希望 return 在使用 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 中重现。
我可以确认这绝对不是任何类型的编译器错误,而是代码本身。我无法在他们的操场上复制 Leetcode 本身。
然后我发现这绝对是我自己的错误。去图吧!
对于那些希望找到我的错误、提供任何意见或其他不同内容的人,请随时访问此处:
https://leetcode.com/playground/PSz4zMzL
但这不再是本次 post 的范围 - 所以我继续前进。