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

Leetcode 3574. Maximize Subarray GCD Score

  • Leetcode 3574. Maximize Subarray GCD Score
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3574. Maximize Subarray GCD Score

1. 解题思路

这一题是基于deepseek的实现上面搞定的,虽然deepseek事实上也是超时……

我的直接思路就是动态规划,但是那样是会直接超时的,而deepseek的解决方式是首先找出所有可能的最大公约数,然后考察其对应的score,最后取出其中的最大值。

但是deepseek的解答还是超时了,原因在于其要对每一个数找出其所有的约数,由于数字最大可以到 10 9 10^9 109,因此单个数的查找会非常耗时,我们也就是在这里做了一下优化,具体来说就是直接二重遍历一下所有的区间内的最大公约数,而不是考察每一个数的约数。

如此修改之后,代码勉强通过了全部测试样例,也是挺坑的……

2. 代码实现

给出python代码实现如下:

def get_primes(n):primes = set()status = [0 for _ in range(n+1)]for i in range(2, n+1):if status[i] == 1:continueprimes.add(i)for j in range(i, n+1, i):status[j] = 1return primesPRIMES = get_primes(10**5)class Solution:def maxGCDScore(self, nums: List[int], k: int) -> int:n = len(nums)if len(set(nums)) == 1:return max(n * nums[0], min(n, k) * 2 * nums[0])divisors = set()for i in range(n):_gcd = 2*nums[i]divisors.add(nums[i])divisors.add(_gcd)if _gcd in divisors and _gcd in PRIMES:continuefor j in range(i+1, n):_gcd = gcd(_gcd, 2*nums[j])divisors.add(_gcd)if _gcd == 1 or _gcd in PRIMES:breakans = 0divisors = sorted(divisors, reverse=True)for div in divisors:if div * n <= ans:breakop, cnt = 0, 0for i, num in enumerate(nums):if div * (n-i+cnt) <= ans:breakif num % div == 0:passelif (num * 2) % div == 0:op += 1else:op, cnt = 0, 0continuecnt += 1while cnt > 0 and op > k:li = i - cnt + 1if nums[li] % div != 0:op -= 1cnt -= 1ans = max(ans, cnt * div)return ans

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

相关文章:

  • skynet源码学习-skynet_timer定时器
  • 分布式ID最新最佳实践?UUIDv7介绍
  • 基于大模型预测的输尿管上段积水诊疗方案研究报告
  • 征程 6E/M|如何解决量化部署时 mul 与 bool 类型数据交互的问题
  • 期末考试复习总结-《ArkTS基础语法(下)》
  • 跌穿20万辆,更猛烈的价格战却导致销量暴跌,难怪电车内讧了!
  • Codeforces Round 1027 (Div. 3)-G
  • SpringBoot+Vue+MySQL全栈开发实战:前后端接口对接与数据存储详解
  • AI 内容农场治理与高质量信息获取指南
  • 发布一个angular的npm包(包含多个模块)
  • Playwright:高效处理浏览器兼容性的自动化测试利器
  • 【Pandas】pandas DataFrame interpolate
  • VSomeip库- 编译使用
  • 【Linux基础知识系列】第十七篇-使用Docker进行容器管理
  • 小白进阶shell学习-----脚本实战案例
  • 高防服务器中高防和硬防之间的区别
  • 上海市计算机学会竞赛平台第六届上海市青少年算法竞赛网络赛(青年组)文件排序
  • 交叉编译,对于初学者来说是个极难跨过去的砍
  • DICOM批量修改工具
  • 七.割草机技术总结--4G模块CAT1电源设计
  • 社交网站建设网/连云港百度推广总代理
  • 做网站店铺怎样打理/做网络推广的团队
  • 做招聘网站公司/推广普通话文字素材
  • 阿里云做私服网站/班级优化大师下载安装
  • ppt模板下载的网站/爱站网关键词排名
  • 怎样建设自己的物流信息网站/三只松鼠口碑营销案例