找到矩阵B中的最大元素,优于O(n)?实践技术访谈

时间:2017-09-12 10:07:44

标签: algorithm

假设我们有一个矩阵B,大小为n乘n,具有不同的整数元素。如果它大于其所有邻居(也是诊断),则存在本地最大值。假设B恰好具有一个局部最大值,并且B的每列具有局部最大值。表明我们可以找到比O(n)更好的B的局部最大值。

我的尝试:我想象“假设B只有一个局部最大值”是为了告诉我一些关于元素的定位(排序?)的东西,但我似乎能够抓住它的头。事实上,优于O(n)是一个约束条件告诉我,以分而治之的高峰发现(O(logn * logn)?)是一种很好的方法,但我不知道该怎么回事。

1 个答案:

答案 0 :(得分:-1)

我认为可以在O(n)中完成。

见问题说它们只有1个全局最大值(即整个矩阵的1个局部最大值),每列都有一个局部最大值。

  1. 从第一列开始,找出局部最大值(比如(i,j))。检查它是否是全局最大值。

  2. 如果它不是全局最大值,则它们必须是相邻单元格中下一列中的局部最大值((i,j + 1),(i-1,j + 1)&(i + 1,j + 1)如果存在这些单元格,则大于当前的局部最大值。

  3. 现在重复这些步骤,在每个步骤中,您将在常量时间内找到下一列的局部最大值(您只需比较步骤2中指定的三个单元格)和最大值。需要搜索的列= n(最差情况下,在最后一列中找到全局最大值)。

    因此,总复杂度为O(n)。