当前位置: 首页 > article >正文

【Leetcode 每日一题】598. 区间加法 II

问题背景

给你一个 m × n m \times n m×n 的矩阵 M M M 和一个操作数组 o p op op。矩阵初始化时所有的单元格都为 0 0 0 o p s [ i ] = [ a i , b i ] ops[i] = [a_i, b_i] ops[i]=[ai,bi] 意味着当所有的 0 ≤ x < a i 0 \le x \lt a_i 0x<ai 0 ≤ y < b i 0 \le y \lt b_i 0y<bi 时, M [ x ] [ y ] M[x][y] M[x][y] 应该加 1 1 1
在 执行完所有操作后 ,计算并返回 矩阵中最大整数的个数 。

数据约束

  • 1 ≤ m , n ≤ 4 × 1 0 4 1 \le m, n \le 4 \times 10 ^ 4 1m,n4×104
  • 0 ≤ o p s . l e n g t h ≤ 1 0 4 0 \le ops.length \le 10 ^ 4 0ops.length104
  • o p s [ i ] . l e n g t h = 2 ops[i].length = 2 ops[i].length=2
  • 1 ≤ a i ≤ m 1 \le a_i \le m 1aim
  • 1 ≤ b i ≤ n 1 \le b_i \le n 1bin

解题过程

自己在倒腾二维前缀和数组,实际上每次操作都可以看做在原来的基础上重叠一个新矩形,所有矩形的左上角固定。
这样一来,最大整数一定是重叠次数最多的交集部分,找到它的右下角就可以计算出结果了。

具体实现

class Solution {
    public int maxCount(int m, int n, int[][] ops) {
        int minX = m;
        int minY = n;
        for (int[] op : ops) {
            minX = Math.min(minX, op[0]);
            minY = Math.min(minY, op[1]);
        }
        return minX * minY;
    }
}

http://www.kler.cn/a/530310.html

相关文章:

  • 影视文件大数据高速分发方案
  • C#面试常考随笔11:Dictionary<K, V>、Hashtable的内部实现原理是什么?效率如何?
  • LeetCode435周赛T2贪心
  • python-leetcode-相同的树
  • Vue 与 Electron 结合开发桌面应用
  • C# 环境:深入探讨与优化
  • 知识库管理在提升企业决策效率与知识共享中的应用探讨
  • Java 大视界 -- Java 大数据在智慧农业中的应用与实践(70)
  • 深入解析 CSS 中不常用属性及其相互作用
  • 《苍穹外卖》项目学习记录-Day11营业额统计
  • CV报错与模型推理注意
  • [SAP ABAP] 静态断点的使用
  • 14 2D矩形模块( rect.rs)
  • 蓝桥杯之c++入门(三)【条件判断】
  • for fn in *.html ;do fns=“${fns} ${fn} “ ;done; firefox ${fns}
  • DeepSeek本地部署+可视化WebUI
  • Autosar-以太网是怎么运行的?(Davinci配置部分)
  • LeetCode:198.打家劫舍
  • Compose笔记(二)--LaunchedEffect
  • AMD简单读书笔记2
  • 【人工智能】深入探索Python中的自注意力机制:实现Transformer的核心组件
  • 035 搜索之DFS基础
  • 鬼泣目录.
  • 【博弈论】Chapter2 重复严格优势/可理性化和相关均衡
  • JVM篇:对象的深度剖析
  • 一种非接触式智能垃圾桶设计(论文+源码+实物)