Senior
Sıralanmış və təkrarlanan elementlər olan bir ədəd massiv verilib. Təkarlamaları yerində (orijinal massivdə) silmək və alınan massivinin ölçüsünü geri qaytarmaq lazımdır. Nümunə: Giriş: nums = [0,0,1,1,1,2,2,3,3,4] Çıxış: 5, nums = [0,1,2,3,4,_,_,_,_,_] İzah: Bu massivdə 5 unikal element var. Onları orijinal massivdə ilk beş mövqeyə yerləşdirin və 5 sayını geri qaytarın. Daha sonra gələn elementlər hər hansı ola bilər.
sobes.tech Süni İntellekt
AI-dan cavab
Sıralanmış bir massivdən təkrarlanan elementləri yerində silmək üçün iki göstəricidən istifadə etmək olar: biri massivdə gəzinti üçün, digəri isə unikal elementlərin yazılma mövqeyi üçün.
Fikir:
writeIndex-i 1 olaraq başlatın (birinci unikal element artıq yerindədir).readIndexilə massivdə 1-dən sona qədər keçin.- Əgər hazırki element əvvəlkindən fərqlidirsə, onu
nums[writeIndex]-ə yazın vəwriteIndex-i artırın.
Nəticədə, writeIndex unikal elementlərin sayını göstərəcək.
Go dilində nümunə:
func removeDuplicates(nums []int) int {
if len(nums) == 0 {
return 0
}
writeIndex := 1
for readIndex := 1; readIndex < len(nums); readIndex++ {
if nums[readIndex] != nums[readIndex-1] {
nums[writeIndex] = nums[readIndex]
writeIndex++
}
}
return writeIndex
}
// İstifadə:
// nums := []int{0,0,1,1,1,2,2,3,3,4}
// length := removeDuplicates(nums)
// fmt.Println(length) // 5
// fmt.Println(nums[:length]) // [0 1 2 3 4]