国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Maximum Subarray

2019-11-08 02:23:33
字體:
來源:轉載
供稿:網友

問題描述:給定數組a[1……n],求最大子數組之和。即找出K=i<=j<=n,使得a[i]+……+a[j]之和最大 解法一:暴力枚舉:三重循環 代碼如下:

int maxSubArray(vector<int>& nums){ int n=nums.size(); int ans=nums[0]; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { int sum=0; for(int k=i;k<=j;k++) { sum+=nums[k]; } if(ans<sum) ans=sum; } } return ans;}

解法二:優化枚舉:兩重循環 代碼如下:

int maxSubArray(vector<int>& nums) { int n=nums.size(); int ans=nums[0]; for(int i=0;i<n;i++) { int sum=0; for(int j=i;j<n;j++) { sum+=nums[j]; if(sum>ans) { ans=sum; } } } return ans; }

解法三:貪心算法:一重循環 代碼如下:

int maxSubArray(int* nums, int numsSize) { int sum=0,ans=nums[0]; for(int i=0;i<numsSize;i++) { sum+=nums[i]; if(ans<sum) ans=sum; if(sum<0) sum=0; } return ans;}

從解法一到解法二到解法三:是時間復雜度的一步步優化,優化的方向就是減少冗余操作。多思考。

以上方法均來自七月在線的視頻講解。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 绥棱县| 平遥县| 蒲江县| 沧州市| 娄底市| 商都县| 石屏县| 嵊泗县| 平利县| 东乡| 威海市| 亚东县| 永年县| 任丘市| 措勤县| 阜阳市| 邯郸县| 来宾市| 武宣县| 山东| 怀化市| 黑龙江省| 盐津县| 平和县| 盈江县| 沛县| 博罗县| 荃湾区| 定襄县| 万全县| 大丰市| 黔东| 化隆| 云南省| 即墨市| 客服| 大埔区| 沁阳市| 榆林市| 武山县| 巴林右旗|