javascript - algoritma kecil python
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-06-15 09:21:43
0
3
1106

Terdapat senarai rentetan tarikh, seperti berikut:

lst = ['2017-06-01', '2017-06-08', '2017-06-15', '2017-06-22', '2017-06-29', ...]

Cari rentetan tarikh dalams = ['2017-06-09']lstyang paling serupa

IDEA 1: Tukar nilai S dan LST ke dalam tarikh, melintasi dan membandingkan perbezaan dalam beberapa saat, dan yang terkecil adalah rentetan tarikh yang anda cari.

Adakah cara yang lebih baik untuk mencapai matlamat ini? ?

曾经蜡笔没有小新
曾经蜡笔没有小新

membalas semua (3)
typecho

Saya akan memberi anda idea untuk rujukan anda
lst.append(s)
lst.sort()
num=lst.index(s)
Kemudian bandingkan lst[num-1] dan lst[num+1] Semakin kecil perbezaan bilangan saat adalah hasilnya, jadi tidak perlu merentasi dan mengira cap waktu.
Jika anda rasa ia bagus, sila berikan kepada Zanga dan pakai.

    漂亮男人

    Tolak tarikh dengan mengalih keluar tarikh dalam-转换为整数, 再分别与s, dan nombor dengan nilai mutlak terkecil ialah tarikh terdekat.

    # Python code lst = ['2017-06-01', '2017-06-08', '2017-06-15', '2017-06-22', '2017-06-29'] s = ['2017-06-09'] date = [''.join(x.split('-')) for x in lst] datetoint = [int(x) for x in date] gaps = [abs(x - int(''.join(s[0].split('-')))) for x in datetoint] mostrecentdate = lst[gaps.index(min(gaps))] print(mostrecentdate)
      伊谢尔伦

      Saya merasakan bahawa lz bermaksud untuk tidak melintasi lst Sama ada ia adalah isihan atau penolakan, traversal sebenarnya berlaku
      Saya harus menggunakan kaedah dikotomi ini mungkin maksudnya

      i = 0 j = len(list) while True: index = (i + j) / 2 if s > lst[index]: i = index else: j = index continue

      Baca sahaja sebagai kod pseudo, itulah maksudnya, dengan cara ini bilangan traversal adalah paling sedikit.

        Muat turun terkini
        Lagi>
        kesan web
        Kod sumber laman web
        Bahan laman web
        Templat hujung hadapan
        Tentang kita Penafian Sitemap
        Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!