本文已参与「新人创作礼」活动,一起开启掘金创作之路。
问题
思路
- 先取出左边/右边的全部手套,再在另一边取出一只手套,但是这样达不到题目至少的要求;
- 为此,还要减去左边/右边手套中最少的手套类别,也就是最终取出的手套总数=单边手套总数-哪种颜色手套最少的手套数量+1;
- 当出现某种颜色为0的情况,还应该在手套总数基础上加上该颜色的两边手套数量。
代码实现
# -*- coding:utf-8 -*-
class Gloves:
def findMinimum(self, n, left, right):
# write code here
sum_left = 0
sum_right = 0
min_left = 30
min_right = 30
total = 0
for i in range(n):
if (left[i] * right[i] == 0):
total += (left[i] + right[i])
else:
min_left = min(min_left, left[i])
min_right = min(min_right, right[i])
sum_left += left[i]
sum_right += right[i]
return total + min(sum_left - min_left + 1, sum_right - min_right + 1) + 1