Java 查找给定数组段中的最小数
假设我们有一个大的整数数组a。我们想回答许多问题,如:Java 查找给定数组段中的最小数,java,algorithm,data-structures,array-algorithms,Java,Algorithm,Data Structures,Array Algorithms,假设我们有一个大的整数数组a。我们想回答许多问题,如: 找到索引0和100之间的最小值 找到索引4和90之间的最小值 示例:A={6,1,7,5,3} 索引0和1之间的最小值为1 索引2和3之间的最小值为5 索引0和4之间的最小值为1 对于性能而言,遍历每个查询的元素并找到最小值的明显方式是不够的。我需要一次存储所需的信息,然后在固定时间内回答查询。因此,算法不应该是二次的。需要比O(N*M)更好的东西。(N:数组大小,M:查询数) 我试过了,但找不到怎么做。它一定是关于寻找和存储一些
- 找到索引0和100之间的最小值
- 找到索引4和90之间的最小值
- 索引0和1之间的最小值为1
- 索引2和3之间的最小值为5
- 索引0和4之间的最小值为1
我试过了,但找不到怎么做。它一定是关于寻找和存储一些总和,并以某种方式使用它们。有什么想法吗?感谢阅读。需要考虑的两个选项:
(好的,当我发布时,我意识到这是n*m,对不起)初始过程可以是O(n^2)吗?@Sweeper我想你想创建一个最小值矩阵。但是初始过程也应该比O(n^2)好。现在我正在尝试一种O(N logN)方法,如果有效的话,我会在这里写。实际上,半个矩阵就足够了,但它仍然是O(N^2)。是的,你说得对。你的第一个解决方案看起来像是自下而上构建的最小堆。