获取一定数量左右手套,保证至少有一对配对成功。
n为左右手套颜色,left为左手套个数,left为右手套个数
sum为取得的总的手套个数,手套总数不超过26
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class Gloves {
public:
int findMinimum(int n, vector<int> left, vector<int> right) {
int l_sum = 0, l_min = 26;
int r_sum = 0, r_min = 26;
int sum = 0, i = 0;
for (i = 0; i < n; i++)
{
if (left[i]*right[i] == 0)
{
sum += left[i] + right[i];
}
else
{
l_sum += left[i];
r_sum += right[i];
l_min = min(l_min, left[i]);
r_min = min(r_min, right[i]);
}
}
return sum + min(l_sum - l_min + 1, r_sum - r_min + 1) + 1;
}
};
int main()
{
system("pause");
return 0;
}