如何在没有蛮力的情况下找到矩阵中元素的计数?我们能做到吗?
How to find the count of an element in a matrix without brute force? Can we do that?
我想检查给定数组(2D)中是否存在元素,并找到单元格左侧和单元格右侧以及顶部和底部的计数。如何在不使用蛮力的情况下做到这一点
如果数组是排序的,那么你可以使用二进制搜索在 O(nlogm) 中找到时间复杂度!其中 n,m 是行和列。
除了其他答案(可能对任何当前的应用程序都不是很有用,只是一个思考的想法)是Grover的算法。 来自维基百科的发挥:
格罗弗算法是一种用于搜索未排序的量子算法 在 O(N1/2) 时间内具有 N 个条目并使用 O(log N) 存储的数据库 空格(参见大 O 表示法)。洛夫·格罗弗(Lov Grover)于1996年制定了它。
在经典计算模型中,搜索未排序的数据库 不能在不到线性的时间内完成(所以只是搜索 每个项目都是最佳的)。格罗弗的算法说明了这一点 量子模型搜索可以比这更快完成;事实上它的时代 复杂度 O(N1/2) 在渐近上是最快的 在线性量子模型中搜索未排序的数据库。
如果你的矩阵没有排序,并且你没有像哈希表这样的东西来快速访问,那就没有办法了。
例如,如果您的矩阵是排序的,则可以使用更有效的搜索算法(例如二叉搜索)来更快地查找元素。不要忘记,2D 数组可以用向量和变量来表示列计数。
相关文章:
- 为什么我们不能重复使用具有不同模板参数的别名模板标识符?
- 第 k 个最小元素 - 不能创建大于 k 大小的数组
- 我们能胜过对象切片吗?
- 我们能用c++制作集合数组吗
- 一个元素不能改变的非守恒向量
- C++对象的大小随着我添加更多接口而增加..Java能做到这一点吗
- 如何在没有蛮力的情况下找到矩阵中元素的计数?我们能做到吗?
- C++STL容器毫无例外地是不可用的,我们能做些什么呢
- 我们能在虚空上放置一个小物体吗
- 如何在所有大小的情况下都能做到这一点(c++初学者文件输入)
- 对于SparseMatrix实现,我们能做的最好的事情是什么?
- 如果元素不能为代码工作
- 我们能依靠容量缩减技巧吗
- 我们能在linux中实现c++吗?
- 我们能在c++中返回一个函数吗?
- 我们能在多大程度上依赖析构函数
- 如果我们不能修改set元素,为什么std::set会提供begin()和end()
- 我们能限制srand的范围吗
- QComboBox:我们能让整个组合框都可以点击,而不仅仅是下拉按钮(箭头)本身吗
- 我该如何使我的分配器可重新绑定?我能做到这一点,同时保持其字段的私有