日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

贪心算法之取手套问题(牛客)

發(fā)布時(shí)間:2025/3/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 贪心算法之取手套问题(牛客) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

解法框架

待定

手套

這道題的關(guān)鍵點(diǎn)如下

  • A先生是無(wú)法分辨手套的顏色的,但是能分辨手套的形狀,這也意味著他在取手套時(shí)并不是隨意一把抓,而是可以有目的的取左手套或者右手套(其實(shí)我在起初做這道題的時(shí)候沒(méi)有注意這一點(diǎn),意味是隨機(jī)一把抓,這無(wú)形之中就增大了難度)
  • 如果沒(méi)有至少這個(gè)關(guān)鍵詞,同時(shí)題目又保證了手套絕對(duì)是可以匹配的,所以可以全部把左手套拿出來(lái),然后右手套隨機(jī)取一只
  • 有了“至少”后,它就體現(xiàn)了一種貪心的思想——每次局部最優(yōu),最后全局最優(yōu)
  • 這道題特別注意手套為0的這種情況,因?yàn)橐坏┠硞€(gè)顏色手套的數(shù)目為0,將導(dǎo)致該顏色的手套是不可能匹配的,那么如果還要硬拿出來(lái),無(wú)形之中增大了拿取次數(shù)
  • 所以本題的解題思路就是,首先拿取左面或右面的手套,使拿取的數(shù)目覆蓋全部顏色,然后相應(yīng)的另一半手套只需挑出一即可

    以拿出左面為例,有5只顏色不同的左手套

    由于無(wú)法分辨顏色,所以拿取的時(shí)候,如果數(shù)目太小,就可能無(wú)法覆蓋全部手套。比如拿取15只手套,白色的可能就沒(méi)有覆蓋到。所以一旦左面取了15只,就白色的沒(méi)取,而右面取了一只,恰好就是白色,就導(dǎo)致無(wú)法匹配

    而如果全取,就不能保證題目“至少”要求了

    所以應(yīng)該這樣取:手套數(shù)目=總手套數(shù)目-最少的顏色的手套+1 。這樣取一定可以保證所有手套全部覆蓋到

    如果一個(gè)手套中出現(xiàn)了0,那么將導(dǎo)致對(duì)應(yīng)的手套無(wú)法被匹配到,所以這種情況下要把0對(duì)應(yīng)的手套(不管是左還是右都取出來(lái)),才能保證不被這種糟糕的情況給破壞掉

    最后應(yīng)該是取左面還是右面的呢?其實(shí)這不重要,左面小就取左面的,右面小就取右面的,最后只需在對(duì)方手套中取一只即可。

    代碼

    class Gloves { public:int findMinimum(int n, vector<int> left, vector<int> right) {int left_sum=0;int right_sum=0;//分別計(jì)算左面手套和右面手套的綜合int left_min=INT_MAX;int right_min=INT_MAX;//分別用來(lái)保存左面或者右面的最小手套數(shù)目int sum_zero=0;//統(tǒng)計(jì)一方出現(xiàn)手套為0的手套數(shù)目for(int i=0;i<n;i++)//有n種顏色的手套{if(left[i] * right[i] == 0)//只要一方有0,統(tǒng)計(jì){sum_zero+=left[i]+right[i];}else{left_sum+=left[i];//統(tǒng)計(jì)左手套的數(shù)目left_min=min(left_min,left[i]);//左手套中顏色最少的right_sum+=right[i];//同上right_min=min(right_min,right[i]);}}//誰(shuí)少取誰(shuí)int get=min(left_sum-left_min+1,right_sum-right_min+1);return sum_zero+get+1;//最后返回時(shí)只要任取對(duì)面的1個(gè)手套以及取完所有為0的情況和一方手套} };

    總結(jié)

    以上是生活随笔為你收集整理的贪心算法之取手套问题(牛客)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。