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

Leetcode 3326. Minimum Division Operations to Make Array Non Decreasing

  • Leetcode 3326. Minimum Division Operations to Make Array Non Decreasing
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3326. Minimum Division Operations to Make Array Non Decreasing

1. 解题思路

这一题的话就是要看出来题中给出的operation的本质事实上就是将任意一个数变为其最小的非1的约数,且这个数必然为一个质数。

因此,我们只需要实现找出所有的质数,然后依次看一下其是否为目标数的因子即可相对快速地完成目标操作。

另一方面,由于目标是获取一个非减数列,因此我们可以从后往前看,不断考察每一个数可以取到的最大值,对于最后一个数,显然不动最好,此后每一个数,如果他本身小于这个最大值,那么最好就是保留这个值作为最新的取值上限,否则就得做一次op,看看变换之后的数是否能够比这个目标值小,如果是,则用这个新的数作为新的上限,反之返回-1即可。

2. 代码实现

给出python代码实现如下:

def get_primes(n):status = [0 for _ in range(n+1)]primes = []for i in range(2, n+1):if status[i] == 1:continueprimes.append(i)for j in range(i, n+1, i):status[j] = 1return primesPRIMES = get_primes(10**5+1)class Solution:def minOperations(self, nums: List[int]) -> int:def fn(num, _max):for i in PRIMES:if i > _max:breakif num % i == 0:return ireturn -1_max = nums[-1]ans = 0for num in nums[::-1]:if num <= _max:_max = numcontinueelse:num = fn(num, _max)if num == -1:return -1else:_max = numans += 1return ans

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

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

相关文章:

  • redo文件误删除后通过逻辑备份进行恢复
  • 7805的输出电压如何调整?
  • git命令使用一览【自用】
  • MES系列-报表和分析
  • 如何在分布式环境中实现高可靠性分布式锁
  • Vue基础(4)
  • Redis高阶篇之Redis单线程与多线程
  • 【C++】STL——priority_queue优先级队列
  • 大数据新视界 --大数据大厂之大数据在智慧城市建设中的应用:打造智能生活的基石
  • 使用枚举来实现策略模式
  • 区块链技术原理
  • Spring Boot 接口数据加解密
  • 2018年计算机网络408真题解析
  • Javascript 脚本查找B站限时免费番剧
  • YoloV10改进策略:主干网络改进|DeBiFormer,可变形双级路由注意力|全网首发
  • C#学习笔记(一)
  • MATLAB边缘检测
  • Tortoise SVN 安装汉化教程(乌龟SVN)
  • 深入了解Spring重试组件spring-retry
  • 海南聚广众达电子商务咨询有限公司靠谱吗怎么样?
  • Java的魔法世界:面向对象编程(OOP)是什么?
  • 软件测试笔记——接口测试
  • 东方通 TongRDS V2 配置与开机自启指南及 Spring Boot 集成
  • 在 VS Code 中调试 Tensor 形状不显示的问题及解决方案
  • Linux 时间获取全面总结
  • SQL 自学:游标(Cursors)的理解与应用
  • IO多路复用概述与epoll简介
  • 关于region_to_label算子的想法
  • uni-app 实现好看易用的抽屉效果
  • PowerShell 脚本 比较两文件差异(带粗狂进度条)并汇总输出