其他題目 設計有setAll功能的雜湊表

2021-08-09 12:05:35 字數 1433 閱讀 4327

【題目】

雜湊表常見的三個操作是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 基本思路 對每個元素都加上乙個...