Я пошел на www.testdome.com, чтобы проверить свои навыки и открыл список открытых вопросов. Один из вопросов практики был:
Реализация функции CountNumbers, которая принимает отсортированный массив
целые и подсчитывает количество элементов массива, которые меньше, чем
параметр lessThan.
Например, SortedSearch.CountNumbers (new int [] {1, 3, 5, 7}, 4)
должен вернуть 2, потому что есть два элемента массива меньше 4.
И мой ответ был:
using System;
public class SortedSearch
{
public static int CountNumbers(int[] sortedArray, int lessThan)
{
int count = 0;
int l = sortedArray.Length;
for (int i = 0; i < l; i++) {
if (sortedArray [i] < lessThan)
count++;
}
return count;
}
public static void Main(string[] args)
{
Console.WriteLine(SortedSearch.CountNumbers(new int[] { 1, 3, 5, 7 }, 4));
}
}
Кажется, я потерпел неудачу по двум причинам:
Performance test when sortedArray contains lessThan: Time limit exceeded
и
Performance test when sortedArray doesn't contain lessThan: Time limit exceeded
Если честно, я не уверен, что там оптимизировать? Может быть, я использую неправильный метод, и есть аналогичный способ ускорить расчет?
Если бы кто-то мог указать на мою ошибку или объяснить, что я делаю не так, я был бы очень признателен!