리트코드 75번
빨간색(0), 흰색(1), 파란색(2) 순서대로 제자리 정렬
처음에는 inplace이기때문에 퀵소트나 합병정렬을 해야하나 했지만 아무래도 0,1,2만으로 구성된 배열을 정렬하는데 거창하다는 생각도 들었고 더 간단한 방법이 있지 않을까.. 했다
class Solution:
def sortColors(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
head ,tail = 0, len(nums)-1
i = 0
while i <= tail:
if nums[i] == 0:
if head == i: # 자리 교환이 필요 없는 경우 다음 것으로 가기
i = i+1
else:
nums[head], nums[i] = nums[i], nums[head]
head = head + 1
elif nums[i] == 2:
nums[tail], nums[i] = nums[i], nums[tail]
tail = tail - 1
else: # 1일때는 한칸 나아가기
i = i + 1
class Solution:
def sortColors(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
head ,tail = 0, len(nums)-1
i = 0
while i <= tail:
if nums[i] == 0:
nums[head], nums[i] = nums[i], nums[head]
head = head + 1
i = i + 1
elif nums[i] == 2:
nums[tail], nums[i] = nums[i], nums[tail]
tail = tail - 1
else: # 1일때는 한칸 나아가기
i = i + 1