:
double[] minus = new double[]
{
3, 24, 26, 23, 25, 18, 5, 5, 1, 10,
};
double[] plus = new ![alt text][1]double[]
{
3, 8, 9, 11, 22, 25, 5, 5, 3, 7
};
var collisionsBetweenIndices =
Enumerable.Range(1, minus.Length - 1)
.Where(i => ((minus[i - 1] - plus[i - 1] < 0) && (minus[i] - plus[i] > 0)) ||
((minus[i - 1] - plus[i - 1] > 0) && (minus[i] - plus[i] < 0)) ||
((minus[i - 1] - plus[i - 1] == 0) && (minus[i] - plus[i] == 0)))
.ToArray();
var collisionsOnIndices =
Enumerable.Range(0, minus.Length)
.Where(i => minus[i] == plus[i])
.ToArray();
foreach (var idx in collisionsBetweenIndices)
Console.WriteLine("Collision between {0} and {1}", idx - 1, idx);
foreach (var idx in collisionsOnIndices)
Console.WriteLine("Collision on {0}", idx);

EDIT:
, (.. ), , , , :
var collisionDetected =
Enumerable.Range(0, minus.Length).Any(i =>
{
if (minus[i] == plus[i])
return true;
if (i > 0 &&
(((minus[i - 1] - plus[i - 1] < 0) && (minus[i] - plus[i] > 0)) ||
((minus[i - 1] - plus[i - 1] > 0) && (minus[i] - plus[i] < 0)) ||
((minus[i - 1] - plus[i - 1] == 0) && (minus[i] - plus[i] == 0))))
{
return true;
}
return false;
});
, , .