代碼隨想錄第三十五天|860.檸檬水找零、406.根據(jù)身高重建隊列、452. 用最少數(shù)量的箭引爆氣球

?860.檸檬水找零

思路:

設(shè)立錢箱count(3,0)

分成三種情況:

1. 5元鈔票,count[0]++;

2. 10元鈔票, 判斷count[0]是否有錢返回(count[0]==0),沒有返回false. count[0]--,count[1]++

3. 20元鈔票,分情況判斷,優(yōu)先用10塊:count[0]>=1?&&?count[1]>=1?;蛘撸篶ount[0]>=3,否則return false;

最后return true;

看視頻后:

局部最優(yōu):遇到賬單20,優(yōu)先消耗美元10,完成本次找零。全局最優(yōu):完成全部賬單的找零。


406.根據(jù)身高重建隊列

思路:

本題有兩個需要處理的參數(shù):身高和排序,需要分別進(jìn)行處理。先確定身高再確定排序,但是找不到排序固定的判斷。

看視頻后:

如果按照k來從小到大排序,排完之后,會發(fā)現(xiàn)k的排列并不符合條件,身高也不符合條件,兩個維度哪一個都沒確定下來。

按照身高h(yuǎn)來排序呢,身高一定是從大到小排(身高相同的話則k小的站前面),讓高個子在前面。那么只需要按照k為下標(biāo)重新插入隊列就可以了。后序插入節(jié)點也不會影響前面已經(jīng)插入的節(jié)點,最終按照k的規(guī)則完成了隊列。

局部最優(yōu):優(yōu)先按身高高的people的k來插入。插入操作過后的people滿足隊列屬性

全局最優(yōu):最后都做完插入操作,整個隊列滿足題目隊列屬性

for(int?i=0;i<people.size();i++)

????????{

????????????int?position?=?people[i][1];

????????????result.insert(result.begin()+position,?people[i]);

????????}

注意自定義sort排序:

sort(people.begin(),people.end(),cmp);

cmp一定是static的:

static?bool?cmp(vector<int>?&a,?vector<int>?&b)

????{

????????if(a[0]==b[0])

????????????return?a[1]?<?b[1];

????????return?a[0]?>?b[0];

????}

輸出result;


?452.?用最少數(shù)量的箭引爆氣球?

思路:

先sort原數(shù)組,根據(jù)內(nèi)部數(shù)組的[0]進(jìn)行從小到大的排列。

數(shù)組compare為points[0]。用compare記錄每次與新數(shù)組的交集。如果交集為空compare[1]<points[i][0],則count加1且compare更新為新數(shù)組。最后count++,return count。

局部最優(yōu):按順序找到兩個區(qū)域的交集,再更新下一個區(qū)域。

全局最優(yōu):按順序找到最多區(qū)域的交集,再更新下一個區(qū)域。

看視頻后:

局部最優(yōu):當(dāng)氣球出現(xiàn)重疊,一起射,所用弓箭最少。

全局最優(yōu):把所有氣球射爆所用弓箭最少。

先對數(shù)組進(jìn)行排序,如果數(shù)組元素個數(shù)等于0則return 0. 如果不為0,則至少一只箭,所以result初始化等于1.

如果氣球和前一個氣球不挨著,即points[i][0]>points[i-1][1], result++;如果挨著,則縮小右邊界找交集,point[i][1]= min(points[i-1][1], points[i][1]);最后返回result。

在原數(shù)組上修改則不需要建一個數(shù)組進(jìn)行記錄。

for(int?i=1;?i<points.size();?i++)

????????{

????????????if(points[i][0]>points[i-1][1])

????????????{

????????????????result++;

????????????}

????????????else

????????????{

????????????????points[i][1]=min(points[i-1][1],points[i][1]);

????????????}

????????}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容