摘要:前言前綴樹(shù)同系列的題目,可以用前綴樹(shù)的思路來(lái)存儲(chǔ),只需要基于之前的前綴樹(shù)實(shí)現(xiàn)改造。對(duì)于方法,你將得到一對(duì)字符串,整數(shù)的鍵值對(duì)。字符串表示鍵,整數(shù)表示值。實(shí)例代碼的前綴字符子節(jié)點(diǎn)存儲(chǔ)的值,不為則為終止節(jié)點(diǎn)字符串表示鍵,整數(shù)表示值。
前言
前綴樹(shù)同系列的題目,可以用前綴樹(shù)的思路來(lái)存儲(chǔ),只需要基于之前的前綴樹(shù)實(shí)現(xiàn)改造。原題目要求如下:
實(shí)現(xiàn)一個(gè) MapSum 類里的兩個(gè)方法,insert 和 sum。實(shí)現(xiàn)思路對(duì)于方法 insert,你將得到一對(duì)(字符串,整數(shù))的鍵值對(duì)。字符串表示鍵,整數(shù)表示值。如果鍵已經(jīng)存在,那么原來(lái)的鍵值對(duì)將被替代成新的鍵值對(duì)。
對(duì)于方法 sum,你將得到一個(gè)表示前綴的字符串,你需要返回所有以該前綴開(kāi)頭的鍵的值的總和。
示例 1:
輸入: insert("apple", 3), 輸出: Null
輸入: sum("ap"), 輸出: 3
輸入: insert("app", 2), 輸出: Null
輸入: sum("ap"), 輸出: 5
參考前綴樹(shù)實(shí)現(xiàn)的思路,把節(jié)點(diǎn)中的boolean變量改為鍵值對(duì)的值
sum方法的時(shí)候首先要找到匹配前綴的節(jié)點(diǎn),然后用層序遍歷(廣度優(yōu)先)方式去遍歷這個(gè)節(jié)點(diǎn)的子樹(shù)。遍歷的時(shí)候使用遞歸進(jìn)行遍歷。
實(shí)例代碼public class MapSum { /** * key的前綴字符 */ char keyPrefix; /** * 子節(jié)點(diǎn) */ MapSum[] children; /** * 存儲(chǔ)的值,不為0則為終止節(jié)點(diǎn) */ int value; /** Initialize your data structure here. */ public MapSum() { children=new MapSum[26]; value=0; } /** * 字符串表示鍵,整數(shù)表示值。如果鍵已經(jīng)存在,那么原來(lái)的鍵值對(duì)將被替代成新的鍵值對(duì)。 * @param key 鍵 * @param val 值 */ public void insert(String key, int val) { if(key!=null){ //分解成字符數(shù)組 char[] charArr=key.toCharArray(); //模擬指針操作,記錄當(dāng)前訪問(wèn)到的樹(shù)的節(jié)點(diǎn) MapSum currentNode=this; for(int i=0;i
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/76582.html
摘要:原題力扣鏈接鍵值映射題目簡(jiǎn)述實(shí)現(xiàn)一個(gè)類,支持兩個(gè)方法,和初始化對(duì)象插入鍵值對(duì),字符串表示鍵,整數(shù)表示值。如果鍵已經(jīng)存在,那么原來(lái)的鍵值對(duì)將被替代成新的鍵值對(duì)。返回所有以該前綴開(kāi)頭的鍵的值的總和。 ...
摘要:解題思路這道題可以開(kāi)掛一波,反向套娃,你讓我實(shí)現(xiàn)鍵值映射,那我就用鍵值映射實(shí)現(xiàn),直接定義一個(gè),用來(lái)記錄和對(duì),函數(shù)實(shí)現(xiàn)時(shí),通過(guò)來(lái)統(tǒng)計(jì)擁有的值的和,代碼如下 解題思路...
摘要:在第二種方案中,我們封裝的結(jié)構(gòu)體類型的所有方法,都可以與類型的方法完全一致包括方法名稱和方法簽名。所以在設(shè)計(jì)這樣的結(jié)構(gòu)體類型的時(shí)候,只包含類型的字段就不夠了。當(dāng)參數(shù)或的實(shí)際類型不符合要求時(shí),方法會(huì)立即引發(fā)。35 | 并發(fā)安全字典sync.Map (下)我們?cè)谏弦黄恼轮姓劦搅耍捎诓l(fā)安全字典提供的方法涉及的鍵和值的類型都是interface{},所以我們?cè)谡{(diào)用這些方法的時(shí)候,往往還需要對(duì)鍵...
摘要:在最近寫(xiě)程序題的時(shí)候,需要存儲(chǔ)一個(gè)為為的后來(lái)需要根據(jù)的長(zhǎng)度對(duì)從小到大進(jìn)行排序。用代替,然后中的元素為配對(duì)類,變相實(shí)現(xiàn)了一個(gè)鍵對(duì)應(yīng)一個(gè)值的集合,并且能夠排序。 在最近寫(xiě)程序題的時(shí)候,需要存儲(chǔ)一個(gè)key為char,value為string的map,后來(lái)需要根據(jù)string的長(zhǎng)度對(duì)map從小到大進(jìn)行排序。 showImg(https://segmentfault.com/img/bVbiZz...
摘要:題目鏈接和還有是一類題,解法都差不多。可以做,但是這道題如果輸入是有序的,簡(jiǎn)單的會(huì)超時(shí),所以得用來(lái)做。算的方法是比如給的例子,現(xiàn)在分成了左右兩部分,拿兩個(gè)指針和。 493. Reverse Pairs 題目鏈接:https://leetcode.com/problems... 和Count of Smaller Numbers After Self還有count of range su...
閱讀 2879·2021-11-24 09:39
閱讀 3130·2021-11-19 10:00
閱讀 1535·2021-10-27 14:17
閱讀 1811·2021-10-14 09:43
閱讀 961·2021-09-03 10:30
閱讀 3413·2019-08-30 15:54
閱讀 2728·2019-08-30 13:05
閱讀 2006·2019-08-30 11:02