日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数组最大可以开多大_每日算法系列【LeetCode 689】三个无重叠子数组的最大和

發布時間:2025/4/5 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数组最大可以开多大_每日算法系列【LeetCode 689】三个无重叠子数组的最大和 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述

給定數組

由正整數組成,找到三個互不重疊的子數組的最大和。 每個子數組的長度為 ,我們要使這 個項的和最大化。 返回每個區間起始索引的列表(索引從 0 開始)。如果有多個結果,返回字典序最小的一個。

示例1

輸入: [1,2,1,2,6,7,5,1], 2 輸出: [0, 3, 5] 解釋: 子數組 [1, 2], [2, 6], [7, 5] 對應的起始索引為 [0, 3, 5]。 我們也可以取 [2, 1], 但是結果 [1, 3, 5] 在字典序上更大。

提示

  • 的范圍在[1, 20000]之間。
  • 的范圍在[1, 65535]之間。
  • 的范圍在 [1, floor(nums.legth / 3)]之間。

題解

首先看數據范圍,這題不能使用暴力,暴力時間復雜度是

,一定會超時,所以考慮使用動態規劃求解。

下面考慮一般情況,也就是求解劃分成

個不重疊數組的最大和。

假設到第

個元素為止,一共已經產生了 個不重疊數組,那么令 表示這個不重疊數組的最大和。

然后就要尋找狀態轉移方程。對于第

個元素,分為兩種情況,可取可不取。

如果取,那就說明

是第 個子數組的最后一個元素,那么轉移方程為:

也就是說,從

到 ,這 個元素構成了第 個子數組,那我們只需要求到第 個元素為止,產生 個不重疊數組的最大和即可。

如果不取,那問題就變成了求到第

個元素為止,產生 個不重疊數組的最大和,那么轉移方程為:

當然這題還需要你還原出最大和的情況下,所有子數組的起始元素下標,所以需要另外用一個數組保存一下每一步的最優下標。

同樣,假設到第

個元素為止,一共已經產生了 個不重疊數組,用 表示第 個子數組的末尾元素下標。

那么按照上面的推斷,如果取第

個元素,那么 ;否則的話 。

最后就是根據

數組還原答案了。

首先最后一個子數組的末尾元素下標一定是

,那么它的起始元素下標就是 ,然后前一個子數組末尾元素下標就是 ,依次下去,直到第一個子數組被求解完畢。

代碼

class Solution { public:vector<int> maxSumOfThreeSubarrays(vector<int>& nums, int k) {int len = nums.size(), N = 3;int sum[len], s = 0;for (int i = 0; i < k; ++i) {s += nums[i];sum[i] = 0;}sum[k-1] = s;for (int i = k; i < len; ++i) {s += nums[i] - nums[i - k];sum[i] = s;}int dp[len][N+1], path[len][N+1];memset(dp, 0, sizeof dp);dp[k-1][1] = sum[k-1];path[k-1][1] = k - 1;for (int i = k; i < len; ++i) {for (int j = 1; j <= N; ++j) {dp[i][j] = dp[i-1][j];path[i][j] = path[i-1][j];if (dp[i][j] < dp[i-k][j-1] + sum[i]) {dp[i][j] = dp[i-k][j-1] + sum[i];path[i][j] = i;}}}vector<int> res;int idx = path[len-1][N];res.push_back(idx - k + 1);for (int i = N - 1; i > 0; --i) {idx = path[idx-k][i];res.push_back(idx - k + 1);}reverse(res.begin(), res.end());return res;} };

后記

可以看到,時間和空間還有提升的余地。想到的可能優化方法是類似于0-1背包那樣,去掉動態規劃數組的第二個維度,來優化空間復雜度。

但是這是有些問題的,暫時并沒有想到不增加時間復雜度下減少空間開銷的方法,歡迎大家提出自己的想法。

總結

以上是生活随笔為你收集整理的数组最大可以开多大_每日算法系列【LeetCode 689】三个无重叠子数组的最大和的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美成人精品在线视频 | 日日天天| 久久久久一级 | 韩国伦理电影免费在线 | 色福利在线 | 日韩免费一区 | 777精品视频| 色超碰| 日韩乱码一区二区三区 | 老司机av导航 | 美女在线国产 | 久久成人小视频 | 玖玖爱在线精品视频 | 极品一区| 日本黄色片网址 | 九九热在线免费观看 | 日本一区二区免费视频 | 久久久久久久久蜜桃 | 国模精品视频一区二区 | 亚洲欧美高清视频 | 久久人妻少妇嫩草av | 少妇第一次交换又紧又爽 | 国产在线麻豆 | 啪啪综合网 | 在线观看黄色动漫 | 日韩不卡的av| 91美女免费看 | 亚洲久久一区二区 | 日韩精品中文字幕在线 | 手机在线精品视频 | 久久精品综合网 | 欧美成人黄色片 | 西西大胆午夜视频 | 99精品欧美一区二区蜜桃免费 | 日本在线视频一区二区 | 国产伦理一区二区 | 九月婷婷 | 日韩精品视频一区二区 | 国产在线观看成人 | 国产香蕉尹人视频在线 | 亚洲视频在线一区二区 | 二区久久| 日日日日干 | 夜夜狠狠 | 国产高清一区在线 | 尤物在线视频 | 久草视频在线看 | 最好看的mv中文字幕国语电影 | 多毛的亚洲人毛茸茸 | 久草免费资源站 | 日韩综合一区二区三区 | 精品九九九九 | 制服丝袜国产在线 | 中文在线а√天堂 | 国产伦精品一区二区三区免费 | 一区二区福利视频 | 免费看亚洲| 国产精品久久毛片av大全日韩 | 国产一区久久久 | av超碰在线观看 | 国产凹凸一区二二区 | 2022国产精品 | 在线网站黄 | 国产精品久久久久久久妇 | 深爱五月激情网 | 亚洲精品污一区二区三区 | 韩国精品一区二区 | 国产麻豆天美果冻无码视频 | 欧美色图在线视频 | 全部毛片永久免费看 | 亚洲久久影院 | 国产伦精品一区二区三区视频痴汉 | 成人国产视频在线观看 | 三年中文在线观看中文版 | 合欢视频在线观看 | 免费无码不卡视频在线观看 | 99在线精品免费视频 | www.色婷婷 | a√天堂在线| 看特级黄色片 | 久久久久久久久久久久久久av | 国产露脸无套对白在线播放 | 伊人免费视频 | 蜜桃av中文字幕 | 娇小6一8小毛片 | 性高潮久久久久久久久 | 亚洲精品国产片 | 羞羞网站在线看 | a在线观看视频 | 华人永久免费 | 日韩精品亚洲精品 | 婷婷一级片| 波多野结衣视频网址 | 成人网在线看 | 欧美日韩国产黄色 | 国产精品久久久久久网站 | 人人上人人干 | 青青草精品| 欧美精品一区二区三区四区 |