【學會動態規劃】環形子數組的最大和(20)

目錄

動態規劃怎么學?

1. 題目解析

2. 算法原理

1. 狀態表示

2. 狀態轉移方程

3. 初始化

4. 填表順序

5. 返回值

3. 代碼編寫

寫在最后:


動態規劃怎么學?

學習一個算法沒有捷徑,更何況是學習動態規劃,

跟我一起刷動態規劃算法題,一起學會動態規劃!

1. 題目解析

題目鏈接:918. 環形子數組的最大和 - 力扣(LeetCode)

這道題目巴拉巴拉說了一大堆好像很玄乎的東西,我們不管他,

抓住題目的核心是要找子數組,那找子數組的規則是什么呢?

我們直接通過看示例來解讀:

通過示例二,我們可以看出什么叫做環形數組,他的頭和尾是相連的,

所以 5 和 5 可以組成一個子數組。

那我們該怎么做這道題呢?

我們可以將它拆解成兩個子問題:

1. 就是正常求他的最大子數組:

2. 因為環形數組的原因,我們可以將首尾相連的情況轉化成求最小子數組和的情況:

2. 算法原理

1. 狀態表示

根據我們上面分析的兩種情況,其實就可以氛圍兩種狀態表示:

f [ i ] 表示以 i 為結尾的所有子數組的最大和

g [ i ] 表示以 i 為結尾的所有子數組的最小和?

2. 狀態轉移方程

然后每個狀態表示有兩種情況,一個種情況是自己,一種情況是自己加上上一個位置的最大/小和

所以他們的狀態轉移方程是:

f [ i ] = max( nums[ i ],nums[ i ] + f [ i - 1 ]?)

g [ i ] = min( nums[ i ],nums[ i ] + g[ i - 1]?)

3. 初始化

初始化時為了防止越界,多加一格然后初始化成0即可

4. 填表順序

從左往右

5. 返回值

max( f 數組的最大值,sum - g 數組的最小值?)

3. 代碼編寫

class Solution {
public:int maxSubarraySumCircular(vector<int>& nums) {int n = nums.size();vector<int> f(n + 1);auto g = f;for(int i = 1; i <= n; i++) {f[i] = max(nums[i - 1], nums[i - 1] + f[i - 1]);g[i] = min(nums[i - 1], nums[i - 1] + g[i - 1]);}int fmax = INT_MIN;int gmin = INT_MAX;int sum = 0;for(int i = 1; i <= n; i++) fmax = max(fmax, f[i]);for(int i = 1; i <= n; i++) gmin = min(gmin, g[i]);for(auto s : nums) sum += s;return fmax < 0 ? fmax : max(fmax, sum - gmin);}
};

寫在最后:

以上就是本篇文章的內容了,感謝你的閱讀。

如果感到有所收獲的話可以給博主點一個哦。

如果文章內容有遺漏或者錯誤的地方歡迎私信博主或者在評論區指出~

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

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

相關文章

CSS 兩欄布局和三欄布局的實現

文章目錄 一、兩欄布局的實現1. floatmargin2. flaotBFC3. 定位margin4. flex 布局5. grid布局 二、三欄布局的實現1. float margin2. float BFC3. 定位 margin(或者定位BFC)4. flex布局5. 圣杯布局6. 雙飛翼布局 一、兩欄布局的實現 兩欄布局其實就是左側定寬&#xff0c;…

高層建筑全景vr火災隱患排查模擬培訓軟件助力群眾防范火災傷害

隨著城市化進程的加快&#xff0c;樓宇建筑的數量也在不斷增加。然而&#xff0c;樓宇消防安全問題也日益突出。為了提高樓宇員工和居民的消防安全意識&#xff0c;樓宇VR消防安全教育培訓應運而生。VR安全培訓公司深圳華銳視點制作的樓宇vr消防安全教育培訓&#xff0c;包括消…

谷粒商城第十一天-完善商品分組(主要添上關聯屬性)

目錄 一、總述 二、前端部分 2.1 改良前端獲取分組列表接口及其調用 2.2 添加關聯的一整套邏輯 三、后端部分 四、總結 一、總述 前端部分和之前的商品品牌添加分類差不多。 也是修改一下前端的分頁獲取列表的接口&#xff0c;還有就是加上關聯的那一套邏輯&#xff0c;…

nginx負載均衡與反向代理與正向代理

負載均衡&#xff1a;通過反向代理來實現 正向代理的配置方法。 正向代理&#xff1a; 工作原理&#xff1a;用戶端直接訪問不了&#xff0c;需要通過代理服務器來訪問web服務器&#xff0c;用戶端先訪問代理服務器&#xff0c;再訪問web服務器。web服務器響應給代理服務器&a…

【C語言】調試技巧

目錄 一、什么是bug? 二、調試 1.一般調試的步驟 2.Debug 和 Release 三、調試環境準備 四、調試時要查看的信息 1.查看臨時變量的值 2.查看內存信息 3.查看調用堆棧 4.查看反匯編信息 5.查看寄存器 五、練習 六、常見的coding技巧 七、const的作用 八、編程常見…

Linux - MongoDB 數據庫自動退出服務問題/閃退

問題&#xff1a;MongoDB 自動退出服務問題 原因&#xff1a; 由于 Mongodb 服務&#xff0c;使用過多系統內存&#xff0c;導致系統強制停止 Mongodb 服務。 解決方法&#xff1a; 在 mongodb.conf 配置文件內&#xff0c;添加新配置內容&#xff1a; wiredTigerCacheSi…

POI與EasyExcel--寫Excel

簡單寫入 03和07版的簡單寫入注意事項&#xff1a; 1. 對象不同&#xff1a;03對應HSSFWorkbook&#xff0c;07對應XSSFWorkbook 2. 文件后綴不同&#xff1a;03對應xls&#xff0c;07對應xlsx package com.zrf;import org.apache.poi.hssf.usermodel.HSSFWorkbook; import …

如何應用項目管理軟件進行敏捷開發管理

敏捷開發&#xff08;Agile Development&#xff09;是一種軟件開發方法論&#xff0c;強調在不斷變化的需求和環境下&#xff0c;通過迭代、協作和自適應的方式來開發軟件。敏捷方法的目標是提供更快、更靈活、更高質量的軟件交付&#xff0c;以滿足客戶需求并實現項目成功。 …

服務器數據恢復-EqualLogic存儲RAID5數據恢復案例

服務器數據恢復環境&#xff1a; 一臺DELL EqualLogic存儲中有一組由16塊SAS硬盤組建的RAID5陣列。存儲存放虛擬機文件&#xff0c;采用VMFS文件系統&#xff0c;劃分了4個lun。 服務器故障&檢測&分析&#xff1a; 存儲設備上有兩個硬盤指示燈顯示黃色&#xff0c;存儲…

【Windows 常用工具系列 6 -- CSDN字體格式(字體、顏色、大小)、背景色設置】

文章目錄 背景字體大小設置字體顏色設置字體類型背景色 上篇文章&#xff1a;Windows 常用工具系列 5 – Selenium IDE的使用方法 下篇文章&#xff1a;Windows 常用工具系列 7 – 禁用win10自帶的微軟輸入法 背景 Markdown是一種輕量級標記語言&#xff0c;它的目標是實現“…

1022.從根到葉的二進制之和

目錄 一、題目 二、代碼 一、題目 二、代碼 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nu…

基于java計算機類考研交流平臺設計與實現

摘要 高校的大學生考研是繼高校的高等教育更上一層的表現形式&#xff0c;教育的發展是我們社會的根本&#xff0c;那么信息技術的發展又是改變我們生活的重要因素&#xff0c;生活當中各種各樣的場景都存在著信息技術的發展。信息技術發展WEB信息化的到來讓人們的生活感受到了…

vue項目的實用性總結

1、mockjs 基本使用 ★ 安裝&#xff1a;npm i mockjs。 在src/mock/index.js內容如下&#xff1a; import Mock from mockjs //制訂攔截規則 Mock.mock(http://www.0313.com,get,你好啊)記得在main.js中引入一下&#xff0c;讓其參與整個項目的運行。 只要發出去的是get類型…

家紡行業小程序商城搭建指南

家紡行業作為一個不可或缺的消費領域&#xff0c;近年來備受關注。隨著互聯網的發展&#xff0c;小程序商城成為家紡行業拓展市場的新利器。搭建一個家紡行業小程序商城并不是一件困難的事情&#xff0c;只需要按照以下幾個步驟進行操作&#xff0c;就能輕松上手。 首先&#x…

Java后端框架模塊整合

提示&#xff1a;使用Java后端開發框架能夠提高開發效率、代碼質量&#xff0c;提升可擴展性&#xff0c;降低開發成本和易于維護。 文章目錄 前言MyBatis 框架知識Spring 框架知識SpringMVC 框架知識SpringBoot 框架知識 前言 提示&#xff1a;這里可以添加本文要記錄的大概內…

2023-08-15 LeetCode每日一題(字符串中的查找與替換)

2023-08-15每日一題 一、題目編號 833. 字符串中的查找與替換二、題目鏈接 點擊跳轉到題目位置 三、題目描述 你會得到一個字符串 s (索引從 0 開始)&#xff0c;你必須對它執行 k 個替換操作。替換操作以三個長度均為 k 的并行數組給出&#xff1a;indices, sources, tar…

UI設計師個人工作總結范文

UI設計師個人工作總結范文篇一 感受到了領導們“海納百川”的胸襟&#xff0c;感受到了作為廣告人“不經歷風雨&#xff0c;怎能見彩虹”的豪氣&#xff0c;也體會到了重慶廣告從業人員作為拓荒者的艱難和堅定(就目前國內廣告業而言&#xff0c;我認為重慶廣告業尚在發展階段并…

FreeRTOS(獨立看門狗監測任務執行與低功耗Tickless模式)

資料來源于硬件家園&#xff1a;資料匯總 - FreeRTOS實時操作系統課程(多任務管理) 目錄 一、獨立看門狗介紹 二、看門狗監測多任務執行思路 1、監測目標 2、監測方案 3、應用注意事項 三、看門狗監測多任務編程 1、STM32cubeMX配置 2、代碼編寫 四、低功耗Tickless模…

LeetCode 熱題 100 JavaScript--739. 每日溫度

給定一個整數數組 temperatures &#xff0c;表示每天的溫度&#xff0c;返回一個數組 answer &#xff0c;其中 answer[i] 是指對于第 i 天&#xff0c;下一個更高溫度出現在幾天后。如果氣溫在這之后都不會升高&#xff0c;請在該位置用 0 來代替。 示例 1: 輸入: temperat…

基于HTML+CSS+Echarts大屏數據可視化集合共99套

基于HTMLCSSEcharts大屏數據可視化集合共99套 一、介紹二、展示1.大數據展示系統2.物流訂單系統3.物流信息系統4.辦稅渠道監控平臺5.車輛綜合管控平臺 三、其他系統實現四、獲取源碼 一、介紹 基于HTML/CSS/Echarts的會議展覽、業務監控、風險預警、數據分析展示等多種展示需求…