【題目】
雜湊表常見的三個操作是put、get和containskey,而且這三個操作的時間複雜度為o(1)。現在想加乙個setall功能,就是把所有的記錄的value值都設成統一的值。請設計並實現這種有setall功能的雜湊表,並且put、get、containskey和setall四個操作的時間複雜度都為o(1)。
【基本思路】
加入時間戳。
1、把每乙個記錄都加上乙個時間,標記每條記錄是合適建立的
2、設定乙個setall記錄也加上乙個時間,標記setall記錄何時建立
3、查詢記錄時,如果某條記錄的時間早於setall記錄的時間,說明setall是最新資料,返回setall記錄的值。如果某條記錄的時間晚於setall記錄的時間,說明記錄的值是最新資料,返回該條記錄的值
【**實現】
#python3.5
class
myvalue:
def__init__
(self, value, time):
self.__value = value
self.__time = time
defgetvalue
(self):
return self.__value
defgettime
(self):
return self.__time
class
myhashmap:
def__init__
(self):
self.map = {}
self.time = 0
self.setall = myvalue(none, -1)
defcontainskey
(self, key):
return key in self.map
defput(self, key, value):
self.map[key] = myvalue(value, self.time)
self.time += 1
defsetall_
(self, value):
self.setall = myvalue(value, self.time)
self.time += 1
defget
(self, key):
if self.containskey(key):
if self.map[key].gettime() < self.setall.gettime():
return self.setall.getvalue()
else:
return self.map[key].getvalue()
else:
return
none
設計有setAll功能的雜湊表
題目 雜湊表常見的三個操作是put get和containskey,而且這三個操作的時間複雜度為o 1 現在想加乙個setall功能,就是把所有的記錄的value值都設成統一的值。請設計並實現這種有setall功能的雜湊表,並且put get containskey和setall四個操作的時間複雜度...
設計有setAll功能的雜湊表
設計有setall功能的雜湊表 雜湊表常見的三個操作時put get和containskey,而且這三個操作的時間複雜度為o 1 現在想加乙個setall功能,就是把所有記錄value都設成統一的值。請設計並實現這種有setall功能的雜湊表,並且put get containskey和setall...
其他題目 設計RandomPool結構
題目 設計一種結構,在該結構中有如下三個功能 1 insert key 將某個key加入到該結構,做到不重複加入 2 delete key 將原本在結構中的某個key移除 3 getrandom 等概率隨機返回結構中的任意乙個key 要求所有的操作時間複雜度都是o 1 基本思路 對每個元素都加上乙個...