zoukankan      html  css  js  c++  java
  • 53-Maximum 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.

    【分析】

    1.采用动态规划的思想求解

    2.假设数组[0,1,.i.,n],其中j到k为最大子数组,则(j-1前的任意值)到j-1都小于0;

    3.另一种解法:设置局部和全局最优解(局部最优解为加上最新的一个数?)

    【算法实现】

    public class Solution {
        public int maxSubArray(int[] nums) {
            int max=Integer.MIN_VALUE;
            int sum=0;
            for(int i=0;i<nums.length;i++) {
                sum+=nums[i];
                if(max<sum)
                    max=sum;
                if(sum<0)
                    sum=0;
            }
            return max;
        }
    }

    public class Solution2 {
      public int maxSubArray(int[] nums) {
        int len=nums.length;
        if(len<=0)
          return 0;
        int local=num[0];
        int global=num[0];
        for(int i=1;i<len;i++) {
          local=Math.max(nums[i],local+nums[i]);
          global=Math.max(global,local);   
        }
        return global;   } }
     
  • 相关阅读:
    2028 ACM Lowest Common Multiple Plus
    2032 杨辉三角
    2011 ACM 0和1思想
    grid
    Change position in observation
    1490 ACM 数学
    1489 ACM 贪心
    2009 ACM 水题
    Book Lending Registration
    MR1和MR2(Yarn)工作原理流程
  • 原文地址:https://www.cnblogs.com/hwu2014/p/4462391.html
Copyright © 2011-2022 走看看