zoukankan      html  css  js  c++  java
  • [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;
        }
    }
  • 相关阅读:
    Power of Cryptography(用double的泰勒公式可行分析)
    Radar Installation(贪心)
    The Pilots Brothers' refrigerator(dfs)
    Flip Game(dfs)
    Connect the Cities(MST prim)
    Constructing Roads (MST)
    suoi16 随机合并试卷 (dp)
    suoi14 子树查找 (dfs)
    nowcoder106I Neat Tree (单调栈)
    luogu2296 [NOIp2014]寻找道路 (bfs)
  • 原文地址:https://www.cnblogs.com/stAr-1/p/7117876.html
Copyright © 2011-2022 走看看