{ "data": { "question": { "questionId": "2778", "questionFrontendId": "2671", "categoryTitle": "Algorithms", "boundTopicId": 2256129, "title": "Frequency Tracker", "titleSlug": "frequency-tracker", "content": "

Design a data structure that keeps track of the values in it and answers some queries regarding their frequencies.

\n\n

Implement the FrequencyTracker class.

\n\n\n\n

 

\n

Example 1:

\n\n
\nInput\n["FrequencyTracker", "add", "add", "hasFrequency"]\n[[], [3], [3], [2]]\nOutput\n[null, null, null, true]\n\nExplanation\nFrequencyTracker frequencyTracker = new FrequencyTracker();\nfrequencyTracker.add(3); // The data structure now contains [3]\nfrequencyTracker.add(3); // The data structure now contains [3, 3]\nfrequencyTracker.hasFrequency(2); // Returns true, because 3 occurs twice\n\n
\n\n

Example 2:

\n\n
\nInput\n["FrequencyTracker", "add", "deleteOne", "hasFrequency"]\n[[], [1], [1], [1]]\nOutput\n[null, null, null, false]\n\nExplanation\nFrequencyTracker frequencyTracker = new FrequencyTracker();\nfrequencyTracker.add(1); // The data structure now contains [1]\nfrequencyTracker.deleteOne(1); // The data structure becomes empty []\nfrequencyTracker.hasFrequency(1); // Returns false, because the data structure is empty\n\n
\n\n

Example 3:

\n\n
\nInput\n["FrequencyTracker", "hasFrequency", "add", "hasFrequency"]\n[[], [2], [3], [1]]\nOutput\n[null, false, null, true]\n\nExplanation\nFrequencyTracker frequencyTracker = new FrequencyTracker();\nfrequencyTracker.hasFrequency(2); // Returns false, because the data structure is empty\nfrequencyTracker.add(3); // The data structure now contains [3]\nfrequencyTracker.hasFrequency(1); // Returns true, because 3 occurs once\n\n
\n\n

 

\n

Constraints:

\n\n\n", "translatedTitle": "频率跟踪器", "translatedContent": "

请你设计并实现一个能够对其中的值进行跟踪的数据结构,并支持对频率相关查询进行应答。

\n\n

实现 FrequencyTracker 类:

\n\n\n\n

 

\n\n

示例 1:

\n\n
\n输入\n[\"FrequencyTracker\", \"add\", \"add\", \"hasFrequency\"]\n[[], [3], [3], [2]]\n输出\n[null, null, null, true]\n\n解释\nFrequencyTracker frequencyTracker = new FrequencyTracker();\nfrequencyTracker.add(3); // 数据结构现在包含 [3]\nfrequencyTracker.add(3); // 数据结构现在包含 [3, 3]\nfrequencyTracker.hasFrequency(2); // 返回 true ,因为 3 出现 2 次\n
\n\n

示例 2:

\n\n
\n输入\n[\"FrequencyTracker\", \"add\", \"deleteOne\", \"hasFrequency\"]\n[[], [1], [1], [1]]\n输出\n[null, null, null, false]\n\n解释\nFrequencyTracker frequencyTracker = new FrequencyTracker();\nfrequencyTracker.add(1); // 数据结构现在包含 [1]\nfrequencyTracker.deleteOne(1); // 数据结构现在为空 []\nfrequencyTracker.hasFrequency(1); // 返回 false ,因为数据结构为空\n
\n\n

示例 3:

\n\n
\n输入\n[\"FrequencyTracker\", \"hasFrequency\", \"add\", \"hasFrequency\"]\n[[], [2], [3], [1]]\n输出\n[null, false, null, true]\n\n解释\nFrequencyTracker frequencyTracker = new FrequencyTracker();\nfrequencyTracker.hasFrequency(2); // 返回 false ,因为数据结构为空\nfrequencyTracker.add(3); // 数据结构现在包含 [3]\nfrequencyTracker.hasFrequency(1); // 返回 true ,因为 3 出现 1 次\n
\n\n

 

\n\n

提示:

\n\n\n", "isPaidOnly": false, "difficulty": "Medium", "likes": 4, "dislikes": 0, "isLiked": null, "similarQuestions": "[]", "contributors": [], "langToValidPlayground": "{\"cpp\": false, \"java\": false, \"python\": false, \"python3\": false, \"mysql\": false, \"mssql\": false, \"oraclesql\": false, \"c\": false, \"csharp\": false, \"javascript\": false, \"ruby\": false, \"bash\": false, \"swift\": false, \"golang\": false, \"scala\": false, \"html\": false, \"pythonml\": false, \"kotlin\": false, \"rust\": false, \"php\": false, \"typescript\": false, \"racket\": false, \"erlang\": false, \"elixir\": false, \"dart\": false}", "topicTags": [ { "name": "Design", "slug": "design", "translatedName": "设计", "__typename": "TopicTagNode" }, { "name": "Hash Table", "slug": "hash-table", "translatedName": "哈希表", "__typename": "TopicTagNode" } ], "companyTagStats": null, "codeSnippets": [ { "lang": "C++", "langSlug": "cpp", "code": "class FrequencyTracker {\npublic:\n FrequencyTracker() {\n\n }\n \n void add(int number) {\n\n }\n \n void deleteOne(int number) {\n\n }\n \n bool hasFrequency(int frequency) {\n\n }\n};\n\n/**\n * Your FrequencyTracker object will be instantiated and called as such:\n * FrequencyTracker* obj = new FrequencyTracker();\n * obj->add(number);\n * obj->deleteOne(number);\n * bool param_3 = obj->hasFrequency(frequency);\n */", "__typename": "CodeSnippetNode" }, { "lang": "Java", "langSlug": "java", "code": "class FrequencyTracker {\n\n public FrequencyTracker() {\n\n }\n \n public void add(int number) {\n\n }\n \n public void deleteOne(int number) {\n\n }\n \n public boolean hasFrequency(int frequency) {\n\n }\n}\n\n/**\n * Your FrequencyTracker object will be instantiated and called as such:\n * FrequencyTracker obj = new FrequencyTracker();\n * obj.add(number);\n * obj.deleteOne(number);\n * boolean param_3 = obj.hasFrequency(frequency);\n */", "__typename": "CodeSnippetNode" }, { "lang": "Python", "langSlug": "python", "code": "class FrequencyTracker(object):\n\n def __init__(self):\n\n\n def add(self, number):\n \"\"\"\n :type number: int\n :rtype: None\n \"\"\"\n\n\n def deleteOne(self, number):\n \"\"\"\n :type number: int\n :rtype: None\n \"\"\"\n\n\n def hasFrequency(self, frequency):\n \"\"\"\n :type frequency: int\n :rtype: bool\n \"\"\"\n\n\n\n# Your FrequencyTracker object will be instantiated and called as such:\n# obj = FrequencyTracker()\n# obj.add(number)\n# obj.deleteOne(number)\n# param_3 = obj.hasFrequency(frequency)", "__typename": "CodeSnippetNode" }, { "lang": "Python3", "langSlug": "python3", "code": "class FrequencyTracker:\n\n def __init__(self):\n\n\n def add(self, number: int) -> None:\n\n\n def deleteOne(self, number: int) -> None:\n\n\n def hasFrequency(self, frequency: int) -> bool:\n\n\n\n# Your FrequencyTracker object will be instantiated and called as such:\n# obj = FrequencyTracker()\n# obj.add(number)\n# obj.deleteOne(number)\n# param_3 = obj.hasFrequency(frequency)", "__typename": "CodeSnippetNode" }, { "lang": "C", "langSlug": "c", "code": "\n\n\ntypedef struct {\n\n} FrequencyTracker;\n\n\nFrequencyTracker* frequencyTrackerCreate() {\n\n}\n\nvoid frequencyTrackerAdd(FrequencyTracker* obj, int number) {\n\n}\n\nvoid frequencyTrackerDeleteOne(FrequencyTracker* obj, int number) {\n\n}\n\nbool frequencyTrackerHasFrequency(FrequencyTracker* obj, int frequency) {\n\n}\n\nvoid frequencyTrackerFree(FrequencyTracker* obj) {\n\n}\n\n/**\n * Your FrequencyTracker struct will be instantiated and called as such:\n * FrequencyTracker* obj = frequencyTrackerCreate();\n * frequencyTrackerAdd(obj, number);\n \n * frequencyTrackerDeleteOne(obj, number);\n \n * bool param_3 = frequencyTrackerHasFrequency(obj, frequency);\n \n * frequencyTrackerFree(obj);\n*/", "__typename": "CodeSnippetNode" }, { "lang": "C#", "langSlug": "csharp", "code": "public class FrequencyTracker {\n\n public FrequencyTracker() {\n\n }\n \n public void Add(int number) {\n\n }\n \n public void DeleteOne(int number) {\n\n }\n \n public bool HasFrequency(int frequency) {\n\n }\n}\n\n/**\n * Your FrequencyTracker object will be instantiated and called as such:\n * FrequencyTracker obj = new FrequencyTracker();\n * obj.Add(number);\n * obj.DeleteOne(number);\n * bool param_3 = obj.HasFrequency(frequency);\n */", "__typename": "CodeSnippetNode" }, { "lang": "JavaScript", "langSlug": "javascript", "code": "\nvar FrequencyTracker = function() {\n\n};\n\n/** \n * @param {number} number\n * @return {void}\n */\nFrequencyTracker.prototype.add = function(number) {\n\n};\n\n/** \n * @param {number} number\n * @return {void}\n */\nFrequencyTracker.prototype.deleteOne = function(number) {\n\n};\n\n/** \n * @param {number} frequency\n * @return {boolean}\n */\nFrequencyTracker.prototype.hasFrequency = function(frequency) {\n\n};\n\n/**\n * Your FrequencyTracker object will be instantiated and called as such:\n * var obj = new FrequencyTracker()\n * obj.add(number)\n * obj.deleteOne(number)\n * var param_3 = obj.hasFrequency(frequency)\n */", "__typename": "CodeSnippetNode" }, { "lang": "Ruby", "langSlug": "ruby", "code": "class FrequencyTracker\n def initialize()\n\n end\n\n\n=begin\n :type number: Integer\n :rtype: Void\n=end\n def add(number)\n\n end\n\n\n=begin\n :type number: Integer\n :rtype: Void\n=end\n def delete_one(number)\n\n end\n\n\n=begin\n :type frequency: Integer\n :rtype: Boolean\n=end\n def has_frequency(frequency)\n\n end\n\n\nend\n\n# Your FrequencyTracker object will be instantiated and called as such:\n# obj = FrequencyTracker.new()\n# obj.add(number)\n# obj.delete_one(number)\n# param_3 = obj.has_frequency(frequency)", "__typename": "CodeSnippetNode" }, { "lang": "Swift", "langSlug": "swift", "code": "\nclass FrequencyTracker {\n\n init() {\n\n }\n \n func add(_ number: Int) {\n\n }\n \n func deleteOne(_ number: Int) {\n\n }\n \n func hasFrequency(_ frequency: Int) -> Bool {\n\n }\n}\n\n/**\n * Your FrequencyTracker object will be instantiated and called as such:\n * let obj = FrequencyTracker()\n * obj.add(number)\n * obj.deleteOne(number)\n * let ret_3: Bool = obj.hasFrequency(frequency)\n */", "__typename": "CodeSnippetNode" }, { "lang": "Go", "langSlug": "golang", "code": "type FrequencyTracker struct {\n\n}\n\n\nfunc Constructor() FrequencyTracker {\n\n}\n\n\nfunc (this *FrequencyTracker) Add(number int) {\n\n}\n\n\nfunc (this *FrequencyTracker) DeleteOne(number int) {\n\n}\n\n\nfunc (this *FrequencyTracker) HasFrequency(frequency int) bool {\n\n}\n\n\n/**\n * Your FrequencyTracker object will be instantiated and called as such:\n * obj := Constructor();\n * obj.Add(number);\n * obj.DeleteOne(number);\n * param_3 := obj.HasFrequency(frequency);\n */", "__typename": "CodeSnippetNode" }, { "lang": "Scala", "langSlug": "scala", "code": "class FrequencyTracker() {\n\n def add(number: Int) {\n\n }\n\n def deleteOne(number: Int) {\n\n }\n\n def hasFrequency(frequency: Int): Boolean = {\n\n }\n\n}\n\n/**\n * Your FrequencyTracker object will be instantiated and called as such:\n * var obj = new FrequencyTracker()\n * obj.add(number)\n * obj.deleteOne(number)\n * var param_3 = obj.hasFrequency(frequency)\n */", "__typename": "CodeSnippetNode" }, { "lang": "Kotlin", "langSlug": "kotlin", "code": "class FrequencyTracker() {\n\n fun add(number: Int) {\n\n }\n\n fun deleteOne(number: Int) {\n\n }\n\n fun hasFrequency(frequency: Int): Boolean {\n\n }\n\n}\n\n/**\n * Your FrequencyTracker object will be instantiated and called as such:\n * var obj = FrequencyTracker()\n * obj.add(number)\n * obj.deleteOne(number)\n * var param_3 = obj.hasFrequency(frequency)\n */", "__typename": "CodeSnippetNode" }, { "lang": "Rust", "langSlug": "rust", "code": "struct FrequencyTracker {\n\n}\n\n\n/**\n * `&self` means the method takes an immutable reference.\n * If you need a mutable reference, change it to `&mut self` instead.\n */\nimpl FrequencyTracker {\n\n fn new() -> Self {\n\n }\n \n fn add(&self, number: i32) {\n\n }\n \n fn delete_one(&self, number: i32) {\n\n }\n \n fn has_frequency(&self, frequency: i32) -> bool {\n\n }\n}\n\n/**\n * Your FrequencyTracker object will be instantiated and called as such:\n * let obj = FrequencyTracker::new();\n * obj.add(number);\n * obj.delete_one(number);\n * let ret_3: bool = obj.has_frequency(frequency);\n */", "__typename": "CodeSnippetNode" }, { "lang": "PHP", "langSlug": "php", "code": "class FrequencyTracker {\n /**\n */\n function __construct() {\n\n }\n\n /**\n * @param Integer $number\n * @return NULL\n */\n function add($number) {\n\n }\n\n /**\n * @param Integer $number\n * @return NULL\n */\n function deleteOne($number) {\n\n }\n\n /**\n * @param Integer $frequency\n * @return Boolean\n */\n function hasFrequency($frequency) {\n\n }\n}\n\n/**\n * Your FrequencyTracker object will be instantiated and called as such:\n * $obj = FrequencyTracker();\n * $obj->add($number);\n * $obj->deleteOne($number);\n * $ret_3 = $obj->hasFrequency($frequency);\n */", "__typename": "CodeSnippetNode" }, { "lang": "TypeScript", "langSlug": "typescript", "code": "class FrequencyTracker {\n constructor() {\n\n }\n\n add(number: number): void {\n\n }\n\n deleteOne(number: number): void {\n\n }\n\n hasFrequency(frequency: number): boolean {\n\n }\n}\n\n/**\n * Your FrequencyTracker object will be instantiated and called as such:\n * var obj = new FrequencyTracker()\n * obj.add(number)\n * obj.deleteOne(number)\n * var param_3 = obj.hasFrequency(frequency)\n */", "__typename": "CodeSnippetNode" }, { "lang": "Racket", "langSlug": "racket", "code": "(define frequency-tracker%\n (class object%\n (super-new)\n \n (init-field)\n \n ; add : exact-integer? -> void?\n (define/public (add number)\n\n )\n ; delete-one : exact-integer? -> void?\n (define/public (delete-one number)\n\n )\n ; has-frequency : exact-integer? -> boolean?\n (define/public (has-frequency frequency)\n\n )))\n\n;; Your frequency-tracker% object will be instantiated and called as such:\n;; (define obj (new frequency-tracker%))\n;; (send obj add number)\n;; (send obj delete-one number)\n;; (define param_3 (send obj has-frequency frequency))", "__typename": "CodeSnippetNode" }, { "lang": "Erlang", "langSlug": "erlang", "code": "-spec frequency_tracker_init_() -> any().\nfrequency_tracker_init_() ->\n .\n\n-spec frequency_tracker_add(Number :: integer()) -> any().\nfrequency_tracker_add(Number) ->\n .\n\n-spec frequency_tracker_delete_one(Number :: integer()) -> any().\nfrequency_tracker_delete_one(Number) ->\n .\n\n-spec frequency_tracker_has_frequency(Frequency :: integer()) -> boolean().\nfrequency_tracker_has_frequency(Frequency) ->\n .\n\n\n%% Your functions will be called as such:\n%% frequency_tracker_init_(),\n%% frequency_tracker_add(Number),\n%% frequency_tracker_delete_one(Number),\n%% Param_3 = frequency_tracker_has_frequency(Frequency),\n\n%% frequency_tracker_init_ will be called before every test case, in which you can do some necessary initializations.", "__typename": "CodeSnippetNode" }, { "lang": "Elixir", "langSlug": "elixir", "code": "defmodule FrequencyTracker do\n @spec init_() :: any\n def init_() do\n\n end\n\n @spec add(number :: integer) :: any\n def add(number) do\n\n end\n\n @spec delete_one(number :: integer) :: any\n def delete_one(number) do\n\n end\n\n @spec has_frequency(frequency :: integer) :: boolean\n def has_frequency(frequency) do\n\n end\nend\n\n# Your functions will be called as such:\n# FrequencyTracker.init_()\n# FrequencyTracker.add(number)\n# FrequencyTracker.delete_one(number)\n# param_3 = FrequencyTracker.has_frequency(frequency)\n\n# FrequencyTracker.init_ will be called before every test case, in which you can do some necessary initializations.", "__typename": "CodeSnippetNode" }, { "lang": "Dart", "langSlug": "dart", "code": "class FrequencyTracker {\n\n FrequencyTracker() {\n\n }\n \n void add(int number) {\n\n }\n \n void deleteOne(int number) {\n\n }\n \n bool hasFrequency(int frequency) {\n\n }\n}\n\n/**\n * Your FrequencyTracker object will be instantiated and called as such:\n * FrequencyTracker obj = FrequencyTracker();\n * obj.add(number);\n * obj.deleteOne(number);\n * bool param3 = obj.hasFrequency(frequency);\n */", "__typename": "CodeSnippetNode" } ], "stats": "{\"totalAccepted\": \"4.9K\", \"totalSubmission\": \"15.4K\", \"totalAcceptedRaw\": 4948, \"totalSubmissionRaw\": 15435, \"acRate\": \"32.1%\"}", "hints": [ "Put all the numbers in a hash map (or just an integer array given the number range is small) to maintain each number’s frequency dynamically.", "Put each frequency in another hash map (or just an integer array given the range is small, note there are only 200000 calls in total) to maintain each kind of frequency dynamically.", "Keep the 2 hash maps in sync." ], "solution": null, "status": null, "sampleTestCase": "[\"FrequencyTracker\",\"add\",\"add\",\"hasFrequency\"]\n[[],[3],[3],[2]]", "metaData": "{\n \"classname\": \"FrequencyTracker\",\n \"constructor\": {\n \"params\": []\n },\n \"methods\": [\n {\n \"params\": [\n {\n \"type\": \"integer\",\n \"name\": \"number\"\n }\n ],\n \"name\": \"add\",\n \"return\": {\n \"type\": \"void\"\n }\n },\n {\n \"params\": [\n {\n \"type\": \"integer\",\n \"name\": \"number\"\n }\n ],\n \"name\": \"deleteOne\",\n \"return\": {\n \"type\": \"void\"\n }\n },\n {\n \"params\": [\n {\n \"type\": \"integer\",\n \"name\": \"frequency\"\n }\n ],\n \"name\": \"hasFrequency\",\n \"return\": {\n \"type\": \"boolean\"\n }\n }\n ],\n \"return\": {\n \"type\": \"boolean\"\n },\n \"systemdesign\": true\n}", "judgerAvailable": true, "judgeType": "large", "mysqlSchemas": [], "enableRunCode": true, "envInfo": "{\"cpp\":[\"C++\",\"

\\u7248\\u672c\\uff1aclang 11<\\/code> \\u91c7\\u7528\\u6700\\u65b0C++ 17\\u6807\\u51c6\\u3002<\\/p>\\r\\n\\r\\n

\\u7f16\\u8bd1\\u65f6\\uff0c\\u5c06\\u4f1a\\u91c7\\u7528-O2<\\/code>\\u7ea7\\u4f18\\u5316\\u3002AddressSanitizer<\\/a> \\u4e5f\\u88ab\\u5f00\\u542f\\u6765\\u68c0\\u6d4bout-of-bounds<\\/code>\\u548cuse-after-free<\\/code>\\u9519\\u8bef\\u3002<\\/p>\\r\\n\\r\\n

\\u4e3a\\u4e86\\u4f7f\\u7528\\u65b9\\u4fbf\\uff0c\\u5927\\u90e8\\u5206\\u6807\\u51c6\\u5e93\\u7684\\u5934\\u6587\\u4ef6\\u5df2\\u7ecf\\u88ab\\u81ea\\u52a8\\u5bfc\\u5165\\u3002<\\/p>\"],\"java\":[\"Java\",\"

\\u7248\\u672c\\uff1aOpenJDK 17<\\/code>\\u3002\\u53ef\\u4ee5\\u4f7f\\u7528Java 8\\u7684\\u7279\\u6027\\u4f8b\\u5982\\uff0clambda expressions \\u548c stream API\\u3002<\\/p>\\r\\n\\r\\n

\\u4e3a\\u4e86\\u65b9\\u4fbf\\u8d77\\u89c1\\uff0c\\u5927\\u90e8\\u5206\\u6807\\u51c6\\u5e93\\u7684\\u5934\\u6587\\u4ef6\\u5df2\\u88ab\\u5bfc\\u5165\\u3002<\\/p>\\r\\n\\r\\n

\\u5305\\u542b Pair \\u7c7b: https:\\/\\/docs.oracle.com\\/javase\\/8\\/javafx\\/api\\/javafx\\/util\\/Pair.html <\\/p>\"],\"python\":[\"Python\",\"

\\u7248\\u672c\\uff1a Python 2.7.12<\\/code><\\/p>\\r\\n\\r\\n

\\u4e3a\\u4e86\\u65b9\\u4fbf\\u8d77\\u89c1\\uff0c\\u5927\\u90e8\\u5206\\u5e38\\u7528\\u5e93\\u5df2\\u7ecf\\u88ab\\u81ea\\u52a8 \\u5bfc\\u5165\\uff0c\\u5982\\uff1aarray<\\/a>, bisect<\\/a>, collections<\\/a>\\u3002\\u5982\\u679c\\u60a8\\u9700\\u8981\\u4f7f\\u7528\\u5176\\u4ed6\\u5e93\\u51fd\\u6570\\uff0c\\u8bf7\\u81ea\\u884c\\u5bfc\\u5165\\u3002<\\/p>\\r\\n\\r\\n

\\u6ce8\\u610f Python 2.7 \\u5c06\\u57282020\\u5e74\\u540e\\u4e0d\\u518d\\u7ef4\\u62a4<\\/a>\\u3002 \\u5982\\u60f3\\u4f7f\\u7528\\u6700\\u65b0\\u7248\\u7684Python\\uff0c\\u8bf7\\u9009\\u62e9Python 3\\u3002<\\/p>\"],\"c\":[\"C\",\"

\\u7248\\u672c\\uff1aGCC 8.2<\\/code>\\uff0c\\u91c7\\u7528GNU11\\u6807\\u51c6\\u3002<\\/p>\\r\\n\\r\\n

\\u7f16\\u8bd1\\u65f6\\uff0c\\u5c06\\u4f1a\\u91c7\\u7528-O1<\\/code>\\u7ea7\\u4f18\\u5316\\u3002 AddressSanitizer<\\/a>\\u4e5f\\u88ab\\u5f00\\u542f\\u6765\\u68c0\\u6d4bout-of-bounds<\\/code>\\u548cuse-after-free<\\/code>\\u9519\\u8bef\\u3002<\\/p>\\r\\n\\r\\n

\\u4e3a\\u4e86\\u4f7f\\u7528\\u65b9\\u4fbf\\uff0c\\u5927\\u90e8\\u5206\\u6807\\u51c6\\u5e93\\u7684\\u5934\\u6587\\u4ef6\\u5df2\\u7ecf\\u88ab\\u81ea\\u52a8\\u5bfc\\u5165\\u3002<\\/p>\\r\\n\\r\\n

\\u5982\\u60f3\\u4f7f\\u7528\\u54c8\\u5e0c\\u8868\\u8fd0\\u7b97, \\u60a8\\u53ef\\u4ee5\\u4f7f\\u7528 uthash<\\/a>\\u3002 \\\"uthash.h\\\"\\u5df2\\u7ecf\\u9ed8\\u8ba4\\u88ab\\u5bfc\\u5165\\u3002\\u8bf7\\u770b\\u5982\\u4e0b\\u793a\\u4f8b:<\\/p>\\r\\n\\r\\n

1. \\u5f80\\u54c8\\u5e0c\\u8868\\u4e2d\\u6dfb\\u52a0\\u4e00\\u4e2a\\u5bf9\\u8c61\\uff1a<\\/b>\\r\\n

\\r\\nstruct hash_entry {\\r\\n    int id;            \\/* we'll use this field as the key *\\/\\r\\n    char name[10];\\r\\n    UT_hash_handle hh; \\/* makes this structure hashable *\\/\\r\\n};\\r\\n\\r\\nstruct hash_entry *users = NULL;\\r\\n\\r\\nvoid add_user(struct hash_entry *s) {\\r\\n    HASH_ADD_INT(users, id, s);\\r\\n}\\r\\n<\\/pre>\\r\\n<\\/p>\\r\\n\\r\\n

2. \\u5728\\u54c8\\u5e0c\\u8868\\u4e2d\\u67e5\\u627e\\u4e00\\u4e2a\\u5bf9\\u8c61\\uff1a<\\/b>\\r\\n

\\r\\nstruct hash_entry *find_user(int user_id) {\\r\\n    struct hash_entry *s;\\r\\n    HASH_FIND_INT(users, &user_id, s);\\r\\n    return s;\\r\\n}\\r\\n<\\/pre>\\r\\n<\\/p>\\r\\n\\r\\n

3. \\u4ece\\u54c8\\u5e0c\\u8868\\u4e2d\\u5220\\u9664\\u4e00\\u4e2a\\u5bf9\\u8c61\\uff1a<\\/b>\\r\\n

\\r\\nvoid delete_user(struct hash_entry *user) {\\r\\n    HASH_DEL(users, user);  \\r\\n}\\r\\n<\\/pre>\\r\\n<\\/p>\"],\"csharp\":[\"C#\",\"

C# 10<\\/a> \\u8fd0\\u884c\\u5728 .NET 6 \\u4e0a<\\/p>\"],\"javascript\":[\"JavaScript\",\"

\\u7248\\u672c\\uff1aNode.js 16.13.2<\\/code><\\/p>\\r\\n\\r\\n

\\u60a8\\u7684\\u4ee3\\u7801\\u5728\\u6267\\u884c\\u65f6\\u5c06\\u5e26\\u4e0a --harmony<\\/code> \\u6807\\u8bb0\\u6765\\u5f00\\u542f \\u65b0\\u7248ES6\\u7279\\u6027<\\/a>\\u3002<\\/p>\\r\\n\\r\\n

lodash.js<\\/a> \\u5e93\\u5df2\\u7ecf\\u9ed8\\u8ba4\\u88ab\\u5305\\u542b\\u3002<\\/p>\\r\\n\\r\\n

\\u5982\\u9700\\u4f7f\\u7528\\u961f\\u5217\\/\\u4f18\\u5148\\u961f\\u5217\\uff0c\\u60a8\\u53ef\\u4f7f\\u7528 datastructures-js\\/priority-queue@5.3.0<\\/a> \\u548c datastructures-js\\/queue@4.2.1<\\/a>\\u3002<\\/p>\"],\"ruby\":[\"Ruby\",\"

\\u4f7f\\u7528Ruby 3.1<\\/code>\\u6267\\u884c<\\/p>\\r\\n\\r\\n

\\u4e00\\u4e9b\\u5e38\\u7528\\u7684\\u6570\\u636e\\u7ed3\\u6784\\u5df2\\u5728 Algorithms \\u6a21\\u5757\\u4e2d\\u63d0\\u4f9b\\uff1ahttps:\\/\\/www.rubydoc.info\\/github\\/kanwei\\/algorithms\\/Algorithms<\\/p>\"],\"swift\":[\"Swift\",\"

\\u7248\\u672c\\uff1aSwift 5.5.2<\\/code><\\/p>\\r\\n\\r\\n

\\u6211\\u4eec\\u901a\\u5e38\\u4fdd\\u8bc1\\u66f4\\u65b0\\u5230 Apple\\u653e\\u51fa\\u7684\\u6700\\u65b0\\u7248Swift<\\/a>\\u3002\\u5982\\u679c\\u60a8\\u53d1\\u73b0Swift\\u4e0d\\u662f\\u6700\\u65b0\\u7248\\u7684\\uff0c\\u8bf7\\u8054\\u7cfb\\u6211\\u4eec\\uff01\\u6211\\u4eec\\u5c06\\u5c3d\\u5feb\\u66f4\\u65b0\\u3002<\\/p>\"],\"golang\":[\"Go\",\"

\\u7248\\u672c\\uff1aGo 1.18<\\/code><\\/p>\\r\\n\\r\\n

\\u652f\\u6301 https:\\/\\/godoc.org\\/github.com\\/emirpasic\\/gods@v1.18.1<\\/a> \\u7b2c\\u4e09\\u65b9\\u5e93\\u3002<\\/p>\"],\"python3\":[\"Python3\",\"

\\u7248\\u672c\\uff1aPython 3.10<\\/code><\\/p>\\r\\n\\r\\n

\\u4e3a\\u4e86\\u65b9\\u4fbf\\u8d77\\u89c1\\uff0c\\u5927\\u90e8\\u5206\\u5e38\\u7528\\u5e93\\u5df2\\u7ecf\\u88ab\\u81ea\\u52a8 \\u5bfc\\u5165\\uff0c\\u5982array<\\/a>, bisect<\\/a>, collections<\\/a>\\u3002 \\u5982\\u679c\\u60a8\\u9700\\u8981\\u4f7f\\u7528\\u5176\\u4ed6\\u5e93\\u51fd\\u6570\\uff0c\\u8bf7\\u81ea\\u884c\\u5bfc\\u5165\\u3002<\\/p>\\r\\n\\r\\n

\\u5982\\u9700\\u4f7f\\u7528 Map\\/TreeMap \\u6570\\u636e\\u7ed3\\u6784\\uff0c\\u60a8\\u53ef\\u4f7f\\u7528 sortedcontainers<\\/a> \\u5e93\\u3002<\\/p>\"],\"scala\":[\"Scala\",\"

\\u7248\\u672c\\uff1aScala 2.13<\\/code><\\/p>\"],\"kotlin\":[\"Kotlin\",\"

\\u7248\\u672c\\uff1aKotlin 1.3.10<\\/code><\\/p>\"],\"rust\":[\"Rust\",\"

\\u7248\\u672c\\uff1arust 1.58.1<\\/code><\\/p>\\r\\n\\r\\n

\\u652f\\u6301 crates.io \\u7684 rand<\\/a><\\/p>\"],\"php\":[\"PHP\",\"

PHP 8.1<\\/code>.<\\/p>\\r\\n\\r\\n

With bcmath module.<\\/p>\"],\"typescript\":[\"TypeScript\",\"

TypeScript 4.5.4<\\/p>\\r\\n\\r\\n

Compile Options: --alwaysStrict --strictBindCallApply --strictFunctionTypes --target ES2020<\\/p>\\r\\n\\r\\n

lodash.js<\\/a> \\u5e93\\u5df2\\u7ecf\\u9ed8\\u8ba4\\u88ab\\u5305\\u542b\\u3002<\\/p>\\r\\n\\r\\n

\\u5982\\u9700\\u4f7f\\u7528\\u961f\\u5217\\/\\u4f18\\u5148\\u961f\\u5217\\uff0c\\u60a8\\u53ef\\u4f7f\\u7528 datastructures-js\\/priority-queue@5.3.0<\\/a> \\u548c datastructures-js\\/queue@4.2.1<\\/a>\\u3002<\\/p>\"],\"racket\":[\"Racket\",\"

Racket CS<\\/a> v8.3<\\/p>\\r\\n\\r\\n

\\u4f7f\\u7528 #lang racket<\\/p>\\r\\n\\r\\n

\\u5df2\\u9884\\u5148 (require data\\/gvector data\\/queue data\\/order data\\/heap). \\u82e5\\u9700\\u4f7f\\u7528\\u5176\\u5b83\\u6570\\u636e\\u7ed3\\u6784\\uff0c\\u53ef\\u81ea\\u884c require\\u3002<\\/p>\"],\"erlang\":[\"Erlang\",\"Erlang\\/OTP 24.2\"],\"elixir\":[\"Elixir\",\"Elixir 1.13.0 with Erlang\\/OTP 24.2\"],\"dart\":[\"Dart\",\"

Dart 2.17.3<\\/p>\\r\\n\\r\\n

\\u60a8\\u7684\\u4ee3\\u7801\\u5c06\\u4f1a\\u88ab\\u4e0d\\u7f16\\u8bd1\\u76f4\\u63a5\\u8fd0\\u884c<\\/p>\"]}", "book": null, "isSubscribed": false, "isDailyQuestion": false, "dailyRecordStatus": null, "editorType": "CKEDITOR", "ugcQuestionId": null, "style": "LEETCODE", "exampleTestcases": "[\"FrequencyTracker\",\"add\",\"add\",\"hasFrequency\"]\n[[],[3],[3],[2]]\n[\"FrequencyTracker\",\"add\",\"deleteOne\",\"hasFrequency\"]\n[[],[1],[1],[1]]\n[\"FrequencyTracker\",\"hasFrequency\",\"add\",\"hasFrequency\"]\n[[],[2],[3],[1]]", "__typename": "QuestionNode" } } }