当前位置:   article > 正文

如何用单调队列的思想Java实现小明有一个大小为 N×M 的矩阵,可以理解为一个 N 行 M 列的二维数组。 我们定义一个矩阵 m 的稳定度 f(m) 为 f(m)=max(m)−min(m),其中 max(m) 表示矩阵 m 中的最大值,min(m) 表

算法 单调队列java实现

单调队列的思想实现这道题目,我们可以用一个单调队列维护矩阵中每一行的最大值和最小值。从左到右遍历每一行,每遍历到一个元素,就将该元素的位置加入到单调队列中。每次加入元素的时候,都会将队列中比该元素大的元素弹出队列。最后,我们可以维护两个单调队列,一个存储最大值,一个存储最小值。

用这样的方法,我们就能够在遍历到每一行时维护该行的最大值和最小值。接下来,我们可以从上到下遍历每一列,将每一列的最大值和最小值加入到两个单调队列中。每次加入元素的时候,都会将队列中超出当前列的元素弹出队列。最后,我们可以将最大值和最小值的差值与 limit 进行比较,如果小于等于 limit,就更新最大面积。

示例代码:

``` import java.util.Deque; import java.util.LinkedList; import java.util.Scanner;

public class Main {

  1. public static void main(String[] args) {
  2. Scanner sc= new Scanner(System.in);
  3. int n = sc.nextInt();
  4. int m = sc.nextInt();
  5. int[][] matrix = new int[n][m];
  6. for (int i = 0; i < n; i++) {
  7. for (int j = 0; j < m; j++) {
  8. matrix[i][j] = sc.nextInt();
  9. }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/253497
推荐阅读
相关标签
  

闽ICP备14008679号