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)
    
  • 相关阅读:
    weblogic weak_password 复现
    redis 4-unacc 复现
    Django debug page XSS漏洞(CVE-2017-12794)复现
    (CVE-2016-4437)Apache Shiro <=1.2.4 反序列化漏洞复现
    Apache SSI 远程命令执行漏洞复现
    Apache HTTPD 未知后缀解析漏洞复现
    s2-005复现
    05 跨站请求伪造漏洞CSRF
    安全大面
    JAVA基础学习day03--流程控制语句
  • 原文地址:https://www.cnblogs.com/hellojamest/p/12269073.html
Copyright © 2011-2022 走看看