РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
935 of 1593 menu

Функция heap.Remove

Функция heap.Remove удаляет элемент из кучи по указанному индексу и возвращает его значение. Первым параметром функция принимает интерфейс heap.Interface, который представляет кучу, вторым параметром - индекс удаляемого элемента. После удаления функция восстанавливает свойства кучи, чтобы структура данных снова удовлетворяла условиям минимальной или максимальной кучи.

Синтаксис

heap.Remove(h heap.Interface, i int) any

Пример

Давайте создадим кучу из целых чисел и удалим из неё элемент с индексом 1:

package main import ( "container/heap" "fmt" ) type IntHeap []int func (h IntHeap) Len() int { return len(h) } func (h IntHeap) Less(i, j int) bool { return h[i] < h[j] } func (h IntHeap) Swap(i, j int) { h[i], h[j] = h[j], h[i] } func (h *IntHeap) Push(x any) { *h = append(*h, x.(int)) } func (h *IntHeap) Pop() any { old := *h n := len(old) x := old[n-1] *h = old[0 : n-1] return x } func main() { h := &IntHeap{5, 3, 8, 1, 2} heap.Init(h) fmt.Println("Before remove:", *h) removed := heap.Remove(h, 1) fmt.Println("Removed value:", removed) fmt.Println("After remove:", *h) }

Результат выполнения кода:

"Before remove: [1 2 8 5 3]" "Removed value: 2" "After remove: [1 3 8 5]"

Пример

Давайте создадим кучу из чисел и удалим из неё элемент с индексом 2:

package main import ( "container/heap" "fmt" ) type IntHeap []int func (h IntHeap) Len() int { return len(h) } func (h IntHeap) Less(i, j int) bool { return h[i] < h[j] } func (h IntHeap) Swap(i, j int) { h[i] = h[j]; h[j] = h[i] } func (h *IntHeap) Push(x any) { *h = append(*h, x.(int)) } func (h *IntHeap) Pop() any { old := *h n := len(old) x := old[n-1] *h = old[0 : n-1] return x } func main() { h := &IntHeap{10, 20, 5, 15, 30} heap.Init(h) fmt.Println("Before remove:", *h) removed := heap.Remove(h, 2) fmt.Println("Removed value:", removed) fmt.Println("After remove:", *h) }

Результат выполнения кода:

"Before remove: [5 15 10 20 30]" "Removed value: 10" "After remove: [5 15 30 20]"

Смотрите также

  • функцию heap.Init,
    которая инициализирует кучу из слайса
  • функцию heap.Push,
    которая добавляет элемент в кучу
  • функцию heap.Pop,
    которая удаляет и возвращает минимальный элемент
  • функцию heap.Fix,
    которая восстанавливает кучу после изменения элемента
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить