欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > 719. 找出第 K 小的数对距离

719. 找出第 K 小的数对距离

2024/11/15 14:21:31 来源:https://blog.csdn.net/qq_43920838/article/details/143749998  浏览:    关键词:719. 找出第 K 小的数对距离

目录

  • 题目
  • 解法

题目

数对 (a,b) 由整数 a 和 b 组成,其数对距离定义为 a 和 b 的绝对差值。

给你一个整数数组 nums 和一个整数 k ,数对由 nums[i] 和 nums[j] 组成且满足 0 <= i < j < nums.length 。返回 所有数对距离中 第 k 小的数对距离。

解法

class Solution {
public:int smallestDistancePair(vector<int>& nums, int k) {sort(nums.begin(), nums.end());int n = nums.size(), left = 0, right = nums.back() - nums.front();while (left <= right) {int mid = (left + right) / 2;int cnt = 0;for (int j = 0; j < n; j++) {int i = lower_bound(nums.begin(), nums.begin() + j, nums[j] - mid) - nums.begin();cnt += j - i;}if (cnt >= k) {right = mid - 1;} else {left = mid + 1;}}return left;}
};

和之前一道题一样,查找和的范围,这会儿查找差的范围果然来了。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com