zoukankan      html  css  js  c++  java
  • [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)
    
  • 相关阅读:
    iaf——接口自动化测试框架
    性能优化系列
    MVC架构简介及其测试策略
    10种常见的软件架构模式
    软件开发框架分析和架构模式
    安全测试基础&安全测试---AppScan扫描工具
    WEB安全测试要点总结
    大数据Hadoop Hive HBase Spark Storm
    第三方授权方式1
    java-weixin-tools接入微信
  • 原文地址:https://www.cnblogs.com/hellojamest/p/12269073.html
Copyright © 2011-2022 走看看