53. Maximum Subarray
来源:互联网 发布:北京网络约车新规 编辑:程序博客网 时间:2024/05/16 14:08
题目:
Find the contiguous subarray within an array (containing at least one number) which has the largest sum.
For example, given the array [-2,1,-3,4,-1,2,1,-5,4]
,
the contiguous subarray [4,-1,2,1]
has the largest sum = 6
.
分析:
题目要求就是求出数组中的最大子数组(总和最大),并返回总和。
这道题目是可以用分治算法解题,其具体的解题思路为:将数组分为左右两部分,则有以下三种情况:
- 最大的子数组全部在左半部分;
- 最大的子数组全部在右半部分;
- 最大的子数组有元素在左半部分有些在右半部分;
大小最大的即为原数组的最大子数组。
该代码具体内容会有点复杂 :
class Solution {int solution (vector<int>& nums, int left, int right) {if(nums.size() == 1) {return nums[0];}int mid = (left + right) / 2;int left_max = solution(nums,left,mid);int right_max = solution(nums,mid+1,right);int leftsum = nums[mid];int sum = nums[mid];for(int i = mid - 1; i >= left; i--) {sum += nums[i];leftsum = max(leftsum, sum);} int rightsum = nums[mid + 1];sum = nums[mid + 1];for(int i = mid + 2; i <= right; i++) {sum += nums[i];rightsum = max(rightsum,sum);}return max(max(left_max,right_max),(leftsum + rightsum));}public: int maxSubArray(vector<int>& nums) { return solution (nums,0,nums.size() - 1); }};以上代码存在点bug,不过我尽力了
0 0
- [LeetCode]53.Maximum Subarray
- LeetCode --- 53. Maximum Subarray
- 53.Maximum Subarray
- [Leetcode] 53. Maximum Subarray
- [leetcode] 53.Maximum Subarray
- 53.Maximum Subarray
- 53. Maximum Subarray
- 【leetcode】53. Maximum Subarray
- [leetcode] 53.Maximum Subarray
- 【leetcode】53. Maximum Subarray
- 53. Maximum Subarray
- LeetCode 53. Maximum Subarray
- 53. Maximum Subarray
- [LeetCode]53. Maximum Subarray
- 53. Maximum Subarray LeetCode
- 53. Maximum Subarray
- [LeetCode]53. Maximum Subarray
- 53. Maximum Subarray
- 远程linux服务器mysql数据库导入和导出.sql文件
- iOS-私有API与runtime
- 欢迎使用CSDN-markdown编辑器
- 秋风
- 数据分析1:Ipython开始使用
- 53. Maximum Subarray
- Linux常用指令
- 大素数分解与素数判定
- 哈夫曼树和哈夫曼编码
- iOS GPUImage 的使用
- MySQL安装
- vb.net 教程 1-8 日期时间类型2
- x86主机搭建家庭智能路由系统 ---- Proxmox虚拟化实现一机多用
- JavaScript检测类型