zoukankan      html  css  js  c++  java
  • LeetCode 53 ,分治解

    class Solution {
        public int maxSubArray(int[] nums) {
            if(nums == null || nums.length == 0) return 0;
            return maxSubArray(nums,0,nums.length-1);
        }
        private int maxSubArray(int[] nums,int L,int R) {
            if(L == R) return nums[L];
            int mid = L+(R-L>>1);
            int left = maxSubArray(nums,L,mid);
            int right = maxSubArray(nums,mid+1,R);
            int middle = maxCsArray(nums,L,mid,R);
            if(left>=right&&left>=middle) return left;
            else if(right>=left&&right>=middle) return right;
            else return middle;
        }
        private int maxCsArray(int[] nums,int L,int mid,int R) {
            int leftSum = Integer.MIN_VALUE;
            int sum = 0;
            for(int i = mid;i>=L;i--) {
                sum+=nums[i];
                if(sum > leftSum) leftSum = sum;
            }
            int rightSum = Integer.MIN_VALUE;
            sum = 0;
            for(int i = mid+1 ;i<=R;i++) {
                sum+=nums[i];
                if(sum>rightSum) rightSum = sum;
            }
            return leftSum+rightSum;
        }
    }

    借鉴部分,需要好好品味其中分治的精髓,虽然可以用其他较好方法

  • 相关阅读:
    深入理解hadoop之MapReduce
    centos关机与重启命令
    hadoop学习笔记(1)
    配置ssh免密码登录设置后还是提示需要输入密码
    js获得URL中的参数
    SQLite介绍
    sql记录
    sql游标使用
    sql触发器
    sql函数
  • 原文地址:https://www.cnblogs.com/junalncer/p/13366962.html
Copyright © 2011-2022 走看看