3520. 逆序对计数的最小阈值 🔒
题目描述
给定一个整数数组 nums 和一个整数 k。
阈值 为 x 的逆序对是一对下标 (i, j) 满足:
i < jnums[i] > nums[j]- 两个数字的差 最多为 
x(即nums[i] - nums[j] <= x)。 
你的任务是确定最小的整数 min_threshold,使得 至少 有 k 个逆序对的阈值是 min_threshold。
如果没有这样的整数,返回 -1。
示例 1:
输入:nums = [1,2,3,4,3,2,1], k = 7
输出:2
解释:
对于阈值 x = 2,逆序对有:
(3, 4)其中nums[3] == 4和nums[4] == 3.(2, 5)其中nums[2] == 3和nums[5] == 2.(3, 5)其中nums[3] == 4和nums[5] == 2.(4, 5)其中nums[4] == 3和nums[5] == 2.(1, 6)其中nums[1] == 2和nums[6] == 1.(2, 6)其中nums[2] == 3和nums[6] == 1.(4, 6)其中nums[4] == 3和nums[6] == 1.(5, 6)其中nums[5] == 2和nums[6] == 1.
如果我们选择小于 2 的任意整数作为阈值,则逆序对的数量少于 k。
示例 2:
输入:nums = [10,9,9,9,1], k = 4
输出:8
解释:
对于阈值 x = 8,逆序对有:
(0, 1)其中nums[0] == 10和nums[1] == 9。(0, 2)其中nums[0] == 10和nums[2] == 9。(0, 3)其中nums[0] == 10和nums[3] == 9。(1, 4)其中nums[1] == 9和nums[4] == 1。(2, 4)其中nums[2] == 9和nums[4] == 1。(3, 4)其中nums[3] == 9和nums[4] == 1。
如果我们选择小于 8 的任意整数作为阈值,则逆序对的数量少于 k。
提示:
1 <= nums.length <= 1041 <= nums[i] <= 1091 <= k <= 109
解法
方法一
1 |  | 
1 |  | 
1 |  | 
1 |  |