如何将 O(1) 算法写入 return 数组中不是最小的元素?
How can I write an O(1) algorithm to return an element NOT smallest in array?
给定一个唯一元素数组 = [ 2, 6, 11, 21, 5 ]。我如何编写一个 O(1) 算法 returns 一个不是数组中最小的元素?
// I tried... but not sure if this is O(1) - runtime
$arr = [2, 6, 11, 21, 5];
$smallest = $arr[0];
function returnSmallest() {
for( i = 1; i < $arr.length; i++ )
{
if($arr[i] < $smallest)
{
$smallest = $arr[i];
}
} return $smallest;
}();
print($smallest);
你的问题含糊不清。如果你想 return 最小的元素,如果你没有将元素存储在排序数组中,则没有 O(1) 算法可以做到这一点。
如果你想 return 一个不是最小的元素,你的代码是错误的,因为它是 return 最小的元素。您可以 return 前两个元素之间最大的那个,即 O(1)。
给定一个唯一元素数组 = [ 2, 6, 11, 21, 5 ]。我如何编写一个 O(1) 算法 returns 一个不是数组中最小的元素?
// I tried... but not sure if this is O(1) - runtime
$arr = [2, 6, 11, 21, 5];
$smallest = $arr[0];
function returnSmallest() {
for( i = 1; i < $arr.length; i++ )
{
if($arr[i] < $smallest)
{
$smallest = $arr[i];
}
} return $smallest;
}();
print($smallest);
你的问题含糊不清。如果你想 return 最小的元素,如果你没有将元素存储在排序数组中,则没有 O(1) 算法可以做到这一点。
如果你想 return 一个不是最小的元素,你的代码是错误的,因为它是 return 最小的元素。您可以 return 前两个元素之间最大的那个,即 O(1)。