Menggabungkan dua python daftar tertaut yang diurutkan

Gabungkan dua daftar dalam satu daftar yang diurutkan. Daftar harus dibuat dengan menyatukan node dari dua daftar pertama

Kembalikan kepala daftar tertaut yang digabungkan

Contoh 1

Input: list1 = [1,2,4], list2 = [1,3,4]
Output: [1,1,2,3,4,4]

Contoh 2

Input: list1 = [], list2 = []
Output: []
_

Contoh 3

Input: list1 = [], list2 = [0]
Output: [0]

Kendala

  • Jumlah node di kedua daftar berada dalam rentang [0, 50]
  • -100 <= Node.val <= 100
  • Baik list1 dan list2 diurutkan dalam urutan tidak menurun

Larutan. →

Di sini, kita perlu mengikuti langkah-langkah di bawah ini, Mari saya tunjukkan dengan gambar

  1. Periksa apakah ada daftar tertaut yang kosong. Jika ya maka kembalikan yang lain

2. Sekarang di sini kita akan mengambil dua daftar tertaut lainnya, yang pertama adalah kepala dan satu lagi adalah temp, di sini temp akan digunakan untuk mengisi daftar tertaut yang dihasilkan, kepala akan menjadi simpul pertama (kepala) dari daftar tertaut temp

3. Kami memiliki dua daftar tertaut (list1, list2), misalkan ini diisi dengan nilai di bawah ini

4. Karena kita perlu mendapatkan linked list dalam urutan menaik, kita akan mengisi linked list dengan nilai terendah, jadi kita akan memeriksa, dari dua linked list mana linked list yang memiliki nilai terendah pada node pertama

5. Berikut daftar1. val dan daftar2. val keduanya memiliki 1

6. Jadi kita akan mengambil list1. val dan tambahkan ke head dan temp linked list

7. Setelah mengisi data dari list1 ke temp serta head linked list, kita pindah ke node berikutnya dari list1,

8. Sekarang kita pindah ke kondisi lain yaitu while loop, disini kita akan melakukan transversal sampai kedua linked list mencapai tail (end)

9. Sekarang seperti langkah di atas. 5, kita cek linked list mana yang nilainya lebih kecil, kita isikan dulu. Di sini list2 memiliki nilai 1 yang lebih kecil dari nilai list1 yaitu 2

Kami akan menambahkan nilai itu ke node berikutnya dari temp linked list

10. Karena kami mendapatkan nilai dari list2, sekarang kami bergerak maju di linked list2 atau Anda dapat mengatakan, kami menunjuk ke node berikutnya dari list2

11. Setelah itu kami menunjuk ke node temp berikutnya

12. Sekarang, sekali lagi kami mengulangi langkah-langkah itu, node mana yang memiliki nilai lebih kecil, kami akan menambahkannya ke node temp linked list berikutnya, seperti gambar di bawah ini

13. Sesuai gambar di atas, list1 memiliki nilai lebih kecil yaitu 2, jadi kami menambahkan ke daftar tertaut temp

14. Sekarang kita bergerak maju di node berikutnya dari linked list1 yaitu 4

15. Sekarang, kita bergerak maju dalam daftar tautan temp

16. Sesuai gambar di atas, list2 memiliki nilai lebih kecil yaitu 3, jadi kami menambahkan ke node berikutnya dari daftar tertaut temp

17. Sekarang kita bergerak maju di node berikutnya dari linked list2 yaitu 5

18. Sekarang, kita bergerak maju dalam daftar tautan temp

19. Sesuai gambar di atas, list1 memiliki nilai lebih kecil yaitu 4, jadi kami menambahkan ke node berikutnya dari daftar tertaut temp

20. Sekarang kita bergerak maju di node berikutnya dari list1 yang ditautkan yaitu NULL

21. Sekarang, kita bergerak maju dalam daftar tautan temp

22. Sekarang, list1 menunjuk ke NULL dan list2 menunjuk ke beberapa nilai. Jadi seperti halnya jika kondisi kita menambahkan nilai list2 yaitu 5 ke node temp linked list berikutnya

23. Sekarang kita bergerak maju di node berikutnya dari linked list2 yaitu NULL

24. Sekarang, kita bergerak maju dalam daftar tautan temp

25. Sekarang list1 poin NULL dan list2 poin ke NULL, kedua daftar tertaut tercapai di akhir, jadi di sini while loop akan menjadi salah dan akan diakhiri

26. Ini adalah daftar tertaut tunggal, kami tidak dapat kembali, jadi kami perlu mengembalikan HEAD (yang menunjuk ke node pertama dari daftar tertaut temp), sebagai jawaban

Jadi, inilah solusinya. Sekarang kita bergerak maju ke seluruh bagian kode

Kode (Jawa). →

Kode (Python). →

Kompleksitas Waktu

Jika jumlah node adalah m dan

Input: list1 = [], list2 = []
Output: []
0 di kedua daftar, maka kompleksitas waktu keseluruhan akan menjadi O(m + n) karena kita melintasi semua node dari kedua daftar

Kompleksitas Ruang

Kami membuat daftar tertaut untuk menyimpan hasil kami, maka kompleksitas ruang menurut saya adalah O(m + n)

Bagaimana Anda menggabungkan dua daftar tertaut yang diurutkan?

(1) Buat penunjuk kepala baru ke daftar tertaut kosong. (2) Periksa nilai pertama dari kedua linked list. (3) Simpul mana pun dari L1 atau L2 yang lebih kecil, tambahkan ke daftar baru dan pindahkan penunjuk ke simpul berikutnya. (4) Lanjutkan proses ini hingga Anda mencapai akhir linked list

Bagaimana Anda menggabungkan dua daftar dan mengurutkan dengan Python?

Sortir dan Gabungkan Dua Daftar menggunakan Metode sort() .
Tentukan dua variabel untuk menetapkan daftar kosong
Sekarang ambil jumlah input untuk daftar pertama dan kedua
Sekarang gabungkan kedua daftar menggunakan operator '+'
Gunakan metode sort() bawaan untuk mengurutkan daftar yang baru dibuat

Bagaimana cara menggabungkan dua array dalam urutan terurut dengan Python?

Menggabungkan Metode Sortir . Buat array tambahan ukuran N + M. Letakkan dua pointer i dan j dan inisialisasi ke 0. Pointer i menunjuk ke array pertama, sedangkan pointer j menunjuk ke array kedua. Create an auxiliary array of size N + M and insert the merge element in this array. Create an auxiliary array of size N + M. Put two pointers i and j and initialise them to 0. Pointer i points to the first array, whereas pointer j points to the second array.

Bagaimana Anda menggabungkan dua algoritma array yang diurutkan?

Algoritma .
Mulai program
Masukkan panjang kedua array
Masukkan elemen array dari pengguna
Salin elemen dari larik pertama ke larik gabungan saat menginisialisasinya
Salin elemen dari larik kedua ke larik gabungan sambil menginisialisasi larik kedua
Urutkan array yang digabungkan sekarang