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

做网站499微信网站设计制作

做网站499,微信网站设计制作,360优化大师官网,做php网站方向要会什么文章目录 1. 暴力求解2. 差分数组二分查找leedcodet评论题解 leetcode:3356. 零数组变换② 给你一个长度为 n 的整数数组 nums 和一个二维数组 queries,其中 queries[i] [li, ri, vali]。 每个 queries[i] 表示在 nums 上执行以下操作: 将…

文章目录

      • 1. 暴力求解
      • 2. 差分数组+二分查找
        • leedcodet评论题解

leetcode:3356. 零数组变换②

给你一个长度为 n 的整数数组 nums 和一个二维数组 queries,其中 queries[i] = [li, ri, vali]

每个 queries[i] 表示在 nums 上执行以下操作:

  • nums[li, ri] 范围内的每个下标对应元素的值 最多 减少 vali
  • 每个下标的减少的数值可以独立选择。

零数组 是指所有元素都等于 0 的数组。

返回 k 可以取到的 最小非负 值,使得在 顺序 处理前 k 个查询后,nums 变成 零数组。如果不存在这样的 k,则返回 -1。

示例 1:

输入: nums = [2,0,2], queries = [[0,2,1],[0,2,1],[1,1,3]]

输出: 2

解释

  • 对于 i = 0(l = 0, r = 2, val = 1):
    • 在下标 [0, 1, 2] 处分别减少 [1, 0, 1]。
    • 数组将变为 [1, 0, 1]。
  • 对于 i = 1(l = 0, r = 2, val = 1):
    • 在下标 [0, 1, 2] 处分别减少 [1, 0, 1]。
    • 数组将变为 [0, 0, 0],这是一个零数组。因此,k 的最小值为 2。

示例 2:

输入: nums = [4,3,2,1], queries = [[1,3,2],[0,2,1]]

输出: -1

解释

  • 对于 i = 0(l = 1, r = 3, val = 2):
    • 在下标 [1, 2, 3] 处分别减少 [2, 2, 1]。
    • 数组将变为 [4, 1, 0, 0]。
  • 对于 i = 1(l = 0, r = 2, val = 1):
    • 在下标 [0, 1, 2] 处分别减少 [1, 1, 0]。
    • 数组将变为 [3, 0, 0, 0],这不是一个零数组。

1. 暴力求解

暴力求解:倒在621/627

class Solution(object):def minZeroArray(self, nums, queries):""":type nums: List[int]:type queries: List[List[int]]:rtype: int"""# 暴力求解arr = [1] * len(nums)sum0 = 0for num in nums:sum0 += numif sum0 == 0:return 0for epoch, (l, r, val) in enumerate(queries):for i in range(l, r + 1):# 通过数组arr,如果减到0,则之后不用下面的操作if arr[i]:if nums[i] > val:nums[i] -= valelse:nums[i] = 0 arr[i] = 0sum = 0for num in nums:sum += numif sum == 0:return epoch + 1return -1

2. 差分数组+二分查找

class Solution(object):def minZeroArray(self, nums, queries):""":type nums: List[int]:type queries: List[List[int]]:rtype: int"""# 差分数组+二分查找def check(k):diff = [0] * (len(nums) + 1)for l, r, val in queries[:k]:diff[l] += valdiff[r + 1] -= valsum_i = 0for i in range(len(nums)):sum_i += diff[i]if nums[i] > sum_i:return Falsereturn Trueleft = -1right = len(queries) + 1while left + 1 < right:mid = (left + right) // 2# 看中间mid是否满足条件使得零数组if check(mid):right = midelse:left = midreturn right if right <= len(queries) else -1
leedcodet评论题解

在这里插入图片描述
复杂度分析
时间复杂度:O((n+q)logq),其中 n 是 nums 的长度,q 是 queries 的长度。
空间复杂度:O(n)。Python 忽略切片空间。

链接:https://leetcode.cn/problems/zero-array-transformation-ii/solutions/2991505/liang-chong-fang-fa-er-fen-da-an-chai-fe-rcvg/
来源:力扣(LeetCode)

http://www.dtcms.com/a/507512.html

相关文章:

  • 网站开发充值功能经营管理培训课程
  • 使用 grubby工具进行多内核管理和切换的核心操作
  • LeetCode每日一题——三角形的最大周长
  • 英飞凌CoolSiC mosfet现在采用TO-247PLUS-4
  • Altium Designer(AD24)原理图符号库绘图按钮总结
  • 西安开发网站的公司西安网站建设ruiqinet
  • 自建网站 备案html5手机网站开发视频
  • spring 中 HttpStatus 与 ResponseEntity
  • 网站开发如何入账建设银行网站
  • C++ 圆台体积和表面积计算程序(Program for Volume and Surface area of Frustum of Cone)
  • 从 0 到 1 搭智能路侧停车系统:SpringCloud Nacos/Feign/Seata 全链路实现(源码可复用)
  • Bootstrap5 导航栏
  • 【基础理论】位置向量|位置编码学习笔记
  • 基于8051+PROTEUS仿真实例006-单只数码管循环显示0~9
  • 如何解决 pip install -r requirements.txt 子目录可编辑安装缺少 pyproject.toml 问题
  • C# 里的 KeyValuePair<TKey, TValue>
  • Speckit 简明教程
  • 明知手机忘带却不着急回去拿,因为可以远程控制
  • 深入理解 CSS 表格布局:table-layout 的秘密与实战详解(附费用报销单案例)
  • rsync+sersync实现数据实时双向同步
  • ppt模板去哪个网站下载德州核酸检测最新公告
  • 迅为RK3568开发板OpenHarmony系统南向驱动开发手册-UART应用开发编译源码
  • java面试-0216-HashMap和LinkedHashMap、TreeMap、HashTable√、ConcurrentHashMap区别?
  • 【文献分享】KADAIF:一种针对复杂微生物组数据的异常检测方法
  • React Native开发AndroidIOS流程完整指南
  • 身份证实名认证接口在金融领域的应用:筑牢风控第一道防线
  • 视频图像数据接入指南
  • STM32H743-ARM例程24-USB_MSC
  • asp网站防注入代码有源码搭建网站难不难
  • go语言每日3题