不要怪筆者寫的簡陋,真的沒有太多時間和精力來整理了。
要使用貪心演算法就要證明,貪心策略可以得到全域性最優解,因此它並沒有動態規劃應用那麼廣泛,但是一旦證明貪心策略的重要性往往可以用o(n)的複雜度解決問題。
455. 分發餅乾
貪心策略:我們先對餅乾和孩子排序,拿最小的餅乾去滿足胃口最小的孩子。
classsolution
}if(start >= s.length) break
; }
return
count;
}}
135. 分發糖果
策略:
①先給每乙個孩子分發乙個糖果存在陣列a與b中
②陣列a從左向右遍歷,只要右邊的孩子比左邊的孩子分數高就多發一枚糖果。
③陣列b從右向左遍歷,只要左邊孩子比右邊孩子分數高就多發一枚糖果。
④ans[i] = max
classsolution
for(int i = ratings.length-2; i >=0; i--)
int ans = 0;
for(int i = 0; i < ratings.length; i++)
return
ans;
}}
這類問題應該是比較經典的貪心問題
classsolution
});int x_end = intervals[0][1];
for(int i = 0; i < intervals.length; i++)
}return intervals.length -count;
}}
452. 用最少數量的箭引爆氣球
classsolution
});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測試用例就錯了
classsolution
});linkedlist
list = new linkedlist<>();
for(int
i : people)
return list.toarray(new
int[list.size()][2]);
}}
55. 跳躍遊戲
策略:從後向前遍歷,能夠到達終點的就是好位置,相反則為壞位置,我們始終記錄最左邊的好位置,只要本點能夠跳過好位置,本點就是好位置
classsolution
return lastgoodpos == 0;
}}
45. 跳躍遊戲 ii
相當於在求第i跳可以跳到的最遠距離
classsolution
}return
ans;
}}
763. 劃分字母區間
應該比較簡單吧,只要找好字母最後一次出現的位置就好,因為至少是從這裡開始劃分的
classsolution }}
return
ans;
}}
605. 種花問題
重點應該在邊界處理上吧
publicboolean 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 ...