731. Kalendar II Saya
Kesukaran: Sederhana
Topik: Tatasusunan, Carian Perduaan, Reka Bentuk, Pokok Segmen, Jumlah Awalan, Set Tertib
Anda sedang melaksanakan program untuk digunakan sebagai kalendar anda. Kami boleh menambah acara baharu jika menambah acara tidak akan menyebabkan tempahan tiga kali ganda.
tempahan tiga kali berlaku apabila tiga acara mempunyai beberapa persimpangan yang tidak kosong (iaitu, beberapa saat adalah perkara biasa bagi ketiga-tiga acara itu.).
Acara ini boleh diwakili sebagai sepasang integer bermula dan berakhir yang mewakili tempahan pada selang separuh terbuka [mula, tamat), julat nombor nyata x seperti mula <= x < tamat.
Laksanakan kelas MyCalendarTwo:
Contoh 1:
1 2 |
|
1 |
|
1 2 3 4 5 6 7 |
|
Kekangan:
Petunjuk:
Penyelesaian:
Kami perlu mengekalkan dua senarai tempahan:
Apabila acara baharu diminta, kami perlu menyemak sama ada ia akan menyebabkan tempahan tiga kali ganda. Untuk melakukannya:
Akhir sekali, jika acara melepasi kedua-dua semakan, kami menambahkannya pada senarai tempahan tunggal.
Mari laksanakan penyelesaian ini dalam PHP: 731. Kalendar II Saya
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
|