class Solution {
public:
int minAbsoluteSumDiff(vector<int>& nums1, vector<int>& nums2) {
int ans = 0;
int n = nums1.size();
int maxnum = abs(nums1[0]-nums2[0]);
int i,j = 0,k;
for(k = 0;k <n;k++)
{
int temp = abs(nums1[k]-nums2[k]);
ans = (ans+temp)%1000000007; //所有绝对差值加起来
if(temp > maxnum) { //找到最大差值和对应的位置
maxnum = temp;
j = k;
i = j;
}
}
int minnum = maxnum;
if(maxnum > 0) {
for(k = 0;k < n;k++)
{
int temp = abs(nums1[k]-nums2[j]);
if(temp < minnum) { //在num1中找到可替换的最小差值
i = k;
minnum = temp;
}
}
ans = (ans-maxnum+minnum+1000000007)%1000000007; //更新ans
}
return ans;
}
};
时间复杂度O(N),空间复杂度O(1)。