SortColors
Published at 2022-04-07
class Solution:
def sortColors(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
# red=0 white=1 blue=2
for i in range(len(nums)):
# red(0)은 앞부터 정렬하고
red = i+1
while red<len(nums) and nums[red] != 0:
red += 1
if red<len(nums):
nums[i], nums[red] = nums[red], nums[i]
# blue(2)는 뒤부터 정렬
blue = len(nums)-1-i
while blue>=0 and nums[blue] != 2:
blue -= 1
if blue>=0:
nums[len(nums)-1-i], nums[blue] = nums[blue], nums[len(nums)-1-i] /**
* @param {number[]} nums
* @return {void} Do not return anything, modify nums in-place instead.
*/
var sortColors = function(nums) {
let red = 0;
let blue = nums.length-1;
for(let i=0; i<nums.length; i++){
// 0일경우를 먼저 swap하면 [1,2,0]케이스 방어 불가
while(nums[i]==2 && i<blue){
let temp = nums[i]
nums[i] = nums[blue]
nums[blue] = temp
blue --;
}
while(nums[i]==0 && red<i){
let temp = nums[i]
nums[i] = nums[red]
nums[red] = temp
red ++;
}
}
};