Junior — Middle
Kā var apvienot divas sakārtotas secības tā, lai rezultāts paliktu sakārtots?
sobes.tech AI
Atbilde no AI
Lai apvienotu divas sakārtotas secības vienā sakārtotā secībā, var izmantot apvienošanas (merge) algoritmu, kas darbojas lineārā laikā.
Ideja:
- Ir divas sakārtotas masīvi vai saraksti.
- Katram no tiem izmantojam divus rādītājus.
- Salīdzinām pašreizējos elementus, mazāko pievienojam rezultātam un virzām atbilstošo rādītāju.
- To darām, kamēr abi masīvi ir pārbaudīti.
Kotlin piemērs:
fun mergeSortedLists(a: List<Int>, b: List<Int>): List<Int> {
val result = mutableListOf<Int>()
var i = 0
var j = 0
while (i < a.size && j < b.size) {
if (a[i] <= b[j]) {
result.add(a[i])
i++
} else {
result.add(b[j])
j++
}
}
// Pievienojam atlikušos elementus
while (i < a.size) result.add(a[i++])
while (j < b.size) result.add(b[j++])
return result
}