2017-08-27 92 views
0

问题LINK:我得到“虚空值不被忽视,因为它应该是”我该怎么办?

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

它有一个IDE,所以你可以解决它的网站本身。

问题:

鉴于3个排序阵列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 

说明:我们得到用于= 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; 

} 

回答

2

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

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

...等等。对于API设计的解释,请参阅Why doesn't std::queue::pop return value.?

+0

非常感谢你! –

+0

@yogeshdhiman如果此答案解决了您的问题,请考虑接受它,方法是单击复选标记 – Brian

相关问题