Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Program Python untuk menguji sama ada semua elemen dalam senarai dipisahkan dengan maksimum K

Program Python untuk menguji sama ada semua elemen dalam senarai dipisahkan dengan maksimum K

WBOY
WBOYke hadapan
2023-08-28 17:25:03623semak imbas

Program Python untuk menguji sama ada semua elemen dalam senarai dipisahkan dengan maksimum K

Dalam banyak senario pengaturcaraan, kita akan menghadapi situasi di mana kita perlu menentukan sama ada semua elemen dalam senarai berada pada jarak paling banyak K. Masalah ini timbul dalam pelbagai bidang seperti analisis data, pemprosesan jujukan, dan cabaran algoritma. Keupayaan untuk menguji dan mengesahkan syarat ini adalah penting untuk memastikan integriti dan ketepatan program kami.

Dalam artikel ini, kami akan meneroka program Python untuk menyelesaikan masalah ini dengan cekap. Kami akan membincangkan konsep, membentangkan pendekatan langkah demi langkah untuk menyelesaikan masalah dan menyediakan pelaksanaan kod yang berfungsi. Selepas membaca artikel ini, anda akan mempunyai pemahaman yang jelas tentang cara menyemak sama ada elemen dalam senarai berada pada kebanyakan kedudukan K selain menggunakan Python.

Memahami masalah

Sebelum kita mendalami penyelesaiannya, mari kita fahami pernyataan masalah secara terperinci.

Memandangkan senarai elemen, kita perlu menentukan sama ada setiap elemen berada paling banyak kedudukan K daripada mana-mana elemen terbesar lain dalam senarai. Dalam erti kata lain, kami ingin menyemak sama ada elemen terbesar dalam senarai dan mana-mana elemen terbesar lain berada dalam kedudukan K jarak.

Untuk menggambarkan ini, pertimbangkan contoh berikut -

Input: [2, 7, 4, 9, 5, 1]
K = 2

Dalam kes ini, elemen terbesar ialah 9 dan berada 2 atau kurang kedudukan dari elemen terbesar yang lain (7). Oleh itu, syarat itu dipenuhi.

Sekarang, mari kita berikan satu lagi contoh

Input: [3, 8, 6, 1, 9, 2]
K = 3

Dalam contoh ini, elemen terbesar ialah 9, tetapi jaraknya 4 kedudukan daripada elemen terbesar seterusnya (8), jadi syarat tidak dipenuhi.

Tugas kami ialah menulis program Python yang mengambil sebagai input senarai elemen dan nilai K dan mengembalikan sama ada syarat tertentu dipenuhi.

Kaedah dan Algoritma

Untuk menyelesaikan masalah ini, kita boleh menggunakan pendekatan mudah, iaitu mengulang senarai dan membandingkan setiap elemen dengan elemen terbesar yang ditemui setakat ini. Semasa kami mengulangi senarai, kami menjejaki elemen terbesar dan kedudukannya.

Berikut ialah algoritma langkah demi langkah untuk melaksanakan kaedah kami -

  • Memulakan dua pembolehubah -

    • elemen max menyimpan elemen terbesar yang ditemui setakat ini (dimulakan kepada elemen pertama senarai).

    • max_index menyimpan indeks elemen terbesar (dimulakan kepada 0).

  • Lelaran ke atas baki elemen senarai daripada indeks 1 hingga n-1.

    Jika elemen semasa lebih besar daripada max_element, kemas kini max_element kepada elemen semasa dan max_index kepada indeks semasa.

  • Selepas lelaran tamat, kami mendapat elemen terbesar dalam senarai dan indeksnya.

  • Sekarang ulangi senarai sekali lagi dan bagi setiap elemen semak sama ada ia adalah elemen terbesar atau jika ia berada paling banyak K kedudukan dari elemen terbesar. Jika mana-mana elemen tidak memenuhi syarat ini, False dikembalikan.

  • Kembalikan Benar jika semua elemen memenuhi syarat.

Dengan mengikuti pendekatan ini, kami boleh menentukan dengan berkesan sama ada semua elemen dalam senarai berada pada kedudukan K paling banyak daripada mana-mana elemen terbesar yang lain.

Dalam bahagian seterusnya, kami akan melaksanakan algoritma ini dalam Python.

Pelaksanaan

Sekarang, mari kita laksanakan algoritma yang dibincangkan dalam bahagian sebelumnya menggunakan kod Python. Di bawah ialah coretan kod yang menunjukkan penyelesaiannya

def test_k_apart(nums, k):
   max_element = nums[0]
   max_index = 0

   # Find the maximum element and its index
   for i in range(1, len(nums)):
      if nums[i] > max_element:
         max_element = nums[i]
         max_index = i

   # Check if all elements are at most K positions away
   for i in range(len(nums)):
      if nums[i] != max_element and abs(i - max_index) > k:
         return False

   return True

Dalam kod ini, kami mentakrifkan fungsi test_k_apart yang mengambil senarai nombor (nombor) dan nilai k sebagai parameter. Fungsi ini mengulangi senarai untuk mencari elemen terbesar dan indeksnya menggunakan perbandingan mudah. Kemudian ia mengulangi senarai sekali lagi untuk menyemak sama ada setiap elemen ialah elemen maksimum atau berada paling banyak K kedudukan dari elemen maksimum. Jika mana-mana elemen tidak memenuhi syarat ini, fungsi mengembalikan Palsu. Jika tidak, mengembalikan Benar, menunjukkan bahawa semua elemen memenuhi syarat.

Contoh

Mari uji fungsi ini dengan contoh dan lihat cara ia berfungsi -

nums = [5, 9, 7, 12, 9, 3, 7]
k = 2

result = test_k_apart(nums, k)
print(result)  # Output: True

Dalam contoh ini, nombor senarai mengandungi elemen paling banyak 2 kedudukan dari elemen terbesar (12), jadi fungsi mengembalikan Benar.

Output

True

Kes Ujian

Untuk menunjukkan cara program ini berfungsi, mari pertimbangkan beberapa kes ujian dengan senarai input dan nilai k yang berbeza -

Kes Ujian 1

nums = [5, 2, 7, 1, 8]
k = 2

Dalam contoh ini, elemen maksimum dalam senarai ialah 8. Kedudukan unsur relatif kepada unsur terbesar adalah seperti berikut: [3, 0, 1, 2, 0]. Perbezaan mutlak ialah [3, 0, 1, 2, 0]. Oleh kerana perbezaan mutlak semua elemen berada dalam julat k=2, output yang dijangkakan adalah Benar.

Kes Ujian 2

nums = [10, 4, 5, 8, 2]
k = 1

Dalam contoh ini, elemen maksimum dalam senarai ialah 10. Kedudukan unsur relatif kepada unsur terbesar adalah seperti berikut: [0, 1, 2, 1, 3]. Perbezaan mutlak ialah [0, 1, 2, 1, 3]. Unsur pada indeks 4 (nilai 2) mempunyai perbezaan mutlak 3, iaitu lebih besar daripada k=1. Oleh itu, output yang dijangkakan adalah Palsu.

Kes Ujian 3

nums = [3, 6, 9, 12, 15]
k = 3

在本例中,列表中的最大元素为 15。元素相对于最大元素的位置如下:[3, 2, 1, 0, 0]。绝对差为 [3, 2, 1, 0, 0]。由于所有元素的绝对差异在 k=3 范围内,因此预期输出为 True。

结论

在本文中,我们讨论了一个 Python 程序,用于测试列表中的所有元素是否是除最大元素之外的 k 个位置中的最大值。我们探索了一种利用查找最大元素并计算每个元素相对于最大值的绝对差的概念的方法。

通过使用简单的循环并检查绝对差异,我们能够确定是否所有元素都满足给定条件。通过理解和应用这个程序,您可以有效地检查列表中的元素是否在距最大元素的指定范围内。这在各种场景中都很有用,例如验证数据完整性或识别序列中的模式。

Atas ialah kandungan terperinci Program Python untuk menguji sama ada semua elemen dalam senarai dipisahkan dengan maksimum K. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam