1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-01-10 18:48:13 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
leetcode-problemset/leetcode-cn/originData/design-bitset.json
2023-12-09 19:57:46 +08:00

183 lines
39 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"data": {
"question": {
"questionId": "2285",
"questionFrontendId": "2166",
"categoryTitle": "Algorithms",
"boundTopicId": 1243456,
"title": "Design Bitset",
"titleSlug": "design-bitset",
"content": "<p>A <strong>Bitset</strong> is a data structure that compactly stores bits.</p>\n\n<p>Implement the <code>Bitset</code> class:</p>\n\n<ul>\n\t<li><code>Bitset(int size)</code> Initializes the Bitset with <code>size</code> bits, all of which are <code>0</code>.</li>\n\t<li><code>void fix(int idx)</code> Updates the value of the bit at the index <code>idx</code> to <code>1</code>. If the value was already <code>1</code>, no change occurs.</li>\n\t<li><code>void unfix(int idx)</code> Updates the value of the bit at the index <code>idx</code> to <code>0</code>. If the value was already <code>0</code>, no change occurs.</li>\n\t<li><code>void flip()</code> Flips the values of each bit in the Bitset. In other words, all bits with value <code>0</code> will now have value <code>1</code> and vice versa.</li>\n\t<li><code>boolean all()</code> Checks if the value of <strong>each</strong> bit in the Bitset is <code>1</code>. Returns <code>true</code> if it satisfies the condition, <code>false</code> otherwise.</li>\n\t<li><code>boolean one()</code> Checks if there is <strong>at least one</strong> bit in the Bitset with value <code>1</code>. Returns <code>true</code> if it satisfies the condition, <code>false</code> otherwise.</li>\n\t<li><code>int count()</code> Returns the <strong>total number</strong> of bits in the Bitset which have value <code>1</code>.</li>\n\t<li><code>String toString()</code> Returns the current composition of the Bitset. Note that in the resultant string, the character at the <code>i<sup>th</sup></code> index should coincide with the value at the <code>i<sup>th</sup></code> bit of the Bitset.</li>\n</ul>\n\n<p>&nbsp;</p>\n<p><strong class=\"example\">Example 1:</strong></p>\n\n<pre>\n<strong>Input</strong>\n[&quot;Bitset&quot;, &quot;fix&quot;, &quot;fix&quot;, &quot;flip&quot;, &quot;all&quot;, &quot;unfix&quot;, &quot;flip&quot;, &quot;one&quot;, &quot;unfix&quot;, &quot;count&quot;, &quot;toString&quot;]\n[[5], [3], [1], [], [], [0], [], [], [0], [], []]\n<strong>Output</strong>\n[null, null, null, null, false, null, null, true, null, 2, &quot;01010&quot;]\n\n<strong>Explanation</strong>\nBitset bs = new Bitset(5); // bitset = &quot;00000&quot;.\nbs.fix(3); // the value at idx = 3 is updated to 1, so bitset = &quot;00010&quot;.\nbs.fix(1); // the value at idx = 1 is updated to 1, so bitset = &quot;01010&quot;. \nbs.flip(); // the value of each bit is flipped, so bitset = &quot;10101&quot;. \nbs.all(); // return False, as not all values of the bitset are 1.\nbs.unfix(0); // the value at idx = 0 is updated to 0, so bitset = &quot;00101&quot;.\nbs.flip(); // the value of each bit is flipped, so bitset = &quot;11010&quot;. \nbs.one(); // return True, as there is at least 1 index with value 1.\nbs.unfix(0); // the value at idx = 0 is updated to 0, so bitset = &quot;01010&quot;.\nbs.count(); // return 2, as there are 2 bits with value 1.\nbs.toString(); // return &quot;01010&quot;, which is the composition of bitset.\n</pre>\n\n<p>&nbsp;</p>\n<p><strong>Constraints:</strong></p>\n\n<ul>\n\t<li><code>1 &lt;= size &lt;= 10<sup>5</sup></code></li>\n\t<li><code>0 &lt;= idx &lt;= size - 1</code></li>\n\t<li>At most <code>10<sup>5</sup></code> calls will be made <strong>in total</strong> to <code>fix</code>, <code>unfix</code>, <code>flip</code>, <code>all</code>, <code>one</code>, <code>count</code>, and <code>toString</code>.</li>\n\t<li>At least one call will be made to <code>all</code>, <code>one</code>, <code>count</code>, or <code>toString</code>.</li>\n\t<li>At most <code>5</code> calls will be made to <code>toString</code>.</li>\n</ul>\n",
"translatedTitle": "设计位集",
"translatedContent": "<p><strong>位集 Bitset</strong> 是一种能以紧凑形式存储位的数据结构。</p>\n\n<p>请你实现 <code>Bitset</code> 类。</p>\n\n<ul>\n\t<li><code>Bitset(int size)</code> 用 <code>size</code> 个位初始化 Bitset ,所有位都是 <code>0</code> 。</li>\n\t<li><code>void fix(int idx)</code> 将下标为 <code>idx</code> 的位上的值更新为 <code>1</code> 。如果值已经是 <code>1</code> ,则不会发生任何改变。</li>\n\t<li><code>void unfix(int idx)</code> 将下标为 <code>idx</code> 的位上的值更新为 <code>0</code> 。如果值已经是 <code>0</code> ,则不会发生任何改变。</li>\n\t<li><code>void flip()</code> 翻转 Bitset 中每一位上的值。换句话说,所有值为 <code>0</code> 的位将会变成 <code>1</code> ,反之亦然。</li>\n\t<li><code>boolean all()</code> 检查&nbsp;Bitset 中 <strong>每一位</strong> 的值是否都是 <code>1</code> 。如果满足此条件,返回 <code>true</code> ;否则,返回 <code>false</code> 。</li>\n\t<li><code>boolean one()</code> 检查&nbsp;Bitset 中 是否&nbsp;<strong>至少一位</strong> 的值是 <code>1</code> 。如果满足此条件,返回 <code>true</code> ;否则,返回 <code>false</code> 。</li>\n\t<li><code>int count()</code> 返回 Bitset 中值为 1 的位的 <strong>总数</strong> 。</li>\n\t<li><code>String toString()</code> 返回 Bitset 的当前组成情况。注意,在结果字符串中,第 <code>i</code> 个下标处的字符应该与 Bitset 中的第 <code>i</code> 位一致。</li>\n</ul>\n\n<p>&nbsp;</p>\n\n<p><strong>示例:</strong></p>\n\n<pre>\n<strong>输入</strong>\n[\"Bitset\", \"fix\", \"fix\", \"flip\", \"all\", \"unfix\", \"flip\", \"one\", \"unfix\", \"count\", \"toString\"]\n[[5], [3], [1], [], [], [0], [], [], [0], [], []]\n<strong>输出</strong>\n[null, null, null, null, false, null, null, true, null, 2, \"01010\"]\n\n<strong>解释</strong>\nBitset bs = new Bitset(5); // bitset = \"00000\".\nbs.fix(3); // 将 idx = 3 处的值更新为 1 ,此时 bitset = \"00010\" 。\nbs.fix(1); // 将 idx = 1 处的值更新为 1 ,此时 bitset = \"01010\" 。\nbs.flip(); // 翻转每一位上的值,此时 bitset = \"10101\" 。\nbs.all(); // 返回 False bitset 中的值不全为 1 。\nbs.unfix(0); // 将 idx = 0 处的值更新为 0 ,此时 bitset = \"00101\" 。\nbs.flip(); // 翻转每一位上的值,此时 bitset = \"11010\" 。\nbs.one(); // 返回 True ,至少存在一位的值为 1 。\nbs.unfix(0); // 将 idx = 0 处的值更新为 0 ,此时 bitset = \"01010\" 。\nbs.count(); // 返回 2 ,当前有 2 位的值为 1 。\nbs.toString(); // 返回 \"01010\" ,即 bitset 的当前组成情况。\n</pre>\n\n<p>&nbsp;</p>\n\n<p><strong>提示:</strong></p>\n\n<ul>\n\t<li><code>1 &lt;= size &lt;= 10<sup>5</sup></code></li>\n\t<li><code>0 &lt;= idx &lt;= size - 1</code></li>\n\t<li>至多调用&nbsp;<code>fix</code>、<code>unfix</code>、<code>flip</code>、<code>all</code>、<code>one</code>、<code>count</code> 和 <code>toString</code> 方法 <strong>总共</strong> <code>10<sup>5</sup></code> 次</li>\n\t<li>至少调用 <code>all</code>、<code>one</code>、<code>count</code> 或 <code>toString</code> 方法一次</li>\n\t<li>至多调用&nbsp;<code>toString</code> 方法 <code>5</code> 次</li>\n</ul>\n",
"isPaidOnly": false,
"difficulty": "Medium",
"likes": 35,
"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, \"typescript\": false, \"bash\": false, \"php\": false, \"swift\": false, \"kotlin\": false, \"dart\": false, \"golang\": false, \"ruby\": false, \"scala\": false, \"html\": false, \"pythonml\": false, \"rust\": false, \"racket\": false, \"erlang\": false, \"elixir\": false, \"pythondata\": false, \"react\": false, \"vanillajs\": false, \"postgresql\": false}",
"topicTags": [
{
"name": "Design",
"slug": "design",
"translatedName": "设计",
"__typename": "TopicTagNode"
},
{
"name": "Array",
"slug": "array",
"translatedName": "数组",
"__typename": "TopicTagNode"
},
{
"name": "Hash Table",
"slug": "hash-table",
"translatedName": "哈希表",
"__typename": "TopicTagNode"
}
],
"companyTagStats": null,
"codeSnippets": [
{
"lang": "C++",
"langSlug": "cpp",
"code": "class Bitset {\npublic:\n Bitset(int size) {\n\n }\n \n void fix(int idx) {\n\n }\n \n void unfix(int idx) {\n\n }\n \n void flip() {\n\n }\n \n bool all() {\n\n }\n \n bool one() {\n\n }\n \n int count() {\n\n }\n \n string toString() {\n\n }\n};\n\n/**\n * Your Bitset object will be instantiated and called as such:\n * Bitset* obj = new Bitset(size);\n * obj->fix(idx);\n * obj->unfix(idx);\n * obj->flip();\n * bool param_4 = obj->all();\n * bool param_5 = obj->one();\n * int param_6 = obj->count();\n * string param_7 = obj->toString();\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Java",
"langSlug": "java",
"code": "class Bitset {\n\n public Bitset(int size) {\n\n }\n \n public void fix(int idx) {\n\n }\n \n public void unfix(int idx) {\n\n }\n \n public void flip() {\n\n }\n \n public boolean all() {\n\n }\n \n public boolean one() {\n\n }\n \n public int count() {\n\n }\n \n public String toString() {\n\n }\n}\n\n/**\n * Your Bitset object will be instantiated and called as such:\n * Bitset obj = new Bitset(size);\n * obj.fix(idx);\n * obj.unfix(idx);\n * obj.flip();\n * boolean param_4 = obj.all();\n * boolean param_5 = obj.one();\n * int param_6 = obj.count();\n * String param_7 = obj.toString();\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Python",
"langSlug": "python",
"code": "class Bitset(object):\n\n def __init__(self, size):\n \"\"\"\n :type size: int\n \"\"\"\n\n\n def fix(self, idx):\n \"\"\"\n :type idx: int\n :rtype: None\n \"\"\"\n\n\n def unfix(self, idx):\n \"\"\"\n :type idx: int\n :rtype: None\n \"\"\"\n\n\n def flip(self):\n \"\"\"\n :rtype: None\n \"\"\"\n\n\n def all(self):\n \"\"\"\n :rtype: bool\n \"\"\"\n\n\n def one(self):\n \"\"\"\n :rtype: bool\n \"\"\"\n\n\n def count(self):\n \"\"\"\n :rtype: int\n \"\"\"\n\n\n def toString(self):\n \"\"\"\n :rtype: str\n \"\"\"\n\n\n\n# Your Bitset object will be instantiated and called as such:\n# obj = Bitset(size)\n# obj.fix(idx)\n# obj.unfix(idx)\n# obj.flip()\n# param_4 = obj.all()\n# param_5 = obj.one()\n# param_6 = obj.count()\n# param_7 = obj.toString()",
"__typename": "CodeSnippetNode"
},
{
"lang": "Python3",
"langSlug": "python3",
"code": "class Bitset:\n\n def __init__(self, size: int):\n\n\n def fix(self, idx: int) -> None:\n\n\n def unfix(self, idx: int) -> None:\n\n\n def flip(self) -> None:\n\n\n def all(self) -> bool:\n\n\n def one(self) -> bool:\n\n\n def count(self) -> int:\n\n\n def toString(self) -> str:\n\n\n\n# Your Bitset object will be instantiated and called as such:\n# obj = Bitset(size)\n# obj.fix(idx)\n# obj.unfix(idx)\n# obj.flip()\n# param_4 = obj.all()\n# param_5 = obj.one()\n# param_6 = obj.count()\n# param_7 = obj.toString()",
"__typename": "CodeSnippetNode"
},
{
"lang": "C",
"langSlug": "c",
"code": "\n\n\ntypedef struct {\n \n} Bitset;\n\n\nBitset* bitsetCreate(int size) {\n \n}\n\nvoid bitsetFix(Bitset* obj, int idx) {\n \n}\n\nvoid bitsetUnfix(Bitset* obj, int idx) {\n \n}\n\nvoid bitsetFlip(Bitset* obj) {\n \n}\n\nbool bitsetAll(Bitset* obj) {\n \n}\n\nbool bitsetOne(Bitset* obj) {\n \n}\n\nint bitsetCount(Bitset* obj) {\n \n}\n\nchar* bitsetToString(Bitset* obj) {\n \n}\n\nvoid bitsetFree(Bitset* obj) {\n \n}\n\n/**\n * Your Bitset struct will be instantiated and called as such:\n * Bitset* obj = bitsetCreate(size);\n * bitsetFix(obj, idx);\n \n * bitsetUnfix(obj, idx);\n \n * bitsetFlip(obj);\n \n * bool param_4 = bitsetAll(obj);\n \n * bool param_5 = bitsetOne(obj);\n \n * int param_6 = bitsetCount(obj);\n \n * char* param_7 = bitsetToString(obj);\n \n * bitsetFree(obj);\n*/",
"__typename": "CodeSnippetNode"
},
{
"lang": "C#",
"langSlug": "csharp",
"code": "public class Bitset {\n\n public Bitset(int size) {\n\n }\n \n public void Fix(int idx) {\n\n }\n \n public void Unfix(int idx) {\n\n }\n \n public void Flip() {\n\n }\n \n public bool All() {\n\n }\n \n public bool One() {\n\n }\n \n public int Count() {\n\n }\n \n public string ToString() {\n\n }\n}\n\n/**\n * Your Bitset object will be instantiated and called as such:\n * Bitset obj = new Bitset(size);\n * obj.Fix(idx);\n * obj.Unfix(idx);\n * obj.Flip();\n * bool param_4 = obj.All();\n * bool param_5 = obj.One();\n * int param_6 = obj.Count();\n * string param_7 = obj.ToString();\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "JavaScript",
"langSlug": "javascript",
"code": "/**\n * @param {number} size\n */\nvar Bitset = function(size) {\n\n};\n\n/** \n * @param {number} idx\n * @return {void}\n */\nBitset.prototype.fix = function(idx) {\n\n};\n\n/** \n * @param {number} idx\n * @return {void}\n */\nBitset.prototype.unfix = function(idx) {\n\n};\n\n/**\n * @return {void}\n */\nBitset.prototype.flip = function() {\n\n};\n\n/**\n * @return {boolean}\n */\nBitset.prototype.all = function() {\n\n};\n\n/**\n * @return {boolean}\n */\nBitset.prototype.one = function() {\n\n};\n\n/**\n * @return {number}\n */\nBitset.prototype.count = function() {\n\n};\n\n/**\n * @return {string}\n */\nBitset.prototype.toString = function() {\n\n};\n\n/**\n * Your Bitset object will be instantiated and called as such:\n * var obj = new Bitset(size)\n * obj.fix(idx)\n * obj.unfix(idx)\n * obj.flip()\n * var param_4 = obj.all()\n * var param_5 = obj.one()\n * var param_6 = obj.count()\n * var param_7 = obj.toString()\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "TypeScript",
"langSlug": "typescript",
"code": "class Bitset {\n constructor(size: number) {\n \n }\n\n fix(idx: number): void {\n \n }\n\n unfix(idx: number): void {\n \n }\n\n flip(): void {\n \n }\n\n all(): boolean {\n \n }\n\n one(): boolean {\n \n }\n\n count(): number {\n \n }\n\n toString(): string {\n \n }\n}\n\n/**\n * Your Bitset object will be instantiated and called as such:\n * var obj = new Bitset(size)\n * obj.fix(idx)\n * obj.unfix(idx)\n * obj.flip()\n * var param_4 = obj.all()\n * var param_5 = obj.one()\n * var param_6 = obj.count()\n * var param_7 = obj.toString()\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "PHP",
"langSlug": "php",
"code": "class Bitset {\n /**\n * @param Integer $size\n */\n function __construct($size) {\n\n }\n\n /**\n * @param Integer $idx\n * @return NULL\n */\n function fix($idx) {\n\n }\n\n /**\n * @param Integer $idx\n * @return NULL\n */\n function unfix($idx) {\n\n }\n\n /**\n * @return NULL\n */\n function flip() {\n\n }\n\n /**\n * @return Boolean\n */\n function all() {\n\n }\n\n /**\n * @return Boolean\n */\n function one() {\n\n }\n\n /**\n * @return Integer\n */\n function count() {\n\n }\n\n /**\n * @return String\n */\n function toString() {\n\n }\n}\n\n/**\n * Your Bitset object will be instantiated and called as such:\n * $obj = Bitset($size);\n * $obj->fix($idx);\n * $obj->unfix($idx);\n * $obj->flip();\n * $ret_4 = $obj->all();\n * $ret_5 = $obj->one();\n * $ret_6 = $obj->count();\n * $ret_7 = $obj->toString();\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Swift",
"langSlug": "swift",
"code": "\nclass Bitset {\n\n init(_ size: Int) {\n\n }\n \n func fix(_ idx: Int) {\n\n }\n \n func unfix(_ idx: Int) {\n\n }\n \n func flip() {\n\n }\n \n func all() -> Bool {\n\n }\n \n func one() -> Bool {\n\n }\n \n func count() -> Int {\n\n }\n \n func toString() -> String {\n\n }\n}\n\n/**\n * Your Bitset object will be instantiated and called as such:\n * let obj = Bitset(size)\n * obj.fix(idx)\n * obj.unfix(idx)\n * obj.flip()\n * let ret_4: Bool = obj.all()\n * let ret_5: Bool = obj.one()\n * let ret_6: Int = obj.count()\n * let ret_7: String = obj.toString()\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Kotlin",
"langSlug": "kotlin",
"code": "class Bitset(size: Int) {\n\n fun fix(idx: Int) {\n\n }\n\n fun unfix(idx: Int) {\n\n }\n\n fun flip() {\n\n }\n\n fun all(): Boolean {\n\n }\n\n fun one(): Boolean {\n\n }\n\n fun count(): Int {\n\n }\n\n fun toString(): String {\n\n }\n\n}\n\n/**\n * Your Bitset object will be instantiated and called as such:\n * var obj = Bitset(size)\n * obj.fix(idx)\n * obj.unfix(idx)\n * obj.flip()\n * var param_4 = obj.all()\n * var param_5 = obj.one()\n * var param_6 = obj.count()\n * var param_7 = obj.toString()\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Dart",
"langSlug": "dart",
"code": "class Bitset {\n\n Bitset(int size) {\n \n }\n \n void fix(int idx) {\n \n }\n \n void unfix(int idx) {\n \n }\n \n void flip() {\n \n }\n \n bool all() {\n \n }\n \n bool one() {\n \n }\n \n int count() {\n \n }\n \n String toString() {\n \n }\n}\n\n/**\n * Your Bitset object will be instantiated and called as such:\n * Bitset obj = Bitset(size);\n * obj.fix(idx);\n * obj.unfix(idx);\n * obj.flip();\n * bool param4 = obj.all();\n * bool param5 = obj.one();\n * int param6 = obj.count();\n * String param7 = obj.toString();\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Go",
"langSlug": "golang",
"code": "type Bitset struct {\n\n}\n\n\nfunc Constructor(size int) Bitset {\n\n}\n\n\nfunc (this *Bitset) Fix(idx int) {\n\n}\n\n\nfunc (this *Bitset) Unfix(idx int) {\n\n}\n\n\nfunc (this *Bitset) Flip() {\n\n}\n\n\nfunc (this *Bitset) All() bool {\n\n}\n\n\nfunc (this *Bitset) One() bool {\n\n}\n\n\nfunc (this *Bitset) Count() int {\n\n}\n\n\nfunc (this *Bitset) ToString() string {\n\n}\n\n\n/**\n * Your Bitset object will be instantiated and called as such:\n * obj := Constructor(size);\n * obj.Fix(idx);\n * obj.Unfix(idx);\n * obj.Flip();\n * param_4 := obj.All();\n * param_5 := obj.One();\n * param_6 := obj.Count();\n * param_7 := obj.ToString();\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Ruby",
"langSlug": "ruby",
"code": "class Bitset\n\n=begin\n :type size: Integer\n=end\n def initialize(size)\n\n end\n\n\n=begin\n :type idx: Integer\n :rtype: Void\n=end\n def fix(idx)\n\n end\n\n\n=begin\n :type idx: Integer\n :rtype: Void\n=end\n def unfix(idx)\n\n end\n\n\n=begin\n :rtype: Void\n=end\n def flip()\n\n end\n\n\n=begin\n :rtype: Boolean\n=end\n def all()\n\n end\n\n\n=begin\n :rtype: Boolean\n=end\n def one()\n\n end\n\n\n=begin\n :rtype: Integer\n=end\n def count()\n\n end\n\n\n=begin\n :rtype: String\n=end\n def to_string()\n\n end\n\n\nend\n\n# Your Bitset object will be instantiated and called as such:\n# obj = Bitset.new(size)\n# obj.fix(idx)\n# obj.unfix(idx)\n# obj.flip()\n# param_4 = obj.all()\n# param_5 = obj.one()\n# param_6 = obj.count()\n# param_7 = obj.to_string()",
"__typename": "CodeSnippetNode"
},
{
"lang": "Scala",
"langSlug": "scala",
"code": "class Bitset(_size: Int) {\n\n def fix(idx: Int) {\n\n }\n\n def unfix(idx: Int) {\n\n }\n\n def flip() {\n\n }\n\n def all(): Boolean = {\n\n }\n\n def one(): Boolean = {\n\n }\n\n def count(): Int = {\n\n }\n\n def toString(): String = {\n\n }\n\n}\n\n/**\n * Your Bitset object will be instantiated and called as such:\n * var obj = new Bitset(size)\n * obj.fix(idx)\n * obj.unfix(idx)\n * obj.flip()\n * var param_4 = obj.all()\n * var param_5 = obj.one()\n * var param_6 = obj.count()\n * var param_7 = obj.toString()\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Rust",
"langSlug": "rust",
"code": "struct Bitset {\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 Bitset {\n\n fn new(size: i32) -> Self {\n\n }\n \n fn fix(&self, idx: i32) {\n\n }\n \n fn unfix(&self, idx: i32) {\n\n }\n \n fn flip(&self) {\n\n }\n \n fn all(&self) -> bool {\n\n }\n \n fn one(&self) -> bool {\n\n }\n \n fn count(&self) -> i32 {\n\n }\n \n fn to_string(&self) -> String {\n\n }\n}\n\n/**\n * Your Bitset object will be instantiated and called as such:\n * let obj = Bitset::new(size);\n * obj.fix(idx);\n * obj.unfix(idx);\n * obj.flip();\n * let ret_4: bool = obj.all();\n * let ret_5: bool = obj.one();\n * let ret_6: i32 = obj.count();\n * let ret_7: String = obj.to_string();\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Racket",
"langSlug": "racket",
"code": "(define bitset%\n (class object%\n (super-new)\n \n ; size : exact-integer?\n (init-field\n size)\n \n ; fix : exact-integer? -> void?\n (define/public (fix idx)\n )\n ; unfix : exact-integer? -> void?\n (define/public (unfix idx)\n )\n ; flip : -> void?\n (define/public (flip)\n )\n ; all : -> boolean?\n (define/public (all)\n )\n ; one : -> boolean?\n (define/public (one)\n )\n ; count : -> exact-integer?\n (define/public (count)\n )\n ; to-string : -> string?\n (define/public (to-string)\n )))\n\n;; Your bitset% object will be instantiated and called as such:\n;; (define obj (new bitset% [size size]))\n;; (send obj fix idx)\n;; (send obj unfix idx)\n;; (send obj flip)\n;; (define param_4 (send obj all))\n;; (define param_5 (send obj one))\n;; (define param_6 (send obj count))\n;; (define param_7 (send obj to-string))",
"__typename": "CodeSnippetNode"
},
{
"lang": "Erlang",
"langSlug": "erlang",
"code": "-spec bitset_init_(Size :: integer()) -> any().\nbitset_init_(Size) ->\n .\n\n-spec bitset_fix(Idx :: integer()) -> any().\nbitset_fix(Idx) ->\n .\n\n-spec bitset_unfix(Idx :: integer()) -> any().\nbitset_unfix(Idx) ->\n .\n\n-spec bitset_flip() -> any().\nbitset_flip() ->\n .\n\n-spec bitset_all() -> boolean().\nbitset_all() ->\n .\n\n-spec bitset_one() -> boolean().\nbitset_one() ->\n .\n\n-spec bitset_count() -> integer().\nbitset_count() ->\n .\n\n-spec bitset_to_string() -> unicode:unicode_binary().\nbitset_to_string() ->\n .\n\n\n%% Your functions will be called as such:\n%% bitset_init_(Size),\n%% bitset_fix(Idx),\n%% bitset_unfix(Idx),\n%% bitset_flip(),\n%% Param_4 = bitset_all(),\n%% Param_5 = bitset_one(),\n%% Param_6 = bitset_count(),\n%% Param_7 = bitset_to_string(),\n\n%% bitset_init_ will be called before every test case, in which you can do some necessary initializations.",
"__typename": "CodeSnippetNode"
},
{
"lang": "Elixir",
"langSlug": "elixir",
"code": "defmodule Bitset do\n @spec init_(size :: integer) :: any\n def init_(size) do\n \n end\n\n @spec fix(idx :: integer) :: any\n def fix(idx) do\n \n end\n\n @spec unfix(idx :: integer) :: any\n def unfix(idx) do\n \n end\n\n @spec flip() :: any\n def flip() do\n \n end\n\n @spec all() :: boolean\n def all() do\n \n end\n\n @spec one() :: boolean\n def one() do\n \n end\n\n @spec count() :: integer\n def count() do\n \n end\n\n @spec to_string() :: String.t\n def to_string() do\n \n end\nend\n\n# Your functions will be called as such:\n# Bitset.init_(size)\n# Bitset.fix(idx)\n# Bitset.unfix(idx)\n# Bitset.flip()\n# param_4 = Bitset.all()\n# param_5 = Bitset.one()\n# param_6 = Bitset.count()\n# param_7 = Bitset.to_string()\n\n# Bitset.init_ will be called before every test case, in which you can do some necessary initializations.",
"__typename": "CodeSnippetNode"
}
],
"stats": "{\"totalAccepted\": \"6.7K\", \"totalSubmission\": \"21.5K\", \"totalAcceptedRaw\": 6713, \"totalSubmissionRaw\": 21530, \"acRate\": \"31.2%\"}",
"hints": [
"Note that flipping a bit twice does nothing.",
"In order to determine the value of a bit, consider how you can efficiently count the number of flips made on the bit since its latest update."
],
"solution": null,
"status": null,
"sampleTestCase": "[\"Bitset\",\"fix\",\"fix\",\"flip\",\"all\",\"unfix\",\"flip\",\"one\",\"unfix\",\"count\",\"toString\"]\n[[5],[3],[1],[],[],[0],[],[],[0],[],[]]",
"metaData": "{\n \"classname\": \"Bitset\",\n \"constructor\": {\n \"params\": [\n {\n \"type\": \"integer\",\n \"name\": \"size\"\n }\n ]\n },\n \"methods\": [\n {\n \"params\": [\n {\n \"type\": \"integer\",\n \"name\": \"idx\"\n }\n ],\n \"name\": \"fix\",\n \"return\": {\n \"type\": \"void\"\n }\n },\n {\n \"params\": [\n {\n \"type\": \"integer\",\n \"name\": \"idx\"\n }\n ],\n \"name\": \"unfix\",\n \"return\": {\n \"type\": \"void\"\n }\n },\n {\n \"params\": [],\n \"name\": \"flip\",\n \"return\": {\n \"type\": \"void\"\n }\n },\n {\n \"params\": [],\n \"name\": \"all\",\n \"return\": {\n \"type\": \"boolean\"\n }\n },\n {\n \"params\": [],\n \"name\": \"one\",\n \"return\": {\n \"type\": \"boolean\"\n }\n },\n {\n \"params\": [],\n \"name\": \"count\",\n \"return\": {\n \"type\": \"integer\"\n }\n },\n {\n \"params\": [],\n \"name\": \"toString\",\n \"return\": {\n \"type\": \"string\"\n }\n }\n ],\n \"return\": {\n \"type\": \"boolean\"\n },\n \"systemdesign\": true,\n \"manual\": false\n}",
"judgerAvailable": true,
"judgeType": "large",
"mysqlSchemas": [],
"enableRunCode": true,
"envInfo": "{\"cpp\":[\"C++\",\"<p>\\u7248\\u672c\\uff1a<code>clang 11<\\/code> \\u91c7\\u7528\\u6700\\u65b0C++ 20\\u6807\\u51c6\\u3002<\\/p>\\r\\n\\r\\n<p>\\u7f16\\u8bd1\\u65f6\\uff0c\\u5c06\\u4f1a\\u91c7\\u7528<code>-O2<\\/code>\\u7ea7\\u4f18\\u5316\\u3002<a href=\\\"https:\\/\\/github.com\\/google\\/sanitizers\\/wiki\\/AddressSanitizer\\\" target=\\\"_blank\\\">AddressSanitizer<\\/a> \\u4e5f\\u88ab\\u5f00\\u542f\\u6765\\u68c0\\u6d4b<code>out-of-bounds<\\/code>\\u548c<code>use-after-free<\\/code>\\u9519\\u8bef\\u3002<\\/p>\\r\\n\\r\\n<p>\\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\",\"<p>\\u7248\\u672c\\uff1a<code>OpenJDK 17<\\/code>\\u3002\\u53ef\\u4ee5\\u4f7f\\u7528Java 8\\u7684\\u7279\\u6027\\u4f8b\\u5982\\uff0clambda expressions \\u548c stream API\\u3002<\\/p>\\r\\n\\r\\n<p>\\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<p>\\u5305\\u542b Pair \\u7c7b: https:\\/\\/docs.oracle.com\\/javase\\/8\\/javafx\\/api\\/javafx\\/util\\/Pair.html <\\/p>\"],\"python\":[\"Python\",\"<p>\\u7248\\u672c\\uff1a <code>Python 2.7.12<\\/code><\\/p>\\r\\n\\r\\n<p>\\u4e3a\\u4e86\\u65b9\\u4fbf\\u8d77\\u89c1\\uff0c\\u5927\\u90e8\\u5206\\u5e38\\u7528\\u5e93\\u5df2\\u7ecf\\u88ab\\u81ea\\u52a8 \\u5bfc\\u5165\\uff0c\\u5982\\uff1a<a href=\\\"https:\\/\\/docs.python.org\\/2\\/library\\/array.html\\\" target=\\\"_blank\\\">array<\\/a>, <a href=\\\"https:\\/\\/docs.python.org\\/2\\/library\\/bisect.html\\\" target=\\\"_blank\\\">bisect<\\/a>, <a href=\\\"https:\\/\\/docs.python.org\\/2\\/library\\/collections.html\\\" target=\\\"_blank\\\">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<p>\\u6ce8\\u610f Python 2.7 <a href=\\\"https:\\/\\/www.python.org\\/dev\\/peps\\/pep-0373\\/\\\" target=\\\"_blank\\\">\\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\",\"<p>\\u7248\\u672c\\uff1a<code>GCC 8.2<\\/code>\\uff0c\\u91c7\\u7528GNU11\\u6807\\u51c6\\u3002<\\/p>\\r\\n\\r\\n<p>\\u7f16\\u8bd1\\u65f6\\uff0c\\u5c06\\u4f1a\\u91c7\\u7528<code>-O1<\\/code>\\u7ea7\\u4f18\\u5316\\u3002 <a href=\\\"https:\\/\\/github.com\\/google\\/sanitizers\\/wiki\\/AddressSanitizer\\\" target=\\\"_blank\\\">AddressSanitizer<\\/a>\\u4e5f\\u88ab\\u5f00\\u542f\\u6765\\u68c0\\u6d4b<code>out-of-bounds<\\/code>\\u548c<code>use-after-free<\\/code>\\u9519\\u8bef\\u3002<\\/p>\\r\\n\\r\\n<p>\\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<p>\\u5982\\u60f3\\u4f7f\\u7528\\u54c8\\u5e0c\\u8868\\u8fd0\\u7b97, \\u60a8\\u53ef\\u4ee5\\u4f7f\\u7528 <a href=\\\"https:\\/\\/troydhanson.github.io\\/uthash\\/\\\" target=\\\"_blank\\\">uthash<\\/a>\\u3002 \\\"uthash.h\\\"\\u5df2\\u7ecf\\u9ed8\\u8ba4\\u88ab\\u5bfc\\u5165\\u3002\\u8bf7\\u770b\\u5982\\u4e0b\\u793a\\u4f8b:<\\/p>\\r\\n\\r\\n<p><b>1. \\u5f80\\u54c8\\u5e0c\\u8868\\u4e2d\\u6dfb\\u52a0\\u4e00\\u4e2a\\u5bf9\\u8c61\\uff1a<\\/b>\\r\\n<pre>\\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<p><b>2. \\u5728\\u54c8\\u5e0c\\u8868\\u4e2d\\u67e5\\u627e\\u4e00\\u4e2a\\u5bf9\\u8c61\\uff1a<\\/b>\\r\\n<pre>\\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<p><b>3. \\u4ece\\u54c8\\u5e0c\\u8868\\u4e2d\\u5220\\u9664\\u4e00\\u4e2a\\u5bf9\\u8c61\\uff1a<\\/b>\\r\\n<pre>\\r\\nvoid delete_user(struct hash_entry *user) {\\r\\n HASH_DEL(users, user); \\r\\n}\\r\\n<\\/pre>\\r\\n<\\/p>\"],\"csharp\":[\"C#\",\"<p><a href=\\\"https:\\/\\/docs.microsoft.com\\/en-us\\/dotnet\\/csharp\\/whats-new\\/csharp-9\\\" target=\\\"_blank\\\">C# 10<\\/a> \\u8fd0\\u884c\\u5728 .NET 6 \\u4e0a<\\/p>\"],\"javascript\":[\"JavaScript\",\"<p>\\u7248\\u672c\\uff1a<code>Node.js 16.13.2<\\/code><\\/p>\\r\\n\\r\\n<p>\\u60a8\\u7684\\u4ee3\\u7801\\u5728\\u6267\\u884c\\u65f6\\u5c06\\u5e26\\u4e0a <code>--harmony<\\/code> \\u6807\\u8bb0\\u6765\\u5f00\\u542f <a href=\\\"http:\\/\\/node.green\\/\\\" target=\\\"_blank\\\">\\u65b0\\u7248ES6\\u7279\\u6027<\\/a>\\u3002<\\/p>\\r\\n\\r\\n<p><a href=\\\"https:\\/\\/lodash.com\\\" target=\\\"_blank\\\">lodash.js<\\/a> \\u5e93\\u5df2\\u7ecf\\u9ed8\\u8ba4\\u88ab\\u5305\\u542b\\u3002<\\/p>\\r\\n\\r\\n<p> \\u5982\\u9700\\u4f7f\\u7528\\u961f\\u5217\\/\\u4f18\\u5148\\u961f\\u5217\\uff0c\\u60a8\\u53ef\\u4f7f\\u7528 <a href=\\\"https:\\/\\/github.com\\/datastructures-js\\/priority-queue\\/tree\\/fb4fdb984834421279aeb081df7af624d17c2a03\\\" target=\\\"_blank\\\"> datastructures-js\\/priority-queue@5.3.0<\\/a> \\u548c <a href=\\\"https:\\/\\/github.com\\/datastructures-js\\/queue\\/tree\\/e63563025a5a805aa16928cb53bcd517bfea9230\\\" target=\\\"_blank\\\"> datastructures-js\\/queue@4.2.1<\\/a>\\u3002<\\/p>\"],\"ruby\":[\"Ruby\",\"<p>\\u4f7f\\u7528<code>Ruby 3.1<\\/code>\\u6267\\u884c<\\/p>\\r\\n\\r\\n<p>\\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\",\"<p>\\u7248\\u672c\\uff1a<code>Swift 5.5.2<\\/code><\\/p>\\r\\n\\r\\n<p>\\u6211\\u4eec\\u901a\\u5e38\\u4fdd\\u8bc1\\u66f4\\u65b0\\u5230 <a href=\\\"https:\\/\\/swift.org\\/download\\/\\\" target=\\\"_blank\\\">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\",\"<p>\\u7248\\u672c\\uff1a<code>Go 1.21<\\/code><\\/p>\\r\\n\\r\\n<p>\\u652f\\u6301 <a href=\\\"https:\\/\\/github.com\\/emirpasic\\/gods\\/tree\\/v1.18.1\\\" target=\\\"_blank\\\">https:\\/\\/godoc.org\\/github.com\\/emirpasic\\/gods@v1.18.1<\\/a> \\u7b2c\\u4e09\\u65b9\\u5e93\\u3002<\\/p>\"],\"python3\":[\"Python3\",\"<p>\\u7248\\u672c\\uff1a<code>Python 3.10<\\/code><\\/p>\\r\\n\\r\\n<p>\\u4e3a\\u4e86\\u65b9\\u4fbf\\u8d77\\u89c1\\uff0c\\u5927\\u90e8\\u5206\\u5e38\\u7528\\u5e93\\u5df2\\u7ecf\\u88ab\\u81ea\\u52a8 \\u5bfc\\u5165\\uff0c\\u5982<a href=\\\"https:\\/\\/docs.python.org\\/3\\/library\\/array.html\\\" target=\\\"_blank\\\">array<\\/a>, <a href=\\\"https:\\/\\/docs.python.org\\/3\\/library\\/bisect.html\\\" target=\\\"_blank\\\">bisect<\\/a>, <a href=\\\"https:\\/\\/docs.python.org\\/3\\/library\\/collections.html\\\" target=\\\"_blank\\\">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<p>\\u5982\\u9700\\u4f7f\\u7528 Map\\/TreeMap \\u6570\\u636e\\u7ed3\\u6784\\uff0c\\u60a8\\u53ef\\u4f7f\\u7528 <a href=\\\"http:\\/\\/www.grantjenks.com\\/docs\\/sortedcontainers\\/\\\" target=\\\"_blank\\\">sortedcontainers<\\/a> \\u5e93\\u3002<\\/p>\"],\"scala\":[\"Scala\",\"<p>\\u7248\\u672c\\uff1a<code>Scala 2.13<\\/code><\\/p>\"],\"kotlin\":[\"Kotlin\",\"<p>\\u7248\\u672c\\uff1a<code>Kotlin 1.9.0<\\/code><\\/p>\\r\\n\\r\\n<p>\\u6211\\u4eec\\u4f7f\\u7528\\u7684\\u662f JetBrains \\u63d0\\u4f9b\\u7684 experimental compiler\\u3002\\u5982\\u679c\\u60a8\\u8ba4\\u4e3a\\u60a8\\u9047\\u5230\\u4e86\\u7f16\\u8bd1\\u5668\\u76f8\\u5173\\u7684\\u95ee\\u9898\\uff0c\\u8bf7\\u5411\\u6211\\u4eec\\u53cd\\u9988<\\/p>\"],\"rust\":[\"Rust\",\"<p>\\u7248\\u672c\\uff1a<code>rust 1.58.1<\\/code><\\/p>\\r\\n\\r\\n<p>\\u652f\\u6301 crates.io \\u7684 <a href=\\\"https:\\/\\/crates.io\\/crates\\/rand\\\" target=\\\"_blank\\\">rand<\\/a><\\/p>\"],\"php\":[\"PHP\",\"<p><code>PHP 8.1<\\/code>.<\\/p>\\r\\n\\r\\n<p>With bcmath module.<\\/p>\"],\"typescript\":[\"TypeScript\",\"<p>TypeScript 5.1.6<\\/p>\\r\\n\\r\\n<p>Compile Options: --alwaysStrict --strictBindCallApply --strictFunctionTypes --target ES2022<\\/p>\\r\\n\\r\\n<p><a href=\\\"https:\\/\\/lodash.com\\\" target=\\\"_blank\\\">lodash.js<\\/a> \\u5e93\\u5df2\\u7ecf\\u9ed8\\u8ba4\\u88ab\\u5305\\u542b\\u3002<\\/p>\\r\\n\\r\\n<p> \\u5982\\u9700\\u4f7f\\u7528\\u961f\\u5217\\/\\u4f18\\u5148\\u961f\\u5217\\uff0c\\u60a8\\u53ef\\u4f7f\\u7528 <a href=\\\"https:\\/\\/github.com\\/datastructures-js\\/priority-queue\\/tree\\/fb4fdb984834421279aeb081df7af624d17c2a03\\\" target=\\\"_blank\\\"> datastructures-js\\/priority-queue@5.3.0<\\/a> \\u548c <a href=\\\"https:\\/\\/github.com\\/datastructures-js\\/queue\\/tree\\/e63563025a5a805aa16928cb53bcd517bfea9230\\\" target=\\\"_blank\\\"> datastructures-js\\/queue@4.2.1<\\/a>\\u3002<\\/p>\"],\"racket\":[\"Racket\",\"<p><a href=\\\"https:\\/\\/docs.racket-lang.org\\/guide\\/performance.html#%28tech._c%29\\\" target=\\\"_blank\\\">Racket CS<\\/a> v8.3<\\/p>\\r\\n\\r\\n<p>\\u4f7f\\u7528 #lang racket<\\/p>\\r\\n\\r\\n<p>\\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\",\"<p>Dart 2.17.3<\\/p>\\r\\n\\r\\n<p>\\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": "[\"Bitset\",\"fix\",\"fix\",\"flip\",\"all\",\"unfix\",\"flip\",\"one\",\"unfix\",\"count\",\"toString\"]\n[[5],[3],[1],[],[],[0],[],[],[0],[],[]]",
"__typename": "QuestionNode"
}
}
}