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

719.找出第K小的数对距离(双指针、K值问题)

目录

  • 题目
  • 过程
  • 解法

题目

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

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

过程

思路1:列举,然后双指针两端搜索收敛最小值。
思路2:双指针,两端往中心搜索.先进行排序。
在看到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 i = 0, j = 0; j < n; j++) {
                while (nums[j] - nums[i] > mid) {
                    i++;
                }
                cnt += j - i;
            }
            if (cnt >= k) {
                right = mid - 1;
            } else {
                left = mid + 1;
            }
        }
        return left;
    }
};


http://www.kler.cn/a/520564.html

相关文章:

  • docker 部署 java 项目详解
  • 景联文科技加入AIIA联盟数据标注分委会
  • Vue.js组件开发-如何实现带有搜索功能的下拉框
  • 飞牛 fnOS 安装8852be网卡驱动并成功连接
  • 全连接神经网络(前馈神经网络)
  • SkyWalking介绍
  • On to OpenGL and 3D computer graphics
  • 【C++高并发服务器WebServer】-8:终端、进程组、会话、守护进程
  • git回退
  • 家居 EDI:Haverty‘s EDI 需求分析
  • 【Postman接口测试】Postman的常见断言
  • 【数据结构】空间复杂度
  • P1177 【模板】排序
  • 1.26学习记录
  • Libreoffice实现Word、Excel在线预览
  • 荔枝派LicheePi Zero V3S芯片图形系统开发详解
  • 深度学习VS机器视觉
  • ORB-SLAM2源码学习:Initializer.cc⑩: Initializer::FindFundamental找到最好的基础矩阵F
  • spark streaming基础操作
  • 数学建模论文通用模板(细节方法二)
  • 大数据之路:阿里巴巴大数据实践(1)
  • webview_flutter_wkwebview3.17.0 --Cookie认证
  • kubernetes 核心技术-Namespace
  • 【信息系统项目管理师-选择真题】2015下半年综合知识答案和详解
  • 从零开始打造智能推荐引擎:技术、实践与未来展望
  • xss靶场(portswiggrer)