如何将 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)。