g0901_1000.s0915_partition_array_into_disjoint_intervals.Solution Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java21 Show documentation
Show all versions of leetcode-in-java21 Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
package g0901_1000.s0915_partition_array_into_disjoint_intervals;
// #Medium #Array #2022_03_29_Time_2_ms_(99.81%)_Space_96.1_MB_(47.60%)
/**
* 915 - Partition Array into Disjoint Intervals\.
*
* Medium
*
* Given an integer array `nums`, partition it into two (contiguous) subarrays `left` and `right` so that:
*
* * Every element in `left` is less than or equal to every element in `right`.
* * `left` and `right` are non-empty.
* * `left` has the smallest possible size.
*
* 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:**
*
* * 2 <= nums.length <= 105
* * 0 <= nums[i] <= 106
* * There is at least one valid answer for the given input.
**/
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;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy