代碼隨想錄算法訓練營第三十一天| 貪心算法理論基礎、LeetCode455.分發餅干、LeetCode376. 擺動序列 、LeetCode53. 最大子序和

貪心算法理論基礎:

貪心算法沒有類似遞歸、回溯的套路。主要的思想可以理解為:用局部最優找全局最優。

#LeetCode 455. Assign Cookies

#LeetCode 455. 視頻講解:貪心算法,你想先喂哪個小孩?| LeetCode:455.分發餅干_嗶哩嗶哩_bilibili

題目需要考慮局部最優,在這個題目中是大餅干盡可能分給胃口大的,充分利用餅干尺寸,全局最優是分給盡可能多的小孩。

注意用if 來表示某個條件,如果用while 會出現重復計數的問題。

代碼:

class Solution {public int findContentChildren(int[] g, int[] s) {Arrays.sort(g);Arrays.sort(s);int result = 0;int index = s.length - 1;for (int i = g.length - 1; i >= 0; i--) {if (index >= 0 && g[i] <= s[index]) {result ++;index --;}}return result;}
}

#LeetCode 376. Wiggle Subsequence

#LeetCode 376. 視頻講解:貪心算法,尋找擺動有細節!| LeetCode:376.擺動序列_嗶哩嗶哩_bilibili

如果使用prediff 表示第二個數字與第一個數字的差值,curdiff 表示第三個數字與第二個數字的差值,那么存在,

滿足條件的情況1 :prediff(nums[i] - nums[i - 1]) >= 0 同時?curdiff(nums[i + 1] - nums[i]) < 0

滿足條件的情況2 :prediff(nums[i] - nums[i - 1] <= 0 同時?curdiff(nums[i + 1] - nums[i]) > 0。

如果curdiff 等于0,那么代表后兩個元素相同,是不滿足擺動條件的,所以只有prediff 可以等于0。那么會存在:[1, 2, 2, 1] 這樣的情況擺動是3,還有情況是[1, 2] 這樣的擺動是2,還有一種是[1, 2, 2, 2, 3, 4]?這樣的情況擺動是2。針對最后一個情況,采取的方式是:prediff = curdiff; 這行代碼的執行是在滿足擺動條件時。

代碼:

class Solution {public int wiggleMaxLength(int[] nums) {int prediff = 0, curdiff = 0;int result = 1;for (int i = 0; i < nums.length - 1; i++) {curdiff = nums[i+1] - nums[i];if ((prediff >= 0 && curdiff < 0) || (prediff <= 0 && curdiff > 0)) {result ++;prediff = curdiff;}}return result;}
}

#LeetCode 53. Maximum Subarray

#LeetCode 53. 視頻講解:貪心算法的巧妙需要慢慢體會!LeetCode:53. 最大子序和_嗶哩嗶哩_bilibili

如果是[-2,-1],添加這一行代碼:result = Math.max(sum, result);?這一行代碼的意義是在每一次循環迭代中更新并維護最大子數組和的當前最優值。遇到連續和負數,才重新計算,而不是遇到負數就重新計算。如果遇到連續和負數,代表會造成最終的值變小。

代碼:

class Solution {public int maxSubArray(int[] nums) {int result = Integer.MIN_VALUE;int sum = 0;if (nums.length == 1) {return nums[0];}for (int i = 0; i < nums.length; i++) {sum += nums[i];result = Math.max(sum, result);if (sum > 0) {if (result < sum) {result = sum;}}else {sum = 0;}}return result;}
}

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

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

相關文章

魯教版六年級數學下冊-筆記

文章目錄 第五章 基本平面圖形1 線段、射線、直線2 比較線段的長短3 角4 角的比較5 多邊形和圓的初步認識第六章 整式的乘除1 同底數冪的乘法2 冪的乘方與積的乘方3 同底數冪的除法4 零指數冪與負整數指數冪5 整式的乘法6 平方差公式7 完全平方公式8 整式的除法 第七章 相交線與…

全域運營是割韭菜嗎?常見套路有哪些?

隨著全域運營賽道的全面開啟&#xff0c;全域運營服務商和全域運營系統的數量迅速增加&#xff0c;持續激發賽道活力的同時&#xff0c;也讓一些試圖用全域運營割韭菜的人有了可趁之機。 值得慶幸的是&#xff0c;由于當前全域運營賽道剛興起不久&#xff0c;因此&#xff0c;割…

Python | Leetcode Python題解之第110題平衡二叉樹

題目&#xff1a; 題解&#xff1a; class Solution:def isBalanced(self, root: TreeNode) -> bool:def height(root: TreeNode) -> int:if not root:return 0leftHeight height(root.left)rightHeight height(root.right)if leftHeight -1 or rightHeight -1 or a…

C++青少年簡明教程:If選擇語句

C青少年簡明教程&#xff1a;If選擇語句 C中選擇語句的語法是&#xff1a; if (條件) { 條件成立時需要執行的語句... } [else { 條件不成立時需要執行的語句... }] 說明&#xff1a; if后面使用一個括號&#xff0c;括號里是條件——關系表達式。 所謂的關系表達式就是判…

5.24學習記錄

[FSCTF 2023]ez_php2 比較簡單的pop鏈 <?php highlight_file(__file__); Class Rd{public $ending;public $cl;public $poc;public function __destruct(){echo "All matters have concluded";die($this->ending);}public function __call($name, $arg){for…

E1載波:一種2.048Mbps速率的PCM載波

E1載波的基本幀由32個子信道組成 幀長為256個bit,分為32個相等時隙&#xff0c;一個時隙為8個bit。256/328 時隙的編號為CH0~CH31 全幀包含256位,且每一幀用 125us時間傳送 E1載波支持的數據傳輸效率為2.048Mbps&#xff0c;用PCM編碼&#xff08;即 256bit/125us2.048Mbps…

Android 一個activity對應多個window

Android 一個activity對應多個window Android Activity 對應多個Window&#xff0c;Activity是應用程序的重要組成部分&#xff0c;在程序中的一個屏幕界面&#xff0c;用戶可以進行交互操作。在Android應用程序中&#xff0c;Activity對應著一個Window&#xff0c;一個Activi…

微信小程序源碼-基于Java后端的小區租拼車管理信息系統畢業設計(附源碼+演示錄像+LW)

大家好&#xff01;我是程序員一帆&#xff0c;感謝您閱讀本文&#xff0c;歡迎一鍵三連哦。 &#x1f49e;當前專欄&#xff1a;微信小程序畢業設計 精彩專欄推薦&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python畢業設…

洗完咖啡杯的最早時間

題目描述&#xff1a;給定一個數組arr&#xff0c;arr[i]代表第i號咖啡機泡一杯咖啡的時間&#xff0c;給定一個正數N&#xff0c;表示N個人在等著咖啡機&#xff0c;每臺咖啡機只能一個一個的泡咖啡&#xff0c;其次&#xff0c;只有一臺咖啡機可以洗杯子&#xff0c;一次只能…

1.OLED

1.基礎知識

kotlin重復類編譯報錯解決

Duplicate class org.jetbrains.annotations.TestOnly found in modules annotations-12.0 (com.intellij:annotations:12.0) and annotations-13.0 (org.jetbrains:annotations:13.0) Go to the documentation to learn how to <a href"d.android.com/r/tools 參考鏈…

網絡拓撲—DHCP服務配置

文章目錄 DHCP服務搭建相關配置細節前提安裝DHCP服務 DHCP服務搭建 相關配置細節前提 系統&#xff1a;Windows Server 2003 IP網段&#xff1a;10.0.0.0/24 三臺機子&#xff1a; 普通PC機 DHCP服務器 路由器&#xff08;兩塊網卡&#xff0c;連接內外網&#xff09; //注…

覆蓋索引與復合索引 小記

表 t_1 有一個復合索引 (user_id,create_time) 執行以下SQL SELECT COUNT(1) FROM t_1 WHERE create_time > 2024-01-10 AND create_time < 2024-05-25 ;看似不滿足復合索引最左前綴的條件,但依然會使用復合索引(user_id,create_time), 滿足覆蓋索引. 但如果是執行以…

【Unity】Unity項目轉抖音小游戲(三)資源分包,抖音云CDN

業務需求&#xff0c;開始接觸一下抖音小游戲相關的內容&#xff0c;開發過程中記錄一下流程。 使用資源分包可以優化游戲啟動速度&#xff0c;是抖音小游戲推薦的一種方式&#xff0c;抖音云也提供存放資源的CDN服務 抖音云官方文檔&#xff1a;https://developer.open-douyi…

基于灰狼優化算法優化支持向量機(GWO-SVM)時序預測

代碼原理及流程 基于灰狼優化算法優化支持向量機&#xff08;GWO-SVM&#xff09;的時序預測代碼的原理和流程如下&#xff1a; 1. **數據準備**&#xff1a;準備時序預測的數據集&#xff0c;將數據集按照時間順序劃分為訓練集和測試集。 2. **初始化灰狼群體和SVM模型參數…

LeetCode 47.全排列 II

LeetCode 47.全排列 II 1、題目 題目鏈接&#xff1a;47. 全排列 II 給定一個可包含重復數字的序列 nums &#xff0c;按任意順序 返回所有不重復的全排列。 示例 1&#xff1a; 輸入&#xff1a;nums [1,1,2] 輸出&#xff1a; [[1,1,2],[1,2,1],[2,1,1]]示例 2&#xff…

《基于Jmeter的性能測試框架搭建》改進一

《基于Jmeter的性能測試框架搭建》文末筆者提到了不少待改進之處&#xff0c;如下所示。 Grafana性能圖表實時展現&#xff0c;測試過程中需實時截圖形成測試報告&#xff0c;不夠人性化。解決方案&#xff1a;自動生成測試報告并郵件通知。 Grafana性能圖表需測試人員實時監控…

Big Demo Day第十三期活動即將啟幕,Web3創新項目精彩紛呈,PEPE大獎等你抽取

5月28號在香港數碼港 Big Demo Day第十三期 活動即將拉開帷幕&#xff0c;活動將匯集眾多Web3領域的創新項目&#xff0c;為參會者帶來一場科技與智慧交融的盛宴。在這里&#xff0c;你不僅能深入了解區塊鏈、AI等前沿技術的最新應用&#xff0c;還能有機會贏取豐厚的PEPE大獎。…

免費wordpress中文主題

免費大圖wordpress主題 首頁是一張大圖的免費wordpress主題模板。簡潔實用&#xff0c;易上手。 https://www.jianzhanpress.com/?p5857 免費WP模板下載 頂部左側導航條的免費WP模板&#xff0c;后臺簡潔&#xff0c;新手也可以下載使用。 https://www.jianzhanpress.com/…

sizeof的了解

32位編譯器 qDebug() << "int:" << sizeof(int);qDebug() << "char:" << sizeof(char);qDebug() << "char*:" << sizeof(char*); 字節數&#xff1a; int: 4 char: 1 char*: 4 64位編譯器 字節數&#…