• LeetCode 677. 键值映射


    一个简单的Tire树模板题,存个档

     1 class MapSum {
     2 
     3 struct TrieNode {
     4     TrieNode* next[26];
     5     int val;
     6     TrieNode() {
     7         for(int i = 0; i < 26; i++) 
     8             this->next[i] = NULL;
     9         this->val = 0;
    10     }
    11 };
    12 
    13 public:
    14     MapSum() {
    15         root = new TrieNode();
    16     }
    17     
    18     void insert(string key, int val) {
    19         int delta = val;
    20         if(cnt.count(key))
    21             delta -= cnt[key];
    22         cnt[key] = val;
    23         TrieNode* node = root;
    24         for(auto c : key) {
    25             if(node->next[c - 'a'] == NULL)
    26                 node->next[c - 'a'] = new TrieNode();
    27             node = node->next[c - 'a'];
    28             node->val += delta;
    29         }
    30     }
    31     
    32     int sum(string prefix) {
    33         TrieNode* node = root;
    34         for(auto c : prefix) {
    35             if(node->next[c - 'a'] == NULL)
    36                 return 0;
    37             node = node->next[c-'a'];
    38         }
    39         return node->val;
    40     }
    41 private:
    42     unordered_map<string, int> cnt;
    43     TrieNode* root;
    44 };
  • 相关阅读:
    LeetCode20 有效的括号
    函数的多个参数
    定义一个函数的基本语法 函数的参数
    函数
    金字塔
    水仙花数
    百鸡百钱
    循环demo
    while适用于不确定循环次数
    浏览器打断点
  • 原文地址:https://www.cnblogs.com/wuenze/p/15551141.html
Copyright © 2020-2023  润新知