貪心習題小總結

2022-04-29 02:00:10 字數 2254 閱讀 8073

不要怪筆者寫的簡陋,真的沒有太多時間和精力來整理了。

要使用貪心演算法就要證明,貪心策略可以得到全域性最優解,因此它並沒有動態規劃應用那麼廣泛,但是一旦證明貪心策略的重要性往往可以用o(n)的複雜度解決問題。

455. 分發餅乾

貪心策略:我們先對餅乾和孩子排序,拿最小的餅乾去滿足胃口最小的孩子。

class

solution

}if(start >= s.length) break

; }

return

count;

}}

135. 分發糖果

策略:

①先給每乙個孩子分發乙個糖果存在陣列a與b中

②陣列a從左向右遍歷,只要右邊的孩子比左邊的孩子分數高就多發一枚糖果。

③陣列b從右向左遍歷,只要左邊孩子比右邊孩子分數高就多發一枚糖果。

④ans[i] = max

class

solution

for(int i = ratings.length-2; i >=0; i--)

int ans = 0;

for(int i = 0; i < ratings.length; i++)

return

ans;

}}

這類問題應該是比較經典的貪心問題

class

solution

});int x_end = intervals[0][1];

for(int i = 0; i < intervals.length; i++)

}return intervals.length -count;

}}

452. 用最少數量的箭引爆氣球

class

solution

});int s = points[0][1];

for(int i = 0; i < points.length; i++)

count++;

s = points[i][1];

}return ++count;

}}

406. 根據身高重建佇列

策略:

①先排序,按照身高降序,k值公升序排序

②按照k值插入到相應的位置,應為排序過後前面高個子肯定大於等於k,要是不大於等於k測試用例就錯了

class

solution

});linkedlist

list = new linkedlist<>();

for(int

i : people)

return list.toarray(new

int[list.size()][2]);

}}

55. 跳躍遊戲

策略:從後向前遍歷,能夠到達終點的就是好位置,相反則為壞位置,我們始終記錄最左邊的好位置,只要本點能夠跳過好位置,本點就是好位置

class

solution

return lastgoodpos == 0;

}}

45. 跳躍遊戲 ii

相當於在求第i跳可以跳到的最遠距離

class

solution

}return

ans;

}}

763. 劃分字母區間

應該比較簡單吧,只要找好字母最後一次出現的位置就好,因為至少是從這裡開始劃分的

class

solution }}

return

ans;

}}

605. 種花問題

重點應該在邊界處理上吧

public

boolean canplaceflowers(int flowerbed, int

n) }

return count >=n;

}

感覺**這種東西敲了和沒敲真的不一樣,敲了可能就會一點,不敲肯定不會。

貪心小總結

這一周學習了貪心演算法。總的來說,貪心演算法在聽的時候感覺並沒有這麼的難,總體思路就是在每一步取最優解,之後總的就取到最優解。但在寫的時候感覺並沒有這麼簡單,因為在貪心演算法來說,思路首先是是最重要的,之後才會考慮優化 本週貪心演算法的第一題,我寫了三天之後才有大概的方向。第一次的的總思路用到了棧,...

基礎貪心演算法小總結

按照右端點排序,然後模擬,期間記錄乙個last變數 include using namespace std const int n 1e5 typedef pair int,int pll pll a n int n intmain sort a,a n int last 1e9 cnt 0 for...

小總結 快速冪 貪心 Bit Mask

傳送門 preview bitstream a flow of data in binary form.in bit wise expression 用位表示。her face was a cold blank mask.她裝出一副冰冷冷毫無表情的樣子。perform a bit wise and ...