题目如图所示:

class Gloves {
public:
int findMinimum(int n, vector<int> left, vector<int> right) {
// write code here
int count = 0;
int a = 0, b = 0, c=0, d=0;
vector<int>::iterator it = left.begin();
vector<int>::iterator rit = right.begin();
for (int i = 0; i < left.size(); i++)
{
if (left[i] == 0)
{
*it = left[i];
it = left.erase(it);
count += right[i];
*rit = right[i];
rit = right.erase(rit);
i--;
}
else
{
it++;
rit++;
}
}
it = left.begin();
rit = right.begin();
for (int i = 0; i < right.size(); i++)
{
if (right[i] == 0)
{
*rit = right[i];
rit = right.erase(rit);
count += left[i];
*it = left[i];
it = left.erase(it);
i--;
}
else
{
it++;
rit++;
}
}
c = left[0];
a = left[0];
d = right[0];
b = right[0];
for (int i = 1; i < left.size(); i++)
{
if (a>left[i])
{
a = left[i];
}
c+= left[i];
}
for (int i = 1; i < right.size(); i++)
{
if (b>right[i])
{
b = right[i];
}
d +=right[i];
}
if ((c - a) < (d - b))
{
return c - a + 2 + count;
}
else
{
return d - b + 2 + count;
}
}
};

本文详细解析了一个使用C++实现的手套配对算法,该算法通过处理两个整数向量来找出最小的配对成本。代码中包含了对左、右手套进行迭代和条件判断的过程,最终计算出配对成本并返回最小值。
1230

被折叠的 条评论
为什么被折叠?



