如何在没有蛮力的情况下找到矩阵中元素的计数?我们能做到吗?

How to find the count of an element in a matrix without brute force? Can we do that?

本文关键字:元素 我们能做到 情况下      更新时间:2023-10-16

我想检查给定数组(2D)中是否存在元素,并找到单元格左侧和单元格右侧以及顶部和底部的计数。如何在不使用蛮力的情况下做到这一点

如果数组是排序的,那么你可以使用二进制搜索在 O(nlogm) 中找到时间复杂度!其中 n,m 是行和列。

除了其他答案(可能对任何当前的应用程序都不是很有用,只是一个思考的想法)是Grover的算法。 来自维基百科的发挥:

格罗弗算法是一种用于搜索未排序的量子算法 在 O(N1/2) 时间内具有 N 个条目并使用 O(log N) 存储的数据库 空格(参见大 O 表示法)。洛夫·格罗弗(Lov Grover)于1996年制定了它。

在经典计算模型中,搜索未排序的数据库 不能在不到线性的时间内完成(所以只是搜索 每个项目都是最佳的)。格罗弗的算法说明了这一点 量子模型搜索可以比这更快完成;事实上它的时代 复杂度 O(N1/2) 在渐近上是最快的 在线性量子模型中搜索未排序的数据库。

如果你的矩阵没有排序,并且你没有像哈希表这样的东西来快速访问,那就没有办法了。

例如

,如果您的矩阵是排序的,则可以使用更有效的搜索算法(例如二叉搜索)来更快地查找元素。不要忘记,2D 数组可以用向量和变量来表示列计数。