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;   } }
     
  • 相关阅读:
    DAY56
    DAY55
    DAY54
    DAY53
    DAY52
    DAY51
    DAY50
    spark1.1.0部署standalone分布式集群
    Storm流分组介绍
    Storm拓扑的并行度(parallelism)介绍
  • 原文地址:https://www.cnblogs.com/hwu2014/p/4462391.html
Copyright © 2011-2022 走看看