题解 | #手套#

手套

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

import java.util.*;

public class Gloves {
    public int findMinimum(int n, int[] left, int[] right) {
        int noMatch = 0; // 左右手任一为零  铁定不匹配
        int sumLeft = 0, sumRight = 0; // 左右手各自的手套总数
        int minLeft = 24, minRight = 24; // 左右手手套中 除去0个 最少的个数
        for(int i = 0; i < n; i++){
            if(left[i] == 0 || right[i] == 0){
                // 左手或者右手为 0 ,不可能匹配
                noMatch += left[i] + right[i];
            }else{
                // 左右手个数都不为 0
                sumLeft += left[i];
                sumRight += right[i];

                if(left[i] < minLeft){
                    minLeft = left[i];
                }

                if(right[i] < minRight){
                    minRight = right[i];
                }
            }
        }
        //  保证            左手或右手中任一都有全色  +  不匹配  +  另一手的随便一只
        int res = Math.min(sumLeft-minLeft+1, sumRight-minRight+1) + noMatch + 1;
        return res;
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务