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

devtools/2025/2/3 12:37:22/

【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 Listclass 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 mainfunc 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.ppmy.cn/devtools/155719.html

相关文章

单片机串口打印printf函数显示内容(固件库开发)

1.hal_usart.c 文件 #include <stdio.h> #include "hal_usart.h" #include "stm32F10x.h"//**要根据 使用的是哪个串口 对应修改 串口号 eg&#xff1a;USART1** void USART_PUTC(char ch) {/* 等待数据寄存器为空 */while((USART1->SR & …

[LeetCode]day4 977.有序数组的平方

977. 有序数组的平方 - 力扣&#xff08;LeetCode&#xff09; 一.题目 给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的新数组&#xff0c;要求也按 非递减顺序 排序。 示例 1&#xff1a; 输入&#xff1a;nums [-4,-1,0,3,10] 输出&a…

【工欲善其事】利用 DeepSeek 实现复杂 Git 操作:从原项目剥离出子版本树并同步到新的代码库中

文章目录 利用 DeepSeek 实现复杂 Git 操作1 背景介绍2 需求描述3 思路分析4 实现过程4.1 第一次需求确认4.2 第二次需求确认4.3 第三次需求确认4.4 V3 模型&#xff1a;中间结果的处理4.5 方案验证&#xff0c;首战告捷 5 总结复盘 利用 DeepSeek 实现复杂 Git 操作 1 背景介绍…

Windows socket之WSAEventSelect模型_wsaeventselect模型的socket编程和客户端应用的功能

WSAEVENT hEvent,LPWSANETWORKEVENTS lpNetworkEvents);该函数可以查找发生在套接字上的网络事件&#xff0c;并清除系统内部的网络事件记录&#xff0c;重置事件对象。s为发生网络事件的套接字句柄。hEvent为被重置的事件对象句柄&#xff08;可选)。lpNetworkEvents为指向WSA…

【回溯+剪枝】回溯算法的概念 全排列问题

文章目录 46. 全排列Ⅰ. 什么是回溯算法❓❓❓Ⅱ. 回溯算法的应用1、组合问题2、排列问题3、子集问题 Ⅲ. 解题思路&#xff1a;回溯 剪枝 46. 全排列 46. 全排列 ​ 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 …

LeetCode 344: 反转字符串

LeetCode 344: 反转字符串 - C语言题解 这道题的目标是反转一个字符数组&#xff08;字符串&#xff09;。我们将通过双指针法来实现这一功能。 代码实现 #include <stdio.h>void reverseString(char* s, int sSize) {int left 0, right sSize - 1; // 定义左右指针…

一元函数微积分的几何应用:二维平面光滑曲线的曲率公式

文章目录 前言曲率和曲率半径的定义曲率计算公式参数方程形式直角坐标显式方程形式极坐标形式向量形式 前言 本文将介绍二维平面光滑曲线的曲率定义以及不同形式的曲率及曲率半径公式的推导。 曲率和曲率半径的定义 &#xff08;关于二维平面光滑曲线的定义以及弧长公式请参…

使用 Tauri 2 + Next.js 开发跨平台桌面应用实践:Singbox GUI 实践

Singbox GUI 实践 最近用 Tauri Next.js 做了个项目 - Singbox GUI&#xff0c;是个给 sing-box 用的图形界面工具。支持 Windows、Linux 和 macOS。作为第一次接触这两个框架的新手&#xff0c;感觉收获还蛮多的&#xff0c;今天来分享下开发过程中的一些经验~ 为啥要做这个…