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

leetcode 598. 范围求和 II

  • 题目描述
  • 解题思路
  • 执行结果
leetcode 598. 范围求和 II


题目描述

  1. 范围求和 II

给你一个 m x n 的矩阵 M ,初始化时所有的 0 和一个操作数组 op ,其中 ops[i] = [ai, bi] 意味着当所有的 0 <= x < ai 和 0 <= 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

解题思路

法1

模拟:横向最小值与纵向最小值\

由题意可知我们需要得到横纵坐标相乘最小的值,但是我们必须考虑到交叉的情况

例如:3;3[1,2][2,1]

结果:

2,1,0

1,0,0

0,0,0

最大值为2,只有一个,所以应该输出1

  • 时间复杂度(O(n))
  • 空间复杂度(O(1))

执行结果

法1

func maxCount(m int, n int, ops [][]int) int {
 if len(ops) == 0 {
  return m * n
 }
 l1, l2 := ops[0][0], ops[0][1]
 for i := 1; i < len(ops); i++ {
  if ops[i][0] < l1 {//横坐标最小值
   l1 = ops[i][0]
  }
  if ops[i][1] < l2 {//纵坐标最小值
   l2 = ops[i][1]
  }
 }
 return l1 * l2
}

执行结果: 通过 显示详情 查看示例代码 添加备注

执行用时: 4 ms , 在所有 Go 提交中击败了 94.64% 的用户 内存消耗: 3.6 MB , 在所有 Go 提交中击败了 89.29% 的用户 通过测试用例: 69 / 69 炫耀一下:

法2


法3


本文由 mdnice 多平台发布

http://www.lryc.cn/news/65734.html

相关文章:

  • javaweb前置知识
  • 基于微信小程序的酒店预定管理系统设计与实现
  • 26. Service——深入学习
  • 【算法】Check If Word Is Valid After Substitutions 检查替换后的词是否有效
  • 基于jenkinsfile布置java工程
  • Spring JpaTransactionManager事务管理
  • 全国职业院校技能大赛网络建设与运维赛项赛题(七)
  • asp.net+sqlserver企业公司进销存管理系统
  • WxGL应用实例:绘制点云
  • 一个月内面了30家公司,薪资从18K变成28K,真行啊····
  • 《计算机网络——自顶向下方法》精炼——1.4到1.7
  • 消息队列 (Message Queue)
  • JavaScript原型链污染学习记录
  • 顶级白帽黑客必备的十大黑客技术
  • 【关于认证鉴权一些概念梳理】
  • 16.网络爬虫—字体反爬(实战演示)
  • BOM概述
  • 3.Docker实用技术
  • 群体无人机:协同作战的未来
  • 如何在Windows AD域中驻留ACL后门
  • LVGL移植——stm32f4
  • ASEMI代理ADP5054ACPZ-R7原装ADI车规级ADP5054ACPZ-R7
  • TCP/IP相关面试题
  • MySQL数据库——MySQL存储过程是什么?
  • 消息队列中的事务消息
  • 03. 路由参数.重定向.视图
  • Flowable入门
  • Scala Option类型,异常处理,IO,高阶函数
  • unity进阶学习笔记:单例模式
  • 软件测试——性能指标