代碼隨想錄-算法訓練營day31【貪心算法01:理論基礎、分發餅干、擺動序列、最大子序和】

代碼隨想錄-035期-算法訓練營【博客筆記匯總表】-CSDN博客

第八章 貪心算法 part01● 理論基礎 
● 455.分發餅干 
● 376. 擺動序列 
● 53. 最大子序和 貪心算法其實就是沒有什么規律可言,所以大家了解貪心算法 就了解它沒有規律的本質就夠了。 不用花心思去研究其規律, 沒有思路就立刻看題解。基本貪心的題目 有兩個極端,要不就是特簡單,要不就是死活想不出來。  學完貪心之后再去看動態規劃,就會了解貪心和動規的區別。詳細布置 理論基礎 https://programmercarl.com/%E8%B4%AA%E5%BF%83%E7%AE%97%E6%B3%95%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html  455.分發餅干  https://programmercarl.com/0455.%E5%88%86%E5%8F%91%E9%A5%BC%E5%B9%B2.html  376. 擺動序列  https://programmercarl.com/0376.%E6%91%86%E5%8A%A8%E5%BA%8F%E5%88%97.html  53. 最大子序和  https://programmercarl.com/0053.%E6%9C%80%E5%A4%A7%E5%AD%90%E5%BA%8F%E5%92%8C.html  往日任務
● day 1 任務以及具體安排:https://docs.qq.com/doc/DUG9UR2ZUc3BjRUdY  
● day 2 任務以及具體安排:https://docs.qq.com/doc/DUGRwWXNOVEpyaVpG  
● day 3 任務以及具體安排:https://docs.qq.com/doc/DUGdqYWNYeGhlaVR6 
● day 4 任務以及具體安排:https://docs.qq.com/doc/DUFNjYUxYRHRVWklp 
● day 5 周日休息
● day 6 任務以及具體安排:https://docs.qq.com/doc/DUEtFSGdreWRuR2p4 
● day 7 任務以及具體安排:https://docs.qq.com/doc/DUElCb1NyTVpXa0Jj 
● day 8 任務以及具體安排:https://docs.qq.com/doc/DUGdsY2JFaFhDRVZH 
● day 9 任務以及具體安排:https://docs.qq.com/doc/DUHVXSnZNaXpVUHN4 
● day 10 任務以及具體安排:https://docs.qq.com/doc/DUElqeHh3cndDbW1Q 
●day 11 任務以及具體安排:https://docs.qq.com/doc/DUHh6UE5hUUZOZUd0 
●day 12 周日休息 
●day 13 任務以及具體安排:https://docs.qq.com/doc/DUHNpa3F4b2dMUWJ3 
●day 14 任務以及具體安排:https://docs.qq.com/doc/DUHRtdXZZSWFkeGdE 
●day 15 任務以及具體安排:https://docs.qq.com/doc/DUHN0ZVJuRmVYeWNv 
●day 16 任務以及具體安排:https://docs.qq.com/doc/DUHBQRm1aSWR4T2NK 
●day 17 任務以及具體安排:https://docs.qq.com/doc/DUFpXY3hBZkpabWFY 
●day 18 任務以及具體安排:https://docs.qq.com/doc/DUFFiVHl3YVlReVlr 
●day 19 周日休息
●day 20 任務以及具體安排:https://docs.qq.com/doc/DUGFRU2V6Z1F4alBH  
●day 21 任務以及具體安排:https://docs.qq.com/doc/DUHl2SGNvZmxqZm1X 
●day 22 任務以及具體安排:https://docs.qq.com/doc/DUHplVUp5YnN1bnBL  
●day 23 任務以及具體安排:https://docs.qq.com/doc/DUFBUQmxpQU1pa29C 
●day 24 任務以及具體安排:https://docs.qq.com/doc/DUEhsb0pUUm1WT2NP  
●day 25 任務以及具體安排:https://docs.qq.com/doc/DUExTYXVzU1BiU2Zl 
●day 26 休息 
●day 27 任務以及具體安排:https://docs.qq.com/doc/DUElpbnNUR3hIbXlY 
●day 28 任務以及具體安排:https://docs.qq.com/doc/DUG1yVHdlWEdNYlhZ  
●day 29 任務以及具體安排:https://docs.qq.com/doc/DUHZYbWhwSHRCRmp3 
●day 30 任務以及具體安排:https://docs.qq.com/doc/DUEdTVVhxbnJiY3BR

目錄

理論基礎

0455_分發餅干

0376_擺動序列

0053_最大子序和


理論基礎

貪心的本質是選擇每一階段的局部最優,從而達到全局最優。

0455_分發餅干

package com.question.solve.leetcode.programmerCarl2._09_greedyAlgorithms;import java.util.Arrays;public class _0455_分發餅干 {
}class Solution0455 {//思路1:優先考慮餅干,小餅干先喂飽小胃口public int findContentChildren(int[] g, int[] s) {Arrays.sort(g);Arrays.sort(s);int start = 0;int count = 0;for (int i = 0; i < s.length && start < g.length; i++) {if (s[i] >= g[start]) {start++;count++;}}return count;}
}class Solution0455_2 {//思路2:優先考慮胃口,先喂飽大胃口public int findContentChildren(int[] g, int[] s) {Arrays.sort(g);Arrays.sort(s);int count = 0;int start = s.length - 1;//遍歷胃口for (int index = g.length - 1; index >= 0; index--) {if (start >= 0 && g[index] <= s[start]) {start--;count++;}}return count;}
}

0376_擺動序列

package com.question.solve.leetcode.programmerCarl2._09_greedyAlgorithms;public class _0376_擺動序列 {
}class Solution0376 {public int wiggleMaxLength(int[] nums) {if (nums.length <= 1) {return nums.length;}int curDiff = 0;//當前差值int preDiff = 0;//上一個差值int count = 1;for (int i = 1; i < nums.length; i++) {//得到當前差值curDiff = nums[i] - nums[i - 1];//如果當前差值和上一個差值為一正一負//等于0的情況表示初始時的preDiffif ((curDiff > 0 && preDiff <= 0) || (curDiff < 0 && preDiff >= 0)) {count++;preDiff = curDiff;}}return count;}
}class Solution0376_2 {//DPpublic int wiggleMaxLength(int[] nums) {// 0 i 作為波峰的最大長度// 1 i 作為波谷的最大長度int dp[][] = new int[nums.length][2];dp[0][0] = dp[0][1] = 1;for (int i = 1; i < nums.length; i++) {//i 自己可以成為波峰或者波谷dp[i][0] = dp[i][1] = 1;for (int j = 0; j < i; j++) {if (nums[j] > nums[i]) {// i 是波谷dp[i][1] = Math.max(dp[i][1], dp[j][0] + 1);}if (nums[j] < nums[i]) {// i 是波峰dp[i][0] = Math.max(dp[i][0], dp[j][1] + 1);}}}return Math.max(dp[nums.length - 1][0], dp[nums.length - 1][1]);}
}

0053_最大子序和

package com.question.solve.leetcode.programmerCarl2._09_greedyAlgorithms;public class _0053_最大子序和 {
}class Solution0053 {public int maxSubArray(int[] nums) {if (nums.length == 1) {return nums[0];}int sum = Integer.MIN_VALUE;int count = 0;for (int i = 0; i < nums.length; i++) {count += nums[i];sum = Math.max(sum, count);//取區間累計的最大值(相當于不斷確定最大子序終止位置)if (count <= 0) {count = 0;//相當于重置最大子序起始位置,因為遇到負數一定是拉低總和}}return sum;}
}class Solution0053_2 {//DP方法public int maxSubArray(int[] nums) {int ans = Integer.MIN_VALUE;int[] dp = new int[nums.length];dp[0] = nums[0];ans = dp[0];for (int i = 1; i < nums.length; i++) {dp[i] = Math.max(dp[i - 1] + nums[i], nums[i]);ans = Math.max(dp[i], ans);}return ans;}
}

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

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

相關文章

C++牛客周賽題目分享(2)小紅叕戰小紫,小紅的數組移動,小紅的素數合并,小紅的子序列求和

目錄 ?編輯 1.前言 2.四道題目 1.小紅叕戰小紫 1.題目描述 2.輸入描述 3.輸出描述 4.示例 5.題解與思路 2.小紅的數組移動 1.題目描述 2.輸入描述 3.輸出描述 4.示例 5.題解與思路 3.小紅的素數合并 1.題目描述 2.輸入描述 3.輸出描述 4.示例 5.題解與思…

增強For循環執行順序探究

增強For循環執行順序探究 增強For循環基礎執行順序探討對于數組對于集合 經典示例數組示例集合示例&#xff08;ArrayList&#xff09; 注意事項結論 在Java編程中&#xff0c;增強型for循環&#xff08;也稱為“foreach”循環&#xff09;是一種簡潔而強大的迭代集合或數組元素…

super

super 一、理解 super.屬性&#xff1a;在子類中&#xff0c;調用父類非私有化的成員屬性 super.方法&#xff1a;在子類中&#xff0c;調用父類非私有化的成員方法 super()&#xff1a;在子類構造方法中調用父類非私有的構造方法 二、案例 需求&#xff1a;編寫中國人和日本人…

云原生新手和開源教育分論壇 01-Kubernetes 社區:從新手到影響者

2024年04月20日 上海KCD & Shanghai&#xff1a;https://community.cncf.io/events/details/cncf-kcd-shanghai-presents-kcd-shanghai-2024/視頻觀看&#xff1a;https://www.bilibili.com/video/BV1nD421T786/?spm_id_from333.999.0.0&vd_sourceae7b192be069682aabc…

【FreeRTOS 快速入門】-- 1、STM32工程移植FreeRTOS

目錄 一、新建STM32工程 為了示范完整的移植過程&#xff0c;我們從0開始&#xff0c;新建一個標準的STM32點燈工程。 &#xff08;本篇以CubeMX作示范&#xff0c;CubeIDE操作近同&#xff0c;可作對比參考&#xff09; 1、新建工程 選擇 芯片型號 新建工程 2、搜索芯片型號…

24年做抖音小店,你還停留在數據?別人都已經開始注重利潤了

大家好&#xff0c;我是電商笨笨熊 一件事情持續做&#xff0c;一個項目持續深耕&#xff0c;意義到底是什么&#xff1f; 這句話我常常說&#xff0c;但很多人似乎走偏了實際意義&#xff1b; 尤其對于新手來說&#xff0c;做抖音小店總是向往某某老玩家多么牛的數據&#…

程序員健康指南:運動,讓代碼更流暢

程序員健康指南&#xff1a;運動&#xff0c;讓代碼更流暢 程序員&#xff0c;一個與電腦相伴的群體&#xff0c;長時間的久坐和高強度的腦力勞動是他們的日常。然而&#xff0c;久坐不僅影響體態&#xff0c;更對心臟健康構成威脅。根據《歐洲心臟雜志》的研究&#xff0c;中…

第十三節 huggingface的trainner解讀與Demo

文章目錄 前言一、trainer和TrainingArguments訓練與預測完整Demo1、數據構建2、TrainingArguments構建3、Trainer初始化4、模型訓練5、模型推理6、完整demo代碼7、完整運行結果二、輔助函數1、yield返回內容2、迭代器中斷恢復迭代demo3、yield from結構4、torch.Generator()的…

【PPT技巧】ppt文件打開就是只讀模式,如何改為可編輯模式?

PPT文檔打開是只讀模式&#xff0c;如何改成可編輯文檔呢&#xff1f;這需要分幾種情況來說&#xff0c;所以今天將介紹幾種方法幫助PPT只讀文檔改為可編輯文檔。 方法一&#xff1a; 我們可以先查看一下文件屬性&#xff0c;屬性中有只讀屬性&#xff0c;當我們打開文檔之后帶…

C++入門——引用(2)

前言 上一節我們開始學習了C&#xff0c;并且對C有了初步的了解&#xff0c;這一節我們繼續學習C的基礎&#xff0c;那么廢話不多說&#xff0c;我們正式進入今天的學習 C中的引用 1.1引用的概念 引用不是新定義一個變量&#xff0c;而是給已存在變量取了一個別名&#xff0…

uniapp小程序:大盒子包裹小盒子但是都有點擊事件該如何區分?

在開發過程中我們會遇到這種情況&#xff0c;一個大盒子中包裹這一個小盒子&#xff0c;兩個盒子都有點擊事件&#xff0c;例如&#xff1a; 這個時候如果點擊評價有可能會點擊到它所在的大盒子&#xff0c;如果使用css中的z-index設置層級的話如果頁面的盒子多的話會混亂&…

Spring解決泛型擦除的思路不錯,現在它是我的了。

你好呀&#xff0c;我是浮生。 Spring 的事件監聽機制&#xff0c;不知道你有沒有用過&#xff0c;實際開發過程中用來進行代碼解耦簡直不要太爽。 但是我最近碰到了一個涉及到泛型的場景&#xff0c;常規套路下&#xff0c;在這個場景中使用該機制看起來會很傻&#xff0c;但…

15、FreeRTOS 軟件定時器

文章目錄 一、什么是定時器?1.1 定時器的理解1.2 軟件定時器的特性 二、 軟件定時器的上下文2.1 守護任務2.2 守護任務的調度2.3 回調函數 三、軟件定時器的函數3.1 創建3.2 刪除3.3 啟動/停止3.5 修改周期3.6 定時器ID 四、案例4.1 一般使用4.2 消除抖動 一、什么是定時器? …

怎么解決ModuleNotFoundError: No module named ‘httpx_sse‘

解決方案 pip install httpx_sseLooking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple Collecting httpx_sse Downloading https://pypi.tuna.tsinghua.edu.cn/packages/e1/9b/a181f281f65d776426002f330c31849b86b31fc9d848db62e16f03ff739f/httpx_sse-0.4.0-py3-n…

Android 14.0 frameworks添加自定義服務

1.概述 在14.0的系統rom定制化產品開發中,對于提供系統接口來給app調用,來控制系統的某些功能,所以需要添加自定義服務也是常有功能,因此需要來在frameworks層中添加自定義系統服務的功能 2.frameworks添加自定義服務的核心類 frameworks\base\services\java\com\android…

Midjourney Imagine API 申請及使用

Midjourney Imagine API 申請及使用 申請流程 要使用 Midjourney Imagine API&#xff0c;首先可以到 Midjourney Imagine API 頁面點擊「Acquire」按鈕&#xff0c;獲取請求所需要的憑證&#xff1a; 如果你尚未登錄或注冊&#xff0c;會自動跳轉到登錄頁面邀請您來注冊和登…

多線程【LeetCode】

多線程【LeetCode】 前言前言推薦多線程信號量1114.按序打印1115.交替打印FooBar1116.打印零與奇偶數1117.H2O生成1188.設計有限阻塞隊列Plus1195.交替打印字符串1226.哲學家進餐 最后 前言 這是陳舊已久的草稿2022-11-27 20:44:17 這個是刷算法&#xff0c;也是準備寒假實習…

語音轉文字服務的調用接口

語音轉文字&#xff08;Speech-to-Text&#xff0c;STT&#xff09;技術允許將口語化的語音轉換成書面文字。以下是一些提供語音轉文字服務的調用接口及其特點。北京木奇移動技術有限公司&#xff0c;專業的軟件外包開發公司&#xff0c;歡迎交流合作。 1.訊飛開放平臺語音轉寫…

[貓頭虎分享21天微信小程序基礎入門教程]第1天:微信小程序概述與開發環境搭建教程

第1天&#xff1a;微信小程序概述與開發環境搭建 &#x1f63a; 文章目錄 第1天&#xff1a;微信小程序概述與開發環境搭建 &#x1f63a;自我介紹微信小程序概述特點 開發環境搭建步驟1: 注冊微信小程序賬號步驟2: 安裝開發者工具步驟3: 熟悉開發者工具界面 今日學習總結小測試…

UnityDOTS備忘

Unity DOTS中創建一個AssetBundle并將其用作Entity 創建一個新的Unity項目&#xff0c;并確保已啟用DOTS功能。 創建一個AssetBundle&#xff0c;可以通過在Project視圖中右鍵單擊文件夾并選擇“Create > AssetBundle”來創建。 將您想要轉換為Entity的資源&#xff08;例…