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

leetcode 2364. 统计坏数对的数目 中等

给你一个下标从 0 开始的整数数组 nums 。如果 i < j 且 j - i != nums[j] - nums[i] ,那么我们称 (i, j) 是一个 数对 。

请你返回 nums 中 坏数对 的总数目。

示例 1:

输入:nums = [4,1,3,3]
输出:5
解释:数对 (0, 1) 是坏数对,因为 1 - 0 != 1 - 4 。
数对 (0, 2) 是坏数对,因为 2 - 0 != 3 - 4, 2 != -1 。
数对 (0, 3) 是坏数对,因为 3 - 0 != 3 - 4, 3 != -1 。
数对 (1, 2) 是坏数对,因为 2 - 1 != 3 - 1, 1 != 2 。
数对 (2, 3) 是坏数对,因为 3 - 2 != 3 - 3, 1 != 0 。
总共有 5 个坏数对,所以我们返回 5 。

示例 2:

输入:nums = [1,2,3,4,5]
输出:0
解释:没有坏数对。

提示:

  • 1 <= nums.length <= 10^5
  • 1 <= nums[i] <= 10^9

分析:

直接枚举所有数对的时间复杂度为 n 的平方,其中 n 是 nums 的长度,容易超时。可以移动不等式左右两边,将与 i 相关的挪到一边,并将与 j 相关的挪到另一边,即可得到:

nums[i]−i=nums[j]−j

用哈希表去统计每一个 nums[i]−i 的个数,并在从左到右遍历 i 的过程中计算与之不同的个数,将其累加到答案中。遍历结束后可得题目所求。

class Solution {
public:long long countBadPairs(vector<int>& nums) {long long ans=0;map<int,int>mp;for(int i=0;i<nums.size();++i)ans+=i-mp[nums[i]-i],mp[nums[i]-i]++;return ans;}
};
http://www.xdnf.cn/news/163.html

相关文章:

  • 在windows上交叉编译opencv供RK3588使用
  • 嵌入式linux架构理解(宏观理解)6ull学习心得---从架构理解到自写程序运行及自写程序开机自启动
  • #Linux动态大小裁剪以及包大小变大排查思路
  • 淘宝商品图片API安全调用指南:签名生成与错误处理机制
  • 从右到左 vs 从左到右:字符串转整数的两种方式
  • Web 前端包管理工具深度解析:npm、yarn、pnpm 全面对比与实战建议
  • 图+文+语音一体化:多模态合成数据集构建的实战与方法论
  • wordpress 垂直越权(CVE=2021-21389)漏洞复现详细教程
  • PHP腾讯云人脸核身获取FaceId
  • 《AI大模型应知应会100篇》第24篇:限定输出格式:如何让AI回答更加结构化
  • GCD算法的学习
  • 第三阶段面试题
  • Git常用命令分类汇总
  • 如何学习和研究量子计算与量子计算机:从理论到实践的完整路径
  • MySQL+Redis实战教程:从Docker安装部署到自动化备份与数据恢复20250418
  • Qt官方案例知识点总结(图形视图——Colliding Mice)
  • 人脸扫描黑科技:多相机人脸扫描设备,打造你的专属数字分身
  • 学术AI工具推荐
  • 基于WebRTC技术的EasyRTC:支持任意平台设备的实时音视频通信解决方案
  • 科技天眼守望农田:珈和卫星遥感监测赋能智慧农业,护航粮食安全新未来
  • 替代升级VMware | 云轴科技ZStack构建山西证券一云多芯云平台
  • python有序列表
  • Excel提取图片并自动上传到文件服务器(OOS),获取文件链接
  • Docker用model.config部署及更新多个模型
  • 【基础知识补充】标准库类型:string和vector
  • JDBC 与 MyBatis 详解:从基础到实践
  • 07_Docker 资源限制
  • 软件研发技术团队管理规范
  • 安卓手机如何改ip地址教程
  • ETL数据集成平台在交通运输行业的五大应用场景