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;
        }
    }
  • 相关阅读:
    数组实现队列
    qsort用法 (转)
    枚举法
    HDU 2293
    bfs 街道赛跑
    漫谈二分查找Binary Search (转)
    qsort 结构体二级排序实例
    优化枚举法
    10项比较重要的.NET技术
    ADO.NET SQL Provider 和 ADO.NET OLE DB Provider 和 ADO.NET ODBC Provider 性能对比。
  • 原文地址:https://www.cnblogs.com/stAr-1/p/7117876.html
Copyright © 2011-2022 走看看