Sobes.tech
Senior
58

Қиындық деңгейі: ЖЕҢІЛ Дубликаттары бар сұрыпталған сан массиві берілген. Оны орын ішінде жойып, алынған массивтің өлшемін қайтарыңыз. Мысал: Кіріс: nums = [0,0,1,1,1,2,2,3,3,4] Шығыс: 5, nums = [0,1,2,3,4,_,_,_,_,_] Түсіндірме: Бұл массивте 5 бірегей элемент бар. Оларды алғашқы бес орынға орналастырыңыз және 5-ті қайтарыңыз. Қалған элементтер кез келген болуы мүмкін.

Сұралған компаниялар
Ozon ФинтехOzon Финтех

AI-дан жауап

sobes.tech 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 — уникальные

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