• 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;
        }
    }

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

  • 相关阅读:
    【python接口自动化】httpUtils
    mac上安装chromedriver
    python自动化测试报告(excel篇)
    Fiddler 手机抓包介绍
    Fiddler 简单介绍
    Python splinter 环境搭建
    Python pip 常用命令
    Python Yaml 学习
    Jmeter
    Python3 操作Excel
  • 原文地址:https://www.cnblogs.com/junalncer/p/13366962.html
Copyright © 2020-2023  润新知