Sobes.tech
Senior

Sarežģītība: Viegli Dotais sakārtots skaitļu masīvs, kurā ir dublikāti. Ir nepieciešams dzēst dublikātus vietā (tieši sākotnējā masīvā) un atgriezt iegūtā masīva izmēru. Piemērs: Ievade: nums = [0,0,1,1,1,2,2,3,3,4] Izvade: 5, nums = [0,1,2,3,4,_,_,_,_,_] Skaidrojums: Šajā masīvā ir 5 unikāli elementi. Novietojiet tos pirmajās piecās pozīcijās sākotnējā masīvā un atgrieziet skaitli 5. Nākamie elementi sākotnējā masīvā var būt jebkādi.

sobes.tech AI

Atbilde no AI

Для удаления дубликатов из отсортированного массива in-place можно использовать два указателя: один для прохода по массиву, другой — для записи уникальных элементов. Идея в том, что когда встречается новый уникальный элемент, мы записываем его на позицию следующего уникального индекса.

Пример на Go:

func removeDuplicates(nums []int) int {
    if len(nums) == 0 {
        return 0
    }
    uniqueIndex := 0
    for i := 1; i < len(nums); i++ {
        if nums[i] != nums[uniqueIndex] {
            uniqueIndex++
            nums[uniqueIndex] = nums[i]
        }
    }
    return uniqueIndex + 1
}

// Использование:
// nums := []int{0,0,1,1,1,2,2,3,3,4}
// length := removeDuplicates(nums)
// теперь первые length элементов nums — уникальные

Таким образом, функция возвращает количество уникальных элементов, а первые элементы массива содержат эти уникальные значения. Остальные элементы массива могут быть любыми.