Leetcode 75 Sort Colors
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.
Input: nums = [2,0,2,1,1,0]
Output: [0,0,1,1,2,2]
Input: nums = [2,0,1]
Output: [0,1,2]
- Soruda bizden verilen rekleri sıralamamız isteniyor. Renkleri sayısal olarak 0,1,2 olarak temsil edebiliriz.Ve sıralamayı kütüphane fonksiyonları kullanmadan ayrıca ekstra bellek oluşturmadan yapmamız isteniyor.
- İlk olarak elimizde sadece 3 farklı sayı var bunları işaretçi kullanarak sıralayabiliriz.
- 3 işaretçimiz olur sol,sağ ve i .
- i ilerleteceğimiz işaretçidir.i=0 durumunda i değerini sol ile değiştiririz.i ve l indekslerini 1 arttırırız.
- i=2 durumunda i değerini sağ işaretçi ile değiştiririz. r değerini 1 azaltırız ama i değerini arttırmayız.Çünkü i değerini arttırmamız durumunda arada sayı kaçırma ihtimalimiz olur.
- i=1 durumunda bir değişiklik yapmaz sadece i indeksini 1 arttırırız.
class Solution:
def sortColors(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
l,r = 0,len(nums)-1
i=0
def swap(i,j):
tmp = nums[i]
nums[i] = nums[j]
nums[j] = tmp
while i<=r:
if nums[i] == 0:
swap(l,i)
l += 1
elif nums[i] == 2:
swap(i,r)
r-=1
i-=1
i +=1