Setiap kali anda membuat ciptaan baharu, anda mesti mengetahui set yang bertindih dengan set yang dibuat sekarang, dan kemudian mengesahkan sama ada terdapat mana-mana dua set yang bertindih Jika ada, maka set ini tidak akan dibuat memastikan set tidak akan dibuat dalam set yang sama Terdapat tiga pengumuman pada masa itu
Apabila memasukkan, rentasi jadual, tentukan sama ada cap masa semasa berada di antara dua cap masa dan rekod nombor yang memenuhi syarat ini Jika >= 3, pemasukan tidak akan dilakukan. Jika tidak, masukkan ke dalam jadual data.
Gunakan dua titik masa untuk mengira berapa banyak pengumuman berkesan yang ada dalam tempoh masa ini! Tidak boleh dibuat jika terdapat lebih daripada 3.
Masalah liputan segmen talian klasik. Saya tidak tahu Java, jadi saya akan memberi anda idea O(n).
Mula-mula cari semua selang yang bersilang dengan selang untuk disahkan, Isih mengikut titik akhir kiri selang dari kecil ke besar
Ingat selang pertama sebagai CurrentInternal
Untuk CurrentInternal, periksa item seterusnya NextInterval: jika ia tidak bersilang dengan CurrentInternal, rekodkannya sebagai CurrentInternal dan lompat ke 2 jika tidak, rekodkan selang persilangannya sebagai Intersection.
Untuk Intersection, lintasi item selepas NextInterval: jika tiada selang yang bersilang dengan Intersection, maka rekodkan NextInterval sebagai CurrentInterval dan lompat ke 2 jika tidak, ini bermakna terdapat tiga selang bersilang dan keluar.
Jika keseluruhan senarai dilalui, ia membuktikan bahawa selang masa untuk disahkan adalah sah.
DEMO yang ditulis dalam JS disertakan, saya harap anda semua bergembira
Setiap kali anda membuat ciptaan baharu, anda mesti mengetahui set yang bertindih dengan set yang dibuat sekarang, dan kemudian mengesahkan sama ada terdapat mana-mana dua set yang bertindih Jika ada, maka set ini tidak akan dibuat memastikan set tidak akan dibuat dalam set yang sama Terdapat tiga pengumuman pada masa itu
Cukup tulis sql dan selesai:
Jika hasilnya kurang daripada 3, buatnya.
Apabila memasukkan, rentasi jadual, tentukan sama ada cap masa semasa berada di antara dua cap masa dan rekod nombor yang memenuhi syarat ini Jika >= 3, pemasukan tidak akan dilakukan. Jika tidak, masukkan ke dalam jadual data.
Gunakan dua titik masa untuk mengira berapa banyak pengumuman berkesan yang ada dalam tempoh masa ini!
Tidak boleh dibuat jika terdapat lebih daripada 3.
Cara bodoh untuk mengetahui sepanjang masa yang bertindih dengan pengumuman baharu, dan kemudian membuat statistik mengikut hari
Saya cuba menulisnya, anda boleh merujuknya,
Masalah liputan segmen talian klasik. Saya tidak tahu Java, jadi saya akan memberi anda idea O(n).
Mula-mula cari semua selang yang bersilang dengan selang untuk disahkan, Isih mengikut titik akhir kiri selang dari kecil ke besar
Ingat selang pertama sebagai CurrentInternal
Untuk CurrentInternal, periksa item seterusnya NextInterval: jika ia tidak bersilang dengan CurrentInternal, rekodkannya sebagai CurrentInternal dan lompat ke 2 jika tidak, rekodkan selang persilangannya sebagai Intersection.
Untuk Intersection, lintasi item selepas NextInterval: jika tiada selang yang bersilang dengan Intersection, maka rekodkan NextInterval sebagai CurrentInterval dan lompat ke 2 jika tidak, ini bermakna terdapat tiga selang bersilang dan keluar.
Jika keseluruhan senarai dilalui, ia membuktikan bahawa selang masa untuk disahkan adalah sah.
DEMO yang ditulis dalam JS disertakan, saya harap anda semua bergembira
https://jsfiddle.net/hsfzxjy/7td0rwr2/28/