class Solution {
final int mod = 1000000007;
public int minAbsoluteSumDiff(int[] nums1, int[] nums2) {
int []rec=new int[nums1.length];
System.arraycopy(nums1,0,rec,0,nums1.length);
Arrays.sort(rec);
int maxn=0,sum=0;
for(int i=0;i<nums2.length;i++){
int dif=Math.abs(nums1[i]-nums2[i]);
sum=(sum+dif)%mod;
int idx=binartSearch(rec,nums2[i]);
if(idx<nums2.length) maxn=Math.max(maxn, dif-(rec[idx] - nums2[i]));
if(idx>0)maxn=Math.max(maxn,dif-(nums2[i]-rec[idx-1]));
}
return (sum-maxn+mod)%mod;
}
public int binartSearch(int []rec,int target){
if(rec[rec.length-1]<target) return rec.length;
int left=0,right=rec.length-1;
while(left<right){
int mid=(right-left)/2+left;
if(rec[mid]<target){
left=mid+1;
}
else right=mid;
}
return left;
}
}
绝对差值和
最新推荐文章于 2022-08-10 23:37:17 发布
这篇博客介绍了一个Java实现的解决方案,主要涉及数组操作、排序、二分查找以及数学运算。方法计算两个整数数组中,使元素差的绝对值之和最小的值,并使用二分搜索优化查找过程。核心代码包括`minAbsoluteSumDiff`和`binartSearch`两个函数,适用于算法和数据结构的学习。
摘要由CSDN通过智能技术生成