這題先別急著找我要 code
大家可先參考我的想法。
如果要用 python ac 這題。
肯定是要動動腦的。
第一點
N <= 1000
如果 close 500
你要如何快速判別 500 兩旁可用的櫃台編號。
用迴圈往兩旁找,太慢了。
第二點
當有客人上門 welcome
要如何找到人數最少的櫃台
用迴圈往右找,太慢了。
以上兩點對一個沒有練習很多的學生,
應該很難達成。
可以將上面兩個問題,分別出題目。
要如何快速的判定鄰近 available 的櫃台編號
以這組為例
5
3 1 4 1 5
一開始我將測資建表
d = {1: [3, -1, 2], 2: [1, 1, 3], 3: [4, 2, 4], 4: [1, 3, 5], 5: [5, 4, -1]}
1: [3, -1, 2] # 1 號台的排隊人數是 3, 左手是 -1, 右手是 2 號
2: [1, 1, 3] # 2 號台的排隊人數是 1, 左手是 1, 右手是 3 號
...
假設 close 3
先查 d[3] , 左手是 2 右手是 4
3 號即將關閉
告訴 4 號, 你的左手變 2
告訴 2 號, 你的右手變 4
d[4] 變 4: [1, 2, 5]
d[2] 變 2: [1, 1, 4]
這樣就不必用迴圈查找了