색상 정렬 - 0,1,2 정렬

4844 단어 javascriptleetcode
빨간색, 흰색 또는 파란색으로 칠해진 n개의 객체가 있는 배열 nums가 주어지면 동일한 색상의 객체가 인접하도록 빨간색, 흰색, 파란색 순서로 색상을 정렬합니다.

정수 0, 1, 2를 사용하여 각각 빨간색, 흰색, 파란색을 나타냅니다.

라이브러리의 정렬 기능을 사용하지 않고 이 문제를 해결해야 합니다.

예 1:

입력: 숫자 = [2,0,2,1,1,0]
출력: [0,0,1,1,2,2]
예 2:

입력: 숫자 = [2,0,1]
출력: [0,1,2]

/**
 * @param {number[]} nums
 * @return {void} Do not return anything, modify nums in-place instead.
 */
var sortColors = function (nums) {
  let start = 0;
  let mid = 0;
  let end = nums.length - 1;
  // setting 3 pointers start, mid , end..

  // Ideally moving from 0 to end
  while (mid <= end) {
    // checking it for 0
    // if nums[mid] === 0 => mean we have lower value..
    // so we swap this value with start pointer & move value at start index to this index
    if (nums[mid] === 0) {
      let temp = nums[start];
      nums[start] = nums[mid];
      nums[mid] = temp;
      start++;
      mid++;
    } else if (nums[mid] === 1) {
      // if nums[mid] === 1 => do nothing just move mid to next place
      mid++;
    } else {
      // if nums[mid] === 2 => swap elemnt from mid & last..
      let temp = nums[mid];
      nums[mid] = nums[end];
      nums[end] = temp;
      end--;
    }
  }
  return nums;
};

console.log(sortColors([2, 0, 2, 1, 1, 0]));

좋은 웹페이지 즐겨찾기