二刷代碼隨想錄——貪心day34

文章目錄

  • 前言
    • 貪心知識點
    • 貪心的套路
  • 貪心一般解題步驟
  • 一、860. 檸檬水找零
  • 二、406. 根據身高重建隊列
  • 三、452. 用最少數量的箭引爆氣球
  • 總結


前言

一個本碩雙非的小菜雞,備戰24年秋招,計劃二刷完卡子哥的刷題計劃,加油!
二刷決定精刷了,于是參加了卡子哥的刷題班,訓練營為期60天,我一定能堅持下去,迎來兩個月后的脫變的,加油!
推薦一手卡子哥的刷題網站,感謝卡子哥。代碼隨想錄

貪心知識點

貪心的本質是選擇每一階段的局部最優,從而達到全局最優。(這點很重要!!!)

每次拿最大的就是局部最優,最后拿走最大數額的錢就是推出全局最優。

貪心的套路

貪心算法并沒有固定的套路。

所以唯一的難點就是如何通過局部最優,推出整體最優。

那么如何能看出局部最優是否能推出整體最優呢?有沒有什么固定策略或者套路呢?

不好意思,也沒有! 靠自己手動模擬,如果模擬可行,就可以試一試貪心策略,如果不可行,可能需要動態規劃。

有同學問了如何驗證可不可以用貪心算法呢?

最好用的策略就是舉反例,如果想不到反例,那么就試一試貪心吧。

面試中基本不會讓面試者現場證明貪心的合理性,代碼寫出來跑過測試用例即可,或者自己能自圓其說理由就行了。

貪心一般解題步驟

貪心算法一般分為如下四步:

  1. 將問題分解為若干個子問題
  2. 找出適合的貪心策略
  3. 求解每一個子問題的最優解
  4. 將局部最優解堆疊成全局最優解

這個四步其實過于理論化了,我們平時在做貪心類的題目 很難去按照這四步去思考,真是有點“雞肋”。

做題的時候,只要想清楚 局部最優 是什么,如果推導出全局最優,其實就夠了。

一、860. 檸檬水找零

860. 檸檬水找零
Note:比較簡單一題

class Solution {
public:bool lemonadeChange(vector<int>& bills) {int fiveSize = 0, tenSize = 0, twentySize = 0;for (int inet : bills) {if (inet == 5)fiveSize++;else if (inet == 10) {if (fiveSize < 0)return false;else {fiveSize--;tenSize++;}} else {if (tenSize > 0 && fiveSize > 0) {tenSize--;fiveSize--;twentySize++;} else if (fiveSize >= 3) {fiveSize -= 3;twentySize++;} else return false;}}return true;}
};

二、406. 根據身高重建隊列

406. 根據身高重建隊列
Note:確實跟分發糖果類似

class Solution {
public:static bool cmp(const vector<int>& a, const vector<int>& b) {if (a[0] == b[0])return a[1] < b[1];return a[0] > b[0];}vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {sort(people.begin(), people.end(), cmp);list<vector<int>> que;for (int i = 0; i < people.size(); i++) {int position = people[i][1];list<vector<int>>::iterator it = que.begin();while (position--)it++;que.insert(it, people[i]);}return vector<vector<int>> (que.begin(), que.end());}
};

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

452. 用最少數量的箭引爆氣球
Note:重疊區間解法

class Solution {
private:static bool cmp(const vector<int>& a, const vector<int>& b) {return a[0] < b[0];}
public:int findMinArrowShots(vector<vector<int>>& points) {if (points.size() == 0) return 0;sort(points.begin(), points.end(), cmp);int result = 1;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]);}return result;}
};

總結

貪心沒有套路,說白了就是常識性推導加上舉反例。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/714194.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/714194.shtml
英文地址,請注明出處:http://en.pswp.cn/news/714194.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

day10_oop

今日內容 零、 復習昨日 一、作業 二、繼承 三、重寫 四、this和super 五、訪問修飾符 零、 復習昨日 數組創建的兩種方式 new int[3];new int[]{值,值2,…}存值: 數組名[下標] 值 構造方法什么作用?有參無參構造什么區別? 創建對象無參創建出的對象屬性是默認值有參創建出的…

【力扣白嫖日記】602.好友申請II:誰有最多的好友

前言 練習sql語句&#xff0c;所有題目來自于力扣&#xff08;https://leetcode.cn/problemset/database/&#xff09;的免費數據庫練習題。 今日題目&#xff1a; 602.好友申請II&#xff1a;誰有最多的好友 表&#xff1a;RequestAccepted 列名類型requester_idintaccept…

外賣店優先級

題目描述 ”飽了么”外賣系統中維護著N 家外賣店&#xff0c;編號1~N。每家外賣店都有一個優先級&#xff0c;初始時(0時刻)優先級都為0。 每經過1個時間單位&#xff0c;如果外賣店沒有訂單&#xff0c;則優先級會減少1&#xff0c;最低減到0;而如果外賣店有訂單&#xff0c;則…

【AIGC】微笑的秘密花園:紅玫瑰與少女的美好相遇

在這個迷人的畫面中&#xff0c;我們目睹了一個迷人的時刻&#xff0c;女子則擁有一頭柔順亮麗的秀發&#xff0c;明亮的眼睛如同星河般璀璨&#xff0c;優雅而靈動&#xff0c;她的微笑如春日暖陽&#xff0c;溫暖而又迷人。站在紅玫瑰花瓣的驚人洪水中。 在一片湛藍無云的晴…

Liberod的License申請

Liberod的License申請 找到license申請的路徑 查找C盤的磁盤序列號 鍵盤的win+R,輸入cmd 輸入vol,然后回車 圖中的DiskID就是填寫你C盤序列號的位置,填寫完成后點擊Register,幾秒鐘后會提示你,預計45分鐘后會發送到你的郵箱

docker-mysql:5.7安裝

1、下載mysql:5.7鏡像 [rootlocalhost ~]# docker search mysql (某個XXX鏡像名字) [rootlocalhost ~]# docker pull mysql:5.7 按裝之前查看一下是否按裝過mysql。如果安裝過會占用3306端口。 [rootlocalhost ~]# ps -ef | grep mysql 2、安裝 # -d&#xff1a;后臺運行 #…

C語言基礎(五)——結構體與C++引用

七、結構體與C引用 7.1 結構體的定義、初始化、結構體數組 C 語言提供結構體來管理不同類型的數據組合。通過將不同類型的數據組合成一個整體&#xff0c;方便引用 例如&#xff0c;一名學生有學號、姓 名、性別、年齡、地址等屬性&#xff0c;如果針對學生的學號、姓名、年齡…

MJ V7 在 V6 Beta 發布后即將推出,即將到來的人工智能 API 訪問!

讓我們深入了解 MidJourney 的新功能 在發布官方 Beta 之前總結 V6 Alpha 隨著 MidJourney V6 Alpha 上周成為默認版本&#xff0c;該團隊現在正在努力在過渡到官方 Beta 版本之前進行進一步的改進&#xff1a; 一組 3 個視覺一致性功能 1 — 升級的“風格參考”功能 這將是…

團體程序設計天梯賽 L2-003 月餅(多重背包模板)

L2-003 月餅 分數 25 月餅是中國人在中秋佳節時吃的一種傳統食品&#xff0c;不同地區有許多不同風味的月餅。現給定所有種類月餅的庫存量、總售價、以及市場的最大需求量&#xff0c;請你計算可以獲得的最大收益是多少。 注意&#xff1a;銷售時允許取出一部分庫存。樣例給…

pytorch基礎1-pytorch介紹與張量操作

專題鏈接&#xff1a;https://blog.csdn.net/qq_33345365/category_12591348.html 本教程翻譯自微軟教程&#xff1a;https://learn.microsoft.com/en-us/training/paths/pytorch-fundamentals/ 初次編輯&#xff1a;2024/3/1&#xff1b;最后編輯&#xff1a;2024/3/1 這是本…

高中數學:分式函數值域的求法

一、求值域的兩種基本思路 1、根據函數圖像和定義域求出值域。 難點&#xff1a;畫出函數圖像 2、研究函數單調性和定義域求出值域。 二、函數圖像畫法 高中所學的分式函數&#xff0c;基本由反比例函數平移得到。 復雜分式函數圖像畫法的兩個要點&#xff1a; a、找垂直、…

mysql 常用命令練習

管理表格從表中查詢數據從多個表查詢修改數據sql變量類型 管理表格 創建一個包含三列的新表 CREATE TABLE products (id INT,name VARCHAR(255) NOT NULL,price INT DEFAULT 0,PRIMARY KEY(id) // 自增 ); 從數據庫中刪除表 DROP TABLE product; 向表中添加新列 ALTER TAB…

如何優化阿里云幻獸帕魯/Palworld的多人聯機性能,并避免內存溢出導致的異常退出游戲?

優化阿里云幻獸帕魯/Palworld的多人聯機性能并避免內存溢出導致的異常退出游戲&#xff0c;可以采取以下幾種方法&#xff1a; 選擇合適的內存配置&#xff1a;由于幻獸帕魯是一個對內存需求較高的游戲&#xff0c;建議選擇至少16GB的內存。對于不同的玩家數量&#xff0c;可以…

【ArcGIS】漁網分割提取柵格圖+網格化分析圖繪制

ArcGIS按漁網分割提取柵格圖并繪制網格化分析圖 準備數據操作步驟步驟1&#xff1a;創建漁網&#xff08;Create Fishnet&#xff09;步驟2&#xff1a;柵格數據處理步驟3&#xff1a;柵格插值步驟4&#xff1a;數據關聯 參考 網格化的目的是讓各個數據更加標準化的進行統計。因…

GO常量指針

Go語言中的常量使用關鍵字const定義&#xff0c;用于存儲不會改變的數據&#xff0c;常量是在編譯時被創建的&#xff0c;即使定義在函數內部也是如此&#xff0c;并且只能是布爾型、數字型&#xff08;整數型、浮點型和復數&#xff09;和字符串型。 由于編譯時的限制&#x…

自動化測試系列 —— UI自動化測試!

UI 測試是一種測試類型&#xff0c;也稱為用戶界面測試&#xff0c;通過該測試&#xff0c;我們檢查應用程序的界面是否工作正常或是否存在任何妨礙用戶行為且不符合書面規格的 BUG。了解用戶將如何在用戶和網站之間進行交互以執行 UI 測試至關重要&#xff0c;通過執行 UI 測試…

Maven 插件之 maven-enforcer-plugin 解決沖突重復依賴

目錄 0、前言1、enforcer 是什么2、能干什么3、怎么用4、規則5、擴展規則6、使用7、banDuplicateClasses8、banDuplicatePomDependencyVersions 0、前言 maven 項目種經常出現 jar 包沖突、重復依賴、無效引用怎么辦&#xff0c;maven-enforcer-plugin 了解一下 1、enforcer …

《AI紀元:幻域探險》

游戲項目名稱&#xff1a;《AI紀元&#xff1a;幻域探險》 游戲類型&#xff1a;AI驅動的角色扮演探險游戲&#xff08;RPG&#xff09; 背景設定&#xff1a; 《AI紀元&#xff1a;幻域探險》設定在一個名為“幻域”的廣闊虛擬世界。這個世界由高度發達的AI技術支持&#xff0…

SpringCloud-同步異步通訊比較

本文詳細探討了同步通訊和異步通訊在信息傳遞中的區別&#xff0c;以及它們分別帶來的優勢和不足。通過對支付流程的案例分析&#xff0c;突顯了同步通訊可能面臨的阻塞和服務依賴問題&#xff0c;而異步通訊通過引入事件驅動模式和消息代理&#xff08;Broker&#xff09;成功…

SQL Server 開發環境配置教程(SSMS+SQL Prompt)

背景 記錄一下 SQL Server 常用開發軟件 體驗了各種數據庫IDE(DBeaver、Navicat、DataGrip)之后綜合下來還是感覺 SSMSSQL Prompt 對于 SQL Server 最好用&#xff0c;所以在此記錄一下配置過程 數據庫可視化管理工具SSMS 官方下載地址&#xff1a; https://learn.microsoft…