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

LeetCode 0598.区间加法 II:最小值

【LetMeFly】598.区间加法 II:最小值

力扣题目链接:https://leetcode.cn/problems/range-addition-ii/

给你一个 m x n 的矩阵 M 和一个操作数组 op 。矩阵初始化时所有的单元格都为 0ops[i] = [ai, bi] 意味着当所有的 0 <= x < ai0 <= y < bi 时, M[x][y] 应该加 1。

在 执行完所有操作后 ,计算并返回 矩阵中最大整数的个数 。

 

示例 1:

输入: m = 3, n = 3,ops = [[2,2],[3,3]]
输出: 4
解释: M 中最大的整数是 2, 而且 M 中有4个值为2的元素。因此返回 4。

示例 2:

输入: m = 3, n = 3, ops = [[2,2],[3,3],[3,3],[3,3],[2,2],[3,3],[3,3],[3,3],[2,2],[3,3],[3,3],[3,3]]
输出: 4

示例 3:

输入: m = 3, n = 3, ops = []
输出: 9

 

提示:

  • 1 <= m, n <= 4 * 104
  • 0 <= ops.length <= 104
  • ops[i].length == 2
  • 1 <= ai <= m
  • 1 <= bi <= n

解题方法:最小值

这道题很有意思,每次都是左上角的一小块加一。

最终最大整数的个数,不就是每次都被加一的那些元素么。

横纵坐标可以分开计算,对于横坐标,每次都覆盖掉的就是所有操作中在最小值;纵坐标同理。

文字描述不如代码描述,还不懂的话,看完代码就懂了。

  • 时间复杂度 O ( l e n ( o p s ) ) O(len(ops)) O(len(ops))
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

C++
/*
 * @Author: LetMeFly
 * @Date: 2025-02-02 10:31:46
 * @LastEditors: LetMeFly.xyz
 * @LastEditTime: 2025-02-02 11:05:10
 */
class Solution {
public:
    int maxCount(int m, int n, vector<vector<int>>& ops) {
        for (vector<int>& op : ops) {
            m = min(m, op[0]);
            n = min(n, op[1]);
        }
        return m * n;
    }
};
Python
'''
Author: LetMeFly
Date: 2025-02-02 11:06:10
LastEditors: LetMeFly.xyz
LastEditTime: 2025-02-02 11:07:44
'''
from typing import List

class Solution:
    def maxCount(self, m: int, n: int, ops: List[List[int]]) -> int:
        for a, b in ops:
            m = min(m, a)
            n = min(n, b)
        return m * n
Java
/*
 * @Author: LetMeFly
 * @Date: 2025-02-02 11:08:09
 * @LastEditors: LetMeFly.xyz
 * @LastEditTime: 2025-02-02 11:08:11
 */
class Solution {
    public int maxCount(int m, int n, int[][] ops) {
        for (int[] op : ops) {
            m = Math.min(m, op[0]);
            n = Math.min(n, op[1]);
        }
        return m * n;
    }
}
Go
/*
 * @Author: LetMeFly
 * @Date: 2025-02-02 11:09:24
 * @LastEditors: LetMeFly.xyz
 * @LastEditTime: 2025-02-02 11:10:27
 */
package main

func min_RA2(m, n int) int {
    if m < n {
        return m
    }
    return n
}

func maxCount(m int, n int, ops [][]int) int {
    for _, op := range ops {
        m = min_RA2(m, op[0])
        n = min_RA2(n, op[1])
    }
    return m * n
}

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

Tisfy:https://letmefly.blog.csdn.net/article/details/145418564


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

相关文章:

  • 【Pandas】pandas Series min
  • ESP32-c3实现获取土壤湿度(ADC模拟量)
  • [权限提升] Windows 提权 维持 — 系统错误配置提权 - Trusted Service Paths 提权
  • 新站如何快速获得搜索引擎收录?
  • 基于RAG的知识库问答系统
  • MP4分析工具
  • 洛谷 P5146 最大差值 C语言
  • 力扣第435场周赛讲解
  • .事件传参与数据同步,条件渲染,列表渲染
  • javaweb实训:购物商城系统项目
  • MQTT知识
  • (万字长文)C++17中的未初始化内存算法:深度解析与实战应用
  • Baklib在内容中台智能化推荐系统中的应用与未来发展路径分析
  • 学习串行通信
  • 记8(高级API实现手写数字识别
  • GPIO配置通用输出,推挽输出,开漏输出的作用,以及输出上下拉起到的作用
  • Shell篇-字符串处理
  • Windows编译FreeRDP步骤
  • 视觉状态空间模型(VMamba)的解读
  • RouterChain
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.5 高级索引应用:图像处理中的区域提取
  • 【Block总结】完全注意力Fully Attentional,同时捕捉空间和通道的注意力|即插即用
  • 我问了DeepSeek和ChatGPT关于vue中包含几种watch的问题,它们是这么回答的……
  • MiniQMT与QMT:量化交易软件的对比分析
  • C语言------二维数组指针从入门到精通
  • 一文了解阿里的 Qwen2.5 模型