Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Membandingkan Senarai Besar dengan Cekap untuk Mencari Percanggahan?

Bagaimanakah Saya Boleh Membandingkan Senarai Besar dengan Cekap untuk Mencari Percanggahan?

Linda Hamilton
Lepaskan: 2025-01-14 20:56:44
asal
822 orang telah melayarinya

How Can I Efficiently Compare Massive Lists to Find Discrepancies?

Cara yang cekap untuk membandingkan senarai besar untuk mencari perbezaan

Kaedah Except ialah pilihan terbaik apabila berurusan dengan perbandingan perbezaan senarai generik yang sangat besar. Kaedah ini jauh lebih cekap daripada pertanyaan LINQ yang disediakan dalam artikel (kerumitan masa ialah O(N * M)).

Gunakan kaedah Kecuali

Kaedah

Except mengembalikan senarai baharu yang mengandungi elemen daripada senarai pertama yang tidak terdapat dalam senarai kedua. Gunakan kaedah ini dengan kedua-dua senarai untuk mendapatkan dua senarai baharu:

<code>var firstNotSecond = list1.Except(list2).ToList();
var secondNotFirst = list2.Except(list1).ToList();</code>
Salin selepas log masuk

Kerumitan masa kaedah ini ialah O(N M), yang jauh lebih pantas daripada kaedah sebelumnya.

Gabung hasil

Untuk menentukan sama ada dua senarai adalah sama, anda boleh menggabungkan dua senarai hasil:

<code>return !firstNotSecond.Any() && !secondNotFirst.Any();</code>
Salin selepas log masuk

Nota tentang elemen berulang

Tidak seperti kod asal, kaedah Except hanya melaporkan elemen pendua dalam senarai sekali. Sebagai contoh, jika senarai1 mengandungi [1, 2, 2, 2, 3] dan senarai2 mengandungi [1], kemudian menggunakan kaedah Except, hasil "elemen dalam senarai1 tetapi bukan dalam senarai2" akan menjadi [2, 3 ] , manakala kod asal akan melaporkan [2, 2, 2, 3].

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membandingkan Senarai Besar dengan Cekap untuk Mencari Percanggahan?. 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