当前位置: 首页 > 面试题库 >

找到三元组中间值的最快方法?

公孙巴英
2023-03-14
问题内容

给定的是三个数值的数组,我想知道三个数值的中间值。

问题是, 找到这三个中间* 值的 最快 方法是什么? *

我的方法是这种模式-因为有三个数字,所以有六个排列:

if (array[randomIndexA] >= array[randomIndexB] &&
    array[randomIndexB] >= array[randomIndexC])

如果有人可以帮助我找到 更优雅更快捷的 方法,那将非常好。


问题答案:

如果您正在寻找最有效的解决方案,我会想象这是这样的:

if (array[randomIndexA] > array[randomIndexB]) {
  if (array[randomIndexB] > array[randomIndexC]) {
    return "b is the middle value";
  } else if (array[randomIndexA] > array[randomIndexC]) {
    return "c is the middle value";
  } else {
    return "a is the middle value";
  }
} else {
  if (array[randomIndexA] > array[randomIndexC]) {
    return "a is the middle value";
  } else if (array[randomIndexB] > array[randomIndexC]) {
    return "c is the middle value";
  } else {
    return "b is the middle value";
  }
}

这种方法需要至少两个和最多三个比较。它故意忽略了两个值相等的可能性(就像您的问题一样):如果这很重要,则可以扩展该方法来检查它。



 类似资料:
  • 我有一个Java计算问题,其中我得到了一个整数数组: 例如: 3-2-10 0 1 我应该计算出可以从这些整数形成的最小整数和最大三元组是什么。(在这种情况下,最小值=-30,最大值=60) 我最初认为最大值总是正的,最小值总是负的。 因此, 我最初的算法是: 扫描数组并取出其中的3个最大元素,存储到数组中。 同时,取出里面的3个最小的元素,存储到另一个数组中。 通过不等式,我们可以推断如下: v

  • 问题内容: 我有一个〜10 ^ 6元组的列表,像这样: 我想在此列表中找到Y的最大值,但也想知道绑定到的X。 我该怎么做呢? 问题答案: 用途: 使用: 使用: 比较:

  • 问题内容: 我知道我可以像下面这样: 但是,由于它做了完整的排序,所以它非常慢。 我想知道numpy是否提供一些可以快速完成的方法。 问题答案: 该模块具有一种快速的局部排序方法,可直接与Numpy数组配合使用:。 请注意,返回的是已排序的实际值,如果要使用已排序的值的索引(返回值),则应使用。 我已经进行了基准测试: 其中是一个随机的1,000,000个元素的数组。 时间安排如下: :每个循环2

  • 我必须用随机值填充三个数组(完成),从每个数组中找到最大值(完成),然后在指定的三个数组中找到最大值((我不知道怎么做,有人能帮我吗?))。 但是,主要的问题是代码重复,我试了几种方法来做,但是失败了,有人能帮我吗?

  • 问题内容: 我有一个,我想将每个索引的值设置为相同的值。 有一种很明显的方法(迭代): 但是我想知道是否有一种可以利用的方法或某种等效方法可以绕过迭代的需要。有没有办法做到这一点? 编辑: 从 这是完全相同的过程,这表明可能没有更好的方法可以做到这一点。 +1对所有提出建议的人-你们都是正确的,谢谢。 问题答案: 试试:数组javadoc

  • 问题内容: 给定一个整数数组和一个整数 k,从所有大小为 K 的连续子数组中找出 的最大元素。 例如: 对于每个大小为 k 的子数组,打印其最大元素。 问题答案: 基本的解决方案是生成所有大小为k的连续子数组并循环遍历它们以找出当前子数组中的最大值。考虑到,对于每个点,我们基本上都是取下一个 元素,然后我们遍历那些 k 个元素,因此该算法的最坏时间复杂度将是。 稍微有效的方法: 通过使用Segme

  • 主要内容:普通算法,分治算法程序中,我们经常使用数组(列表)存储给定的线性序列(例如 {1,2,3,4}),那么如何查找数组(序列)中的最大值或者最小值呢? 查找数组(序列)中最大值或最小值的算法有很多,接下来我们以 {3,7,2,1} 序列为例讲解两种查找最值的算法,一种是普通算法,另一种是借助 分治算法解决。 普通算法 普通算法的解决思路是:创建两个变量 max 和 min 分别记录数组中的最大值和最小值,它们的初始值都

  • 问题内容: 如何编写方法并返回7? 我想在没有列表,地图或其他帮助程序的帮助下将其保持为原生。仅数组[]。 问题答案: