arrays - 复杂度为 O(n) 的数组中第二高的数

标签 arrays algorithm

给定一个数组,我们如何找到具有 O(n) 复杂度的第二大数字,我能得到的最佳复杂度是 O(nlogn) 使用排序技术。如何获得 O(n) 时间复杂度?

最佳答案

这是一个简单的线性解决方案:

firstMax = max(a[0], a[1])
secondMax = min(a[0], a[1])
for elem in a:
    if elem >= firstMax:
        secondMax = firstMax
        firstMax = elem
    else if elem > secondMax:
        secondMax = elem
print(secondMax)

关于arrays - 复杂度为 O(n) 的数组中第二高的数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28051446/

相关文章:

c - PostgreSQL C函数,如何返回文本数组

java - 为什么当我将它们放入数组时,我生成的随机值是相同的?

javascript - 在隐藏的输入类型中显示 javascript 数组值

java - 如何使用java对文本文件进行排序并保存?

arrays - 如果数组有,则可以在 O(n) 中排序

java - 递归只走一条路?

javascript - Google Geocode API 对大数组的 promise

python - 如何在比较两个长二维列表时减少执行时间

algorithm - 加权无向树获得的最大利润

javascript - 基于属性的对象数组交替排序的有效方法