国产探花免费观看_亚洲丰满少妇自慰呻吟_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;}

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

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 茂名市| 阳城县| 金堂县| 巴彦县| 雷州市| 漠河县| 渝北区| 集安市| 玉山县| 丁青县| 阿鲁科尔沁旗| 景宁| 余姚市| 吉林省| 青河县| 海原县| 贵州省| 长乐市| 桦川县| 红河县| 满洲里市| 朝阳县| 临桂县| 二手房| 沾化县| 洱源县| 芒康县| 页游| 邵武市| 瑞安市| 政和县| 新兴县| 阳朔县| 安仁县| 诸暨市| 汝阳县| 永丰县| 获嘉县| 揭东县| 水城县| 枣庄市|