Sıralanmış bir tamsayılar dizisi verildiğinde, her öğe yalnızca bir kez görünecek ve yeni uzunluğu döndürecek şekilde yerinde kopyaları kaldırın. Başka bir dizi için fazladan yer ayırmayınız. Örneğin, giriş dizisi [1,1,2] ise, çıkış 2 olmalı ve dizi [1,2] olarak değiştirilmelidir.
Sıralanmış bir diziden yerinde kopyaları kaldırmak için bir yaklaşım, iki işaretçi kullanmaktır. Diziyi bir işaretçi ile yineleyebilir ve mevcut öğeyi önceki öğeyle karşılaştırabiliriz. Aynı iseler, farklı bir eleman bulana kadar ikinci işaretçiyi ileri doğru hareket ettiririz. Daha sonra, ikinci işaretçi tarafından bulunan benzersiz öğeyi yinelenen öğenin üzerine yazabiliriz. Bu şekilde, fazladan boşluk kullanmadan sıralanan dizideki kopyaları ortadan kaldırabiliriz. İşte kod: ``` def remove_duplicates(nums): if not nums: return 0 i = 0 for j in range(1, len(nums)): if nums[j] != nums[i]: i += 1 nums[i] = nums[j] return i + 1 ``` Bu işlev, bir giriş dizisini alır ve kopyaları çıkardıktan sonra dizinin yeni uzunluğunu döndürür. İlk "i" işaretçisini 0'a başlatıyoruz ve 1. indeksten başlayarak ikinci "j" işaretçisiyle dizi boyunca yineliyoruz. "j" dizinindeki geçerli öğe, "i" dizinindeki önceki öğeye eşit değilse, "i"yi artırıyoruz ve "j" dizinindeki öğeyi "i" dizinine kopyalıyoruz. Sonunda, tüm yinelenen öğeler kaldırılacak ve "i + 1" dizinin yeni uzunluğu olacaktır.