LeetCode in Kotlin

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

class Solution {
    fun partitionDisjoint(nums: IntArray): Int {
        var res = 0
        var leftMax = nums[0]
        var greater = nums[0]
        for (i in 1 until nums.size) {
            if (greater <= nums[i]) {
                greater = nums[i]
            } else if (nums[i] < leftMax) {
                res = i
                leftMax = greater
            }
        }
        return res + 1
    }
}