题解 | #手套#

手套

https://www.nowcoder.com/practice/365d5722fff640a0b6684391153e58d8

首先为了防止选到的手套是无法匹配的(另一边是0),那么就索性假设已经全都选到了他们。在此基础上,再去选择能够匹配的手套。

class Gloves {
public:
    int findMinimum(int n, vector<int> left, vector<int> right) {
        // 找出必须拿到的手套(另一边是0)
        int cnt = 0;
        for (int i=0; i<n; i++) {
            if (left[i] == 0 || right[i] == 0) cnt += left[i] + right[i];
        }

        // 如果 左 边保证所有可能配对的手套都拿到最少一只
        int res_l = 0, minv = 50;
        for (int i=0; i<n; i++) {
            if (left[i] != 0 && right[i] != 0) {
                res_l += left[i];
                minv = min(minv, left[i]);
            }
        }
        res_l -= minv - 1;

        // 如果 右 边保证所有可能配对的手套都拿到最少一只
        int res_r = 0;
        minv = 50;
        for (int i=0; i<n; i++) {
            if (left[i] != 0 && right[i] != 0) {
                res_r += right[i];
                minv = min(minv, right[i]);
            }
        }
        res_r -= minv - 1;
        // 找出最小的所有手套都拿一只的那边,另一边只需要随便拿一只可配对的就行
        return min(res_l, res_r) + cnt + 1;
    }
};
全部评论

相关推荐

有没有什么神仙小厂啊!想去,感觉对大厂去魅了
野猪不是猪🐗:小厂最大的问题就是,你不知道哪天公司就直接🈚️了。大厂被裁,拿着大厂履历也不难再找,小厂寄了那后面有没有人要你就不好说了
点赞 评论 收藏
分享
野猪不是猪🐗:这种直接口头上答应,骗面试,面完了直接拉黑,相当于给自己攒面经了(
点赞 评论 收藏
分享
2024-11-22 17:03
广西师范大学 C++
佛系牛牛:多写一点,不要太多空白
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务