首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我得到的是“虚值不应被忽视”,我该怎么做?

我得到的是“虚值不应被忽视”,我该怎么做?
EN

Stack Overflow用户
提问于 2017-08-27 07:55:37
回答 1查看 367关注 0票数 0

问题链接:

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)

例子:

输入:

代码语言:javascript
复制
A : [ 1, 4, 5, 8, 10 ]
B : [ 6, 9, 15 ]
C : [ 2, 3, 6, 6 ]

输出:

代码语言:javascript
复制
1

说明:我们得到了a=5,b=6,c=6的最小差,如:x_m_ max(a,b,c) - min(a,b,c) =x_(6-5)= 1。

我的解决方案:

代码语言:javascript
复制
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;

}
EN

回答 1

Stack Overflow用户

发布于 2017-08-27 07:56:55

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

代码语言:javascript
复制
a = A.back();
A.pop_back();

..。诸若此类。

有关API设计的说明,请参见Why doesn't std::queue::pop return value.?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45902835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档