LeetCode 2271. 毯子覆盖的最多白色砖块数(前缀和+二分查找)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给你一个二维整数数组 tiles ,其中 tiles[i] = [li, ri] ,表示所有在 li <= j <= ri 之间的每个瓷砖位置 j 都被涂成了白色。

同时给你一个整数 carpetLen ,表示可以放在 任何位置 的一块毯子。

请你返回使用这块毯子,最多 可以盖住多少块瓷砖。

示例 1:
在这里插入图片描述

输入:tiles = [[1,5],[10,11],[12,18],[20,25],[30,32]],carpetLen = 10
输出:9
解释:将毯子从瓷砖 10 开始放置。
总共覆盖 9 块瓷砖,所以返回 9 。
注意可能有其他方案也可以覆盖 9 块瓷砖。
可以看出,瓷砖无法覆盖超过 9 块瓷砖。

示例 2:
在这里插入图片描述

输入:tiles = [[10,11],[1,1]], carpetLen = 2
输出:2
解释:将毯子从瓷砖 10 开始放置。
总共覆盖 2 块瓷砖,所以我们返回 2 。提示:
1 <= tiles.length <= 5 * 10^4
tiles[i].length == 2
1 <= li <= ri <= 10^9
1 <= carpetLen <= 10^9
tiles 互相 不会重叠 。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/maximum-white-tiles-covered-by-a-carpet
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 先排序区间
  • 求区间的前缀砖块个数
  • 遍历每个区间 i,在 [i, n-1] 中二分查找 最后一个区间 j (titles[j][0] <= titles[i][0]+carpetLen), j 能够被盖住部分或者全部
class Solution:def maximumWhiteTiles(self, tiles: List[List[int]], carpetLen: int) -> int:n = len(tiles)prevsum = [0]*ntiles.sort(key=lambda x : x[0])for i in range(n):prevsum[i] = (prevsum[i-1] if i>0 else 0) + tiles[i][1]-tiles[i][0]+1ans = 0for i in range(n):val = tiles[i][0] + carpetLen - 1if val <= tiles[i][1]:return carpetLenl, r, j = i, n-1, -1  # 二分查找 左端点<= val 的最后一个区间while l <= r:mid = (l+r)//2if tiles[mid][0] > val:r = mid-1else:if mid==n-1 or tiles[mid+1][0] > val:j = midbreakelse:l = mid+1cover = prevsum[j-1] - (0 if i==0 else prevsum[i-1]) + min(val, tiles[j][1]) - tiles[j][0] + 1ans = max(ans, cover)return ans

824 ms 31 MB Python3


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471006.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nimbus三Storm源码分析--Nimbus启动过程

Nimbus server, 首先从启动命令开始, 同样是使用storm命令"storm nimbus”来启动看下源码, 此处和上面client不同, jvmtype"-server", 最终调用"backtype.storm.daemon.nimbus"的mainnimbus是用clojure实现的, 但是clojure是基于JVM的, 所以在最终发布…

python网络爬虫系列(六)——数据提取 lxml模块

一、数据提取-lxml模块 知识点 了解 lxml模块和xpath语法的关系了解 lxml模块的使用场景了解 lxml模块的安装了解 谷歌浏览器xpath helper插件的安装和使用掌握 xpath语法-基础节点选择语法掌握 xpath语法-节点修饰语法掌握 xpath语法-其他常用语法掌握 lxml模块中使用xpath语…

LeetCode 2273. 移除字母异位词后的结果数组

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的字符串 words &#xff0c;其中 words[i] 由小写英文字符组成。 在一步操作中&#xff0c;需要选出任一下标 i &#xff0c;从 words 中 删除 words[i] 。其中下标 i 需要同时满足下述两个条件&#xff1a; 0 < i …

python网络爬虫系列(七)——selenium的介绍 selenium定位获取标签对象并提取数据 selenium的其它使用方法

一、selenium的介绍 知识点&#xff1a; 了解 selenium的工作原理了解 selenium以及chromedriver的安装掌握 标签对象click点击以及send_keys输入 1. selenium运行效果展示 Selenium是一个Web的自动化测试工具&#xff0c;最初是为网站自动化测试而开发的&#xff0c;Seleniu…

LeetCode 2274. 不含特殊楼层的最大连续楼层数

文章目录1. 题目2. 解题1. 题目 Alice 管理着一家公司&#xff0c;并租用大楼的部分楼层作为办公空间。 Alice 决定将一些楼层作为 特殊楼层 &#xff0c;仅用于放松。 给你两个整数 bottom 和 top &#xff0c;表示 Alice 租用了从 bottom 到 top&#xff08;含 bottom 和 t…

python网络爬虫系列(八)——常见的反爬手段和解决方法

常见的反爬手段和解决思路 学习目标 了解 服务器反爬的原因了解 服务器常反什么样的爬虫了解 反爬虫领域常见的一些概念了解 反爬的三个方向了解 常见基于身份识别进行反爬了解 常见基于爬虫行为进行反爬了解 常见基于数据加密进行反爬 1 服务器反爬的原因 爬虫占总PV(PV是指…

LeetCode 2275. 按位与结果大于零的最长组合(位运算)

文章目录1. 题目2. 解题1. 题目 对数组 nums 执行 按位与 相当于对数组 nums 中的所有整数执行 按位与 。 例如&#xff0c;对 nums [1, 5, 3] 来说&#xff0c;按位与等于 1 & 5 & 3 1 。同样&#xff0c;对 nums [7] 而言&#xff0c;按位与等于 7 。 给你一个…

python网络爬虫系列(九)——打码平台的使用

验证码处理 学习目标 了解 验证码的相关知识掌握 图片识别引擎的使用了解 常见的打码平台掌握 通过打码平台处理验证码的方法 1.图片验证码 1.1 什么是图片验证码 验证码&#xff08;CAPTCHA&#xff09;是“Completely Automated Public Turing test to tell Computers an…

LeetCode 2278. 字母在字符串中的百分比

文章目录1. 题目2. 解题1. 题目 给你一个字符串 s 和一个字符 letter &#xff0c;返回在 s 中等于 letter 字符所占的 百分比 &#xff0c;向下取整到最接近的百分比。 示例 1&#xff1a; 输入&#xff1a;s "foobar", letter "o" 输出&#xff1a;3…

python网络爬虫系列(十)——chrome在爬虫中的使用

chrome浏览器使用方法介绍 学习目标 了解 新建隐身窗口的目的了解 chrome中network的使用了解 寻找登录接口的方法 1 新建隐身窗口 浏览器中直接打开网站&#xff0c;会自动带上之前网站时保存的cookie&#xff0c;但是在爬虫中首次获取页面是没有携带cookie的&#xff0c;这…

LeetCode 2279. 装满石头的背包的最大数量(贪心)

文章目录1. 题目2. 解题1. 题目 现有编号从 0 到 n - 1 的 n 个背包。 给你两个下标从 0 开始的整数数组 capacity 和 rocks 。 第 i 个背包最大可以装 capacity[i] 块石头&#xff0c;当前已经装了 rocks[i] 块石头。 另给你一个整数 additionalRocks &#xff0c;表示你可以…

python网络爬虫系列(十一)——JS的解析

JS的解析 学习目标&#xff1a; 了解 定位js的方法了解 添加断点观察js的执行过程的方法应用 js2py获取js的方法 1 确定js的位置 对于前面人人网的案例&#xff0c;我们知道了url地址中有部分参数&#xff0c;但是参数是如何生成的呢&#xff1f; 毫无疑问&#xff0c;参数肯…

[Leetcode]@python 107. Binary Tree Level Order Traversal II

题目链接 https://leetcode.com/problems/binary-tree-level-order-traversal-ii/ 题目原文 Given a binary tree, return the bottom-up level order traversal of its nodes values. (ie, from left to right, level by level from leaf to root). For example: Given binary…

LeetCode 2280. 表示一个折线图的最少线段数(几何)

文章目录1. 题目2. 解题1. 题目 给你一个二维整数数组 stockPrices &#xff0c;其中 stockPrices[i] [dayi, pricei] 表示股票在 dayi 的价格为 pricei 。 折线图 是一个二维平面上的若干个点组成的图&#xff0c;横坐标表示日期&#xff0c;纵坐标表示价格&#xff0c;折线…

一、mongodb数据库系列——介绍和安装 简单使用 增删改查

一、Mongodb的介绍和安装 学习目标 了解 非关系型数据库的优势了解 mongodb的安装 1. mongodb的介绍 1.1 什么是mongodb mongodb 是一个功能最丰富的NoSQL非关系数据库。由 C 语言编写。mongodb 本身提供S端存储数据&#xff0c;即server&#xff1b;也提供C端操作处理&…

第一次ActiveX Fuzzing测试

接着上一篇的看雪Exploit me试题。 这道题给出了一个ActiveX的DLL&#xff0c;挖掘这个DLL中的漏洞。 由于从来没有接触过ActiveX的Fuzzing&#xff0c;所以找了一些文章来看。自己动手试验了一下。 根据提示&#xff0c;使用了Comraider来作为Fuzzing工具。这个工具比较老了&a…

二、mongodb数据库系列——聚合操作 索引操作 权限管理

一、mongodb的聚合操作 学习目标 了解 mongodb的聚合原理掌握 mongdb的管道命令掌握 mongdb的表达式 1 mongodb的聚合是什么 聚合(aggregate)是基于数据处理的聚合管道&#xff0c;每个文档通过一个由多个阶段&#xff08;stage&#xff09;组成的管道&#xff0c;可以对每…

LeetCode 2283. 判断一个数的数字计数是否等于数位的值

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始长度为 n 的字符串 num &#xff0c;它只包含数字。 如果对于 每个 0 < i < n 的下标 i &#xff0c;都满足数位 i 在 num 中出现了 num[i]次&#xff0c;那么请你返回 true &#xff0c;否则返回 false 。 示例 …

LeetCode 2284. 最多单词数的发件人

文章目录1. 题目2. 解题1. 题目 给你一个聊天记录&#xff0c;共包含 n 条信息。给你两个字符串数组 messages 和 senders &#xff0c;其中 messages[i] 是 senders[i] 发出的一条 信息 。 一条 信息 是若干用单个空格连接的 单词 &#xff0c;信息开头和结尾不会有多余空格…

三、mongodb数据库系列——mongodb和python交互 总结

一、mongodb和python交互 学习目标 掌握 mongdb和python交互的增删改查的方法掌握 权限认证的方式使用pymongo模块 1. mongdb和python交互的模块 pymongo 提供了mongdb和python交互的所有方法 安装方式: pip install pymongo 2. 使用pymongo 2.1 导入pymongo并选择要操作的…