【LeetCode677】键值映射

简介: 方法一:暴力扫描。对哈希表进行增删查改,就是注意找到prefix开头的键key的操作就行。

一、题目

image.png

提示:


1 <= key.length, prefix.length <= 50

key 和 prefix 仅由小写英文字母组成

1 <= val <= 1000

最多调用 50 次 insert 和 sum

二、 方法一:暴力扫描

方法一:

暴力扫描。对哈希表进行增删查改,就是注意找到prefix开头的键key的操作就行。


三、代码

class MapSum {
private:
    unordered_map<string, int>mp;
public:
    MapSum() {
    }
    void insert(string key, int val) {
        mp[key] = val;
    }
    int sum(string prefix) {
        int ans = 0;
        for(auto &[key, val]: mp){
            //右下标为后一位
            if(key.substr(0, prefix.size()) == prefix){
                ans += val;
            }
        }
        return ans;
    }
};
/**
 * Your MapSum object will be instantiated and called as such:
 * MapSum* obj = new MapSum();
 * obj->insert(key,val);
 * int param_2 = obj->sum(prefix);
 */

四、方法二:字典树

方法二:字典树。


更新每个前缀prefix[i]值delta:


如果key不存在,则delta=val

如果key存在,则key对应的前缀值都增加val - cnt[key]

sum操作就直接在前缀树上搜索给定的前缀对应的值,如果给定的前缀不在前缀树中则返回0。

四、方法二:字典树
方法二:字典树。
更新每个前缀prefix[i]值delta:
如果key不存在,则delta=val
如果key存在,则key对应的前缀值都增加val - cnt[key]
sum操作就直接在前缀树上搜索给定的前缀对应的值,如果给定的前缀不在前缀树中则返回0。
————————————————
版权声明:本文为CSDN博主「山顶夕景」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_35812205/article/details/122693919
相关文章
|
26天前
|
算法 数据挖掘 开发者
LeetCode题目55:跳跃游戏【python5种算法贪心/回溯/动态规划/优化贪心/索引哈希映射 详解】
LeetCode题目55:跳跃游戏【python5种算法贪心/回溯/动态规划/优化贪心/索引哈希映射 详解】
|
人工智能 JavaScript 索引
LeetCode 1309. 解码字母到整数映射
给你一个字符串 s,它由数字('0' - '9')和 '#' 组成。我们希望按下述规则将 s 映射为一些小写英文字符
314 0
|
存储 Python Java
LeetCode 706:设计哈希映射 Design HashMap
题目: 不使用任何内建的哈希表库设计一个哈希映射 具体地说,你的设计应该包含以下的功能 put(key, value):向哈希映射中插入(键,值)的数值对。如果键对应的值已经存在,更新这个值。 get(key):返回给定的键所对应的值,如果映射中不包含这个键,返回-1。
1050 0
|
21天前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-2
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
21天前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-1
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
22天前
|
索引
【LeetCode刷题】二分查找:山脉数组的峰顶索引、寻找峰值
【LeetCode刷题】二分查找:山脉数组的峰顶索引、寻找峰值
|
22天前
|
算法
【LeetCode刷题】滑动窗口解决问题:串联所有单词的子串(困难)、最小覆盖子串(困难)
【LeetCode刷题】滑动窗口解决问题:串联所有单词的子串(困难)、最小覆盖子串(困难)
|
22天前
|
算法 容器
【LeetCode刷题】滑动窗口解决问题:水果成篮、找到字符串中所有字母异位词
【LeetCode刷题】滑动窗口解决问题:水果成篮、找到字符串中所有字母异位词
|
22天前
【LeetCode刷题】专题三:二分查找模板
【LeetCode刷题】专题三:二分查找模板
【LeetCode刷题】专题三:二分查找模板