LeetCode 677. Map Sum Pairs
来源:互联网 发布:深圳软件学校 编辑:程序博客网 时间:2024/06/03 12:27
一、问题描述
Implement a MapSum class with insert, and sum methods.
For the method insert, you’ll be given a pair of (string, integer). The string represents the key and the integer represents the value. If the key already existed, then the original key-value pair will be overridden to the new one.
For the method sum, you’ll be given a string representing the prefix, and you need to return the sum of all the pairs’ value whose key starts with the prefix.
Example 1:
Input: insert(“apple”, 3), Output: Null Input: sum(“ap”), Output: 3
Input: insert(“app”, 2), Output: Null Input: sum(“ap”), Output: 5
二、解题思路
在Hashmap中每个键值对应一个数,
插入一个键值对时:
如果key不存在,则将键值对存进Hashmap中,并且将key的所有前缀连同数值组成新的键值对存进Hashmap mem中;对于一个前缀,如果在mem中已经存在,那么只需在原数值上加上当前键值对的数值,如果前缀原先不存在于mem中,则直接赋为当前键值对的数值;
如果key存在,则key的新值会取代旧值,因此要在mem中更新与key有关的前缀的值
计算前缀对应的数值:
由于mem维护所有前缀对应的数值并在插入过程中一直保持更新,所以对只需取出mem中对应前缀的数值
三、Java代码
class MapSum { Map<String,Integer> mem; Map<String,Integer> set; /** Initialize your data structure here. */ public MapSum() { mem = new HashMap<>(); set = new HashMap<>(); } public void insert(String key, int val) { if (!set.containsKey(key)) { set.put(key,val); for (int i = 0; i <= key.length(); i++) { String sub = key.substring(0,i); mem.put(sub, mem.getOrDefault(sub,0) + val); } } else { int cnt = set.get(key); for (int i = 0; i <= key.length(); i++) { String sub = key.substring(0,i); mem.put(sub,mem.get(sub) - cnt + val); } } } public int sum(String prefix) { if (!mem.containsKey(prefix)) return 0; return mem.get(prefix); }};/** * Your MapSum object will be instantiated and called as such: * MapSum obj = new MapSum(); * obj.insert(key,val); * int param_2 = obj.sum(prefix); */
- leetcode 677. Map Sum Pairs
- leetcode 677. Map Sum Pairs
- leetcode 677. Map Sum Pairs
- LeetCode 677. Map Sum Pairs
- leetcode 677. Map Sum Pairs
- 677. Map Sum Pairs
- 677. Map Sum Pairs
- 677. Map Sum Pairs(JAVA)
- LWC 50:677. Map Sum Pairs
- LeetCode677. Map Sum Pairs
- Map Sum Pairs问题及解法
- 第14周Map Sum Pairs
- LeetCOde OJ Two Sum map应用
- LeetCode 1. Two Sum (c++ stl map)
- 未完成--Sum of Pairs
- [LeetCode]Palindrome Pairs
- LeetCode: Palindrome Pairs
- LeetCode 336. Palindrome Pairs
- bzoj2055 80人环游世界
- 同一Inputstream的父类和子类对象请维持最具体的子类对象,不要混合使用
- USB协议介绍[5]-设备请求
- SQL反模式(三)
- sdut1696
- LeetCode 677. Map Sum Pairs
- tensorflow gpu版本读取cifar10-binary出现类似卡死状态
- Java线程——(2)线程的管理(下)
- 斯坦福大学机器学习作业题Problem Set #1 Regression for denoising quasar spectra 上篇
- <在minecraft中创造一个寻宝游戏>-列表-频率
- 斯坦福大学机器学习作业题Problem Set #1 Regression for denoising quasar spectra 下篇
- Android-自定义播放器
- mongodb最详细的安装与配置
- Spring boot入门,整合mybatis开发案例