Sobes.tech
Junior — Middle

Bir dilimden öğeyi verimli bir şekilde nasıl kaldırabilirsiniz, öğelerin sırasını korumadan ve işlemin karmaşıklığını sabit tutarak?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go dilinde bir dilimden (slice) öğeyi, öğelerin sırasını korumadan ve sabit zaman karmaşıklığı O(1) ile kaldırmak için, kaldırılacak öğeyi dilimin son öğesiyle değiştirebilir ve ardından dilimi bir azaltabilirsiniz.

Örnek:

func removeUnordered(s []int, i int) []int {
    s[i] = s[len(s)-1] // i öğesini son öğe ile değiştirir
    return s[:len(s)-1] // dilimi bir azaltır
}

// Kullanım:
s := []int{10, 20, 30, 40, 50}
s = removeUnordered(s, 1) // indeks 1'deki öğeyi (20) kaldırır
// Artık s, örneğin, [10, 50, 30, 40] olabilir

Bu yöntem öğelerin sırasını korumaz, ancak çok hızlıdır çünkü öğe kaydırmaları gerekmez.