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

Leetcode 3542. Minimum Operations to Convert All Elements to Zero

  • Leetcode 3542. Minimum Operations to Convert All Elements to Zero
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3542. Minimum Operations to Convert All Elements to Zero

1. 解题思路

这一题的处理方法其实还是挺好想明白的,其实就是从小到大依次处理各个元素,对于每一个元素,将其前后连续的所有不小于该元素的节点连成一个连续子序列,然后对其进行统一操作,这样就能最优化地将所有元素均变为0。

但是这里的问题就在于说如何快速找出这连续的子序列,如果最暴力的走将会是一个 O ( N 2 ) O(N^2) O(N2)的算法复杂度的实现了。

这里,我们采用的方法是使用DSU的方法,然后处理方式上从大到小依次处理元素,考察每一个元素时,我们只需要考察其前后的元素是否有被处理过,如果处理过的情况下,其所处的连续簇当中是否有过相同大小的元素,如果有,就可以将其合并,如果没有,那么则必须额外增加一次操作来处理当前的元素。

由此,我们即可得到最优的操作数。

2. 代码实现

给出python代码实现如下:

class DSU:def __init__(self, arr):self.arr = arrself.root = [i for i in range(len(arr))]def find(self, k):if self.root[k] != k:self.root[k] = self.find(self.root[k])return self.root[k]def find_elem(self, k):return self.arr[self.find(k)]def union(self, a, b):x = self.find(a)y = self.find(b)if x != y:if self.arr[x] <= self.arr[y]:self.root[y] = xelse:self.root[x] = yreturnclass Solution:def minOperations(self, nums: List[int]) -> int:n = len(nums)dsu = DSU(nums)seen = set()nums = sorted([(x, i) for i, x in enumerate(nums)], reverse=True)ans = 0for x, i in nums:if x == 0:breakneed_op = Trueseen.add(i)if i-1 >= 0 and i-1 in seen:if dsu.find_elem(i-1) <= x:need_op = Falsedsu.union(i-1, i)if i+1 < n and i+1 in seen:if dsu.find_elem(i+1) <= x:need_op = Falsedsu.union(i+1, i)if need_op:ans += 1return ans

提交代码评测得到:耗时1674ms,占用内存47.3MB。

相关文章:

  • Android之横向滑动列表
  • 每日算法刷题计划Day5 5.13:leetcode数组3道题,用时1h
  • mac 10.15.7 svn安装
  • 《内网渗透测试:绕过最新防火墙策略》
  • C#高级编程:设计模式原则
  • 数据分析预备篇---Pandas的Series
  • langChain存储文档片段,并进行相似性检索
  • 【神经网络与深度学习】通俗易懂的介绍非凸优化问题、梯度消失、梯度爆炸、模型的收敛、模型的发散
  • GITLAB跑gradle项目 不借助maven-publish直接上传到nexus私人仓库
  • C++STL——map和set的使用
  • 使用DevEco Studio性能分析工具高效解决鸿蒙原生应用内存问题
  • 免费专业级 PDF 处理!SolidPDF OCR 识别 + 精准转换批量处理
  • 【源码+文档+调试讲解】驾校报名小程序2
  • 嵌入式开发学习日志(数据结构--顺序结构单链表)Day19
  • 在scala中sparkSQL连接masql并添加新数据
  • 分割一切(SAM) 论文阅读:Segment Anything
  • c++ std库中的文件操作学习笔记
  • QEMU模拟32位ARM实现自定义系统调用
  • CodeBuddy 中国版 Cursor 实战:Redis+MySQL双引擎驱动〈王者荣耀〉战区排行榜
  • RAG之大规模解析 PDF 文档全流程实战
  • 山西临汾哪吒主题景区回应雕塑被指抄袭:造型由第三方公司设计
  • 茅台1935今年动销达到预期,暂无赴港上市计划!茅台业绩会回应多个热点
  • 这一次,又被南昌“秀”到了
  • 茅台回应“茅台1935脱离千元价位带竞争”:愿与兄弟酒企共同培育理性消费生态
  • 淡马锡辟谣:淡马锡和太白投资未在中国销售任何投资产品或金融工具
  • 国际博物馆日中国主会场确定,北京将展“看·见殷商”等展览