zoukankan      html  css  js  c++  java
  • LeetCode#53-最大子序和

    package shuzu;
    /*
    53. 最大子序和
    给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
    
    示例:
    
    输入: [-2,1,-3,4,-1,2,1,-5,4],
    输出: 6
    解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
    进阶:
    
    如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。
     */
    public class p53 {
        public static int maxSubArray(int[] nums) {
            int n=nums.length;
            if(n==1)return nums[0];
            int i=0,max=0,m=-10000;
            for(;i<n;i++){
                if(nums[i]>0)break;
                else{
                    m=Math.max(m,nums[i]);
                }
            }
            if(i==n-1)return nums[n-1];
            if(i==n)return m;
            int sum=nums[i];
            max=Math.max(max,sum);
            for (i=i+1;i<n;i++){
                if(nums[i]+sum<=0){
                    sum=0;
                }
                else {
                    sum+=nums[i];
                    max=Math.max(max,sum);
                }
            }
            return max;
    
        }
    
        public static void main(String[] args) {
            int n[]={-2,-1};
            System.out.println(maxSubArray(n));
        }
    }
    

      运行结果:

  • 相关阅读:
    hibernate -inverse
    C3p0实践
    Python3数据结构
    UDP组播
    UDP广播
    线程池代码
    UDP服务器
    epoll反应堆模型代码
    epoll事件模型
    epoll函数
  • 原文地址:https://www.cnblogs.com/jifeng0902/p/13297688.html
Copyright © 2011-2022 走看看