Class Solution
Medium
Given an array nums with n objects colored red, white, or blue, sort them in-place so that objects of the same color are adjacent, with the colors in the order red, white, and blue.
We will use the integers 0, 1, and 2 to represent the color red, white, and blue, respectively.
You must solve this problem without using the library’s sort function.
Example 1:
Input: nums = [2,0,2,1,1,0]
Output: [0,0,1,1,2,2]
Example 2:
Input: nums = [2,0,1]
Output: [0,1,2]
Example 3:
Input: nums = [0]
Output: [0]
Example 4:
Input: nums = [1]
Output: [1]
Constraints:
n == nums.length1 <= n <= 300nums[i]is0,1, or2.
Follow up: Could you come up with a one-pass algorithm using only constant extra space?
To solve the “Sort Colors” problem in Java with the Solution class, follow these steps:
- Define a method
sortColorsin theSolutionclass that takes an array of integersnumsas input and sorts it in-place according to the colors red, white, and blue. - Initialize three pointers:
low,mid, andhigh.lowpoints to the beginning of the array,midpoints to the current element being processed, andhighpoints to the end of the array. - Loop while
midis less than or equal tohigh:- If
nums[mid]is 0, swapnums[low]withnums[mid], incrementlowandmid. - If
nums[mid]is 1, incrementmid. - If
nums[mid]is 2, swapnums[mid]withnums[high], decrementhigh.
- If
- After the loop, the array will be sorted in-place according to the colors red, white, and blue.
Here’s the implementation of the sortColors method in Java:
class Solution {
public void sortColors(int[] nums) {
int low = 0;
int mid = 0;
int high = nums.length - 1;
while (mid <= high) {
if (nums[mid] == 0) {
swap(nums, low, mid);
low++;
mid++;
} else if (nums[mid] == 1) {
mid++;
} else {
swap(nums, mid, high);
high--;
}
}
}
private void swap(int[] nums, int i, int j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
This implementation sorts the array in-place using a one-pass algorithm with constant extra space. It iterates through the array and swaps elements as needed to group them according to their colors. The time complexity of this solution is O(n), where n is the length of the array.
-
Constructor Summary
Constructors -
Method Summary
-
Constructor Details
-
Solution
public Solution()
-
-
Method Details
-
sortColors
public void sortColors(int[] nums)
-