maximum subarray
来源:互联网 发布:钢笔 知乎 编辑:程序博客网 时间:2024/06/16 22:36
问题描述:一个int数组,求出其最大子串。也就是求出其连续元素和的最大值
解决:这是刷Leetcode碰到的第一个动态规划的题。
在这个题目,里假设nums[i]到nums[j]这一段连续和最大,那么必然任意的i<k<j,nums[i]到nums[k]这一段的和大于0,
如果出现小于0的情况,那么nums[k+1]到nums[j]的连续和更大。根据上面的分析,当来到元素nums[i]时,用local表示不包含nums[i]前面的最大子串和,
如果local大于0,那么包含nums[i]的最大子串和就是local+nums[i],否则就是nums[i].这样遍历数组后,可以求得包含每一个元素的局部最优解,
但是要求得全局最优解,还需要在这些局部最优解里挑出最大的一个。
/* * 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 */public class MaxSubarray { public static int maxSubArray(int[] nums) { if(nums == null || nums.length == 0) { return -1; } int local = nums[0]; int global = nums[0]; for(int i=1; i<nums.length; i++) { local = Math.max(nums[i], nums[i] + local); global = Math.max(global, local); } return global; }}
阅读全文
0 0
- maximum subarray
- Maximum Subarray
- Maximum Subarray
- Maximum Subarray
- Maximum Subarray
- Maximum Subarray
- Maximum Subarray
- Maximum Subarray
- Maximum Subarray
- Maximum Subarray
- Maximum Subarray
- Maximum Subarray
- Maximum Subarray
- Maximum Subarray
- Maximum Subarray
- Maximum Subarray
- Maximum Subarray
- Maximum Subarray
- 【010】Java语言(Hello World)
- 【模板】BFS
- HDU
- 论文笔记《Single Image Haze Removal Using Dark Channel Prior--Kaiming He》
- SpringMVC学习笔记总结
- maximum subarray
- Android中的Intent显式与隐式
- Sicily.1001
- 生活小记8
- sql语句中left join、inner join中的on与where的区别
- new/malloc和delete/free的区别
- VUE UI框架
- bzoj 1196 [HNOI2006]公路修建问题 二分+并查集
- 【模板】各种欧几里得