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.