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

【Leetcode 每日一题】2563. 统计公平数对的数目

问题背景

给你一个下标从 0 0 0 开始、长度为 n n n 的整数数组 n u m s nums nums,和两个整数 l o w e r lower lower u p p e r upper upper,返回 公平数对的数目 。
如果 ( i , j ) (i, j) (i,j) 数对满足以下情况,则认为它是一个 公平数对 :

  • 0 ≤ i < j < n 0 \le i < j < n 0i<j<n,且
  • l o w e r ≤ n u m s [ i ] + n u m s [ j ] ≤ u p p e r lower\le nums[i] + nums[j] \le upper lowernums[i]+nums[j]upper

数据约束

  • 1 ≤ n u m s . l e n g t h ≤ 1 0 5 1 \le nums.length \le 10 ^ 5 1nums.length105
  • n u m s . l e n g t h = n nums.length = n nums.length=n
  • − 1 0 9 ≤ n u m s [ i ] ≤ 1 0 9 -10 ^ 9 \le nums[i] \le 10 ^ 9 109nums[i]109
  • − 1 0 9 ≤ l o w e r ≤ u p p e r ≤ 1 0 9 -10 ^ 9 \le lower \le upper \le 10 ^ 9 109lowerupper109

解题过程

对于任意一个 n u m s [ j ] nums[j] nums[j],能与它构成公平数对的 n u m s [ i ] nums[i] nums[i] 范围是 l o w e r − n u m s [ i ] ≤ n u m s [ j ] ≤ u p p e r − n u m s [ i ] lower - nums[i] \le nums[j] \le upper - nums[i] lowernums[i]nums[j]uppernums[i]
由于题目要求只是从数组中挑选两个数字,数组中元素的顺序不影响最终的结果,可以先排序,用二分查找。

具体实现

class Solution {public long countFairPairs(int[] nums, int lower, int upper) {Arrays.sort(nums);long res = 0;for (int i = 0; i < nums.length; i++) {int right = binarySearch(nums, i, upper - nums[i] + 1);int left = binarySearch(nums, i, lower - nums[i]);res += right - left;}return res;}private int binarySearch(int[] nums, int right, int target) {int left = 0;while (left < right) {int mid = left + ((right - left) >>> 1);if (nums[mid] < target) {left = mid + 1;} else {right = mid;}}return left;}
}

相关文章:

  • LeetCode 热题 100_乘积最大子数组(88_152_中等_C++)(动态规划)
  • rpcrt4!COMMON_AddressManager函数分析之和全局变量rpcrt4!AddressList的关系
  • 纯FPGA实现AD9361控制的思路和实现 UART实现AXI_MASTER
  • 《AI大模型应知应会100篇》第26篇:Chain-of-Thought:引导大模型进行步骤推理
  • 常见设计模式
  • Github 2025-04-19Rust开源项目日报 Top10
  • 清华《数据挖掘算法与应用》K-means聚类算法
  • Redis--主从复制
  • 记录一次项目中使用pdf预览过程以及遇到问题以及如何解决
  • 【Bluedroid】蓝牙存储模块配置管理:启动、读写、加密与保存流程解析
  • Unity webgl 获取图片或视频数据
  • UI键盘操作
  • 机器学习+深度学习
  • 开发基于python的商品推荐系统,前端框架和后端框架的选择比较
  • 青少年编程与数学 02-016 Python数据结构与算法 30课题、数据压缩算法
  • 基于DeepSeek与Excel的动态图表构建:技术融合与实践应用
  • 平均池化(Average Pooling)
  • 【绘制图像轮廓】图像处理(OpenCV) -part7
  • Fastdata极数:全球AR/VR行业发展趋势报告2025
  • spring-batch批处理框架(1)
  • 马上评|古籍书店焕新归来,“故纸陈香”滋养依旧
  • 女子报警称醉酒后疑似被性侵,长沙警方:嫌犯邱某某已被刑拘
  • 如何应对国际贸易形势变化?长三角四省市主要领导密集部署
  • 长沙岳麓警方通报“女子疑被性侵”:正在进一步侦办
  • 美法官裁定谷歌非法垄断在线广告
  • 轻轻一碰就血流不止?血友病患者的“隐形创可贴”来了