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

Leetcode 3495. Minimum Operations to Make Array Elements Zero

  • Leetcode 3495. Minimum Operations to Make Array Elements Zero
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3495. Minimum Operations to Make Array Elements Zero

1. 解题思路

这一题的话核心就是统计对任意自然数 n n n,从 1 1 1 n n n当中所有的数字对于 4 4 4的阶数之和,用数学公式表达就是:
f ( n ) = ∑ i = 1 n ⌈ l o g 4 ( i ) ⌉ f(n) = \sum\limits_{i=1}^{n} \lceil\mathop{log}_4(i)\rceil f(n)=i=1nlog4(i)⌉

当然,直接的计算这个问题还是比较复杂的,不过我们可以通过迭代的方式对其进行计算,显然 1 , 2 , 3 1,2,3 1,2,3三个数可以一次操作直接处理了,对于剩余的 4 4 4 n n n,我们可以按照对其 4 4 4的余数进行分组,然后进行一次除以 4 4 4的操作,从而得到 4 4 4 1 1 1 ⌊ n 4 ⌋ \lfloor\frac{n}{4}\rfloor 4n的数,这样,我们就将问题简化到从求 1 1 1 n n n变成了求 1 1 1 ⌊ n 4 ⌋ \lfloor\frac{n}{4}\rfloor 4n了。迭代我们即可得到我们最终的问题的解。

然后,有了上述函数 f ( n ) f(n) f(n)之后,事实上我们就得到了任意范围 [ l , r ] [l,r] [l,r]只能的 4 4 4的阶数的和 s s s,而要使之变为 0 0 0,其所需要的操作次数事实上就是 ⌈ s 2 ⌉ \lceil\frac{s}{2}\rceil 2s

综上,我们将其翻译为代码语言即可。

2. 代码实现

给出python代码实现如下:

@lru_cache(None)
def count4(n):
    if n < 4:
        return n
    ans = 3
    for r in range(4):
        k = (n-r) // 4
        ans += k + count4(k)
    return ans

class Solution:
    def minOperations(self, queries: List[List[int]]) -> int:
        ans = 0
        for l, r in queries:
            need = count4(r)-count4(l-1)
            ans += (need+1)//2
        return ans

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

相关文章:

  • 《基于Flask的态势感知系统》开题报告
  • Edge浏览器如何默认启动某个工作区 / 为工作区添加快捷方式
  • 设置GeoJSONVectorTileLayer中的line填充图片
  • C++-C++中的几种cast
  • 大数据中的数据预处理:脏数据不清,算法徒劳!
  • Codeforces Round 1011 (Div. 2) CD
  • Spring AOP + RocketMQ 实现企业级操作日志异步采集(实战全流程)
  • linux 备份工具,常用的Linux备份工具及其备份数据的语法
  • Apache漏洞再现
  • 每日算法-250323
  • 常见中间件漏洞攻略-Weblogic篇
  • Jenkins最新版,配置Gitee私人令牌和Gitee凭证
  • 2025年中国AI搜索的行业洞察报告
  • 如何使用SystemVerilog SVA检查跨时钟域信号?
  • C++多线程编程:从创建到管理的终极指南
  • VLAN章节学习
  • 万象更新(一)VTK 坐标轴、相机方向坐标轴、立方体坐标轴
  • 基于 C++ 类的程序设计模式与应用研究
  • Python个人学习笔记(19):模块(正则表达式)
  • JVM类加载过程详解
  • 北京动物园:大熊猫“萌兰”没有参加日本大阪世博会的计划
  • 人民日报评论员:汇聚起工人阶级和广大劳动群众的磅礴力量
  • 俄外长与美国务卿通电话,讨论俄美关系及乌克兰问题
  • 国家发展改革委:我们对实现今年经济社会发展目标任务充满信心
  • 朝鲜证实出兵俄罗斯协助收复库尔斯克
  • 体坛联播|利物浦提前4轮夺冠,安切洛蒂已向皇马更衣室告别