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

Leetcode 3556. Sum of Largest Prime Substrings

  • Leetcode 3556. Sum of Largest Prime Substrings
    • 1. 解题思路
    • 2. 代码实现
    • 3. 算法优化
  • 题目链接:3556. Sum of Largest Prime Substrings

1. 解题思路

这一题毕竟只是这一次双周赛的第一题,虽然标记为medium的题目,但是思路上还是非常简单的,只需要对所有的数字进行一下遍历,然后考察一下其是否为质数即可。

虽然这样遍历的算法复杂度会是 O ( N 2 ) O(N^2) O(N2),但由于数字的最大位数只有10位,因此无伤大雅。

问题的真正麻烦的在于对任意一个数如何判断它是否是质数,如果真的暴力去求解,那么需要的时间复杂度就会是 O ( N l o g N ) O(NlogN) O(NlogN),其中 N N N是数的大小,考虑到 N N N可能是一个10位数,这显然太大了,因此我们需要对这个进行一下优化,具体来说就是对 N N N进行一下开方,只要比 N \sqrt{N} N 小的所有质数均无法整除 N N N,那么 N N N必为一个质数。

2. 代码实现

给出python代码实现如下:

class Solution:def sumOfLargestPrimes(self, s: str) -> int:def is_prime(num):if num == 1:return Falsem = min(ceil(math.sqrt(num)) + 1, num)status = [0 for _ in range(m)]for i in range(2, m):if status[i] == 1:continueif num % i == 0:return Falsefor j in range(i, m, i):status[j] = 1return Trueprimes = set()n = len(s)for i in range(n):for j in range(i+1, n+1):num = int(s[i:j])if is_prime(num):primes.add(num)primes = sorted(primes, reverse=True)[:3]return sum(primes) if len(primes) > 0 else 0

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

3. 算法优化

进一步的,我们可以将质数的计算部分提取出来作为global变量,这样可以进一步减少重复计算,从而优化效率。

给出优化后的代码实现如下:

def get_primes(n):primes = set()status = [0 for _ in range(n+1)]for i in range(2, n+1):if status[i] == 0:primes.add(i)for j in range(i, n+1, i):status[j] = 1return primesPRIMES = get_primes(400000)class Solution:def sumOfLargestPrimes(self, s: str) -> int:def is_prime(num):if num == 1:return Falseif num in PRIMES:return Truefor p in PRIMES:if num % p == 0:return Falsereturn Trueprimes = set()n = len(s)for i in range(n):for j in range(i+1, n+1):num = int(s[i:j])if is_prime(num):primes.add(num)primes = sorted(primes, reverse=True)[:3]return sum(primes) if len(primes) > 0 else 0

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

http://www.xdnf.cn/news/651961.html

相关文章:

  • TPAMI 2025 | CEM:使用因果效应图解释底层视觉模型
  • Hive 分区详解:从基础概念到实战应用
  • R 语言科研绘图 --- 热力图-汇总
  • Linux系统:动静态库的制作与安装
  • ollama list模型列表获取 接口代码
  • Python环境搭建
  • 220Vac 1kW 无刷直流电机驱动器硬件方案
  • Spring AI 之多模态
  • [BUG]Debian/Linux操作系统中 安装 curl等软件显示无候选安装(E: 软件包 curl 没有可安装候选)
  • 国芯思辰| SerDes芯片SCS5501/SCS5502助力汽车触屏流媒体后视镜,兼容MAX9295A/MAX96717
  • Oracle 的 TX、TM、UL 锁对比
  • 【后端高阶面经:MongoDB篇】40、怎么优化MongoDB的查询性能?
  • 001 dart刷题
  • QT6.9中opencv引用路径的其中一种设置
  • AlphaCore GPU 物理仿真引擎内测邀请
  • crc32代码设计
  • .NET 8使用AOT发布ASP.NET Core应用
  • 《软件工程》第 7 章 - 软件体系结构设计
  • Wan2.1 图生视频 多卡推理批量生成视频
  • 在Windows上,将 Ubuntu WSL 安装并迁移到 D 盘完整教程(含 Appx 安装与迁移导入)
  • Cocos Creator 之 Label的实际宽高改变文本背景大小及常用方法
  • 【Volumetric Heatmap热力图插件的使用】
  • SpringBoot性能优化的12招
  • Flutter Container组件、Text组件详解
  • 商城图片性能优化实战:懒加载与下一代格式的化学反应
  • 游戏行业DDoS防护:基于IP信誉库的实时拦截方案
  • ArrayBlockingQueue 和 LinkedBlockingQueue 有什么区别?
  • 第一章第2节:安全生命周期(识别→防护→检测→响应→恢复)
  • LitCTF2025 WEB
  • linux文件权限管理