【牛客算法题】 --手套--C++

本文探讨了一道牛客网的算法题目,涉及C++编程。问题核心在于如何以最少数量的手套匹配一对,关键策略是确定一侧手套数量为总数减去最小数加1,另一侧只需取一只。当某一侧手套数量为0时,需要取走另一侧所有手套,以确保不会出现无法匹配的情况。
摘要由CSDN通过智能技术生成

链接 

思路:

这里的手套数量是对应的,但是取手套的时候并不知道对应颜色放在哪,都是混着放的。

如果正常不考虑数量的情况下,只需要把一边的所有手套拿出来,另一边选一只即可。但是这道贪心算法题需要拿出最少的手套,需要得出最优解,无疑增加了难度。

所以想要拿出最小数量,那么一边的手套量应该是:总数-最小数+1,这样才能覆盖所有的手套可能。那么另一边只需要拿出一只就可以。

当遇到0只手套这样的情况,需要把另一边的手套都取出来。无论左手还是右手,都要取出另一边是0的手套,避免取到的手套正好是这只没有另一对的手套。

class Gloves {
public:
    int findMinimum(int n, vector<int> left, vector<int> right) {
        // write code here
        int left_sum=0,left_min=INT_MAX;//可以把最小值设置成一个最大值࿰
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值