Rumah > pembangunan bahagian belakang > Tutorial Python > Penyelesaian Bahasa Python Saya kepada Task Nested Array daripada The Weekly Challenge

Penyelesaian Bahasa Python Saya kepada Task Nested Array daripada The Weekly Challenge

Mary-Kate Olsen
Lepaskan: 2024-12-28 11:59:10
asal
760 orang telah melayarinya

My Python Language Solution to Task Nested Array from The Weekly Challenge

1. Pengenalan

Cabaran Mingguan, anjuran Mohammad S. Anwar, adalah pertandingan mesra di mana pembangun bersaing dengan menyelesaikan sepasang tugas. Ia menggalakkan penyertaan daripada pembangun semua bahasa dan peringkat melalui pembelajaran, perkongsian dan keseronokan.

Tugas 2: Nested Array daripada The Weekly Challenge 300 menggesa pembangun mencari panjang tatasusunan bersarang terpanjang.

Tarikh akhir Cabaran Mingguan 300 ialah Ahad, 23 Disember 2024 pada 23:59 (Waktu UK). Untuk mengelakkan berat sebelah, sila pertimbangkan untuk membaca siaran ini selepas bertanding.

2. Tugasan 2: Susunan Bersarang

Anda diberi tatasusunan integer, @ints panjang n mengandungi pilihatur nombor dalam julat [0, n-1].

Tulis skrip untuk membina set, set[i] = ints[i], ints[ints[i]], ints[ints[ints[i]]], ... tertakluk kepada peraturan berikut:

  1. Elemen pertama dalam set[i] bermula dengan pemilihan elemen int[i].
  2. Elemen seterusnya dalam set[i] hendaklah menjadi int[ints[i]], dan kemudian int[ints[i]]], dan seterusnya.
  3. Kami berhenti menambah tepat sebelum elemen pendua berlaku dalam set[i].

Kembalikan panjang terpanjang set set[i].

Cabaran Mingguan 300, Tugasan 2: Susunan Bersarang

Contoh 1 dan Contoh 2 membentangkan output yang dijangkakan untuk input yang diberikan.

Contoh 1

Input: @ints = (5, 4, 0, 3, 1, 6, 2)
Output: 4
Salin selepas log masuk

Di sini satu set terpanjang ditetapkan[0]:

set[0] = {ints[0], ints[5], ints[6], ints[2]} = {5, 6, 2, 0}
Salin selepas log masuk

Contoh 2

Input: @ints = (0, 1, 2)
Output: 1
Salin selepas log masuk

3. Penyelesaian saya

def build_set_from_index(ints, starting_index):
    iset = [
            ints[starting_index],
            ]
    for ints_index in range(1, len(ints)):
        pindex = iset[ints_index - 1]
        value = ints[pindex]
        if value in iset:
            break
        iset.append(value)
    return iset

def return_longest_length(ints):
    max_length = 0
    for i in range(0, len(ints)):
        iset = build_set_from_index(ints, i)
        iset_length = len(iset)
        if iset_length > max_length:
            max_length = iset_length
    return max_length
Salin selepas log masuk

Penyelesaian saya menggunakan dua fungsi build_set_from_index dan return_longest_length.

build_set_from_index

build_set_from_index mengembalikan set[starting_index] yang dibina daripada parameter ints dan starting_index. Saya menggunakan pendekatan berulang untuk membina set[].

Pendekatan saya muncul dari awal pagi dan seterusnya parafrasa set[] peraturan pembinaan. Pada mulanya, peraturan ini kelihatan rumit. Tetapi, selepas menyemak semula Contoh 1 selepas sarapan pagi yang baik dan kafein, saya lebih memahami peraturan ini. Saya juga dapat merumuskan parafrasa berikut.

  • set[i] ialah set dengan unsur k.
    • Peraturan 3 mengehadkan nilai k.
    • Peraturan 3 menentukan masa untuk berhenti menambah elemen pada set[i].
  • Nilai set[i] pada k = 0 adalah sama dengan int[i].
  • Untuk k > 0, elemen k-th set[i] adalah sama dengan nilai int[] yang diindeks menggunakan elemen (k-1)-th set[i].

Menggunakan pendekatan yang diparafrasa, membina set[0] secara interaktif daripada @ints, seperti dalam Contoh 1, menjadi lebih mudah!

  • Pada k = 0, nilai set[0] adalah sama dengan int[0] = 5. set[0] mengandungi {5}.
  • Pada k = 1, nilai set[0] adalah sama dengan int[5] = 6. set[0] mengandungi {5, 6}.
  • Pada k = 2, nilai set[0] adalah sama dengan int[6] = 2. set[0] mengandungi {5, 6, 2}.
  • Pada k = 3, nilai set[0] adalah sama dengan int[2] = 0. set[0] mengandungi {5, 6, 2, 0}
  • Pada k = 4, BERHENTI kerana set[0] mengandungi int[0] = 2.

kembali_panjang_panjang

return_longest_length mencari panjang maksimum semua set[] yang dibina daripada int. Ia menggunakan build_set_from_index untuk menjana set[k] bagi setiap 0 <= k < len(ints) dan kemudian mengenal pasti set[k] dengan panjang terpanjang.

4. Kesimpulan

Dalam siaran ini saya membincangkan Tugasan 1: Nested Array dan saya membentangkan penyelesaian saya. Penyelesaian saya adalah mudah, sebahagian besarnya dimaklumkan oleh cara saya menghuraikan tugas asal dan menyerlahkan kepentingan sarapan yang enak.

Atas ialah kandungan terperinci Penyelesaian Bahasa Python Saya kepada Task Nested Array daripada The Weekly Challenge. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
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