432 全 O 1 的資料結構

2022-10-08 23:09:31 字數 1549 閱讀 6210

請你設計乙個用於儲存字串計數的資料結構,並能夠返回計數最小和最大的字串。

實現 allone 類:

allone() 初始化資料結構的物件。

inc(string key) 字串 key 的計數增加 1 。如果資料結構中尚不存在 key ,那麼插入計數為 1 的 key 。

dec(string key) 字串 key 的計數減少 1 。如果 key 的計數在減少後為 0 ,那麼需要將這個 key 從資料結構中刪除。測試用例保證:在減少計數前,key 存在於資料結構中。

getmaxkey() 返回任意乙個計數最大的字串。如果沒有元素存在,返回乙個空字串 "" 。

getminkey() 返回任意乙個計數最小的字串。如果沒有元素存在,返回乙個空字串 "" 。

import j**a.util.hashmap;

import j**a.util.hashset;

import j**a.util.map;

import j**a.util.set;

class allone

public void inc(string key) else

} else else

if (node.keys.size() == 0)

}nodemap.put(key, newnode);

}public void dec(string key) else

} else

if (node.keys.size() == 0) }}

public string getmaxkey()

return doublelinkedlist.gettail().prev.keys.iterator().next();

}public string getminkey()

return doublelinkedlist.gethead().next.keys.iterator().next();

}}class doublelinkedlist

static class node

}public void remove(node node)

public void insertafter(node node, node inserted)

public node gethead()

public void sethead(node head)

public node gettail()

public void settail(node tail)

}/**

* your allone object will be instantiated and called as such:

* allone obj = new allone();

* obj.inc(key);

* obj.dec(key);

* string param_3 = obj.getmaxkey();

* string param_4 = obj.getminkey();

*/

432 全 O 1 的資料結構

實現乙個資料結構支援以下操作 inc key 插入乙個新的值為 1 的 key。或者使乙個存在的 key 增加一,保證 key 不為空字串。dec key 如果這個 key 的值是 1,那麼把他從資料結構中移除掉。否者使乙個存在的 key 值減一。如果這個 key 不存在,這個函式不做任何事情。ke...

資料結構 單鏈表 在O 1 時間刪除鍊錶結點

題目 給定單向鍊錶的頭指標和乙個結點指標,定義乙個函式在o 1 時間刪除該結點。思路 如果按常規思路來 刪除乙個結點需要找到該結點的前乙個結點,將這個節點的 next指向被刪除節點的 next,找到這個該結點的前乙個結點就需要遍歷鍊錶,此時就不是o 1 時間。刪除結點我們不需要找到前乙個結點,我們可...

資料結構 刪除單鏈表中p節點,時間複雜度O 1

在plist中刪除p節點,時間複雜度要求o 1 因為時間複雜度為o 1 所以常規思路遍歷鍊錶是不行的。刪除節點,其實是把該節點資料域清除,已知了p節點,那麼可以知道它的next節點,所以可以把p節點的下乙個節點的資料域賦值給p節點資料域,再讓p節點的next指向p next next,就實現了p節點...