Python membandingkan daftar tanpa urutan

Artikel ini membahas berbagai cara untuk membandingkan dua daftar di Kotlin, yang urutan elemennya diabaikan

Misalnya, daftar [4, 1, 5] dan [1, 4, 5] dianggap sama, dan daftar [4, 1, 5] dan [5, 4, 3] tidak dianggap sama. Ukuran kedua daftar harus sama. Oleh karena itu, daftar [4, 1, 5, 4] dan [1, 4, 5, 1] tidak dianggap sama

 
Solusi yang masuk akal adalah mengurutkan kedua daftar dan kemudian membandingkannya menggunakan operator ==. Implementasi tipikal dari pendekatan ini akan terlihat seperti di bawah ini. Kode dengan anggun menangani input nol dan juga memeriksa apakah ukuran kedua daftar sama atau tidak sebelum menyortir. Solusinya tidak merusak urutan asli dari kedua daftar

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

menyenangkan isEqualIgnoreOrder(x. Daftar<Int>? . , y: Daftar<Int>? . ): Boolean {

    jika (x == y) {

        kembalikan benar

    }

    jika (x == null || y == null . x. ukuran . = y. ukuran) {

        kembalikan salah

    }

    kembalikan x. diurutkan(). toList() == . .diurutkan(). toList()

}

 

menyenangkan main() {

    val x = listOf(4, 1, 5)

    val y = listOf(1, 4, 5)

 

    val isEqual = isEqualIgnoreOrder(x, y)

    jika (sama dengan) {

        println("Daftarnya sama")<

    } lain {

        println("Daftar tidak sama")

    }

}

Unduh Kode

Keluaran

Daftarnya sama

 
Kompleksitas waktu dari solusi di atas adalah O(n.log(n)), di mana n adalah ukuran daftar yang lebih besar. Jika jumlah elemen tidak penting, Anda dapat menghindari pengurutan dengan mengubah kedua daftar menjadi satu set sebelum membandingkannya menggunakan operator ==

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

menyenangkan isEqualIgnoreCount(x. Daftar<Int>? . , y: Daftar<Int>? . ): Boolean {

    jika (x == y) {

        kembalikan benar

    }

    jika (x == null || y == null) {

        kembalikan salah

    }

    kembalikan x. Atur() == . .Atur()

}

 

menyenangkan main() {

    val x = listOf(4, 1, 5, 4)

    val y = listOf(1, 4, 5, 1, 5)

 

    val isEqual = isEqualIgnoreCount(x, y)

    jika (sama dengan) {

        println("Daftarnya sama")<

    } lain {

        println("Daftar tidak sama")

    }

}

Unduh Kode

Keluaran

Daftarnya sama

Itu semua tentang membandingkan dua daftar di Kotlin, di mana urutan elemen diabaikan