LeetCode 677 鍵值對映

2021-09-19 09:18:10 字數 1463 閱讀 9812

實現乙個 mapsum 類裡的兩個方法,insertsum

對於方法insert,你將得到一對(字串,整數)的鍵值對。字串表示鍵,整數表示值。如果鍵已經存在,那麼原來的鍵值對將被替代成新的鍵值對。

對於方法sum,你將得到乙個表示字首的字串,你需要返回所有以該字首開頭的鍵的值的總和。

示例 1:

輸入: sum("ap"), 輸出: 3

輸入: sum("ap"), 輸出: 5

字典樹思路:

把給定串的最後乙個字元賦值val,遞迴求解以給定串為字首的所有串的值總和

不過這樣是比較慢的

class mapsum

public:

/** initialize your data structure here. */

mapsum()

void

insert

(string key,

int val)

cnt[p]

= val;

//字串的終點,賦值

}int

sum(string prefix)

return

sumval

(p);

//找到字首字元的最後乙個位置,遞迴求解}}

;/**

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

* mapsum* obj = new mapsum();

* obj->insert(key,val);

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

*/

雜湊

直接用雜湊表儲存鍵值,然後遍歷雜湊表,如果str.substr == prefix那麼就加入答案

class mapsum

void

insert

(string key,

int val)

intsum

(string prefix)

return ans;}}

;

或者用mapprefix開始的字串判斷,這樣更快,並且因為按照字典序排序,只要有乙個不滿足,後面所有的都不滿足,所以時間是最快的

class mapsum

void

insert

(string key,

int val)

intsum

(string prefix)

return ans;}}

;

LeetCode 677 鍵值對映

1 題目描述 leetcode 2 解題思路 典型的字典樹題目,使用其可以快速的匹配字首操作。每個節點帶乙個值,如果是單詞路徑上的節點,權值直接賦值為0即可。class trie trienode root public trie void insert string s,int val p p c...

677 鍵值對映

題目描述 實現乙個 mapsum 類,支援兩個方法,insert 和 sum mapsum 初始化 mapsum 物件 void insert string key,int val 插入 key val 鍵值對,字串表示鍵 key 整數表示值 val 如果鍵 key 已經存在,那麼原來的鍵值對將被替...

677 鍵值對映 Map Sum Pairs

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