[Leetcode]677.Map Sum Pairs
链接:LeetCode677
实现一个 MapSum 类里的两个方法,insert 和 sum。
对于方法 insert,你将得到一对(字符串,整数)的键值对。字符串表示键,整数表示值。如果键已经存在,那么原来的键值对将被替代成新的键值对。
对于方法 sum,你将得到一个表示前缀的字符串,你需要返回所有以该前缀开头的键的值的总和。
示例 1:
输入: insert("apple", 3), 输出: Null
输入: sum("ap"), 输出: 3
输入: insert("app", 2), 输出: Null
输入: sum("ap"), 输出: 5
相关标签:字典树
又是一道典型的字典树类型题。这里的关键点是在节点中保存数值,最后累加即可。
代码如下:
python:
import collections
class Node():
def __init__(self):
self.children = collections.defaultdict(lambda:Node())
self.num = 0
class Trie():
def __init__(self):
self.root = Node()
def insert(self,word,num):
cur = self.root
for w in word:
cur = cur.children[w]
cur.num = num
def getSum(self,word):
cur = self.root
for w in word:
cur = cur.children[w]
return self.getNum(cur)
def getNum(self,cur):
res = cur.num
for child in cur.children:
res += self.getNum(cur.children[child])
return res
class MapSum:
def __init__(self):
"""
Initialize your data structure here.
"""
self.tree = Trie()
def insert(self, key: str, val: int) -> None:
self.tree.insert(key,val)
def sum(self, prefix: str) -> int:
return self.tree.getSum(prefix)
# Your MapSum object will be instantiated and called as such:
# obj = MapSum()
# obj.insert(key,val)
# param_2 = obj.sum(prefix)
标签:
OJ
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)