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

Leetcode 3312. Sorted GCD Pair Queries

  • Leetcode 3312. Sorted GCD Pair Queries
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3312. Sorted GCD Pair Queries

1. 解题思路

这一题的话坦率来说没有搞定,后来是找的大佬的代码抄了一下……

整体来说这道题思路上还是比较暴力的,还是一个二重循环,不过我是最暴力的二重循环,大佬稍微做了一下优化……

首先给出我的代码如下:

class Solution:def gcdValues(self, nums: List[int], queries: List[int]) -> List[int]:cnt = Counter(nums)nums = sorted(cnt.keys())m = max(nums)s = [0 for _ in range(m+1)]n = len(nums)for i in range(n):x = nums[i]s[x] += cnt[x] * (cnt[x]-1) // 2for j in range(i+1, n):y = nums[j]c = gcd(x, y)s[c] += cnt[x] * cnt[y]s = list(accumulate(s))return [bisect.bisect_right(s, q) for q in queries]

可以看到,就是两两求最大公约数,然后通过二分检索的方式求query的结果。而这个方法不出所料地超时了。

然后大佬们的优化点在于不是两两求最大公约数了,而是直接将所有可能的因数罗列出来,然后求每一个数作为最大公约数时的个数。

而对于具体的求法类似于求全部质数,即对每一个数,其作为最大公约数的个数为所有倍数上的数的个数总和取 C n 2 C_n^2 Cn2,然后减去其倍数上所有的数的最大公约数的数目。

如此一来的话差不多就是将时间复杂度从 O ( N 2 ) O(N^2) O(N2)减至 O ( N 3 / 2 ) O(N^{3/2}) O(N3/2)

2. 代码实现

给出python代码实现如下:

class Solution:def gcdValues(self, nums: List[int], queries: List[int]) -> List[int]:cnt = Counter(nums)nums = sorted(cnt.keys())m = max(nums)s = [0 for _ in range(m+1)]for i in range(m,0,-1):vc = sum(cnt[x] for x in range(i,m+1,i))vc = vc*(vc-1)//2 - sum(s[x] for x in range(i,m+1,i))s[i]=vcs = list(accumulate(s))return [bisect.bisect_right(s, q) for q in queries]

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

相关文章:

Leetcode 3312. Sorted GCD Pair Queries

Leetcode 3312. Sorted GCD Pair Queries 1. 解题思路2. 代码实现 题目链接:3312. Sorted GCD Pair Queries 1. 解题思路 这一题的话坦率来说没有搞定,后来是找的大佬的代码抄了一下…… 整体来说这道题思路上还是比较暴力的,还是一个二重…...

用 Delphi 做了一个简单的 CMS

Delphi 代码上面花的时间最少。 前提是你要熟悉 Delphi 的 WebBroker 框架。不熟悉也没关系,5分钟就可以入门,10分钟就熟悉了。 CMS 就是个基于 WEB 的内容管理嘛。相当于一个简单的没有跟贴功能的 BBS。这样的东西,后边是数据库&#xff0…...

ASK, PSK, FSK, DPSK

ASK, PSK, FSK, DPSK详解: 这四种调制方式都是数字调制技术,用于将数字信号转换成适合在信道上传输的模拟信号。它们的主要区别在于如何用模拟信号的变化来表示数字信息。 1. ASK (Amplitude Shift Keying) 幅移键控: 原理: ASK 通过改变载波信号的幅…...

【Linux】认识Linux内核中进程级别的文件结构体【files_struct】&文件IO模型初步演示

前言 大家好吖,欢迎来到 YY 滴 系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的《Linux》…...

[Offsec Lab] ICMP Monitorr-RCE+hping3权限提升

信息收集 IP AddressOpening Ports192.168.52.218TCP:22,80 $ nmap -p- 192.168.52.218 --min-rate 1000 -sC -sV -Pn PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.9p1 Debian 10deb10u2 (protocol 2.0) | ssh-hostkey: | 2048 de:b5:23:89:bb:9f:d4:1…...

Studying-多线程学习Part4 - 异步并发——async future、packaged_task、promise

异步并发——async future packaged_task promise 1.async、future 是C11引入的一个函数模版,用于异步执行一个函数,并返回一个future对象,表示异步操作的结果。使用 async 可以方便地进行异步编程,避免了手动创建线程和管理线程…...

【Java基础】用Scanner类获取控制台输入

目录 Scanner类是什么导入并创建读取一个数读取字符串读取一行读取直到空白字符为止读取多个数直到^z读取一个字符 Scanner类是什么 在Java中,Scanner 是一个非常有用的类,用于从各种输入源(如键盘、文件或其他输入流)读取数据。…...

微服务seata解析部署使用全流程

官网地址: Seata 是什么? | Apache Seata 1、Seata术语 用来管理分布式事务,由阿里巴巴出品。 【1、TC (Transaction Coordinator) - 事务协调者】 用来维护事务的,包括主事务和分支事务。 【2、TM (Transaction Manager) - …...

Linux性能调优技巧

目录 前言1. CPU性能优化1.1 调整CPU调度策略1.2 合理分配多核处理 2. 内存性能优化2.1 调整内存分配策略2.2 缓存和分页优化 3. 磁盘I/O性能优化3.1 使用合适的I/O调度器3.2 磁盘分区和文件系统优化 4. 网络性能优化4.1 优化网络参数4.2 调整网络拥塞控制算法 5. 系统监控与优…...

python 实现sha1算法

sha1算法介绍 SHA-1(Secure Hash Algorithm 1,安全散列算法1)是一种密码散列函数,由美国国家安全局(NSA)设计,并由美国国家标准技术研究所(NIST)发布为联邦数据处理标准…...

ejb-ref元素

ejb-ref 是用于在 Java EE (现在称为 Jakarta EE) 中引用 Enterprise JavaBeans (EJB) 的一个元素,主要用于定义和配置 SLEE (Service Logic Execution Environment) 组件中的 EJB 依赖关系。通过这个引用,SBB (Service Building Block) 可以轻松地访问和…...

Perl 子程序(函数)

Perl 子程序(函数) Perl 是一种高级、解释型、动态编程语言,广泛用于CGI脚本、系统管理、网络编程、 finance, bioinformatics, 以及其他领域。在Perl中,子程序(也称为函数)是组织代码和重用代码块的重要方…...

ElasticSearch 备考 -- Snapshot Restore

一、题目 备份集群下的索引 task,存储快照名称为 snapshot_1 二、思考 这个涉及的是集群的备份,主要是通过创建快照,涉及到以下2步骤 Setp1:注册一个备份 snapshot repository Setp2:创建 snapshot 可以通过两种方…...

【Linux】进程替换、命令行参数及环境变量(超详解)

目录 进程替换 替换函数的含义 命令行参数 环境变量 PATH 进程替换 我们先看代码&#xff1a; 1 #include<stdio.h>2 #include<unistd.h>3 int main()4 {5 printf("process...begin!\n");6 7 execl("/usr/bin/ls","ls"…...

MySQL事务日志—redo日志介绍

MySQL事务日志—redo日志 事务有4种特性&#xff1a; 原子性、一致性、隔离性和持久性。 那么事务的四种特性到底是基于什么机制实现? 事务的原子性、一致性由事务的 undo 日志事务的隔离性由锁机制和MVCC实现。事务的持久性由redo 日志来保证。 两类日志概述&#xff1a;…...

告别音乐小白!字节跳动AI音乐创作工具,让你一键变作曲家!

还在羡慕别人能创作动听的音乐&#xff1f;五音不全的你&#xff0c;也梦想着谱写属于自己的乐章&#xff1f;现在&#xff0c;机会来了&#xff01;字节跳动推出了一款AI音乐创作工具——抖音推出的海绵音乐&#xff0c;它能让你轻松一键创作音乐&#xff0c;即使是“音乐小白…...

空心正方形图案

KiKi学习了循环&#xff0c;BoBo老师给他出了一系列打印图案的练习&#xff0c;该任务是打印用“*”组成的“空心”正方形图案。 输入描述&#xff1a; 多组输入&#xff0c;一个整数(3~20)&#xff0c;表示输出的行数&#xff0c;也表示组成正方形边的“ * ”的数量。 输出描述…...

【EXCEL数据处理】000020 案例 保姆级教程,附多个操作案例。EXCEL使用表格。

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 【EXCEL数据处理】000020 案例 保姆级教程&#xff0c;附多个操作案例。…...

虾皮Shopee大数据面试题及参考答案

Cube 表性能优化,还有其他优化的方法吗? Cube 表性能优化可以从多个方面入手。 一方面,可以优化数据存储格式。选择合适的存储格式能够减少存储空间占用,提高数据读取速度。例如,Parquet 格式是一种高效的列式存储格式,它可以按列进行数据压缩,大大减少磁盘 I/O 和内存占…...

重学SpringBoot3-集成Redis(六)之消息队列

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-集成Redis&#xff08;六&#xff09;之消息队列 1. 什么是发布/订阅&#xff08;Pub/Sub&#xff09;&#xff1f;2. 场景应用3. Spring Boot 3 整合 R…...

Umi-OCR:开源离线OCR解决方案的全方位实践指南

Umi-OCR&#xff1a;开源离线OCR解决方案的全方位实践指南 【免费下载链接】Umi-OCR Umi-OCR: 这是一个免费、开源、可批量处理的离线OCR软件&#xff0c;适用于Windows系统&#xff0c;支持截图OCR、批量OCR、二维码识别等功能。 项目地址: https://gitcode.com/GitHub_Tren…...

如何快速配置罗技鼠标宏:5步实现绝地求生稳定压枪

如何快速配置罗技鼠标宏&#xff1a;5步实现绝地求生稳定压枪 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 在绝地求生的激烈对战中&#xff0…...

AutoGen实战解析:如何用多智能体对话构建下一代LLM应用

1. 什么是AutoGen&#xff1f;为什么它值得关注&#xff1f; 如果你最近在关注大语言模型&#xff08;LLM&#xff09;的应用开发&#xff0c;可能已经听说过AutoGen这个名字。简单来说&#xff0c;AutoGen是微软开源的一个人工智能框架&#xff0c;它让开发者能够通过多个可以…...

VSCode集成clang-tidy实现多语言命名规范自动化检查

1. 为什么需要自动化命名规范检查 在团队协作开发中&#xff0c;代码命名规范就像交通规则一样重要。想象一下&#xff0c;如果每个司机都按照自己的习惯开车&#xff0c;那道路会乱成什么样子&#xff1f;代码也是如此。我曾经接手过一个遗留项目&#xff0c;发现同一个变量在…...

Qwen3-0.6B-FP8实战:构建基于操作系统的命令行智能助手

Qwen3-0.6B-FP8实战&#xff1a;构建基于操作系统的命令行智能助手 你有没有过这样的经历&#xff1f;想用命令行完成一个任务&#xff0c;比如“找出所有昨天修改过的日志文件并压缩备份”&#xff0c;却记不清find命令那一长串复杂的参数&#xff0c;或者tar命令的语法又搞混…...

万字拆解OpenClaw,从Gateway到多Agent,揭秘Agent系统的完整运行密码

很多技术文章拆解框架时&#xff0c;总爱按模块逐一罗列&#xff0c;最后落得个“各说各的&#xff0c;毫无关联”的尴尬。与其这样&#xff0c;不如我们回归最本质的问题&#xff1a;当用户真的发来一条消息时&#xff0c;OpenClaw内部到底在发生什么&#xff1f;这条消息从输…...

手把手教你解决小程序支付跳转微支保的iOS兼容问题(附完整代码)

手把手教你解决小程序支付跳转微支保的iOS兼容问题&#xff08;附完整代码&#xff09; 在微信小程序开发中&#xff0c;支付功能是许多商业应用的核心环节。然而&#xff0c;当支付流程需要先跳转到微支保小程序完成实名认证时&#xff0c;开发者往往会遇到一个棘手的平台兼容…...

PSO-Transformer分类预测Matlab代码:基于粒子群优化算法优化Transfor...

PSO-Transformer分类 Matlab代码 基于粒子群优化算法(PSO)优化Transformer的数据分类预测(可以更换为单、多变量时序预测/回归&#xff0c;前私我)&#xff0c;Matlab代码&#xff0c;可直接运行&#xff0c;适合小白新手 程序已经调试好&#xff0c;无需更改代码替换数据集即可…...

终极指南:如何用Python脚本5分钟获取百度网盘真实下载链接

终极指南&#xff1a;如何用Python脚本5分钟获取百度网盘真实下载链接 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 你是否曾经为百度网盘的下载速度而烦恼&#xff1f;每次…...

如何用pose-search在5分钟内构建智能人体姿态分析系统

如何用pose-search在5分钟内构建智能人体姿态分析系统 【免费下载链接】pose-search x6ud.github.io/pose-search 项目地址: https://gitcode.com/gh_mirrors/po/pose-search 你是否曾经想过为你的应用添加实时人体姿态识别功能&#xff0c;但又担心技术门槛太高&#x…...