题目如图所示:
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;
}
}
};