Find the maximum sum of two subarrays in an array

Maximum sum of two subarrays in an array

Find two sub-arrays in an array and find the maximum sum (the sub-arrays do not overlap and are not empty)

 

algorithm:

  1. Set the variable cur,max cur=max=arr[0]
  2. Cur <0 à cur = 0 cur + = arr [i] max = Math.max
  3. Apply the above, traverse arr from left and right to get L, R array L[i]/R[i] represents the maximum sum of sub-arrays starting from left (right) to the current position
  4. Find the largest L[i]+R[i+1]
public int getFromTwoArray(int[] arr){
        int[] L = new int[arr.length];
        int[] R = new int[arr.length];
        int max;
        L = this.getFromArray(arr);
        R = this.getFromArray(arr, "right");
        max = L[0] + R[1];
        for(int i=1;i<arr.length-1;i++){
            max = Math.max(max, L[i]+R[i+1]);
        }
        return max;
    }
    public int[] getFromArray(int[] arr){
        return this.getFromArray(arr, "left");
    }
    public int[] getFromArray(int[] arr,String Role){
        int[] maxArr = new int[arr.length];
        int cur,max;
        if(arr.length<1){
            throw new RuntimeException("null array");
        }
        if(Role.equals("left")){
            cur = arr[0];
            max = cur;
            maxArr[0] = max;
            for(int i=1;i<arr.length;i++){
                if(cur<0){
                    cur = 0;
                }
                cur += arr[i];
                max = Math.max(cur, max);
                maxArr[i] = max;
            }
            return maxArr;
        }else if(Role.equals("right")){
            cur = arr[arr.length-1];
            max = cur;
            maxArr[arr.length-1] = max;
            for(int i=arr.length-2;i>=0;i--){
                if(cur<0){
                    cur = 0;
                }
                cur += arr[i];
                max = Math.max(cur, max);
                maxArr[i] = max;
            }
            return maxArr;
        }else{
            throw new RuntimeException("error");
        }
    }

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326075420&siteId=291194637