此逻辑是在数组中查找数字 n,其中 n 和 n + 5 之间的范围将包含数组中最多的数字。我想出了一个解决方案,但它需要一个嵌套循环,因此它有点慢。有什么方法可以提高它的性能吗?提前致谢。
数组保证排序。
int[] myArray = new int[]{1,2,4,5,7,9,15,19};
int bestNumber = 0;
int MaxMatchFound = 0;
for (int o = 0; o < myArray.Length; o++)
{
int TempMatchFound = 0;
for (int i = 0; i < myArray.Length; i++)
{
if (myArray[i] >= myArray[o] && myArray[i] <= (myArray[o] + 5))
{
TempMatchFound++;
}
}
if (TempMatchFound > MaxMatchFound)
{
bestNumber = myArray[o];
MaxMatchFound = TempMatchFound;
}
}
return bestNumber;