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

LeetCode每日一题4.17

2176.统计数组中相等且可以被整除的数对

在这里插入图片描述

问题分析

理解问题:
给定一个整数数组 nums 和一个整数 k。
需要找到所有满足 0 <= i < j < n 且 nums[i] == nums[j] 且 (i * j) 能被 k 整除的数对 (i, j) 的数目

思路

算法思路:
遍历数组中的每一对元素 (i, j)(其中 i < j)。
检查 nums[i] 是否等于 nums[j]。
如果相等,再检查 i * j 是否能被 k 整除。
如果上述条件都满足,则计数器加一。

代码

class Solution:def countPairs(self, nums: List[int], k: int) -> int:ans = 0for i in range(len(nums)-1):for j in range(i + 1, len(nums)):if nums[i] == nums[j] and (i * j) % k == 0:ans += 1return ans

复杂度分析

时间复杂度:两个for循环: ( O(n^2) )。
空间复杂度:( O(1) )

学习

优化方法:枚举右维护左
如果数组长度n = 10^5 ,暴力枚举超时
问题简化:
在这里插入图片描述

代码:

# 预处理每个数的因子
MX = 101
divisors = [[] for _ in range(MX)]
for i in range(1, MX):for j in range(i, MX, i):divisors[j].append(i)class Solution:def countPairs(self, nums: list[int], k: int) -> int:ans = 0cnt = defaultdict(int)for j, x in enumerate(nums):  # 枚举 j,计算左边有多少个符合要求的 iif j and x == nums[0]:ans += 1  # 单独统计 i=0 的情况k2 = k // gcd(k, j)  # i 必须是 k2 的倍数ans += cnt[(x, k2)]for d in divisors[j]:  # j 是 d 的倍数cnt[(x, d)] += 1return ans

复杂度分析

在这里插入图片描述

方法学习:

作者:灵茶山艾府
链接:https://leetcode.cn/problems/count-equal-and-divisible-pairs-in-an-array/solutions/1277713/mo-ni-by-endlesscheng-wegn/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章:

  • 数据江湖:Node.js 与 SQLite3 的轻量之道
  • 昆仑万维开源 32B 推理模型 Skywork-OR1:超越 DeepSeek-R1
  • 测试用例的生命周期:从诞生到退役的全过程管理
  • 华为OD机试真题——统计匹配的二元组个数(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
  • 华为OD机试真题——最小的调整次数/特异性双端队列(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
  • java抽象类
  • GIS开发笔记(4)结合osg及osgEarth实现地图选点功能
  • Java并发-AQS框架原理解析与实现类详解
  • 有关压缩算法的学习
  • Web Components 开发与集成
  • 【AI插件开发】Notepad++ AI插件开发实践:支持多平台多模型
  • MySQL Binlog 数据恢复总结
  • 不同Linux 发行版的软件包结构差异对比
  • centos7停服yum更新kernel失败解决办法
  • windows server C# IIS部署
  • 双指针算法(一)
  • c++11 绑定器bind
  • open webui 介绍 是一个可扩展、功能丰富且用户友好的本地部署 AI 平台,支持完全离线运行。
  • Python程序结构深度解析:顺序结构与对象布尔值的底层逻辑与应用
  • 【Docker项目实战】使用Docker部署Gitblit服务器
  • 青岛网站制作价格/二十个优化
  • 做网站小程序源码/最吸引人的营销广告词
  • 想象力网站建设/广州百度推广排名优化
  • 在国税网站更换购票员怎么做/广州营销型网站
  • 邯郸建设局网站/十大seo公司
  • 拆分网站开发/网络营销推广方式有哪些