首页 > 代码库 > [leetcode]53Maximum Subarray动态规划经典题目:最大子串问题
[leetcode]53Maximum Subarray动态规划经典题目:最大子串问题
/** * 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. click to show more practice. More practice: If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle. 动态规划的经典题目,最大子串问题 动态方程:locMAX[i] = max(locMAX[i-1] + nums[i],nums[i]) locMAX表示局部最大的子串,必须要包含现在的数nums[i],每遍历一个数,状态都要更新 还要设置一个全局最大数,gloMAX = max(locMAX[i],gloMAX),意思是: 如果最后结果包括局部的子串,那么全局就是这个局部,如果不包含这个局部,那么全局还是前边的全局 */ public class Q53MaximumSubarray { public static void main(String[] args) { int[] nums = new int[]{-2,1,-3,4,-1,2,1,-5,4}; System.out.println(maxSubArray(nums)); } public static int maxSubArray(int[] nums) { int glo = nums[0]; int loc = nums[0]; for (int i = 1; i < nums.length; i++) { loc = Math.max(loc + nums[i],nums[i]); glo = Math.max(glo,loc); } return glo; } }
[leetcode]53Maximum Subarray动态规划经典题目:最大子串问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。