Sobes.tech
Middle

მოსაზრება: ორი სორტირებული slice-ი უნიკალური მნიშვნელობებით ერთიანად შეაერთეთ ერთ სორტირებულ slice-ად, რომელიც უნიკალურ მნიშვნელობებს შეიცავს

sobes.tech AI

პასუხი AI-სგან

ორი სორტირებული და უნიკალური მნიშვნელობების სიის ერთობლიობა ერთ სორტირებულ და უნიკალურ მნიშვნელობების სიის შექმნისთვის, შეიძლება გამოიყენოს შერევის ალგორითმი, რომელიც მსგავსია შერევის ეტაპის სორტირებაში.

მაგალითი Go-ში:

func mergeUnique(a, b []int) []int {
    result := make([]int, 0, len(a)+len(b))
    i, j := 0, 0

    for i < len(a) && j < len(b) {
        if a[i] < b[j] {
            result = append(result, a[i])
            i++
        } else if a[i] > b[j] {
            result = append(result, b[j])
            j++
        } else { // a[i] == b[j], დაამატეთ მხოლოდ ერთხელ
            result = append(result, a[i])
            i++
            j++
        }
    }

    // დაამატეთ დარჩენილი ელემენტები
    for i < len(a) {
        result = append(result, a[i])
        i++
    }
    for j < len(b) {
        result = append(result, b[j])
        j++
    }

    return result
}

ეს კოდი გადის ორივე სიას, შედარებს მიმდინარე ელემენტებს და უმცირესს აერთიანებს შედეგში. თუ ელემენტები თანაბარია, მხოლოდ ერთს აერთიანებს და ორივე ინდექსს წინ მიიწევს, რათა დუბლიკატები თავიდან აიცილოს. საბოლოოდ მიიღებთ სორტირებულ სიას უნიკალური მნიშვნელობებით.