【c++刷題筆記-貪心】day28: 134. 加油站 、 135. 分發糖果 、860.檸檬水找零 、 406.根據身高重建隊列

134. 加油站 - 力扣(LeetCode)

思路:算出當前的消耗的油量總數,如果花費大于油量表示無法到達。統計總花費最大的油耗總數,如果油耗總數大于或者等于0,表示全程沒有負花銷,直接從0起步。小于零就從后向前遍歷,當總最大油耗抹平就返回當時的下標

重點:使用min記錄從0開始的最大總油耗

class Solution {
public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {int n=gas.size();int cur=0;int min=INT_MAX;for(int i=0;i<n;i++){int t=gas[i]-cost[i];cur+=t;if(cur<min){min=cur;}}if(cur<0){return -1;}if(min>=0){return 0;}for(int i=n-1;i>=0;i--){int t=gas[i]-cost[i];min+=t;if(min>=0){return i;}}return -1;}
};

135. 分發糖果 - 力扣(LeetCode)

思路:從前向后遍歷給右邊評分比左邊評分大的孩子分發一個糖果,從后向前遍歷給左邊比右邊大孩子分發糖果,同時比較左邊評分比右邊評分高的孩子的糖果數和右邊評分最高的糖果數,選最大值作為結果。

重點:左右兩個方向分開考慮,先左再右

class Solution {
public:int candy(vector<int>& ratings) {int n=ratings.size();vector<int>ans(n,1);for(int i=1;i<n;i++){if(ratings[i]>ratings[i-1]){ans[i]=ans[i-1]+1;}}for(int i=n-2;i>=0;i--){if(ratings[i]>ratings[i+1]){ans[i]=max(ans[i+1]+1,ans[i]);}}int res=0;for(int x:ans){res+=x;}return res;}
};

860. 檸檬水找零 - 力扣(LeetCode)

思路:記錄5元錢的數量,當付的是10元時消耗1張5元。當付的是20元時如果有10元零錢,優先消耗一張10元和一張5元。沒有就消耗三張5元。然后判斷5元數量是否小于零,小于零表示無法完成找零

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

406. 根據身高重建隊列 - 力扣(LeetCode)

思路:先按照身高從到小排序,再按照前k個人從小到大排序。然后新建一個隊列,從左到右按照前k個人插入到下標為k的地方

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);vector<vector<int>>que;for(int i=0;i<people.size();i++){que.insert(que.begin()+people[i][1],people[i]);}return que;}
};

總結

貪心就是以局部推全局并且沒有反例的情況,當遇到不同維度的貪心時,需要分開討論

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

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

相關文章

十二、數組

1. 一維數組的創建和初始化 數組是一組相同類型元素的集合。 變長數組是不能初始化的。 數組的初始化是指&#xff0c;在創建數組的同時給數組的內容一些合理初始值&#xff08;初始化&#xff09;。 例如上圖 char ch3[ ]"abc";里面方的就是 a b c \0 char ch3[ …

EDA 2023 年世界國家suicide rate排名

文章目錄 前言:關于數據集列 導入模塊導入數據數據預處理探索性數據分析按性別劃分的自殺率 [箱線圖]相關矩陣熱圖自殺率最高的 15 個國家變化百分比最高的 15 個國家/地區2023 年世界地圖上自殺率的國家 結尾: 前言: 隨著社會的不斷發展和變遷&#xff0c;人們對于各種社會問…

揭秘:源代碼防泄密的終極秘籍

在當今信息科技高度發達的時代&#xff0c;源代碼作為企業最核心的資產之一&#xff0c;其安全性不言而喻。源代碼的泄露可能導致企業技術機密被競爭對手獲取&#xff0c;進而威脅到企業的市場競爭力和長遠發展。因此&#xff0c;源代碼防泄密成為了企業信息安全工作的重中之重…

前端JS特效第24波:jQuery輕量級響應式幻燈片插件EasyFader

jQuery輕量級響應式幻燈片插件EasyFader&#xff0c;先來看看效果&#xff1a; 部分核心的代碼如下&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"utf-8"> <title>jQuery輕量級響應式幻燈片插件E…

C-10 凸包

凸包 數學定義 平面的一個子集S被稱為是凸的&#xff0c;當且僅當對于任意兩點A&#xff0c;B屬于S&#xff0c;線段PS都完全屬于S過于基礎就不詳細介紹了 凸包的計算 github上找到了別人的代碼&#xff0c;用4種方式實現了凸包的計算&#xff0c;把他放在這里鏈接地址htt…

可靈ai出web端了

網址 https://klingai.kuaishou.com/ 可靈ai出web端了 最近最火的莫過于老照片動態視頻了&#xff0c;現在可靈出web端了&#xff0c;更利好開發者了。

redis運維:sentinel模式如何查看所有從節點

1. 連接到sentinel redis-cli -h sentinel_host -p sentinel_port如&#xff1a; redis-cli -h {域名} -p 200182. 發現Redis主服務器 連接到哨兵后&#xff0c;我們可以使用SENTINEL get-master-addr-by-name命令來獲取當前的Redis主服務器的地址。 SENTINEL get-master-a…

原生JS常用方法總結

文章目錄 根據 cookie 的 key 獲取 value根據 xpath 獲取頁面元素ajax請求 根據 cookie 的 key 獲取 value // 獲取cookie function getCookie(key){var arrstr document.cookie.split("; ");for (var i 0; i < arrstr.length; i){var temp arrstr[i].split(&…

手動安裝Ruby 1.9.3并升級RubyGems

手動安裝Ruby 1.9.3并升級RubyGems ###Ruby 1.9.3 p125安裝 wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p125.tar.gz \ && tar -xzvf ruby-1.9.3-p125.tar.gz \ && cd ruby-1.9.3-p125 \ && ./configure --with-openssl-dir/usr/lib/op…

Python骨架肌體運動學數學模型

&#x1f3af;要點 &#x1f3af;運動學矢量計算 | &#x1f3af;跳遠的運動學計算 | &#x1f3af;關節肢體運動最小加加速度模型 | &#x1f3af;膝關節和踝關節角度二維運動學計算 | &#x1f3af;上下肢體關節連接運動鏈數學模型 | &#x1f3af;剛體連接點速度加速度計算…

[python]Markdown圖片引用格式批處理桌面應用程序

需求 使用python編寫一個exe&#xff0c;實現批量修改圖片引用&#xff0c;將修改后的文件生成為 文件名_blog.md。有一個編輯框&#xff0c;允許接收拖動過來md文件&#xff0c;拖入文件時獲取文件路徑&#xff0c;有一個編輯框編輯修改后的文件的輸出路徑&#xff0c;用戶拖入…

Springboot實戰:AI大模型+亮數據代理助力短視頻時代

目錄 前言1.如何入門亮數據1.1、注冊登錄1.2、注冊賬號1.3、登錄1.4、購買靜態住宅代理1.5、展示購買的代理 2. 使用Springboot、AI大模型構建系統2.1 使用Springboot、AI大模型構建爬蟲2.2、在Springboot項目添加工具 3、編寫代碼&#xff0c;爬取視頻素材3.1、代碼里使用代理…

Redis核心問題總結(一)

1、為什么要使用Redis做緩存 緩存的好處 使用緩存的目的就是提升讀寫性能。而實際業務場景下&#xff0c;更多的是為了提升讀性能&#xff0c;帶來更好的性 能&#xff0c;帶來更高的并發量。Redis 的讀寫性能比 Mysql 好的多&#xff0c;我們就可以把 Mysql 中的熱點數據緩 …

如何編譯ffmpeg支持h265(hevc)?

推薦使用這里的文件&#xff1a;https://github.com/runner365/ffmpeg_rtmp_h265 根據你ffmpeg的源碼 版本&#xff0c;切換到不同分支即可。 國內cdn方式: 新增codecid hevc/vp8/vp9/opus在rtmp中的codecid沒有官方協議定義&#xff0c;由國內眾多知名cdn共同制定。 FLV_COD…

1. LangChain4j 之入門(簡單易學)

一&#xff1a;前言 什么是LangChain&#xff1f;而LangChain4j又是什么&#xff1f;不知道的朋友&#xff0c;可以看我一下兩篇文章 1分鐘了解LangChain是什么? | 1分鐘了解LangChain4j是什么? LangChain4j是LangChain的Java版本&#xff0c;幫助開發者很容易的接入大模型的…

提升結構安全性:應變計在現代建筑中的應用

在現代建筑領域&#xff0c;隨著工程技術的不斷進步&#xff0c;對結構安全性的要求也日益提高。作為一種關鍵的工程儀器儀表&#xff0c;應變計在提升結構安全性方面發揮著不可替代的作用。本文將深入探討應變計在現代建筑中的應用&#xff0c;以及它如何助力工程師們實時監測…

權力之望怎么注冊賬號創建角色 權利之網角色賬號注冊教程

權力之望是一款全新的大型MMORPG游戲&#xff0c;擁有9把獨特武器和56種職業組合&#xff0c;并搭配了超炫酷的戰斗畫面&#xff0c;全程采用低俯視角游戲&#xff0c;讓玩家能體驗到更強的操作感和爽快感。這款游戲主打高養成自由度玩家可以自由更換武器進行戰斗&#xff0c;還…

前端面試題30(閉包和作用域鏈的關系)

閉包和作用域鏈在JavaScript中是緊密相關的兩個概念&#xff0c;理解它們之間的關系對于深入掌握JavaScript的執行機制至關重要。 作用域鏈 作用域鏈是一個鏈接列表&#xff0c;它包含了當前執行上下文的所有父級執行上下文的變量對象。每當函數被調用時&#xff0c;JavaScri…

零基礎也能成為產品冊設計高手

?在當今數字化時代&#xff0c;產品冊設計已成為企業營銷的重要手段之一。過去&#xff0c;人們認為只有專業人士才能設計出精美的產品冊&#xff0c;然而&#xff0c;隨著設計工具的普及和在線學習資源的豐富&#xff0c;零基礎的你也能成為產品冊設計高手。本文將帶你走進這…

MindsDB:一個利用企業數據構建 AI 的平臺

MindsDB作為一個開源項目&#xff0c;它旨在將機器學習模型無縫集成到現有的數據庫系統中&#xff0c;為用戶提供實時的數據預測能力。這個項目的創新之處在于&#xff0c;它能夠以簡單、直觀的方式讓開發者和非技術人員都能夠利用AI進行數據分析和預測。 它是根據企業數據庫定…