Bagaimana untuk Membandingkan Senarai Objek Tidak Boleh Hash yang Tidak Teratur dengan Cekap?

Mary-Kate Olsen
Lepaskan: 2024-11-15 02:38:02
asal
948 orang telah melayarinya

How to Efficiently Compare Unordered Lists of Non-Hashable Objects?

Membandingkan Senarai Tidak Tertib Objek Tidak Boleh Cincang dengan Cekap

Senarai tidak tersusun (bukan set) menimbulkan cabaran apabila membandingkannya untuk kesamarataan, kerana mereka elemen boleh dalam sebarang susunan. Kesukaran ini menjadi lebih ketara apabila berurusan dengan objek tidak boleh cincang, seperti contoh kelas yang ditentukan pengguna.

Untuk memudahkan perbandingan sedemikian, pelbagai pendekatan wujud dengan kerumitan masa yang berbeza-beza:

O(n)

Untuk objek boleh cincang, Kaunter menyediakan penyelesaian optimum:

def compare(s, t):
    return Counter(s) == Counter(t)
Salin selepas log masuk

O(n log n)

Jika objek boleh dipesan, diisih menawarkan alternatif yang sesuai:

def compare(s, t):
    return sorted(s) == sorted(t)
Salin selepas log masuk

O(n * n)

Apabila kebolehtetapan atau kebolehaturan tidak tersedia, pendekatan mudah menggunakan kesaksamaan boleh digunakan:

def compare(s, t):
    t = list(t)   # make a mutable copy
    try:
        for elem in s:
            t.remove(elem)
    except ValueError:
        return False
    return not t
Salin selepas log masuk

Dengan memilih penyelesaian yang sesuai berdasarkan sifat objek anda, anda boleh membandingkan senarai tidak tertib dengan cekap, walaupun apabila elemen tidak boleh dicincang atau boleh dipesan.

Atas ialah kandungan terperinci Bagaimana untuk Membandingkan Senarai Objek Tidak Boleh Hash yang Tidak Teratur dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan