DEV Community

Cover image for 75. Sort Colors
MD ARIFUL HAQUE
MD ARIFUL HAQUE

Posted on

75. Sort Colors

75. Sort Colors

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]

Constraints:

  • n == nums.length
  • 1 <= n <= 300
  • nums[i] is either 0, 1, or 2.

Follow-up: Could you come up with a one-pass algorithm using only constant extra space?

Constraints:

class Solution {

    /**
     * @param Integer[] $nums
     * @return NULL
     */
    function sortColors(&$nums) {
        $l = 0;
        $r = count($nums) - 1;
        for ($i = 0; $i <= $r;) {
            if ($nums[$i] == 0) {
                list($nums[$i], $nums[$l]) = array($nums[$l], $nums[$i]);
                $i++;
                $l++;
            } elseif ($nums[$i] == 1) {
                $i++;
            } else {
                list($nums[$i], $nums[$r]) = array($nums[$r], $nums[$i]);
                $r--;
            }
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

Contact Links

Top comments (0)