【代碼隨想錄_Day24】134. 加油站 135. 分發糖果 860. 檸檬水找零 406. 根據身高重建隊列

Day24 OK,今日份的打卡!第二十四天

  • 以下是今日份的總結
    • 加油站
    • 分發糖果
    • 檸檬水找零
    • 根據身高重建隊列

以下是今日份的總結

  1. 加油站
  2. 分發糖果
  3. 檸檬水找零
  4. 根據身高重建隊列

今天的題目難度不低,而且非常的有意思,盡量還是寫一些簡潔代碼 ^?_?^

加油站

思路:

尋找起點,然后進行條件判斷
gas[i] - cost[i]的差值是很重要的判斷條件

值得注意的是

局部最優:當前累加curSum一旦小于0,起始位置至少要是i+1,因為從i之前開始一定不行
全局最優:找到可以跑一圈的起始位置

    int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {int sum = 0, start = 0, curSum = 0;for (int i = 0; i < gas.size(); i++) {curSum += gas[i] - cost[i];//當前位置的差值和sum += gas[i] - cost[i];//兩個數組的差值總和if (curSum < 0) {start = i + 1; //當前差值的和小于0,開始位置直接置于下一位curSum = 0;//差值之和重新置為0}}if (sum < 0)return -1;//兩個數組的差值總和小于0時,說明無論如何都不可能回到原點return start;}

分發糖果

思路:

局部最優解:
一次是從左到右遍歷,只比較右邊孩子評分比左邊大的情況。
一次是從右到左遍歷,只比較左邊孩子評分比右邊大的情況。
整體最優解:相鄰的孩子中,評分高的孩子獲得更多的糖果

值得注意的是

這道題目一定是要確定一邊之后,再確定另一邊,例如比較每一個孩子的左邊,然后再比較右邊,如果兩邊一起考慮一定會顧此失彼。

    int candy(vector<int>& ratings) {vector<int> candyVec(ratings.size(), 1);// 從前向后for (int i = 1; i < ratings.size(); i++) {if (ratings[i] > ratings[i - 1])candyVec[i] = candyVec[i - 1] + 1;}// 從后向前for (int i = ratings.size() - 2; i >= 0; i--) {if (ratings[i] > ratings[i + 1]) {candyVec[i] = max(candyVec[i], candyVec[i + 1] + 1);//倒序的時候滿足條件時,選取更大的值}}// 統計結果int result = 0;for (int i = 0; i < candyVec.size(); i++)result += candyVec[i];return result;}

檸檬水找零

思路:

最大只有20的面額,只需記錄5和10剩下的數額

值得注意的是

20塊優先用10+5的方法找零,讓后才是三個5

     bool lemonadeChange(vector<int>& bills) {int five = 0;int ten = 0;for (int i = 0; i < bills.size(); i++) {if (bills[i] == 5) {five++;}if (bills[i] == 10) {if (five == 0)return false;five--;ten++;}if (bills[i] == 20) {if (ten != 0 && five != 0) {ten--;five--;} else if (five >= 3 && ten == 0) {five -= 3;} else {return false;}}}return true;}

根據身高重建隊列

思路:

k代表的是,現在這個隊里,自己前面的人里面,h比自己大或與自己相等的人的個數。

值得注意的是

局部最優:優先按身高高的people的k來插入。插入操作過后的people滿足隊列屬性
全局最優:最后都做完插入操作,整個隊列滿足題目隊列屬性

    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) {//按照身高大小排序,身高相同時k從小到大排列sort(people.begin(),people.end(),cmp);vector<vector<int>>res;for(int i = 0;i<people.size();i++){int pos = people[i][1];//k 值當作距離 數組開頭的插入位置res.insert(res.begin()+pos, people[i]);//插入操作}return res;}

寫在最后

----OK,今日份的博客就寫到這里,這一期的貪心算法好難想,明天繼續加油!!!
—還沒看下期的題,但是我的棧還有一節沒寫;
–追上時間進度了嗎?如追,從欠兩天變成欠一天!!(笑
-但是你要慶祝,今天是新生,今天是轉變,今天不再是過去的延伸。

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

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

相關文章

花鍵參數確定的流程是怎么樣的?

繼續花鍵的話題&#xff0c;今天跟小伙伴們一同學習一下&#xff1a;漸開線花鍵的參數確定的一般流程及基本方法。 前面有好幾篇介紹了花鍵的基本參數的概念&#xff0c;包括規格、模數、齒數、壓力角等等。以及花鍵的定心方式&#xff0c;內外花鍵的配合方式。那么這些參數的…

ARM架構 AArch64 基礎知識介紹

介紹 aarch64是 ARM 架構的 64 位版本&#xff0c;它是 ARMv8 架構的一部分&#xff0c;被設計用來提供更高的性能和更大的地址空間&#xff0c;同時保持與 32 位 ARM 架構的兼容性。AArch64 是 ARMv8 的 64 位指令集架構&#xff08;ISA&#xff09;&#xff0c;它提供了豐富的…

2023 最新版IntelliJ IDEA 2023.1創建Java Web前(vue3)后端(spring-boot3)分離 項目詳細步驟(圖文詳解)

文章目錄 &#x1f6a9; 接上篇&#x1f3f3;?&#x1f308; 項目構建所需的相關工具JavaIDEAmavenNodeJSVueVisual Studio Code &#x1f30c; 后端項目創建詳細步驟&#x1f6eb; 1、開始創建新項目&#x1f6eb; 2、輸入項目名稱、選擇項目存儲位置、項目管理工具&#xff…

昇思25天學習打卡營第4天|yulang

今天主要了解了數據集 Dataset&#xff0c;主要包含了&#xff1a;數據集加載、數據集迭代、數據集常用操作、 可隨機訪問數據集、可迭代數據集、生成器。對于生成器很好理解&#xff0c;用代碼來造數據&#xff0c;可以動態地生成數據。主要作用數據集通常被用于訓練模型

tampermonkey插件下載國家標準文件

#創作靈感# 最近在一個系統招標正文中看到了一些國家標準&#xff0c;想要把文章下載下來&#xff0c;方便查閱&#xff0c;但是“國家標準全文公開系統”網站只提供了在線預覽功能&#xff0c;沒有提供下載功能&#xff0c;但是公司又需要文件&#xff0c;在網上找了一些辦法&…

gin項目部署到服務器并后臺啟動

文章目錄 一、安裝go語言環境的方式1.下載go安裝包&#xff0c;解壓&#xff0c;配置環境變量2.壓縮項目上傳到服務器并解壓3.來到項目的根目錄3.開放端口&#xff0c;運行項目 二、打包的方式1.在項目的根目錄下輸入以下命令2.把打包好的文件上傳到服務器3.部署網站4.ssl證書 …

C++字體庫開發之字體回退三

代碼片段 class FontCoverage { public: using SP std::shared_ptr<FontCoverage>; virtual ~FontCoverage() default; virtual void set(int index, FontTypes::CoverageLevel level) 0; virtual FontTypes::Coverag…

004 線程的狀態

文章目錄 Java線程可能的狀態&#xff1a; 狀態名稱說明NEW初始狀態&#xff0c;線程被構建&#xff0c;但是還沒有調用start()方法RUNNABLE運行狀態&#xff0c;Java線程將操作系統中的就緒和運行兩種狀態籠統地稱作"運行中"BLOCKED阻塞狀態&#xff0c;表示線程阻…

職場辦公受歡迎的電腦桌面便簽,手機電腦同步的備忘錄

在快節奏的職場生活中&#xff0c;有效的時間管理和信息記錄變得尤為重要。為了幫助大家更好地應對工作挑戰&#xff0c;好用的電腦桌面便簽和手機電腦同步的備忘錄&#xff0c;好用便簽應運而生&#xff0c;成為了當前職場辦公中的得力助手。 好用便簽是一款備受青睞的電腦桌…

阿里云物聯網應用層開發:第三部分,微信小程序和web客戶端實現

文章目錄 嗶哩嗶哩視頻教程1、阿里云物聯網平臺對接微信小程序2、阿里云物聯網平臺對接web客戶端2-1MQTT服務器編寫2-2 web端Servlet部分編寫備注嗶哩嗶哩視頻教程 【阿里云物聯網綜合開發,STM32+ESP8266+微信小程序+web客戶端一篇教程詳細講解】 https://www.bilibili.com/v…

.NET下的開源OCR項目:解鎖圖片文字識別的新篇章

在數字化時代&#xff0c;從圖片中高效準確地提取文字信息已成為眾多應用場景的迫切需求。OCR&#xff08;Optical Character Recognition&#xff0c;光學字符識別&#xff09;技術正是滿足這一需求的關鍵技術。對于.NET開發者而言&#xff0c;幸運的是&#xff0c;存在多個開…

c# 的 goto

搞循環感覺沒什么必要 int number 0; Console.WriteLine("請輸入一個數字&#xff08;輸入-1結束&#xff09;:"); start: // 標簽 number int.Parse(Console.ReadLine()); if (number -1) { Console.WriteLine("程序結束。"); } else { Cons…

接私活兒神器,一款功能強大的 SaaS 快速開發平臺

今天&#xff0c;推薦一個微服務 SaaS 快速開發平臺系統項目&#xff0c;筆者第一次使用就有點上頭&#xff0c;愛不釋手&#xff0c;必須要推薦給大家。 這是我目前見過最好的微服務 SaaS 快速開發平臺系統項目。功能完整&#xff0c;代碼結構清晰。值得推薦。 項目介紹 本…

nginx部署多個項目;vue打包項目部署設置子路徑訪問;一個根域名(端口)配置多個子項目

本文解決&#xff1a; vue打包項目部署設置子路徑訪問&#xff1b;nginx部署多個子項目&#xff1b;一個ip/域名 端口 配置多個子項目&#xff1b;配置后&#xff0c;項目能訪問&#xff0c;但是刷新頁面就丟失的問題 注&#xff1a;本文需要nginx配置基礎。基礎不牢的可見文…

昇思學習打卡-6-基于MindSpore的GPT2文本摘要

第一次近距離接觸GPT&#xff0c;了解了tokenizers這個分詞庫&#xff0c;感覺NLP和CV對比起來&#xff0c;處理流程基本一致&#xff0c;都是數據集加載和處理&#xff0c;模型構建、選擇學習率、模型訓練&#xff0c;進而可以使用模型進行推理。 不同的是&#xff0c;NLP可能…

致力于打造一個操作最簡單、功能最全面、創意最豐富的聊天記錄管理工具

管理您的聊天數據 下載&#xff1a;https://download.csdn.net/download/mo3408/89497474 提供數據獲取、導出、分析全棧式解決方案 獲取信息 一鍵式操作&#xff0c;數據信手拈來 導出聊天記錄 批量導出、自定義時間、消息類型任意選、Word、Excel、HTML、TXT想要哪個勾哪個…

在地圖上根據經緯度,畫一個矩型圍欄,設置每個點的經緯度

在做一個需求時有一個小點就是添加一個配送區域(5公里直徑內的)矩形圍欄 我做的比較簡單 大家看看有沒有幫助, 也是精簡代碼。測試效果上相對是精準的 //谷歌&#xff0c;根據經緯度獲取以它為中心半徑為5公里內的矩形的四個點經緯度getDefalutPoints (lng: number, lat: num…

np.argsort

函數解釋 np.argsort是NumPy庫中的一個函數&#xff0c;用于對數組進行排序并返回排序后的索引。它不會直接對數組進行排序&#xff0c;而是返回一個數組&#xff0c;這個數組中的元素是原數組中元素按升序排序后的索引。 numpy.argsort(a, axis-1, kindNone, orderNone) 參…

adb push 報錯 ...error: failed to copy...

一、現象&#xff1a; 原因&#xff1a;沒有權限導致的 二、解決方法&#xff1a; adb root adb remount #重新加載文件系統三、再次嘗試&#xff1a;adb push xxx.apk /system/app 結果&#xff1a;成功

貓咖老板教你一招解決貓浮毛問題,質量好的貓用空氣凈化器分享

作為一名貓咖店老板&#xff0c;我經常被朋友問到關于寵物空氣凈化器的各種問題。有人認為這是個神器&#xff0c;而有人則認為這完全是花錢買智商稅。其實我剛開始對購買寵物空氣凈化器也持懷疑態度&#xff0c;心想這么多錢花下去真的有效嗎&#xff1f;但使用后&#xff0c;…