LeetCode-in-Java

915. Partition Array into Disjoint Intervals

Medium

Given an integer array nums, partition it into two (contiguous) subarrays left and right so that:

Return the length of left after such a partitioning.

Test cases are generated such that partitioning exists.

Example 1:

Input: nums = [5,0,3,8,6]

Output: 3

Explanation: left = [5,0,3], right = [8,6]

Example 2:

Input: nums = [1,1,1,0,6,12]

Output: 4

Explanation: left = [1,1,1,0], right = [6,12]

Constraints:

Solution

public class Solution {
    public int partitionDisjoint(int[] nums) {
        int res = 0;
        int leftMax = nums[0];
        int greater = nums[0];
        for (int i = 1; i < nums.length; i++) {
            if (greater <= nums[i]) {
                greater = nums[i];
            } else if (nums[i] < leftMax) {
                res = i;
                leftMax = greater;
            }
        }
        return res + 1;
    }
}