网站推广名词解释,网站加一个会员登陆怎么做,网站多少流量够用,南京广告公司招聘题目#xff1a;2616. 最小化数对的最大差值 思路#xff1a;二分查找#xff0c;时间复杂度0(n log( 10^9 ) )。
对差值进行二分#xff0c;最大差值为max(nums[i])-min(nums[i])#xff0c;最小差值为0。细节看注释
C版本#xff1a;
class Solution {
public:bool …题目2616. 最小化数对的最大差值 思路二分查找时间复杂度0(n log( 10^9 ) )。
对差值进行二分最大差值为max(nums[i])-min(nums[i])最小差值为0。细节看注释
C版本
class Solution {
public:bool solve(int u,vectorint nums,int p){// 差值小于u的数量int ans0;for(int i0;i1nums.size();i){if(nums[i1]-nums[i]u){ans;i;}}return ansp;}int minimizeMax(vectorint nums, int p) {// 先升序排序sort(nums.begin(),nums.end());int nnums.size();// 最小差值、最大差值int left0,rightnums[n-1]-nums[0];// 二分查找while(leftright){int mid(leftright)/2;// 符合差值可缩小if(solve(mid,nums,p)) rightmid;else leftmid1;}return left;}
};JAVA版本
class Solution {boolean solve(int u,int[] nums, int p){int ans0;for(int i0;i1nums.length;i){if(nums[i1]-nums[i]u){ans;i;}}return ansp;}public int minimizeMax(int[] nums, int p) {Arrays.sort(nums);int nnums.length;int left0,rightnums[n-1]-nums[0];while(leftright){int mid(leftright)/2;if(solve(mid,nums,p)) rightmid;else leftmid1;}return left;}
}Go版本
func minimizeMax(nums []int, p int) int {n:len(nums)slices.Sort(nums)left,right:0,nums[n-1]-nums[0]for leftright {mid:(leftright)/2if solve(mid,nums,p)true {rightmid}else{leftmid1}}return left
}
func solve(u int,nums []int, p int) bool {ans:0for i:0;i1len(nums);i {if nums[i1]-nums[i]u {ians}}return ansp
}