Leecode-53. Maximum Subarray
来源:互联网 发布:双色球随机选号软件 编辑:程序博客网 时间:2024/05/16 10:56
贪心法:
前部分和大于0则有继续相加价值,小于0重置。
class Solution {public: int maxSubArray(vector<int>& nums) { int sum=nums[0]; int t=0; for(int i=0;i<nums.size();i++) { if(t<0) t=0; t+=nums[i]; if(t>sum) sum=t; } return sum; }};
分治法:
public class Solution { private Result max(int[] nums, int from, int to) { Result result = new Result(); if (from==to) { result.max = nums[from]; result.lmax = nums[from]; result.rmax = nums[from]; result.sum = nums[from]; return result; } int m = (from+to)/2; Result r1 = max(nums, from, m); Result r2 = max(nums, m+1, to); result.max = Math.max(Math.max(r1.max, r2.max), r1.rmax+r2.lmax); result.lmax = Math.max(r1.lmax, r1.sum+r2.lmax); result.rmax = Math.max(r1.rmax+r2.sum, r2.rmax); result.sum = r1.sum+r2.sum; return result; } public int maxSubArray(int[] nums) { if (nums == null || nums.length == 0) return 0; Result result = max(nums, 0, nums.length-1); return result.max; } } class Result { // 最大和 int max; // 靠左侧最大和 int lmax; // 靠右侧最大和 int rmax; // 数组和 int sum; }
阅读全文
0 0
- Leecode-53. Maximum Subarray
- leecode 解题总结:53. Maximum Subarray
- Leecode 53 Maximum Subarray
- [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
- HTML5上传文件ajaxfileupload.js
- SQLScout插件
- 去除List<String>中的重复元素
- Poj 1679 The Unique MST(次小生成树)
- hibernate bug问题
- Leecode-53. Maximum Subarray
- Link-Cut Tree
- 构造函数初始化列表和构造函数的区别
- Spring源码学习--Spring配置文件解析BeanDefinitionReader(二)
- 003-科学管理|伟大的效率破局
- POJ3422_Kaka's Matrix Travels_最小费用流::拆点、重边
- FreeMarker
- tensorflow中MLP识别mnist手写数字
- shell(bash)基础