牛客网 手套

简介: 牛客网 手套

做题链接手套__牛客网 (nowcoder.com)


题目描述:A想要拿一个左右手颜色相同的手套,现在左右手套分开放置,但现在天黑看不到,问至少要拿多少只手套(左手加右手),才能保证一定能选出一双颜色相同的手套。


输入:n颜色种数(1≤n≤13)     两个长度为n的数组left,right,分别代表每种颜色左右手手套的数量。数据保证左右的手套总数均不超过26,且一定存在至少一种合法方案。


测试用例:


4 , [0,7,1,6] , [1,5,0,6]

返回:10  (解释:可以左手手套取2只,右手手套取8只)


思路:


1、左边至少覆盖所有颜色(对应右边为0时的颜色,要都算在内),右边除了对应左边为0的颜色中至少选择一个。


2、右边至少覆盖所有颜色(对应左边为0时的颜色,要都算在内),左边除了对应右边为0的颜色中至少选择一个。


从两种中选择较少的一个。


代码:

import java.util.*;
public class Gloves {
    public int findMinimum(int n, int[] left, int[] right) {
        if(n==1){
            return 2;
        }
        // max 表示覆盖所有颜色的数量
        // min 表示左右至少有一种重合颜色的数量
        int leftMin = countMin(n,left,right);
        int rightMin = countMin(n,right,left);
        int leftMax = countMax(n,left);
        int rightMax = countMax(n,right);
        int a = leftMin+rightMax;
        int b = leftMax+rightMin;
        return a>b?b:a;
    }
    public int countMin(int n, int[] arr, int[] arr1){
        int ret = 0;
        for(int i=0;i<n;i++){
            if(arr1[i] == 0){
                ret += arr[i];
            }
        }
        return ret+1;
    }
    public int countMax(int n, int[] arr){
        int ret = 0;
        Arrays.sort(arr);
        int countZero = 0;
        while(arr[countZero]==0){
            countZero++;
        }//这里的countZero 是计算了Zero的个数,同时也能确定加到哪里结束,到哪里可以加1就行
        for(int i=n-1;i>=countZero;i--){
            if(i==countZero+1 && countZero+1<n-1){
                ret+=1;
            }else{
                ret+=arr[i];
            }
        }
        return ret;
    }
}


注意事项 :

1. 要注意当只存在一种颜色的时候,左右两边各取一个就行。

2. 要先计算 Min 再计算 Max ,因为Max里面的排序会影响Min的结果。

3. 计算Max,注意是减去除0之外倒数第二小的数字,其他数字和加一,比如 0 1 5 6 的max是 8

相关文章
|
28天前
|
人工智能 自然语言处理 数据挖掘
阿里云千问办公企业版购买流程:填写组织名称、管理员手机号、企业邮箱获取组织ID,并下单全流程
千问办公(QwenWork)是阿里推出的AI智能办公平台,支持自然语言驱动的数据分析、PPT生成、视频剪辑、网页搭建等,直接输出可用成果。企业版含席位与积分包(需绑定有效席位),提供完整购买与管理流程。(239字)
176 2
|
1月前
|
机器学习/深度学习 弹性计算 缓存
2026年阿里云服务器新人优惠活动,租用阿里云服务器一年要多少钱?最低38元1年
2026年阿里云新人专享:轻量应用服务器2核2G/200M带宽/40G SSD/不限流量,新用户专享价38元(每日10点、15点秒杀)或68元(随时购)。另有99元ECS及企业级199元特价机型可选,均支持企业认证购买。
|
9月前
|
存储 文字识别 供应链
制造行业中PCB产品标识DataMatrix二维码应用
DataMatrix二维码广泛应用于PCB制造,实现唯一标识、生产追溯、质量控制与防错管理。支持激光打标、喷墨打印及孔阵、彩色等多样化标识方式,助力智能制造与工业4.0集成,提升效率与合规性。
816 1
|
4月前
|
弹性计算 监控 Java
Maven 并行构建配置:-T 4C 提速 4 倍实战
本文深入讲解了 Maven 并行构建的核心原理和实战技巧,包含 -T 参数详解、模块并行化改造、性能监控与分析等企业级最佳实践。通过真实案例展示了如何将多模块项目的构建时间从 45 分钟缩短到 11 分钟(提升 4.1 倍),提供完整的性能测试脚本和优化检查清单。掌握这些技能,你将能够充分利用多核 CPU 加速 Maven 构建。适合 Java 开发者、架构师、DevOps 工程师阅读。
|
5月前
|
人工智能 弹性计算 自然语言处理
AI Agent模板实战:3分钟打造你的第一个智能应用
阿里云函数计算AgentRun提供零代码创建AI Agent的能力,含三大实战模板:氛围编程专家(多Agent协同)、电商点单助手(自然语言点单+库存管理)、舆情分析专家(实时采集+情感分析)。基于函数计算、百炼大模型与内置工具,3分钟即可上线。
|
9月前
|
存储 缓存 编解码
阿里云高配置云服务器解析:4 核 16G、8 核 16G、8 核 32G 实例特性与价格说明
阿里云高配置云服务器以 4 核 16G、8 核 16G、8 核 32G 为核心规格,覆盖通用型、计算型、通用平衡增强型等多类实例,适配企业高并发服务、大数据处理、复杂应用部署等核心场景。不同实例通过差异化硬件架构与性能优化,满足从个人开发者到大型企业的多元需求,同时依托优惠政策降低高性能算力的获取成本。本文结合实例特性、价格体系及适用场景,为用户提供客观选型参考。
|
9月前
|
存储 弹性计算 固态存储
阿里云服务器多少钱一年?2026年最新价格表更新,良心阿里云值得买!
2026年阿里云服务器优惠来袭!轻量应用服务器38元/年起,ECS经济型实例2核2G仅99元/年,企业级u1实例2核4G低至199元/年。香港地域轻量服务器25元/月起,4核16G、8核32G高配机型限时抢购。全地域覆盖,不限流量,续费同价,性价比超高!
1532 0
|
10月前
|
存储 运维 Oracle
【服务器数据恢复】RAID5阵列双盘离线导致Oracle数据库 OA系统崩溃数据恢复案例 - 金海境科技
广东省某市政务服务数据管理局OA系统因RAID5阵列崩溃导致业务中断,金海境科技通过磁盘镜像、RAID重组、数据修复及系统复原,成功恢复全部政务数据与运行环境,24小时内完成应急恢复,保障了政务服务连续性,并为政务数据安全提供重要警示。
480 3
|
10月前
|
传感器 人工智能 算法
解析支持二次开发的移动机器人关键设备与平台选型
本文解析支持二次开发的移动机器人关键设备与平台选型,涵盖服务机器人、通用底盘、科研教育、工业AMR、导航算法及桌面级平台六大类别。重点分析猎户星空、松灵、九号、Clearpath、斯坦德等主流平台的技术特点,对比其在开放性、实时性、仿真支持与场景适配上的优势,为开发者提供选型参考。(238字)
|
10月前
|
安全 物联网
RFID高校电动车管理步入智能化
随着高校内电动车数量的增加,RFID 技术的应用让高校电动车管理逐渐步入智能化。RFID技术在电动自行车出入管理中的应用具有多方面的优势,为学校电动车管理提供更多功能和服务,RFID高校电动车管理步入智能化。

热门文章

最新文章