Bagaimana untuk Mencari Nombor Terhampir dalam Senarai dengan Nilai Diberi?

Barbara Streisand
Lepaskan: 2024-11-11 06:24:02
asal
731 orang telah melayarinya

How to Find the Closest Number in a List to a Given Value?

Mencari Nombor Terhampir dalam Senarai dengan Nilai Diberi

Memandangkan senarai integer, anda mungkin perlu menentukan nombor mana yang paling hampir kepada nilai yang diberikan. Tugas ini boleh ditangani dengan cekap menggunakan kaedah berikut:

Senarai Tidak Diisih:

Jika senarai input tidak diisih, anda boleh menggunakan fungsi min() terbina dalam dengan hujah utama. Ini membolehkan anda mencari elemen dengan perbezaan mutlak minimum daripada nilai sasaran.

>>> myList = [4, 1, 88, 44, 3]
>>> myNumber = 5
>>> min(myList, key=lambda x: abs(x - myNumber))
4
Salin selepas log masuk

Kaedah ini mengambil masa O(n) kerana ia berulang melalui keseluruhan senarai.

Senarai Isih:

Sebagai alternatif, jika senarai sudah diisih atau anda sanggup mengisihnya sekali, anda boleh menggunakan kaedah belah dua. Teknik ini menggunakan carian binari untuk mencari titik sisipan nilai sasaran, dengan berkesan mencari elemen terdekat dalam masa O(log n). Berikut ialah contoh pelaksanaan menggunakan modul dua belah Python:

>>> from bisect import bisect_left
>>> myList = sorted([4, 1, 88, 44, 3])
>>> myNumber = 5
>>> bisect_left(myList, myNumber)
2
>>> myList[2]
4
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mencari Nombor Terhampir dalam Senarai dengan Nilai Diberi?. 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