我正在"void value not ignored as it ought to be"我该怎么办?



问题链接:

https://www.interviewbit.com/problems/minimize-the-absolute-difference/

它有一个 IDE,因此您可以在网站本身上解决它。

问题:

给定三个大小不一定相同的排序数组 A、B 和 C。

计算三元组 a、b、c 的最大数和最小数之间的最小绝对差,使得 a、b、c 分别属于数组 A、B、C。 即最小化 |max(a,b,c) - min(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 的最小差值为 | max(a,b,c) -min(a,b,c) | = |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;
}

pop_back()函数不会返回弹出的元素。你必须这样做:

a = A.back();
A.pop_back();

。等等。

请参阅 为什么 std::queue::p op 不返回值? 以获取 API 设计的说明。

最新更新