"""
請設計乙個排序系統,能夠讓每個進入隊伍的使用者都能看到自己在列隊中所處的位置和變化,隊伍可能隨時有人加入和退出,當有人退出影響到使用者的位置排名時需要及時反饋到使用者。
"""from collections import deque
class user:
def __init__(self, id, name):
self.id = id # 唯一標識乙個使用者
self.name = name
self.seq = 0
def setseq(self, seq):
self.seq = seq
def tostring(self):
return 'id: ' + str(self.id) + '\tname: ' + self.name + '\tseq: ' + str(self.seq)
class myqueue:
def __init__(self):
self.q = deque()
# 進入佇列尾部
def enqueue(self, u):
u.setseq(len(self.q) + 1)
# 隊頭出佇列
def dequeue(self):
self.q.popleft()
self.updateseq()
# 佇列中的人隨機離開
def dequeuemove(self, u):
self.q.remove(u)
self.updateseq()
# 出佇列後更新佇列中每個人的序列
def updateseq(self):
i = 1
for u in self.q:
u.setseq(i)
i += 1
def printlist(self):
for u in self.q:
print(u.tostring())
if __name__ == '__main__':
u1 = user(1, 'user1')
u2 = user(2, 'user2')
u3 = user(3, 'user3')
u4 = user(4, 'user4')
queue = myqueue()
queue.enqueue(u1)
queue.enqueue(u2)
queue.enqueue(u3)
queue.enqueue(u4)
queue.dequeue() # 隊首元素u1出佇列
queue.dequeuemove(u3) # 佇列中間的元素u3出佇列
queue.printlist()
執行結果如下:
id: 2 name: user2 seq: 1
id: 4 name: user4 seq: 2
佇列演算法題 如何設計乙個排序系統
設計乙個排隊序列,能夠讓每個進入隊伍的使用者看到自己在佇列中所處的位置和變化,隊伍中隨時有人加入和退出 當有人退出影響到使用者排名時,需要及時的反饋。解析 既然是排隊序列,那麼加入只能排在隊尾。所以,他不會影響到原先所有人的排序。但是,有人退出時需要注意,隊頭的人和隊中間的人退出才會影響使用者排名,...
如何設計乙個秒殺系統
秒殺場景一般會在電商 舉行一些活動或者節假日在12306 上搶票時遇到。對於電商 中一些稀缺或者 商品,電商 一般會在約定時間點對其進行限量銷售,因為這些商品的特殊性,會吸引大量使用者前來搶購,並且會在約定的時間點同時在秒殺頁面進行搶購。限流 鑑於只有少部分使用者能夠秒殺成功,所以要限制大部分流量,...
如何設計乙個秒殺系統
秒殺場景一般會在電商 舉行一些活動或者節假日在12306 上搶票時遇到。對於電商 中一些稀缺或者 商品,電商 一般會在約定時間點對其進行限量銷售,因為這些商品的特殊性,會吸引大量使用者前來搶購,並且會在約定的時間點同時在秒殺頁面進行搶購。限流 鑑於只有少部分使用者能夠秒殺成功,所以要限制大部分流量,...