677 鍵值對映

2021-10-12 07:56:13 字數 1310 閱讀 8708

題目描述:

實現乙個 mapsum 類,支援兩個方法,insert 和 sum:

mapsum() 初始化 mapsum 物件

void insert(string key, int val) 插入 key-val 鍵值對,字串表示鍵 key ,整數表示值 val 。如果鍵 key 已經存在,那麼原來的鍵值對將被替代成新的鍵值對。

int sum(string prefix) 返回所有以該字首 prefix 開頭的鍵 key 的值的總和。

示例:

1 <= key.length, prefix.length <= 50

key 和 prefix 僅由小寫英文本母組成

1 <= val <= 1000

最多呼叫 50 次 insert 和 sum

方法1:

(1)使用字首樹;

(2)對於字首樹的每個字首儲存該字首下的所有的結點之和;

(3)為了能夠在插入某個鍵值時,快速更新字首樹的各個結點之和,使用unordered_map儲存鍵對應的值,先判讀存在性,再根據此次對應的值,進行更新,算出實際需要插入的值,再對字首樹進行遍歷更新;

class

mapsum};

/** initialize your data structure here. */

node* root;

unordered_mapint> mp;

//儲存鍵值

mapsum()

void

insert

(string key,

int val)

else

//更新字首樹

for(

char

&ch:key)

cur-

>val[ch-

'a']

+=val;

cur=cur-

>next[ch-

'a'];}

}//找給出的字首的和

intsum

(string prefix)

}return sum;}}

;/**

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

* mapsum* obj = new mapsum();

* obj->insert(key,val);

* int param_2 = obj->sum(prefix);

*/

677 鍵值對映 Map Sum Pairs

字首樹同系列的題目,可以用字首樹的思路來儲存,只需要基於之前的字首樹實現改造。原題目要求如下 實現乙個 mapsum 類裡的兩個方法,insert 和 sum。對於方法 insert,你將得到一對 字串,整數 的鍵值對。字串表示鍵,整數表示值。如果鍵已經存在,那麼原來的鍵值對將被替代成新的鍵值對。對...

677 鍵值對映(Trie)

實現乙個 mapsum 類,支援兩個方法,insert 和 sum 和208題差不多,只不過這題沒用利用乙個內部類來構造trie,而是直接構建,所以有了mapsum cur this 自己額外建了乙個getval 來幫助解題,其餘的沒啥說的看 注釋就行了。class mapsum 獲取指定key對應...

LeetCode 677 鍵值對映

實現乙個 mapsum 類裡的兩個方法,insert和sum。對於方法insert,你將得到一對 字串,整數 的鍵值對。字串表示鍵,整數表示值。如果鍵已經存在,那麼原來的鍵值對將被替代成新的鍵值對。對於方法sum,你將得到乙個表示字首的字串,你需要返回所有以該字首開頭的鍵的值的總和。示例 1 輸入 ...