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

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.dtcms.com/a/140758.html

相关文章:

  • RT-Thread开发文档合集
  • Python大小整数池及intern机制详解
  • 模块内聚:理解和优化模块设计的关键
  • Web3架构下的数据隐私与保护
  • 【unity实战】Animator启用root motion根运动动画,实现完美的动画动作匹配
  • 基于大模型的直肠息肉诊疗全流程风险预测与方案优化研究报告
  • Ethernet/IP转ProfiNet边缘计算网关在能源管理中的应用:跨系统数据聚合与智能分析
  • SQL SERVER里面也可以插入存储过程,操作TCP,WEBSOCKET吗?数据发生改变时用于通知客户端
  • 量子神经网络编译器开发指南:从理论突破到产业落地全景解析
  • AbMole推荐——肿瘤类器官加速癌症研究成果产出
  • 安全光幕的CE认证
  • 2025年人工智能指数报告(斯坦福)重点整理
  • 用ffmpeg 实现拉取h265的flv视频转存成264的mp4 实现方案
  • 智慧校园整体解决方案
  • 番外篇 | SEAM-YOLO:引入SEAM系列注意力机制,提升遮挡小目标的检测性能
  • 小说阅读器 ebook-reader
  • Silverlight发展历程(微软2021年已经停止支持Silverlight 5)
  • ESP32之本地HTTP服务器OTA固件升级流程,基于VSCode环境下的ESP-IDF开发(附源码)
  • leetcode0112. 路径总和-easy
  • 每日算法【双指针算法】(Day 2-复写零)
  • 搜广推校招面经七十八
  • Linux系统编程之守护进程与调试技术
  • 施磊老师基于muduo网络库的集群聊天服务器(二)
  • 大模型如何突破“知识盲区”?一场静悄悄的技术革命正在发生
  • Pytest 的配置和命令行选项:掌控你的测试执行 (Pytest 系列之七)
  • VirtualBox导入 .ova 文件出错,怎么解决
  • 【Linux学习笔记】进程调度与切换之O(1)调度算法
  • Oracle日志系统之重做日志和归档日志
  • 2025年03月中国电子学会青少年软件编程(Python)等级考试试卷(四级)答案 + 解析
  • Python项目调用Java数据接口实现CRUD操作