问题链接:
https://www.interviewbit.com/problems/minimize-the-absolute-difference/ 它有一个ide,所以您可以在网站本身解决它。
问题:
给定不一定大小相同的三个排序数组A、B和C。
从三重子a,b,c求出最大数与最小数之间的最小绝对差,使a、b、c分别属于A、B、C阵列。即最小化最大(a,b,c) -最小(a,b,c)
例子:
输入:
A : [ 1, 4, 5, 8, 10 ]
B : [ 6, 9, 15 ]
C : [ 2, 3, 6, 6 ]输出:
1说明:我们得到了a=5,b=6,c=6的最小差,如:x_m_ max(a,b,c) - min(a,b,c) =x_(6-5)= 1。
我的解决方案:
int Solution::solve(vector<int> &A, vector<int> &B, vector<int> &C) {
int a,b,c,d,e,f,g,i,j;
a=A.pop_back();
b=B.pop_back();
c=C.pop_back();
while(A.size()>0 && B.size()>0 && C.size()>0){
if(a>=b && b>=c){
d = abs(a-c);
if(d<f){
f=d;
}
a=A.pop_back();
}
if(a>=b && c>=b){
d = abs(a-b);
if(d<f){
f=d;
}
a=A.pop_back();
}
if(b>=a && a>=c){
d = abs(b-c);
if(d<f){
f=d;
}
b=B.pop_back();
}
if(b>=a && c>=a){
d = abs(b-a);
if(d<f){
f=d;
}
b=B.pop_back();
}
if(c>=a && a>=b){
d = abs(c-b);
if(d<f){
f=d;
}
c=C.pop_back();
}
if(c>=b && b>=a){
d = abs(c-a);
if(d<f){
f=d;
}
c=C.pop_back();
}
}
cout<<f;
}发布于 2017-08-27 07:56:55
pop_back()函数不返回弹出的元素。你必须这样做:
a = A.back();
A.pop_back();..。诸若此类。
有关API设计的说明,请参见Why doesn't std::queue::pop return value.?。
https://stackoverflow.com/questions/45902835
复制相似问题