Joh*_*ohn -3 c# algorithm search
在 testdome 上进行练习...目前正在查看https://www.testdome.com/for-developers/solve-question/9877
实现函数
CountNumbers,该函数接受一个排序的整数数组并计算小于参数的数组元素的数量lessThan。例如,
SortedSearch.CountNumbers(new int[] { 1, 3, 5, 7 }, 4)应该返回 2,因为有两个小于 4 的数组元素。
我已经输入:
public class SortedSearch
{
public static int CountNumbers(int[] sortedArray, int lessThan)
{
int returnedValued = 0;
foreach (int i in sortedArray)
{
if(i<lessThan)
returnedValued += 1;
}
return returnedValued;
}
public static void Main(string[] args)
{
Console.WriteLine(SortedSearch.CountNumbers(new int[] { 1, 3, 5, 7 }, 4));
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道为什么这被标记为难度级别和预期时间 20 分钟,而我知道它应该只需要几个。无论如何,4 个案例中有 2 个通过了。我在超出时间限制时失败,我猜我需要重构以返回更快的搜索。这是正确的吗?如果是这样,有人可以帮忙吗?
示例案例:正确答案
各种小数组:正确答案
sortedArray 包含小于时的性能测试:超出时间限制
sortedArray 不包含小于时的性能测试:超出时间限制
这通过了所有 4 个测试:
public static int CountNumbers(int[] sortedArray, int lessThan)
{
int val = Array.BinarySearch(sortedArray, lessThan);
return val < 0 ? ~val : val;
}
Run Code Online (Sandbox Code Playgroud)
正如其他人所说,他们希望您使用Array.BinarySearch,直到阅读第二个提示我才意识到。