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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

最大子序和(贪心)

發布時間:2025/3/15 编程问答 11 豆豆
生活随笔 收集整理的這篇文章主要介紹了 最大子序和(贪心) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

給定一個整數數組 nums ,找到一個具有最大和的連續子數組(子數組最少包含一個元素),返回其最大和。

示例:

輸入: [-2,1,-3,4,-1,2,1,-5,4],
輸出: 6
解釋: 連續子數組 [4,-1,2,1] 的和最大,為 6。

這道題目類似于貪心算法之買賣股票的最佳時機 II,但是屬于升級版本,因為這道題中子數組要求連續,你得確定一段數組是它內部元素相加值最大。

當然,我做任何題目第一時間會想到暴力解法,因為自己目前做的題目遠遠不夠,不足以讓我在第一時間反應出來什么類型用什么算法,既然如此,不如先考慮能不能暴力破解。

暴力破解思路很簡單:
設置一個數組用來保存當前最大的情況,然后設置雙循環獲得全部子數組后,與保存的數組比較后保存更大的,直到遍歷完。
暴力法思路往往最直接,但缺點是效率低下,有很多無效運算。

貪心算法:
貪心算法(又稱貪婪算法)是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的是在某種意義上的局部最優解。

本題貪心思路在于:需要設定一個目前最大值和全局最大值。目前最大值會不斷加上數組后一個元素,然后目前最大值和全局最大值不斷進行更新。最后遍歷完后,返回全局最大值。
代碼如下:

class Solution { public:int maxSubArray(vector<int>& nums) {int Max_all=nums[0];int Max_now=nums[0];for(int i=1;i<=nums.size()-1;i++){Max_now=max(nums[i],Max_now+nums[i]);Max_all=max(Max_all,Max_now);}return Max_all;} };Java版: class Solution {public int maxSubArray(int[] nums) {int currSum = nums[0], maxSum = nums[0];for(int i = 1; i < nums.length; ++i) {currSum = Math.max(nums[i], currSum + nums[i]);maxSum = Math.max(maxSum, currSum);}return maxSum;} }

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/maximum-subarray
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

總結

以上是生活随笔為你收集整理的最大子序和(贪心)的全部內容,希望文章能夠幫你解決所遇到的問題。

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