给定一个带有正整数的数组(可以包含重复的元素),我想找到一个带有正元素的第二个数组(但没有重复的元素),使得两个数组的相邻元素之间的绝对差最小,即{{1的总和}}是最小的。 给定数组中的其他元素是<=数组的大小。
到目前为止,我已经尝试过贪婪的方法,但是失败了。这是我的尝试。
abs(a[i]-b[i])
这里for(long long i=0 ; i<n ; ++i){
cin >> given_array[i];
}
sort(given_array.begin(),given_array.end());
for(long long i=0 ; i<n ; ++i)
{
for(long long j=0 ; ; j++)
{
// visited array keeps track if I have already used a element in answer array
if(given_array[i]-j>0 && !visited[given_array[i]-j])
{
visited[given_array[i]-j] = 1;
answer.pb(v[i]-j);
min_value += j;
break;
}
if(!visited[given_array[i]+j])
{
visited[given_array[i]+j] = 1;
answer.pb(v[i]+j);
min_value += j;
break;
}
}
}
是我的结果数组,answer
是最小绝对差。
我该如何处理?