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

2563、统计公平数对的数目

题目:

解答:

二分查找,闭区间。

先sort nums,让其有序。

遍历,对第i个数(i为下标,从0开始),寻找能令其满足题设条件的数x,lower<=nums[i]+x<=upper,再使用两次二分,查找满足nums[i]+x<lower的最小下标对应的数和nums[i]+x<=upper的最小下标对应的数。二者相减即获得nums[i]对应的。那么ans+=二者相减来更新。

二分查找过程中,left初始值从i+1开始即可。

class Solution {
public:long long countFairPairs(vector<int>& nums, int lower, int upper) {sort(nums.begin(),nums.end());int n = nums.size();if(n==1) return 0;long long ans = 0;for(int i = 0;i < n-1;i++){int left=i+1;int right=n-1;int mid = left+(right-left)/2;while(left<=right){if(nums[i]+nums[mid]<lower){left=mid+1;}else{right=mid-1;}mid = left+(right-left)/2;}int templeft = left;right=n-1;mid=left+(right-left)/2;while(left<=right){if(nums[i]+nums[mid]<=upper){left=mid+1;}else{right=mid-1;}mid=left+(right-left)/2;}ans+=left-templeft;}return ans;}
};

时间复杂度O(nlogn) 排序nlogn,遍历*查找也是n*logn

空间复杂度O(1)

http://www.dtcms.com/a/269662.html

相关文章:

  • ElasticSearch集群状态查询及_cat 命令详解
  • JDBC 获取新增行主键值详解
  • 向量与向量组的线性相关性 线性代数
  • 【Android】搭配安卓环境及设备连接
  • 17-C#的socket通信TCP-1
  • 静态路由实验以及核心原理
  • 计算机网络第九章——数据链路层《局域网》
  • 裂变时刻:全球关税重构下的券商交易系统跃迁路线图(2025-2027)
  • 3.springboot2使用selenium(java8)
  • 多模态大语言模型arxiv论文略读(152)
  • 【LeetCode 热题 100】142. 环形链表 II——快慢指针
  • X00193-MASAC强化学习算法的多无人机协同路径规划
  • 一文讲清楚React中的key值作用与原理
  • PostgreSQL复制技术全解析:从物理复制到逻辑复制的实践指南
  • Ollama+OpenWebUI 0.42+0.3.35 最新版一键安装教程,解决手动更新失败问题
  • Swift 解 LeetCode 321:拼接两个数组中的最大数,贪心 + 合并全解析
  • WebSocket实战:打造实时在线聊天室
  • NealFun安卓版:创意无限,娱乐至上
  • 学习设计模式《十七》——状态模式
  • 干货分享 | TSMaster DBC编辑器操作指南:功能详解+实战示例
  • Spring Boot 事务失效问题详解:原因、场景与解决方案
  • Spring Boot + Easy Excel 自定义复杂样式导入导出
  • [Swarm] Result对象 | 智能体切换 | Response对象 | muduo review
  • Android.mk拷贝文件、文件夹
  • 5 种备份和恢复安卓短信的方法
  • 音频主动降噪技术
  • 快手播放量是什么意思?浏览量等于播放量吗
  • Spring注解驱动开发
  • Rust 的 Copy 语义:深入浅出指南
  • 广度优先与深度优先遍历核心逻辑理解及实践