From 21b57e6a79f96ced29f711a6fe5c660a0077207b Mon Sep 17 00:00:00 2001 From: Shiva Bhusal Date: Wed, 26 Nov 2025 20:50:00 +0545 Subject: [PATCH 1/5] docs: Update README to enhance project description and add features section --- README.md | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 82466da..7c06ce8 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,22 @@ leetcode cheatsheet banner

-- big o time/space complexities -- code templates -- data structure implementations -- sorting algorithms +## LeetCode Cheatsheet +A comprehensive cheatsheet for LeetCode enthusiasts, featuring essential algorithms, data structures, and problem-solving techniques. + +## Features +- Big O time and space complexities for common algorithms +- Code templates for frequently used algorithms +- Implementations of various data structures +- Sorting algorithms with explanations + +## Building the Project +To build the LeetCode Cheatsheet project, follow these steps: + +```bash +$ npm run build +``` ## License + This project is released under the GNU GPL License - see the [LICENSE](LICENSE) file for details From db8612bf49b8a27d3530f776d80f035d9efd6e9c Mon Sep 17 00:00:00 2001 From: Shiva Bhusal Date: Wed, 26 Nov 2025 20:51:29 +0545 Subject: [PATCH 2/5] chore: update vite version to ^7.2.4 --- package-lock.json | 956 ++++++++++++++++++++++++++++++++-------------- package.json | 2 +- 2 files changed, 666 insertions(+), 292 deletions(-) diff --git a/package-lock.json b/package-lock.json index 935e229..ff01f61 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "leetcode-cheatsheet", - "version": "0.0.0", + "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "leetcode-cheatsheet", - "version": "0.0.0", + "version": "1.0.0", "dependencies": { "highlight.js": "^11.9.0", "react": "^18.2.0", @@ -25,7 +25,7 @@ "eslint-plugin-react-refresh": "^0.4.5", "sass": "^1.70.0", "typescript": "^5.3.3", - "vite": "^5.0.8" + "vite": "^7.2.4" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -38,371 +38,445 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", - "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "aix" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", - "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", - "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", - "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", - "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", - "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", - "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", - "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", - "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", - "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", - "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", - "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", "cpu": [ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", - "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", "cpu": [ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", - "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", - "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", - "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", - "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", - "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", - "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", - "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", - "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", - "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", - "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@eslint-community/eslint-utils": { @@ -529,184 +603,331 @@ "node": ">= 8" } }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", + "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", + "dev": true, + "license": "MIT" + }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.0.tgz", - "integrity": "sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.3.tgz", + "integrity": "sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.0.tgz", - "integrity": "sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.3.tgz", + "integrity": "sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.0.tgz", - "integrity": "sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.3.tgz", + "integrity": "sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.0.tgz", - "integrity": "sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.3.tgz", + "integrity": "sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.3.tgz", + "integrity": "sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.3.tgz", + "integrity": "sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.0.tgz", - "integrity": "sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.3.tgz", + "integrity": "sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.3.tgz", + "integrity": "sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.0.tgz", - "integrity": "sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.3.tgz", + "integrity": "sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.0.tgz", - "integrity": "sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.3.tgz", + "integrity": "sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.3.tgz", + "integrity": "sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.3.tgz", + "integrity": "sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.0.tgz", - "integrity": "sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.3.tgz", + "integrity": "sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.3.tgz", + "integrity": "sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.3.tgz", + "integrity": "sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.0.tgz", - "integrity": "sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.3.tgz", + "integrity": "sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.0.tgz", - "integrity": "sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.3.tgz", + "integrity": "sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.3.tgz", + "integrity": "sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.0.tgz", - "integrity": "sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.3.tgz", + "integrity": "sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.0.tgz", - "integrity": "sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.3.tgz", + "integrity": "sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.3.tgz", + "integrity": "sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.0.tgz", - "integrity": "sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.3.tgz", + "integrity": "sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@swc/core": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.4.2.tgz", - "integrity": "sha512-vWgY07R/eqj1/a0vsRKLI9o9klGZfpLNOVEnrv4nrccxBgYPjcf22IWwAoaBJ+wpA7Q4fVjCUM8lP0m01dpxcg==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.3.tgz", + "integrity": "sha512-Qd8eBPkUFL4eAONgGjycZXj1jFCBW8Fd+xF0PzdTlBCWQIV1xnUT7B93wUANtW3KGjl3TRcOyxwSx/u/jyKw/Q==", "dev": true, "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "@swc/counter": "^0.1.2", - "@swc/types": "^0.1.5" + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.25" }, "engines": { "node": ">=10" @@ -716,19 +937,19 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.4.2", - "@swc/core-darwin-x64": "1.4.2", - "@swc/core-linux-arm-gnueabihf": "1.4.2", - "@swc/core-linux-arm64-gnu": "1.4.2", - "@swc/core-linux-arm64-musl": "1.4.2", - "@swc/core-linux-x64-gnu": "1.4.2", - "@swc/core-linux-x64-musl": "1.4.2", - "@swc/core-win32-arm64-msvc": "1.4.2", - "@swc/core-win32-ia32-msvc": "1.4.2", - "@swc/core-win32-x64-msvc": "1.4.2" + "@swc/core-darwin-arm64": "1.15.3", + "@swc/core-darwin-x64": "1.15.3", + "@swc/core-linux-arm-gnueabihf": "1.15.3", + "@swc/core-linux-arm64-gnu": "1.15.3", + "@swc/core-linux-arm64-musl": "1.15.3", + "@swc/core-linux-x64-gnu": "1.15.3", + "@swc/core-linux-x64-musl": "1.15.3", + "@swc/core-win32-arm64-msvc": "1.15.3", + "@swc/core-win32-ia32-msvc": "1.15.3", + "@swc/core-win32-x64-msvc": "1.15.3" }, "peerDependencies": { - "@swc/helpers": "^0.5.0" + "@swc/helpers": ">=0.5.17" }, "peerDependenciesMeta": { "@swc/helpers": { @@ -737,13 +958,14 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.4.2.tgz", - "integrity": "sha512-1uSdAn1MRK5C1m/TvLZ2RDvr0zLvochgrZ2xL+lRzugLlCTlSA+Q4TWtrZaOz+vnnFVliCpw7c7qu0JouhgQIw==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.3.tgz", + "integrity": "sha512-AXfeQn0CvcQ4cndlIshETx6jrAM45oeUrK8YeEY6oUZU/qzz0Id0CyvlEywxkWVC81Ajpd8TQQ1fW5yx6zQWkQ==", "cpu": [ "arm64" ], "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "darwin" @@ -753,13 +975,14 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.4.2.tgz", - "integrity": "sha512-TYD28+dCQKeuxxcy7gLJUCFLqrwDZnHtC2z7cdeGfZpbI2mbfppfTf2wUPzqZk3gEC96zHd4Yr37V3Tvzar+lQ==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.3.tgz", + "integrity": "sha512-p68OeCz1ui+MZYG4wmfJGvcsAcFYb6Sl25H9TxWl+GkBgmNimIiRdnypK9nBGlqMZAcxngNPtnG3kEMNnvoJ2A==", "cpu": [ "x64" ], "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "darwin" @@ -769,13 +992,14 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.4.2.tgz", - "integrity": "sha512-Eyqipf7ZPGj0vplKHo8JUOoU1un2sg5PjJMpEesX0k+6HKE2T8pdyeyXODN0YTFqzndSa/J43EEPXm+rHAsLFQ==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.3.tgz", + "integrity": "sha512-Nuj5iF4JteFgwrai97mUX+xUOl+rQRHqTvnvHMATL/l9xE6/TJfPBpd3hk/PVpClMXG3Uvk1MxUFOEzM1JrMYg==", "cpu": [ "arm" ], "dev": true, + "license": "Apache-2.0", "optional": true, "os": [ "linux" @@ -785,13 +1009,14 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.4.2.tgz", - "integrity": "sha512-wZn02DH8VYPv3FC0ub4my52Rttsus/rFw+UUfzdb3tHMHXB66LqN+rR0ssIOZrH6K+VLN6qpTw9VizjyoH0BxA==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.3.tgz", + "integrity": "sha512-2Nc/s8jE6mW2EjXWxO/lyQuLKShcmTrym2LRf5Ayp3ICEMX6HwFqB1EzDhwoMa2DcUgmnZIalesq2lG3krrUNw==", "cpu": [ "arm64" ], "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "linux" @@ -801,13 +1026,14 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.4.2.tgz", - "integrity": "sha512-3G0D5z9hUj9bXNcwmA1eGiFTwe5rWkuL3DsoviTj73TKLpk7u64ND0XjEfO0huVv4vVu9H1jodrKb7nvln/dlw==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.3.tgz", + "integrity": "sha512-j4SJniZ/qaZ5g8op+p1G9K1z22s/EYGg1UXIb3+Cg4nsxEpF5uSIGEE4mHUfA70L0BR9wKT2QF/zv3vkhfpX4g==", "cpu": [ "arm64" ], "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "linux" @@ -817,13 +1043,14 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.4.2.tgz", - "integrity": "sha512-LFxn9U8cjmYHw3jrdPNqPAkBGglKE3tCZ8rA7hYyp0BFxuo7L2ZcEnPm4RFpmSCCsExFH+LEJWuMGgWERoktvg==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.3.tgz", + "integrity": "sha512-aKttAZnz8YB1VJwPQZtyU8Uk0BfMP63iDMkvjhJzRZVgySmqt/apWSdnoIcZlUoGheBrcqbMC17GGUmur7OT5A==", "cpu": [ "x64" ], "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "linux" @@ -833,13 +1060,14 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.4.2.tgz", - "integrity": "sha512-dp0fAmreeVVYTUcb4u9njTPrYzKnbIH0EhH2qvC9GOYNNREUu2GezSIDgonjOXkHiTCvopG4xU7y56XtXj4VrQ==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.3.tgz", + "integrity": "sha512-oe8FctPu1gnUsdtGJRO2rvOUIkkIIaHqsO9xxN0bTR7dFTlPTGi2Fhk1tnvXeyAvCPxLIcwD8phzKg6wLv9yug==", "cpu": [ "x64" ], "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "linux" @@ -849,13 +1077,14 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.4.2.tgz", - "integrity": "sha512-HlVIiLMQkzthAdqMslQhDkoXJ5+AOLUSTV6fm6shFKZKqc/9cJvr4S8UveNERL9zUficA36yM3bbfo36McwnvQ==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.3.tgz", + "integrity": "sha512-L9AjzP2ZQ/Xh58e0lTRMLvEDrcJpR7GwZqAtIeNLcTK7JVE+QineSyHp0kLkO1rttCHyCy0U74kDTj0dRz6raA==", "cpu": [ "arm64" ], "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "win32" @@ -865,13 +1094,14 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.4.2.tgz", - "integrity": "sha512-WCF8faPGjCl4oIgugkp+kL9nl3nUATlzKXCEGFowMEmVVCFM0GsqlmGdPp1pjZoWc9tpYanoXQDnp5IvlDSLhA==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.3.tgz", + "integrity": "sha512-B8UtogMzErUPDWUoKONSVBdsgKYd58rRyv2sHJWKOIMCHfZ22FVXICR4O/VwIYtlnZ7ahERcjayBHDlBZpR0aw==", "cpu": [ "ia32" ], "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "win32" @@ -881,13 +1111,14 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.4.2.tgz", - "integrity": "sha512-oV71rwiSpA5xre2C5570BhCsg1HF97SNLsZ/12xv7zayGzqr3yvFALFJN8tHKpqUdCB4FGPjoP3JFdV3i+1wUw==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.3.tgz", + "integrity": "sha512-SpZKMR9QBTecHeqpzJdYEfgw30Oo8b/Xl6rjSzBt1g0ZsXyy60KLXrp6IagQyfTYqNYE/caDvwtF2FPn7pomog==", "cpu": [ "x64" ], "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "win32" @@ -900,27 +1131,35 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/@swc/types": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", - "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", - "dev": true + "version": "0.1.25", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.25.tgz", + "integrity": "sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3" + } }, "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { - "version": "20.11.20", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.20.tgz", - "integrity": "sha512-7/rR21OS+fq8IyHTgtLkDK949uzsa6n8BkziAKtPVpugIkO6D+/ooXMvzXxDnZrmtXVfjb1bKQafYpb8s89LOg==", + "version": "20.19.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz", + "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.21.0" } }, "node_modules/@types/prop-types": { @@ -962,15 +1201,17 @@ "dev": true }, "node_modules/@vitejs/plugin-react-swc": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.6.0.tgz", - "integrity": "sha512-XFRbsGgpGxGzEV5i5+vRiro1bwcIaZDIdBRP16qwm+jP68ue/S8FJTBEgOeojtVDYrbSua3XFp71kC8VJE6v+g==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.11.0.tgz", + "integrity": "sha512-YTJCGFdNMHCMfjODYtxRNVAYmTWQ1Lb8PulP/2/f/oEEtglw8oKxKIZmmRkyXrVrHfsKOaVkAc3NT9/dMutO5w==", "dev": true, + "license": "MIT", "dependencies": { - "@swc/core": "^1.3.107" + "@rolldown/pluginutils": "1.0.0-beta.27", + "@swc/core": "^1.12.11" }, "peerDependencies": { - "vite": "^4 || ^5" + "vite": "^4 || ^5 || ^6 || ^7" } }, "node_modules/acorn": { @@ -978,6 +1219,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -1199,22 +1441,24 @@ } }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -1325,10 +1569,11 @@ "dev": true }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -1561,41 +1806,45 @@ } }, "node_modules/esbuild": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", - "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.12", - "@esbuild/android-arm": "0.19.12", - "@esbuild/android-arm64": "0.19.12", - "@esbuild/android-x64": "0.19.12", - "@esbuild/darwin-arm64": "0.19.12", - "@esbuild/darwin-x64": "0.19.12", - "@esbuild/freebsd-arm64": "0.19.12", - "@esbuild/freebsd-x64": "0.19.12", - "@esbuild/linux-arm": "0.19.12", - "@esbuild/linux-arm64": "0.19.12", - "@esbuild/linux-ia32": "0.19.12", - "@esbuild/linux-loong64": "0.19.12", - "@esbuild/linux-mips64el": "0.19.12", - "@esbuild/linux-ppc64": "0.19.12", - "@esbuild/linux-riscv64": "0.19.12", - "@esbuild/linux-s390x": "0.19.12", - "@esbuild/linux-x64": "0.19.12", - "@esbuild/netbsd-x64": "0.19.12", - "@esbuild/openbsd-x64": "0.19.12", - "@esbuild/sunos-x64": "0.19.12", - "@esbuild/win32-arm64": "0.19.12", - "@esbuild/win32-ia32": "0.19.12", - "@esbuild/win32-x64": "0.19.12" + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" } }, "node_modules/escape-string-regexp": { @@ -1615,6 +1864,7 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -1872,10 +2122,11 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -2448,6 +2699,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -2626,10 +2878,11 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -2751,9 +3004,9 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "dev": true, "funding": [ { @@ -2761,6 +3014,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -2990,10 +3244,11 @@ "dev": true }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", @@ -3017,9 +3272,9 @@ } }, "node_modules/postcss": { - "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "dev": true, "funding": [ { @@ -3035,10 +3290,11 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" @@ -3096,6 +3352,7 @@ "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -3119,6 +3376,7 @@ "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.0" @@ -3235,12 +3493,13 @@ } }, "node_modules/rollup": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.12.0.tgz", - "integrity": "sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.3.tgz", + "integrity": "sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==", "dev": true, + "license": "MIT", "dependencies": { - "@types/estree": "1.0.5" + "@types/estree": "1.0.8" }, "bin": { "rollup": "dist/bin/rollup" @@ -3250,19 +3509,28 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.12.0", - "@rollup/rollup-android-arm64": "4.12.0", - "@rollup/rollup-darwin-arm64": "4.12.0", - "@rollup/rollup-darwin-x64": "4.12.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.12.0", - "@rollup/rollup-linux-arm64-gnu": "4.12.0", - "@rollup/rollup-linux-arm64-musl": "4.12.0", - "@rollup/rollup-linux-riscv64-gnu": "4.12.0", - "@rollup/rollup-linux-x64-gnu": "4.12.0", - "@rollup/rollup-linux-x64-musl": "4.12.0", - "@rollup/rollup-win32-arm64-msvc": "4.12.0", - "@rollup/rollup-win32-ia32-msvc": "4.12.0", - "@rollup/rollup-win32-x64-msvc": "4.12.0", + "@rollup/rollup-android-arm-eabi": "4.53.3", + "@rollup/rollup-android-arm64": "4.53.3", + "@rollup/rollup-darwin-arm64": "4.53.3", + "@rollup/rollup-darwin-x64": "4.53.3", + "@rollup/rollup-freebsd-arm64": "4.53.3", + "@rollup/rollup-freebsd-x64": "4.53.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.53.3", + "@rollup/rollup-linux-arm-musleabihf": "4.53.3", + "@rollup/rollup-linux-arm64-gnu": "4.53.3", + "@rollup/rollup-linux-arm64-musl": "4.53.3", + "@rollup/rollup-linux-loong64-gnu": "4.53.3", + "@rollup/rollup-linux-ppc64-gnu": "4.53.3", + "@rollup/rollup-linux-riscv64-gnu": "4.53.3", + "@rollup/rollup-linux-riscv64-musl": "4.53.3", + "@rollup/rollup-linux-s390x-gnu": "4.53.3", + "@rollup/rollup-linux-x64-gnu": "4.53.3", + "@rollup/rollup-linux-x64-musl": "4.53.3", + "@rollup/rollup-openharmony-arm64": "4.53.3", + "@rollup/rollup-win32-arm64-msvc": "4.53.3", + "@rollup/rollup-win32-ia32-msvc": "4.53.3", + "@rollup/rollup-win32-x64-gnu": "4.53.3", + "@rollup/rollup-win32-x64-msvc": "4.53.3", "fsevents": "~2.3.2" } }, @@ -3329,6 +3597,7 @@ "resolved": "https://registry.npmjs.org/sass/-/sass-1.71.1.tgz", "integrity": "sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==", "dev": true, + "peer": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -3435,10 +3704,11 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -3562,11 +3832,61 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -3700,10 +4020,11 @@ } }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" }, "node_modules/uri-js": { "version": "4.4.1", @@ -3715,20 +4036,25 @@ } }, "node_modules/vite": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.4.tgz", - "integrity": "sha512-n+MPqzq+d9nMVTKyewqw6kSt+R3CkvF9QAKY8obiQn8g1fwTscKxyfaYnC632HtBXAQGc1Yjomphwn1dtwGAHg==", + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.4.tgz", + "integrity": "sha512-NL8jTlbo0Tn4dUEXEsUg8KeyG/Lkmc4Fnzb8JXN/Ykm9G4HNImjtABMJgkQoVjOBN/j2WAwDTRytdqJbZsah7w==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { - "esbuild": "^0.19.3", - "postcss": "^8.4.35", - "rollup": "^4.2.0" + "esbuild": "^0.25.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^20.19.0 || >=22.12.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" @@ -3737,18 +4063,25 @@ "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" }, "peerDependenciesMeta": { "@types/node": { "optional": true }, + "jiti": { + "optional": true + }, "less": { "optional": true }, @@ -3758,6 +4091,9 @@ "sass": { "optional": true }, + "sass-embedded": { + "optional": true + }, "stylus": { "optional": true }, @@ -3766,9 +4102,47 @@ }, "terser": { "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true } } }, + "node_modules/vite/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index 0a3c8d4..765d214 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,6 @@ "eslint-plugin-react-refresh": "^0.4.5", "sass": "^1.70.0", "typescript": "^5.3.3", - "vite": "^5.0.8" + "vite": "^7.2.4" } } From 08a332453e4e913629967b7f5c0fdb2497523e53 Mon Sep 17 00:00:00 2001 From: Shiva Bhusal Date: Thu, 27 Nov 2025 13:12:54 +0545 Subject: [PATCH 3/5] Adds various algorithm implementations including prefix sum, sliding window, and sorting algorithms --- src/code/ruby/array/prefix_sum.rb | 13 +++ src/code/ruby/array/sliding_window.rb | 19 +++++ src/code/ruby/array/string_building.rb | 15 ++++ src/code/ruby/array/two_pointers_one_input.rb | 16 ++++ .../ruby/array/two_pointers_two_inputs.rb | 25 ++++++ src/code/ruby/backtracking/backtracking.rb | 16 ++++ src/code/ruby/binary_search/binary_search.rb | 19 +++++ .../duplicate_elements_left_insertion.rb | 16 ++++ .../duplicate_elements_right_insertion.rb | 16 ++++ src/code/ruby/binary_search/greedy_maximum.rb | 21 +++++ src/code/ruby/binary_search/greedy_minimum.rb | 20 +++++ src/code/ruby/binary_tree/bfs.rb | 19 +++++ src/code/ruby/binary_tree/dfs_iterative.rb | 14 ++++ src/code/ruby/binary_tree/dfs_recursive.rb | 11 +++ .../bit_manipulation/check_power_of_two.rb | 3 + .../ruby/bit_manipulation/clear_kth_bit.rb | 3 + .../ruby/bit_manipulation/count_set_bits.rb | 3 + .../bit_manipulation/divide_power_of_two.rb | 3 + .../bit_manipulation/get_rightmost_bit.rb | 3 + .../bit_manipulation/multiply_power_of_two.rb | 3 + src/code/ruby/bit_manipulation/set_kth_bit.rb | 3 + .../ruby/bit_manipulation/swap_variables.rb | 9 ++ .../ruby/bit_manipulation/test_kth_bit.rb | 3 + .../ruby/bit_manipulation/toggle_kth_bit.rb | 3 + src/code/ruby/data_structures/array.rb | 23 +++++ .../data_structures/binary_search_tree.rb | 58 +++++++++++++ src/code/ruby/data_structures/binary_tree.rb | 56 +++++++++++++ .../data_structures/doubly_linked_list.rb | 84 +++++++++++++++++++ src/code/ruby/data_structures/graph.rb | 30 +++++++ src/code/ruby/data_structures/hash_map.rb | 22 +++++ src/code/ruby/data_structures/linked_list.rb | 79 +++++++++++++++++ src/code/ruby/data_structures/trie.rb | 80 ++++++++++++++++++ src/code/ruby/data_structures/union_find.rb | 33 ++++++++ .../data_structures/union_find_optimized.rb | 46 ++++++++++ .../ruby/dynamic_programming/bottom_up.rb | 17 ++++ src/code/ruby/dynamic_programming/kadane.rb | 11 +++ src/code/ruby/dynamic_programming/top_down.rb | 12 +++ src/code/ruby/graph/bellman_ford.rb | 20 +++++ src/code/ruby/graph/bfs.rb | 20 +++++ src/code/ruby/graph/dfs_iterative.rb | 20 +++++ src/code/ruby/graph/dfs_recursive.rb | 19 +++++ src/code/ruby/graph/dijkstra.rb | 26 ++++++ src/code/ruby/graph/kahn.rb | 24 ++++++ src/code/ruby/graph/kruskal.rb | 12 +++ src/code/ruby/graph/prim.rb | 12 +++ .../ruby/hash_map/find_number_of_subarrays.rb | 14 ++++ src/code/ruby/hash_map/sliding_window.rb | 20 +++++ src/code/ruby/heap/find_top_k_elements.rb | 15 ++++ .../ruby/linked_list/fast_and_slow_pointer.rb | 13 +++ .../ruby/linked_list/reverse_linked_list.rb | 13 +++ src/code/ruby/matrix/create_copy.rb | 7 ++ src/code/ruby/matrix/diagonals.rb | 7 ++ src/code/ruby/matrix/rotate_transpose.rb | 8 ++ src/code/ruby/sorting_algorithms/bogo_sort.rb | 7 ++ .../ruby/sorting_algorithms/bubble_sort.rb | 16 ++++ .../ruby/sorting_algorithms/bucket_sort.rb | 14 ++++ .../ruby/sorting_algorithms/counting_sort.rb | 23 +++++ src/code/ruby/sorting_algorithms/cube_sort.rb | 28 +++++++ src/code/ruby/sorting_algorithms/heap_sort.rb | 28 +++++++ .../ruby/sorting_algorithms/insertion_sort.rb | 15 ++++ .../ruby/sorting_algorithms/merge_sort.rb | 24 ++++++ .../ruby/sorting_algorithms/pancake_sort.rb | 32 +++++++ .../ruby/sorting_algorithms/quick_sort.rb | 10 +++ .../ruby/sorting_algorithms/radix_sort.rb | 34 ++++++++ .../ruby/sorting_algorithms/selection_sort.rb | 13 +++ .../ruby/sorting_algorithms/shell_sort.rb | 18 ++++ .../ruby/sorting_algorithms/sleep_sort.rb | 14 ++++ src/code/ruby/sorting_algorithms/tim_sort.rb | 58 +++++++++++++ src/code/ruby/stack/monotonic_decreasing.rb | 14 ++++ src/code/ruby/stack/monotonic_increasing.rb | 14 ++++ 70 files changed, 1439 insertions(+) create mode 100644 src/code/ruby/array/prefix_sum.rb create mode 100644 src/code/ruby/array/sliding_window.rb create mode 100644 src/code/ruby/array/string_building.rb create mode 100644 src/code/ruby/array/two_pointers_one_input.rb create mode 100644 src/code/ruby/array/two_pointers_two_inputs.rb create mode 100644 src/code/ruby/backtracking/backtracking.rb create mode 100644 src/code/ruby/binary_search/binary_search.rb create mode 100644 src/code/ruby/binary_search/duplicate_elements_left_insertion.rb create mode 100644 src/code/ruby/binary_search/duplicate_elements_right_insertion.rb create mode 100644 src/code/ruby/binary_search/greedy_maximum.rb create mode 100644 src/code/ruby/binary_search/greedy_minimum.rb create mode 100644 src/code/ruby/binary_tree/bfs.rb create mode 100644 src/code/ruby/binary_tree/dfs_iterative.rb create mode 100644 src/code/ruby/binary_tree/dfs_recursive.rb create mode 100644 src/code/ruby/bit_manipulation/check_power_of_two.rb create mode 100644 src/code/ruby/bit_manipulation/clear_kth_bit.rb create mode 100644 src/code/ruby/bit_manipulation/count_set_bits.rb create mode 100644 src/code/ruby/bit_manipulation/divide_power_of_two.rb create mode 100644 src/code/ruby/bit_manipulation/get_rightmost_bit.rb create mode 100644 src/code/ruby/bit_manipulation/multiply_power_of_two.rb create mode 100644 src/code/ruby/bit_manipulation/set_kth_bit.rb create mode 100644 src/code/ruby/bit_manipulation/swap_variables.rb create mode 100644 src/code/ruby/bit_manipulation/test_kth_bit.rb create mode 100644 src/code/ruby/bit_manipulation/toggle_kth_bit.rb create mode 100644 src/code/ruby/data_structures/array.rb create mode 100644 src/code/ruby/data_structures/binary_search_tree.rb create mode 100644 src/code/ruby/data_structures/binary_tree.rb create mode 100644 src/code/ruby/data_structures/doubly_linked_list.rb create mode 100644 src/code/ruby/data_structures/graph.rb create mode 100644 src/code/ruby/data_structures/hash_map.rb create mode 100644 src/code/ruby/data_structures/linked_list.rb create mode 100644 src/code/ruby/data_structures/trie.rb create mode 100644 src/code/ruby/data_structures/union_find.rb create mode 100644 src/code/ruby/data_structures/union_find_optimized.rb create mode 100644 src/code/ruby/dynamic_programming/bottom_up.rb create mode 100644 src/code/ruby/dynamic_programming/kadane.rb create mode 100644 src/code/ruby/dynamic_programming/top_down.rb create mode 100644 src/code/ruby/graph/bellman_ford.rb create mode 100644 src/code/ruby/graph/bfs.rb create mode 100644 src/code/ruby/graph/dfs_iterative.rb create mode 100644 src/code/ruby/graph/dfs_recursive.rb create mode 100644 src/code/ruby/graph/dijkstra.rb create mode 100644 src/code/ruby/graph/kahn.rb create mode 100644 src/code/ruby/graph/kruskal.rb create mode 100644 src/code/ruby/graph/prim.rb create mode 100644 src/code/ruby/hash_map/find_number_of_subarrays.rb create mode 100644 src/code/ruby/hash_map/sliding_window.rb create mode 100644 src/code/ruby/heap/find_top_k_elements.rb create mode 100644 src/code/ruby/linked_list/fast_and_slow_pointer.rb create mode 100644 src/code/ruby/linked_list/reverse_linked_list.rb create mode 100644 src/code/ruby/matrix/create_copy.rb create mode 100644 src/code/ruby/matrix/diagonals.rb create mode 100644 src/code/ruby/matrix/rotate_transpose.rb create mode 100644 src/code/ruby/sorting_algorithms/bogo_sort.rb create mode 100644 src/code/ruby/sorting_algorithms/bubble_sort.rb create mode 100644 src/code/ruby/sorting_algorithms/bucket_sort.rb create mode 100644 src/code/ruby/sorting_algorithms/counting_sort.rb create mode 100644 src/code/ruby/sorting_algorithms/cube_sort.rb create mode 100644 src/code/ruby/sorting_algorithms/heap_sort.rb create mode 100644 src/code/ruby/sorting_algorithms/insertion_sort.rb create mode 100644 src/code/ruby/sorting_algorithms/merge_sort.rb create mode 100644 src/code/ruby/sorting_algorithms/pancake_sort.rb create mode 100644 src/code/ruby/sorting_algorithms/quick_sort.rb create mode 100644 src/code/ruby/sorting_algorithms/radix_sort.rb create mode 100644 src/code/ruby/sorting_algorithms/selection_sort.rb create mode 100644 src/code/ruby/sorting_algorithms/shell_sort.rb create mode 100644 src/code/ruby/sorting_algorithms/sleep_sort.rb create mode 100644 src/code/ruby/sorting_algorithms/tim_sort.rb create mode 100644 src/code/ruby/stack/monotonic_decreasing.rb create mode 100644 src/code/ruby/stack/monotonic_increasing.rb diff --git a/src/code/ruby/array/prefix_sum.rb b/src/code/ruby/array/prefix_sum.rb new file mode 100644 index 0000000..ba3bf80 --- /dev/null +++ b/src/code/ruby/array/prefix_sum.rb @@ -0,0 +1,13 @@ +# This method computes the prefix sum of an array. +# It returns a new array where each element at index i is the sum of elements from index 0 to i-1 in the original array. +# # For example, given the array [1, 2, 3], the prefix sum array will be [1, 3, 6]. +def prefix_sum(arr) + n = arr.length + prefix = [arr[0]] + + (1...n).each do |i| + prefix << (prefix.last + arr[i]) + end + + prefix +end diff --git a/src/code/ruby/array/sliding_window.rb b/src/code/ruby/array/sliding_window.rb new file mode 100644 index 0000000..a82669d --- /dev/null +++ b/src/code/ruby/array/sliding_window.rb @@ -0,0 +1,19 @@ +def fn(arr) + n = arr.length + window = 0 + left = 0 + result = 0 + + (0...n).each do |right| + # TODO: add arr[right] to window + + while WINDOW_CONDITION_BROKEN + # TODO: remove arr[left] from window + left += 1 + end + + # TODO: update result + end + + result +end diff --git a/src/code/ruby/array/string_building.rb b/src/code/ruby/array/string_building.rb new file mode 100644 index 0000000..18ad76f --- /dev/null +++ b/src/code/ruby/array/string_building.rb @@ -0,0 +1,15 @@ +def fn(strs) + # array of strings/chrs + ans = [] + + strs.each do |char| + ans << char + end + + ans.join('') +end + +# simple +def fn2(strs) + strs.join +end diff --git a/src/code/ruby/array/two_pointers_one_input.rb b/src/code/ruby/array/two_pointers_one_input.rb new file mode 100644 index 0000000..58f9567 --- /dev/null +++ b/src/code/ruby/array/two_pointers_one_input.rb @@ -0,0 +1,16 @@ +def fn(arr) + ans = 0 + left = 0 + right = arr.length - 1 + + while left < right + # TODO: logic with left and right + if CONDITION + left += 1 + else + right -= 1 + end + end + + ans +end \ No newline at end of file diff --git a/src/code/ruby/array/two_pointers_two_inputs.rb b/src/code/ruby/array/two_pointers_two_inputs.rb new file mode 100644 index 0000000..2506625 --- /dev/null +++ b/src/code/ruby/array/two_pointers_two_inputs.rb @@ -0,0 +1,25 @@ +def fn(arr1, arr2) + i, j = 0, 0 + ans = 0 + + while i < arr1.length && j < arr2.length + # TODO: Logic + if CONDITION + i += 1 + else + j += 1 + end + end + + while i < arr1.length + # TODO: Logic + i += 1 + end + + while j < arr2.length + # TODO: Logic + j += 1 + end + + ans +end diff --git a/src/code/ruby/backtracking/backtracking.rb b/src/code/ruby/backtracking/backtracking.rb new file mode 100644 index 0000000..364bba5 --- /dev/null +++ b/src/code/ruby/backtracking/backtracking.rb @@ -0,0 +1,16 @@ +def backtrack(curr, OTHER_ARGUMENTS...) + if(BASE_CASE) + # TODO: modify answer + return + end + + ans = 0 + + INPUTS.each do |i| + # TODO: modify current state + ans += backtrack(curr, OTHER_ARGUMENTS...) + # TODO: undo modification of current state + end + + ans +end diff --git a/src/code/ruby/binary_search/binary_search.rb b/src/code/ruby/binary_search/binary_search.rb new file mode 100644 index 0000000..46e887e --- /dev/null +++ b/src/code/ruby/binary_search/binary_search.rb @@ -0,0 +1,19 @@ +def fn(arr, target) + left = 0 + right = arr.length - 1 + + while left <= right + mid = (left + right) / 2 + + if arr[mid] == target + # TODO: logic + return + elsif arr[mid] > target + right = mid - 1 + else + left = mid + 1 + end + end + + left +end diff --git a/src/code/ruby/binary_search/duplicate_elements_left_insertion.rb b/src/code/ruby/binary_search/duplicate_elements_left_insertion.rb new file mode 100644 index 0000000..f99ccaa --- /dev/null +++ b/src/code/ruby/binary_search/duplicate_elements_left_insertion.rb @@ -0,0 +1,16 @@ +def fn(arr, target) + left = 0 + right = len(arr) + + while left < right + mid = (left + right) / 2 + + if arr[mid] >= target + right = mid + else + left = mid + 1 + end + end + + left +end diff --git a/src/code/ruby/binary_search/duplicate_elements_right_insertion.rb b/src/code/ruby/binary_search/duplicate_elements_right_insertion.rb new file mode 100644 index 0000000..f6852f1 --- /dev/null +++ b/src/code/ruby/binary_search/duplicate_elements_right_insertion.rb @@ -0,0 +1,16 @@ +def fn(arr, target) + left = 0 + right = len(arr) + + while left < right + mid = (left + right) / 2 + + if arr[mid] > target + right = mid + else + left = mid + 1 + end + end + + left +end diff --git a/src/code/ruby/binary_search/greedy_maximum.rb b/src/code/ruby/binary_search/greedy_maximum.rb new file mode 100644 index 0000000..323e029 --- /dev/null +++ b/src/code/ruby/binary_search/greedy_maximum.rb @@ -0,0 +1,21 @@ +def fn(arr) + left = MINIMUM_POSSIBLE_ANSWER + right = MAXIMUM_POSSIBLE_ANSWER + + while left <= right + mid = (left + right) / 2 # integer division + + if check(mid) + left = mid + 1 + else + right = mid - 1 + end + + end + + right +end + +def check(x) + BOOLEAN +end diff --git a/src/code/ruby/binary_search/greedy_minimum.rb b/src/code/ruby/binary_search/greedy_minimum.rb new file mode 100644 index 0000000..a1f6d3b --- /dev/null +++ b/src/code/ruby/binary_search/greedy_minimum.rb @@ -0,0 +1,20 @@ +def fn(arr) + left = MINIMUM_POSSIBLE_ANSWER + right = MAXIMUM_POSSIBLE_ANSWER + + while left <= right + mid = (left + right) / 2 # int div + + if check(mid) + right = mid - 1 + else + left = mid + 1 + end + end + + left +end + +def check(x) + BOOLEAN +end \ No newline at end of file diff --git a/src/code/ruby/binary_tree/bfs.rb b/src/code/ruby/binary_tree/bfs.rb new file mode 100644 index 0000000..094bfe1 --- /dev/null +++ b/src/code/ruby/binary_tree/bfs.rb @@ -0,0 +1,19 @@ +def fn(root) + queue = [root] + ans = 0 + + until queue.empty? + current_length = queue.length + # TODO: logic for current level + + current_length.times do + node = queue.shift + # TODO: logic + + queue << node.left if node.left + queue << node.right if node.right + end + end + + ans +end diff --git a/src/code/ruby/binary_tree/dfs_iterative.rb b/src/code/ruby/binary_tree/dfs_iterative.rb new file mode 100644 index 0000000..2305ca9 --- /dev/null +++ b/src/code/ruby/binary_tree/dfs_iterative.rb @@ -0,0 +1,14 @@ +def dfs(root) + stack = [root] + ans = 0 + + until stack.empty? + node = stack.pop + # TODO: logic + + stack << node.left if node.left + stack << node.right if node.right + end + + ans +end diff --git a/src/code/ruby/binary_tree/dfs_recursive.rb b/src/code/ruby/binary_tree/dfs_recursive.rb new file mode 100644 index 0000000..16a7f1d --- /dev/null +++ b/src/code/ruby/binary_tree/dfs_recursive.rb @@ -0,0 +1,11 @@ +def dfs(root) + return unless root + + ans = 0 + + # TODO: logic + dfs(root.left) + dfs(root.right) + + ans +end diff --git a/src/code/ruby/bit_manipulation/check_power_of_two.rb b/src/code/ruby/bit_manipulation/check_power_of_two.rb new file mode 100644 index 0000000..c5de3cf --- /dev/null +++ b/src/code/ruby/bit_manipulation/check_power_of_two.rb @@ -0,0 +1,3 @@ +def is_power_of_two(num) + (num & (num - 1)) == 0 +end diff --git a/src/code/ruby/bit_manipulation/clear_kth_bit.rb b/src/code/ruby/bit_manipulation/clear_kth_bit.rb new file mode 100644 index 0000000..1341bd0 --- /dev/null +++ b/src/code/ruby/bit_manipulation/clear_kth_bit.rb @@ -0,0 +1,3 @@ +def clear_kth_bit(num, k) + num & ~(1 << k) +end diff --git a/src/code/ruby/bit_manipulation/count_set_bits.rb b/src/code/ruby/bit_manipulation/count_set_bits.rb new file mode 100644 index 0000000..763fe41 --- /dev/null +++ b/src/code/ruby/bit_manipulation/count_set_bits.rb @@ -0,0 +1,3 @@ +def count_set_bits(num) + num.to_s(2).count('1') +end diff --git a/src/code/ruby/bit_manipulation/divide_power_of_two.rb b/src/code/ruby/bit_manipulation/divide_power_of_two.rb new file mode 100644 index 0000000..6865f1a --- /dev/null +++ b/src/code/ruby/bit_manipulation/divide_power_of_two.rb @@ -0,0 +1,3 @@ +def divide_by_power_of_two(num, k) + num >> k +end diff --git a/src/code/ruby/bit_manipulation/get_rightmost_bit.rb b/src/code/ruby/bit_manipulation/get_rightmost_bit.rb new file mode 100644 index 0000000..55b71eb --- /dev/null +++ b/src/code/ruby/bit_manipulation/get_rightmost_bit.rb @@ -0,0 +1,3 @@ +def get_rightmost_set_bit(num) + num & -num +end diff --git a/src/code/ruby/bit_manipulation/multiply_power_of_two.rb b/src/code/ruby/bit_manipulation/multiply_power_of_two.rb new file mode 100644 index 0000000..1f0dd6d --- /dev/null +++ b/src/code/ruby/bit_manipulation/multiply_power_of_two.rb @@ -0,0 +1,3 @@ +def multiply_by_power_of_two(num, k) + num << k +end diff --git a/src/code/ruby/bit_manipulation/set_kth_bit.rb b/src/code/ruby/bit_manipulation/set_kth_bit.rb new file mode 100644 index 0000000..a92e3a7 --- /dev/null +++ b/src/code/ruby/bit_manipulation/set_kth_bit.rb @@ -0,0 +1,3 @@ +def set_kth_bit(num, k) + num | (1 << k) +end diff --git a/src/code/ruby/bit_manipulation/swap_variables.rb b/src/code/ruby/bit_manipulation/swap_variables.rb new file mode 100644 index 0000000..56e3fb6 --- /dev/null +++ b/src/code/ruby/bit_manipulation/swap_variables.rb @@ -0,0 +1,9 @@ +# in-memory swaps +# unnecessary for modern languages +def swap_variables(num1, num2) + num1 ^= num2 + num2 ^= num1 + num1 ^= num2 + + return num1, num2 +end diff --git a/src/code/ruby/bit_manipulation/test_kth_bit.rb b/src/code/ruby/bit_manipulation/test_kth_bit.rb new file mode 100644 index 0000000..552984b --- /dev/null +++ b/src/code/ruby/bit_manipulation/test_kth_bit.rb @@ -0,0 +1,3 @@ +def test_kth_bit(num, k) + num & (1 << k) != 0 +end diff --git a/src/code/ruby/bit_manipulation/toggle_kth_bit.rb b/src/code/ruby/bit_manipulation/toggle_kth_bit.rb new file mode 100644 index 0000000..1337e0b --- /dev/null +++ b/src/code/ruby/bit_manipulation/toggle_kth_bit.rb @@ -0,0 +1,3 @@ +def toggle_kth_bit(num, k) + num ^ (1 << k) +end diff --git a/src/code/ruby/data_structures/array.rb b/src/code/ruby/data_structures/array.rb new file mode 100644 index 0000000..9859a78 --- /dev/null +++ b/src/code/ruby/data_structures/array.rb @@ -0,0 +1,23 @@ + +class Array + def initialize(size) + @size = size + @data = Array.new(size) + end + + def [](index) + @data[index] + end + + def []=(index, value) + @data[index] = value + end + + def length + @data.length + end + + def to_s + @data.to_s + end +end diff --git a/src/code/ruby/data_structures/binary_search_tree.rb b/src/code/ruby/data_structures/binary_search_tree.rb new file mode 100644 index 0000000..2f96460 --- /dev/null +++ b/src/code/ruby/data_structures/binary_search_tree.rb @@ -0,0 +1,58 @@ +class TreeNode + attr_accessor :data, :left, :right + + def initialize(data) + @data = data + @left = nil + @right = nil + end +end + +class BinarySearchTree + attr_accessor :root + + def initialize + @root = nil + end + + def insert(data) + if @root.nil? + @root = TreeNode.new(data) + else + insert_node(@root, data) + end + end + + def insert_node(node, data) + if data < node.data + if node.left.nil? + node.left = TreeNode.new(data) + else + insert_node(node.left, data) + end + else + if node.right.nil? + node.right = TreeNode.new(data) + else + insert_node(node.right, data) + end + end + end + + def to_s + @root.nil? ? 'Empty tree' : print_tree(@root, '', true) + end + + private + + def print_tree(node, prefix, is_left) + return '' if node.nil? + + result = '' + result += print_tree(node.right, prefix + (is_left ? '│ ' : ' '), false) + result += prefix + (is_left ? '└── ' : '┌── ') + node.data.to_s + "\n" + result += print_tree(node.left, prefix + (is_left ? ' ' : '│ '), true) + + result + end +end diff --git a/src/code/ruby/data_structures/binary_tree.rb b/src/code/ruby/data_structures/binary_tree.rb new file mode 100644 index 0000000..0b921cd --- /dev/null +++ b/src/code/ruby/data_structures/binary_tree.rb @@ -0,0 +1,56 @@ +class TreeNode + attr_accessor :data, :left, :right + + def initialize(data) + @data = data + @left = nil + @right = nil + end +end + +class BinaryTree + attr_accessor :root + + def initialize + @root = nil + end + + def insert(data) + if @root.nil? + @root = TreeNode.new(data) + else + insert_node(@root, data) + end + end + + def insert_node(node, data) + return TreeNode.new(data) if node.nil? + + if node.left.nil? + node.left = TreeNode.new(data) + elsif node.right.nil? + node.right = TreeNode.new(data) + else + node.left = insert_node(node.left, data) + end + + node + end + + def to_s + @root.nil? ? 'Empty tree' : print_tree(@root, '', true) + end + + private + + def print_tree(node, prefix, is_left) + return '' if node.nil? + + result = '' + result += print_tree(node.right, prefix + (is_left ? '│ ' : ' '), false) + result += prefix + (is_left ? '└── ' : '┌── ') + node.data.to_s + "\n" + result += print_tree(node.left, prefix + (is_left ? ' ' : '│ '), true) + + result + end +end diff --git a/src/code/ruby/data_structures/doubly_linked_list.rb b/src/code/ruby/data_structures/doubly_linked_list.rb new file mode 100644 index 0000000..94b2377 --- /dev/null +++ b/src/code/ruby/data_structures/doubly_linked_list.rb @@ -0,0 +1,84 @@ +class ListNode + attr_accessor :data, :prev, :next + + def initialize(data) + @data = data + @prev = nil + @next = nil + end + + def to_s + "[#{@data}]" + end +end + +class DoublyLinkedList + attr_accessor :head + + def initialize + @head = nil + end + + def append(data) + if @head.nil? + @head = ListNode.new(data) + return + end + + curr = @head + curr = curr.next while curr.next + + new_node = ListNode.new(data) + curr.next = new_node + new_node.prev = curr + end + + def delete(data) + return if @head.nil? + + if @head.data == data + @head = @head.next + @head.prev = nil if @head + return + end + + curr = @head + while curr + if curr.data == data + prev_node = curr.prev + prev_node.next = curr.next + curr.next.prev = prev_node if curr.next + return + end + curr = curr.next + end + end + + def reverse + curr = @head + prev = nil + + while curr + nxt = curr.next + curr.next = prev + curr.prev = nxt + prev = curr + curr = nxt + end + + @head = prev + end + + def to_s + return 'None' if @head.nil? + + nodes = [] + curr = @head + while curr + nodes << curr.to_s + curr = curr.next + end + + nodes.join(' <-> ') + ' <-> None' + end +end diff --git a/src/code/ruby/data_structures/graph.rb b/src/code/ruby/data_structures/graph.rb new file mode 100644 index 0000000..086702c --- /dev/null +++ b/src/code/ruby/data_structures/graph.rb @@ -0,0 +1,30 @@ +class Graph + attr_accessor :graph + + def initialize + @graph = {} + end + + def add_vertex(vertex) + @graph[vertex] ||= [] + end + + def add_edge(a, b) + add_vertex(a) + add_vertex(b) + @graph[a] << b + @graph[b] << a + end + + def get_neighbors(vertex) + @graph.fetch(vertex, []) + end + + def to_s + output = '' + @graph.each do |vertex, neighbors| + output += "#{vertex} - #{neighbors.join(' - ')}\n" + end + output + end +end diff --git a/src/code/ruby/data_structures/hash_map.rb b/src/code/ruby/data_structures/hash_map.rb new file mode 100644 index 0000000..db45f06 --- /dev/null +++ b/src/code/ruby/data_structures/hash_map.rb @@ -0,0 +1,22 @@ +class HashMap + def initialize + @size = 100_000 + @bucket = Array.new(@size) + end + + def hash_key(key) + key.hash % @size + end + + def []=(key, value) + @bucket[hash_key(key)] = value + end + + def [](key) + @bucket[hash_key(key)] + end + + def delete(key) + @bucket[hash_key(key)] = nil + end +end diff --git a/src/code/ruby/data_structures/linked_list.rb b/src/code/ruby/data_structures/linked_list.rb new file mode 100644 index 0000000..6ec857d --- /dev/null +++ b/src/code/ruby/data_structures/linked_list.rb @@ -0,0 +1,79 @@ +class ListNode + attr_accessor :data, :next + + def initialize(data) + @data = data + @next = nil + end + + def to_s + "[#{@data}]" + end +end + +class LinkedList + attr_accessor :head + + def initialize + @head = nil + end + + def append(data) + if @head.nil? + @head = ListNode.new(data) + return + end + + curr = @head + curr = curr.next while curr.next + curr.next = ListNode.new(data) + end + + def delete(data) + return if @head.nil? + + if @head.data == data + @head = @head.next + return + end + + prev = nil + curr = @head + + while curr + if curr.data == data + prev.next = curr.next + return + end + prev = curr + curr = curr.next + end + end + + def reverse + prev = nil + curr = @head + + while curr + nxt = curr.next + curr.next = prev + prev = curr + curr = nxt + end + + @head = prev + end + + def to_s + return 'nil' if @head.nil? + + nodes = [] + curr = @head + while curr + nodes << curr.to_s + curr = curr.next + end + + nodes.join(' -> ') + ' -> nil' + end +end diff --git a/src/code/ruby/data_structures/trie.rb b/src/code/ruby/data_structures/trie.rb new file mode 100644 index 0000000..d232127 --- /dev/null +++ b/src/code/ruby/data_structures/trie.rb @@ -0,0 +1,80 @@ +class TrieNode + attr_accessor :children, :is_word + + def initialize + @children = {} + @is_word = false + end +end + +class Trie + attr_accessor :root + + def initialize + @root = TrieNode.new + end + + def build(words) + words.each { |word| insert(word) } + end + + def insert(word) + node = @root + word.each_char do |char| + node.children[char] ||= TrieNode.new + node = node.children[char] + end + node.is_word = true + end + + def search(word) + node = @root + word.each_char do |char| + return false unless node.children.key?(char) + node = node.children[char] + end + node.is_word + end + + def starts_with(prefix) + node = @root + prefix.each_char do |char| + return false unless node.children.key?(char) + node = node.children[char] + end + true + end + + def collect_words(node = @root, prefix = '') + words = [] + words << prefix if node.is_word + node.children.each do |char, child_node| + words.concat(collect_words(child_node, prefix + char)) + end + words + end + + def to_s + "Trie:\n" + print_trie(@root) + end + + private + + def print_trie(node, level = 0, prefix = '') + return '' unless node + + output = '' + prefix_str = ' ' * level + prefix + output += prefix_str + ' ├─ (*)' + "\n" if node.is_word + + node.children.each_with_index do |(char, child_node), i| + is_last = i == node.children.size - 1 + marker = is_last ? '└─ ' : '├─ ' + output += prefix_str + marker + char + "\n" + new_prefix = is_last ? ' ' : ' │' + output += print_trie(child_node, level + 1, new_prefix) + end + + output + end +end diff --git a/src/code/ruby/data_structures/union_find.rb b/src/code/ruby/data_structures/union_find.rb new file mode 100644 index 0000000..0b355b4 --- /dev/null +++ b/src/code/ruby/data_structures/union_find.rb @@ -0,0 +1,33 @@ +class UnionFind + attr_accessor :root + + def initialize(n) + @root = Array.new(n) { |i| i } + end + + def find(a) + return a if a == @root[a] + + @root[a] = find(@root[a]) + end + + def union(a, b) + @root[find(a)] = find(b) + end + + def connected(a, b) + find(a) == find(b) + end + + def to_s + n = @root.size + components = Hash.new { |h, k| h[k] = [] } + + (0...n).each do |i| + root_i = find(i) + components[root_i] << i + end + + components.values.map { |comp| comp.map { |node| "(#{node})" }.join(' - ') }.join("\n") + end +end diff --git a/src/code/ruby/data_structures/union_find_optimized.rb b/src/code/ruby/data_structures/union_find_optimized.rb new file mode 100644 index 0000000..50bcf15 --- /dev/null +++ b/src/code/ruby/data_structures/union_find_optimized.rb @@ -0,0 +1,46 @@ +class UnionFind + attr_accessor :root, :rank + + def initialize(n) + @root = Array.new(n) { |i| i } + @rank = Array.new(n, 1) + end + + def find(a) + return a if a == @root[a] + + @root[a] = find(@root[a]) + end + + def union(a, b) + root_a = find(a) + root_b = find(b) + + return if root_a == root_b + + if @rank[root_a] < @rank[root_b] + @root[root_a] = root_b + elsif @rank[root_a] > @rank[root_b] + @root[root_b] = root_a + else + @root[root_b] = root_a + @rank[root_a] += 1 + end + end + + def connected(a, b) + find(a) == find(b) + end + + def to_s + n = @root.size + components = Hash.new { |h, k| h[k] = [] } + + (0...n).each do |i| + root_i = find(i) + components[root_i] << i + end + + components.values.map { |comp| comp.map { |node| "(#{node})" }.join(' - ') }.join("\n") + end +end diff --git a/src/code/ruby/dynamic_programming/bottom_up.rb b/src/code/ruby/dynamic_programming/bottom_up.rb new file mode 100644 index 0000000..4433940 --- /dev/null +++ b/src/code/ruby/dynamic_programming/bottom_up.rb @@ -0,0 +1,17 @@ +def fn(arr) + if BASE_CASE + return 0 + end + + dp = Array.new(STATE_FOR_WHOLE_INPUT + 1, BASE_CASE) + + (SMALLEST_SUBPROBLEM..STATE_FOR_WHOLE_INPUT).each do |state| + if BASE_CASE + dp[state] = BASE_CASE + else + dp[state] = RECURRENCE_RELATION(state) + end + end + + dp[STATE_FOR_WHOLE_INPUT] +end diff --git a/src/code/ruby/dynamic_programming/kadane.rb b/src/code/ruby/dynamic_programming/kadane.rb new file mode 100644 index 0000000..081e5f7 --- /dev/null +++ b/src/code/ruby/dynamic_programming/kadane.rb @@ -0,0 +1,11 @@ +def kadane(arr) + curr_sub = arr[0] + max_sub = arr[0] + + arr[1..-1].each do |num| + curr_sub = [curr_sub + num, num].max + max_sub = [max_sub, curr_sub].max + end + + max_sub +end diff --git a/src/code/ruby/dynamic_programming/top_down.rb b/src/code/ruby/dynamic_programming/top_down.rb new file mode 100644 index 0000000..788c719 --- /dev/null +++ b/src/code/ruby/dynamic_programming/top_down.rb @@ -0,0 +1,12 @@ +def fn(arr) + cache = {} + + dp = lambda do |state| + return 0 if BASE_CASE + return cache[state] if cache.key?(state) + + cache[state] = RECURRENCE_RELATION(state) + end + + dp.call(STATE_FOR_WHOLE_INPUT) +end diff --git a/src/code/ruby/graph/bellman_ford.rb b/src/code/ruby/graph/bellman_ford.rb new file mode 100644 index 0000000..1047e10 --- /dev/null +++ b/src/code/ruby/graph/bellman_ford.rb @@ -0,0 +1,20 @@ +def bellman_ford(n, edges, source) + distances = Array.new(n, Float::INFINITY) + distances[source] = 0 + + (n - 1).times do + edges.each do |u, v, w| + if distances[u] != Float::INFINITY && distances[u] + w < distances[v] + distances[v] = distances[u] + w + end + end + end + + edges.each do |u, v, w| + if distances[u] != Float::INFINITY && distances[u] + w < distances[v] + return [] + end + end + + distances +end diff --git a/src/code/ruby/graph/bfs.rb b/src/code/ruby/graph/bfs.rb new file mode 100644 index 0000000..53b29eb --- /dev/null +++ b/src/code/ruby/graph/bfs.rb @@ -0,0 +1,20 @@ +require 'set' + +def fn(graph) + queue = [START_NODE] + seen = Set.new([START_NODE]) + ans = 0 + + until queue.empty? + node = queue.shift + # TODO: logic + graph[node].each do |neighbor| + unless seen.include?(neighbor) + seen.add(neighbor) + queue << neighbor + end + end + end + + ans +end diff --git a/src/code/ruby/graph/dfs_iterative.rb b/src/code/ruby/graph/dfs_iterative.rb new file mode 100644 index 0000000..245b1b8 --- /dev/null +++ b/src/code/ruby/graph/dfs_iterative.rb @@ -0,0 +1,20 @@ +require 'set' + +def fn(graph) + stack = [START_NODE] + seen = Set.new([START_NODE]) + ans = 0 + + until stack.empty? + node = stack.pop + # TODO: logic + graph[node].each do |neighbor| + unless seen.include?(neighbor) + seen.add(neighbor) + stack << neighbor + end + end + end + + ans +end diff --git a/src/code/ruby/graph/dfs_recursive.rb b/src/code/ruby/graph/dfs_recursive.rb new file mode 100644 index 0000000..e87921b --- /dev/null +++ b/src/code/ruby/graph/dfs_recursive.rb @@ -0,0 +1,19 @@ +require 'set' + +def fn(graph) + seen = Set.new([START_NODE]) + + dfs = lambda do |node| + ans = 0 + # TODO: logic + graph[node].each do |neighbor| + unless seen.include?(neighbor) + seen.add(neighbor) + ans += dfs.call(neighbor) + end + end + ans + end + + dfs.call(START_NODE) +end diff --git a/src/code/ruby/graph/dijkstra.rb b/src/code/ruby/graph/dijkstra.rb new file mode 100644 index 0000000..96a2283 --- /dev/null +++ b/src/code/ruby/graph/dijkstra.rb @@ -0,0 +1,26 @@ +require 'priority_queue' + +def dijkstras(graph, source) + n = graph.size + distances = Array.new(n, Float::INFINITY) + + distances[source] = 0 + + heap = PriorityQueue.new + heap[source] = 0 + + until heap.empty? + node, curr_dist = heap.delete_min + next if curr_dist > distances[node] + + graph[node].each do |neighbor, weight| + dist = curr_dist + weight + if dist < distances[neighbor] + distances[neighbor] = dist + heap[neighbor] = dist + end + end + end + + distances +end diff --git a/src/code/ruby/graph/kahn.rb b/src/code/ruby/graph/kahn.rb new file mode 100644 index 0000000..c82f1af --- /dev/null +++ b/src/code/ruby/graph/kahn.rb @@ -0,0 +1,24 @@ +def kahn_topological_sort(graph) + result = [] + indegree = Hash.new(0) + + graph.each_value do |vertices| + vertices.each do |v| + indegree[v] += 1 + end + end + + queue = graph.keys.select { |node| indegree[node] == 0 } + + until queue.empty? + node = queue.shift + result << node + + graph[node].each do |neighbor| + indegree[neighbor] -= 1 + queue << neighbor if indegree[neighbor] == 0 + end + end + + result.size == graph.size ? result : [] +end diff --git a/src/code/ruby/graph/kruskal.rb b/src/code/ruby/graph/kruskal.rb new file mode 100644 index 0000000..3075fc7 --- /dev/null +++ b/src/code/ruby/graph/kruskal.rb @@ -0,0 +1,12 @@ +def kruskal_mst(n, edges) + mst = [] + uf = UnionFind.new(n) + edges.sort.each do |w, u, v| + unless uf.connected(u, v) + uf.union(u, v) + mst << [w, u, v] + end + end + + mst +end diff --git a/src/code/ruby/graph/prim.rb b/src/code/ruby/graph/prim.rb new file mode 100644 index 0000000..805b91a --- /dev/null +++ b/src/code/ruby/graph/prim.rb @@ -0,0 +1,12 @@ +def prim_mst(n, edges) + mst = [] + uf = UnionFind.new(n) + edges.sort.each do |w, u, v| + unless uf.connected(u, v) + uf.union(u, v) + mst << [w, u, v] + end + end + + mst +end diff --git a/src/code/ruby/hash_map/find_number_of_subarrays.rb b/src/code/ruby/hash_map/find_number_of_subarrays.rb new file mode 100644 index 0000000..744ece8 --- /dev/null +++ b/src/code/ruby/hash_map/find_number_of_subarrays.rb @@ -0,0 +1,14 @@ +def fn(arr, k) + counts = Hash.new(0) + counts[0] = 1 + ans = 0 + curr = 0 + + arr.each do |num| + # TODO: logic to change curr + ans += counts[curr - k] + counts[curr] += 1 + end + + ans +end diff --git a/src/code/ruby/hash_map/sliding_window.rb b/src/code/ruby/hash_map/sliding_window.rb new file mode 100644 index 0000000..e089bde --- /dev/null +++ b/src/code/ruby/hash_map/sliding_window.rb @@ -0,0 +1,20 @@ +require 'set' + +def fn(arr) + window = Set.new + ans = 0 + left = 0 + + arr.each_with_index do |ELEMENT, right| + # TODO: add arr[right] to window + + while WINDOW_CONDITION_BROKEN + # TODO: remove arr[left] from window + left += 1 + end + + # TODO: update ans + end + + ans +end diff --git a/src/code/ruby/heap/find_top_k_elements.rb b/src/code/ruby/heap/find_top_k_elements.rb new file mode 100644 index 0000000..fa80456 --- /dev/null +++ b/src/code/ruby/heap/find_top_k_elements.rb @@ -0,0 +1,15 @@ +def fn(arr, k) + heap = [] + + arr.each do |num| + # TODO: logic to push onto heap according to problem's criteria + heap.push([CRITERIA, num]) + + if heap.size > k + # TODO: pop the top element from heap + heap.pop + end + end + + heap.map { |item| item[1] } +end diff --git a/src/code/ruby/linked_list/fast_and_slow_pointer.rb b/src/code/ruby/linked_list/fast_and_slow_pointer.rb new file mode 100644 index 0000000..1cbf5f4 --- /dev/null +++ b/src/code/ruby/linked_list/fast_and_slow_pointer.rb @@ -0,0 +1,13 @@ +def fn(head) + slow = head + fast = head + ans = 0 + + until fast.nil? || fast.next.nil? + # TODO: logic + slow = slow.next + fast = fast.next.next + end + + ans +end diff --git a/src/code/ruby/linked_list/reverse_linked_list.rb b/src/code/ruby/linked_list/reverse_linked_list.rb new file mode 100644 index 0000000..67ae6bf --- /dev/null +++ b/src/code/ruby/linked_list/reverse_linked_list.rb @@ -0,0 +1,13 @@ +def fn(head) + prev = nil + curr = head + + until curr.nil? + nxt = curr.next + curr.next = prev + prev = curr + curr = nxt + end + + prev +end diff --git a/src/code/ruby/matrix/create_copy.rb b/src/code/ruby/matrix/create_copy.rb new file mode 100644 index 0000000..5824061 --- /dev/null +++ b/src/code/ruby/matrix/create_copy.rb @@ -0,0 +1,7 @@ +def fn(matrix) + r = matrix.size + c = matrix[0].size + + create_matrix = Array.new(r) { Array.new(c, 0) } + copy_matrix = matrix.map(&:dup) +end diff --git a/src/code/ruby/matrix/diagonals.rb b/src/code/ruby/matrix/diagonals.rb new file mode 100644 index 0000000..6a5a56e --- /dev/null +++ b/src/code/ruby/matrix/diagonals.rb @@ -0,0 +1,7 @@ +def fn(matrix) + r = matrix.size + c = matrix[0].size + + main_diagonal = (0...[r, c].min).map { |i| matrix[i][i] } + anti_diagonal = (0...[r, c].min).map { |i| matrix[i][-i - 1] } +end diff --git a/src/code/ruby/matrix/rotate_transpose.rb b/src/code/ruby/matrix/rotate_transpose.rb new file mode 100644 index 0000000..013e2d6 --- /dev/null +++ b/src/code/ruby/matrix/rotate_transpose.rb @@ -0,0 +1,8 @@ +def fn(matrix) + r = matrix.size + c = matrix[0].size + + transpose = matrix[0].zip(*matrix[1..-1]) + rotate_left = transpose.reverse + rotate_right = transpose.map(&:reverse) +end diff --git a/src/code/ruby/sorting_algorithms/bogo_sort.rb b/src/code/ruby/sorting_algorithms/bogo_sort.rb new file mode 100644 index 0000000..94da314 --- /dev/null +++ b/src/code/ruby/sorting_algorithms/bogo_sort.rb @@ -0,0 +1,7 @@ +def bogo_sort(arr) + target = arr.sort + + until arr == target + arr.shuffle! + end +end diff --git a/src/code/ruby/sorting_algorithms/bubble_sort.rb b/src/code/ruby/sorting_algorithms/bubble_sort.rb new file mode 100644 index 0000000..6da8697 --- /dev/null +++ b/src/code/ruby/sorting_algorithms/bubble_sort.rb @@ -0,0 +1,16 @@ +def bubble_sort(arr) + n = arr.size + + n.times do |i| + swapped = false + + (0...(n - i - 1)).each do |j| + if arr[j] > arr[j + 1] + arr[j], arr[j + 1] = arr[j + 1], arr[j] + swapped = true + end + end + + break unless swapped + end +end diff --git a/src/code/ruby/sorting_algorithms/bucket_sort.rb b/src/code/ruby/sorting_algorithms/bucket_sort.rb new file mode 100644 index 0000000..bfa1256 --- /dev/null +++ b/src/code/ruby/sorting_algorithms/bucket_sort.rb @@ -0,0 +1,14 @@ +def bucket_sort(arr) + num_buckets = 10 + min_num = arr.min + max_num = arr.max + bucket_size = (max_num - min_num).to_f / num_buckets + buckets = Array.new(num_buckets) { [] } + + arr.each do |num| + index = [( (num - min_num) / bucket_size ).to_i, num_buckets - 1].min + buckets[index] << num + end + + buckets.map { |bucket| bucket.sort }.flatten +end diff --git a/src/code/ruby/sorting_algorithms/counting_sort.rb b/src/code/ruby/sorting_algorithms/counting_sort.rb new file mode 100644 index 0000000..3b93f45 --- /dev/null +++ b/src/code/ruby/sorting_algorithms/counting_sort.rb @@ -0,0 +1,23 @@ + +def counting_sort(arr) + max_num = arr.max + min_num = arr.min + count_range = max_num - min_num + 1 + count = Array.new(count_range, 0) + output = Array.new(arr.size, 0) + + arr.each do |num| + count[num - min_num] += 1 + end + + (1...count_range).each do |i| + count[i] += count[i - 1] + end + + arr.reverse_each do |num| + output[count[num - min_num] - 1] = num + count[num - min_num] -= 1 + end + + output +end diff --git a/src/code/ruby/sorting_algorithms/cube_sort.rb b/src/code/ruby/sorting_algorithms/cube_sort.rb new file mode 100644 index 0000000..04185f5 --- /dev/null +++ b/src/code/ruby/sorting_algorithms/cube_sort.rb @@ -0,0 +1,28 @@ +def cube_sort(arr, processors) + n = arr.size + subarrays = [] + subarray_size = n / processors + + (0...processors).each do |i| + subarray = arr[i * subarray_size, subarray_size] + subarrays << subarray + end + + subarrays.each(&:sort!) + + (0...(processors.bit_length - 1)).each do |dimension| + (0...processors).each do |i| + partner = i ^ (1 << dimension) + if i < partner + merged = subarrays[i] + subarrays[partner] + else + merged = subarrays[partner] + subarrays[i] + end + merged.sort! + subarrays[i] = merged[0...subarray_size] + subarrays[partner] = merged[subarray_size, subarray_size] + end + end + + arr.replace(subarrays.flatten) +end diff --git a/src/code/ruby/sorting_algorithms/heap_sort.rb b/src/code/ruby/sorting_algorithms/heap_sort.rb new file mode 100644 index 0000000..7cc85bd --- /dev/null +++ b/src/code/ruby/sorting_algorithms/heap_sort.rb @@ -0,0 +1,28 @@ +def heap_sort(arr) + n = arr.size + + (n / 2 - 1).downto(0) do |i| + heapify(arr, n, i) + end + + (n - 1).downto(1) do |i| + arr[i], arr[0] = arr[0], arr[i] + heapify(arr, i, 0) + end + + arr +end + +def heapify(arr, n, i) + largest = i + left = 2 * i + 1 + right = 2 * i + 2 + + largest = left if left < n && arr[left] > arr[largest] + largest = right if right < n && arr[right] > arr[largest] + + if largest != i + arr[i], arr[largest] = arr[largest], arr[i] + heapify(arr, n, largest) + end +end diff --git a/src/code/ruby/sorting_algorithms/insertion_sort.rb b/src/code/ruby/sorting_algorithms/insertion_sort.rb new file mode 100644 index 0000000..442342b --- /dev/null +++ b/src/code/ruby/sorting_algorithms/insertion_sort.rb @@ -0,0 +1,15 @@ +def insertion_sort(arr) + n = arr.size + + (1...n).each do |i| + key = arr[i] + j = i - 1 + + while j >= 0 && key < arr[j] + arr[j + 1] = arr[j] + j -= 1 + end + + arr[j + 1] = key + end +end diff --git a/src/code/ruby/sorting_algorithms/merge_sort.rb b/src/code/ruby/sorting_algorithms/merge_sort.rb new file mode 100644 index 0000000..4f7cc41 --- /dev/null +++ b/src/code/ruby/sorting_algorithms/merge_sort.rb @@ -0,0 +1,24 @@ +def merge_sort(arr) + n = arr.size + return arr if n <= 1 + + mid = n / 2 + left = merge_sort(arr[0...mid]) + right = merge_sort(arr[mid..-1]) + + merge(left, right) +end + +def merge(left, right) + output = [] + + until left.empty? || right.empty? + if left.first <= right.first + output << left.shift + else + output << right.shift + end + end + + output + left + right +end diff --git a/src/code/ruby/sorting_algorithms/pancake_sort.rb b/src/code/ruby/sorting_algorithms/pancake_sort.rb new file mode 100644 index 0000000..bd50db4 --- /dev/null +++ b/src/code/ruby/sorting_algorithms/pancake_sort.rb @@ -0,0 +1,32 @@ +def pancake_sort(arr) + n = arr.size + + (2..n).to_a.reverse.each do |size| + max_idx = find_max_index(arr, size) + + if max_idx != size - 1 + flip(arr, max_idx) + flip(arr, size - 1) + end + end +end + +def flip(arr, i) + left = 0 + + while left < i + arr[left], arr[i] = arr[i], arr[left] + left += 1 + i -= 1 + end +end + +def find_max_index(arr, n) + max_idx = 0 + + n.times do |i| + max_idx = i if arr[i] > arr[max_idx] + end + + max_idx +end diff --git a/src/code/ruby/sorting_algorithms/quick_sort.rb b/src/code/ruby/sorting_algorithms/quick_sort.rb new file mode 100644 index 0000000..cb6ea0b --- /dev/null +++ b/src/code/ruby/sorting_algorithms/quick_sort.rb @@ -0,0 +1,10 @@ +def quick_sort(arr) + n = arr.size + return arr if n <= 1 + + pivot = arr[n / 2] + left = arr.select { |x| x < pivot } + right = arr.select { |x| x > pivot } + + quick_sort(left) + [pivot] + quick_sort(right) +end diff --git a/src/code/ruby/sorting_algorithms/radix_sort.rb b/src/code/ruby/sorting_algorithms/radix_sort.rb new file mode 100644 index 0000000..c6362ec --- /dev/null +++ b/src/code/ruby/sorting_algorithms/radix_sort.rb @@ -0,0 +1,34 @@ +def radix_sort(arr) + max_val = arr.max + exp = 1 + + while max_val / exp > 0 + counting_sort(arr, exp) + exp *= 10 + end +end + +def counting_sort(arr, exp) + n = arr.size + output = Array.new(n, 0) + count = Array.new(10, 0) + + n.times do |i| + idx = arr[i] / exp + count[idx % 10] += 1 + end + + (1...10).each do |i| + count[i] += count[i - 1] + end + + (n - 1).downto(0) do |i| + idx = arr[i] / exp + output[count[idx % 10] - 1] = arr[i] + count[idx % 10] -= 1 + end + + n.times do |i| + arr[i] = output[i] + end +end diff --git a/src/code/ruby/sorting_algorithms/selection_sort.rb b/src/code/ruby/sorting_algorithms/selection_sort.rb new file mode 100644 index 0000000..bc8e058 --- /dev/null +++ b/src/code/ruby/sorting_algorithms/selection_sort.rb @@ -0,0 +1,13 @@ +def selection_sort(arr) + n = arr.size + + n.times do |i| + min_i = i + + ((i + 1)...n).each do |j| + min_i = j if arr[j] < arr[min_i] + end + + arr[i], arr[min_i] = arr[min_i], arr[i] if min_i != i + end +end diff --git a/src/code/ruby/sorting_algorithms/shell_sort.rb b/src/code/ruby/sorting_algorithms/shell_sort.rb new file mode 100644 index 0000000..2a750a4 --- /dev/null +++ b/src/code/ruby/sorting_algorithms/shell_sort.rb @@ -0,0 +1,18 @@ +def shell_sort(arr) + n = arr.size + gaps = [701, 301, 132, 57, 23, 10, 4, 1] + + gaps.each do |gap| + (gap...n).each do |i| + tmp = arr[i] + j = i + + while j >= gap && arr[j - gap] > tmp + arr[j] = arr[j - gap] + j -= gap + end + + arr[j] = tmp if j != i + end + end +end diff --git a/src/code/ruby/sorting_algorithms/sleep_sort.rb b/src/code/ruby/sorting_algorithms/sleep_sort.rb new file mode 100644 index 0000000..dc8b244 --- /dev/null +++ b/src/code/ruby/sorting_algorithms/sleep_sort.rb @@ -0,0 +1,14 @@ +def sleep_sort(arr) + sorted_arr = [] + threads = [] + + arr.each do |num| + threads << Thread.new do + sleep(num / 1000.0) + sorted_arr << num + end + end + + threads.each(&:join) + sorted_arr +end diff --git a/src/code/ruby/sorting_algorithms/tim_sort.rb b/src/code/ruby/sorting_algorithms/tim_sort.rb new file mode 100644 index 0000000..6feda10 --- /dev/null +++ b/src/code/ruby/sorting_algorithms/tim_sort.rb @@ -0,0 +1,58 @@ +def tim_sort(arr) + n = arr.size + min_run = 32 + + (0...n).step(min_run) do |start_idx| + end_idx = [start_idx + min_run - 1, n - 1].min + insertion_sort(arr, start_idx, end_idx) + end + + size = min_run + + while size < n + (0...n).step(2 * size) do |left| + mid = [left + size - 1, n - 1].min + right = [left + 2 * size - 1, n - 1].min + arr[left..right] = merge(arr[left..mid], arr[(mid + 1)..right]) + end + size *= 2 + end + + arr +end + +def insertion_sort(arr, left, right) + (left + 1..right).each do |i| + key = arr[i] + j = i + while j > left && key < arr[j - 1] + arr[j] = arr[j - 1] + j -= 1 + end + arr[j] = key + end +end + +def merge_sort(arr) + return arr if arr.size <= 1 + + mid = arr.size / 2 + left = merge_sort(arr[0...mid]) + right = merge_sort(arr[mid..-1]) + + merge(left, right) +end + +def merge(left, right) + output = [] + + until left.empty? || right.empty? + if left.first <= right.first + output << left.shift + else + output << right.shift + end + end + + output + left + right +end diff --git a/src/code/ruby/stack/monotonic_decreasing.rb b/src/code/ruby/stack/monotonic_decreasing.rb new file mode 100644 index 0000000..491c954 --- /dev/null +++ b/src/code/ruby/stack/monotonic_decreasing.rb @@ -0,0 +1,14 @@ +def fn(arr) + stack = [] + ans = 0 + + arr.each do |num| + while !stack.empty? && stack[-1] < num + # TODO: logic + stack.pop + end + stack << num + end + + ans +end diff --git a/src/code/ruby/stack/monotonic_increasing.rb b/src/code/ruby/stack/monotonic_increasing.rb new file mode 100644 index 0000000..e656b33 --- /dev/null +++ b/src/code/ruby/stack/monotonic_increasing.rb @@ -0,0 +1,14 @@ +def fn(arr) + stack = [] + ans = 0 + + arr.each do |num| + while !stack.empty? && stack[-1] > num + # TODO: logic + stack.pop + end + stack << num + end + + ans +end From e7622b90c3bee5b85dba88a82fd9962a84bbee05 Mon Sep 17 00:00:00 2001 From: Shiva Bhusal Date: Thu, 27 Nov 2025 13:13:21 +0545 Subject: [PATCH 4/5] Adds Ruby language support and various algorithm implementations --- src/components/Code/index.tsx | 4 ++- src/components/Language/context.tsx | 2 +- src/components/Tabs/index.tsx | 14 ++++++++--- src/icons/Ruby.tsx | 7 ++++++ src/sections/Array/index.tsx | 11 +++++++++ src/sections/Backtracking/index.tsx | 2 ++ src/sections/BinarySearch/index.tsx | 10 ++++++++ src/sections/BinaryTree/index.tsx | 7 ++++++ src/sections/BitManipulation/index.tsx | 20 +++++++++++++++ src/sections/DataStructures/index.tsx | 20 +++++++++++++++ src/sections/DynamicProgramming/index.tsx | 6 +++++ src/sections/Graph/index.tsx | 16 ++++++++++++ src/sections/HashMap/index.tsx | 4 +++ src/sections/Heap/index.tsx | 2 ++ src/sections/LinkedList/index.tsx | 4 +++ src/sections/Matrix/index.tsx | 6 +++++ src/sections/SortingAlgorithms/index.tsx | 30 +++++++++++++++++++++++ src/sections/Stack/index.tsx | 4 +++ 18 files changed, 164 insertions(+), 5 deletions(-) create mode 100644 src/icons/Ruby.tsx diff --git a/src/components/Code/index.tsx b/src/components/Code/index.tsx index 007f904..dff2e8b 100644 --- a/src/components/Code/index.tsx +++ b/src/components/Code/index.tsx @@ -7,6 +7,7 @@ import clsx from '@utils/clsx' import cpp from 'highlight.js/lib/languages/cpp' import hljs from 'highlight.js/lib/core' import java from 'highlight.js/lib/languages/java' +import ruby from 'highlight.js/lib/languages/ruby' import javascript from 'highlight.js/lib/languages/javascript' import python from './python' @@ -15,11 +16,12 @@ hljs.registerLanguage('python', python) hljs.registerLanguage('javascript', javascript) hljs.registerLanguage('java', java) hljs.registerLanguage('cpp', cpp) +hljs.registerLanguage('ruby', ruby) interface CodeProps { code: string - language: 'python' | 'javascript' | 'java' | 'cpp' + language: 'python' | 'javascript' | 'java' | 'cpp' | 'ruby' } diff --git a/src/components/Language/context.tsx b/src/components/Language/context.tsx index eb2c964..94480e0 100644 --- a/src/components/Language/context.tsx +++ b/src/components/Language/context.tsx @@ -7,7 +7,7 @@ import { } from 'react' -type Language = 'python' | 'javascript' | 'java' | 'cpp' +type Language = 'python' | 'javascript' | 'java' | 'cpp' | 'ruby' interface LanguageContextType { selectedLanguage: Language diff --git a/src/components/Tabs/index.tsx b/src/components/Tabs/index.tsx index dee38ed..6a49950 100644 --- a/src/components/Tabs/index.tsx +++ b/src/components/Tabs/index.tsx @@ -1,6 +1,6 @@ import styles from './tabs.module.sass' -import { Children, ReactElement, ReactNode } from 'react' +import {Children, ReactElement, ReactNode} from 'react' import Code from '@components/Code' import CopyButton from '@components/CopyButton' @@ -9,6 +9,7 @@ import SvgPython from '@icons/Python' import SvgJavascript from '@/icons/Javascript' import SvgCpp from '@icons/Cpp' import SvgJava from '@/icons/Java' +import SvgRuby from '@/icons/Ruby' import { useLanguage } from '@components/Language/context' interface TabsProps { @@ -18,7 +19,7 @@ interface TabsProps { interface TabProps { code: string - language: 'python' | 'javascript' | 'java' | 'cpp' + language: 'python' | 'javascript' | 'java' | 'cpp' | 'ruby' } const LANGUAGE_ICONS = { @@ -26,6 +27,7 @@ const LANGUAGE_ICONS = { javascript: SvgJavascript, cpp: SvgCpp, java: SvgJava, + ruby: SvgRuby, } export default function Tabs({ title, children }: TabsProps) { @@ -34,7 +36,13 @@ export default function Tabs({ title, children }: TabsProps) { const activeIndex = tabs.findIndex( (tab) => tab.props.language === selectedLanguage ) - const code = tabs[activeIndex].props.code + let code = '' + try{ + code = tabs[activeIndex].props.code + }catch(e) + { + // debugger + } const language = tabs[activeIndex].props.language const changeTab = (index: number) => { diff --git a/src/icons/Ruby.tsx b/src/icons/Ruby.tsx new file mode 100644 index 0000000..3401448 --- /dev/null +++ b/src/icons/Ruby.tsx @@ -0,0 +1,7 @@ +export default function SvgRuby() { + return ( + + + + ) +} diff --git a/src/sections/Array/index.tsx b/src/sections/Array/index.tsx index fb1e2fc..ed366cd 100644 --- a/src/sections/Array/index.tsx +++ b/src/sections/Array/index.tsx @@ -26,6 +26,12 @@ import SlidingWindowCPP from '@code/cpp/array/sliding_window.cpp?raw' import PrefixSumCPP from '@code/cpp/array/prefix_sum.cpp?raw' import StringBuildingCPP from '@code/cpp/array/string_building.cpp?raw' +import TwoPointersOneInputRuby from '@code/ruby/array/two_pointers_one_input.rb?raw' +import TwoPointersTwoInputsRuby from '@code/ruby/array/two_pointers_two_inputs.rb?raw' +import SlidingWindowRuby from '@code/ruby/array/sliding_window.rb?raw' +import PrefixSumRuby from '@code/ruby/array/prefix_sum.rb?raw' +import StringBuildingRuby from '@code/ruby/array/string_building.rb?raw' + export default function Array() { return ( @@ -37,6 +43,7 @@ export default function Array() { +
@@ -45,6 +52,7 @@ export default function Array() { +
@@ -53,6 +61,7 @@ export default function Array() { +
@@ -61,6 +70,7 @@ export default function Array() { +
@@ -69,6 +79,7 @@ export default function Array() { +
diff --git a/src/sections/Backtracking/index.tsx b/src/sections/Backtracking/index.tsx index 3b1b3ac..958ea28 100644 --- a/src/sections/Backtracking/index.tsx +++ b/src/sections/Backtracking/index.tsx @@ -6,6 +6,7 @@ import BacktrackingPY from '@code/python/backtracking/backtracking.py?raw' import BacktrackingJS from '@code/javascript/backtracking/backtracking.js?raw' import BacktrackingJAVA from '@code/java/backtracking/backtracking.java?raw' import BacktrackingCPP from '@code/cpp/backtracking/backtracking.cpp?raw' +import BacktrackingRuby from '@code/ruby/backtracking/backtracking.rb?raw' export default function Backtracking() { @@ -18,6 +19,7 @@ export default function Backtracking() { + diff --git a/src/sections/BinarySearch/index.tsx b/src/sections/BinarySearch/index.tsx index 5ca6333..c24a86b 100644 --- a/src/sections/BinarySearch/index.tsx +++ b/src/sections/BinarySearch/index.tsx @@ -26,6 +26,11 @@ import DuplicateElementsRightInsertionCPP from '@code/cpp/binary_search/duplicat import GreedyMinimumCPP from '@code/cpp/binary_search/greedy_minimum.cpp?raw' import GreedyMaximumCPP from '@code/cpp/binary_search/greedy_maximum.cpp?raw' +import BinarySearchRuby from '@code/ruby/binary_search/binary_search.rb?raw' +import DuplicateElementsLeftInsertionRuby from '@code/ruby/binary_search/duplicate_elements_left_insertion.rb?raw' +import DuplicateElementsRightInsertionRuby from '@code/ruby/binary_search/duplicate_elements_right_insertion.rb?raw' +import GreedyMinimumRuby from '@code/ruby/binary_search/greedy_minimum.rb?raw' +import GreedyMaximumRuby from '@code/ruby/binary_search/greedy_maximum.rb?raw' export default function BinarySearch() { return ( @@ -37,6 +42,7 @@ export default function BinarySearch() { +
@@ -45,6 +51,7 @@ export default function BinarySearch() { +
@@ -53,6 +60,7 @@ export default function BinarySearch() { +
@@ -61,6 +69,7 @@ export default function BinarySearch() { +
@@ -69,6 +78,7 @@ export default function BinarySearch() { +
diff --git a/src/sections/BinaryTree/index.tsx b/src/sections/BinaryTree/index.tsx index a0f6221..9db1c07 100644 --- a/src/sections/BinaryTree/index.tsx +++ b/src/sections/BinaryTree/index.tsx @@ -18,6 +18,10 @@ import DFSrecursiveCPP from '@code/cpp/binary_tree/dfs_recursive.cpp?raw' import DFSiterativeCPP from '@code/cpp/binary_tree/dfs_iterative.cpp?raw' import BFSCPP from '@code/cpp/binary_tree/bfs.cpp?raw' +import DFSrecursiveRuby from '@code/ruby/binary_tree/dfs_recursive.rb?raw' +import DFSiterativeRuby from '@code/ruby/binary_tree/dfs_iterative.rb?raw' +import BFSRuby from '@code/ruby/binary_tree/bfs.rb?raw' + export default function BinaryTree() { return ( @@ -29,6 +33,7 @@ export default function BinaryTree() { +
@@ -37,6 +42,7 @@ export default function BinaryTree() { +
@@ -45,6 +51,7 @@ export default function BinaryTree() { +
diff --git a/src/sections/BitManipulation/index.tsx b/src/sections/BitManipulation/index.tsx index 69d3ef2..44eb94a 100644 --- a/src/sections/BitManipulation/index.tsx +++ b/src/sections/BitManipulation/index.tsx @@ -46,6 +46,16 @@ import DivideByPowerOfTwoCPP from '@code/cpp/bit_manipulation/divide_power_of_tw import CheckPowerOfTwoCPP from '@code/cpp/bit_manipulation/check_power_of_two.cpp?raw' import SwapVariablesCPP from '@code/cpp/bit_manipulation/swap_variables.cpp?raw' +import TestKthBitRuby from '@code/ruby/bit_manipulation/test_kth_bit.rb?raw' +import SetKthBitRuby from '@code/ruby/bit_manipulation/set_kth_bit.rb?raw' +import ClearKthBitRuby from '@code/ruby/bit_manipulation/clear_kth_bit.rb?raw' +import ToggleKthBitRuby from '@code/ruby/bit_manipulation/toggle_kth_bit.rb?raw' +import GetRightmostBitRuby from '@code/ruby/bit_manipulation/get_rightmost_bit.rb?raw' +import CountSetBitsRuby from '@code/ruby/bit_manipulation/count_set_bits.rb?raw' +import MultiplyByPowerOfTwoRuby from '@code/ruby/bit_manipulation/multiply_power_of_two.rb?raw' +import DivideByPowerOfTwoRuby from '@code/ruby/bit_manipulation/divide_power_of_two.rb?raw' +import CheckPowerOfTwoRuby from '@code/ruby/bit_manipulation/check_power_of_two.rb?raw' +import SwapVariablesRuby from '@code/ruby/bit_manipulation/swap_variables.rb?raw' export default function BitManipulation() { return ( @@ -57,6 +67,7 @@ export default function BitManipulation() { +
@@ -65,6 +76,7 @@ export default function BitManipulation() { +
@@ -73,6 +85,7 @@ export default function BitManipulation() { +
@@ -81,6 +94,7 @@ export default function BitManipulation() { +
@@ -89,6 +103,7 @@ export default function BitManipulation() { +
@@ -97,6 +112,7 @@ export default function BitManipulation() { +
@@ -105,6 +121,7 @@ export default function BitManipulation() { +
@@ -113,6 +130,7 @@ export default function BitManipulation() { +
@@ -121,6 +139,7 @@ export default function BitManipulation() { +
@@ -129,6 +148,7 @@ export default function BitManipulation() { +
diff --git a/src/sections/DataStructures/index.tsx b/src/sections/DataStructures/index.tsx index d0bbcd3..2cf4446 100644 --- a/src/sections/DataStructures/index.tsx +++ b/src/sections/DataStructures/index.tsx @@ -46,6 +46,16 @@ import TrieCPP from '@code/cpp/data_structures/trie.cpp?raw' import UnionFindCPP from '@code/cpp/data_structures/union_find.cpp?raw' import UnionFindOptimizedCPP from '@code/cpp/data_structures/union_find_optimized.cpp?raw' +import ArrayRuby from '@code/ruby/data_structures/array.rb?raw' +import BinaryTreeRuby from '@code/ruby/data_structures/binary_tree.rb?raw' +import BinarySearchTreeRuby from '@code/ruby/data_structures/binary_search_tree.rb?raw' +import LinkedListRuby from '@code/ruby/data_structures/linked_list.rb?raw' +import DoublyLinkedListRuby from '@code/ruby/data_structures/doubly_linked_list.rb?raw' +import GraphRuby from '@code/ruby/data_structures/graph.rb?raw' +import HashMapRuby from '@code/ruby/data_structures/hash_map.rb?raw' +import TrieRuby from '@code/ruby/data_structures/trie.rb?raw' +import UnionFindRuby from '@code/ruby/data_structures/union_find.rb?raw' +import UnionFindOptimizedRuby from '@code/ruby/data_structures/union_find_optimized.rb?raw' export default function DataStructures() { return ( @@ -57,6 +67,7 @@ export default function DataStructures() { +
@@ -65,6 +76,7 @@ export default function DataStructures() { +
@@ -73,6 +85,7 @@ export default function DataStructures() { +
@@ -81,6 +94,7 @@ export default function DataStructures() { +
@@ -89,6 +103,7 @@ export default function DataStructures() { +
@@ -97,6 +112,7 @@ export default function DataStructures() { +
@@ -105,6 +121,7 @@ export default function DataStructures() { +
@@ -113,6 +130,7 @@ export default function DataStructures() { +
@@ -121,6 +139,7 @@ export default function DataStructures() { +
@@ -129,6 +148,7 @@ export default function DataStructures() { +
diff --git a/src/sections/DynamicProgramming/index.tsx b/src/sections/DynamicProgramming/index.tsx index 2d1603a..7498c32 100644 --- a/src/sections/DynamicProgramming/index.tsx +++ b/src/sections/DynamicProgramming/index.tsx @@ -18,6 +18,9 @@ import TopDownCPP from '@code/cpp/dynamic_programming/top_down.cpp?raw' import BottomUpCPP from '@code/cpp/dynamic_programming/bottom_up.cpp?raw' import KadaneCPP from '@code/cpp/dynamic_programming/kadane.cpp?raw' +import TopDownRuby from '@code/ruby/dynamic_programming/top_down.rb?raw' +import BottomUpRuby from '@code/ruby/dynamic_programming/bottom_up.rb?raw' +import KadaneRuby from '@code/ruby/dynamic_programming/kadane.rb?raw' export default function DynamicProgramming() { return ( @@ -29,6 +32,7 @@ export default function DynamicProgramming() { +
@@ -37,6 +41,7 @@ export default function DynamicProgramming() { +
@@ -45,6 +50,7 @@ export default function DynamicProgramming() { +
diff --git a/src/sections/Graph/index.tsx b/src/sections/Graph/index.tsx index 058e407..5f1ea7a 100644 --- a/src/sections/Graph/index.tsx +++ b/src/sections/Graph/index.tsx @@ -38,6 +38,14 @@ import KahnCPP from '@code/cpp/graph/kahn.cpp?raw' import KruskalCPP from '@code/cpp/graph/kruskal.cpp?raw' import PrimCPP from '@code/cpp/graph/prim.cpp?raw' +import DFSrecursiveRuby from '@code/ruby/graph/dfs_recursive.rb?raw' +import DFSiterativeRuby from '@code/ruby/graph/dfs_iterative.rb?raw' +import BFSRuby from '@code/ruby/graph/bfs.rb?raw' +import DijkstraRuby from '@code/ruby/graph/dijkstra.rb?raw' +import BellmanFordRuby from '@code/ruby/graph/bellman_ford.rb?raw' +import KahnRuby from '@code/ruby/graph/kahn.rb?raw' +import KruskalRuby from '@code/ruby/graph/kruskal.rb?raw' +import PrimRuby from '@code/ruby/graph/prim.rb?raw' export default function Graph() { return ( @@ -49,6 +57,7 @@ export default function Graph() { +
@@ -57,6 +66,7 @@ export default function Graph() { +
@@ -65,6 +75,7 @@ export default function Graph() { +
@@ -73,6 +84,7 @@ export default function Graph() { +
@@ -81,6 +93,7 @@ export default function Graph() { +
@@ -89,6 +102,7 @@ export default function Graph() { +
@@ -97,6 +111,7 @@ export default function Graph() { +
@@ -105,6 +120,7 @@ export default function Graph() { +
diff --git a/src/sections/HashMap/index.tsx b/src/sections/HashMap/index.tsx index 2387b83..841c835 100644 --- a/src/sections/HashMap/index.tsx +++ b/src/sections/HashMap/index.tsx @@ -14,6 +14,8 @@ import SlidingWindowJAVA from '@code/java/hash_map/sliding_window.java?raw' import FindNumberOfSubarraysCPP from '@code/cpp/hash_map/find_number_of_subarrays.cpp?raw' import SlidingWindowCPP from '@code/cpp/hash_map/sliding_window.cpp?raw' +import FindNumberOfSubarraysRuby from '@code/ruby/hash_map/find_number_of_subarrays.rb?raw' +import SlidingWindowRuby from '@code/ruby/hash_map/sliding_window.rb?raw' export default function HashMap() { return ( @@ -25,6 +27,7 @@ export default function HashMap() { +
@@ -33,6 +36,7 @@ export default function HashMap() { +
diff --git a/src/sections/Heap/index.tsx b/src/sections/Heap/index.tsx index 171ee5c..8fb8589 100644 --- a/src/sections/Heap/index.tsx +++ b/src/sections/Heap/index.tsx @@ -6,6 +6,7 @@ import FindTopKElementsPY from '@code/python/heap/find_top_k_elements.py?raw' import FindTopKElementsJS from '@code/javascript/heap/find_top_k_elements.js?raw' import FindTopKElementsJAVA from '@code/java/heap/find_top_k_elements.java?raw' import FindTopKElementsCPP from '@code/cpp/heap/find_top_k_elements.cpp?raw' +import FindTopKElementsRuby from '@code/ruby/heap/find_top_k_elements.rb?raw' export default function Heap() { @@ -18,6 +19,7 @@ export default function Heap() { + diff --git a/src/sections/LinkedList/index.tsx b/src/sections/LinkedList/index.tsx index 0ab9907..818f0df 100644 --- a/src/sections/LinkedList/index.tsx +++ b/src/sections/LinkedList/index.tsx @@ -14,6 +14,8 @@ import ReverseLinkedListJAVA from '@code/java/linked_list/reverse_linked_list.ja import FastAndSlowPointerCPP from '@code/cpp/linked_list/fast_and_slow_pointer.cpp?raw' import ReverseLinkedListCPP from '@code/cpp/linked_list/reverse_linked_list.cpp?raw' +import FastAndSlowPointerRuby from '@code/ruby/linked_list/fast_and_slow_pointer.rb?raw' +import ReverseLinkedListRuby from '@code/ruby/linked_list/reverse_linked_list.rb?raw' export default function LinkedList() { return ( @@ -25,6 +27,7 @@ export default function LinkedList() { +
@@ -33,6 +36,7 @@ export default function LinkedList() { +
diff --git a/src/sections/Matrix/index.tsx b/src/sections/Matrix/index.tsx index 9266b5b..bdc9c22 100644 --- a/src/sections/Matrix/index.tsx +++ b/src/sections/Matrix/index.tsx @@ -18,6 +18,9 @@ import CreateCopyCPP from '@code/cpp/matrix/create_copy.cpp?raw' import DiagonalsCPP from '@code/cpp/matrix/diagonals.cpp?raw' import RotateTransposeCPP from '@code/cpp/matrix/rotate_transpose.cpp?raw' +import CreateCopyRuby from '@code/ruby/matrix/create_copy.rb?raw' +import DiagonalsRuby from '@code/ruby/matrix/diagonals.rb?raw' +import RotateTransposeRuby from '@code/ruby/matrix/rotate_transpose.rb?raw' export default function Matrix() { return ( @@ -29,6 +32,7 @@ export default function Matrix() { +
@@ -37,6 +41,7 @@ export default function Matrix() { +
@@ -45,6 +50,7 @@ export default function Matrix() { +
diff --git a/src/sections/SortingAlgorithms/index.tsx b/src/sections/SortingAlgorithms/index.tsx index 83b59bd..5577efc 100644 --- a/src/sections/SortingAlgorithms/index.tsx +++ b/src/sections/SortingAlgorithms/index.tsx @@ -66,6 +66,21 @@ import ShellSortCPP from '@code/cpp/sorting_algorithms/shell_sort.cpp?raw' import SleepSortCPP from '@code/cpp/sorting_algorithms/sleep_sort.cpp?raw' import TimSortCPP from '@code/cpp/sorting_algorithms/tim_sort.cpp?raw' +import BogoSortRuby from '@code/ruby/sorting_algorithms/bogo_sort.rb?raw' +import BubbleSortRuby from '@code/ruby/sorting_algorithms/bubble_sort.rb?raw' +import BucketSortRuby from '@code/ruby/sorting_algorithms/bucket_sort.rb?raw' +import CountingSortRuby from '@code/ruby/sorting_algorithms/counting_sort.rb?raw' +import CubeSortRuby from '@code/ruby/sorting_algorithms/cube_sort.rb?raw' +import HeapSortRuby from '@code/ruby/sorting_algorithms/heap_sort.rb?raw' +import InsertionSortRuby from '@code/ruby/sorting_algorithms/insertion_sort.rb?raw' +import MergeSortRuby from '@code/ruby/sorting_algorithms/merge_sort.rb?raw' +import PancakeSortRuby from '@code/ruby/sorting_algorithms/pancake_sort.rb?raw' +import QuickSortRuby from '@code/ruby/sorting_algorithms/quick_sort.rb?raw' +import RadixSortRuby from '@code/ruby/sorting_algorithms/radix_sort.rb?raw' +import SelectionSortRuby from '@code/ruby/sorting_algorithms/selection_sort.rb?raw' +import ShellSortRuby from '@code/ruby/sorting_algorithms/shell_sort.rb?raw' +import SleepSortRuby from '@code/ruby/sorting_algorithms/sleep_sort.rb?raw' +import TimSortRuby from '@code/ruby/sorting_algorithms/tim_sort.rb?raw' export default function Stack() { return ( @@ -77,6 +92,7 @@ export default function Stack() { +
@@ -85,6 +101,7 @@ export default function Stack() { +
@@ -93,6 +110,7 @@ export default function Stack() { +
@@ -101,6 +119,7 @@ export default function Stack() { +
@@ -109,6 +128,7 @@ export default function Stack() { +
@@ -117,6 +137,7 @@ export default function Stack() { +
@@ -125,6 +146,7 @@ export default function Stack() { +
@@ -133,6 +155,7 @@ export default function Stack() { +
@@ -141,6 +164,7 @@ export default function Stack() { +
@@ -149,6 +173,7 @@ export default function Stack() { +
@@ -157,6 +182,7 @@ export default function Stack() { +
@@ -165,6 +191,7 @@ export default function Stack() { +
@@ -173,6 +200,7 @@ export default function Stack() { +
@@ -181,6 +209,7 @@ export default function Stack() { +
@@ -189,6 +218,7 @@ export default function Stack() { +
diff --git a/src/sections/Stack/index.tsx b/src/sections/Stack/index.tsx index cad7a98..32635ac 100644 --- a/src/sections/Stack/index.tsx +++ b/src/sections/Stack/index.tsx @@ -14,6 +14,8 @@ import MonotonicDecreasingStackJAVA from '@code/java/stack/monotonic_decreasing. import MonotonicIncreasingStackCPP from '@code/cpp/stack/monotonic_increasing.cpp?raw' import MonotonicDecreasingStackCPP from '@code/cpp/stack/monotonic_decreasing.cpp?raw' +import MonotonicIncreasingStackRuby from '@code/ruby/stack/monotonic_increasing.rb?raw' +import MonotonicDecreasingStackRuby from '@code/ruby/stack/monotonic_decreasing.rb?raw' export default function Stack() { return ( @@ -25,6 +27,7 @@ export default function Stack() { +
@@ -33,6 +36,7 @@ export default function Stack() { +
From 7d4c50c1d98ef60a601d544d730601449d37fdde Mon Sep 17 00:00:00 2001 From: Shiva Bhusal Date: Thu, 27 Nov 2025 13:25:53 +0545 Subject: [PATCH 5/5] Builds the project to docs/ --- docs/assets/index-BWzx3p3d.js | 8133 +++++++++++++++++++++++++++++++ docs/assets/index-CCPfFMQM.js | 6739 ------------------------- docs/assets/index-DqUlzqnG.css | 1 - docs/assets/index-or45TzHb.css | 1 + docs/index.html | 78 +- index.html | 4 +- src/components/Topbar/index.tsx | 2 +- vite.config.ts | 2 +- 8 files changed, 8177 insertions(+), 6783 deletions(-) create mode 100644 docs/assets/index-BWzx3p3d.js delete mode 100644 docs/assets/index-CCPfFMQM.js delete mode 100644 docs/assets/index-DqUlzqnG.css create mode 100644 docs/assets/index-or45TzHb.css diff --git a/docs/assets/index-BWzx3p3d.js b/docs/assets/index-BWzx3p3d.js new file mode 100644 index 0000000..f21faca --- /dev/null +++ b/docs/assets/index-BWzx3p3d.js @@ -0,0 +1,8133 @@ +(function(){const S=document.createElement("link").relList;if(S&&S.supports&&S.supports("modulepreload"))return;for(const j of document.querySelectorAll('link[rel="modulepreload"]'))P(j);new MutationObserver(j=>{for(const $ of j)if($.type==="childList")for(const Y of $.addedNodes)Y.tagName==="LINK"&&Y.rel==="modulepreload"&&P(Y)}).observe(document,{childList:!0,subtree:!0});function p(j){const $={};return j.integrity&&($.integrity=j.integrity),j.referrerPolicy&&($.referrerPolicy=j.referrerPolicy),j.crossOrigin==="use-credentials"?$.credentials="include":j.crossOrigin==="anonymous"?$.credentials="omit":$.credentials="same-origin",$}function P(j){if(j.ep)return;j.ep=!0;const $=p(j);fetch(j.href,$)}})();function ao(c){return c&&c.__esModule&&Object.prototype.hasOwnProperty.call(c,"default")?c.default:c}var Vs={exports:{}},Ii={},$s={exports:{}},Vn={};var mc;function wf(){if(mc)return Vn;mc=1;var c=Symbol.for("react.element"),S=Symbol.for("react.portal"),p=Symbol.for("react.fragment"),P=Symbol.for("react.strict_mode"),j=Symbol.for("react.profiler"),$=Symbol.for("react.provider"),Y=Symbol.for("react.context"),C=Symbol.for("react.forward_ref"),x=Symbol.for("react.suspense"),b=Symbol.for("react.memo"),z=Symbol.for("react.lazy"),A=Symbol.iterator;function T(d){return d===null||typeof d!="object"?null:(d=A&&d[A]||d["@@iterator"],typeof d=="function"?d:null)}var k={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},N=Object.assign,w={};function I(d,E,tn){this.props=d,this.context=E,this.refs=w,this.updater=tn||k}I.prototype.isReactComponent={},I.prototype.setState=function(d,E){if(typeof d!="object"&&typeof d!="function"&&d!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,d,E,"setState")},I.prototype.forceUpdate=function(d){this.updater.enqueueForceUpdate(this,d,"forceUpdate")};function B(){}B.prototype=I.prototype;function R(d,E,tn){this.props=d,this.context=E,this.refs=w,this.updater=tn||k}var G=R.prototype=new B;G.constructor=R,N(G,I.prototype),G.isPureReactComponent=!0;var L=Array.isArray,Q=Object.prototype.hasOwnProperty,Z={current:null},on={key:!0,ref:!0,__self:!0,__source:!0};function wn(d,E,tn){var Mn,kn={},Un=null,Nn=null;if(E!=null)for(Mn in E.ref!==void 0&&(Nn=E.ref),E.key!==void 0&&(Un=""+E.key),E)Q.call(E,Mn)&&!on.hasOwnProperty(Mn)&&(kn[Mn]=E[Mn]);var jn=arguments.length-2;if(jn===1)kn.children=tn;else if(1>>1,tn=F[E];if(0>>1;Ej(Un,d))Nnj(jn,Un)?(F[E]=jn,F[Nn]=d,E=Nn):(F[E]=Un,F[kn]=d,E=kn);else if(Nnj(jn,d))F[E]=jn,F[Nn]=d,E=Nn;else break n}}return dn}function j(F,dn){var d=F.sortIndex-dn.sortIndex;return d!==0?d:F.id-dn.id}if(typeof performance=="object"&&typeof performance.now=="function"){var $=performance;c.unstable_now=function(){return $.now()}}else{var Y=Date,C=Y.now();c.unstable_now=function(){return Y.now()-C}}var x=[],b=[],z=1,A=null,T=3,k=!1,N=!1,w=!1,I=typeof setTimeout=="function"?setTimeout:null,B=typeof clearTimeout=="function"?clearTimeout:null,R=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(F){for(var dn=p(b);dn!==null;){if(dn.callback===null)P(b);else if(dn.startTime<=F)P(b),dn.sortIndex=dn.expirationTime,S(x,dn);else break;dn=p(b)}}function L(F){if(w=!1,G(F),!N)if(p(x)!==null)N=!0,Gn(Q);else{var dn=p(b);dn!==null&&Yn(L,dn.startTime-F)}}function Q(F,dn){N=!1,w&&(w=!1,B(wn),wn=-1),k=!0;var d=T;try{for(G(dn),A=p(x);A!==null&&(!(A.expirationTime>dn)||F&&!Tn());){var E=A.callback;if(typeof E=="function"){A.callback=null,T=A.priorityLevel;var tn=E(A.expirationTime<=dn);dn=c.unstable_now(),typeof tn=="function"?A.callback=tn:A===p(x)&&P(x),G(dn)}else P(x);A=p(x)}if(A!==null)var Mn=!0;else{var kn=p(b);kn!==null&&Yn(L,kn.startTime-dn),Mn=!1}return Mn}finally{A=null,T=d,k=!1}}var Z=!1,on=null,wn=-1,J=5,mn=-1;function Tn(){return!(c.unstable_now()-mnF||125E?(F.sortIndex=d,S(b,F),p(x)===null&&F===p(b)&&(w?(B(wn),wn=-1):w=!0,Yn(L,d-E))):(F.sortIndex=tn,S(x,F),N||k||(N=!0,Gn(Q))),F},c.unstable_shouldYield=Tn,c.unstable_wrapCallback=function(F){var dn=T;return function(){var d=T;T=dn;try{return F.apply(this,arguments)}finally{T=d}}}})(Js)),Js}var bc;function kf(){return bc||(bc=1,Gs.exports=jf()),Gs.exports}var wc;function Ef(){if(wc)return Ve;wc=1;var c=oo(),S=kf();function p(n){for(var e="https://reactjs.org/docs/error-decoder.html?invariant="+n,t=1;t"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),x=Object.prototype.hasOwnProperty,b=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,z={},A={};function T(n){return x.call(A,n)?!0:x.call(z,n)?!1:b.test(n)?A[n]=!0:(z[n]=!0,!1)}function k(n,e,t,i){if(t!==null&&t.type===0)return!1;switch(typeof e){case"function":case"symbol":return!0;case"boolean":return i?!1:t!==null?!t.acceptsBooleans:(n=n.toLowerCase().slice(0,5),n!=="data-"&&n!=="aria-");default:return!1}}function N(n,e,t,i){if(e===null||typeof e>"u"||k(n,e,t,i))return!0;if(i)return!1;if(t!==null)switch(t.type){case 3:return!e;case 4:return e===!1;case 5:return isNaN(e);case 6:return isNaN(e)||1>e}return!1}function w(n,e,t,i,a,o,l){this.acceptsBooleans=e===2||e===3||e===4,this.attributeName=i,this.attributeNamespace=a,this.mustUseProperty=t,this.propertyName=n,this.type=e,this.sanitizeURL=o,this.removeEmptyString=l}var I={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(n){I[n]=new w(n,0,!1,n,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(n){var e=n[0];I[e]=new w(e,1,!1,n[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(n){I[n]=new w(n,2,!1,n.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(n){I[n]=new w(n,2,!1,n,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(n){I[n]=new w(n,3,!1,n.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(n){I[n]=new w(n,3,!0,n,null,!1,!1)}),["capture","download"].forEach(function(n){I[n]=new w(n,4,!1,n,null,!1,!1)}),["cols","rows","size","span"].forEach(function(n){I[n]=new w(n,6,!1,n,null,!1,!1)}),["rowSpan","start"].forEach(function(n){I[n]=new w(n,5,!1,n.toLowerCase(),null,!1,!1)});var B=/[\-:]([a-z])/g;function R(n){return n[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(n){var e=n.replace(B,R);I[e]=new w(e,1,!1,n,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(n){var e=n.replace(B,R);I[e]=new w(e,1,!1,n,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(n){var e=n.replace(B,R);I[e]=new w(e,1,!1,n,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(n){I[n]=new w(n,1,!1,n.toLowerCase(),null,!1,!1)}),I.xlinkHref=new w("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(n){I[n]=new w(n,1,!1,n.toLowerCase(),null,!0,!0)});function G(n,e,t,i){var a=I.hasOwnProperty(e)?I[e]:null;(a!==null?a.type!==0:i||!(2u||a[l]!==o[u]){var h=` +`+a[l].replace(" at new "," at ");return n.displayName&&h.includes("")&&(h=h.replace("",n.displayName)),h}while(1<=l&&0<=u);break}}}finally{Mn=!1,Error.prepareStackTrace=t}return(n=n?n.displayName||n.name:"")?tn(n):""}function Un(n){switch(n.tag){case 5:return tn(n.type);case 16:return tn("Lazy");case 13:return tn("Suspense");case 19:return tn("SuspenseList");case 0:case 2:case 15:return n=kn(n.type,!1),n;case 11:return n=kn(n.type.render,!1),n;case 1:return n=kn(n.type,!0),n;default:return""}}function Nn(n){if(n==null)return null;if(typeof n=="function")return n.displayName||n.name||null;if(typeof n=="string")return n;switch(n){case on:return"Fragment";case Z:return"Portal";case J:return"Profiler";case wn:return"StrictMode";case cn:return"Suspense";case Fn:return"SuspenseList"}if(typeof n=="object")switch(n.$$typeof){case Tn:return(n.displayName||"Context")+".Consumer";case mn:return(n._context.displayName||"Context")+".Provider";case vn:var e=n.render;return n=n.displayName,n||(n=e.displayName||e.name||"",n=n!==""?"ForwardRef("+n+")":"ForwardRef"),n;case ne:return e=n.displayName||null,e!==null?e:Nn(n.type)||"Memo";case Gn:e=n._payload,n=n._init;try{return Nn(n(e))}catch{}}return null}function jn(n){var e=n.type;switch(n.tag){case 24:return"Cache";case 9:return(e.displayName||"Context")+".Consumer";case 10:return(e._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return n=e.render,n=n.displayName||n.name||"",e.displayName||(n!==""?"ForwardRef("+n+")":"ForwardRef");case 7:return"Fragment";case 5:return e;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Nn(e);case 8:return e===wn?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e}return null}function Sn(n){switch(typeof n){case"boolean":case"number":case"string":case"undefined":return n;case"object":return n;default:return""}}function ue(n){var e=n.type;return(n=n.nodeName)&&n.toLowerCase()==="input"&&(e==="checkbox"||e==="radio")}function H(n){var e=ue(n)?"checked":"value",t=Object.getOwnPropertyDescriptor(n.constructor.prototype,e),i=""+n[e];if(!n.hasOwnProperty(e)&&typeof t<"u"&&typeof t.get=="function"&&typeof t.set=="function"){var a=t.get,o=t.set;return Object.defineProperty(n,e,{configurable:!0,get:function(){return a.call(this)},set:function(l){i=""+l,o.call(this,l)}}),Object.defineProperty(n,e,{enumerable:t.enumerable}),{getValue:function(){return i},setValue:function(l){i=""+l},stopTracking:function(){n._valueTracker=null,delete n[e]}}}}function nn(n){n._valueTracker||(n._valueTracker=H(n))}function In(n){if(!n)return!1;var e=n._valueTracker;if(!e)return!0;var t=e.getValue(),i="";return n&&(i=ue(n)?n.checked?"true":"false":n.value),n=i,n!==t?(e.setValue(n),!0):!1}function Cn(n){if(n=n||(typeof document<"u"?document:void 0),typeof n>"u")return null;try{return n.activeElement||n.body}catch{return n.body}}function En(n,e){var t=e.checked;return d({},e,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:t??n._wrapperState.initialChecked})}function Hn(n,e){var t=e.defaultValue==null?"":e.defaultValue,i=e.checked!=null?e.checked:e.defaultChecked;t=Sn(e.value!=null?e.value:t),n._wrapperState={initialChecked:i,initialValue:t,controlled:e.type==="checkbox"||e.type==="radio"?e.checked!=null:e.value!=null}}function Dn(n,e){e=e.checked,e!=null&&G(n,"checked",e,!1)}function zn(n,e){Dn(n,e);var t=Sn(e.value),i=e.type;if(t!=null)i==="number"?(t===0&&n.value===""||n.value!=t)&&(n.value=""+t):n.value!==""+t&&(n.value=""+t);else if(i==="submit"||i==="reset"){n.removeAttribute("value");return}e.hasOwnProperty("value")?$n(n,e.type,t):e.hasOwnProperty("defaultValue")&&$n(n,e.type,Sn(e.defaultValue)),e.checked==null&&e.defaultChecked!=null&&(n.defaultChecked=!!e.defaultChecked)}function Wn(n,e,t){if(e.hasOwnProperty("value")||e.hasOwnProperty("defaultValue")){var i=e.type;if(!(i!=="submit"&&i!=="reset"||e.value!==void 0&&e.value!==null))return;e=""+n._wrapperState.initialValue,t||e===n.value||(n.value=e),n.defaultValue=e}t=n.name,t!==""&&(n.name=""),n.defaultChecked=!!n._wrapperState.initialChecked,t!==""&&(n.name=t)}function $n(n,e,t){(e!=="number"||Cn(n.ownerDocument)!==n)&&(t==null?n.defaultValue=""+n._wrapperState.initialValue:n.defaultValue!==""+t&&(n.defaultValue=""+t))}var Bn=Array.isArray;function X(n,e,t,i){if(n=n.options,e){e={};for(var a=0;a"+e.valueOf().toString()+"",e=er.firstChild;n.firstChild;)n.removeChild(n.firstChild);for(;e.firstChild;)n.appendChild(e.firstChild)}});function tr(n,e){if(e){var t=n.firstChild;if(t&&t===n.lastChild&&t.nodeType===3){t.nodeValue=e;return}}n.textContent=e}var rr={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},lo=["Webkit","ms","Moz","O"];Object.keys(rr).forEach(function(n){lo.forEach(function(e){e=e+n.charAt(0).toUpperCase()+n.substring(1),rr[e]=rr[n]})});function Bi(n,e,t){return e==null||typeof e=="boolean"||e===""?"":t||typeof e!="number"||e===0||rr.hasOwnProperty(n)&&rr[n]?(""+e).trim():e+"px"}function ni(n,e){n=n.style;for(var t in e)if(e.hasOwnProperty(t)){var i=t.indexOf("--")===0,a=Bi(t,e[t],i);t==="float"&&(t="cssFloat"),i?n.setProperty(t,a):n[t]=a}}var uo=d({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function ei(n,e){if(e){if(uo[n]&&(e.children!=null||e.dangerouslySetInnerHTML!=null))throw Error(p(137,n));if(e.dangerouslySetInnerHTML!=null){if(e.children!=null)throw Error(p(60));if(typeof e.dangerouslySetInnerHTML!="object"||!("__html"in e.dangerouslySetInnerHTML))throw Error(p(61))}if(e.style!=null&&typeof e.style!="object")throw Error(p(62))}}function ti(n,e){if(n.indexOf("-")===-1)return typeof e.is=="string";switch(n){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var ir=null;function Sr(n){return n=n.target||n.srcElement||window,n.correspondingUseElement&&(n=n.correspondingUseElement),n.nodeType===3?n.parentNode:n}var Tr=null,It=null,St=null;function Tt(n){if(n=bi(n)){if(typeof Tr!="function")throw Error(p(280));var e=n.stateNode;e&&(e=da(e),Tr(n.stateNode,n.type,e))}}function f(n){It?St?St.push(n):St=[n]:It=n}function O(){if(It){var n=It,e=St;if(St=It=null,Tt(n),e)for(n=0;n>>=0,n===0?32:31-(Ke(n)/mt|0)|0}var Se=64,Pe=4194304;function zt(n){switch(n&-n){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return n&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return n&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return n}}function or(n,e){var t=n.pendingLanes;if(t===0)return 0;var i=0,a=n.suspendedLanes,o=n.pingedLanes,l=t&268435455;if(l!==0){var u=l&~a;u!==0?i=zt(u):(o&=l,o!==0&&(i=zt(o)))}else l=t&~a,l!==0?i=zt(l):o!==0&&(i=zt(o));if(i===0)return 0;if(e!==0&&e!==i&&(e&a)===0&&(a=i&-i,o=e&-e,a>=o||a===16&&(o&4194240)!==0))return e;if((i&4)!==0&&(i|=t&16),e=n.entangledLanes,e!==0)for(n=n.entanglements,e&=i;0t;t++)e.push(n);return e}function vt(n,e,t){n.pendingLanes|=e,e!==536870912&&(n.suspendedLanes=0,n.pingedLanes=0),n=n.eventTimes,e=31-Qn(e),n[e]=t}function Yi(n,e){var t=n.pendingLanes&~e;n.pendingLanes=e,n.suspendedLanes=0,n.pingedLanes=0,n.expiredLanes&=e,n.mutableReadLanes&=e,n.entangledLanes&=e,e=n.entanglements;var i=n.eventTimes;for(n=n.expirationTimes;0=fi),ll=" ",ul=!1;function cl(n,e){switch(n){case"keyup":return md.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function dl(n){return n=n.detail,typeof n=="object"&&"data"in n?n.data:null}var Cr=!1;function yd(n,e){switch(n){case"compositionend":return dl(e);case"keypress":return e.which!==32?null:(ul=!0,ll);case"textInput":return n=e.data,n===ll&&ul?null:n;default:return null}}function xd(n,e){if(Cr)return n==="compositionend"||!To&&cl(n,e)?(n=tl(),na=yo=Ft=null,Cr=!1,n):null;switch(n){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1=e)return{node:t,offset:e-n};n=i}n:{for(;t;){if(t.nextSibling){t=t.nextSibling;break n}t=t.parentNode}t=void 0}t=yl(t)}}function _l(n,e){return n&&e?n===e?!0:n&&n.nodeType===3?!1:e&&e.nodeType===3?_l(n,e.parentNode):"contains"in n?n.contains(e):n.compareDocumentPosition?!!(n.compareDocumentPosition(e)&16):!1:!1}function bl(){for(var n=window,e=Cn();e instanceof n.HTMLIFrameElement;){try{var t=typeof e.contentWindow.location.href=="string"}catch{t=!1}if(t)n=e.contentWindow;else break;e=Cn(n.document)}return e}function Eo(n){var e=n&&n.nodeName&&n.nodeName.toLowerCase();return e&&(e==="input"&&(n.type==="text"||n.type==="search"||n.type==="tel"||n.type==="url"||n.type==="password")||e==="textarea"||n.contentEditable==="true")}function Nd(n){var e=bl(),t=n.focusedElem,i=n.selectionRange;if(e!==t&&t&&t.ownerDocument&&_l(t.ownerDocument.documentElement,t)){if(i!==null&&Eo(t)){if(e=i.start,n=i.end,n===void 0&&(n=e),"selectionStart"in t)t.selectionStart=e,t.selectionEnd=Math.min(n,t.value.length);else if(n=(e=t.ownerDocument||document)&&e.defaultView||window,n.getSelection){n=n.getSelection();var a=t.textContent.length,o=Math.min(i.start,a);i=i.end===void 0?o:Math.min(i.end,a),!n.extend&&o>i&&(a=i,i=o,o=a),a=xl(t,o);var l=xl(t,i);a&&l&&(n.rangeCount!==1||n.anchorNode!==a.node||n.anchorOffset!==a.offset||n.focusNode!==l.node||n.focusOffset!==l.offset)&&(e=e.createRange(),e.setStart(a.node,a.offset),n.removeAllRanges(),o>i?(n.addRange(e),n.extend(l.node,l.offset)):(e.setEnd(l.node,l.offset),n.addRange(e)))}}for(e=[],n=t;n=n.parentNode;)n.nodeType===1&&e.push({element:n,left:n.scrollLeft,top:n.scrollTop});for(typeof t.focus=="function"&&t.focus(),t=0;t=document.documentMode,Lr=null,No=null,mi=null,Oo=!1;function wl(n,e,t){var i=t.window===t?t.document:t.nodeType===9?t:t.ownerDocument;Oo||Lr==null||Lr!==Cn(i)||(i=Lr,"selectionStart"in i&&Eo(i)?i={start:i.selectionStart,end:i.selectionEnd}:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection(),i={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}),mi&&gi(mi,i)||(mi=i,i=la(No,"onSelect"),0Dr||(n.current=Uo[Dr],Uo[Dr]=null,Dr--)}function ie(n,e){Dr++,Uo[Dr]=n.current,n.current=e}var Vt={},Ae=Wt(Vt),Be=Wt(!1),cr=Vt;function zr(n,e){var t=n.type.contextTypes;if(!t)return Vt;var i=n.stateNode;if(i&&i.__reactInternalMemoizedUnmaskedChildContext===e)return i.__reactInternalMemoizedMaskedChildContext;var a={},o;for(o in t)a[o]=e[o];return i&&(n=n.stateNode,n.__reactInternalMemoizedUnmaskedChildContext=e,n.__reactInternalMemoizedMaskedChildContext=a),a}function Fe(n){return n=n.childContextTypes,n!=null}function fa(){le(Be),le(Ae)}function Dl(n,e,t){if(Ae.current!==Vt)throw Error(p(168));ie(Ae,e),ie(Be,t)}function zl(n,e,t){var i=n.stateNode;if(e=e.childContextTypes,typeof i.getChildContext!="function")return t;i=i.getChildContext();for(var a in i)if(!(a in e))throw Error(p(108,jn(n)||"Unknown",a));return d({},t,i)}function pa(n){return n=(n=n.stateNode)&&n.__reactInternalMemoizedMergedChildContext||Vt,cr=Ae.current,ie(Ae,n),ie(Be,Be.current),!0}function Bl(n,e,t){var i=n.stateNode;if(!i)throw Error(p(169));t?(n=zl(n,e,cr),i.__reactInternalMemoizedMergedChildContext=n,le(Be),le(Ae),ie(Ae,n)):le(Be),ie(Be,t)}var Nt=null,ha=!1,Ho=!1;function Fl(n){Nt===null?Nt=[n]:Nt.push(n)}function Fd(n){ha=!0,Fl(n)}function $t(){if(!Ho&&Nt!==null){Ho=!0;var n=0,e=Xn;try{var t=Nt;for(Xn=1;n>=l,a-=l,Ot=1<<32-Qn(e)+a|t<An?(ke=bn,bn=null):ke=bn.sibling;var qn=M(v,bn,y[An],V);if(qn===null){bn===null&&(bn=ke);break}n&&bn&&qn.alternate===null&&e(v,bn),g=o(qn,g,An),_n===null?hn=qn:_n.sibling=qn,_n=qn,bn=ke}if(An===y.length)return t(v,bn),pe&&fr(v,An),hn;if(bn===null){for(;AnAn?(ke=bn,bn=null):ke=bn.sibling;var nr=M(v,bn,qn.value,V);if(nr===null){bn===null&&(bn=ke);break}n&&bn&&nr.alternate===null&&e(v,bn),g=o(nr,g,An),_n===null?hn=nr:_n.sibling=nr,_n=nr,bn=ke}if(qn.done)return t(v,bn),pe&&fr(v,An),hn;if(bn===null){for(;!qn.done;An++,qn=y.next())qn=U(v,qn.value,V),qn!==null&&(g=o(qn,g,An),_n===null?hn=qn:_n.sibling=qn,_n=qn);return pe&&fr(v,An),hn}for(bn=i(v,bn);!qn.done;An++,qn=y.next())qn=rn(bn,v,An,qn.value,V),qn!==null&&(n&&qn.alternate!==null&&bn.delete(qn.key===null?An:qn.key),g=o(qn,g,An),_n===null?hn=qn:_n.sibling=qn,_n=qn);return n&&bn.forEach(function(bf){return e(v,bf)}),pe&&fr(v,An),hn}function ve(v,g,y,V){if(typeof y=="object"&&y!==null&&y.type===on&&y.key===null&&(y=y.props.children),typeof y=="object"&&y!==null){switch(y.$$typeof){case Q:n:{for(var hn=y.key,_n=g;_n!==null;){if(_n.key===hn){if(hn=y.type,hn===on){if(_n.tag===7){t(v,_n.sibling),g=a(_n,y.props.children),g.return=v,v=g;break n}}else if(_n.elementType===hn||typeof hn=="object"&&hn!==null&&hn.$$typeof===Gn&&nu(hn)===_n.type){t(v,_n.sibling),g=a(_n,y.props),g.ref=wi(v,_n,y),g.return=v,v=g;break n}t(v,_n);break}else e(v,_n);_n=_n.sibling}y.type===on?(g=_r(y.props.children,v.mode,V,y.key),g.return=v,v=g):(V=Ha(y.type,y.key,y.props,null,v.mode,V),V.ref=wi(v,g,y),V.return=v,v=V)}return l(v);case Z:n:{for(_n=y.key;g!==null;){if(g.key===_n)if(g.tag===4&&g.stateNode.containerInfo===y.containerInfo&&g.stateNode.implementation===y.implementation){t(v,g.sibling),g=a(g,y.children||[]),g.return=v,v=g;break n}else{t(v,g);break}else e(v,g);g=g.sibling}g=Bs(y,v.mode,V),g.return=v,v=g}return l(v);case Gn:return _n=y._init,ve(v,g,_n(y._payload),V)}if(Bn(y))return fn(v,g,y,V);if(dn(y))return pn(v,g,y,V);Sa(v,y)}return typeof y=="string"&&y!==""||typeof y=="number"?(y=""+y,g!==null&&g.tag===6?(t(v,g.sibling),g=a(g,y),g.return=v,v=g):(t(v,g),g=zs(y,v.mode,V),g.return=v,v=g),l(v)):t(v,g)}return ve}var Vr=eu(!0),tu=eu(!1),Si={},xt=Wt(Si),Ti=Wt(Si),ji=Wt(Si);function hr(n){if(n===Si)throw Error(p(174));return n}function ts(n,e){switch(ie(ji,e),ie(Ti,n),ie(xt,Si),n=e.nodeType,n){case 9:case 11:e=(e=e.documentElement)?e.namespaceURI:Mt(null,"");break;default:n=n===8?e.parentNode:e,e=n.namespaceURI||null,n=n.tagName,e=Mt(e,n)}le(xt),ie(xt,e)}function $r(){le(xt),le(Ti),le(ji)}function ru(n){hr(ji.current);var e=hr(xt.current),t=Mt(e,n.type);e!==t&&(ie(Ti,n),ie(xt,t))}function rs(n){Ti.current===n&&(le(xt),le(Ti))}var he=Wt(0);function Ta(n){for(var e=n;e!==null;){if(e.tag===13){var t=e.memoizedState;if(t!==null&&(t=t.dehydrated,t===null||t.data==="$?"||t.data==="$!"))return e}else if(e.tag===19&&e.memoizedProps.revealOrder!==void 0){if((e.flags&128)!==0)return e}else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===n)break;for(;e.sibling===null;){if(e.return===null||e.return===n)return null;e=e.return}e.sibling.return=e.return,e=e.sibling}return null}var is=[];function as(){for(var n=0;nt?t:4,n(!0);var i=os.transition;os.transition={};try{n(!1),e()}finally{Xn=t,os.transition=i}}function bu(){return tt().memoizedState}function Vd(n,e,t){var i=Qt(n);if(t={lane:i,action:t,hasEagerState:!1,eagerState:null,next:null},wu(n))Su(e,t);else if(t=Kl(n,e,t,i),t!==null){var a=Ie();ft(t,n,i,a),Tu(t,e,i)}}function $d(n,e,t){var i=Qt(n),a={lane:i,action:t,hasEagerState:!1,eagerState:null,next:null};if(wu(n))Su(e,a);else{var o=n.alternate;if(n.lanes===0&&(o===null||o.lanes===0)&&(o=e.lastRenderedReducer,o!==null))try{var l=e.lastRenderedState,u=o(l,t);if(a.hasEagerState=!0,a.eagerState=u,st(u,l)){var h=e.interleaved;h===null?(a.next=a,Xo(e)):(a.next=h.next,h.next=a),e.interleaved=a;return}}catch{}finally{}t=Kl(n,e,a,i),t!==null&&(a=Ie(),ft(t,n,i,a),Tu(t,e,i))}}function wu(n){var e=n.alternate;return n===ge||e!==null&&e===ge}function Su(n,e){ki=ka=!0;var t=n.pending;t===null?e.next=e:(e.next=t.next,t.next=e),n.pending=e}function Tu(n,e,t){if((t&4194240)!==0){var i=e.lanes;i&=n.pendingLanes,t|=i,e.lanes=t,ze(n,t)}}var Oa={readContext:et,useCallback:Ce,useContext:Ce,useEffect:Ce,useImperativeHandle:Ce,useInsertionEffect:Ce,useLayoutEffect:Ce,useMemo:Ce,useReducer:Ce,useRef:Ce,useState:Ce,useDebugValue:Ce,useDeferredValue:Ce,useTransition:Ce,useMutableSource:Ce,useSyncExternalStore:Ce,useId:Ce,unstable_isNewReconciler:!1},Kd={readContext:et,useCallback:function(n,e){return _t().memoizedState=[n,e===void 0?null:e],n},useContext:et,useEffect:pu,useImperativeHandle:function(n,e,t){return t=t!=null?t.concat([n]):null,Ea(4194308,4,mu.bind(null,e,n),t)},useLayoutEffect:function(n,e){return Ea(4194308,4,n,e)},useInsertionEffect:function(n,e){return Ea(4,2,n,e)},useMemo:function(n,e){var t=_t();return e=e===void 0?null:e,n=n(),t.memoizedState=[n,e],n},useReducer:function(n,e,t){var i=_t();return e=t!==void 0?t(e):e,i.memoizedState=i.baseState=e,n={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:n,lastRenderedState:e},i.queue=n,n=n.dispatch=Vd.bind(null,ge,n),[i.memoizedState,n]},useRef:function(n){var e=_t();return n={current:n},e.memoizedState=n},useState:du,useDebugValue:ps,useDeferredValue:function(n){return _t().memoizedState=n},useTransition:function(){var n=du(!1),e=n[0];return n=Wd.bind(null,n[1]),_t().memoizedState=n,[e,n]},useMutableSource:function(){},useSyncExternalStore:function(n,e,t){var i=ge,a=_t();if(pe){if(t===void 0)throw Error(p(407));t=t()}else{if(t=e(),je===null)throw Error(p(349));(gr&30)!==0||ou(i,e,t)}a.memoizedState=t;var o={value:t,getSnapshot:e};return a.queue=o,pu(lu.bind(null,i,o,n),[n]),i.flags|=2048,Oi(9,su.bind(null,i,o,t,e),void 0,null),t},useId:function(){var n=_t(),e=je.identifierPrefix;if(pe){var t=At,i=Ot;t=(i&~(1<<32-Qn(i)-1)).toString(32)+t,e=":"+e+"R"+t,t=Ei++,0<\/script>",n=n.removeChild(n.firstChild)):typeof i.is=="string"?n=l.createElement(t,{is:i.is}):(n=l.createElement(t),t==="select"&&(l=n,i.multiple?l.multiple=!0:i.size&&(l.size=i.size))):n=l.createElementNS(n,t),n[yt]=e,n[_i]=i,Uu(n,e,!1,!1),e.stateNode=n;n:{switch(l=ti(t,i),t){case"dialog":se("cancel",n),se("close",n),a=i;break;case"iframe":case"object":case"embed":se("load",n),a=i;break;case"video":case"audio":for(a=0;aYr&&(e.flags|=128,i=!0,Ai(o,!1),e.lanes=4194304)}else{if(!i)if(n=Ta(l),n!==null){if(e.flags|=128,i=!0,t=n.updateQueue,t!==null&&(e.updateQueue=t,e.flags|=4),Ai(o,!0),o.tail===null&&o.tailMode==="hidden"&&!l.alternate&&!pe)return Le(e),null}else 2*fe()-o.renderingStartTime>Yr&&t!==1073741824&&(e.flags|=128,i=!0,Ai(o,!1),e.lanes=4194304);o.isBackwards?(l.sibling=e.child,e.child=l):(t=o.last,t!==null?t.sibling=l:e.child=l,o.last=l)}return o.tail!==null?(e=o.tail,o.rendering=e,o.tail=e.sibling,o.renderingStartTime=fe(),e.sibling=null,t=he.current,ie(he,i?t&1|2:t&1),e):(Le(e),null);case 22:case 23:return Ms(),i=e.memoizedState!==null,n!==null&&n.memoizedState!==null!==i&&(e.flags|=8192),i&&(e.mode&1)!==0?(qe&1073741824)!==0&&(Le(e),e.subtreeFlags&6&&(e.flags|=8192)):Le(e),null;case 24:return null;case 25:return null}throw Error(p(156,e.tag))}function nf(n,e){switch(Vo(e),e.tag){case 1:return Fe(e.type)&&fa(),n=e.flags,n&65536?(e.flags=n&-65537|128,e):null;case 3:return $r(),le(Be),le(Ae),as(),n=e.flags,(n&65536)!==0&&(n&128)===0?(e.flags=n&-65537|128,e):null;case 5:return rs(e),null;case 13:if(le(he),n=e.memoizedState,n!==null&&n.dehydrated!==null){if(e.alternate===null)throw Error(p(340));Ur()}return n=e.flags,n&65536?(e.flags=n&-65537|128,e):null;case 19:return le(he),null;case 4:return $r(),null;case 10:return qo(e.type._context),null;case 22:case 23:return Ms(),null;case 24:return null;default:return null}}var La=!1,Re=!1,ef=typeof WeakSet=="function"?WeakSet:Set,un=null;function Gr(n,e){var t=n.ref;if(t!==null)if(typeof t=="function")try{t(null)}catch(i){me(n,e,i)}else t.current=null}function Ss(n,e,t){try{t()}catch(i){me(n,e,i)}}var Vu=!1;function tf(n,e){if(Mo=Xi,n=bl(),Eo(n)){if("selectionStart"in n)var t={start:n.selectionStart,end:n.selectionEnd};else n:{t=(t=n.ownerDocument)&&t.defaultView||window;var i=t.getSelection&&t.getSelection();if(i&&i.rangeCount!==0){t=i.anchorNode;var a=i.anchorOffset,o=i.focusNode;i=i.focusOffset;try{t.nodeType,o.nodeType}catch{t=null;break n}var l=0,u=-1,h=-1,_=0,D=0,U=n,M=null;e:for(;;){for(var rn;U!==t||a!==0&&U.nodeType!==3||(u=l+a),U!==o||i!==0&&U.nodeType!==3||(h=l+i),U.nodeType===3&&(l+=U.nodeValue.length),(rn=U.firstChild)!==null;)M=U,U=rn;for(;;){if(U===n)break e;if(M===t&&++_===a&&(u=l),M===o&&++D===i&&(h=l),(rn=U.nextSibling)!==null)break;U=M,M=U.parentNode}U=rn}t=u===-1||h===-1?null:{start:u,end:h}}else t=null}t=t||{start:0,end:0}}else t=null;for(Io={focusedElem:n,selectionRange:t},Xi=!1,un=e;un!==null;)if(e=un,n=e.child,(e.subtreeFlags&1028)!==0&&n!==null)n.return=e,un=n;else for(;un!==null;){e=un;try{var fn=e.alternate;if((e.flags&1024)!==0)switch(e.tag){case 0:case 11:case 15:break;case 1:if(fn!==null){var pn=fn.memoizedProps,ve=fn.memoizedState,v=e.stateNode,g=v.getSnapshotBeforeUpdate(e.elementType===e.type?pn:ut(e.type,pn),ve);v.__reactInternalSnapshotBeforeUpdate=g}break;case 3:var y=e.stateNode.containerInfo;y.nodeType===1?y.textContent="":y.nodeType===9&&y.documentElement&&y.removeChild(y.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163))}}catch(V){me(e,e.return,V)}if(n=e.sibling,n!==null){n.return=e.return,un=n;break}un=e.return}return fn=Vu,Vu=!1,fn}function Ci(n,e,t){var i=e.updateQueue;if(i=i!==null?i.lastEffect:null,i!==null){var a=i=i.next;do{if((a.tag&n)===n){var o=a.destroy;a.destroy=void 0,o!==void 0&&Ss(e,t,o)}a=a.next}while(a!==i)}}function Ra(n,e){if(e=e.updateQueue,e=e!==null?e.lastEffect:null,e!==null){var t=e=e.next;do{if((t.tag&n)===n){var i=t.create;t.destroy=i()}t=t.next}while(t!==e)}}function Ts(n){var e=n.ref;if(e!==null){var t=n.stateNode;switch(n.tag){case 5:n=t;break;default:n=t}typeof e=="function"?e(n):e.current=n}}function $u(n){var e=n.alternate;e!==null&&(n.alternate=null,$u(e)),n.child=null,n.deletions=null,n.sibling=null,n.tag===5&&(e=n.stateNode,e!==null&&(delete e[yt],delete e[_i],delete e[Fo],delete e[zd],delete e[Bd])),n.stateNode=null,n.return=null,n.dependencies=null,n.memoizedProps=null,n.memoizedState=null,n.pendingProps=null,n.stateNode=null,n.updateQueue=null}function Ku(n){return n.tag===5||n.tag===3||n.tag===4}function Gu(n){n:for(;;){for(;n.sibling===null;){if(n.return===null||Ku(n.return))return null;n=n.return}for(n.sibling.return=n.return,n=n.sibling;n.tag!==5&&n.tag!==6&&n.tag!==18;){if(n.flags&2||n.child===null||n.tag===4)continue n;n.child.return=n,n=n.child}if(!(n.flags&2))return n.stateNode}}function js(n,e,t){var i=n.tag;if(i===5||i===6)n=n.stateNode,e?t.nodeType===8?t.parentNode.insertBefore(n,e):t.insertBefore(n,e):(t.nodeType===8?(e=t.parentNode,e.insertBefore(n,t)):(e=t,e.appendChild(n)),t=t._reactRootContainer,t!=null||e.onclick!==null||(e.onclick=ca));else if(i!==4&&(n=n.child,n!==null))for(js(n,e,t),n=n.sibling;n!==null;)js(n,e,t),n=n.sibling}function ks(n,e,t){var i=n.tag;if(i===5||i===6)n=n.stateNode,e?t.insertBefore(n,e):t.appendChild(n);else if(i!==4&&(n=n.child,n!==null))for(ks(n,e,t),n=n.sibling;n!==null;)ks(n,e,t),n=n.sibling}var Ne=null,ct=!1;function Jt(n,e,t){for(t=t.child;t!==null;)Ju(n,e,t),t=t.sibling}function Ju(n,e,t){if(Ln&&typeof Ln.onCommitFiberUnmount=="function")try{Ln.onCommitFiberUnmount(gn,t)}catch{}switch(t.tag){case 5:Re||Gr(t,e);case 6:var i=Ne,a=ct;Ne=null,Jt(n,e,t),Ne=i,ct=a,Ne!==null&&(ct?(n=Ne,t=t.stateNode,n.nodeType===8?n.parentNode.removeChild(t):n.removeChild(t)):Ne.removeChild(t.stateNode));break;case 18:Ne!==null&&(ct?(n=Ne,t=t.stateNode,n.nodeType===8?Bo(n.parentNode,t):n.nodeType===1&&Bo(n,t),ui(n)):Bo(Ne,t.stateNode));break;case 4:i=Ne,a=ct,Ne=t.stateNode.containerInfo,ct=!0,Jt(n,e,t),Ne=i,ct=a;break;case 0:case 11:case 14:case 15:if(!Re&&(i=t.updateQueue,i!==null&&(i=i.lastEffect,i!==null))){a=i=i.next;do{var o=a,l=o.destroy;o=o.tag,l!==void 0&&((o&2)!==0||(o&4)!==0)&&Ss(t,e,l),a=a.next}while(a!==i)}Jt(n,e,t);break;case 1:if(!Re&&(Gr(t,e),i=t.stateNode,typeof i.componentWillUnmount=="function"))try{i.props=t.memoizedProps,i.state=t.memoizedState,i.componentWillUnmount()}catch(u){me(t,e,u)}Jt(n,e,t);break;case 21:Jt(n,e,t);break;case 22:t.mode&1?(Re=(i=Re)||t.memoizedState!==null,Jt(n,e,t),Re=i):Jt(n,e,t);break;default:Jt(n,e,t)}}function Yu(n){var e=n.updateQueue;if(e!==null){n.updateQueue=null;var t=n.stateNode;t===null&&(t=n.stateNode=new ef),e.forEach(function(i){var a=ff.bind(null,n,i);t.has(i)||(t.add(i),i.then(a,a))})}}function dt(n,e){var t=e.deletions;if(t!==null)for(var i=0;ia&&(a=l),i&=~o}if(i=a,i=fe()-i,i=(120>i?120:480>i?480:1080>i?1080:1920>i?1920:3e3>i?3e3:4320>i?4320:1960*af(i/1960))-i,10n?16:n,qt===null)var i=!1;else{if(n=qt,qt=null,za=0,(Jn&6)!==0)throw Error(p(331));var a=Jn;for(Jn|=4,un=n.current;un!==null;){var o=un,l=o.child;if((un.flags&16)!==0){var u=o.deletions;if(u!==null){for(var h=0;hfe()-Os?yr(n,0):Ns|=t),We(n,e)}function lc(n,e){e===0&&((n.mode&1)===0?e=1:(e=Pe,Pe<<=1,(Pe&130023424)===0&&(Pe=4194304)));var t=Ie();n=Ct(n,e),n!==null&&(vt(n,e,t),We(n,t))}function df(n){var e=n.memoizedState,t=0;e!==null&&(t=e.retryLane),lc(n,t)}function ff(n,e){var t=0;switch(n.tag){case 13:var i=n.stateNode,a=n.memoizedState;a!==null&&(t=a.retryLane);break;case 19:i=n.stateNode;break;default:throw Error(p(314))}i!==null&&i.delete(e),lc(n,t)}var uc;uc=function(n,e,t){if(n!==null)if(n.memoizedProps!==e.pendingProps||Be.current)Ue=!0;else{if((n.lanes&t)===0&&(e.flags&128)===0)return Ue=!1,Xd(n,e,t);Ue=(n.flags&131072)!==0}else Ue=!1,pe&&(e.flags&1048576)!==0&&Ul(e,ma,e.index);switch(e.lanes=0,e.tag){case 2:var i=e.type;Ca(n,e),n=e.pendingProps;var a=zr(e,Ae.current);Wr(e,t),a=ls(null,e,i,n,a,t);var o=us();return e.flags|=1,typeof a=="object"&&a!==null&&typeof a.render=="function"&&a.$$typeof===void 0?(e.tag=1,e.memoizedState=null,e.updateQueue=null,Fe(i)?(o=!0,pa(e)):o=!1,e.memoizedState=a.state!==null&&a.state!==void 0?a.state:null,Zo(e),a.updater=wa,e.stateNode=a,a._reactInternals=e,es(e,i,n,t),e=vs(null,e,i,!0,o,t)):(e.tag=0,pe&&o&&Wo(e),Me(null,e,a,t),e=e.child),e;case 16:i=e.elementType;n:{switch(Ca(n,e),n=e.pendingProps,a=i._init,i=a(i._payload),e.type=i,a=e.tag=hf(i),n=ut(i,n),a){case 0:e=ms(null,e,i,n,t);break n;case 1:e=Mu(null,e,i,n,t);break n;case 11:e=Au(null,e,i,n,t);break n;case 14:e=Cu(null,e,i,ut(i.type,n),t);break n}throw Error(p(306,i,""))}return e;case 0:return i=e.type,a=e.pendingProps,a=e.elementType===i?a:ut(i,a),ms(n,e,i,a,t);case 1:return i=e.type,a=e.pendingProps,a=e.elementType===i?a:ut(i,a),Mu(n,e,i,a,t);case 3:n:{if(Iu(e),n===null)throw Error(p(387));i=e.pendingProps,o=e.memoizedState,a=o.element,Gl(n,e),ba(e,i,null,t);var l=e.memoizedState;if(i=l.element,o.isDehydrated)if(o={element:i,isDehydrated:!1,cache:l.cache,pendingSuspenseBoundaries:l.pendingSuspenseBoundaries,transitions:l.transitions},e.updateQueue.baseState=o,e.memoizedState=o,e.flags&256){a=Kr(Error(p(423)),e),e=Du(n,e,i,t,a);break n}else if(i!==a){a=Kr(Error(p(424)),e),e=Du(n,e,i,t,a);break n}else for(Ye=Ht(e.stateNode.containerInfo.firstChild),Je=e,pe=!0,lt=null,t=tu(e,null,i,t),e.child=t;t;)t.flags=t.flags&-3|4096,t=t.sibling;else{if(Ur(),i===a){e=Rt(n,e,t);break n}Me(n,e,i,t)}e=e.child}return e;case 5:return ru(e),n===null&&Ko(e),i=e.type,a=e.pendingProps,o=n!==null?n.memoizedProps:null,l=a.children,Do(i,a)?l=null:o!==null&&Do(i,o)&&(e.flags|=32),Pu(n,e),Me(n,e,l,t),e.child;case 6:return n===null&&Ko(e),null;case 13:return zu(n,e,t);case 4:return ts(e,e.stateNode.containerInfo),i=e.pendingProps,n===null?e.child=Vr(e,null,i,t):Me(n,e,i,t),e.child;case 11:return i=e.type,a=e.pendingProps,a=e.elementType===i?a:ut(i,a),Au(n,e,i,a,t);case 7:return Me(n,e,e.pendingProps,t),e.child;case 8:return Me(n,e,e.pendingProps.children,t),e.child;case 12:return Me(n,e,e.pendingProps.children,t),e.child;case 10:n:{if(i=e.type._context,a=e.pendingProps,o=e.memoizedProps,l=a.value,ie(ya,i._currentValue),i._currentValue=l,o!==null)if(st(o.value,l)){if(o.children===a.children&&!Be.current){e=Rt(n,e,t);break n}}else for(o=e.child,o!==null&&(o.return=e);o!==null;){var u=o.dependencies;if(u!==null){l=o.child;for(var h=u.firstContext;h!==null;){if(h.context===i){if(o.tag===1){h=Lt(-1,t&-t),h.tag=2;var _=o.updateQueue;if(_!==null){_=_.shared;var D=_.pending;D===null?h.next=h:(h.next=D.next,D.next=h),_.pending=h}}o.lanes|=t,h=o.alternate,h!==null&&(h.lanes|=t),Qo(o.return,t,e),u.lanes|=t;break}h=h.next}}else if(o.tag===10)l=o.type===e.type?null:o.child;else if(o.tag===18){if(l=o.return,l===null)throw Error(p(341));l.lanes|=t,u=l.alternate,u!==null&&(u.lanes|=t),Qo(l,t,e),l=o.sibling}else l=o.child;if(l!==null)l.return=o;else for(l=o;l!==null;){if(l===e){l=null;break}if(o=l.sibling,o!==null){o.return=l.return,l=o;break}l=l.return}o=l}Me(n,e,a.children,t),e=e.child}return e;case 9:return a=e.type,i=e.pendingProps.children,Wr(e,t),a=et(a),i=i(a),e.flags|=1,Me(n,e,i,t),e.child;case 14:return i=e.type,a=ut(i,e.pendingProps),a=ut(i.type,a),Cu(n,e,i,a,t);case 15:return Lu(n,e,e.type,e.pendingProps,t);case 17:return i=e.type,a=e.pendingProps,a=e.elementType===i?a:ut(i,a),Ca(n,e),e.tag=1,Fe(i)?(n=!0,pa(e)):n=!1,Wr(e,t),Xl(e,i,a),es(e,i,a,t),vs(null,e,i,!0,n,t);case 19:return Fu(n,e,t);case 22:return Ru(n,e,t)}throw Error(p(156,e.tag))};function cc(n,e){return Wi(n,e)}function pf(n,e,t,i){this.tag=n,this.key=t,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=e,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=i,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function it(n,e,t,i){return new pf(n,e,t,i)}function Ds(n){return n=n.prototype,!(!n||!n.isReactComponent)}function hf(n){if(typeof n=="function")return Ds(n)?1:0;if(n!=null){if(n=n.$$typeof,n===vn)return 11;if(n===ne)return 14}return 2}function Zt(n,e){var t=n.alternate;return t===null?(t=it(n.tag,e,n.key,n.mode),t.elementType=n.elementType,t.type=n.type,t.stateNode=n.stateNode,t.alternate=n,n.alternate=t):(t.pendingProps=e,t.type=n.type,t.flags=0,t.subtreeFlags=0,t.deletions=null),t.flags=n.flags&14680064,t.childLanes=n.childLanes,t.lanes=n.lanes,t.child=n.child,t.memoizedProps=n.memoizedProps,t.memoizedState=n.memoizedState,t.updateQueue=n.updateQueue,e=n.dependencies,t.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext},t.sibling=n.sibling,t.index=n.index,t.ref=n.ref,t}function Ha(n,e,t,i,a,o){var l=2;if(i=n,typeof n=="function")Ds(n)&&(l=1);else if(typeof n=="string")l=5;else n:switch(n){case on:return _r(t.children,a,o,e);case wn:l=8,a|=8;break;case J:return n=it(12,t,e,a|2),n.elementType=J,n.lanes=o,n;case cn:return n=it(13,t,e,a),n.elementType=cn,n.lanes=o,n;case Fn:return n=it(19,t,e,a),n.elementType=Fn,n.lanes=o,n;case Yn:return Wa(t,a,o,e);default:if(typeof n=="object"&&n!==null)switch(n.$$typeof){case mn:l=10;break n;case Tn:l=9;break n;case vn:l=11;break n;case ne:l=14;break n;case Gn:l=16,i=null;break n}throw Error(p(130,n==null?n:typeof n,""))}return e=it(l,t,e,a),e.elementType=n,e.type=i,e.lanes=o,e}function _r(n,e,t,i){return n=it(7,n,i,e),n.lanes=t,n}function Wa(n,e,t,i){return n=it(22,n,i,e),n.elementType=Yn,n.lanes=t,n.stateNode={isHidden:!1},n}function zs(n,e,t){return n=it(6,n,null,e),n.lanes=t,n}function Bs(n,e,t){return e=it(4,n.children!==null?n.children:[],n.key,e),e.lanes=t,e.stateNode={containerInfo:n.containerInfo,pendingChildren:null,implementation:n.implementation},e}function gf(n,e,t,i,a){this.tag=e,this.containerInfo=n,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=si(0),this.expirationTimes=si(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=si(0),this.identifierPrefix=i,this.onRecoverableError=a,this.mutableSourceEagerHydrationData=null}function Fs(n,e,t,i,a,o,l,u,h){return n=new gf(n,e,t,u,h),e===1?(e=1,o===!0&&(e|=8)):e=0,o=it(3,null,null,e),n.current=o,o.stateNode=n,o.memoizedState={element:i,isDehydrated:t,cache:null,transitions:null,pendingSuspenseBoundaries:null},Zo(o),n}function mf(n,e,t){var i=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(c)}catch(S){console.error(S)}}return c(),Ks.exports=Ef(),Ks.exports}var Tc;function Nf(){if(Tc)return qa;Tc=1;var c=Mc();return qa.createRoot=c.createRoot,qa.hydrateRoot=c.hydrateRoot,qa}var Of=Nf();const Af=ao(Of);var yn=oo();const ro=ao(yn),Ic=yn.createContext(void 0),Cf=({children:c})=>{const S=localStorage.getItem("selectedLanguage")||"python",[p,P]=yn.useState(S);return yn.useEffect(()=>{localStorage.setItem("selectedLanguage",p)},[p]),r.jsx(Ic.Provider,{value:{selectedLanguage:p,setSelectedLanguage:P},children:c})};function Lf(){const c=yn.useContext(Ic);if(c===void 0)throw new Error("useLanguage must be used within a LanguageProvider");return c}const Dc=yn.createContext(void 0);function Rf({children:c}){const[S,p]=yn.useState(!0),P=()=>p(!0),j=()=>p(!1),$=()=>p(!S);return r.jsx(Dc.Provider,{value:{isSidebarOpen:S,showSidebar:P,hideSidebar:j,toggleSidebar:$},children:c})}function Xs(){const c=yn.useContext(Dc);if(c===void 0)throw new Error("useSidebar must be used within SidebarProvider");return c}const Pf="_wave_nm5to_1",Qa={wave:Pf};function Mf(){return r.jsxs("div",{className:Qa.background,children:[r.jsx("div",{className:Qa.wave}),r.jsx("div",{className:Qa.wave}),r.jsx("div",{className:Qa.wave})]})}const If="_topbar_103sc_1",Df="_container_103sc_22",zf="_buttonContainer_103sc_28",Bf="_title_103sc_35",Ff="_iconLink_103sc_53",Uf="_hamburger_103sc_75",Hf="_hamburgerIcon_103sc_79",Wf="_hamburgerTop_103sc_88",Vf="_collapsed_103sc_92",$f="_hamburgerMiddle_103sc_96",Kf="_hamburgerBottom_103sc_106",pt={topbar:If,container:Df,buttonContainer:zf,title:Bf,iconLink:Ff,hamburger:Uf,hamburgerIcon:Hf,hamburgerTop:Wf,collapsed:Vf,hamburgerMiddle:$f,hamburgerBottom:Kf};var io={exports:{}},Gf=io.exports,jc;function Jf(){return jc||(jc=1,(function(c,S){(function(P,j){c.exports=j(oo())})(Gf,p=>(()=>{var P={"./node_modules/css-mediaquery/index.js":((C,x)=>{x.match=N,x.parse=w;var b=/(?:(only|not)?\s*([^\s\(\)]+)(?:\s*and)?\s*)?(.+)?/i,z=/\(\s*([^\s\:\)]+)\s*(?:\:\s*([^\s\)]+))?\s*\)/,A=/^(?:(min|max)-)?(.+)/,T=/(em|rem|px|cm|mm|in|pt|pc)?$/,k=/(dpi|dpcm|dppx)?$/;function N(G,L){return w(G).some(function(Q){var Z=Q.inverse,on=Q.type==="all"||L.type===Q.type;if(on&&Z||!(on||Z))return!1;var wn=Q.expressions.every(function(J){var mn=J.feature,Tn=J.modifier,vn=J.value,cn=L[mn];if(!cn)return!1;switch(mn){case"orientation":case"scan":return cn.toLowerCase()===vn.toLowerCase();case"width":case"height":case"device-width":case"device-height":vn=R(vn),cn=R(cn);break;case"resolution":vn=B(vn),cn=B(cn);break;case"aspect-ratio":case"device-aspect-ratio":case"device-pixel-ratio":vn=I(vn),cn=I(cn);break;case"grid":case"color":case"color-index":case"monochrome":vn=parseInt(vn,10)||1,cn=parseInt(cn,10)||0;break}switch(Tn){case"min":return cn>=vn;case"max":return cn<=vn;default:return cn===vn}});return wn&&!Z||!wn&&Z})}function w(G){return G.split(",").map(function(L){L=L.trim();var Q=L.match(b),Z=Q[1],on=Q[2],wn=Q[3]||"",J={};return J.inverse=!!Z&&Z.toLowerCase()==="not",J.type=on?on.toLowerCase():"all",wn=wn.match(/\([^\)]+\)/g)||[],J.expressions=wn.map(function(mn){var Tn=mn.match(z),vn=Tn[1].toLowerCase().match(A);return{modifier:vn[1],feature:vn[2],value:Tn[2]}}),J})}function I(G){var L=Number(G),Q;return L||(Q=G.match(/^(\d+)\s*\/\s*(\d+)$/),L=Q[1]/Q[2]),L}function B(G){var L=parseFloat(G),Q=String(G).match(k)[1];switch(Q){case"dpcm":return L/2.54;case"dppx":return L*96;default:return L}}function R(G){var L=parseFloat(G),Q=String(G).match(T)[1];switch(Q){case"em":return L*16;case"rem":return L*16;case"cm":return L*96/2.54;case"mm":return L*96/2.54/10;case"in":return L*96;case"pt":return L*72;case"pc":return L*72/12;default:return L}}}),"./node_modules/hyphenate-style-name/index.js":((C,x,b)=>{b.r(x),b.d(x,{default:()=>w});var z=/[A-Z]/g,A=/^ms-/,T={};function k(I){return"-"+I.toLowerCase()}function N(I){if(T.hasOwnProperty(I))return T[I];var B=I.replace(z,k);return T[I]=A.test(B)?"-"+B:B}const w=N}),"./node_modules/matchmediaquery/index.js":((C,x,b)=>{var z=b("./node_modules/css-mediaquery/index.js").match,A=typeof window<"u"?window.matchMedia:null;function T(N,w,I){var B=this;if(A&&!I){var R=A.call(window,N);this.matches=R.matches,this.media=R.media,R.addListener(Q)}else this.matches=z(N,w),this.media=N;this.addListener=G,this.removeListener=L,this.dispose=Z;function G(on){R&&R.addListener(on)}function L(on){R&&R.removeListener(on)}function Q(on){B.matches=on.matches,B.media=on.media}function Z(){R&&R.removeListener(Q)}}function k(N,w,I){return new T(N,w,I)}C.exports=k}),"./node_modules/object-assign/index.js":(C=>{var x=Object.getOwnPropertySymbols,b=Object.prototype.hasOwnProperty,z=Object.prototype.propertyIsEnumerable;function A(k){if(k==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(k)}function T(){try{if(!Object.assign)return!1;var k=new String("abc");if(k[5]="de",Object.getOwnPropertyNames(k)[0]==="5")return!1;for(var N={},w=0;w<10;w++)N["_"+String.fromCharCode(w)]=w;var I=Object.getOwnPropertyNames(N).map(function(R){return N[R]});if(I.join("")!=="0123456789")return!1;var B={};return"abcdefghijklmnopqrst".split("").forEach(function(R){B[R]=R}),Object.keys(Object.assign({},B)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}C.exports=T()?Object.assign:function(k,N){for(var w,I=A(k),B,R=1;R{var z=function(){};{var A=b("./node_modules/prop-types/lib/ReactPropTypesSecret.js"),T={},k=b("./node_modules/prop-types/lib/has.js");z=function(w){var I="Warning: "+w;typeof console<"u"&&console.error(I);try{throw new Error(I)}catch{}}}function N(w,I,B,R,G){for(var L in w)if(k(w,L)){var Q;try{if(typeof w[L]!="function"){var Z=Error((R||"React class")+": "+B+" type `"+L+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof w[L]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw Z.name="Invariant Violation",Z}Q=w[L](I,L,R,B,null,A)}catch(wn){Q=wn}if(Q&&!(Q instanceof Error)&&z((R||"React class")+": type specification of "+B+" `"+L+"` is invalid; the type checker function must return `null` or an `Error` but returned a "+typeof Q+". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument)."),Q instanceof Error&&!(Q.message in T)){T[Q.message]=!0;var on=G?G():"";z("Failed "+B+" type: "+Q.message+(on??""))}}}N.resetWarningCache=function(){T={}},C.exports=N}),"./node_modules/prop-types/factoryWithTypeCheckers.js":((C,x,b)=>{var z=b("./node_modules/react-is/index.js"),A=b("./node_modules/object-assign/index.js"),T=b("./node_modules/prop-types/lib/ReactPropTypesSecret.js"),k=b("./node_modules/prop-types/lib/has.js"),N=b("./node_modules/prop-types/checkPropTypes.js"),w=function(){};w=function(B){var R="Warning: "+B;typeof console<"u"&&console.error(R);try{throw new Error(R)}catch{}};function I(){return null}C.exports=function(B,R){var G=typeof Symbol=="function"&&Symbol.iterator,L="@@iterator";function Q(H){var nn=H&&(G&&H[G]||H[L]);if(typeof nn=="function")return nn}var Z="<>",on={array:Tn("array"),bigint:Tn("bigint"),bool:Tn("boolean"),func:Tn("function"),number:Tn("number"),object:Tn("object"),string:Tn("string"),symbol:Tn("symbol"),any:vn(),arrayOf:cn,element:Fn(),elementType:ne(),instanceOf:Gn,node:d(),objectOf:F,oneOf:Yn,oneOfType:dn,shape:tn,exact:Mn};function wn(H,nn){return H===nn?H!==0||1/H===1/nn:H!==H&&nn!==nn}function J(H,nn){this.message=H,this.data=nn&&typeof nn=="object"?nn:{},this.stack=""}J.prototype=Error.prototype;function mn(H){var nn={},In=0;function Cn(Hn,Dn,zn,Wn,$n,Bn,X){if(Wn=Wn||Z,Bn=Bn||zn,X!==T){if(R){var ce=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");throw ce.name="Invariant Violation",ce}else if(typeof console<"u"){var Ee=Wn+":"+zn;!nn[Ee]&&In<3&&(w("You are manually calling a React.PropTypes validation function for the `"+Bn+"` prop on `"+Wn+"`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details."),nn[Ee]=!0,In++)}}return Dn[zn]==null?Hn?Dn[zn]===null?new J("The "+$n+" `"+Bn+"` is marked as required "+("in `"+Wn+"`, but its value is `null`.")):new J("The "+$n+" `"+Bn+"` is marked as required in "+("`"+Wn+"`, but its value is `undefined`.")):null:H(Dn,zn,Wn,$n,Bn)}var En=Cn.bind(null,!1);return En.isRequired=Cn.bind(null,!0),En}function Tn(H){function nn(In,Cn,En,Hn,Dn,zn){var Wn=In[Cn],$n=Nn(Wn);if($n!==H){var Bn=jn(Wn);return new J("Invalid "+Hn+" `"+Dn+"` of type "+("`"+Bn+"` supplied to `"+En+"`, expected ")+("`"+H+"`."),{expectedType:H})}return null}return mn(nn)}function vn(){return mn(I)}function cn(H){function nn(In,Cn,En,Hn,Dn){if(typeof H!="function")return new J("Property `"+Dn+"` of component `"+En+"` has invalid PropType notation inside arrayOf.");var zn=In[Cn];if(!Array.isArray(zn)){var Wn=Nn(zn);return new J("Invalid "+Hn+" `"+Dn+"` of type "+("`"+Wn+"` supplied to `"+En+"`, expected an array."))}for(var $n=0;$n1?w("Invalid arguments supplied to oneOf, expected an array, got "+arguments.length+" arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z])."):w("Invalid argument supplied to oneOf, expected an array."),I;function nn(In,Cn,En,Hn,Dn){for(var zn=In[Cn],Wn=0;Wn0?", expected one of type ["+$n.join(", ")+"]":"";return new J("Invalid "+zn+" `"+Wn+"` supplied to "+("`"+Dn+"`"+Ee+"."))}return mn(Cn)}function d(){function H(nn,In,Cn,En,Hn){return kn(nn[In])?null:new J("Invalid "+En+" `"+Hn+"` supplied to "+("`"+Cn+"`, expected a ReactNode."))}return mn(H)}function E(H,nn,In,Cn,En){return new J((H||"React class")+": "+nn+" type `"+In+"."+Cn+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+En+"`.")}function tn(H){function nn(In,Cn,En,Hn,Dn){var zn=In[Cn],Wn=Nn(zn);if(Wn!=="object")return new J("Invalid "+Hn+" `"+Dn+"` of type `"+Wn+"` "+("supplied to `"+En+"`, expected `object`."));for(var $n in H){var Bn=H[$n];if(typeof Bn!="function")return E(En,Hn,Dn,$n,jn(Bn));var X=Bn(zn,$n,En,Hn,Dn+"."+$n,T);if(X)return X}return null}return mn(nn)}function Mn(H){function nn(In,Cn,En,Hn,Dn){var zn=In[Cn],Wn=Nn(zn);if(Wn!=="object")return new J("Invalid "+Hn+" `"+Dn+"` of type `"+Wn+"` "+("supplied to `"+En+"`, expected `object`."));var $n=A({},In[Cn],H);for(var Bn in $n){var X=H[Bn];if(k(H,Bn)&&typeof X!="function")return E(En,Hn,Dn,Bn,jn(X));if(!X)return new J("Invalid "+Hn+" `"+Dn+"` key `"+Bn+"` supplied to `"+En+"`.\nBad object: "+JSON.stringify(In[Cn],null," ")+` +Valid keys: `+JSON.stringify(Object.keys(H),null," "));var ce=X(zn,Bn,En,Hn,Dn+"."+Bn,T);if(ce)return ce}return null}return mn(nn)}function kn(H){switch(typeof H){case"number":case"string":case"undefined":return!0;case"boolean":return!H;case"object":if(Array.isArray(H))return H.every(kn);if(H===null||B(H))return!0;var nn=Q(H);if(nn){var In=nn.call(H),Cn;if(nn!==H.entries){for(;!(Cn=In.next()).done;)if(!kn(Cn.value))return!1}else for(;!(Cn=In.next()).done;){var En=Cn.value;if(En&&!kn(En[1]))return!1}}else return!1;return!0;default:return!1}}function Un(H,nn){return H==="symbol"?!0:nn?nn["@@toStringTag"]==="Symbol"||typeof Symbol=="function"&&nn instanceof Symbol:!1}function Nn(H){var nn=typeof H;return Array.isArray(H)?"array":H instanceof RegExp?"object":Un(nn,H)?"symbol":nn}function jn(H){if(typeof H>"u"||H===null)return""+H;var nn=Nn(H);if(nn==="object"){if(H instanceof Date)return"date";if(H instanceof RegExp)return"regexp"}return nn}function Sn(H){var nn=jn(H);switch(nn){case"array":case"object":return"an "+nn;case"boolean":case"date":case"regexp":return"a "+nn;default:return nn}}function ue(H){return!H.constructor||!H.constructor.name?Z:H.constructor.name}return on.checkPropTypes=N,on.resetWarningCache=N.resetWarningCache,on.PropTypes=on,on}}),"./node_modules/prop-types/index.js":((C,x,b)=>{{var z=b("./node_modules/react-is/index.js"),A=!0;C.exports=b("./node_modules/prop-types/factoryWithTypeCheckers.js")(z.isElement,A)}}),"./node_modules/prop-types/lib/ReactPropTypesSecret.js":(C=>{var x="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";C.exports=x}),"./node_modules/prop-types/lib/has.js":(C=>{C.exports=Function.call.bind(Object.prototype.hasOwnProperty)}),"./node_modules/react-is/cjs/react-is.development.js":((C,x)=>{(function(){var b=typeof Symbol=="function"&&Symbol.for,z=b?Symbol.for("react.element"):60103,A=b?Symbol.for("react.portal"):60106,T=b?Symbol.for("react.fragment"):60107,k=b?Symbol.for("react.strict_mode"):60108,N=b?Symbol.for("react.profiler"):60114,w=b?Symbol.for("react.provider"):60109,I=b?Symbol.for("react.context"):60110,B=b?Symbol.for("react.async_mode"):60111,R=b?Symbol.for("react.concurrent_mode"):60111,G=b?Symbol.for("react.forward_ref"):60112,L=b?Symbol.for("react.suspense"):60113,Q=b?Symbol.for("react.suspense_list"):60120,Z=b?Symbol.for("react.memo"):60115,on=b?Symbol.for("react.lazy"):60116,wn=b?Symbol.for("react.block"):60121,J=b?Symbol.for("react.fundamental"):60117,mn=b?Symbol.for("react.responder"):60118,Tn=b?Symbol.for("react.scope"):60119;function vn(X){return typeof X=="string"||typeof X=="function"||X===T||X===R||X===N||X===k||X===L||X===Q||typeof X=="object"&&X!==null&&(X.$$typeof===on||X.$$typeof===Z||X.$$typeof===w||X.$$typeof===I||X.$$typeof===G||X.$$typeof===J||X.$$typeof===mn||X.$$typeof===Tn||X.$$typeof===wn)}function cn(X){if(typeof X=="object"&&X!==null){var ce=X.$$typeof;switch(ce){case z:var Ee=X.type;switch(Ee){case B:case R:case T:case N:case k:case L:return Ee;default:var $e=Ee&&Ee.$$typeof;switch($e){case I:case G:case on:case Z:case w:return $e;default:return ce}}case A:return ce}}}var Fn=B,ne=R,Gn=I,Yn=w,F=z,dn=G,d=T,E=on,tn=Z,Mn=A,kn=N,Un=k,Nn=L,jn=!1;function Sn(X){return jn||(jn=!0,console.warn("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API.")),ue(X)||cn(X)===B}function ue(X){return cn(X)===R}function H(X){return cn(X)===I}function nn(X){return cn(X)===w}function In(X){return typeof X=="object"&&X!==null&&X.$$typeof===z}function Cn(X){return cn(X)===G}function En(X){return cn(X)===T}function Hn(X){return cn(X)===on}function Dn(X){return cn(X)===Z}function zn(X){return cn(X)===A}function Wn(X){return cn(X)===N}function $n(X){return cn(X)===k}function Bn(X){return cn(X)===L}x.AsyncMode=Fn,x.ConcurrentMode=ne,x.ContextConsumer=Gn,x.ContextProvider=Yn,x.Element=F,x.ForwardRef=dn,x.Fragment=d,x.Lazy=E,x.Memo=tn,x.Portal=Mn,x.Profiler=kn,x.StrictMode=Un,x.Suspense=Nn,x.isAsyncMode=Sn,x.isConcurrentMode=ue,x.isContextConsumer=H,x.isContextProvider=nn,x.isElement=In,x.isForwardRef=Cn,x.isFragment=En,x.isLazy=Hn,x.isMemo=Dn,x.isPortal=zn,x.isProfiler=Wn,x.isStrictMode=$n,x.isSuspense=Bn,x.isValidElementType=vn,x.typeOf=cn})()}),"./node_modules/react-is/index.js":((C,x,b)=>{C.exports=b("./node_modules/react-is/cjs/react-is.development.js")}),"./node_modules/shallow-equal/dist/index.esm.js":((C,x,b)=>{b.r(x),b.d(x,{shallowEqualArrays:()=>A,shallowEqualObjects:()=>z});function z(T,k){if(T===k)return!0;if(!T||!k)return!1;var N=Object.keys(T),w=Object.keys(k),I=N.length;if(w.length!==I)return!1;for(var B=0;B{Object.defineProperty(x,"__esModule",{value:!0});var z=b("react"),A=(0,z.createContext)(void 0);x.default=A}),"./src/index.ts":(function(C,x,b){var z=this&&this.__importDefault||function(w){return w&&w.__esModule?w:{default:w}};Object.defineProperty(x,"__esModule",{value:!0}),x.Context=x.toQuery=x.useMediaQuery=x.default=void 0;var A=z(b("./src/useMediaQuery.ts"));x.useMediaQuery=A.default;var T=z(b("./src/Component.ts"));x.default=T.default;var k=z(b("./src/toQuery.ts"));x.toQuery=k.default;var N=z(b("./src/Context.ts"));x.Context=N.default}),"./src/mediaQuery.ts":(function(C,x,b){var z=this&&this.__assign||function(){return z=Object.assign||function(L){for(var Q,Z=1,on=arguments.length;Z{C.exports=p})},j={};function $(C){var x=j[C];if(x!==void 0)return x.exports;var b=j[C]={exports:{}};return P[C].call(b.exports,b,b.exports,$),b.exports}$.d=(C,x)=>{for(var b in x)$.o(x,b)&&!$.o(C,b)&&Object.defineProperty(C,b,{enumerable:!0,get:x[b]})},$.o=(C,x)=>Object.prototype.hasOwnProperty.call(C,x),$.r=C=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(C,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(C,"__esModule",{value:!0})};var Y=$("./src/index.ts");return Y})())})(io)),io.exports}var zc=Jf();function Yf(c){return c<.5?2*c*c:1-Math.pow(-2*c+2,2)/2}function Bc({selector:c,duration:S=1500,offset:p=0}){const P=yn.useRef(null),j=yn.useRef(0),$=yn.useRef(!1),Y=()=>{j.current&&cancelAnimationFrame(j.current)},C=()=>$.current=!0,x=yn.useCallback(()=>{if(!P.current)return;Y(),$.current=!1;const z=P.current.offsetTop,A=window.scrollY,T=z-A-p,k=performance.now();if(!T)return;const N=w=>{const I=w-k,B=I/S,R=Yf(B>1?1:B),G=A+T*R;window.scrollTo({top:G}),I(P.current=document.querySelector(c),window.addEventListener("wheel",C,{passive:!0}),window.addEventListener("touchmove",C,{passive:!0}),()=>{Y(),window.removeEventListener("wheel",C),window.removeEventListener("touchmove",C)}),[c]),x}function Qe(...c){return c.filter(Boolean).join(" ")}const qf="_brand_18f9t_1",Qf="_bounce_18f9t_19",Xf="_glowDisappear_18f9t_23",Zf="_heartBeat_18f9t_27",np="_rubberBand_18f9t_31",ep="_rotate_18f9t_35",br={brand:qf,bounce:Qf,glowDisappear:Xf,heartBeat:Zf,rubberBand:np,rotate:ep};function tp(){const[c,S]=yn.useState(br.rotate),[p,P]=yn.useState(!1),j=[br.bounce,br.glowDisappear,br.heartBeat,br.rubberBand,br.rotate],$=Qe(br.brand,p&&c),Y=()=>P(!1),C=()=>{const x=Math.floor(Math.random()*j.length),b=j[x];P(!0),S(b)};return r.jsx("div",{className:$,onClick:C,onAnimationEnd:Y,children:"JWL"})}const rp="_container_uucyv_1",ip="_input_uucyv_6",ap="_label_uucyv_16",op="_indicator_uucyv_20",sp="_decoration_uucyv_28",Di={container:rp,input:ip,label:ap,indicator:op,decoration:sp};function kc(){const c=document.documentElement,[S,p]=yn.useState(!1),P=()=>{const $=new Event("themeChange");c.dispatchEvent($)},j=()=>{p(!S),c.setAttribute("data-theme",S?"dark":"light"),P()};return yn.useEffect(()=>{const $=c.getAttribute("data-theme");p($==="light"),P()},[]),r.jsxs("div",{className:Di.container,children:[r.jsx("input",{className:Di.input,"aria-label":"theme switch",id:"theme-switch",type:"checkbox",checked:S,onChange:j}),r.jsxs("label",{className:Di.label,htmlFor:"theme-switch",children:[r.jsx("span",{className:Di.indicator}),r.jsx("span",{className:Di.decoration})]})]})}function lp(){const c=document.documentElement,[S,p]=yn.useState("light"),P=()=>{const j=c.getAttribute("data-theme")??"light";p(j)};return yn.useEffect(()=>(c.addEventListener("themeChange",P),()=>c.removeEventListener("themeChange",P)),[c]),S}function up(){const S=lp()==="dark"?"#FFFFFF":"#181616";return r.jsx("svg",{viewBox:"0 0 128 128",children:r.jsxs("g",{fill:S,children:[r.jsx("path",{clipRule:"evenodd",fillRule:"evenodd",d:"M64 5.103c-33.347 0-60.388 27.035-60.388 60.388 0 26.682 17.303 49.317 41.297 57.303 3.017.56 4.125-1.31 4.125-2.905 0-1.44-.056-6.197-.082-11.243-16.8 3.653-20.345-7.125-20.345-7.125-2.747-6.98-6.705-8.836-6.705-8.836-5.48-3.748.413-3.67.413-3.67 6.063.425 9.257 6.223 9.257 6.223 5.386 9.23 14.127 6.562 17.573 5.02.542-3.903 2.107-6.568 3.834-8.076-13.413-1.525-27.514-6.704-27.514-29.843 0-6.593 2.36-11.98 6.223-16.21-.628-1.52-2.695-7.662.584-15.98 0 0 5.07-1.623 16.61 6.19C53.7 35 58.867 34.327 64 34.304c5.13.023 10.3.694 15.127 2.033 11.526-7.813 16.59-6.19 16.59-6.19 3.287 8.317 1.22 14.46.593 15.98 3.872 4.23 6.215 9.617 6.215 16.21 0 23.194-14.127 28.3-27.574 29.796 2.167 1.874 4.097 5.55 4.097 11.183 0 8.08-.07 14.583-.07 16.572 0 1.607 1.088 3.49 4.148 2.897 23.98-7.994 41.263-30.622 41.263-57.294C124.388 32.14 97.35 5.104 64 5.104z"}),r.jsx("path",{d:"M26.484 91.806c-.133.3-.605.39-1.035.185-.44-.196-.685-.605-.543-.906.13-.31.603-.395 1.04-.188.44.197.69.61.537.91zm2.446 2.729c-.287.267-.85.143-1.232-.28-.396-.42-.47-.983-.177-1.254.298-.266.844-.14 1.24.28.394.426.472.984.17 1.255zm2.382 3.477c-.37.258-.976.017-1.35-.52-.37-.538-.37-1.183.01-1.44.373-.258.97-.025 1.35.507.368.545.368 1.19-.01 1.452zm3.261 3.361c-.33.365-1.036.267-1.552-.23-.527-.487-.674-1.18-.343-1.544.336-.366 1.045-.264 1.564.23.527.486.686 1.18.333 1.543zm4.5 1.951c-.147.473-.825.688-1.51.486-.683-.207-1.13-.76-.99-1.238.14-.477.823-.7 1.512-.485.683.206 1.13.756.988 1.237m4.943.361c.017.498-.563.91-1.28.92-.723.017-1.308-.387-1.315-.877 0-.503.568-.91 1.29-.924.717-.013 1.306.387 1.306.88zm4.598-.782c.086.485-.413.984-1.126 1.117-.7.13-1.35-.172-1.44-.653-.086-.498.422-.997 1.122-1.126.714-.123 1.354.17 1.444.663zm0 0"})]})})}const cp=72;function dp({forwardedRef:c}){const S=yn.useRef(null),p=Bc({selector:"main",offset:cp}),{isSidebarOpen:P,toggleSidebar:j}=Xs(),$=zc.useMediaQuery({maxWidth:768}),Y=Qe(pt.hamburgerIcon,!P&&pt.collapsed),C=k=>{k.preventDefault(),window.history.replaceState({},"",window.location.pathname),p()},x=()=>j(),b=()=>!$&&r.jsx(tp,{}),z=()=>!$&&r.jsx("a",{href:"main",onClick:C,role:"button",children:r.jsx("h1",{className:pt.title,children:"LeetCode Cheatsheet"})}),A=()=>r.jsx("a",{href:"/leetcode-cheatsheet","aria-label":"GitHub source",className:pt.iconLink,target:"_blank",children:r.jsx(up,{})}),T=()=>$?r.jsxs(r.Fragment,{children:[r.jsx(kc,{}),A()]}):r.jsxs("div",{className:pt.buttonContainer,children:[A(),r.jsx(kc,{})]});return r.jsx("header",{ref:S,className:pt.topbar,children:r.jsxs("div",{className:pt.container,children:[r.jsxs("div",{ref:c,className:pt.hamburger,onClick:x,children:[r.jsx("span",{className:Qe(Y,pt.hamburgerTop)}),r.jsx("span",{className:Qe(Y,pt.hamburgerMiddle)}),r.jsx("span",{className:Qe(Y,pt.hamburgerBottom)})]}),b(),z(),T()]})})}const fp="_sidebar_14bou_1",pp="_exit_14bou_21",hp="_hide_14bou_24",gp="_scrollContainer_14bou_28",Xa={sidebar:fp,exit:pp,hide:hp,scrollContainer:gp};function so(c,S){const p=P=>{const j=$=>$.current&&!$.current.contains(P.target);(Array.isArray(c)?c.every(j):j(c))&&S()};yn.useEffect(()=>(document.addEventListener("click",p),()=>document.removeEventListener("click",p)),[c,S])}const mp="_accordion_1hmri_1",vp="_button_1hmri_6",yp="_open_1hmri_25",xp="_content_1hmri_29",Za={accordion:mp,button:vp,open:yp,content:xp};function _p(c){const S=parseFloat(c);return!isNaN(S)&&isFinite(S)}function Ec(c){return typeof c=="string"&&c[c.length-1]==="%"&&_p(c.substring(0,c.length-1))}function Ys(c,S,p){S===0&&!p&&c?.style&&c?.children.length>0&&(c.style.display="none")}function bp(c,S){S===0&&c?.style&&(c.style.display="")}const wp={animating:"rah-animating",animatingUp:"rah-animating--up",animatingDown:"rah-animating--down",animatingToHeightZero:"rah-animating--to-height-zero",animatingToHeightAuto:"rah-animating--to-height-auto",animatingToHeightSpecific:"rah-animating--to-height-specific",static:"rah-static",staticHeightZero:"rah-static--height-zero",staticHeightAuto:"rah-static--height-auto",staticHeightSpecific:"rah-static--height-specific"};function Nc(c,S){return[c.static,S===0&&c.staticHeightZero,typeof S=="number"&&S>0?c.staticHeightSpecific:null,S==="auto"&&c.staticHeightAuto].filter(p=>p).join(" ")}const Sp=["animateOpacity","animationStateClasses","applyInlineTransitions","children","className","contentClassName","contentRef","delay","duration","easing","height","onHeightAnimationEnd","onHeightAnimationStart","style","disableDisplayNone"],Tp=ro.forwardRef((c,S)=>{const{animateOpacity:p=!1,animationStateClasses:P={},applyInlineTransitions:j=!0,children:$,className:Y="",contentClassName:C,delay:x=0,disableDisplayNone:b=!1,duration:z=500,easing:A="ease",height:T,onHeightAnimationEnd:k,onHeightAnimationStart:N,style:w,contentRef:I}=c,B=Object.assign({},c);Sp.forEach(Un=>{delete B[Un]});const R=yn.useRef(T),G=yn.useRef(null),L=yn.useRef(),Q=yn.useRef(),Z=yn.useRef(Object.assign(Object.assign({},wp),P)),on=typeof window<"u",wn=yn.useRef(on&&window.matchMedia?window.matchMedia("(prefers-reduced-motion)").matches:!1),J=wn.current?0:x,mn=wn.current?0:z;let Tn=T,vn="visible";typeof T=="number"?(Tn=T<0?0:T,vn="hidden"):Ec(Tn)&&(Tn=T==="0%"?0:T,vn="hidden");const[cn,Fn]=yn.useState(Tn),[ne,Gn]=yn.useState(vn),[Yn,F]=yn.useState(!1),[dn,d]=yn.useState(Nc(Z.current,T));yn.useEffect(()=>{Ys(G.current,cn,b)},[]),yn.useEffect(()=>{if(T!==R.current&&G.current){bp(G.current,R.current),G.current.style.overflow="hidden";const Un=G.current.offsetHeight;G.current.style.overflow="";const Nn=mn+J;let jn,Sn,ue="hidden",H;const nn=R.current==="auto";typeof T=="number"?(jn=T<0?0:T,Sn=jn):Ec(T)?(jn=T==="0%"?0:T,Sn=jn):(jn=Un,Sn="auto",ue=void 0),nn&&(Sn=jn,jn=Un);const In=[Z.current.animating,(R.current==="auto"||TR.current)&&Z.current.animatingDown,Sn===0&&Z.current.animatingToHeightZero,Sn==="auto"&&Z.current.animatingToHeightAuto,typeof Sn=="number"&&Sn>0?Z.current.animatingToHeightSpecific:null].filter(En=>En).join(" "),Cn=Nc(Z.current,Sn);Fn(jn),Gn("hidden"),F(!nn),d(In),clearTimeout(Q.current),clearTimeout(L.current),nn?(H=!0,Q.current=setTimeout(()=>{Fn(Sn),Gn(ue),F(H),N?.(Sn)},50),L.current=setTimeout(()=>{F(!1),d(Cn),Ys(G.current,Sn,b),k?.(Sn)},Nn)):(N?.(jn),Q.current=setTimeout(()=>{Fn(Sn),Gn(ue),F(!1),d(Cn),T!=="auto"&&Ys(G.current,jn,b),k?.(jn)},Nn))}return R.current=T,()=>{clearTimeout(Q.current),clearTimeout(L.current)}},[T]);const E=Object.assign(Object.assign({},w),{height:cn,overflow:ne||w?.overflow});Yn&&j&&(E.transition=`height ${mn}ms ${A} ${J}ms`,w?.transition&&(E.transition=`${w.transition}, ${E.transition}`),E.WebkitTransition=E.transition);const tn={};p&&(tn.transition=`opacity ${mn}ms ${A} ${J}ms`,tn.WebkitTransition=tn.transition,cn===0&&(tn.opacity=0));const kn=typeof B["aria-hidden"]<"u"?B["aria-hidden"]:T===0;return ro.createElement("div",Object.assign({},B,{"aria-hidden":kn,className:`${dn} ${Y}`,style:E,ref:S}),ro.createElement("div",{className:C,style:tn,ref:Un=>{G.current=Un,I&&(I.current=Un)}},$))});function jp(){return r.jsx("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"black",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:r.jsx("polyline",{points:"6 9 12 15 18 9"})})}function De({title:c,children:S}){const[p,P]=yn.useState(!1),j=p?"auto":0,$=Qe(Za.button,p&&Za.open),Y=()=>P(!p);return r.jsxs("div",{className:Za.accordion,children:[r.jsxs("button",{className:$,onClick:Y,children:[r.jsx("span",{children:c}),r.jsx(jp,{})]}),r.jsx(Tp,{animateOpacity:!0,height:j,duration:400,children:r.jsx("div",{className:Za.content,children:S})})]})}const kp="_linkWrapper_1logo_1",Ep="_link_1logo_1",Oc={linkWrapper:kp,link:Ep},Np="_tooltip_1edpy_1",Op="_exit_1edpy_13",Ap="_text_1edpy_27",qs={tooltip:Np,exit:Op,text:Ap};var Cp=Mc();const Lp=ao(Cp);function Rp({anchorRef:c,content:S,showTooltip:p}){const P=yn.useRef(null),[j,$]=yn.useState(null),[Y,C]=yn.useState(!1),x=Qe(qs.tooltip,!p&&qs.exit),b=()=>C(!1),z=()=>{p||C(!0)};return yn.useEffect(()=>{if(!p||!c.current)return;const A=c.current.getBoundingClientRect(),T=P.current?.offsetHeight??0,k=A.left+window.scrollX,N=A.top+window.scrollY-T-4;$({top:N,left:k})},[p]),(p||!Y)&&c.current&&Lp.createPortal(r.jsx("div",{ref:P,className:x,style:j??{},onAnimationStart:b,onAnimationEnd:z,children:r.jsx("span",{className:qs.text,children:S})}),document.body)}function en({href:c,description:S}){const p=yn.useRef(null),[P,j]=yn.useState(!1),$=Bc({selector:c,offset:72});let Y;const C=z=>{z.preventDefault(),window.history.replaceState({},"",c),clearTimeout(Y),j(!1),$()},x=()=>{Y=setTimeout(()=>{j(!0)},700)},b=()=>{clearTimeout(Y),j(!1)};return r.jsxs("div",{className:Oc.linkWrapper,children:[r.jsx("a",{ref:p,href:c,className:Oc.link,onClick:C,role:"button","aria-description":S,onMouseEnter:x,onMouseLeave:b,children:S}),r.jsx(Rp,{anchorRef:p,content:S,showTooltip:P})]})}function Pp(){return r.jsxs(r.Fragment,{children:[r.jsxs(De,{title:"Big O",children:[r.jsx(en,{href:"#bigo-chart",description:"Time/Space Complexities"}),r.jsx(en,{href:"#bigo-data-structure-operations-table",description:"Data Structure Operations"}),r.jsx(en,{href:"#bigo-sorting-algorithms-table",description:"Sorting Algorithms"})]}),r.jsxs(De,{title:"Array",children:[r.jsx(en,{href:"#array-two-pointers-one-input",description:"two pointers: one input, opposite ends"}),r.jsx(en,{href:"#array-two-pointers-two-inputs",description:"two pointers: two inputs, exhaust both"}),r.jsx(en,{href:"#array-sliding-window",description:"sliding window"}),r.jsx(en,{href:"#array-prefix-sum",description:"prefix sum"}),r.jsx(en,{href:"#array-string-building",description:"efficient string building"})]}),r.jsxs(De,{title:"Hash Map",children:[r.jsx(en,{href:"#hashmap-find-number-of-subarrays",description:"find number of subarrays that fit an exact criteria"}),r.jsx(en,{href:"#hashmap-sliding-window",description:"sliding window"})]}),r.jsxs(De,{title:"Linked List",children:[r.jsx(en,{href:"#linkedlist-fast-and-slow-pointer",description:"fast and slow pointer"}),r.jsx(en,{href:"#linkedlist-reverse",description:"reverse linked list"})]}),r.jsxs(De,{title:"Stack",children:[r.jsx(en,{href:"#stack-monotonic-increasing",description:"monotonic increasing stack"}),r.jsx(en,{href:"#stack-monotonic-decreasing",description:"monotonic decreasing stack"})]}),r.jsxs(De,{title:"Binary Tree",children:[r.jsx(en,{href:"#tree-dfs-recursive",description:"DFS (recursive)"}),r.jsx(en,{href:"#tree-dfs-iterative",description:"DFS (iterative)"}),r.jsx(en,{href:"#tree-bfs",description:"BFS"})]}),r.jsxs(De,{title:"Graph",children:[r.jsx(en,{href:"#graph-dfs-recursive",description:"DFS (recursive)"}),r.jsx(en,{href:"#graph-dfs-iterative",description:"DFS (iterative)"}),r.jsx(en,{href:"#graph-bfs",description:"BFS"}),r.jsx(en,{href:"#graph-dijkstra",description:"Dijkstra (shortest path)"}),r.jsx(en,{href:"#graph-bellman-ford",description:"Bellman-Ford (shortest path)"}),r.jsx(en,{href:"#graph-kahn",description:"Kahn (topological sort)"}),r.jsx(en,{href:"#graph-kruskal",description:"Kruskal (mst)"}),r.jsx(en,{href:"#graph-prim",description:"Prim (mst)"})]}),r.jsx(De,{title:"Heap",children:r.jsx(en,{href:"#heap-find-top-k-elements",description:"find top k elements with heap"})}),r.jsxs(De,{title:"Binary Search",children:[r.jsx(en,{href:"#binarysearch-binary-search",description:"binary search"}),r.jsx(en,{href:"#binarysearch-duplicate-elements-left-insertion",description:"duplicate elements, left-most insertion point"}),r.jsx(en,{href:"#binarysearch-duplicate-elements-right-insertion",description:"duplicate elements, right-most insertion point"}),r.jsx(en,{href:"#binarysearch-greedy-minimum",description:"greedy (minimum)"}),r.jsx(en,{href:"#binarysearch-greedy-maximum",description:"greedy (maximum)"})]}),r.jsx(De,{title:"Backtracking",children:r.jsx(en,{href:"#backtracking-backtracking",description:"backtracking"})}),r.jsxs(De,{title:"Dynamic Programming",children:[r.jsx(en,{href:"#dp-top-down",description:"top-down DP"}),r.jsx(en,{href:"#dp-bottom-up",description:"bottom-up DP"}),r.jsx(en,{href:"#dp-kadane",description:"Kadane (max-sum subarray)"})]}),r.jsxs(De,{title:"Bit Manipulation",children:[r.jsx(en,{href:"#bitmanipulation-test-kth-bit",description:"test kth bit"}),r.jsx(en,{href:"#bitmanipulation-set-kth-bit",description:"set kth bit"}),r.jsx(en,{href:"#bitmanipulation-clear-kth-bit",description:"clear kth bit"}),r.jsx(en,{href:"#bitmanipulation-get-rightmost-bit",description:"get rightmost bit"}),r.jsx(en,{href:"#bitmanipulation-count-set-bits",description:"count set bits"}),r.jsx(en,{href:"#bitmanipulation-multiply-power-of-two",description:"multiply by 2^k"}),r.jsx(en,{href:"#bitmanipulation-divide-power-of-two",description:"divide by 2^k"}),r.jsx(en,{href:"#bitmanipulation-check-power-of-two",description:"check if number is power of 2"}),r.jsx(en,{href:"#bitmanipulation-swap-variables",description:"swap two variables"})]}),r.jsxs(De,{title:"Matrix",children:[r.jsx(en,{href:"#matrix-create-copy",description:"create / copy"}),r.jsx(en,{href:"#matrix-diagonals",description:"main / anti diagonals"}),r.jsx(en,{href:"#matrix-rotate-transpose",description:"rotate / transpose"})]}),r.jsxs(De,{title:"Data Structures",children:[r.jsx(en,{href:"#ds-array",description:"array"}),r.jsx(en,{href:"#ds-hash-map",description:"hashmap"}),r.jsx(en,{href:"#ds-linked-list",description:"linked list"}),r.jsx(en,{href:"#ds-doubly-linked-list",description:"doubly linked list"}),r.jsx(en,{href:"#ds-binary-tree",description:"binary tree"}),r.jsx(en,{href:"#ds-binary-search-tree",description:"binary search tree"}),r.jsx(en,{href:"#ds-graph",description:"graph"}),r.jsx(en,{href:"#ds-union-find",description:"union find"}),r.jsx(en,{href:"#ds-union-find-optimized",description:"union find optimized"}),r.jsx(en,{href:"#ds-trie",description:"trie"})]}),r.jsxs(De,{title:"Sorting Algorithms",children:[r.jsx(en,{href:"#sort-bubble",description:"bubble sort"}),r.jsx(en,{href:"#sort-selection",description:"selection sort"}),r.jsx(en,{href:"#sort-insertion",description:"insertion sort"}),r.jsx(en,{href:"#sort-shell",description:"shell sort"}),r.jsx(en,{href:"#sort-merge",description:"mergesort"}),r.jsx(en,{href:"#sort-quick",description:"quicksort"}),r.jsx(en,{href:"#sort-tim",description:"timsort"}),r.jsx(en,{href:"#sort-heap",description:"heapsort"}),r.jsx(en,{href:"#sort-counting",description:"counting sort"}),r.jsx(en,{href:"#sort-bucket",description:"bucket sort"}),r.jsx(en,{href:"#sort-radix",description:"radix sort"}),r.jsx(en,{href:"#sort-cube",description:"cubesort"}),r.jsx(en,{href:"#sort-bogo",description:"bogo sort"}),r.jsx(en,{href:"#sort-pancake",description:"pancake sort"}),r.jsx(en,{href:"#sort-sleep",description:"sleep sort"})]})]})}function Mp({hamburgerButtonRef:c}){const S=yn.useRef(null),{isSidebarOpen:p,showSidebar:P,hideSidebar:j}=Xs(),[$,Y]=yn.useState(!1),C=Qe(Xa.sidebar,!p&&Xa.exit,!p&&$&&Xa.hide),x=k=>{k&&p?j():!k&&!p&&P()},b=zc.useMediaQuery({maxWidth:768},void 0,x),z=()=>{b&&p&&j()},A=()=>Y(!1),T=()=>{p||Y(!0)};return so([S,c],z),r.jsx("nav",{ref:S,className:C,onAnimationStart:A,onAnimationEndCapture:T,children:r.jsx("div",{className:Xa.scrollContainer,children:r.jsx(Pp,{})})})}function Ip(){const c=yn.useRef(null);return r.jsxs("div",{id:"AppBar",children:[r.jsx(dp,{forwardedRef:c}),r.jsx(Mp,{hamburgerButtonRef:c})]})}const Dp="_main_1p6ym_1",zp="_sidebarHidden_1p6ym_11",Ac={main:Dp,sidebarHidden:zp},Bp="_container_1htmy_1",Fp="_sectionHeader_1htmy_7",Zn={container:Bp,sectionHeader:Fp},Up="_container_5c21h_1",Hp="_label_5c21h_13",Wp="_tableWrapper_5c21h_21",Vp="_red_5c21h_30",$p="_oliveGreen_5c21h_34",Kp="_green_5c21h_38",Gp="_orange_5c21h_42",Jp="_yellow_5c21h_46",Yp="_gray_5c21h_50",m={container:Up,label:Hp,tableWrapper:Wp,red:Vp,oliveGreen:$p,green:Kp,orange:Gp,yellow:Jp,gray:Yp};function qp(){const c={red:"rgba(255, 77, 77, 0.7)",orange:"rgba(255, 161, 22, 0.7)",yellow:"rgba(255, 216, 102, 0.7)",oliveGreen:"rgba(169, 220, 118, 0.7)",green:"rgba(63, 200, 111, 0.7)"};return r.jsx("section",{id:"bigo-chart",children:r.jsxs("div",{className:m.container,children:[r.jsx("h3",{children:"Big-O Complexity Chart"}),r.jsxs("svg",{id:"chart",viewBox:"0 0 800 500",children:[r.jsx("path",{d:"M50 450 L 50 0 L 800 0 L 800 450 Z",fill:c.red}),r.jsx("path",{d:"M50 450 L 800 0 L 800 450 Z",fill:c.orange}),r.jsx("path",{d:"M50 450 L 800 450 L 800 330 Z",fill:c.yellow}),r.jsx("path",{d:"M50 450 L 800 450 L 800 410 Z",fill:c.oliveGreen}),r.jsx("path",{d:"M50 450 L 800 450 L 800 440 Z",fill:c.green}),r.jsx("path",{d:"M50 0 L 50 450 L 800 450",fill:"transparent",stroke:"black",strokeWidth:"2"}),r.jsx("path",{d:"M50 448 L 800 448",fill:"transparent",stroke:"black",strokeWidth:"2"}),r.jsx("text",{x:"700",y:"438",fill:"black",children:"O(log n), O(1)"}),r.jsx("path",{d:"M50 450 L 800 400",fill:"transparent",stroke:"black",strokeWidth:"2"}),r.jsx("text",{x:"760",y:"390",fill:"black",children:"O(n)"}),r.jsx("path",{d:"M50 450 Q 400 350, 800 150",fill:"transparent",stroke:"black",strokeWidth:"2"}),r.jsx("text",{x:"630",y:"190",fill:"black",children:"O(n log n)"}),r.jsx("path",{d:"M50 450 Q 180 380, 250 0",fill:"transparent",stroke:"black",strokeWidth:"2"}),r.jsx("text",{x:"260",y:"30",fill:"black",children:"O(n^2)"}),r.jsx("path",{d:"M50 450 C 100 430, 120 350, 120 0",fill:"transparent",stroke:"black",strokeWidth:"2"}),r.jsx("text",{x:"125",y:"20",fill:"black",children:"O(2^n)"}),r.jsx("path",{d:"M50 450 C 80 450, 80 350, 80 0",fill:"transparent",stroke:"black",strokeWidth:"2"}),r.jsx("text",{x:"80",y:"20",fill:"black",children:"O(n!)"}),r.jsx("text",{className:m.label,x:"0",y:"0",transform:"translate(30 230) rotate(-90)",fill:"black",children:"Operations"}),r.jsx("text",{className:m.label,x:"0",y:"0",transform:"translate(420 470)",fill:"black",children:"Elements"})]})]})})}function Qp(){const c=yn.useRef(null),[S,p]=yn.useState(""),P=()=>{S&&c.current?.querySelector(`tr[data-row-number="${S}"]`)?.removeAttribute("focused")},j=$=>{const Y=$.currentTarget,C=Y.getAttribute("data-row-number")??"";P(),C===S?p(""):(Y.setAttribute("focused",""),p(C))};return so(c,P),r.jsx("section",{id:"bigo-data-structure-operations-table",children:r.jsxs("div",{className:m.container,children:[r.jsx("h3",{children:"Data Structure Operations"}),r.jsx("div",{className:m.tableWrapper,children:r.jsx("table",{ref:c,children:r.jsxs("tbody",{children:[r.jsxs("tr",{onClick:j,"data-row-number":"1",children:[r.jsx("th",{children:"Data Structure"}),r.jsx("th",{colSpan:8,children:"Time Complexity"}),r.jsx("th",{children:"Space Complexity"})]}),r.jsxs("tr",{onClick:j,"data-row-number":"2",children:[r.jsx("th",{}),r.jsx("th",{colSpan:4,children:"Average"}),r.jsx("th",{colSpan:4,children:"Worst"}),r.jsx("th",{children:"Worst"})]}),r.jsxs("tr",{onClick:j,"data-row-number":"3",children:[r.jsx("th",{}),r.jsx("th",{children:"Access"}),r.jsx("th",{children:"Search"}),r.jsx("th",{children:"Insertion"}),r.jsx("th",{children:"Deletion"}),r.jsx("th",{children:"Access"}),r.jsx("th",{children:"Search"}),r.jsx("th",{children:"Insertion"}),r.jsx("th",{children:"Deletion"}),r.jsx("th",{})]}),r.jsxs("tr",{onClick:j,"data-row-number":"4",children:[r.jsx("td",{children:r.jsx("a",{href:"http://en.wikipedia.org/wiki/Array_data_structure",target:"_blank",children:"Array"})}),r.jsx("td",{className:m.green,children:"Θ(1)"}),r.jsx("td",{className:m.yellow,children:"Θ(n)"}),r.jsx("td",{className:m.yellow,children:"Θ(n)"}),r.jsx("td",{className:m.yellow,children:"Θ(n)"}),r.jsx("td",{className:m.green,children:"O(1)"}),r.jsx("td",{className:m.yellow,children:"O(n)"}),r.jsx("td",{className:m.yellow,children:"O(n)"}),r.jsx("td",{className:m.yellow,children:"O(n)"}),r.jsx("td",{className:m.yellow,children:"O(n)"})]}),r.jsxs("tr",{onClick:j,"data-row-number":"5",children:[r.jsx("td",{children:r.jsx("a",{href:"http://en.wikipedia.org/wiki/Stack_(abstract_data_type)",target:"_blank",children:"Stack"})}),r.jsx("td",{className:m.yellow,children:"Θ(n)"}),r.jsx("td",{className:m.yellow,children:"Θ(n)"}),r.jsx("td",{className:m.green,children:"Θ(1)"}),r.jsx("td",{className:m.green,children:"Θ(1)"}),r.jsx("td",{className:m.yellow,children:"O(n)"}),r.jsx("td",{className:m.yellow,children:"O(n)"}),r.jsx("td",{className:m.green,children:"O(1)"}),r.jsx("td",{className:m.green,children:"O(1)"}),r.jsx("td",{className:m.yellow,children:"O(n)"})]}),r.jsxs("tr",{onClick:j,"data-row-number":"6",children:[r.jsx("td",{children:r.jsx("a",{href:"http://en.wikipedia.org/wiki/Queue_(abstract_data_type)",target:"_blank",children:"Queue"})}),r.jsx("td",{className:m.yellow,children:"Θ(n)"}),r.jsx("td",{className:m.yellow,children:"Θ(n)"}),r.jsx("td",{className:m.green,children:"Θ(1)"}),r.jsx("td",{className:m.green,children:"Θ(1)"}),r.jsx("td",{className:m.yellow,children:"O(n)"}),r.jsx("td",{className:m.yellow,children:"O(n)"}),r.jsx("td",{className:m.green,children:"O(1)"}),r.jsx("td",{className:m.green,children:"O(1)"}),r.jsx("td",{className:m.yellow,children:"O(n)"})]}),r.jsxs("tr",{onClick:j,"data-row-number":"7",children:[r.jsx("td",{children:r.jsx("a",{href:"http://en.wikipedia.org/wiki/Singly_linked_list#Singly_linked_lists",target:"_blank",children:"Singly-Linked List"})}),r.jsx("td",{className:m.yellow,children:"Θ(n)"}),r.jsx("td",{className:m.yellow,children:"Θ(n)"}),r.jsx("td",{className:m.green,children:"Θ(1)"}),r.jsx("td",{className:m.green,children:"Θ(1)"}),r.jsx("td",{className:m.yellow,children:"O(n)"}),r.jsx("td",{className:m.yellow,children:"O(n)"}),r.jsx("td",{className:m.green,children:"O(1)"}),r.jsx("td",{className:m.green,children:"O(1)"}),r.jsx("td",{className:m.yellow,children:"O(n)"})]}),r.jsxs("tr",{onClick:j,"data-row-number":"8",children:[r.jsx("td",{children:r.jsx("a",{href:"http://en.wikipedia.org/wiki/Doubly_linked_list",target:"_blank",children:"Doubly-Linked List"})}),r.jsx("td",{className:m.yellow,children:"Θ(n)"}),r.jsx("td",{className:m.yellow,children:"Θ(n)"}),r.jsx("td",{className:m.green,children:"Θ(1)"}),r.jsx("td",{className:m.green,children:"Θ(1)"}),r.jsx("td",{className:m.yellow,children:"O(n)"}),r.jsx("td",{className:m.yellow,children:"O(n)"}),r.jsx("td",{className:m.green,children:"O(1)"}),r.jsx("td",{className:m.green,children:"O(1)"}),r.jsx("td",{className:m.yellow,children:"O(n)"})]}),r.jsxs("tr",{onClick:j,"data-row-number":"9",children:[r.jsx("td",{children:r.jsx("a",{href:"http://en.wikipedia.org/wiki/Skip_list",target:"_blank",children:"Skip List"})}),r.jsx("td",{className:m.oliveGreen,children:"Θ(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"Θ(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"Θ(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"Θ(log(n))"}),r.jsx("td",{className:m.yellow,children:"O(n)"}),r.jsx("td",{className:m.yellow,children:"O(n)"}),r.jsx("td",{className:m.yellow,children:"O(n)"}),r.jsx("td",{className:m.yellow,children:"O(n)"}),r.jsx("td",{className:m.orange,children:"O(n log(n))"})]}),r.jsxs("tr",{onClick:j,"data-row-number":"10",children:[r.jsx("td",{children:r.jsx("a",{href:"http://en.wikipedia.org/wiki/Hash_table",target:"_blank",children:"Hash Table"})}),r.jsx("td",{className:m.gray,children:"N/A"}),r.jsx("td",{className:m.green,children:"Θ(1)"}),r.jsx("td",{className:m.green,children:"Θ(1)"}),r.jsx("td",{className:m.green,children:"Θ(1)"}),r.jsx("td",{className:m.gray,children:"N/A"}),r.jsx("td",{className:m.yellow,children:"O(n)"}),r.jsx("td",{className:m.yellow,children:"O(n)"}),r.jsx("td",{className:m.yellow,children:"O(n)"}),r.jsx("td",{className:m.yellow,children:"O(n)"})]}),r.jsxs("tr",{onClick:j,"data-row-number":"11",children:[r.jsx("td",{children:r.jsx("a",{href:"http://en.wikipedia.org/wiki/Binary_search_tree",target:"_blank",children:"Binary Search Tree"})}),r.jsx("td",{className:m.oliveGreen,children:"Θ(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"Θ(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"Θ(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"Θ(log(n))"}),r.jsx("td",{className:m.yellow,children:"O(n)"}),r.jsx("td",{className:m.yellow,children:"O(n)"}),r.jsx("td",{className:m.yellow,children:"O(n)"}),r.jsx("td",{className:m.yellow,children:"O(n)"}),r.jsx("td",{className:m.yellow,children:"O(n)"})]}),r.jsxs("tr",{onClick:j,"data-row-number":"12",children:[r.jsx("td",{children:r.jsx("a",{href:"https://en.wikipedia.org/wiki/Cartesian_tree",target:"_blank",children:"Cartesian Tree"})}),r.jsx("td",{className:m.gray,children:"N/A"}),r.jsx("td",{className:m.oliveGreen,children:"Θ(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"Θ(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"Θ(log(n))"}),r.jsx("td",{className:m.gray,children:"N/A"}),r.jsx("td",{className:m.yellow,children:"O(n)"}),r.jsx("td",{className:m.yellow,children:"O(n)"}),r.jsx("td",{className:m.yellow,children:"O(n)"}),r.jsx("td",{className:m.yellow,children:"O(n)"})]}),r.jsxs("tr",{onClick:j,"data-row-number":"13",children:[r.jsx("td",{children:r.jsx("a",{href:"http://en.wikipedia.org/wiki/B_tree",target:"_blank",children:"B-Tree"})}),r.jsx("td",{className:m.oliveGreen,children:"Θ(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"Θ(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"Θ(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"Θ(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"O(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"O(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"O(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"O(log(n))"}),r.jsx("td",{className:m.yellow,children:"O(n)"})]}),r.jsxs("tr",{onClick:j,"data-row-number":"14",children:[r.jsx("td",{children:r.jsx("a",{href:"http://en.wikipedia.org/wiki/Red-black_tree",target:"_blank",children:"Red-Black Tree"})}),r.jsx("td",{className:m.oliveGreen,children:"Θ(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"Θ(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"Θ(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"Θ(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"O(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"O(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"O(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"O(log(n))"}),r.jsx("td",{className:m.yellow,children:"O(n)"})]}),r.jsxs("tr",{onClick:j,"data-row-number":"15",children:[r.jsx("td",{children:r.jsx("a",{href:"https://en.wikipedia.org/wiki/Splay_tree",target:"_blank",children:"Splay Tree"})}),r.jsx("td",{className:m.gray,children:"N/A"}),r.jsx("td",{className:m.oliveGreen,children:"Θ(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"Θ(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"Θ(log(n))"}),r.jsx("td",{className:m.gray,children:"N/A"}),r.jsx("td",{className:m.oliveGreen,children:"O(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"O(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"O(log(n))"}),r.jsx("td",{className:m.yellow,children:"O(n)"})]}),r.jsxs("tr",{onClick:j,"data-row-number":"16",children:[r.jsx("td",{children:r.jsx("a",{href:"http://en.wikipedia.org/wiki/AVL_tree",target:"_blank",children:"AVL Tree"})}),r.jsx("td",{className:m.oliveGreen,children:"Θ(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"Θ(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"Θ(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"Θ(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"O(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"O(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"O(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"O(log(n))"}),r.jsx("td",{className:m.yellow,children:"O(n)"})]}),r.jsxs("tr",{onClick:j,"data-row-number":"17",children:[r.jsx("td",{children:r.jsx("a",{href:"http://en.wikipedia.org/wiki/K-d_tree",target:"_blank",children:"KD Tree"})}),r.jsx("td",{className:m.oliveGreen,children:"Θ(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"Θ(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"Θ(log(n))"}),r.jsx("td",{className:m.oliveGreen,children:"Θ(log(n))"}),r.jsx("td",{className:m.yellow,children:"O(n)"}),r.jsx("td",{className:m.yellow,children:"O(n)"}),r.jsx("td",{className:m.yellow,children:"O(n)"}),r.jsx("td",{className:m.yellow,children:"O(n)"}),r.jsx("td",{className:m.yellow,children:"O(n)"})]})]})})})]})})}function Xp(){const c=yn.useRef(null),[S,p]=yn.useState(""),P=()=>{S&&c.current?.querySelector(`tr[data-row-number="${S}"]`)?.removeAttribute("focused")},j=$=>{const Y=$.currentTarget,C=Y.getAttribute("data-row-number")??"";P(),C===S?p(""):(Y.setAttribute("focused",""),p(C))};return so(c,P),r.jsx("section",{id:"bigo-sorting-algorithms-table",children:r.jsxs("div",{className:m.container,children:[r.jsx("h3",{children:"Array Sorting Algorithms"}),r.jsx("div",{className:m.tableWrapper,children:r.jsx("table",{ref:c,children:r.jsxs("tbody",{children:[r.jsxs("tr",{onClick:j,"data-row-number":"1",children:[r.jsx("th",{children:"Algorithm"}),r.jsx("th",{colSpan:3,children:"Time Complexity"}),r.jsx("th",{children:"Space Complexity"})]}),r.jsxs("tr",{onClick:j,"data-row-number":"2",children:[r.jsx("th",{}),r.jsx("th",{children:"Best"}),r.jsx("th",{children:"Average"}),r.jsx("th",{children:"Worst"}),r.jsx("th",{children:"Worst"})]}),r.jsxs("tr",{onClick:j,"data-row-number":"3",children:[r.jsx("td",{children:r.jsx("a",{href:"http://en.wikipedia.org/wiki/Quicksort",target:"_blank",children:"Quicksort"})}),r.jsx("td",{className:m.orange,children:"Ω(n log(n))"}),r.jsx("td",{className:m.orange,children:"Θ(n log(n))"}),r.jsx("td",{className:m.red,children:"O(n^2)"}),r.jsx("td",{className:m.oliveGreen,children:"O(log(n))"})]}),r.jsxs("tr",{onClick:j,"data-row-number":"4",children:[r.jsx("td",{children:r.jsx("a",{href:"http://en.wikipedia.org/wiki/Merge_sort",target:"_blank",children:"Mergesort"})}),r.jsx("td",{className:m.orange,children:"Ω(n log(n))"}),r.jsx("td",{className:m.orange,children:"Θ(n log(n))"}),r.jsx("td",{className:m.orange,children:"O(n log(n))"}),r.jsx("td",{className:m.yellow,children:"O(n)"})]}),r.jsxs("tr",{onClick:j,"data-row-number":"5",children:[r.jsx("td",{children:r.jsx("a",{href:"http://en.wikipedia.org/wiki/Timsort",target:"_blank",children:"Timsort"})}),r.jsx("td",{className:m.yellow,children:"Ω(n)"}),r.jsx("td",{className:m.orange,children:"Θ(n log(n))"}),r.jsx("td",{className:m.orange,children:"O(n log(n))"}),r.jsx("td",{className:m.yellow,children:"O(n)"})]}),r.jsxs("tr",{onClick:j,"data-row-number":"6",children:[r.jsx("td",{children:r.jsx("a",{href:"http://en.wikipedia.org/wiki/Heapsort",target:"_blank",children:"Heapsort"})}),r.jsx("td",{className:m.orange,children:"Ω(n log(n))"}),r.jsx("td",{className:m.orange,children:"Θ(n log(n))"}),r.jsx("td",{className:m.orange,children:"O(n log(n))"}),r.jsx("td",{className:m.green,children:"O(1)"})]}),r.jsxs("tr",{onClick:j,"data-row-number":"7",children:[r.jsx("td",{children:r.jsx("a",{href:"http://en.wikipedia.org/wiki/Bubble_sort",target:"_blank",children:"Bubble Sort"})}),r.jsx("td",{className:m.yellow,children:"Ω(n)"}),r.jsx("td",{className:m.red,children:"Θ(n^2)"}),r.jsx("td",{className:m.red,children:"O(n^2)"}),r.jsx("td",{className:m.green,children:"O(1)"})]}),r.jsxs("tr",{onClick:j,"data-row-number":"8",children:[r.jsx("td",{children:r.jsx("a",{href:"http://en.wikipedia.org/wiki/Insertion_sort",target:"_blank",children:"Insertion Sort"})}),r.jsx("td",{className:m.yellow,children:"Ω(n)"}),r.jsx("td",{className:m.red,children:"Θ(n^2)"}),r.jsx("td",{className:m.red,children:"O(n^2)"}),r.jsx("td",{className:m.green,children:"O(1)"})]}),r.jsxs("tr",{onClick:j,"data-row-number":"9",children:[r.jsx("td",{children:r.jsx("a",{href:"http://en.wikipedia.org/wiki/Selection_sort",target:"_blank",children:"Selection Sort"})}),r.jsx("td",{className:m.red,children:"Ω(n^2)"}),r.jsx("td",{className:m.red,children:"Θ(n^2)"}),r.jsx("td",{className:m.red,children:"O(n^2)"}),r.jsx("td",{className:m.green,children:"O(1)"})]}),r.jsxs("tr",{onClick:j,"data-row-number":"10",children:[r.jsx("td",{children:r.jsx("a",{href:"https://en.wikipedia.org/wiki/Tree_sort",target:"_blank",children:"Tree Sort"})}),r.jsx("td",{className:m.orange,children:"Ω(n log(n))"}),r.jsx("td",{className:m.orange,children:"Θ(n log(n))"}),r.jsx("td",{className:m.red,children:"O(n^2)"}),r.jsx("td",{className:m.yellow,children:"O(n)"})]}),r.jsxs("tr",{onClick:j,"data-row-number":"11",children:[r.jsx("td",{children:r.jsx("a",{href:"http://en.wikipedia.org/wiki/Shellsort",target:"_blank",children:"Shell Sort"})}),r.jsx("td",{className:m.orange,children:"Ω(n log(n))"}),r.jsx("td",{className:m.red,children:"Θ(n(log(n))^2)"}),r.jsx("td",{className:m.red,children:"O(n(log(n))^2)"}),r.jsx("td",{className:m.green,children:"O(1)"})]}),r.jsxs("tr",{onClick:j,"data-row-number":"12",children:[r.jsx("td",{children:r.jsx("a",{href:"http://en.wikipedia.org/wiki/Bucket_sort",target:"_blank",children:"Bucket Sort"})}),r.jsx("td",{className:m.green,children:"Ω(n+k)"}),r.jsx("td",{className:m.green,children:"Θ(n+k)"}),r.jsx("td",{className:m.red,children:"O(n^2)"}),r.jsx("td",{className:m.yellow,children:"O(n)"})]}),r.jsxs("tr",{onClick:j,"data-row-number":"13",children:[r.jsx("td",{children:r.jsx("a",{href:"http://en.wikipedia.org/wiki/Radix_sort",target:"_blank",children:"Radix Sort"})}),r.jsx("td",{className:m.green,children:"Ω(nk)"}),r.jsx("td",{className:m.green,children:"Θ(nk)"}),r.jsx("td",{className:m.green,children:"O(nk)"}),r.jsx("td",{className:m.yellow,children:"O(n+k)"})]}),r.jsxs("tr",{onClick:j,"data-row-number":"14",children:[r.jsx("td",{children:r.jsx("a",{href:"https://en.wikipedia.org/wiki/Counting_sort",children:"Counting Sort"})}),r.jsx("td",{className:m.green,children:"Ω(n+k)"}),r.jsx("td",{className:m.green,children:"Θ(n+k)"}),r.jsx("td",{className:m.green,children:"O(n+k)"}),r.jsx("td",{className:m.yellow,children:"O(k)"})]}),r.jsxs("tr",{onClick:j,"data-row-number":"15",children:[r.jsx("td",{children:r.jsx("a",{href:"https://en.wikipedia.org/wiki/Cubesort",target:"_blank",children:"Cubesort"})}),r.jsx("td",{className:m.yellow,children:"Ω(n)"}),r.jsx("td",{className:m.orange,children:"Θ(n log(n))"}),r.jsx("td",{className:m.orange,children:"O(n log(n))"}),r.jsx("td",{className:m.yellow,children:"O(n)"})]})]})})})]})})}function Zp(){return r.jsxs("div",{className:Zn.container,children:[r.jsx("h2",{className:Zn.sectionHeader,children:"Big O"}),r.jsx(qp,{}),r.jsx(Qp,{}),r.jsx(Xp,{})]})}const nh="_container_12crg_1",eh="_buttonContainer_12crg_12",th="_tabButtonContainer_12crg_18",rh="_tabButton_12crg_18",no={container:nh,buttonContainer:eh,tabButtonContainer:th,tabButton:rh},ih="_code_1qx6e_1",ah="_line_1qx6e_13",Cc={code:ih,line:ah};function oh(c){const S=c.regex,p=c.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),P="decltype\\(auto\\)",j="[a-zA-Z_]\\w*::",Y="(?!struct)("+P+"|"+S.optional(j)+"[a-zA-Z_]\\w*"+S.optional("<[^<>]+>")+")",C={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},b={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[c.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+"\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)"+"|.)",end:"'",illegal:"."},c.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},z={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},A={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},c.inherit(b,{className:"string"}),{className:"string",begin:/<.*?>/},p,c.C_BLOCK_COMMENT_MODE]},T={className:"title",begin:S.optional(j)+c.IDENT_RE,relevance:0},k=S.optional(j)+c.IDENT_RE+"\\s*\\(",N=["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],w=["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],I=["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"],B=["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"],L={type:w,keyword:N,literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:I},Q={className:"function.dispatch",relevance:0,keywords:{_hint:B},begin:S.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,c.IDENT_RE,S.lookahead(/(<[^<>]+>|)\s*\(/))},Z=[Q,A,C,p,c.C_BLOCK_COMMENT_MODE,z,b],on={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:L,contains:Z.concat([{begin:/\(/,end:/\)/,keywords:L,contains:Z.concat(["self"]),relevance:0}]),relevance:0},wn={className:"function",begin:"("+Y+"[\\*&\\s]+)+"+k,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:L,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:P,keywords:L,relevance:0},{begin:k,returnBegin:!0,contains:[T],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[b,z]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:L,relevance:0,contains:[p,c.C_BLOCK_COMMENT_MODE,b,z,C,{begin:/\(/,end:/\)/,keywords:L,relevance:0,contains:["self",p,c.C_BLOCK_COMMENT_MODE,b,z,C]}]},C,p,c.C_BLOCK_COMMENT_MODE,A]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:L,illegal:"",keywords:L,contains:["self",C]},{begin:c.IDENT_RE+"::",keywords:L},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}var Qs,Lc;function sh(){if(Lc)return Qs;Lc=1;function c(f){return f instanceof Map?f.clear=f.delete=f.set=function(){throw new Error("map is read-only")}:f instanceof Set&&(f.add=f.clear=f.delete=function(){throw new Error("set is read-only")}),Object.freeze(f),Object.getOwnPropertyNames(f).forEach(O=>{const q=f[O],On=typeof q;(On==="object"||On==="function")&&!Object.isFrozen(q)&&c(q)}),f}class S{constructor(O){O.data===void 0&&(O.data={}),this.data=O.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function p(f){return f.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function P(f,...O){const q=Object.create(null);for(const On in f)q[On]=f[On];return O.forEach(function(On){for(const ae in On)q[ae]=On[ae]}),q}const j="",$=f=>!!f.scope,Y=(f,{prefix:O})=>{if(f.startsWith("language:"))return f.replace("language:","language-");if(f.includes(".")){const q=f.split(".");return[`${O}${q.shift()}`,...q.map((On,ae)=>`${On}${"_".repeat(ae+1)}`)].join(" ")}return`${O}${f}`};class C{constructor(O,q){this.buffer="",this.classPrefix=q.classPrefix,O.walk(this)}addText(O){this.buffer+=p(O)}openNode(O){if(!$(O))return;const q=Y(O.scope,{prefix:this.classPrefix});this.span(q)}closeNode(O){$(O)&&(this.buffer+=j)}value(){return this.buffer}span(O){this.buffer+=``}}const x=(f={})=>{const O={children:[]};return Object.assign(O,f),O};class b{constructor(){this.rootNode=x(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(O){this.top.children.push(O)}openNode(O){const q=x({scope:O});this.add(q),this.stack.push(q)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(O){return this.constructor._walk(O,this.rootNode)}static _walk(O,q){return typeof q=="string"?O.addText(q):q.children&&(O.openNode(q),q.children.forEach(On=>this._walk(O,On)),O.closeNode(q)),O}static _collapse(O){typeof O!="string"&&O.children&&(O.children.every(q=>typeof q=="string")?O.children=[O.children.join("")]:O.children.forEach(q=>{b._collapse(q)}))}}class z extends b{constructor(O){super(),this.options=O}addText(O){O!==""&&this.add(O)}startScope(O){this.openNode(O)}endScope(){this.closeNode()}__addSublanguage(O,q){const On=O.root;q&&(On.scope=`language:${q}`),this.add(On)}toHTML(){return new C(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function A(f){return f?typeof f=="string"?f:f.source:null}function T(f){return w("(?=",f,")")}function k(f){return w("(?:",f,")*")}function N(f){return w("(?:",f,")?")}function w(...f){return f.map(q=>A(q)).join("")}function I(f){const O=f[f.length-1];return typeof O=="object"&&O.constructor===Object?(f.splice(f.length-1,1),O):{}}function B(...f){return"("+(I(f).capture?"":"?:")+f.map(On=>A(On)).join("|")+")"}function R(f){return new RegExp(f.toString()+"|").exec("").length-1}function G(f,O){const q=f&&f.exec(O);return q&&q.index===0}const L=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function Q(f,{joinWith:O}){let q=0;return f.map(On=>{q+=1;const ae=q;let de=A(On),sn="";for(;de.length>0;){const an=L.exec(de);if(!an){sn+=de;break}sn+=de.substring(0,an.index),de=de.substring(an.index+an[0].length),an[0][0]==="\\"&&an[1]?sn+="\\"+String(Number(an[1])+ae):(sn+=an[0],an[0]==="("&&q++)}return sn}).map(On=>`(${On})`).join(O)}const Z=/\b\B/,on="[a-zA-Z]\\w*",wn="[a-zA-Z_]\\w*",J="\\b\\d+(\\.\\d+)?",mn="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",Tn="\\b(0b[01]+)",vn="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",cn=(f={})=>{const O=/^#![ ]*\//;return f.binary&&(f.begin=w(O,/.*\b/,f.binary,/\b.*/)),P({scope:"meta",begin:O,end:/$/,relevance:0,"on:begin":(q,On)=>{q.index!==0&&On.ignoreMatch()}},f)},Fn={begin:"\\\\[\\s\\S]",relevance:0},ne={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[Fn]},Gn={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[Fn]},Yn={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},F=function(f,O,q={}){const On=P({scope:"comment",begin:f,end:O,contains:[]},q);On.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const ae=B("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return On.contains.push({begin:w(/[ ]+/,"(",ae,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),On},dn=F("//","$"),d=F("/\\*","\\*/"),E=F("#","$"),tn={scope:"number",begin:J,relevance:0},Mn={scope:"number",begin:mn,relevance:0},kn={scope:"number",begin:Tn,relevance:0},Un={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[Fn,{begin:/\[/,end:/\]/,relevance:0,contains:[Fn]}]},Nn={scope:"title",begin:on,relevance:0},jn={scope:"title",begin:wn,relevance:0},Sn={begin:"\\.\\s*"+wn,relevance:0};var H=Object.freeze({__proto__:null,APOS_STRING_MODE:ne,BACKSLASH_ESCAPE:Fn,BINARY_NUMBER_MODE:kn,BINARY_NUMBER_RE:Tn,COMMENT:F,C_BLOCK_COMMENT_MODE:d,C_LINE_COMMENT_MODE:dn,C_NUMBER_MODE:Mn,C_NUMBER_RE:mn,END_SAME_AS_BEGIN:function(f){return Object.assign(f,{"on:begin":(O,q)=>{q.data._beginMatch=O[1]},"on:end":(O,q)=>{q.data._beginMatch!==O[1]&&q.ignoreMatch()}})},HASH_COMMENT_MODE:E,IDENT_RE:on,MATCH_NOTHING_RE:Z,METHOD_GUARD:Sn,NUMBER_MODE:tn,NUMBER_RE:J,PHRASAL_WORDS_MODE:Yn,QUOTE_STRING_MODE:Gn,REGEXP_MODE:Un,RE_STARTERS_RE:vn,SHEBANG:cn,TITLE_MODE:Nn,UNDERSCORE_IDENT_RE:wn,UNDERSCORE_TITLE_MODE:jn});function nn(f,O){f.input[f.index-1]==="."&&O.ignoreMatch()}function In(f,O){f.className!==void 0&&(f.scope=f.className,delete f.className)}function Cn(f,O){O&&f.beginKeywords&&(f.begin="\\b("+f.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",f.__beforeBegin=nn,f.keywords=f.keywords||f.beginKeywords,delete f.beginKeywords,f.relevance===void 0&&(f.relevance=0))}function En(f,O){Array.isArray(f.illegal)&&(f.illegal=B(...f.illegal))}function Hn(f,O){if(f.match){if(f.begin||f.end)throw new Error("begin & end are not supported with match");f.begin=f.match,delete f.match}}function Dn(f,O){f.relevance===void 0&&(f.relevance=1)}const zn=(f,O)=>{if(!f.beforeMatch)return;if(f.starts)throw new Error("beforeMatch cannot be used with starts");const q=Object.assign({},f);Object.keys(f).forEach(On=>{delete f[On]}),f.keywords=q.keywords,f.begin=w(q.beforeMatch,T(q.begin)),f.starts={relevance:0,contains:[Object.assign(q,{endsParent:!0})]},f.relevance=0,delete q.beforeMatch},Wn=["of","and","for","in","not","or","if","then","parent","list","value"],$n="keyword";function Bn(f,O,q=$n){const On=Object.create(null);return typeof f=="string"?ae(q,f.split(" ")):Array.isArray(f)?ae(q,f):Object.keys(f).forEach(function(de){Object.assign(On,Bn(f[de],O,de))}),On;function ae(de,sn){O&&(sn=sn.map(an=>an.toLowerCase())),sn.forEach(function(an){const xn=an.split("|");On[xn[0]]=[de,X(xn[0],xn[1])]})}}function X(f,O){return O?Number(O):ce(f)?0:1}function ce(f){return Wn.includes(f.toLowerCase())}const Ee={},$e=f=>{console.error(f)},Zr=(f,...O)=>{console.log(`WARN: ${f}`,...O)},wt=(f,O)=>{Ee[`${f}/${O}`]||(console.log(`Deprecated as of ${f}. ${O}`),Ee[`${f}/${O}`]=!0)},Mt=new Error;function er(f,O,{key:q}){let On=0;const ae=f[q],de={},sn={};for(let an=1;an<=O.length;an++)sn[an+On]=ae[an],de[an+On]=!0,On+=R(O[an-1]);f[q]=sn,f[q]._emit=de,f[q]._multi=!0}function zi(f){if(Array.isArray(f.begin)){if(f.skip||f.excludeBegin||f.returnBegin)throw $e("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),Mt;if(typeof f.beginScope!="object"||f.beginScope===null)throw $e("beginScope must be object"),Mt;er(f,f.begin,{key:"beginScope"}),f.begin=Q(f.begin,{joinWith:""})}}function tr(f){if(Array.isArray(f.end)){if(f.skip||f.excludeEnd||f.returnEnd)throw $e("skip, excludeEnd, returnEnd not compatible with endScope: {}"),Mt;if(typeof f.endScope!="object"||f.endScope===null)throw $e("endScope must be object"),Mt;er(f,f.end,{key:"endScope"}),f.end=Q(f.end,{joinWith:""})}}function rr(f){f.scope&&typeof f.scope=="object"&&f.scope!==null&&(f.beginScope=f.scope,delete f.scope)}function lo(f){rr(f),typeof f.beginScope=="string"&&(f.beginScope={_wrap:f.beginScope}),typeof f.endScope=="string"&&(f.endScope={_wrap:f.endScope}),zi(f),tr(f)}function Bi(f){function O(sn,an){return new RegExp(A(sn),"m"+(f.case_insensitive?"i":"")+(f.unicodeRegex?"u":"")+(an?"g":""))}class q{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(an,xn){xn.position=this.position++,this.matchIndexes[this.matchAt]=xn,this.regexes.push([xn,an]),this.matchAt+=R(an)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const an=this.regexes.map(xn=>xn[1]);this.matcherRe=O(Q(an,{joinWith:"|"}),!0),this.lastIndex=0}exec(an){this.matcherRe.lastIndex=this.lastIndex;const xn=this.matcherRe.exec(an);if(!xn)return null;const ye=xn.findIndex((ht,Dt)=>Dt>0&&ht!==void 0),re=this.matchIndexes[ye];return xn.splice(0,ye),Object.assign(xn,re)}}class On{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(an){if(this.multiRegexes[an])return this.multiRegexes[an];const xn=new q;return this.rules.slice(an).forEach(([ye,re])=>xn.addRule(ye,re)),xn.compile(),this.multiRegexes[an]=xn,xn}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(an,xn){this.rules.push([an,xn]),xn.type==="begin"&&this.count++}exec(an){const xn=this.getMatcher(this.regexIndex);xn.lastIndex=this.lastIndex;let ye=xn.exec(an);if(this.resumingScanAtSamePosition()&&!(ye&&ye.index===this.lastIndex)){const re=this.getMatcher(0);re.lastIndex=this.lastIndex+1,ye=re.exec(an)}return ye&&(this.regexIndex+=ye.position+1,this.regexIndex===this.count&&this.considerAll()),ye}}function ae(sn){const an=new On;return sn.contains.forEach(xn=>an.addRule(xn.begin,{rule:xn,type:"begin"})),sn.terminatorEnd&&an.addRule(sn.terminatorEnd,{type:"end"}),sn.illegal&&an.addRule(sn.illegal,{type:"illegal"}),an}function de(sn,an){const xn=sn;if(sn.isCompiled)return xn;[In,Hn,lo,zn].forEach(re=>re(sn,an)),f.compilerExtensions.forEach(re=>re(sn,an)),sn.__beforeBegin=null,[Cn,En,Dn].forEach(re=>re(sn,an)),sn.isCompiled=!0;let ye=null;return typeof sn.keywords=="object"&&sn.keywords.$pattern&&(sn.keywords=Object.assign({},sn.keywords),ye=sn.keywords.$pattern,delete sn.keywords.$pattern),ye=ye||/\w+/,sn.keywords&&(sn.keywords=Bn(sn.keywords,f.case_insensitive)),xn.keywordPatternRe=O(ye,!0),an&&(sn.begin||(sn.begin=/\B|\b/),xn.beginRe=O(xn.begin),!sn.end&&!sn.endsWithParent&&(sn.end=/\B|\b/),sn.end&&(xn.endRe=O(xn.end)),xn.terminatorEnd=A(xn.end)||"",sn.endsWithParent&&an.terminatorEnd&&(xn.terminatorEnd+=(sn.end?"|":"")+an.terminatorEnd)),sn.illegal&&(xn.illegalRe=O(sn.illegal)),sn.contains||(sn.contains=[]),sn.contains=[].concat(...sn.contains.map(function(re){return uo(re==="self"?sn:re)})),sn.contains.forEach(function(re){de(re,xn)}),sn.starts&&de(sn.starts,an),xn.matcher=ae(xn),xn}if(f.compilerExtensions||(f.compilerExtensions=[]),f.contains&&f.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return f.classNameAliases=P(f.classNameAliases||{}),de(f)}function ni(f){return f?f.endsWithParent||ni(f.starts):!1}function uo(f){return f.variants&&!f.cachedVariants&&(f.cachedVariants=f.variants.map(function(O){return P(f,{variants:null},O)})),f.cachedVariants?f.cachedVariants:ni(f)?P(f,{starts:f.starts?P(f.starts):null}):Object.isFrozen(f)?P(f):f}var ei="11.9.0";class ti extends Error{constructor(O,q){super(O),this.name="HTMLInjectionError",this.html=q}}const ir=p,Sr=P,Tr=Symbol("nomatch"),It=7,St=function(f){const O=Object.create(null),q=Object.create(null),On=[];let ae=!0;const de="Could not find the language '{}', did you forget to load/include a language module?",sn={disableAutodetect:!0,name:"Plain text",contains:[]};let an={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:z};function xn(W){return an.noHighlightRe.test(W)}function ye(W){let gn=W.className+" ";gn+=W.parentNode?W.parentNode.className:"";const Ln=an.languageDetectRe.exec(gn);if(Ln){const ee=gt(Ln[1]);return ee||(Zr(de.replace("{}",Ln[1])),Zr("Falling back to no-highlight mode for this block.",W)),ee?Ln[1]:"no-highlight"}return gn.split(/\s+/).find(ee=>xn(ee)||gt(ee))}function re(W,gn,Ln){let ee="",Qn="";typeof gn=="object"?(ee=W,Ln=gn.ignoreIllegals,Qn=gn.language):(wt("10.7.0","highlight(lang, code, ...args) has been deprecated."),wt("10.7.0",`Please use highlight(code, options) instead. +https://github.com/highlightjs/highlight.js/issues/2277`),Qn=W,ee=gn),Ln===void 0&&(Ln=!0);const Ke={code:ee,language:Qn};kt("before:highlight",Ke);const mt=Ke.result?Ke.result:ht(Ke.language,Ke.code,Ln);return mt.code=Ke.code,kt("after:highlight",mt),mt}function ht(W,gn,Ln,ee){const Qn=Object.create(null);function Ke(K,ln){return K.keywords[ln]}function mt(){if(!Rn.keywords){xe.addText(te);return}let K=0;Rn.keywordPatternRe.lastIndex=0;let ln=Rn.keywordPatternRe.exec(te),Pn="";for(;ln;){Pn+=te.substring(K,ln.index);const Kn=ze.case_insensitive?ln[0].toLowerCase():ln[0],oe=Ke(Rn,Kn);if(oe){const[ot,qi]=oe;if(xe.addText(Pn),Pn="",Qn[Kn]=(Qn[Kn]||0)+1,Qn[Kn]<=It&&(sr+=qi),ot.startsWith("_"))Pn+=ln[0];else{const lr=ze.classNameAliases[ot]||ot;Pe(ln[0],lr)}}else Pn+=ln[0];K=Rn.keywordPatternRe.lastIndex,ln=Rn.keywordPatternRe.exec(te)}Pn+=te.substring(K),xe.addText(Pn)}function kr(){if(te==="")return;let K=null;if(typeof Rn.subLanguage=="string"){if(!O[Rn.subLanguage]){xe.addText(te);return}K=ht(Rn.subLanguage,te,!0,Nr[Rn.subLanguage]),Nr[Rn.subLanguage]=K._top}else K=ar(te,Rn.subLanguage.length?Rn.subLanguage:null);Rn.relevance>0&&(sr+=K.relevance),xe.__addSublanguage(K._emitter,K.language)}function Se(){Rn.subLanguage!=null?kr():mt(),te=""}function Pe(K,ln){K!==""&&(xe.startScope(ln),xe.addText(K),xe.endScope())}function zt(K,ln){let Pn=1;const Kn=ln.length-1;for(;Pn<=Kn;){if(!K._emit[Pn]){Pn++;continue}const oe=ze.classNameAliases[K[Pn]]||K[Pn],ot=ln[Pn];oe?Pe(ot,oe):(te=ot,mt(),te=""),Pn++}}function or(K,ln){return K.scope&&typeof K.scope=="string"&&xe.openNode(ze.classNameAliases[K.scope]||K.scope),K.beginScope&&(K.beginScope._wrap?(Pe(te,ze.classNameAliases[K.beginScope._wrap]||K.beginScope._wrap),te=""):K.beginScope._multi&&(zt(K.beginScope,ln),te="")),Rn=Object.create(K,{parent:{value:Rn}}),Rn}function Gi(K,ln,Pn){let Kn=G(K.endRe,Pn);if(Kn){if(K["on:end"]){const oe=new S(K);K["on:end"](ln,oe),oe.isMatchIgnored&&(Kn=!1)}if(Kn){for(;K.endsParent&&K.parent;)K=K.parent;return K}}if(K.endsWithParent)return Gi(K.parent,ln,Pn)}function go(K){return Rn.matcher.regexIndex===0?(te+=K[0],1):(Xe=!0,0)}function oi(K){const ln=K[0],Pn=K.rule,Kn=new S(Pn),oe=[Pn.__beforeBegin,Pn["on:begin"]];for(const ot of oe)if(ot&&(ot(K,Kn),Kn.isMatchIgnored))return go(ln);return Pn.skip?te+=ln:(Pn.excludeBegin&&(te+=ln),Se(),!Pn.returnBegin&&!Pn.excludeBegin&&(te=ln)),or(Pn,K),Pn.returnBegin?0:ln.length}function Ji(K){const ln=K[0],Pn=gn.substring(K.index),Kn=Gi(Rn,K,Pn);if(!Kn)return Tr;const oe=Rn;Rn.endScope&&Rn.endScope._wrap?(Se(),Pe(ln,Rn.endScope._wrap)):Rn.endScope&&Rn.endScope._multi?(Se(),zt(Rn.endScope,K)):oe.skip?te+=ln:(oe.returnEnd||oe.excludeEnd||(te+=ln),Se(),oe.excludeEnd&&(te=ln));do Rn.scope&&xe.closeNode(),!Rn.skip&&!Rn.subLanguage&&(sr+=Rn.relevance),Rn=Rn.parent;while(Rn!==Kn.parent);return Kn.starts&&or(Kn.starts,K),oe.returnEnd?0:ln.length}function si(){const K=[];for(let ln=Rn;ln!==ze;ln=ln.parent)ln.scope&&K.unshift(ln.scope);K.forEach(ln=>xe.openNode(ln))}let vt={};function Yi(K,ln){const Pn=ln&&ln[0];if(te+=K,Pn==null)return Se(),0;if(vt.type==="begin"&&ln.type==="end"&&vt.index===ln.index&&Pn===""){if(te+=gn.slice(ln.index,ln.index+1),!ae){const Kn=new Error(`0 width match regex (${W})`);throw Kn.languageName=W,Kn.badRule=vt.rule,Kn}return 1}if(vt=ln,ln.type==="begin")return oi(ln);if(ln.type==="illegal"&&!Ln){const Kn=new Error('Illegal lexeme "'+Pn+'" for mode "'+(Rn.scope||"")+'"');throw Kn.mode=Rn,Kn}else if(ln.type==="end"){const Kn=Ji(ln);if(Kn!==Tr)return Kn}if(ln.type==="illegal"&&Pn==="")return 1;if(Bt>1e5&&Bt>ln.index*3)throw new Error("potential infinite loop, way more iterations than matches");return te+=Pn,Pn.length}const ze=gt(W);if(!ze)throw $e(de.replace("{}",W)),new Error('Unknown language: "'+W+'"');const Xn=Bi(ze);let Er="",Rn=ee||Xn;const Nr={},xe=new an.__emitter(an);si();let te="",sr=0,at=0,Bt=0,Xe=!1;try{if(ze.__emitTokens)ze.__emitTokens(gn,xe);else{for(Rn.matcher.considerAll();;){Bt++,Xe?Xe=!1:Rn.matcher.considerAll(),Rn.matcher.lastIndex=at;const K=Rn.matcher.exec(gn);if(!K)break;const ln=gn.substring(at,K.index),Pn=Yi(ln,K);at=K.index+Pn}Yi(gn.substring(at))}return xe.finalize(),Er=xe.toHTML(),{language:W,value:Er,relevance:sr,illegal:!1,_emitter:xe,_top:Rn}}catch(K){if(K.message&&K.message.includes("Illegal"))return{language:W,value:ir(gn),illegal:!0,relevance:0,_illegalBy:{message:K.message,index:at,context:gn.slice(at-100,at+100),mode:K.mode,resultSoFar:Er},_emitter:xe};if(ae)return{language:W,value:ir(gn),illegal:!1,relevance:0,errorRaised:K,_emitter:xe,_top:Rn};throw K}}function Dt(W){const gn={value:ir(W),illegal:!1,relevance:0,_top:sn,_emitter:new an.__emitter(an)};return gn._emitter.addText(W),gn}function ar(W,gn){gn=gn||an.languages||Object.keys(O);const Ln=Dt(W),ee=gn.filter(gt).filter(fe).map(Se=>ht(Se,W,!1));ee.unshift(Ln);const Qn=ee.sort((Se,Pe)=>{if(Se.relevance!==Pe.relevance)return Pe.relevance-Se.relevance;if(Se.language&&Pe.language){if(gt(Se.language).supersetOf===Pe.language)return 1;if(gt(Pe.language).supersetOf===Se.language)return-1}return 0}),[Ke,mt]=Qn,kr=Ke;return kr.secondBest=mt,kr}function co(W,gn,Ln){const ee=gn&&q[gn]||Ln;W.classList.add("hljs"),W.classList.add(`language-${ee}`)}function ri(W){let gn=null;const Ln=ye(W);if(xn(Ln))return;if(kt("before:highlightElement",{el:W,language:Ln}),W.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",W);return}if(W.children.length>0&&(an.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(W)),an.throwUnescapedHTML))throw new ti("One of your code blocks includes unescaped HTML.",W.innerHTML);gn=W;const ee=gn.textContent,Qn=Ln?re(ee,{language:Ln,ignoreIllegals:!0}):ar(ee);W.innerHTML=Qn.value,W.dataset.highlighted="yes",co(W,Ln,Qn.language),W.result={language:Qn.language,re:Qn.relevance,relevance:Qn.relevance},Qn.secondBest&&(W.secondBest={language:Qn.secondBest.language,relevance:Qn.secondBest.relevance}),kt("after:highlightElement",{el:W,result:Qn,text:ee})}function fo(W){an=Sr(an,W)}const jt=()=>{jr(),wt("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function Fi(){jr(),wt("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let ii=!1;function jr(){if(document.readyState==="loading"){ii=!0;return}document.querySelectorAll(an.cssSelector).forEach(ri)}function Ui(){ii&&jr()}typeof window<"u"&&window.addEventListener&&window.addEventListener("DOMContentLoaded",Ui,!1);function Hi(W,gn){let Ln=null;try{Ln=gn(f)}catch(ee){if($e("Language definition for '{}' could not be registered.".replace("{}",W)),ae)$e(ee);else throw ee;Ln=sn}Ln.name||(Ln.name=W),O[W]=Ln,Ln.rawDefinition=gn.bind(null,f),Ln.aliases&&$i(Ln.aliases,{languageName:W})}function Wi(W){delete O[W];for(const gn of Object.keys(q))q[gn]===W&&delete q[gn]}function Vi(){return Object.keys(O)}function gt(W){return W=(W||"").toLowerCase(),O[W]||O[q[W]]}function $i(W,{languageName:gn}){typeof W=="string"&&(W=[W]),W.forEach(Ln=>{q[Ln.toLowerCase()]=gn})}function fe(W){const gn=gt(W);return gn&&!gn.disableAutodetect}function po(W){W["before:highlightBlock"]&&!W["before:highlightElement"]&&(W["before:highlightElement"]=gn=>{W["before:highlightBlock"](Object.assign({block:gn.el},gn))}),W["after:highlightBlock"]&&!W["after:highlightElement"]&&(W["after:highlightElement"]=gn=>{W["after:highlightBlock"](Object.assign({block:gn.el},gn))})}function ai(W){po(W),On.push(W)}function Ki(W){const gn=On.indexOf(W);gn!==-1&&On.splice(gn,1)}function kt(W,gn){const Ln=W;On.forEach(function(ee){ee[Ln]&&ee[Ln](gn)})}function ho(W){return wt("10.7.0","highlightBlock will be removed entirely in v12.0"),wt("10.7.0","Please use highlightElement now."),ri(W)}Object.assign(f,{highlight:re,highlightAuto:ar,highlightAll:jr,highlightElement:ri,highlightBlock:ho,configure:fo,initHighlighting:jt,initHighlightingOnLoad:Fi,registerLanguage:Hi,unregisterLanguage:Wi,listLanguages:Vi,getLanguage:gt,registerAliases:$i,autoDetection:fe,inherit:Sr,addPlugin:ai,removePlugin:Ki}),f.debugMode=function(){ae=!1},f.safeMode=function(){ae=!0},f.versionString=ei,f.regex={concat:w,lookahead:T,either:B,optional:N,anyNumberOfTimes:k};for(const W in H)typeof H[W]=="object"&&c(H[W]);return Object.assign(f,H),f},Tt=St({});return Tt.newInstance=()=>St({}),Qs=Tt,Tt.HighlightJS=Tt,Tt.default=Tt,Qs}var lh=sh();const Xr=ao(lh);var Qr="[0-9](_*[0-9])*",eo=`\\.(${Qr})`,to="[0-9a-fA-F](_*[0-9a-fA-F])*",Rc={className:"number",variants:[{begin:`(\\b(${Qr})((${eo})|\\.)?|(${eo}))[eE][+-]?(${Qr})[fFdD]?\\b`},{begin:`\\b(${Qr})((${eo})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${eo})[fFdD]?\\b`},{begin:`\\b(${Qr})[fFdD]\\b`},{begin:`\\b0[xX]((${to})\\.?|(${to})?\\.(${to}))[pP][+-]?(${Qr})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${to})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function Fc(c,S,p){return p===-1?"":c.replace(S,P=>Fc(c,S,p-1))}function uh(c){const S=c.regex,p="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",P=p+Fc("(?:<"+p+"~~~(?:\\s*,\\s*"+p+"~~~)*>)?",/~~~/g,2),x={keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits"],literal:["false","true","null"],type:["char","boolean","long","float","int","byte","short","double"],built_in:["super","this"]},b={className:"meta",begin:"@"+p,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},z={className:"params",begin:/\(/,end:/\)/,keywords:x,relevance:0,contains:[c.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:x,illegal:/<\/|#/,contains:[c.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},c.C_LINE_COMMENT_MODE,c.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[c.BACKSLASH_ESCAPE]},c.APOS_STRING_MODE,c.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,p],className:{1:"keyword",3:"title.class"}},{match:/non-sealed/,scope:"keyword"},{begin:[S.concat(/(?!else)/,p),/\s+/,p,/\s+/,/=(?!=)/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,p],className:{1:"keyword",3:"title.class"},contains:[z,c.C_LINE_COMMENT_MODE,c.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+P+"\\s+)",c.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:x,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:x,relevance:0,contains:[b,c.APOS_STRING_MODE,c.QUOTE_STRING_MODE,Rc,c.C_BLOCK_COMMENT_MODE]},c.C_LINE_COMMENT_MODE,c.C_BLOCK_COMMENT_MODE]},Rc,b]}}function ch(c){const S=c.regex,p="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",P=S.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),j=S.concat(P,/(::\w+)*/),Y={"variable.constant":["__FILE__","__LINE__","__ENCODING__"],"variable.language":["self","super"],keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield",...["include","extend","prepend","public","private","protected","raise","throw"]],built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"],literal:["true","false","nil"]},C={className:"doctag",begin:"@[A-Za-z]+"},x={begin:"#<",end:">"},b=[c.COMMENT("#","$",{contains:[C]}),c.COMMENT("^=begin","^=end",{contains:[C],relevance:10}),c.COMMENT("^__END__",c.MATCH_NOTHING_RE)],z={className:"subst",begin:/#\{/,end:/\}/,keywords:Y},A={className:"string",contains:[c.BACKSLASH_ESCAPE,z],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:S.concat(/<<[-~]?'?/,S.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[c.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[c.BACKSLASH_ESCAPE,z]})]}]},T="[1-9](_?[0-9])*|0",k="[0-9](_?[0-9])*",N={className:"number",relevance:0,variants:[{begin:`\\b(${T})(\\.(${k}))?([eE][+-]?(${k})|r)?i?\\b`},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},w={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:Y}]},Z=[A,{variants:[{match:[/class\s+/,j,/\s+<\s+/,j]},{match:[/\b(class|module)\s+/,j]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:Y},{match:[/(include|extend)\s+/,j],scope:{2:"title.class"},keywords:Y},{relevance:0,match:[j,/\.new[. (]/],scope:{1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{relevance:0,match:P,scope:"title.class"},{match:[/def/,/\s+/,p],scope:{1:"keyword",3:"title.function"},contains:[w]},{begin:c.IDENT_RE+"::"},{className:"symbol",begin:c.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[A,{begin:p}],relevance:0},N,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|/,end:/\|/,excludeBegin:!0,excludeEnd:!0,relevance:0,keywords:Y},{begin:"("+c.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[c.BACKSLASH_ESCAPE,z],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(x,b),relevance:0}].concat(x,b);z.contains=Z,w.contains=Z;const mn=[{begin:/^\s*=>/,starts:{end:"$",contains:Z}},{className:"meta.prompt",begin:"^("+"[>?]>"+"|"+"[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]"+"|"+"(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>"+")(?=[ ])",starts:{end:"$",keywords:Y,contains:Z}}];return b.unshift(x),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:Y,illegal:/\/\*/,contains:[c.SHEBANG({binary:"ruby"})].concat(mn).concat(b).concat(Z)}}const Pc="[A-Za-z$_][0-9A-Za-z$_]*",dh=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],fh=["true","false","null","undefined","NaN","Infinity"],Uc=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],Hc=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],Wc=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],ph=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],hh=[].concat(Wc,Uc,Hc);function gh(c){const S=c.regex,p=(F,{after:dn})=>{const d="",end:""},$=/<[A-Za-z0-9\\._:-]+\s*\/>/,Y={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(F,dn)=>{const d=F[0].length+F.index,E=F.input[d];if(E==="<"||E===","){dn.ignoreMatch();return}E===">"&&(p(F,{after:d})||dn.ignoreMatch());let tn;const Mn=F.input.substring(d);if(tn=Mn.match(/^\s*=/)){dn.ignoreMatch();return}if((tn=Mn.match(/^\s+extends\s+/))&&tn.index===0){dn.ignoreMatch();return}}},C={$pattern:Pc,keyword:dh,literal:fh,built_in:hh,"variable.language":ph},x="[0-9](_?[0-9])*",b=`\\.(${x})`,z="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",A={className:"number",variants:[{begin:`(\\b(${z})((${b})|\\.)?|(${b}))[eE][+-]?(${x})\\b`},{begin:`\\b(${z})\\b((${b})\\b|\\.)?|(${b})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},T={className:"subst",begin:"\\$\\{",end:"\\}",keywords:C,contains:[]},k={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[c.BACKSLASH_ESCAPE,T],subLanguage:"xml"}},N={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[c.BACKSLASH_ESCAPE,T],subLanguage:"css"}},w={begin:"gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[c.BACKSLASH_ESCAPE,T],subLanguage:"graphql"}},I={className:"string",begin:"`",end:"`",contains:[c.BACKSLASH_ESCAPE,T]},R={className:"comment",variants:[c.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:P+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),c.C_BLOCK_COMMENT_MODE,c.C_LINE_COMMENT_MODE]},G=[c.APOS_STRING_MODE,c.QUOTE_STRING_MODE,k,N,w,I,{match:/\$\d+/},A];T.contains=G.concat({begin:/\{/,end:/\}/,keywords:C,contains:["self"].concat(G)});const L=[].concat(R,T.contains),Q=L.concat([{begin:/\(/,end:/\)/,keywords:C,contains:["self"].concat(L)}]),Z={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:C,contains:Q},on={variants:[{match:[/class/,/\s+/,P,/\s+/,/extends/,/\s+/,S.concat(P,"(",S.concat(/\./,P),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,P],scope:{1:"keyword",3:"title.class"}}]},wn={relevance:0,match:S.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...Uc,...Hc]}},J={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},mn={variants:[{match:[/function/,/\s+/,P,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[Z],illegal:/%/},Tn={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function vn(F){return S.concat("(?!",F.join("|"),")")}const cn={match:S.concat(/\b/,vn([...Wc,"super","import"]),P,S.lookahead(/\(/)),className:"title.function",relevance:0},Fn={begin:S.concat(/\./,S.lookahead(S.concat(P,/(?![0-9A-Za-z$_(])/))),end:P,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},ne={match:[/get|set/,/\s+/,P,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},Z]},Gn="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+c.UNDERSCORE_IDENT_RE+")\\s*=>",Yn={match:[/const|var|let/,/\s+/,P,/\s*/,/=\s*/,/(async\s*)?/,S.lookahead(Gn)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[Z]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:C,exports:{PARAMS_CONTAINS:Q,CLASS_REFERENCE:wn},illegal:/#(?![$_A-z])/,contains:[c.SHEBANG({label:"shebang",binary:"node",relevance:5}),J,c.APOS_STRING_MODE,c.QUOTE_STRING_MODE,k,N,w,I,R,{match:/\$\d+/},A,wn,{className:"attr",begin:P+S.lookahead(":"),relevance:0},Yn,{begin:"("+c.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[R,c.REGEXP_MODE,{className:"function",begin:Gn,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:c.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:C,contains:Q}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:j.begin,end:j.end},{match:$},{begin:Y.begin,"on:begin":Y.isTrulyOpeningTag,end:Y.end}],subLanguage:"xml",contains:[{begin:Y.begin,end:Y.end,skip:!0,contains:["self"]}]}]},mn,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+c.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[Z,c.inherit(c.TITLE_MODE,{begin:P,className:"title.function"})]},{match:/\.\.\./,relevance:0},Fn,{match:"\\$"+P,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[Z]},cn,Tn,on,ne,{match:/\$[(.]/}]}}function mh(c){const S=c.regex,p=new RegExp("[\\p{XID_Start}_]\\p{XID_Continue}*","u"),P=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],j=/[-+*\/%=<>&|^~]|\*\*?|\/\/?|<<=?|>>=?|\+=|-=|\*=|\/=|%=|@|<|>/,$=["bool","complex","dict","float","frozenset","int","list","set","str","tuple"],Y=["add_vertex","add","append","backtrack","bit_length","clear","collect_words","connected","counting_sort","defaultdict","deque","dfs","dp","extend","find_max_index","find","heapify","heappop","heappush","insert","insertion_sort","join","ListNode","merge_sort","pop","popleft","print_trie","quick_sort","RECURRENCE_RELATION","remove","shuffle","sort","TreeNode","TrieNode","union","UnionFind","update"],C=["BASE_CASE","BOOLEAN","CONDITION","CRITERIA","ITERATE_OVER_INPUT","MAXIMUM_POSSIBLE_ANSWER","MINIMUM_POSSIBLE_ANSWER","OTHER_ARGUMENTS","SMALLEST_SUBPROBLEM","START_NODE","STATE_FOR_WHOLE_INPUT","STATE","WINDOW_CONDITION_BROKEN"],x=["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip",...Y],b=["__debug__","Ellipsis","False","None","NotImplemented","True",...C],z=["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union",...$],A={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:P,built_in:x,literal:b,type:z},T={className:"meta",begin:/^(>>>|\.\.\.) /},k={className:"subst",begin:/\{/,end:/\}/,keywords:A,illegal:/#/},N={begin:/\{\{/,relevance:0},w={className:"string",contains:[c.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[c.BACKSLASH_ESCAPE,T],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[c.BACKSLASH_ESCAPE,T],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[c.BACKSLASH_ESCAPE,T,N,k]},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[c.BACKSLASH_ESCAPE,T,N,k]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[c.BACKSLASH_ESCAPE,N,k]},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[c.BACKSLASH_ESCAPE,N,k]},c.APOS_STRING_MODE,c.QUOTE_STRING_MODE]},I="[0-9](_?[0-9])*",B=`(\\b(${I}))?\\.(${I})|\\b(${I})\\.`,R=`\\b|${P.join("|")}`,G={className:"number",relevance:0,variants:[{begin:`(\\b(${I})|(${B}))[eE][+-]?(${I})[jJ]?(?=${R})`},{begin:`(${B})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${R})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${R})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${R})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${R})`},{begin:`\\b(${I})[jJ](?=${R})`}]},L={className:"comment",begin:S.lookahead(/# type:/),end:/$/,keywords:A,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},Q={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:A,contains:["self",T,G,w,c.HASH_COMMENT_MODE,{scope:"params.operator",match:j},{scope:"params.comma",match:","},{scope:"params.self",match:/self/}]}]};return k.contains=[w,G,T],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:A,illegal:/(<\/|\?)|=>/,contains:[T,G,{begin:/\bself\b/},{beginKeywords:"if",relevance:0},w,L,c.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,p],scope:{1:"keyword.def",3:"title.function"},contains:[Q]},{variants:[{match:[/\bclass/,/\s+/,p,/\s*/,/\(\s*/,p,/\s*\)/]},{match:[/\bclass/,/\s+/,p]}],scope:{1:"keyword.class",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[G,Q,w]},{scope:"operator",match:j}]}}Xr.registerLanguage("python",mh);Xr.registerLanguage("javascript",gh);Xr.registerLanguage("java",uh);Xr.registerLanguage("cpp",oh);Xr.registerLanguage("ruby",ch);function vh({code:c,language:S}){const p=yn.useRef(null),[P,j]=yn.useState(""),[$,Y]=yn.useState(""),C=Qe("hljs",S,Cc.code),x=()=>{if(p.current){const w=c.split(` +`).map((I,B)=>{const R=Xr.highlight(I,{language:S}).value;return`${R}`}).join("");Y(w)}},b=()=>{p.current?.querySelectorAll("span[data-line-number]")?.forEach(w=>w.addEventListener("click",T))},z=()=>{p.current?.querySelectorAll("span[data-line-number]")?.forEach(w=>w.removeEventListener("click",T))},A=()=>{p.current?.querySelector(`span[data-line-number="${P}"]`)?.removeAttribute("focused")},T=k=>{const N=k.currentTarget,w=N.getAttribute("data-line-number")??"";A(),w===P?j(""):(N.setAttribute("focused",""),j(w))};return so(p,A),yn.useEffect(()=>(x(),b(),()=>z()),[c,$,P]),r.jsx("pre",{ref:p,children:r.jsx("code",{className:C,dangerouslySetInnerHTML:{__html:$}})})}const yh="_copyButton_1hjzm_1",xh="_copySvg_1hjzm_25",_h="_checkSvg_1hjzm_32",bh="_checkSvgPath_1hjzm_37",wh="_enter_1hjzm_48",Sh="_exit_1hjzm_52",wr={copyButton:yh,copySvg:xh,checkSvg:_h,checkSvgPath:bh,enter:wh,exit:Sh};function Th({onClick:c}){const[S,p]=yn.useState("show"),[P,j]=yn.useState("hide"),$=Qe(wr.copySvg,S==="enter"&&wr.enter,S==="exit"&&wr.exit),Y=Qe(wr.checkSvg,P==="exit"&&wr.exit),C=Qe(wr.checkSvgPath),x=()=>{S==="show"&&P==="hide"&&(p("exit"),c())},b=()=>{S==="enter"&&p("show"),S==="exit"&&(p("hide"),j("show"))},z=()=>{P==="show"&&setTimeout(()=>{j("exit")},500),P==="exit"&&(j("hide"),p("enter"))},A=()=>S!=="hide"&&r.jsx("svg",{className:$,viewBox:"0 0 512 512",onAnimationEnd:b,children:r.jsx("path",{d:"M64 464H288c8.8 0 16-7.2 16-16V384h48v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h64v48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16zM224 304H448c8.8 0 16-7.2 16-16V64c0-8.8-7.2-16-16-16H224c-8.8 0-16 7.2-16 16V288c0 8.8 7.2 16 16 16zm-64-16V64c0-35.3 28.7-64 64-64H448c35.3 0 64 28.7 64 64V288c0 35.3-28.7 64-64 64H224c-35.3 0-64-28.7-64-64z"})}),T=()=>P!=="hide"&&r.jsx("svg",{className:Y,viewBox:"0 0 16 16",onAnimationEnd:z,children:r.jsx("path",{className:C,d:"M3.428571,9.14285714 L6.85714286,12.57142857 L12.5714286,3.42857143"})});return r.jsxs("button",{"aria-label":"copy button",className:wr.copyButton,onClick:x,children:[A(),T()]})}function jh(){return r.jsxs("svg",{viewBox:"0 0 128 128",children:[r.jsxs("linearGradient",{id:"python_svg__a",x1:70.252,x2:170.659,y1:1237.476,y2:1151.089,gradientTransform:"matrix(.563 0 0 -.568 -29.215 707.817)",gradientUnits:"userSpaceOnUse",children:[r.jsx("stop",{offset:0,stopColor:"#5A9FD4"}),r.jsx("stop",{offset:1,stopColor:"#306998"})]}),r.jsxs("linearGradient",{id:"python_svg__b",x1:209.474,x2:173.62,y1:1098.811,y2:1149.537,gradientTransform:"matrix(.563 0 0 -.568 -29.215 707.817)",gradientUnits:"userSpaceOnUse",children:[r.jsx("stop",{offset:0,stopColor:"#FFD43B"}),r.jsx("stop",{offset:1,stopColor:"#FFE873"})]}),r.jsx("path",{fill:"url(#python_svg__a)",d:"M63.391 1.988c-4.222.02-8.252.379-11.8 1.007-10.45 1.846-12.346 5.71-12.346 12.837v9.411h24.693v3.137H29.977c-7.176 0-13.46 4.313-15.426 12.521-2.268 9.405-2.368 15.275 0 25.096 1.755 7.311 5.947 12.519 13.124 12.519h8.491V67.234c0-8.151 7.051-15.34 15.426-15.34h24.665c6.866 0 12.346-5.654 12.346-12.548V15.833c0-6.693-5.646-11.72-12.346-12.837-4.244-.706-8.645-1.027-12.866-1.008M50.037 9.557c2.55 0 4.634 2.117 4.634 4.721 0 2.593-2.083 4.69-4.634 4.69-2.56 0-4.633-2.097-4.633-4.69-.001-2.604 2.073-4.721 4.633-4.721",transform:"translate(0 10.26)"}),r.jsx("path",{fill:"url(#python_svg__b)",d:"M91.682 28.38v10.966c0 8.5-7.208 15.655-15.426 15.655H51.591c-6.756 0-12.346 5.783-12.346 12.549v23.515c0 6.691 5.818 10.628 12.346 12.547 7.816 2.297 15.312 2.713 24.665 0 6.216-1.801 12.346-5.423 12.346-12.547v-9.412H63.938v-3.138h37.012c7.176 0 9.852-5.005 12.348-12.519 2.578-7.735 2.467-15.174 0-25.096-1.774-7.145-5.161-12.521-12.348-12.521h-9.268zM77.809 87.927c2.561 0 4.634 2.097 4.634 4.692 0 2.602-2.074 4.719-4.634 4.719-2.55 0-4.633-2.117-4.633-4.719 0-2.595 2.083-4.692 4.633-4.692",transform:"translate(0 10.26)"}),r.jsxs("radialGradient",{id:"python_svg__c",cx:1825.678,cy:444.45,r:26.743,gradientTransform:"matrix(0 -.24 -1.055 0 532.979 557.576)",gradientUnits:"userSpaceOnUse",children:[r.jsx("stop",{offset:0,stopColor:"#B8B8B8",stopOpacity:.498}),r.jsx("stop",{offset:1,stopColor:"#7F7F7F",stopOpacity:0})]}),r.jsx("path",{fill:"url(#python_svg__c)",d:"M97.309 119.597c0 3.543-14.816 6.416-33.091 6.416-18.276 0-33.092-2.873-33.092-6.416s14.815-6.417 33.092-6.417c18.275 0 33.091 2.872 33.091 6.417",opacity:.444})]})}function kh(){return r.jsxs("svg",{viewBox:"0 0 128 128",children:[r.jsx("path",{fill:"#F0DB4F",d:"M1.408 1.408h125.184v125.185H1.408z"}),r.jsx("path",{fill:"#323330",d:"M116.347 96.736c-.917-5.711-4.641-10.508-15.672-14.981-3.832-1.761-8.104-3.022-9.377-5.926-.452-1.69-.512-2.642-.226-3.665.821-3.32 4.784-4.355 7.925-3.403 2.023.678 3.938 2.237 5.093 4.724 5.402-3.498 5.391-3.475 9.163-5.879-1.381-2.141-2.118-3.129-3.022-4.045-3.249-3.629-7.676-5.498-14.756-5.355l-3.688.477c-3.534.893-6.902 2.748-8.877 5.235-5.926 6.724-4.236 18.492 2.975 23.335 7.104 5.332 17.54 6.545 18.873 11.531 1.297 6.104-4.486 8.08-10.234 7.378-4.236-.881-6.592-3.034-9.139-6.949-4.688 2.713-4.688 2.713-9.508 5.485 1.143 2.499 2.344 3.63 4.26 5.795 9.068 9.198 31.76 8.746 35.83-5.176.165-.478 1.261-3.666.38-8.581M69.462 58.943H57.753l-.048 30.272c0 6.438.333 12.34-.714 14.149-1.713 3.558-6.152 3.117-8.175 2.427-2.059-1.012-3.106-2.451-4.319-4.485-.333-.584-.583-1.036-.667-1.071l-9.52 5.83c1.583 3.249 3.915 6.069 6.902 7.901 4.462 2.678 10.459 3.499 16.731 2.059 4.082-1.189 7.604-3.652 9.448-7.401 2.666-4.915 2.094-10.864 2.07-17.444.06-10.735.001-21.468.001-32.237"})]})}function Eh(){return r.jsxs("svg",{id:"Layer_1",x:"0px",y:"0px",width:"306px",height:"344.35px",viewBox:"0 0 306 344.35","enable-background":"new 0 0 306 344.35",children:[r.jsx("path",{fill:"#00599C",d:"M302.107,258.262c2.401-4.159,3.893-8.845,3.893-13.053V99.14c0-4.208-1.49-8.893-3.892-13.052L153,172.175L302.107,258.262z"}),r.jsx("path",{fill:"#004482",d:"M166.25,341.193l126.5-73.034c3.644-2.104,6.956-5.737,9.357-9.897L153,172.175L3.893,258.263c2.401,4.159,5.714,7.793,9.357,9.896l126.5,73.034C147.037,345.401,158.963,345.401,166.25,341.193z"}),r.jsx("path",{fill:"#659AD2",d:"M302.108,86.087c-2.402-4.16-5.715-7.793-9.358-9.897L166.25,3.156c-7.287-4.208-19.213-4.208-26.5,0L13.25,76.19C5.962,80.397,0,90.725,0,99.14v146.069c0,4.208,1.491,8.894,3.893,13.053L153,172.175L302.108,86.087z"}),r.jsx("g",{children:r.jsx("path",{fill:"#FFFFFF",d:"M153,274.175c-56.243,0-102-45.757-102-102s45.757-102,102-102c36.292,0,70.139,19.53,88.331,50.968l-44.143,25.544c-9.105-15.736-26.038-25.512-44.188-25.512c-28.122,0-51,22.878-51,51c0,28.121,22.878,51,51,51c18.152,0,35.085-9.776,44.191-25.515l44.143,25.543C223.142,254.644,189.294,274.175,153,274.175z"})}),r.jsx("g",{children:r.jsx("polygon",{fill:"#FFFFFF",points:"255,166.508 243.666,166.508 243.666,155.175 232.334,155.175 232.334,166.508 221,166.508221,177.841 232.334,177.841 232.334,189.175 243.666,189.175 243.666,177.841 255,177.841 "})}),r.jsx("g",{children:r.jsx("polygon",{fill:"#FFFFFF",points:"297.5,166.508 286.166,166.508 286.166,155.175 274.834,155.175 274.834,166.508 263.5,166.508263.5,177.841 274.834,177.841 274.834,189.175 286.166,189.175 286.166,177.841 297.5,177.841 "})})]})}function Nh(){return r.jsxs("svg",{height:"800px",width:"800px",id:"Layer_1",viewBox:"0 0 511.998 511.998",children:[r.jsxs("g",{children:[r.jsx("path",{fill:"#DB380E",d:"M253.464,94.869c-23.658,16.639-50.471,35.498-64.838,66.699c-24.954,54.435,51.062,113.812,54.311,116.313c0.755,0.581,1.659,0.871,2.56,0.871c0.957,0,1.915-0.327,2.693-0.979c1.509-1.262,1.937-3.406,1.031-5.152c-0.275-0.53-27.561-53.53-26.547-91.552c0.359-13.243,18.892-28.266,38.512-44.171c17.97-14.568,38.34-31.079,50.258-50.394c26.164-42.516-2.916-84.322-3.213-84.74c-1.155-1.622-3.287-2.209-5.11-1.41c-1.821,0.804-2.83,2.773-2.414,4.72c0.059,0.277,5.714,27.923-10.022,56.406C284.203,73.25,269.959,83.268,253.464,94.869z"}),r.jsx("path",{fill:"#DB380E",d:"M353.137,113.617c1.669-1.257,2.159-3.55,1.15-5.38c-1.011-1.83-3.211-2.637-5.165-1.895c-4.019,1.528-98.416,37.915-98.416,81.88c0,30.307,12.946,46.317,22.399,58.009c3.708,4.586,6.909,8.546,7.964,11.927c2.97,9.743-4.066,27.353-7.025,33.317c-0.853,1.714-0.435,3.792,1.016,5.044c0.784,0.677,1.763,1.021,2.743,1.021c0.834,0,1.672-0.248,2.396-0.752c1.623-1.128,39.667-28.026,32.844-60.433c-2.542-12.318-8.595-21.318-13.936-29.26c-8.274-12.305-14.25-21.193-5.184-37.609C304.545,150.338,352.65,113.981,353.137,113.617z"})]}),r.jsxs("g",{children:[r.jsx("path",{fill:"#73A1FB",d:"M107.418,298.236c-1.618,4.845-0.854,9.651,2.207,13.903c10.233,14.207,46.48,22.029,102.068,22.029c0.003,0,0.005,0,0.007,0c7.532,0,15.484-0.148,23.629-0.44c88.875-3.181,121.839-30.869,123.199-32.046c1.482-1.283,1.878-3.419,0.957-5.147c-0.922-1.727-2.909-2.595-4.808-2.072c-31.301,8.546-89.748,11.58-130.288,11.58c-45.363,0-68.465-3.268-74.121-5.681c2.902-3.985,20.802-11.101,42.983-15.464c2.12-0.416,3.577-2.374,3.367-4.524s-2.016-3.79-4.177-3.79C179.439,276.584,114.234,277.628,107.418,298.236z"}),r.jsx("path",{fill:"#73A1FB",d:"M404.812,269.718c-18.331,0-35.714,9.188-36.446,9.577c-1.695,0.908-2.555,2.852-2.09,4.72c0.467,1.865,2.144,3.176,4.067,3.178c0.389,0,39.102,0.317,42.608,22.436c3.106,19.082-36.629,50-52.202,60.304c-1.682,1.113-2.335,3.263-1.554,5.123c0.665,1.583,2.206,2.573,3.868,2.573c0.29,0,0.584-0.03,0.876-0.092c3.696-0.791,90.406-19.899,81.238-70.384C439.584,276.213,420.138,269.718,404.812,269.718z"}),r.jsx("path",{fill:"#73A1FB",d:"M345.347,363.755c0.302-1.617-0.371-3.262-1.717-4.207l-20.791-14.563c-1.014-0.71-2.295-0.933-3.485-0.618c-0.217,0.055-21.959,5.771-53.525,9.276c-12.528,1.405-26.56,2.147-40.582,2.147c-31.558,0-52.192-3.708-55.197-6.428c-0.398-0.764-0.272-1.111-0.201-1.304c0.546-1.518,3.472-3.322,5.358-4.036c2.083-0.771,3.206-3.033,2.558-5.157c-0.646-2.127-2.837-3.378-4.999-2.859c-20.856,5.033-31.054,12.071-30.312,20.918c1.318,15.686,37.65,23.737,68.365,25.865c4.417,0.302,9.194,0.455,14.195,0.455c0.003,0,0.005,0,0.008,0c51.074,0,116.55-16.025,117.204-16.188C343.825,366.666,345.044,365.375,345.347,363.755z"}),r.jsx("path",{fill:"#73A1FB",d:"M188.602,397.419c1.575-1.024,2.273-2.971,1.714-4.764c-0.557-1.793-2.234-2.971-4.118-2.946c-2.795,0.074-27.349,1.182-29.068,16.815c-0.52,4.672,0.818,8.941,3.979,12.686c8.816,10.448,32.614,16.658,72.741,18.984c4.747,0.285,9.569,0.428,14.334,0.428c51.015,0,85.373-15.973,86.812-16.653c1.395-0.66,2.315-2.031,2.397-3.571s-0.687-3.001-2.003-3.806l-26.275-16.04c-0.912-0.556-2.003-0.74-3.043-0.527c-0.166,0.035-16.849,3.495-42.026,6.913c-4.764,0.648-10.73,0.977-17.73,0.977c-25.15,0-53.124-4.109-58.489-6.8C187.749,398.613,187.848,397.975,188.602,397.419z"}),r.jsx("path",{fill:"#73A1FB",d:"M224.408,486.85c116.854-0.099,179.571-20.88,191.653-33.957c4.277-4.626,4.739-9.006,4.376-11.867c-0.898-7.04-7.311-11.35-8.038-11.818c-1.754-1.128-4.108-0.833-5.476,0.745c-1.365,1.578-1.397,3.884-0.027,5.461c0.737,0.948,1.163,2.535-0.992,4.692c-4.83,4.511-53.545,18.204-134.656,22.318c-11.111,0.577-22.765,0.871-34.636,0.873c-72.623,0-125.772-9.948-132.749-15.744c2.689-3.864,21.489-10.037,41.482-13.529c2.253-0.393,3.775-2.516,3.426-4.776c-0.349-2.259-2.432-3.814-4.709-3.519c-0.564,0.077-2.478,0.191-4.694,0.327c-32.988,2.014-71.109,6.503-73.098,23.5c-0.604,5.179,0.935,9.881,4.576,13.973c8.909,10.01,34.516,23.319,153.558,23.319C224.406,486.85,224.406,486.85,224.408,486.85z"}),r.jsx("path",{fill:"#73A1FB",d:"M439.013,456.578c-1.652-0.764-3.604-0.378-4.836,0.952c-0.171,0.185-17.74,18.556-70.564,29.344c-20.223,4.052-58.183,6.107-112.826,6.107c-54.745,0-106.838-2.154-107.357-2.176c-2.176-0.106-4.037,1.476-4.333,3.618c-0.297,2.14,1.083,4.158,3.184,4.658c0.542,0.128,55.135,12.918,129.779,12.918c35.801,0,70.639-2.907,103.548-8.645c61.361-10.757,65.657-41.183,65.81-42.473C441.632,459.078,440.662,457.342,439.013,456.578z"})]})]})}function Oh(){return r.jsx("svg",{viewBox:"0 0 32 32",children:r.jsx("path",{fill:"#DB380E",d:"M9.456 27.25L28 29.782l-6.27-10.441L9.457 27.25zM29.755 7.705c-.548.823-1.097 1.645-1.644 2.468-1.879 2.827-3.758 5.654-5.635 8.482-.105.158-.24.283-.093.525 1.814 2.995 3.613 5.999 5.417 9 .285.474.572.946.941 1.401l1.094-21.852-.08-.023zm-24.76 9.338c.085.081.296.127.395.079 1.74-.855 3.491-1.691 5.192-2.617.555-.302.982-.842 1.46-1.281 1.583-1.452 3.164-2.907 4.744-4.362.097-.089.211-.176.269-.288.568-1.109 1.125-2.224 1.703-3.371-.689-.259-1.341-.512-2.002-.742-.089-.031-.231.031-.328.085-1.53.854-3.088 1.663-4.569 2.595-.741.466-1.345 1.154-2.001 1.752a263.561 263.561 0 0 0-3.156 2.915 5.385 5.385 0 0 0-.744.872c-.713 1.038-1.404 2.091-2.127 3.173.404.419.772.819 1.165 1.191zm6.358-1.418L8.738 26.672l12.286-7.916-9.671-3.13zM28.692 7.74L18.25 9.484l3.544 8.62L28.693 7.74zm-17.194 7.137l9.479 3.077a46701.83 46701.83 0 0 0-3.506-8.538l-5.973 5.461zm-6.372 4.298l-3.317 7.93 6.318-.187-3.001-7.744zm3.075 5.905l.079-.017c.758-3.154 1.528-6.287 2.303-9.565l-5.069 2.635c.864 2.246 1.785 4.615 2.688 6.947zM27.417 7.229l-3.027-.801c-1.451-.381-2.903-.758-4.353-1.143-.181-.048-.312-.08-.419.139-.512 1.05-1.041 2.092-1.561 3.138-.016.032-.013.074-.025.155l9.383-1.422.002-.066zm-5.853-2.388l8.223 2.275-1.359-3.872-6.852 1.519-.012.077zM8.899 27.856c-1.019-.117-2.064-.009-3.097.008-.849.015-1.697.047-2.545.073a.338.338 0 0 0-.262.114l21.044 1.946.014-.094-6.746-.921c-2.802-.383-5.599-.803-8.408-1.127zm-6.952-3.171c.904-2.097 1.804-4.197 2.712-6.292.091-.21.084-.353-.094-.522-.38-.361-.732-.751-1.147-1.182L1.763 24.86l.061.029c.042-.067.093-.131.124-.203zM19.763 4.287c1.524-.393 3.071-.701 4.608-1.044.099-.022.197-.055.295-.083l-.015-.075-6.606.889c.62.271 1.098.473 1.718.314z"})})}const Ah={python:jh,javascript:kh,cpp:Eh,java:Nh,ruby:Oh};function s({title:c,children:S}){const{selectedLanguage:p,setSelectedLanguage:P}=Lf(),j=yn.Children.toArray(S),$=j.findIndex(A=>A.props.language===p);let Y="";try{Y=j[$].props.code}catch{}const C=j[$].props.language,x=A=>{P(j[A].props.language)},b=()=>navigator.clipboard.writeText(Y),z=()=>j.map((A,T)=>{const k=Ah[A.props.language],N=`view ${A.props.language} code`;return r.jsx("button",{role:"tab","aria-label":N,"aria-selected":T===$,className:no.tabButton,onClick:()=>x(T),children:r.jsx(k,{})},T)});return r.jsxs("div",{role:"tablist",className:no.container,children:[r.jsx("h3",{children:c}),r.jsxs("div",{className:no.buttonContainer,children:[r.jsx("div",{role:"tablist",className:no.tabButtonContainer,children:z()}),r.jsx(Th,{onClick:b})]}),r.jsx("div",{role:"tabpanel",className:"tabs-content",children:r.jsx(vh,{code:Y,language:C})})]})}s.Tab=c=>r.jsx(r.Fragment,{children:c});const Ch=`def fn(arr): + ans = 0 + left = 0 + right = len(arr) - 1 + + while left < right: + # TODO: logic with left and right + if CONDITION: + left += 1 + else: + right -= 1 + + return ans +`,Lh=`def fn(arr1, arr2): + i = 0 + j = 0 + ans = 0 + + while i < len(arr1) and j < len(arr2): + # TODO: logic + if CONDITION: + i += 1 + else: + j += 1 + + while i < len(arr1): + # TODO: logic + i += 1 + + while j < len(arr2): + # TODO: logic + j += 1 + + return ans +`,Rh=`def fn(arr): + n = len(arr) + window = 0 + left = 0 + ans = 0 + + for right in range(n): + # TODO: add arr[right] to window + + while WINDOW_CONDITION_BROKEN: + # TODO: remove arr[left] from window + left += 1 + + # TODO: update ans + + return ans +`,Ph=`def fn(arr): + n = len(arr) + prefix = [arr[0]] + + for i in range(1, n): + prefix.append(prefix[-1] + arr[i]) + + return prefix +`,Mh=`def fn(strs: list[str]): + ans = [] + + for char in strs: + ans.append(char) + + return ''.join(ans) +`,Ih=`const fn = (arr) => { + let ans = 0 + let left = 0 + let right = arr.length - 1 + + while (left < right) { + // TODO: logic with left and right + if (CONDITION) { + left++ + } else { + right-- + } + } + + return ans +} +`,Dh=`let fn = (arr1, arr2) => { + let ans = 0 + let i = 0 + let j = 0 + + while (i < arr1.length && j < arr2.length) { + // TODO: logic + if (CONDITION) { + i++ + } else { + j++ + } + } + + while (i < arr1.length) { + // TODO: logic + i++ + } + + while (j < arr2.length) { + // TODO: logic + j++ + } + + return ans +} +`,zh=`const fn = (arr) => { + let window = 0 + let ans = 0 + let left = 0 + + for (let right = 0; right < arr.length; right++) { + // TODO: add arr[right] to window + + while (WINDOW_CONDITION_BROKEN) { + // TODO: remove arr[left] from window + left++ + } + + // TODO: update ans + } + + return ans +} +`,Bh=`const fn = (arr) => { + let prefix = [arr[0]] + + for (let i = 1; i < arr.length; i++) { + prefix.push(prefix[prefix.length - 1] + arr[i]) + } + + return prefix +} +`,Fh=`const fn = (arr) => { + let ans = [] + + for (const c of arr) { + ans.push(c) + } + + return ans.join('') +} + +const fn = (arr) => { + let ans = '' + + for (const c of arr) { + ans += c + } + + return ans +} +`,Uh=`public int fn(int[] arr) { + int ans = 0; + int left = 0; + int right = arr.length - 1; + + while (left < right) { + // TODO: logic with left and right + if (CONDITION) { + left++; + } else { + right--; + } + } + + return ans; +} +`,Hh=`public int fn(int[] arr1, int[] arr2) { + int i = 0; + int j = 0; + int ans = 0; + + while (i < arr1.length && j < arr2.length) { + // TODO: logic + if (CONDITION) { + i++; + } else { + j++; + } + } + + while (i < arr1.length) { + // TODO: logic + i++; + } + + while (j < arr2.length) { + // TODO: logic + j++; + } + + return ans; +} +`,Wh=`public int fn(int[] arr) { + int n = arr.length; + int window = 0; + int left = 0; + int ans = 0; + + for (int right = 0; right < arr.length; right++) { + // TODO: add arr[right] to window + + while (WINDOW_CONDITION_BROKEN) { + // TODO: remove arr[left] from window + left++; + } + + // TODO: update ans + } + + return ans; +} +`,Vh=`import java.util.ArrayList; +import java.util.List; + + +public int[] fn(int[] arr) { + int n = arr.length; + int[] prefix = new int[n]; + prefix[0] = arr[0]; + + for (int i = 1; i < n; i++) { + prefix[i] = prefix[i - 1] + arr[i]; + } + + return prefix; +} +`,$h=`public String fn(char[] strs) { + StringBuilder sb = new StringBuilder(); + + for (char c: strs) { + sb.append(c); + } + + return sb.toString(); +} +`,Kh=`#include + +using namespace std; + + +int fn(vector& arr) { + int ans = 0; + int left = 0; + int right = arr.size() - 1; + + while (left < right) { + // TODO: logic with left and right + if (CONDITION) { + left++; + } else { + right--; + } + } + + return ans; +} +`,Gh=`#include + +using namespace std; + + +int fn(vector& arr1, vector& arr2) { + int i = 0; + int j = 0; + int ans = 0; + + while (i < arr1.size() && j < arr2.size()) { + // TODO: logic + if (CONDITION) { + i++; + } else { + j++; + } + } + + while (i < arr1.size()) { + // TODO: logic + i++; + } + + while (j < arr2.size()) { + // TODO: logic + j++; + } + + return ans; +} +`,Jh=`#include + +using namespace std; + + +int fn(vector& arr) { + int n = arr.size(); + int window = 0; + int left = 0; + int ans = 0; + + for (int right = 0; right < n; right++) { + // TODO: add arr[right] to window + + while (WINDOW_CONDITION_BROKEN) { + // TODO: remove arr[left] from window + left++; + } + + // TODO: update ans + } + + return ans; +} +`,Yh=`#include +#include + +using namespace std; + + +vector fn(vector& arr) { + int n = arr.size(); + vector prefix; + prefix.push_back(arr[0]); + + for (int i = 1; i < n; ++i) { + prefix.push_back(prefix.back() + arr[i]); + } + + return prefix; +} +`,qh=`string fn(vector& arr) { + return string(arr.begin(), arr.end()) +} +`,Qh=`def fn(arr) + ans = 0 + left = 0 + right = arr.length - 1 + + while left < right + # TODO: logic with left and right + if CONDITION + left += 1 + else + right -= 1 + end + end + + ans +end`,Xh=`def fn(arr1, arr2) + i, j = 0, 0 + ans = 0 + + while i < arr1.length && j < arr2.length + # TODO: Logic + if CONDITION + i += 1 + else + j += 1 + end + end + + while i < arr1.length + # TODO: Logic + i += 1 + end + + while j < arr2.length + # TODO: Logic + j += 1 + end + + ans +end +`,Zh=`def fn(arr) + n = arr.length + window = 0 + left = 0 + result = 0 + + (0...n).each do |right| + # TODO: add arr[right] to window + + while WINDOW_CONDITION_BROKEN + # TODO: remove arr[left] from window + left += 1 + end + + # TODO: update result + end + + result +end +`,ng=`# This method computes the prefix sum of an array. +# It returns a new array where each element at index i is the sum of elements from index 0 to i-1 in the original array. +# # For example, given the array [1, 2, 3], the prefix sum array will be [1, 3, 6]. +def prefix_sum(arr) + n = arr.length + prefix = [arr[0]] + + (1...n).each do |i| + prefix << (prefix.last + arr[i]) + end + + prefix +end +`,eg=`def fn(strs) + # array of strings/chrs + ans = [] + + strs.each do |char| + ans << char + end + + ans.join('') +end + +# simple +def fn2(strs) + strs.join +end +`;function tg(){return r.jsxs("div",{className:Zn.container,children:[r.jsx("h2",{className:Zn.sectionHeader,children:"Array"}),r.jsx("section",{id:"array-two-pointers-one-input",children:r.jsxs(s,{title:"two pointers: one input, opposite ends",children:[r.jsx(s.Tab,{code:Ch,language:"python"}),r.jsx(s.Tab,{code:Ih,language:"javascript"}),r.jsx(s.Tab,{code:Uh,language:"java"}),r.jsx(s.Tab,{code:Kh,language:"cpp"}),r.jsx(s.Tab,{code:Qh,language:"ruby"})]})}),r.jsx("section",{id:"array-two-pointers-two-inputs",children:r.jsxs(s,{title:"two pointers: two inputs, exhaust both",children:[r.jsx(s.Tab,{code:Lh,language:"python"}),r.jsx(s.Tab,{code:Dh,language:"javascript"}),r.jsx(s.Tab,{code:Hh,language:"java"}),r.jsx(s.Tab,{code:Gh,language:"cpp"}),r.jsx(s.Tab,{code:Xh,language:"ruby"})]})}),r.jsx("section",{id:"array-sliding-window",children:r.jsxs(s,{title:"sliding window",children:[r.jsx(s.Tab,{code:Rh,language:"python"}),r.jsx(s.Tab,{code:zh,language:"javascript"}),r.jsx(s.Tab,{code:Wh,language:"java"}),r.jsx(s.Tab,{code:Jh,language:"cpp"}),r.jsx(s.Tab,{code:Zh,language:"ruby"})]})}),r.jsx("section",{id:"array-prefix-sum",children:r.jsxs(s,{title:"prefix sum",children:[r.jsx(s.Tab,{code:Ph,language:"python"}),r.jsx(s.Tab,{code:Bh,language:"javascript"}),r.jsx(s.Tab,{code:Vh,language:"java"}),r.jsx(s.Tab,{code:Yh,language:"cpp"}),r.jsx(s.Tab,{code:ng,language:"ruby"})]})}),r.jsx("section",{id:"array-string-building",children:r.jsxs(s,{title:"efficient string building",children:[r.jsx(s.Tab,{code:Mh,language:"python"}),r.jsx(s.Tab,{code:Fh,language:"javascript"}),r.jsx(s.Tab,{code:$h,language:"java"}),r.jsx(s.Tab,{code:qh,language:"cpp"}),r.jsx(s.Tab,{code:eg,language:"ruby"})]})})]})}const rg=`from collections import defaultdict + + +def fn(arr, k): + counts = defaultdict(int) + counts[0] = 1 + ans = curr = 0 + + for num in arr: + # TODO: logic to change curr + ans += counts[curr - k] + counts[curr] += 1 + + return ans +`,ig=`def fn(arr): + window = set() + ans = 0 + left = 0 + + for right, ELEMENT in enumerate(arr): + # TODO: add arr[right] to window + + while WINDOW_CONDITION_BROKEN: + # TODO: remove arr[left] from window + left += 1 + + # TODO: update ans + + return ans +`,ag=`const fn = (arr, k) => { + let counts = new Map() + counts.set(0, 1) + let ans = 0 + let curr = 0 + + for (const num of arr) { + // TODO: logic to change curr + ans += counts.get(curr - k) || 0 + counts.set(curr, (counts.get(curr) || 0) + 1) + } + + return ans +} +`,og=`function fn(arr) { + let window = new Set() + let ans = 0 + let left = 0 + + for (let right = 0; right < arr.length; right++) { + // TODO: add arr[right] to window + + while (WINDOW_CONDITION_BROKEN) { + // TODO: remove arr[left] from window + left += 1 + } + + // TODO: update ans + } + + return ans +} +`,sg=`import java.util.HashMap; +import java.util.Map; + + +public int fn(int[] arr, int k) { + Map counts = new HashMap<>(); + counts.put(0, 1); + int ans = 0; + int curr = 0; + + for (int num: arr) { + // TODO: logic to change curr + ans += counts.getOrDefault(curr - k, 0); + counts.put(curr, counts.getOrDefault(curr, 0) + 1); + } + + return ans; +} +`,lg=`import java.util.HashSet; +import java.util.Set; + + +public int fn(int[] arr) { + Set window = new HashSet<>(); + int ans = 0; + int left = 0; + + for (int right = 0; right < arr.length; right++) { + // TODO: add arr[right] to window + + while (WINDOW_CONDITION_BROKEN) { + // TODO: remove arr[left] from window + left++; + } + + // TODO: update ans + } + + return ans; +} +`,ug=`#include +#include + +using namespace std; + + +int fn(vector& arr, int k) { + unordered_map counts; + counts[0] = 1; + int ans = 0; + int curr = 0; + + for (int num : arr) { + // TODO: logic to change curr + ans += counts[curr - k]; + counts[curr]++; + } + + return ans; +} +`,cg=`#include +#include + +using namespace std; + + +int fn(vector& arr) { + unordered_set window; + int ans = 0; + int left = 0; + + for (int right = 0; right < arr.size(); right++) { + // TODO: add arr[right] to window + + while (WINDOW_CONDITION_BROKEN) { + // TODO: remove arr[left] from window + left++; + } + + // TODO: update ans + } + + return ans; +} +`,dg=`def fn(arr, k) + counts = Hash.new(0) + counts[0] = 1 + ans = 0 + curr = 0 + + arr.each do |num| + # TODO: logic to change curr + ans += counts[curr - k] + counts[curr] += 1 + end + + ans +end +`,fg=`require 'set' + +def fn(arr) + window = Set.new + ans = 0 + left = 0 + + arr.each_with_index do |ELEMENT, right| + # TODO: add arr[right] to window + + while WINDOW_CONDITION_BROKEN + # TODO: remove arr[left] from window + left += 1 + end + + # TODO: update ans + end + + ans +end +`;function pg(){return r.jsxs("div",{className:Zn.container,children:[r.jsx("h2",{className:Zn.sectionHeader,children:"Hash Map"}),r.jsx("section",{id:"hashmap-find-number-of-subarrays",children:r.jsxs(s,{title:"find number of subarrays that fit an exact criteria",children:[r.jsx(s.Tab,{code:rg,language:"python"}),r.jsx(s.Tab,{code:ag,language:"javascript"}),r.jsx(s.Tab,{code:sg,language:"java"}),r.jsx(s.Tab,{code:ug,language:"cpp"}),r.jsx(s.Tab,{code:dg,language:"ruby"})]})}),r.jsx("section",{id:"hashmap-sliding-window",children:r.jsxs(s,{title:"sliding window",children:[r.jsx(s.Tab,{code:ig,language:"python"}),r.jsx(s.Tab,{code:og,language:"javascript"}),r.jsx(s.Tab,{code:lg,language:"java"}),r.jsx(s.Tab,{code:cg,language:"cpp"}),r.jsx(s.Tab,{code:fg,language:"ruby"})]})})]})}const hg=`def fn(head): + slow = head + fast = head + ans = 0 + + while fast and fast.next: + # TODO: logic + slow = slow.next + fast = fast.next.next + + return ans +`,gg=`def fn(head): + prev = None + curr = head + + while curr: + nxt = curr.next + curr.next = prev + prev = curr + curr = nxt + + return prev +`,mg=`const fn = (head) => { + let ans = 0 + let slow = head + let fast = head + + while (fast && fast.next) { + // TODO: logic + slow = slow.next + fast = fast.next.next + } + + return ans +} +`,vg=`const fn = (head) => { + let prev = null + let curr = head + + while (curr) { + let next = curr.next + curr.next = prev + prev = curr + curr = next + } + + return prev +} +`,yg=`public int fn(ListNode head) { + ListNode slow = head; + ListNode fast = head; + int ans = 0; + + while (fast != null && fast.next != null) { + // TODO: logic + slow = slow.next; + fast = fast.next.next; + } + + return ans; +} +`,xg=`public ListNode fn(ListNode head) { + ListNode curr = head; + ListNode prev = null; + + while (curr != null) { + ListNode nextNode = curr.next; + curr.next = prev; + prev = curr; + curr = nextNode; + } + + return prev; +} +`,_g=`int fn(ListNode* head) { + ListNode* slow = head; + ListNode* fast = head; + int ans = 0; + + while (fast && fast->next) { + // TODO: logic + slow = slow->next; + fast = fast->next->next; + } + + return ans; +} +`,bg=`ListNode* fn(ListNode* head) { + ListNode* prev = nullptr; + ListNode* curr = head; + + while (curr) { + ListNode* nxt = curr->next; + curr->next = prev; + prev = curr; + curr = nxt; + } + + return prev; +} +`,wg=`def fn(head) + slow = head + fast = head + ans = 0 + + until fast.nil? || fast.next.nil? + # TODO: logic + slow = slow.next + fast = fast.next.next + end + + ans +end +`,Sg=`def fn(head) + prev = nil + curr = head + + until curr.nil? + nxt = curr.next + curr.next = prev + prev = curr + curr = nxt + end + + prev +end +`;function Tg(){return r.jsxs("div",{className:Zn.container,children:[r.jsx("h2",{className:Zn.sectionHeader,children:"Linked List"}),r.jsx("section",{id:"linkedlist-fast-and-slow-pointer",children:r.jsxs(s,{title:"fast and slow pointer",children:[r.jsx(s.Tab,{code:hg,language:"python"}),r.jsx(s.Tab,{code:mg,language:"javascript"}),r.jsx(s.Tab,{code:yg,language:"java"}),r.jsx(s.Tab,{code:_g,language:"cpp"}),r.jsx(s.Tab,{code:wg,language:"ruby"})]})}),r.jsx("section",{id:"linkedlist-reverse",children:r.jsxs(s,{title:"reverse linked list",children:[r.jsx(s.Tab,{code:gg,language:"python"}),r.jsx(s.Tab,{code:vg,language:"javascript"}),r.jsx(s.Tab,{code:xg,language:"java"}),r.jsx(s.Tab,{code:bg,language:"cpp"}),r.jsx(s.Tab,{code:Sg,language:"ruby"})]})})]})}const jg=`def fn(arr): + stack = [] + ans = 0 + + for num in arr: + while stack and stack[-1] > num: + # TODO: logic + stack.pop() + stack.append(num) + + return ans +`,kg=`def fn(arr): + stack = [] + ans = 0 + + for num in arr: + while stack and stack[-1] < num: + # TODO: logic + stack.pop() + stack.append(num) + + return ans +`,Eg=`const fn = (arr) => { + let stack = [] + let ans = 0 + + for (const num of arr) { + while (stack.length && stack[stack.length - 1] > num) { + // TODO: logic + stack.pop() + } + + stack.push(num) + } + + return ans +} +`,Ng=`const fn = (arr) => { + let stack = [] + let ans = 0 + + for (const num of arr) { + while (stack.length && stack[stack.length - 1] < num) { + // TODO: logic + stack.pop() + } + + stack.push(num) + } + + return ans +} +`,Og=`import java.util.Stack; + + +public int fn(int[] arr) { + Stack stack = new Stack<>(); + int ans = 0; + + for (int num : arr) { + while (!stack.isEmpty() && stack.peek() > num) { + // TODO: logic + stack.pop(); + } + stack.push(num); + } + + return ans; +} +`,Ag=`import java.util.Stack; + + +public int fn(int[] arr) { + Stack stack = new Stack<>(); + int ans = 0; + + for (int num : arr) { + while (!stack.isEmpty() && stack.peek() < num) { + // TODO: logic + stack.pop(); + } + stack.push(num); + } + + return ans; +} +`,Cg=`#include +#include + +using namespace std; + + +int fn(vector& arr) { + stack stack; + int ans = 0; + + for (int num : arr) { + while (!stack.empty() && stack.top() > num) { + // TODO: logic + stack.pop(); + } + stack.push(num); + } + + return ans; +} +`,Lg=`#include +#include + +using namespace std; + + +int fn(vector& arr) { + stack stack; + int ans = 0; + + for (int num : arr) { + while (!stack.empty() && stack.top() < num) { + // TODO: logic + stack.pop(); + } + stack.push(num); + } + + return ans; +} +`,Rg=`def fn(arr) + stack = [] + ans = 0 + + arr.each do |num| + while !stack.empty? && stack[-1] > num + # TODO: logic + stack.pop + end + stack << num + end + + ans +end +`,Pg=`def fn(arr) + stack = [] + ans = 0 + + arr.each do |num| + while !stack.empty? && stack[-1] < num + # TODO: logic + stack.pop + end + stack << num + end + + ans +end +`;function Mg(){return r.jsxs("div",{className:Zn.container,children:[r.jsx("h2",{className:Zn.sectionHeader,children:"Stack"}),r.jsx("section",{id:"stack-monotonic-increasing",children:r.jsxs(s,{title:"monotonic increasing stack",children:[r.jsx(s.Tab,{code:jg,language:"python"}),r.jsx(s.Tab,{code:Eg,language:"javascript"}),r.jsx(s.Tab,{code:Og,language:"java"}),r.jsx(s.Tab,{code:Cg,language:"cpp"}),r.jsx(s.Tab,{code:Rg,language:"ruby"})]})}),r.jsx("section",{id:"stack-monotonic-decreasing",children:r.jsxs(s,{title:"monotonic decreasing stack",children:[r.jsx(s.Tab,{code:kg,language:"python"}),r.jsx(s.Tab,{code:Ng,language:"javascript"}),r.jsx(s.Tab,{code:Ag,language:"java"}),r.jsx(s.Tab,{code:Lg,language:"cpp"}),r.jsx(s.Tab,{code:Pg,language:"ruby"})]})})]})}const Ig=`def dfs(root): + if not root: + return + + ans = 0 + + # TODO: logic + dfs(root.left) + dfs(root.right) + + return ans +`,Dg=`def dfs(root): + stack = [root] + ans = 0 + + while stack: + node = stack.pop() + # TODO: logic + if node.left: + stack.append(node.left) + if node.right: + stack.append(node.right) + + return ans +`,zg=`from collections import deque + + +def fn(root): + que = deque([root]) + ans = 0 + + while que: + current_length = len(que) + # TODO: logic for current level + for _ in range(current_length): + node = que.popleft() + # TODO: logic + if node.left: + que.append(node.left) + if node.right: + que.append(node.right) + + return ans +`,Bg=`const dfs = (root) => { + if (!root) { + return + } + + let ans = 0 + + // TODO: logic + dfs(root.left) + dfs(root.right) + + return ans +} +`,Fg=`const dfs = (root) => { + let stack = [root] + let ans = 0 + + while (stack.length) { + let node = stack.pop() + // TODO: logic + if (node.left) { + stack.push(node.left) + } + if (node.right) { + stack.push(node.right) + } + } + + return ans +} +`,Ug=`const fn = (root) => { + let que = [root] + let ans = 0 + + while (que.length) { + let currentLength = que.length + let nextQue = [] + // TODO: logic for current level + + for (let i = 0; i < currentLength; i++) { + let node = que[i] + // TODO: logic + if (node.left) { + nextQue.push(node.left) + } + if (node.right) { + nextQue.push(node.right) + } + } + + que = nextQue + } + + return ans +} +`,Hg=`public int dfs(TreeNode root) { + if (root == null) { + return 0; + } + + int ans = 0; + + // TODO: logic + ans += dfs(root.left); + ans += dfs(root.right); + + return ans; +} +`,Wg=`import java.util.Stack; + + +public int dfs(TreeNode root) { + Stack stack = new Stack<>(); + stack.push(root); + int ans = 0; + + while (!stack.isEmpty()) { + TreeNode node = stack.pop(); + // TODO: logic + if (node.left != null) { + stack.push(node.left); + } + if (node.right != null) { + stack.push(node.right); + } + } + + return ans; +} +`,Vg=`import java.util.LinkedList; +import java.util.Queue; + + +public int fn(TreeNode root) { + Queue que = new LinkedList<>(); + que.add(root); + int ans = 0; + + while (!que.isEmpty()) { + int currentLength = que.size(); + // TODO: logic for current level + for (int i = 0; i < currentLength; i++) { + TreeNode node = que.remove(); + // TODO: logic + if (node.left != null) { + que.add(node.left); + } + if (node.right != null) { + que.add(node.right); + } + } + } + + return ans; +} +`,$g=`int dfs(TreeNode* root) { + if (root == nullptr) { + return 0; + } + + int ans = 0; + + // TODO: logic + dfs(root.left); + dfs(root.right); + + return ans; +} +`,Kg=`#include + +using namespace std; + + +int dfs(TreeNode* root) { + stack stack; + stack.push(root); + int ans = 0; + + while (!stack.empty()) { + TreeNode* node = stack.top(); + stack.pop(); + // TODO: logic + if (node->left) { + stack.push(node->left); + } + if (node->right) { + stack.push(node->right); + } + } + + return ans; +} +`,Gg=`#include + +using namespace std; + + +int fn(TreeNode* root) { + queue que; + que.push(root); + int ans = 0; + + while (!que.empty()) { + int currentLength = que.size(); + // TODO: logic for current level + + for (int i = 0; i < currentLength; i++) { + TreeNode* node = que.front(); + que.pop(); + // TODO: logic + if (node->left != nullptr) { + que.push(node->left); + } + if (node->right != nullptr) { + que.push(node->right); + } + } + } + + return ans; +} +`,Jg=`def dfs(root) + return unless root + + ans = 0 + + # TODO: logic + dfs(root.left) + dfs(root.right) + + ans +end +`,Yg=`def dfs(root) + stack = [root] + ans = 0 + + until stack.empty? + node = stack.pop + # TODO: logic + + stack << node.left if node.left + stack << node.right if node.right + end + + ans +end +`,qg=`def fn(root) + queue = [root] + ans = 0 + + until queue.empty? + current_length = queue.length + # TODO: logic for current level + + current_length.times do + node = queue.shift + # TODO: logic + + queue << node.left if node.left + queue << node.right if node.right + end + end + + ans +end +`;function Qg(){return r.jsxs("div",{className:Zn.container,children:[r.jsx("h2",{className:Zn.sectionHeader,children:"Binary Tree"}),r.jsx("section",{id:"tree-dfs-recursive",children:r.jsxs(s,{title:"DFS (recursive)",children:[r.jsx(s.Tab,{code:Ig,language:"python"}),r.jsx(s.Tab,{code:Bg,language:"javascript"}),r.jsx(s.Tab,{code:Hg,language:"java"}),r.jsx(s.Tab,{code:$g,language:"cpp"}),r.jsx(s.Tab,{code:Jg,language:"ruby"})]})}),r.jsx("section",{id:"tree-dfs-iterative",children:r.jsxs(s,{title:"DFS (iterative)",children:[r.jsx(s.Tab,{code:Dg,language:"python"}),r.jsx(s.Tab,{code:Fg,language:"javascript"}),r.jsx(s.Tab,{code:Wg,language:"java"}),r.jsx(s.Tab,{code:Kg,language:"cpp"}),r.jsx(s.Tab,{code:Yg,language:"ruby"})]})}),r.jsx("section",{id:"tree-bfs",children:r.jsxs(s,{title:"BFS",children:[r.jsx(s.Tab,{code:zg,language:"python"}),r.jsx(s.Tab,{code:Ug,language:"javascript"}),r.jsx(s.Tab,{code:Vg,language:"java"}),r.jsx(s.Tab,{code:Gg,language:"cpp"}),r.jsx(s.Tab,{code:qg,language:"ruby"})]})})]})}const Xg=`def fn(graph): + def dfs(node): + ans = 0 + # TODO: logic + for neighbor in graph[node]: + if neighbor not in seen: + seen.add(neighbor) + ans += dfs(neighbor) + + return ans + + seen = {START_NODE} + + return dfs(START_NODE) +`,Zg=`def fn(graph): + stack = [START_NODE] + seen = {START_NODE} + ans = 0 + + while stack: + node = stack.pop() + # TODO: logic + for neighbor in graph[node]: + if neighbor not in seen: + seen.add(neighbor) + stack.append(neighbor) + + return ans +`,nm=`from collections import deque + + +def fn(graph): + que = deque([START_NODE]) + seen = {START_NODE} + ans = 0 + + while que: + node = que.popleft() + # TODO: logic + for neighbor in graph[node]: + if neighbor not in seen: + seen.add(neighbor) + que.append(neighbor) + + return ans +`,em=`from heapq import heappop, heappush + + +def dijkstras(graph: list[list[tuple[int, int]]], source: int) -> list[int]: + n = len(graph) + distances = [float('inf')] * n + distances[source] = 0 + heap = [(0, source)] + + while heap: + curr_dist, node = heappop(heap) + + if curr_dist > distances[node]: + continue + + for neighbor, weight in graph[node]: + dist = curr_dist + weight + + if dist < distances[neighbor]: + distances[neighbor] = dist + heappush(heap, (dist, neighbor)) + + return distances +`,tm=`def bellman_ford(n: int, edges: list[tuple[int, int, int]], source: int) -> list[int]: + distances = [float('inf')] * n + distances[source] = 0 + + for _ in range(n - 1): + for u, v, w in edges: + if distances[u] != float('inf') and distances[u] + w < distances[v]: + distances[v] = distances[u] + w + + for u, v, w in edges: + if distances[u] != float('inf') and distances[u] + w < distances[v]: + return [] + + return distances +`,rm=`from collections import defaultdict, deque + + +def kahn_topological_sort(graph: dict[int, list[int]]) -> list[int]: + result = [] + indegree = defaultdict(int) + + for vertices in graph.values(): + for v in vertices: + indegree[v] += 1 + + que = deque([node for node in graph if not indegree[node]]) + + while que: + node = que.popleft() + result.append(node) + + for neighbor in graph[node]: + indegree[neighbor] -= 1 + + if not indegree[neighbor]: + que.append(neighbor) + + return result if len(result) == len(graph) else [] +`,im=`def kruskal_mst(n: int, edges: list[tuple[int, int, int]]) -> list[tuple[int, int, int]]: + mst = [] + uf = UnionFind(n) + edges.sort() + + for w, u, v in edges: + if not uf.connected(u, v): + uf.union(u, v) + mst.append((w, u, v)) + + return mst +`,am=`from heapq import heappop + + +def prim_mst(n: int, edges: list[tuple[int, int, int]]) -> list[tuple[int, int, int]]: + mst = [] + uf = UnionFind(n) + edges.sort() + + while edges: + w, u, v = heappop(edges) + + if not uf.connected(u, v): + uf.union(u, v) + mst.append((w, u, v)) + + return mst +`,om=`const fn = (graph) => { + const dfs = (node) => { + let ans = 0 + // TODO: logic + for (const neighbor of graph[node]) { + if (!seen.has(neighbor)) { + seen.add(neighbor) + ans += dfs(neighbor) + } + } + + return ans + } + + let seen = new Set([START_NODE]) + + return dfs(START_NODE) +} +`,sm=`const fn = (graph) => { + let stack = [START_NODE] + let seen = new Set([START_NODE]) + let ans = 0 + + while (stack.length) { + let node = stack.pop() + // TODO: logic + for (const neighbor of graph[node]) { + if (!seen.has(neighbor)) { + seen.add(neighbor) + stack.push(neighbor) + } + } + } + + return ans +} +`,lm=`const fn = (graph) => { + let que = [START_NODE] + let seen = new Set([START_NODE]) + let ans = 0 + + while (que.length) { + let currentLength = que.length + let nextQue = [] + + for (let i = 0; i < currentLength; i++) { + let node = que[i] + // TODO: logic + for (const neighbor of graph[node]) { + if (!seen.has(neighbor)) { + seen.add(neighbor) + nextQue.push(neighbor) + } + } + } + + que = nextQue + } + + return ans +} +`,um=`/* + JavaScript lacks built-in support for heaps. + Try using a language that doesn't hate you, like Python. +*/ +`,cm=`const bellmanFord = (n, edges, source) => { + let distances = new Array(n).fill(Infinity) + distances[source] = 0 + + for (let i = 0; i < n - 1; i++) { + for (let j = 0; j < edges.length; j++) { + let [u, v, w] = edges[j] + + if (distances[u] !== Infinity && distances[u] + w < distances[v]) { + distances[v] = distances[u] + w + } + } + } + + for (let i = 0; i < edges.length; i++) { + let [u, v, w] = edges[i] + + if (distances[u] !== Infinity && distances[u] + w < distances[v]) { + return [] + } + } + + return distances +} +`,dm=`const kahnTopologicalSort = (graph) => { + const result = [] + const queue = [] + const indegree = new Map() + + for (let nodes of Object.values(graph)) { + for (let node of nodes) { + if (indegree.has(node)) { + indegree.set(node, indegree.get(node) + 1) + } else { + indegree.set(node, 1) + } + } + } + + for (let node of Object.keys(graph)) { + if (!indegree.has(node)) { + queue.push(node) + } + } + + while (queue.length > 0) { + const node = queue.shift() + result.push(node) + + if (graph[node]) { + for (let neighbor of graph[node]) { + indegree.set(neighbor, indegree.get(neighbor) - 1) + + if (indegree.get(neighbor) === 0) { + queue.push(neighbor) + } + } + } + } + + return result.length === Object.keys(graph).length ? result : [] +} +`,fm=`const kruskalMst = (n, edges) => { + let mst = [] + let uf = new UnionFind(n) + + edges.sort((a, b) => a[0] - b[0]) + + for (let i = 0; i < edges.length; i++) { + let [w, u, v] = edges[i] + + if (!uf.connected(u, v)) { + uf.union(u, v) + mst.push([w, u, v]) + } + } + + return mst +} +`,pm=`/* + JavaScript lacks built-in support for heaps. + Try using a language that doesn't hate you, like Python. +*/ +`,hm=`import java.util.HashSet; +import java.util.Set; + + +Set seen = new HashSet<>(); + +public int fn(int[][] graph) { + seen.add(START_NODE); + return dfs(START_NODE, graph); +} + +public int dfs(int node, int[][] graph) { + int ans = 0; + // TODO: logic + for (int neighbor: graph[node]) { + if (!seen.contains(neighbor)) { + seen.add(neighbor); + ans += dfs(neighbor, graph); + } + } + + return ans; +} +`,gm=`import java.util.Stack; +import java.util.HashSet; +import java.util.Set; + + +public int fn(int[][] graph) { + Stack stack = new Stack<>(); + Set seen = new HashSet<>(); + stack.push(START_NODE); + seen.add(START_NODE); + int ans = 0; + + while (!stack.empty()) { + int node = stack.pop(); + // TODO: logic + for (int neighbor: graph[node]) { + if (!seen.contains(neighbor)) { + seen.add(neighbor); + stack.push(neighbor); + } + } + } + + return ans; +} +`,mm=`import java.util.ArrayList; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Queue; +import java.util.Set; + + +public int fn(int[][] graph) { + Queue que = new LinkedList<>(); + Set seen = new HashSet<>(); + que.offer(START_NODE); + seen.add(START_NODE); + int ans = 0; + + while (!que.isEmpty()) { + int node = que.remove(); + // TODO: Logic + for (int neighbor: graph[node]) { + if (!seen.contains(neighbor)) { + seen.add(neighbor); + que.add(neighbor); + } + } + } + + return ans; +} +`,vm=`import java.util.Arrays; +import java.util.Comparator; +import java.util.PriorityQueue; +import java.util.Queue; +import java.util.List; + + +public int[] dijkstras(List> graph, int source) { + int n = graph.size(); + int[] distances = new int[n]; + Arrays.fill(distances, Integer.MAX_VALUE); + distances[source] = 0; + + PriorityQueue pq = new PriorityQueue<>(Comparator.comparingInt(a -> a[1])); + pq.offer(new int[]{source, 0}); + + while (!pq.isEmpty()) { + int[] curr = pq.poll(); + int node = curr[0]; + int dist = curr[1]; + + if (dist > distances[node]) { + continue; + } + + for (int[] edge : graph.get(node)) { + int neighbor = edge[0]; + int weight = edge[1]; + int newDist = dist + weight; + + if (newDist < distances[neighbor]) { + distances[neighbor] = newDist; + pq.offer(new int[]{neighbor, newDist}); + } + } + } + + return distances; +} +`,ym=`import java.util.Arrays; +import java.util.List; + + +public int[] bellmanFord(int n, List edges, int source) { + int[] distances = new int[n]; + Arrays.fill(distances, Integer.MAX_VALUE); + distances[source] = 0; + + for (int i = 0; i < n - 1; i++) { + for (int[] edge : edges) { + int u = edge[0]; + int v = edge[1]; + int w = edge[2]; + + if (distances[u] != Integer.MAX_VALUE && distances[u] + w < distances[v]) { + distances[v] = distances[u] + w; + } + } + } + + for (int[] edge : edges) { + int u = edge[0]; + int v = edge[1]; + int w = edge[2]; + + if (distances[u] != Integer.MAX_VALUE && distances[u] + w < distances[v]) { + return new int[]{}; + } + } + + return distances; +} +`,xm=`import java.util.ArrayList; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Queue; + + +public static List kahnTopologicalSort(Map> graph) { + List result = new ArrayList<>(); + Map indegree = new HashMap<>(); + Queue que = new LinkedList<>(); + + for (List vertices : graph.values()) { + for (int v : vertices) { + indegree.put(v, indegree.getOrDefault(v, 0) + 1); + } + } + + for (Integer node : graph.keySet()) { + if (!indegree.containsKey(node)) { + que.offer(node); + } + } + + while (!que.isEmpty()) { + int node = que.poll(); + result.add(node); + + if (graph.containsKey(node)) { + for (int neighbor : graph.get(node)) { + indegree.put(neighbor, indegree.get(neighbor) - 1); + + if (indegree.get(neighbor) == 0) { + que.offer(neighbor); + } + } + } + } + + if (result.size() != graph.size()) { + return new ArrayList<>(); + } + + return result; +} +`,_m=`import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + + +public List kruskalMST(int n, List edges) { + List mst = new ArrayList<>(); + UnionFind uf = new UnionFind(n); + Collections.sort(edges, (a, b) -> Integer.compare(a[0], b[0])); + + for (int[] edge : edges) { + int weight = edge[0]; + int u = edge[1]; + int v = edge[2]; + + if (!uf.connected(u, v)) { + uf.union(u, v); + mst.add(edge); + } + } + + return mst; +} +`,bm=`import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.PriorityQueue; + + +public List primMST(int n, List edges) { + List mst = new ArrayList<>(); + UnionFind uf = new UnionFind(n); + PriorityQueue pq = new PriorityQueue<>(Comparator.comparingInt(edge -> edge[0])); + + for (int[] edge : edges) { + pq.offer(edge); + } + + while (!pq.isEmpty()) { + int[] edge = pq.poll(); + int w = edge[0]; + int u = edge[1]; + int v = edge[2]; + + if (!uf.connected(u, v)) { + uf.union(u, v); + mst.add(edge); + } + } + + return mst; +} +`,wm=`#include +#include + +using namespace std; + + +unordered_set seen; + +int fn(vector>& graph) { + seen.insert(START_NODE); + return dfs(START_NODE, graph); +} + +int dfs(int node, vector>& graph) { + int ans = 0; + // TODO: logic + for (int neighbor: graph[node]) { + if (seen.find(neighbor) == seen.end()) { + seen.insert(neighbor); + ans += dfs(neighbor, graph); + } + } + + return ans; +} +`,Sm=`#include +#include +#include + +using namespace std; + + +int fn(vector>& graph) { + stack stack; + unordered_set seen; + stack.push(START_NODE); + seen.insert(START_NODE); + int ans = 0; + + while (!stack.empty()) { + int node = stack.top(); + stack.pop(); + // TODO: logic + for (int neighbor: graph[node]) { + if (seen.find(neighbor) == seen.end()) { + seen.insert(neighbor); + stack.push(neighbor); + } + } + } +} +`,Tm=`#include +#include +#include + +using namespace std; + + +int fn(vector>& graph) { + queue que; + unordered_set seen; + que.push(START_NODE); + seen.insert(START_NODE); + int ans = 0; + + while (!que.empty()) { + int node = que.front(); + que.pop(); + // TODO: logic + for (int neighbor: graph[node]) { + if (seen.find(neighbor) == seen.end()) { + seen.insert(neighbor); + que.push(neighbor); + } + } + } +} +`,jm=`#include +#include +#include +#include + +using namespace std; + + +vector dijkstra(vector>>& graph, int source) { + int n = graph.size(); + vector distances(n, INT_MAX); + distances[source] = 0; + + priority_queue, vector>, greater>> heap; + heap.push({0, source}); + + while (!heap.empty()) { + int currDist = heap.top().first; + int node = heap.top().second; + heap.pop(); + + if (currDist > distances[node]) { + continue; + } + + for (pair edge : graph[node]) { + int neighbor = edge.first; + int weight = edge.second; + int dist = currDist + weight; + + if (dist < distances[neighbor]) { + distances[neighbor] = dist; + heap.push({dist, neighbor}); + } + } + } + + return distances; +} +`,km=`#include +#include +#include + +using namespace std; + + +vector bellman_ford(int n, vector, int>>& edges, int source) { + vector distances(n, numeric_limits::max()); + distances[source] = 0; + + for (int i = 0; i < n - 1; ++i) { + for (const auto& edge : edges) { + int u = edge.first.first; + int v = edge.first.second; + int w = edge.second; + + if (distances[u] != numeric_limits::max() && distances[u] + w < distances[v]) { + distances[v] = distances[u] + w; + } + } + } + + for (const auto& edge : edges) { + int u = edge.first.first; + int v = edge.first.second; + int w = edge.second; + + if (distances[u] != numeric_limits::max() && distances[u] + w < distances[v]) { + return vector(); + } + } + + return distances; +} +`,Em=`#include +#include +#include + +using namespace std; + + +vector kahn_topological_sort(unordered_map>& graph) { + vector result; + unordered_map indegree; + + for (auto& [node, neighbors] : graph) { + for (int neighbor : neighbors) { + indegree[neighbor]++; + } + } + + queue que; + + for (auto& [node, _] : graph) { + if (indegree[node] == 0) { + que.push(node); + } + } + + while (!que.empty()) { + int node = que.front(); + que.pop(); + result.push_back(node); + + for (int neighbor : graph[node]) { + indegree[neighbor]--; + if (indegree[neighbor] == 0) { + que.push(neighbor); + } + } + } + + return (result.size() == graph.size()) ? result : vector(); +} +`,Nm=`#include +#include + +using namespace std; + + +vector> kruskal_mst(int n, vector>& edges) { + vector> mst; + UnionFind uf(n); + sort(edges.begin(), edges.end()); + + for (auto& [w, u, v] : edges) { + if (!uf.connected(u, v)) { + uf.unionNodes(u, v); + mst.emplace_back(w, u, v); + } + } + + return mst; +} +`,Om=`#include +#include +#include + +using namespace std; + + +vector> prim_mst(int n, vector>& edges) { + vector> mst; + UnionFind uf(n); + make_heap(edges.begin(), edges.end()); + + while (!edges.empty()) { + auto [w, u, v] = edges.front(); + pop_heap(edges.begin(), edges.end()); + edges.pop_back(); + + if (!uf.connected(u, v)) { + uf.unionNodes(u, v); + mst.emplace_back(w, u, v); + } + } + + return mst; +} +`,Am=`require 'set' + +def fn(graph) + seen = Set.new([START_NODE]) + + dfs = lambda do |node| + ans = 0 + # TODO: logic + graph[node].each do |neighbor| + unless seen.include?(neighbor) + seen.add(neighbor) + ans += dfs.call(neighbor) + end + end + ans + end + + dfs.call(START_NODE) +end +`,Cm=`require 'set' + +def fn(graph) + stack = [START_NODE] + seen = Set.new([START_NODE]) + ans = 0 + + until stack.empty? + node = stack.pop + # TODO: logic + graph[node].each do |neighbor| + unless seen.include?(neighbor) + seen.add(neighbor) + stack << neighbor + end + end + end + + ans +end +`,Lm=`require 'set' + +def fn(graph) + queue = [START_NODE] + seen = Set.new([START_NODE]) + ans = 0 + + until queue.empty? + node = queue.shift + # TODO: logic + graph[node].each do |neighbor| + unless seen.include?(neighbor) + seen.add(neighbor) + queue << neighbor + end + end + end + + ans +end +`,Rm=`require 'priority_queue' + +def dijkstras(graph, source) + n = graph.size + distances = Array.new(n, Float::INFINITY) + + distances[source] = 0 + + heap = PriorityQueue.new + heap[source] = 0 + + until heap.empty? + node, curr_dist = heap.delete_min + next if curr_dist > distances[node] + + graph[node].each do |neighbor, weight| + dist = curr_dist + weight + if dist < distances[neighbor] + distances[neighbor] = dist + heap[neighbor] = dist + end + end + end + + distances +end +`,Pm=`def bellman_ford(n, edges, source) + distances = Array.new(n, Float::INFINITY) + distances[source] = 0 + + (n - 1).times do + edges.each do |u, v, w| + if distances[u] != Float::INFINITY && distances[u] + w < distances[v] + distances[v] = distances[u] + w + end + end + end + + edges.each do |u, v, w| + if distances[u] != Float::INFINITY && distances[u] + w < distances[v] + return [] + end + end + + distances +end +`,Mm=`def kahn_topological_sort(graph) + result = [] + indegree = Hash.new(0) + + graph.each_value do |vertices| + vertices.each do |v| + indegree[v] += 1 + end + end + + queue = graph.keys.select { |node| indegree[node] == 0 } + + until queue.empty? + node = queue.shift + result << node + + graph[node].each do |neighbor| + indegree[neighbor] -= 1 + queue << neighbor if indegree[neighbor] == 0 + end + end + + result.size == graph.size ? result : [] +end +`,Im=`def kruskal_mst(n, edges) + mst = [] + uf = UnionFind.new(n) + edges.sort.each do |w, u, v| + unless uf.connected(u, v) + uf.union(u, v) + mst << [w, u, v] + end + end + + mst +end +`,Dm=`def prim_mst(n, edges) + mst = [] + uf = UnionFind.new(n) + edges.sort.each do |w, u, v| + unless uf.connected(u, v) + uf.union(u, v) + mst << [w, u, v] + end + end + + mst +end +`;function zm(){return r.jsxs("div",{className:Zn.container,children:[r.jsx("h2",{className:Zn.sectionHeader,children:"Graph"}),r.jsx("section",{id:"graph-dfs-recursive",children:r.jsxs(s,{title:"DFS (recursive)",children:[r.jsx(s.Tab,{code:Xg,language:"python"}),r.jsx(s.Tab,{code:om,language:"javascript"}),r.jsx(s.Tab,{code:hm,language:"java"}),r.jsx(s.Tab,{code:wm,language:"cpp"}),r.jsx(s.Tab,{code:Am,language:"ruby"})]})}),r.jsx("section",{id:"graph-dfs-iterative",children:r.jsxs(s,{title:"DFS (iterative)",children:[r.jsx(s.Tab,{code:Zg,language:"python"}),r.jsx(s.Tab,{code:sm,language:"javascript"}),r.jsx(s.Tab,{code:gm,language:"java"}),r.jsx(s.Tab,{code:Sm,language:"cpp"}),r.jsx(s.Tab,{code:Cm,language:"ruby"})]})}),r.jsx("section",{id:"graph-bfs",children:r.jsxs(s,{title:"BFS",children:[r.jsx(s.Tab,{code:nm,language:"python"}),r.jsx(s.Tab,{code:lm,language:"javascript"}),r.jsx(s.Tab,{code:mm,language:"java"}),r.jsx(s.Tab,{code:Tm,language:"cpp"}),r.jsx(s.Tab,{code:Lm,language:"ruby"})]})}),r.jsx("section",{id:"graph-dijkstra",children:r.jsxs(s,{title:"Dijkstra (shortest path)",children:[r.jsx(s.Tab,{code:em,language:"python"}),r.jsx(s.Tab,{code:um,language:"javascript"}),r.jsx(s.Tab,{code:vm,language:"java"}),r.jsx(s.Tab,{code:jm,language:"cpp"}),r.jsx(s.Tab,{code:Rm,language:"ruby"})]})}),r.jsx("section",{id:"graph-bellman-ford",children:r.jsxs(s,{title:"Bellman-Ford (shortest path)",children:[r.jsx(s.Tab,{code:tm,language:"python"}),r.jsx(s.Tab,{code:cm,language:"javascript"}),r.jsx(s.Tab,{code:ym,language:"java"}),r.jsx(s.Tab,{code:km,language:"cpp"}),r.jsx(s.Tab,{code:Pm,language:"ruby"})]})}),r.jsx("section",{id:"graph-kahn",children:r.jsxs(s,{title:"Kahn (topological sort)",children:[r.jsx(s.Tab,{code:rm,language:"python"}),r.jsx(s.Tab,{code:dm,language:"javascript"}),r.jsx(s.Tab,{code:xm,language:"java"}),r.jsx(s.Tab,{code:Em,language:"cpp"}),r.jsx(s.Tab,{code:Mm,language:"ruby"})]})}),r.jsx("section",{id:"graph-kruskal",children:r.jsxs(s,{title:"Kruskal (mst)",children:[r.jsx(s.Tab,{code:im,language:"python"}),r.jsx(s.Tab,{code:fm,language:"javascript"}),r.jsx(s.Tab,{code:_m,language:"java"}),r.jsx(s.Tab,{code:Nm,language:"cpp"}),r.jsx(s.Tab,{code:Im,language:"ruby"})]})}),r.jsx("section",{id:"graph-prim",children:r.jsxs(s,{title:"Prim (mst)",children:[r.jsx(s.Tab,{code:am,language:"python"}),r.jsx(s.Tab,{code:pm,language:"javascript"}),r.jsx(s.Tab,{code:bm,language:"java"}),r.jsx(s.Tab,{code:Om,language:"cpp"}),r.jsx(s.Tab,{code:Dm,language:"ruby"})]})})]})}const Bm=`from heapq import heappop, heappush + + +def fn(arr, k): + heap = [] + + for num in arr: + # TODO: logic to push onto heap according to problem's criteria + heappush(heap, (CRITERIA, num)) + + if len(heap) > k: + heappop(heap) + + return [num for num in heap] +`,Fm=`/* + JavaScript lacks built-in support for heaps. + Try using a language that doesn't hate you, like Python. +*/ +`,Um=`import java.util.PriorityQueue; + + +public int[] fn(int[] arr, int k) { + PriorityQueue heap = new PriorityQueue<>(CRITERIA); + + for (int num: arr) { + // TODO: logic to push onto heap according to problem's criteria + heap.add(num); + + if (heap.size() > k) { + heap.remove(); + } + } + + int[] ans = new int[k]; + + for (int i = 0; i < k; i++) { + ans[i] = heap.remove(); + } + + return ans; +} +`,Hm=`#include +#include + +using namespace std; + + +vector fn(vector& arr, int k) { + priority_queue, greater> min_heap; + vector result; + + for (int num : arr) { + // TODO: logic to push onto heap according to problem's criteria + min_heap.push(num); + + if (min_heap.size() > k) { + min_heap.pop(); + } + } + + while (!min_heap.empty()) { + result.push_back(min_heap.top()); + min_heap.pop(); + } + + return result; +} +`,Wm=`def fn(arr, k) + heap = [] + + arr.each do |num| + # TODO: logic to push onto heap according to problem's criteria + heap.push([CRITERIA, num]) + + if heap.size > k + # TODO: pop the top element from heap + heap.pop + end + end + + heap.map { |item| item[1] } +end +`;function Vm(){return r.jsxs("div",{className:Zn.container,children:[r.jsx("h2",{className:Zn.sectionHeader,children:"Heap"}),r.jsx("section",{id:"heap-find-top-k-elements",children:r.jsxs(s,{title:"find top k elements",children:[r.jsx(s.Tab,{code:Bm,language:"python"}),r.jsx(s.Tab,{code:Fm,language:"javascript"}),r.jsx(s.Tab,{code:Um,language:"java"}),r.jsx(s.Tab,{code:Hm,language:"cpp"}),r.jsx(s.Tab,{code:Wm,language:"ruby"})]})})]})}const $m=`def fn(arr, target): + left = 0 + right = len(arr) - 1 + + while left <= right: + mid = (left + right) // 2 + + if arr[mid] == target: + # TODO: logic + return + if arr[mid] > target: + right = mid - 1 + else: + left = mid + 1 + + return left +`,Km=`def fn(arr, target): + left = 0 + right = len(arr) + + while left < right: + mid = (left + right) // 2 + + if arr[mid] >= target: + right = mid + else: + left = mid + 1 + + return left +`,Gm=`def fn(arr, target): + left = 0 + right = len(arr) + + while left < right: + mid = (left + right) // 2 + + if arr[mid] > target: + right = mid + else: + left = mid + 1 + + return left +`,Jm=`def fn(arr): + def check(x): + return BOOLEAN + + left = MINIMUM_POSSIBLE_ANSWER + right = MAXIMUM_POSSIBLE_ANSWER + + while left <= right: + mid = (left + right) // 2 + + if check(mid): + right = mid - 1 + else: + left = mid + 1 + + return left +`,Ym=`def fn(arr): + def check(x): + return BOOLEAN + + left = MINIMUM_POSSIBLE_ANSWER + right = MAXIMUM_POSSIBLE_ANSWER + + while left <= right: + mid = (left + right) // 2 + + if check(mid): + left = mid + 1 + else: + right = mid - 1 + + return right +`,qm=`const fn = (arr, target) => { + let left = 0 + let right = arr.length - 1 + + while (left <= right) { + let mid = Math.floor((left + right) / 2) + + if (arr[mid] == target) { + // TODO: logic + return + } + + if (arr[mid] > target) { + right = mid - 1 + } else { + left = mid + 1 + } + } + + return left +} +`,Qm=`const fn = (arr, target) => { + let left = 0 + let right = arr.length + + while (left < right) { + let mid = Math.floor((left + right) / 2) + + if (arr[mid] >= target) { + right = mid + } else { + left = mid + 1 + } + } + + return left +} +`,Xm=`const fn = (arr, target) => { + let left = 0 + let right = arr.length + + while (left < right) { + let mid = Math.floor((left + right) / 2) + + if (arr[mid] > target) { + right = mid + } else { + left = mid + 1 + } + } + + return left +} +`,Zm=`const fn = (arr) => { + const check = (x) => { + return BOOLEAN + } + + let left = MINIMUM_POSSIBLE_ANSWER + let right = MAXMIMUM_POSSIBLE_ANSWER + + while (left <= right) { + let mid = Math.floor((left + right) / 2) + + if (check(mid)) { + right = mid - 1 + } else { + left = mid + 1 + } + } + + return left +} +`,nv=`const fn = (arr) => { + const check = (x) => { + return BOOLEAN + } + + let left = MINIMUM_POSSIBLE_ANSWER + let right = MAXMIMUM_POSSIBLE_ANSWER + + while (left <= right) { + let mid = Math.floor((left + right) / 2) + + if (check(mid)) { + left = mid + 1 + } else { + right = mid - 1 + } + } + + return right +} +`,ev=`public int fn(int[] arr, int target) { + int left = 0; + int right = arr.length - 1; + + while (left <= right) { + int mid = left + (right - left) / 2; + + if (arr[mid] == target) { + // TODO: logic + return mid; + } + if (arr[mid] > target) { + right = mid - 1; + } else { + left = mid + 1; + } + } + + return left; +} +`,tv=`public int fn(int[] arr, int target) { + int left = 0; + int right = arr.length; + + while (left < right) { + int mid = left + (right - left) / 2; + + if (arr[mid] >= target) { + right = mid; + } else { + left = mid + 1; + } + } + + return left; +} +`,rv=`public int fn(int[] arr, int target) { + int left = 0; + int right = arr.length; + + while (left < right) { + int mid = left + (right - left) / 2; + + if (arr[mid] > target) { + right = mid; + } else { + left = mid + 1; + } + } + + return left; +} +`,iv=`public int fn(int[] arr) { + int left = MINIMUM_POSSIBLE_ANSWER; + int right = MAXIMUM_POSSIBLE_ANSWER; + + while (left <= right) { + int mid = left + (right - left) / 2; + + if (check(mid)) { + right = mid - 1; + } else { + left = mid + 1; + } + } + + return left; +} + +public boolean check(int x) { + return BOOLEAN +} +`,av=`public int fn(int[] arr) { + int left = MINIMUM_POSSIBLE_ANSWER; + int right = MAXIMUM_POSSIBLE_ANSWER; + + while (left <= right) { + int mid = left + (right - left) / 2; + + if (check(mid)) { + left = mid + 1; + } else { + right = mid - 1; + } + } + + return right; +} + +public boolean check(int x) { + return BOOLEAN +} +`,ov=`#include + +using namespace std; + + +int fn(vector& arr, int target) { + int left = 0; + int right = arr.size() - 1; + + while (left <= right) { + int mid = left + (right - left) / 2; + + if (arr[mid] == target) { + // TODO: logic + return mid; + } + if (arr[mid] > target) { + right = mid - 1; + } else { + left = mid + 1; + } + } + + return left; +} +`,sv=`#include + +using namespace std; + + +int fn(vector& arr, int target) { + int left = 0; + int right = arr.size(); + + while (left < right) { + int mid = left + (right - left) / 2; + + if (arr[mid] >= target) { + right = mid; + } else { + left = mid + 1; + } + } + + return left; +} +`,lv=`#include + +using namespace std; + + +int fn(vector& arr, int target) { + int left = 0; + int right = arr.size(); + + while (left < right) { + int mid = left + (right - left) / 2; + + if (arr[mid] > target) { + right = mid; + } else { + left = mid + 1; + } + } + + return left; +} +`,uv=`#include + +using namespace std; + + +bool check(int x) { + return BOOLEAN; +} + +int fn(vector& arr) { + int left = MINIMUM_POSSIBLE_ANSWER; + int right = MAXIMUM_POSSIBLE_ANSWER; + + while (left <= right) { + int mid = left + (right - left) / 2; + + if (check(mid)) { + right = mid - 1; + } else { + left = mid + 1; + } + } + + return left; +} +`,cv=`#include + +using namespace std; + + +bool check(int x) { + return BOOLEAN; +} + +int fn(vector& arr) { + int left = MINIMUM_POSSIBLE_ANSWER; + int right = MAXIMUM_POSSIBLE_ANSWER; + + while (left <= right) { + int mid = left + (right - left) / 2; + + if (check(mid)) { + left = mid + 1; + } else { + right = mid - 1; + } + } + + return right; +} +`,dv=`def fn(arr, target) + left = 0 + right = arr.length - 1 + + while left <= right + mid = (left + right) / 2 + + if arr[mid] == target + # TODO: logic + return + elsif arr[mid] > target + right = mid - 1 + else + left = mid + 1 + end + end + + left +end +`,fv=`def fn(arr, target) + left = 0 + right = len(arr) + + while left < right + mid = (left + right) / 2 + + if arr[mid] >= target + right = mid + else + left = mid + 1 + end + end + + left +end +`,pv=`def fn(arr, target) + left = 0 + right = len(arr) + + while left < right + mid = (left + right) / 2 + + if arr[mid] > target + right = mid + else + left = mid + 1 + end + end + + left +end +`,hv=`def fn(arr) + left = MINIMUM_POSSIBLE_ANSWER + right = MAXIMUM_POSSIBLE_ANSWER + + while left <= right + mid = (left + right) / 2 # int div + + if check(mid) + right = mid - 1 + else + left = mid + 1 + end + end + + left +end + +def check(x) + BOOLEAN +end`,gv=`def fn(arr) + left = MINIMUM_POSSIBLE_ANSWER + right = MAXIMUM_POSSIBLE_ANSWER + + while left <= right + mid = (left + right) / 2 # integer division + + if check(mid) + left = mid + 1 + else + right = mid - 1 + end + + end + + right +end + +def check(x) + BOOLEAN +end +`;function mv(){return r.jsxs("div",{className:Zn.container,children:[r.jsx("h2",{className:Zn.sectionHeader,children:"Binary Search"}),r.jsx("section",{id:"binarysearch-binary-search",children:r.jsxs(s,{title:"binary search",children:[r.jsx(s.Tab,{code:$m,language:"python"}),r.jsx(s.Tab,{code:qm,language:"javascript"}),r.jsx(s.Tab,{code:ev,language:"java"}),r.jsx(s.Tab,{code:ov,language:"cpp"}),r.jsx(s.Tab,{code:dv,language:"ruby"})]})}),r.jsx("section",{id:"binarysearch-duplicate-elements-left-insertion",children:r.jsxs(s,{title:"duplicate elements, left-most insertion point",children:[r.jsx(s.Tab,{code:Km,language:"python"}),r.jsx(s.Tab,{code:Qm,language:"javascript"}),r.jsx(s.Tab,{code:tv,language:"java"}),r.jsx(s.Tab,{code:sv,language:"cpp"}),r.jsx(s.Tab,{code:fv,language:"ruby"})]})}),r.jsx("section",{id:"binarysearch-duplicate-elements-right-insertion",children:r.jsxs(s,{title:"duplicate elements, right-most insertion point",children:[r.jsx(s.Tab,{code:Gm,language:"python"}),r.jsx(s.Tab,{code:Xm,language:"javascript"}),r.jsx(s.Tab,{code:rv,language:"java"}),r.jsx(s.Tab,{code:lv,language:"cpp"}),r.jsx(s.Tab,{code:pv,language:"ruby"})]})}),r.jsx("section",{id:"binarysearch-greedy-minimum",children:r.jsxs(s,{title:"greedy (minimum)",children:[r.jsx(s.Tab,{code:Jm,language:"python"}),r.jsx(s.Tab,{code:Zm,language:"javascript"}),r.jsx(s.Tab,{code:iv,language:"java"}),r.jsx(s.Tab,{code:uv,language:"cpp"}),r.jsx(s.Tab,{code:hv,language:"ruby"})]})}),r.jsx("section",{id:"binarysearch-greedy-maximum",children:r.jsxs(s,{title:"greedy (maximum)",children:[r.jsx(s.Tab,{code:Ym,language:"python"}),r.jsx(s.Tab,{code:nv,language:"javascript"}),r.jsx(s.Tab,{code:av,language:"java"}),r.jsx(s.Tab,{code:cv,language:"cpp"}),r.jsx(s.Tab,{code:gv,language:"ruby"})]})})]})}const vv=`def backtrack(curr, OTHER_ARGUMENTS...): + if (BASE_CASE): + # TODO: modify answer + return + + ans = 0 + + for (ITERATE_OVER_INPUT): + # TODO: modify current state + ans += backtrack(curr, OTHER_ARGUMENTS...) + # TODO: undo modification of current state + + return ans +`,yv=`const backtrack = (curr, OTHER_ARGUMENTS...) => { + if (BASE_CASE) { + // TODO: modify answer + return + } + + let ans = 0 + + for (ITERATE_OVER_INPUT) { + // TODO: modify current state + ans += backtrack(curr, OTHER_ARGUMENTS...) + // TODO: undo modification of current state + } + + return ans +} +`,xv=`public int backtrack(STATE curr, OTHER_ARGUMENTS...) { + if (BASE_CASE) { + // TODO: modify answer + return 0; + } + + int ans = 0; + + for (ITERATE_OVER_INPUT) { + // TODO: modify current state + ans += backtrack(curr, OTHER_ARGUMENTS...); + // TODO: undo modification of current state + } + + return ans; +} +`,_v=`int backtrack(STATE curr, OTHER_ARGUMENTS...) { + if (BASE_CASE) { + // TODO: modify answer + return 0; + } + + int ans = 0; + + for (ITERATE_OVER_INPUT) { + // TODO: modify current state + ans += backtrack(curr, OTHER_ARGUMENTS...); + // TODO: undo modification of current state + } + + return ans; +} +`,bv=`def backtrack(curr, OTHER_ARGUMENTS...) + if(BASE_CASE) + # TODO: modify answer + return + end + + ans = 0 + + INPUTS.each do |i| + # TODO: modify current state + ans += backtrack(curr, OTHER_ARGUMENTS...) + # TODO: undo modification of current state + end + + ans +end +`;function wv(){return r.jsxs("div",{className:Zn.container,children:[r.jsx("h2",{className:Zn.sectionHeader,children:"Backtracking"}),r.jsx("section",{id:"backtracking-backtracking",children:r.jsxs(s,{title:"backtracking",children:[r.jsx(s.Tab,{code:vv,language:"python"}),r.jsx(s.Tab,{code:yv,language:"javascript"}),r.jsx(s.Tab,{code:xv,language:"java"}),r.jsx(s.Tab,{code:_v,language:"cpp"}),r.jsx(s.Tab,{code:bv,language:"ruby"})]})})]})}const Sv=`def fn(arr): + @cache + def dp(STATE): + if BASE_CASE: + return 0 + return RECURRENCE_RELATION(STATE) + + return dp(STATE_FOR_WHOLE_INPUT) +`,Tv=`def fn(arr): + if BASE_CASE: + return 0 + + dp = [BASE_CASE] * (STATE_FOR_WHOLE_INPUT + 1) + + for STATE in range(SMALLEST_SUBPROBLEM, STATE_FOR_WHOLE_INPUT + 1): + if BASE_CASE: + dp[STATE] = BASE_CASE + else: + dp[STATE] = RECURRENCE_RELATION(STATE) + + return dp[STATE_FOR_WHOLE_INPUT] +`,jv=`def kadane(arr: list[int]) -> int: + curr_sub = max_sub = arr[0] + + for num in arr[1:]: + curr_sub = max(curr_sub + num, num) + max_sub = max(max_sub, curr_sub) + + return max_sub +`,kv=`const fn = (arr) => { + const dp = (STATE) => { + if (BASE_CASE) { + return 0 + } + + if (memo[STATE] != -1) { + return memo[STATE] + } + + let ans = RECURRENCE_RELATION(STATE) + memo[STATE] = ans + + return ans + } + + let memo = ARRAY_SIZED_ACCORDING_TO_STATE + + return dp(STATE_FOR_WHOLE_INPUT) +} +`,Ev=`const fn = (arr) => { + const dp = new Array(STATE_FOR_WHOLE_INPUT + 1).fill(BASE_CASE) + + for (let state = SMALLEST_SUBPROBLEM; state <= STATE_FOR_WHOLE_INPUT; state++) { + if (BASE_CASE) { + dp[state] = BASE_CASE + } else { + dp[state] = RECURRENCE_RELATION(state) + } + } + + return dp[STATE_FOR_WHOLE_INPUT] +} +`,Nv=`const kadane = (arr) => { + let currSub = arr[0] + let maxSub = arr[0] + + for (let i = 1; i < arr.length; i++) { + currSub = Math.max(currSub + arr[i], arr[i]) + maxSub = Math.max(maxSub, currSub) + } + + return maxSub +} +`,Ov=`import java.util.HashMap; +import java.util.Map; + + +Map memo = new HashMap<>(); + +public int fn(int[] arr) { + return dp(STATE_FOR_WHOLE_INPUT, arr); +} + +public int dp(STATE, int[] arr) { + if (BASE_CASE) { + return 0; + } + + if (memo.contains(STATE)) { + return memo.get(STATE); + } + + int ans = RECURRENCE_RELATION(STATE); + memo.put(STATE, ans); + return ans; +} +`,Av=`import java.util.Arrays; + + +public int fn(int[] arr) { + if (BASE_CASE) { + return 0; + } + + int[] dp = new int[STATE_FOR_WHOLE_INPUT + 1]; + Arrays.fill(dp, BASE_CASE); + + for (int STATE = SMALLEST_SUBPROBLEM; STATE <= STATE_FOR_WHOLE_INPUT; STATE++) { + if (BASE_CASE) { + dp[STATE] = BASE_CASE; + } else { + dp[STATE] = RECURRENCE_RELATION(STATE); + } + } + + return dp[STATE_FOR_WHOLE_INPUT]; +} +`,Cv=`public int kadane(int[] arr) { + int currSub = arr[0]; + int maxSub = arr[0]; + + for (int i = 1; i < arr.length; i++) { + currSub = Math.max(currSub + arr[i], arr[i]); + maxSub = Math.max(maxSub, currSub); + } + + return maxSub; +} +`,Lv=`#include + +using namespace std; + + +unordered_map memo; + +int fn(vector& arr) { + return dp(STATE_FOR_WHOLE_INPUT, arr); +} + +int dp(STATE, vector& arr) { + if (BASE_CASE) { + return 0; + } + + if (memo.find(STATE) != memo.end()) { + return memo[STATE]; + } + + int ans = RECURRENCE_RELATION(STATE); + memo[STATE] = ans; + return ans; +} +`,Rv=`#include +#include + +using namespace std; + + +int fn(int arr[], int size) { + if (BASE_CASE) { + return 0; + } + + vector dp(STATE_FOR_WHOLE_INPUT + 1, BASE_CASE); + + for (int state = SMALLEST_SUBPROBLEM; state <= STATE_FOR_WHOLE_INPUT; ++state) { + if (BASE_CASE) { + dp[state] = BASE_CASE; + } else { + dp[state] = RECURRENCE_RELATION(state); + } + } + + return dp[STATE_FOR_WHOLE_INPUT]; +} +`,Pv=`#include +#include + +using namespace std; + + +int kadane(vector& arr) { + int curr_sub = arr[0]; + int max_sub = arr[0]; + + for (size_t i = 1; i < arr.size(); ++i) { + curr_sub = max(curr_sub + arr[i], arr[i]); + max_sub = max(max_sub, curr_sub); + } + + return max_sub; +} +`,Mv=`def fn(arr) + cache = {} + + dp = lambda do |state| + return 0 if BASE_CASE + return cache[state] if cache.key?(state) + + cache[state] = RECURRENCE_RELATION(state) + end + + dp.call(STATE_FOR_WHOLE_INPUT) +end +`,Iv=`def fn(arr) + if BASE_CASE + return 0 + end + + dp = Array.new(STATE_FOR_WHOLE_INPUT + 1, BASE_CASE) + + (SMALLEST_SUBPROBLEM..STATE_FOR_WHOLE_INPUT).each do |state| + if BASE_CASE + dp[state] = BASE_CASE + else + dp[state] = RECURRENCE_RELATION(state) + end + end + + dp[STATE_FOR_WHOLE_INPUT] +end +`,Dv=`def kadane(arr) + curr_sub = arr[0] + max_sub = arr[0] + + arr[1..-1].each do |num| + curr_sub = [curr_sub + num, num].max + max_sub = [max_sub, curr_sub].max + end + + max_sub +end +`;function zv(){return r.jsxs("div",{className:Zn.container,children:[r.jsx("h2",{className:Zn.sectionHeader,children:"Dynamic Programming"}),r.jsx("section",{id:"dp-top-down",children:r.jsxs(s,{title:"DP top-down",children:[r.jsx(s.Tab,{code:Sv,language:"python"}),r.jsx(s.Tab,{code:kv,language:"javascript"}),r.jsx(s.Tab,{code:Ov,language:"java"}),r.jsx(s.Tab,{code:Lv,language:"cpp"}),r.jsx(s.Tab,{code:Mv,language:"ruby"})]})}),r.jsx("section",{id:"dp-bottom-up",children:r.jsxs(s,{title:"DP bottom-up",children:[r.jsx(s.Tab,{code:Tv,language:"python"}),r.jsx(s.Tab,{code:Ev,language:"javascript"}),r.jsx(s.Tab,{code:Av,language:"java"}),r.jsx(s.Tab,{code:Rv,language:"cpp"}),r.jsx(s.Tab,{code:Iv,language:"ruby"})]})}),r.jsx("section",{id:"dp-kadane",children:r.jsxs(s,{title:"Kadane (max-sum subarray)",children:[r.jsx(s.Tab,{code:jv,language:"python"}),r.jsx(s.Tab,{code:Nv,language:"javascript"}),r.jsx(s.Tab,{code:Cv,language:"java"}),r.jsx(s.Tab,{code:Pv,language:"cpp"}),r.jsx(s.Tab,{code:Dv,language:"ruby"})]})})]})}const Bv=`def test_kth_bit(num: int, k: int) -> bool: + return num & (1 << k) != 0 +`,Fv=`def set_kth_bit(num: int, k: int) -> int: + return num | (1 << k) +`,Uv=`def clear_kth_bit(num: int, k: int) -> int: + return num & ~(1 << k) +`,Hv=`def toggle_kth_bit(num: int, k: int) -> int: + return num ^ (1 << k) +`,Wv=`def get_rightmost_set_bit(num: int) -> int: + return num & -num +`,Vv=`def count_set_bits(num: int) -> int: + return bin(num).count('1') +`,$v=`def multiply_by_power_of_two(num: int, k: int) -> int: + return num << k +`,Kv=`def divide_by_power_of_two(num: int, k: int) -> int: + return num >> k +`,Gv=`def is_power_of_two(num: int) -> bool: + return (num & (num - 1)) == 0 +`,Jv=`def swap_variables(num1: int, num2: int) -> tuple: + num1 ^= num2 + num2 ^= num1 + num1 ^= num2 + return num1, num2 +`,Yv=`const testKthBit = (num, k) => { + return num & (1 << k) !== 0 +} +`,qv=`const setKthBit = (num, k) => { + return num | (1 << k) +} +`,Qv=`const clearKthBit = (num, k) => { + return num & ~(1 << k) +} +`,Xv=`const toggleKthBit = (num, k) => { + return num ^ (1 << k) +} +`,Zv=`const getRightmostSetBit = (num) => { + return num & -num +} +`,n1=`const countSetBits = (num) => { + return num.toString(2).split('1').length - 1 +} +`,e1=`const multiplyByPowerOfTwo = (num, k) => { + return num << k +} +`,t1=`const divideByPowerOfTwo = (num, k) => { + return num >> k; +} +`,r1=`const isPowerOfTwo = (num) => { + return (num & (num - 1)) === 0 +} +`,i1=`const swapVariables = (num1, num2) => { + num1 ^= num2 + num2 ^= num1 + num1 ^= num2 + return [num1, num2] +} +`,a1=`public boolean testKthBit(int num, int k) { + return (num & (1 << k)) != 0; +} +`,o1=`public int setKthBit(int num, int k) { + return num | (1 << k); +} +`,s1=`public int clearKthBit(int num, int k) { + return num & ~(1 << k); +} +`,l1=`public int toggleKthBit(int num, int k) { + return num ^ (1 << k); +} +`,u1=`public int getRightmostSetBit(int num) { + return num & -num; +} +`,c1=`public int countSetBits(int num) { + int count = 0; + + while (num > 0) { + count += num & 1; + num >>= 1; + } + + return count; +} +`,d1=`public int multiplyByPowerOfTwo(int num, int k) { + return num << k; +} +`,f1=`public int divideByPowerOfTwo(int num, int k) { + return num >> k; +} +`,p1=`public boolean isPowerOfTwo(int num) { + return (num & (num - 1)) == 0; +} +`,h1=`public int[] swapVariables(int num1, int num2) { + num1 ^= num2; + num2 ^= num1; + num1 ^= num2; + return new int[] { num1, num2 }; +} +`,g1=`bool test_kth_bit(int num, int k) { + return (num & (1 << k)) != 0; +} +`,m1=`int set_kth_bit(int num, int k) { + return num | (1 << k); +} +`,v1=`int clear_kth_bit(int num, int k) { + return num & ~(1 << k); +} +`,y1=`int toggle_kth_bit(int num, int k) { + return num ^ (1 << k); +} +`,x1=`int get_rightmost_set_bit(int num) { + return num & -num; +} +`,_1=`int count_set_bits(int num) { + int count = 0; + + while (num) { + count += num & 1; + num >>= 1; + } + + return count; +} +`,b1=`int multiply_by_power_of_two(int num, int k) { + return num << k; +} +`,w1=`int divide_by_power_of_two(int num, int k) { + return num >> k; +} +`,S1=`bool is_power_of_two(int num) { + return (num & (num - 1)) == 0; +} +`,T1=`#include + +using namespace std; + + +tuple swap_variables(int num1, int num2) { + num1 ^= num2; + num2 ^= num1; + num1 ^= num2; + return std::make_tuple(num1, num2); +} +`,j1=`def test_kth_bit(num, k) + num & (1 << k) != 0 +end +`,k1=`def set_kth_bit(num, k) + num | (1 << k) +end +`,E1=`def clear_kth_bit(num, k) + num & ~(1 << k) +end +`,N1=`def toggle_kth_bit(num, k) + num ^ (1 << k) +end +`,O1=`def get_rightmost_set_bit(num) + num & -num +end +`,A1=`def count_set_bits(num) + num.to_s(2).count('1') +end +`,C1=`def multiply_by_power_of_two(num, k) + num << k +end +`,L1=`def divide_by_power_of_two(num, k) + num >> k +end +`,R1=`def is_power_of_two(num) + (num & (num - 1)) == 0 +end +`,P1=`# in-memory swaps +# unnecessary for modern languages +def swap_variables(num1, num2) + num1 ^= num2 + num2 ^= num1 + num1 ^= num2 + + return num1, num2 +end +`;function M1(){return r.jsxs("div",{className:Zn.container,children:[r.jsx("h2",{className:Zn.sectionHeader,children:"Bit Manipulation"}),r.jsx("section",{id:"bitmanipulation-test-kth-bit",children:r.jsxs(s,{title:"test kth-bit",children:[r.jsx(s.Tab,{code:Bv,language:"python"}),r.jsx(s.Tab,{code:Yv,language:"javascript"}),r.jsx(s.Tab,{code:a1,language:"java"}),r.jsx(s.Tab,{code:g1,language:"cpp"}),r.jsx(s.Tab,{code:j1,language:"ruby"})]})}),r.jsx("section",{id:"bitmanipulation-set-kth-bit",children:r.jsxs(s,{title:"set kth bit",children:[r.jsx(s.Tab,{code:Fv,language:"python"}),r.jsx(s.Tab,{code:qv,language:"javascript"}),r.jsx(s.Tab,{code:o1,language:"java"}),r.jsx(s.Tab,{code:m1,language:"cpp"}),r.jsx(s.Tab,{code:k1,language:"ruby"})]})}),r.jsx("section",{id:"bitmanipulation-clear-kth-bit",children:r.jsxs(s,{title:"clear kth bit",children:[r.jsx(s.Tab,{code:Uv,language:"python"}),r.jsx(s.Tab,{code:Qv,language:"javascript"}),r.jsx(s.Tab,{code:s1,language:"java"}),r.jsx(s.Tab,{code:v1,language:"cpp"}),r.jsx(s.Tab,{code:E1,language:"ruby"})]})}),r.jsx("section",{id:"bitmanipulation-toggle-kth-bit",children:r.jsxs(s,{title:"toggle kth bit",children:[r.jsx(s.Tab,{code:Hv,language:"python"}),r.jsx(s.Tab,{code:Xv,language:"javascript"}),r.jsx(s.Tab,{code:l1,language:"java"}),r.jsx(s.Tab,{code:y1,language:"cpp"}),r.jsx(s.Tab,{code:N1,language:"ruby"})]})}),r.jsx("section",{id:"bitmanipulation-get-rightmost-bit",children:r.jsxs(s,{title:"get rightmost bit",children:[r.jsx(s.Tab,{code:Wv,language:"python"}),r.jsx(s.Tab,{code:Zv,language:"javascript"}),r.jsx(s.Tab,{code:u1,language:"java"}),r.jsx(s.Tab,{code:x1,language:"cpp"}),r.jsx(s.Tab,{code:O1,language:"ruby"})]})}),r.jsx("section",{id:"bitmanipulation-count-set-bits",children:r.jsxs(s,{title:"count set bits",children:[r.jsx(s.Tab,{code:Vv,language:"python"}),r.jsx(s.Tab,{code:n1,language:"javascript"}),r.jsx(s.Tab,{code:c1,language:"java"}),r.jsx(s.Tab,{code:_1,language:"cpp"}),r.jsx(s.Tab,{code:A1,language:"ruby"})]})}),r.jsx("section",{id:"bitmanipulation-multiply-power-of-two",children:r.jsxs(s,{title:"multiply by 2^k",children:[r.jsx(s.Tab,{code:$v,language:"python"}),r.jsx(s.Tab,{code:e1,language:"javascript"}),r.jsx(s.Tab,{code:d1,language:"java"}),r.jsx(s.Tab,{code:b1,language:"cpp"}),r.jsx(s.Tab,{code:C1,language:"ruby"})]})}),r.jsx("section",{id:"bitmanipulation-divide-power-of-two",children:r.jsxs(s,{title:"divide by 2^k",children:[r.jsx(s.Tab,{code:Kv,language:"python"}),r.jsx(s.Tab,{code:t1,language:"javascript"}),r.jsx(s.Tab,{code:f1,language:"java"}),r.jsx(s.Tab,{code:w1,language:"cpp"}),r.jsx(s.Tab,{code:L1,language:"ruby"})]})}),r.jsx("section",{id:"bitmanipulation-check-power-of-two",children:r.jsxs(s,{title:"check if number is power of 2",children:[r.jsx(s.Tab,{code:Gv,language:"python"}),r.jsx(s.Tab,{code:r1,language:"javascript"}),r.jsx(s.Tab,{code:p1,language:"java"}),r.jsx(s.Tab,{code:S1,language:"cpp"}),r.jsx(s.Tab,{code:R1,language:"ruby"})]})}),r.jsx("section",{id:"bitmanipulation-swap-variables",children:r.jsxs(s,{title:"swap two variables",children:[r.jsx(s.Tab,{code:Jv,language:"python"}),r.jsx(s.Tab,{code:i1,language:"javascript"}),r.jsx(s.Tab,{code:h1,language:"java"}),r.jsx(s.Tab,{code:T1,language:"cpp"}),r.jsx(s.Tab,{code:P1,language:"ruby"})]})})]})}const I1=`def fn(matrix: list[list[int]]): + r = len(matrix) + c = len(matrix[0]) + + create_matrix = [[0 for _ in range(c)] for _ in range(r)] + copy_matrix = [row[:] for row in matrix] +`,D1=`def fn(matrix: list[list[int]]): + r = len(matrix) + c = len(matrix[0]) + + main_diagonal = [matrix[i][i] for i in range(min(r, c))] + anti_diagonal = [matrix[i][~i] for i in range(min(r, c))] +`,z1=`def fn(matrix: list[list[int]]): + r = len(matrix) + c = len(matrix[0]) + + transpose_tuple = zip(*matrix) + transpose = [list(row) for row in transpose_tuple] + rotate_left = transpose[::-1] + rotate_right = [row[::-1] for row in transpose] +`,B1=`const fn = (matrix) => { + const r = matrix.length; + const c = matrix[0].length; + + const createMatrix = Array.from({ length: r }, () => Array(c).fill(0)) + const copyMatrix = matrix.map(row => [...row]) +} +`,F1=`const fn = (matrix) => { + const r = matrix.length + const c = matrix[0].length + + const mainDiagonal = Array.from({ length: Math.min(r, c) }, (_, i) => matrix[i][i]) + const antiDiagonal = Array.from({ length: Math.min(r, c) }, (_, i) => matrix[i][~i]) +} +`,U1=`const fn = (matrix) => { + const r = matrix.length + const c = matrix[0].length + + const transposeTuple = matrix[0].map((_, i) => matrix.map(row => row[i])) + const transpose = transposeTuple.map(row => [...row]) + const rotateLeft = transpose.reverse() + const rotateRight = transpose.map(row => row.reverse()) +} +`,H1=`import java.util.ArrayList; +import java.util.List; + + +public void fn(List> matrix) { + List> createMatrix = new ArrayList<>(); + List> copyMatrix = new ArrayList<>(); + int r = matrix.size(); + int c = matrix.get(0).size(); + + for (int i = 0; i < r; i++) { + List row = new ArrayList<>(); + + for (int j = 0; j < c; j++) { + row.add(0); + } + + createMatrix.add(row); + } + + for (List row : matrix) { + copyMatrix.add(new ArrayList<>(row)); + } +} +`,W1=`import java.util.ArrayList; +import java.util.List; + + +public void fn(List> matrix) { + List mainDiagonal = new ArrayList<>(); + List antiDiagonal = new ArrayList<>(); + int r = matrix.size(); + int c = matrix.get(0).size(); + + for (int i = 0; i < Math.min(r, c); i++) { + mainDiagonal.add(matrix.get(i).get(i)); + } + + for (int i = 0; i < Math.min(r, c); i++) { + antiDiagonal.add(matrix.get(i).get(c - 1 - i)); + } +} +`,V1=`import java.util.ArrayList; +import java.util.List; + + +public static void fn(List> matrix) { + List> transpose = new ArrayList<>(); + List> rotateLeft = new ArrayList<>(); + List> rotateRight = new ArrayList<>(); + int r = matrix.size(); + int c = matrix.get(0).size(); + + for (int j = 0; j < c; j++) { + List newRow = new ArrayList<>(); + + for (int i = 0; i < r; i++) { + newRow.add(matrix.get(i).get(j)); + } + + transpose.add(newRow); + } + + for (int i = transpose.size() - 1; i >= 0; i--) { + rotateLeft.add(transpose.get(i)); + } + + for (List row : transpose) { + List newRow = new ArrayList<>(); + + for (int i = row.size() - 1; i >= 0; i--) { + newRow.add(row.get(i)); + } + + rotateRight.add(newRow); + } +} +`,$1=`#include + +using namespace std; + + +void fn(vector>& matrix) { + int r = matrix.size(); + int c = matrix[0].size(); + + vector> create_matrix(r, vector(c, 0)); + vector> copy_matrix(matrix); +} +`,K1=`#include + +using namespace std; + + +void fn(vector>& matrix) { + int r = matrix.size(); + int c = matrix[0].size(); + + vector main_diagonal; + vector anti_diagonal; + + for (int i = 0; i < min(r, c); ++i) { + main_diagonal.push_back(matrix[i][i]); + anti_diagonal.push_back(matrix[i][c - i - 1]); + } +} +`,G1=`#include + +using namespace std; + + +void fn(vector>& matrix) { + int r = matrix.size(); + int c = matrix[0].size(); + vector> transpose(c, vector(r)); + vector> rotate_left(c, vector(r)); + vector> rotate_right(c, vector(r)); + + for (int i = 0; i < r; ++i) { + for (int j = 0; j < c; ++j) { + transpose[j][i] = matrix[i][j]; + } + } + + for (int i = 0; i < c; ++i) { + for (int j = 0; j < r; ++j) { + rotate_left[i][j] = transpose[c - i - 1][j]; + } + } + + for (int i = 0; i < c; ++i) { + for (int j = 0; j < r; ++j) { + rotate_right[i][j] = transpose[i][r - j - 1]; + } + } +} +`,J1=`def fn(matrix) + r = matrix.size + c = matrix[0].size + + create_matrix = Array.new(r) { Array.new(c, 0) } + copy_matrix = matrix.map(&:dup) +end +`,Y1=`def fn(matrix) + r = matrix.size + c = matrix[0].size + + main_diagonal = (0...[r, c].min).map { |i| matrix[i][i] } + anti_diagonal = (0...[r, c].min).map { |i| matrix[i][-i - 1] } +end +`,q1=`def fn(matrix) + r = matrix.size + c = matrix[0].size + + transpose = matrix[0].zip(*matrix[1..-1]) + rotate_left = transpose.reverse + rotate_right = transpose.map(&:reverse) +end +`;function Q1(){return r.jsxs("div",{className:Zn.container,children:[r.jsx("h2",{className:Zn.sectionHeader,children:"Matrix"}),r.jsx("section",{id:"matrix-create-copy",children:r.jsxs(s,{title:"create / copy",children:[r.jsx(s.Tab,{code:I1,language:"python"}),r.jsx(s.Tab,{code:B1,language:"javascript"}),r.jsx(s.Tab,{code:H1,language:"java"}),r.jsx(s.Tab,{code:$1,language:"cpp"}),r.jsx(s.Tab,{code:J1,language:"ruby"})]})}),r.jsx("section",{id:"matrix-diagonals",children:r.jsxs(s,{title:"diagonals / anti-diagonals",children:[r.jsx(s.Tab,{code:D1,language:"python"}),r.jsx(s.Tab,{code:F1,language:"javascript"}),r.jsx(s.Tab,{code:W1,language:"java"}),r.jsx(s.Tab,{code:K1,language:"cpp"}),r.jsx(s.Tab,{code:Y1,language:"ruby"})]})}),r.jsx("section",{id:"matrix-rotate-transpose",children:r.jsxs(s,{title:"rotate / transpose",children:[r.jsx(s.Tab,{code:z1,language:"python"}),r.jsx(s.Tab,{code:U1,language:"javascript"}),r.jsx(s.Tab,{code:V1,language:"java"}),r.jsx(s.Tab,{code:G1,language:"cpp"}),r.jsx(s.Tab,{code:q1,language:"ruby"})]})})]})}const X1=`from typing import Any + + +class Array: + def __init__(self, size: int) -> None: + self.size = size + self.data = [None] * size + + def __getitem__(self, index: int) -> Any: + return self.data[index] + + def __setitem__(self, index: int, value: Any) -> None: + self.data[index] = value + + def __len__(self) -> int: + return len(self.data) + + def __repr__(self) -> str: + return repr(self.data) +`,Z1=`from typing import Any + + +class TreeNode: + def __init__(self, data: Any) -> None: + self.data = data + self.left = None + self.right = None + + +class BinaryTree: + def __init__(self) -> None: + self.root = None + + def insert(self, data: Any) -> None: + if not self.root: + self.root = TreeNode(data) + else: + self.insert_node(self.root, data) + + def insert_node(self, node: TreeNode | None, data: Any) -> TreeNode: + if not node: + return TreeNode(data) + + if not node.left: + node.left = TreeNode(data) + elif not node.right: + node.right = TreeNode(data) + else: + node.left = self.insert_node(node.left, data) + + return node + + def __repr__(self) -> str: + return 'Empty tree' if not self.root else self._print_tree(self.root, '', True) + + def _print_tree(self, node: TreeNode | None, prefix: str, is_left: bool) -> str: + if node is None: + return '' + + result = '' + result += self._print_tree(node.right, prefix + ('│ ' if is_left else ' '), False) + result += prefix + ('└── ' if is_left else '┌── ') + str(node.data) + '\\n' + result += self._print_tree(node.left, prefix + (' ' if is_left else '│ '), True) + + return result +`,ny=`from typing import Any + + +class TreeNode: + def __init__(self, data: Any) -> None: + self.data = data + self.left = None + self.right = None + + +class BinarySearchTree: + def __init__(self) -> None: + self.root = None + + def insert(self, data: Any) -> None: + if not self.root: + self.root = TreeNode(data) + else: + self.insert_node(self.root, data) + + def insert_node(self, node: TreeNode | None, data: Any) -> None: + if data < node.data: + if not node.left: + node.left = TreeNode(data) + else: + self.insert_node(node.left, data) + else: + if not node.right: + node.right = TreeNode(data) + else: + self.insert_node(node.right, data) + + def __repr__(self) -> str: + return 'Empty tree' if not self.root else self._print_tree(self.root, '', True) + + def _print_tree(self, node: TreeNode | None, prefix: str, is_left: bool) -> str: + if node is None: + return '' + + result = '' + result += self._print_tree(node.right, prefix + ('│ ' if is_left else ' '), False) + result += prefix + ('└── ' if is_left else '┌── ') + str(node.data) + '\\n' + result += self._print_tree(node.left, prefix + (' ' if is_left else '│ '), True) + + return result +`,ey=`from typing import Any + + +class ListNode: + def __init__(self, data: Any) -> None: + self.data = data + self.next = None + + def __repr__(self) -> str: + return f'[{self.data}]' + + +class LinkedList: + def __init__(self) -> None: + self.head = None + + def append(self, data: Any) -> None: + if not self.head: + self.head = ListNode(data) + return + + curr = self.head + + while curr.next: + curr = curr.next + + curr.next = ListNode(data) + + def delete(self, data: Any) -> None: + if not self.head: + return + + if self.head.data == data: + self.head = self.head.next + return + + prev = None + curr = self.head + + while curr: + if curr.data == data: + prev.next = curr.next + return + + prev = curr + curr = curr.next + + def reverse(self) -> None: + prev = None + curr = self.head + + while curr: + nxt = curr.next + curr.next = prev + prev = curr + curr = nxt + + self.head = prev + + def __repr__(self) -> str: + if not self.head: + return 'None' + + nodes = [] + node = self.head + + while node: + nodes.append(repr(node)) + node = node.next + + return ' -> '.join(nodes) + ' -> None' +`,ty=`from typing import Any + + +class ListNode: + def __init__(self, data: Any) -> None: + self.data = data + self.prev = None + self.next = None + + def __repr__(self) -> str: + return f'[{self.data}]' + + +class DoublyLinkedList: + def __init__(self) -> None: + self.head = None + + def append(self, data: Any) -> None: + if not self.head: + self.head = ListNode(data) + return + + curr = self.head + + while curr.next: + curr = curr.next + + new_node = ListNode(data) + curr.next = new_node + new_node.prev = curr + + def delete(self, data: Any) -> None: + if not self.head: + return + + if self.head.data == data: + self.head = self.head.next + if self.head: + self.head.prev = None + return + + curr = self.head + while curr: + if curr.data == data: + prev_node = curr.prev + prev_node.next = curr.next + if curr.next: + curr.next.prev = prev_node + return + curr = curr.next + + def reverse(self) -> None: + curr = self.head + prev = None + + while curr: + nxt = curr.next + curr.next = prev + curr.prev = nxt + prev = curr + curr = nxt + + self.head = prev + + def __repr__(self) -> str: + if not self.head: + return 'None' + + nodes = [] + curr = self.head + + while curr: + nodes.append(repr(curr)) + curr = curr.next + + return ' <-> '.join(nodes) + ' <-> None' +`,ry=`class Graph: + def __init__(self) -> None: + self.graph = {} + + def add_vertex(self, vertex: str) -> None: + if vertex not in self.graph: + self.graph[vertex] = [] + + def add_edge(self, a: str, b: str) -> None: + self.add_vertex(a) + self.add_vertex(b) + self.graph[a].append(b) + self.graph[b].append(a) + + def get_neighbors(self, vertex: str) -> list[str]: + return self.graph.get(vertex, []) + + def __repr__(self) -> str: + output = '' + + for vertex, neighbors in self.graph.items(): + output += f'{vertex} - {' - '.join(neighbors)}\\n' + + return output +`,iy=`from typing import Any + + +class HashMap: + def __init__(self) -> None: + self.size = 100000 + self.bucket = [None] * self.size + + def _hash(self, key: int) -> int: + return hash(key) % self.size + + def __setitem__(self, key: int, value: Any) -> None: + self.bucket[self._hash(key)] = value + + def __getitem__(self, key: int) -> Any: + return self.bucket[self._hash(key)] + + def __delitem__(self, key: int) -> None: + self.bucket[self._hash(key)] = None +`,ay=`class TrieNode: + def __init__(self) -> None: + self.children = {} + self.is_word = False + + +class Trie: + def __init__(self) -> None: + self.root = TrieNode() + + def build(self, words: list[str]) -> None: + for word in words: + self.insert(word) + + def insert(self, word: str) -> None: + node = self.root + + for char in word: + if char not in node.children: + node.children[char] = TrieNode() + node = node.children[char] + + node.is_word = True + + def search(self, word: str) -> bool: + node = self.root + + for char in word: + if char not in node.children: + return False + node = node.children[char] + + return node.is_word + + def starts_with(self, prefix: str) -> bool: + node = self.root + + for char in prefix: + if char not in node.children: + return False + node = node.children[char] + + return True + + def collect_words(self, node: TrieNode, prefix: str) -> list[str]: + words = [] + + if node.is_word: + words.append(prefix) + + for char, child_node in node.children.items(): + words.extend(self.collect_words(child_node, prefix + char)) + + return words + + def __repr__(self) -> str: + return 'Trie:\\n' + self._print_trie(self.root) + + def _print_trie(self, node: TrieNode | None, level: int = 0, prefix: str = '') -> str: + output = '' + prefix_str = ' ' * level + prefix + + if not node: + return output + + if node.is_word: + output += prefix_str + ' ├─ ' + '(*)' + '\\n' + + for i, (char, child_node) in enumerate(node.children.items()): + is_last = i == len(node.children) - 1 + marker = '└─ ' if is_last else '├─ ' + output += prefix_str + marker + char + '\\n' + output += self._print_trie(child_node, level + 1, ' │' if not is_last else ' ') + + return output +`,oy=`class UnionFind: + def __init__(self, n: int) -> None: + self.root = list(range(n)) + + def find(self, a: int) -> int: + return a if a == self.root[a] else self.find(self.root[a]) + + def union(self, a: int, b: int) -> None: + self.root[self.find(a)] = self.find(b) + + def connected(self, a: int, b: int) -> bool: + return self.find(a) == self.find(b) + + def __repr__(self) -> str: + n = len(self.root) + lines = [] + components = {} + + for i in range(n): + root = self.find(i) + + if root not in components: + components[root] = [] + + components[root].append(i) + + for component in components.values(): + lines.append(' - '.join(f'({node})' for node in component)) + + return '\\n'.join(lines) +`,sy=`class UnionFind: + def __init__(self, n: int) -> None: + self.root = list(range(n)) + self.rank = [1] * n + + def find(self, a: int) -> int: + return a if a == self.root[a] else self.find(self.root[a]) + + def union(self, a: int, b: int) -> None: + root_a = self.find(a) + root_b = self.find(b) + + if root_a != root_b: + if self.rank[root_a] < self.rank[root_b]: + self.root[root_a] = root_b + elif self.rank[root_a] > self.rank[root_b]: + self.root[root_b] = root_a + else: + self.root[root_b] = root_a + self.rank[root_a] += 1 + + def connected(self, a: int, b: int) -> bool: + return self.find(a) == self.find(b) + + def __repr__(self) -> str: + n = len(self.root) + lines = [] + components = {} + + for i in range(n): + root = self.find(i) + + if root not in components: + components[root] = [] + + components[root].append(i) + + for component in components.values(): + lines.append(' - '.join(f'({node})' for node in component)) + + return '\\n'.join(lines) +`,ly=`class Array { + constructor(size) { + this.size = size + this.data = new Array(size).fill(null) + } + + getItem(index) { + return this.data[index] + } + + setItem(index, value) { + this.data[index] = value + } + + get length() { + return this.data.length + } + + toString() { + return this.data.toString() + } +} +`,uy=`class TreeNode { + constructor(data) { + this.data = data + this.left = null + this.right = null + } +} + +class BinaryTree { + constructor() { + this.root = null + } + + insert(data) { + if (!this.root) { + this.root = new TreeNode(data) + } else { + this.insertNode(this.root, data) + } + } + + insertNode(node, data) { + if (!node) { + return new TreeNode(data) + } + + if (!node.left) { + node.left = new TreeNode(data) + } else if (!node.right) { + node.right = new TreeNode(data) + } else { + node.left = this.insertNode(node.left, data) + } + + return node + } + + toString() { + return this.root ? this.printTree(this.root, '', true) : 'Empty tree' + } + + printTree(node, prefix, isLeft) { + if (!node) { + return '' + } + + let result = '' + result += this.printTree(node.right, prefix + (isLeft ? '│ ' : ' '), false) + result += prefix + (isLeft ? '└── ' : '┌── ') + node.data + '\\n' + result += this.printTree(node.left, prefix + (isLeft ? ' ' : '│ '), true) + + return result + } +} +`,cy=`class TreeNode { + constructor(data) { + this.data = data + this.left = null + this.right = null + } +} + +class BinarySearchTree { + constructor() { + this.root = null + } + + insert(data) { + if (!this.root) { + this.root = new TreeNode(data) + } else { + this._insertNode(this.root, data) + } + } + + _insertNode(node, data) { + if (data < node.data) { + if (!node.left) { + node.left = new TreeNode(data) + } else { + this._insertNode(node.left, data) + } + } else { + if (!node.right) { + node.right = new TreeNode(data) + } else { + this._insertNode(node.right, data) + } + } + } + + toString() { + return this.root ? this._printTree(this.root, '', true) : 'Empty tree' + } + + _printTree(node, prefix, isLeft) { + if (!node) { + return '' + } + + let result = '' + result += this._printTree(node.right, prefix + (isLeft ? '│ ' : ' '), false) + result += prefix + (isLeft ? '└── ' : '┌── ') + node.data + '\\n' + result += this._printTree(node.left, prefix + (isLeft ? ' ' : '│ '), true) + + return result + } +} +`,dy=`class ListNode { + constructor(data) { + this.data = data + this.next = null + } + + toString() { + return \`[\${this.data}]\` + } +} + +class LinkedList { + constructor() { + this.head = null + } + + append(data) { + if (!this.head) { + this.head = new ListNode(data) + return + } + + let curr = this.head + while (curr.next) { + curr = curr.next + } + + curr.next = new ListNode(data) + } + + delete(data) { + if (!this.head) { + return + } + + if (this.head.data === data) { + this.head = this.head.next + return + } + + let prev = null + let curr = this.head + + while (curr) { + if (curr.data === data) { + prev.next = curr.next + return + } + + prev = curr + curr = curr.next + } + } + + reverse() { + let prev = null + let curr = this.head + + while (curr) { + let nxt = curr.next + curr.next = prev + prev = curr + curr = nxt + } + + this.head = prev + } + + toString() { + if (!this.head) { + return 'None' + } + + let nodes = [] + let node = this.head + + while (node) { + nodes.push(node.toString()) + node = node.next + } + + return nodes.join(' -> ') + ' -> None' + } +} +`,fy=`class ListNode { + constructor(data) { + this.data = data + this.prev = null + this.next = null + } + + toString() { + return \`[\${this.data}]\` + } +} + +class DoublyLinkedList { + constructor() { + this.head = null + } + + append(data) { + if (!this.head) { + this.head = new ListNode(data) + return + } + + let curr = this.head + while (curr.next) { + curr = curr.next + } + + const new_node = new ListNode(data) + curr.next = new_node + new_node.prev = curr + } + + delete(data) { + if (!this.head) { + return + } + + if (this.head.data === data) { + this.head = this.head.next + if (this.head) { + this.head.prev = null + } + return + } + + let curr = this.head + while (curr) { + if (curr.data === data) { + const prev_node = curr.prev + prev_node.next = curr.next + if (curr.next) { + curr.next.prev = prev_node + } + return + } + curr = curr.next + } + } + + reverse() { + let curr = this.head + let prev = null + + while (curr) { + const nxt = curr.next + curr.next = prev + curr.prev = nxt + prev = curr + curr = nxt + } + + this.head = prev + } + + toString() { + if (!this.head) { + return 'None' + } + + const nodes = [] + let curr = this.head + + while (curr) { + nodes.push(curr.toString()) + curr = curr.next + } + + return nodes.join(' <-> ') + ' <-> None' + } +} +`,py=`class Graph { + constructor() { + this.graph = {} + } + + addVertex(vertex) { + if (!(vertex in this.graph)) { + this.graph[vertex] = [] + } + } + + addEdge(a, b) { + this.addVertex(a) + this.addVertex(b) + this.graph[a].push(b) + this.graph[b].push(a) + } + + getNeighbors(vertex) { + return this.graph[vertex] || [] + } + + toString() { + let output = '' + + for (const [vertex, neighbors] of Object.entries(this.graph)) { + output += \`\${vertex} - \${neighbors.join(' - ')}\\n\` + } + + return output + } +} +`,hy=`class HashMap { + constructor() { + this.size = 100000 + this.bucket = new Array(this.size).fill(null) + } + + _hash(key) { + return key % this.size + } + + setItem(key, value) { + this.bucket[this._hash(key)] = value + } + + getItem(key) { + return this.bucket[this._hash(key)] + } + + deleteItem(key) { + this.bucket[this._hash(key)] = null + } +} +`,gy=`class TrieNode { + constructor() { + this.children = {} + this.isWord = false + } +} + +class Trie { + constructor() { + this.root = new TrieNode() + } + + build(words) { + for (const word of words) { + this.insert(word) + } + } + + insert(word) { + let node = this.root + + for (const char of word) { + if (!(char in node.children)) { + node.children[char] = new TrieNode() + } + node = node.children[char] + } + + node.isWord = true + } + + search(word) { + let node = this.root + + for (const char of word) { + if (!(char in node.children)) { + return false + } + node = node.children[char] + } + + return node.isWord + } + + startsWith(prefix) { + let node = this.root + + for (const char of prefix) { + if (!(char in node.children)) { + return false + } + node = node.children[char] + } + + return true + } + + collectWords(node, prefix) { + const words = [] + + if (node.isWord) { + words.push(prefix) + } + + for (const [char, childNode] of Object.entries(node.children)) { + words.push(...this.collectWords(childNode, prefix + char)) + } + + return words + } + + toString() { + return 'Trie:\\n' + this._printTrie(this.root) + } + + _printTrie(node, level = 0, prefix = '') { + let output = '' + const prefixStr = ' '.repeat(level) + prefix + + if (!node) { + return output + } + + if (node.isWord) { + output += prefixStr + ' ├─ ' + '(*)' + '\\n' + } + + const children = Object.entries(node.children) + children.forEach(([char, childNode], i) => { + const isLast = i === children.length - 1 + const marker = isLast ? '└─ ' : '├─ ' + output += prefixStr + marker + char + '\\n' + output += this._printTrie(childNode, level + 1, isLast ? ' ' : ' │') + }) + + return output + } +} +`,my=`class UnionFind { + constructor(n) { + this.root = [...Array(n).keys()] + } + + find(a) { + return a === this.root[a] ? a : this.find(this.root[a]) + } + + union(a, b) { + this.root[this.find(a)] = this.find(b) + } + + connected(a, b) { + return this.find(a) === this.find(b) + } + + toString() { + const n = this.root.length + const lines = [] + const components = {} + + for (let i = 0; i < n; i++) { + const root = this.find(i) + + if (!(root in components)) { + components[root] = [] + } + + components[root].push(i) + } + + for (const component of Object.values(components)) { + lines.push(\`(\${component.join(' - ')})\`) + } + + return lines.join('\\n') + } +} +`,vy=`class UnionFind { + constructor(n) { + this.root = [...Array(n).keys()] + this.rank = Array(n).fill(1) + } + + find(a) { + return a === this.root[a] ? a : this.find(this.root[a]) + } + + union(a, b) { + const rootA = this.find(a) + const rootB = this.find(b) + + if (rootA !== rootB) { + if (this.rank[rootA] < this.rank[rootB]) { + this.root[rootA] = rootB + } else if (this.rank[rootA] > this.rank[rootB]) { + this.root[rootB] = rootA + } else { + this.root[rootB] = rootA + this.rank[rootA]++ + } + } + } + + connected(a, b) { + return this.find(a) === this.find(b) + } + + toString() { + const n = this.root.length + const lines = [] + const components = {} + + for (let i = 0; i < n; i++) { + const root = this.find(i) + + if (!(root in components)) { + components[root] = [] + } + + components[root].push(i) + } + + for (const component of Object.values(components)) { + lines.push(component.map(node => \`(\${node})\`).join(' - ')) + } + + return lines.join('\\n') + } +} +`,yy=`public class Array { + private int size; + private T[] data; + + @SuppressWarnings("unchecked") + public Array(int size) { + this.size = size; + this.data = (T[]) new Object[size]; + } + + public T get(int index) { + if (index < 0 || index >= size) { + throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size); + } + return data[index]; + } + + public void set(int index, T value) { + if (index < 0 || index >= size) { + throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size); + } + data[index] = value; + } + + public int size() { + return size; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("["); + + for (int i = 0; i < size; i++) { + sb.append(data[i]); + if (i < size - 1) { + sb.append(", "); + } + } + + sb.append("]"); + return sb.toString(); + } +} +`,xy=`public class TreeNode { + T data; + TreeNode left; + TreeNode right; + + public TreeNode(T data) { + this.data = data; + left = null; + right = null; + } +} + +public class BinaryTree { + TreeNode root; + + public BinaryTree() { + root = null; + } + + public void insert(T data) { + root = insertNode(root, data); + } + + private TreeNode insertNode(TreeNode node, T data) { + if (node == null) { + return new TreeNode<>(data); + } + + if (node.left == null) { + node.left = new TreeNode<>(data); + } else if (node.right == null) { + node.right = new TreeNode<>(data); + } else { + node.left = insertNode(node.left, data); + } + + return node; + } + + @Override + public String toString() { + return root == null ? "Empty tree" : printTree(root, "", true); + } + + private String printTree(TreeNode node, String prefix, boolean isLeft) { + if (node == null) { + return ""; + } + + StringBuilder sb = new StringBuilder(); + sb.append(printTree(node.right, prefix + (isLeft ? "│ " : " "), false)); + sb.append(prefix).append(isLeft ? "└── " : "┌── ").append(node.data).append("\\n"); + sb.append(printTree(node.left, prefix + (isLeft ? " " : "│ "), true)); + + return sb.toString(); + } +} +`,_y=`public class TreeNode> { + T data; + TreeNode left; + TreeNode right; + + public TreeNode(T data) { + this.data = data; + left = null; + right = null; + } +} + +public class BinarySearchTree> { + TreeNode root; + + public BinarySearchTree() { + root = null; + } + + public void insert(T data) { + root = insertNode(root, data); + } + + private TreeNode insertNode(TreeNode node, T data) { + if (node == null) { + return new TreeNode<>(data); + } + + if (data.compareTo(node.data) < 0) { + node.left = insertNode(node.left, data); + } else if (data.compareTo(node.data) > 0) { + node.right = insertNode(node.right, data); + } + + return node; + } + + @Override + public String toString() { + return root == null ? "Empty tree" : printTree(root, "", true); + } + + private String printTree(TreeNode node, String prefix, boolean isLeft) { + if (node == null) { + return ""; + } + + StringBuilder sb = new StringBuilder(); + sb.append(printTree(node.right, prefix + (isLeft ? "│ " : " "), false)); + sb.append(prefix).append(isLeft ? "└── " : "┌── ").append(node.data).append("\\n"); + sb.append(printTree(node.left, prefix + (isLeft ? " " : "│ "), true)); + + return sb.toString(); + } +} +`,by=`class ListNode { + public int data; + public ListNode next; + + public ListNode(int data) { + this.data = data; + this.next = null; + } + + @Override + public String toString() { + return "[" + data + "]"; + } +} + +class LinkedList { + private ListNode head; + + public LinkedList() { + this.head = null; + } + + public void append(int data) { + if (head == null) { + head = new ListNode(data); + return; + } + + ListNode current = head; + + while (current.next != null) { + current = current.next; + } + + current.next = new ListNode(data); + } + + public void delete(int data) { + if (head == null) { + return; + } + + if (head.data == data) { + head = head.next; + return; + } + + ListNode prev = null; + ListNode current = head; + + while (current != null) { + if (current.data == data) { + prev.next = current.next; + return; + } + prev = current; + current = current.next; + } + } + + public void reverse() { + ListNode prev = null; + ListNode current = head; + + while (current != null) { + ListNode next = current.next; + current.next = prev; + prev = current; + current = next; + } + + head = prev; + } + + @Override + public String toString() { + if (head == null) { + return "None"; + } + + StringBuilder result = new StringBuilder(); + ListNode current = head; + + while (current != null) { + result.append(current.toString()).append(" -> "); + current = current.next; + } + + result.append("None"); + return result.toString(); + } +} +`,wy=`public class ListNode { + T data; + ListNode prev; + ListNode next; + + public ListNode(T data) { + this.data = data; + prev = null; + next = null; + } + + @Override + public String toString() { + return "[" + data + "]"; + } +} + +public class DoublyLinkedList { + ListNode head; + + public DoublyLinkedList() { + head = null; + } + + public void append(T data) { + if (head == null) { + head = new ListNode<>(data); + return; + } + + ListNode curr = head; + + while (curr.next != null) { + curr = curr.next; + } + + ListNode newNode = new ListNode<>(data); + curr.next = newNode; + newNode.prev = curr; + } + + public void delete(T data) { + if (head == null) { + return; + } + + if (head.data.equals(data)) { + head = head.next; + if (head != null) { + head.prev = null; + } + return; + } + + ListNode curr = head; + + while (curr != null) { + if (curr.data.equals(data)) { + ListNode prevNode = curr.prev; + prevNode.next = curr.next; + if (curr.next != null) { + curr.next.prev = prevNode; + } + return; + } + curr = curr.next; + } + } + + public void reverse() { + ListNode curr = head; + ListNode prev = null; + + while (curr != null) { + ListNode nextNode = curr.next; + curr.next = prev; + curr.prev = nextNode; + prev = curr; + curr = nextNode; + } + + head = prev; + } + + @Override + public String toString() { + if (head == null) { + return "None"; + } + + StringBuilder sb = new StringBuilder(); + ListNode curr = head; + + while (curr != null) { + sb.append(curr.toString()).append(" <-> "); + curr = curr.next; + } + + sb.append("None"); + return sb.toString(); + } +} +`,Sy=`import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +public class Graph { + Map> graph; + + public Graph() { + graph = new HashMap<>(); + } + + public void addVertex(String vertex) { + if (!graph.containsKey(vertex)) { + graph.put(vertex, new ArrayList<>()); + } + } + + public void addEdge(String a, String b) { + addVertex(a); + addVertex(b); + graph.get(a).add(b); + graph.get(b).add(a); + } + + public List getNeighbors(String vertex) { + return graph.getOrDefault(vertex, new ArrayList<>()); + } + + @Override + public String toString() { + StringBuilder output = new StringBuilder(); + + for (Map.Entry> entry : graph.entrySet()) { + output.append(entry.getKey()).append(" - ").append(String.join(" - ", entry.getValue())).append("\\n"); + } + + return output.toString(); + } +} +`,Ty=`public class HashMap { + private int size; + private Object[] bucket; + + public HashMap() { + size = 100000; + bucket = new Object[size]; + } + + private int hash(int key) { + return key % size; + } + + public void put(int key, Object value) { + bucket[hash(key)] = value; + } + + public Object get(int key) { + return bucket[hash(key)]; + } + + public void remove(int key) { + bucket[hash(key)] = null; + } +} +`,jy=`import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +class TrieNode { + Map children; + boolean isWord; + + public TrieNode() { + this.children = new HashMap<>(); + this.isWord = false; + } +} + +class Trie { + TrieNode root; + + public Trie() { + this.root = new TrieNode(); + } + + public void build(String[] words) { + for (String word : words) { + insert(word); + } + } + + public void insert(String word) { + TrieNode node = root; + + for (char ch : word.toCharArray()) { + if (!node.children.containsKey(ch)) { + node.children.put(ch, new TrieNode()); + } + node = node.children.get(ch); + } + + node.isWord = true; + } + + public boolean search(String word) { + TrieNode node = root; + + for (char ch : word.toCharArray()) { + if (!node.children.containsKey(ch)) { + return false; + } + node = node.children.get(ch); + } + + return node.isWord; + } + + public boolean startsWith(String prefix) { + TrieNode node = root; + + for (char ch : prefix.toCharArray()) { + if (!node.children.containsKey(ch)) { + return false; + } + node = node.children.get(ch); + } + + return true; + } + + public List collectWords(TrieNode node, String prefix) { + List words = new ArrayList<>(); + + if (node.isWord) { + words.add(prefix); + } + + for (Map.Entry entry : node.children.entrySet()) { + words.addAll(collectWords(entry.getValue(), prefix + entry.getKey())); + } + + return words; + } + + @Override + public String toString() { + return "Trie:\\n" + printTrie(root, 0, null); + } + + private String printTrie(TrieNode node, int level, String prefix) { + StringBuilder output = new StringBuilder(); + String prefixStr = "\\t".repeat(level) + prefix; + + if (node == null) { + return output.toString(); + } + + if (node.isWord) { + output.append(prefixStr).append(" ├─ ").append("(*)").append("\\n"); + } + + int i = 0; + + for (Map.Entry entry : node.children.entrySet()) { + boolean isLast = i == node.children.size() - 1; + String marker = isLast ? "└─ " : "├─ "; + output.append(prefixStr).append(marker).append(entry.getKey()).append("\\n"); + output.append(printTrie(entry.getValue(), level + 1, isLast ? " │" : " ")); + i++; + } + + return output.toString(); + } +} +`,ky=`import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +public class UnionFind { + private int[] root; + + public UnionFind(int n) { + this.root = new int[n]; + for (int i = 0; i < n; i++) { + this.root[i] = i; + } + } + + public int find(int a) { + if (a == root[a]) { + return a; + } + return root[a] = find(root[a]); + } + + public void union(int a, int b) { + root[find(a)] = find(b); + } + + public boolean connected(int a, int b) { + return find(a) == find(b); + } + + @Override + public String toString() { + int n = root.length; + List> components = new ArrayList<>(); + Map> componentMap = new HashMap<>(); + + for (int i = 0; i < n; i++) { + int root = find(i); + + if (!componentMap.containsKey(root)) { + componentMap.put(root, new ArrayList<>()); + } + + componentMap.get(root).add(i); + } + + StringBuilder sb = new StringBuilder(); + + for (List component : componentMap.values()) { + sb.append(" - ").append(component); + } + + return sb.toString(); + } +} +`,Ey=`import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +class UnionFind { + int[] root; + int[] rank; + + public UnionFind(int n) { + this.root = new int[n]; + this.rank = new int[n]; + + for (int i = 0; i < n; i++) { + this.root[i] = i; + this.rank[i] = 1; + } + } + + public int find(int a) { + if (a == root[a]) { + return a; + } + return root[a] = find(root[a]); + } + + public void union(int a, int b) { + int rootA = find(a); + int rootB = find(b); + + if (rootA != rootB) { + if (rank[rootA] < rank[rootB]) { + root[rootA] = rootB; + } else if (rank[rootA] > rank[rootB]) { + root[rootB] = rootA; + } else { + root[rootB] = rootA; + rank[rootA]++; + } + } + } + + public boolean connected(int a, int b) { + return find(a) == find(b); + } + + @Override + public String toString() { + int n = root.length; + Map> componentMap = new HashMap<>(); + + for (int i = 0; i < n; i++) { + int root = find(i); + + if (!componentMap.containsKey(root)) { + componentMap.put(root, new ArrayList<>()); + } + + componentMap.get(root).add(i); + } + + StringBuilder sb = new StringBuilder(); + + for (List component : componentMap.values()) { + sb.append(" - ").append(component); + } + + return sb.toString(); + } +} +`,Ny=`#include +#include + +using namespace std; + + +template +class Array { +private: + T* data; + size_t size; + +public: + Array(size_t size) : size(size) { + data = new T[size]; + } + + ~Array() { + delete[] data; + } + + T& operator[](size_t index) { + if (index >= size) { + throw std::out_of_range("Index out of range"); + } + return data[index]; + } + + const T& operator[](size_t index) const { + if (index >= size) { + throw out_of_range("Index out of range"); + } + return data[index]; + } + + size_t len() const { + return size; + } + + friend ostream& operator<<(ostream& os, const Array& arr) { + os << "["; + for (size_t i = 0; i < arr.size; ++i) { + os << arr.data[i]; + if (i < arr.size - 1) { + os << ", "; + } + } + os << "]"; + return os; + } +}; +`,Oy=`#include +#include +#include + +using namespace std; + + +template +class BinaryTree { +private: + shared_ptr> root; + +public: + BinaryTree() : root(nullptr) {} + + void insert(const T& data) { + root = insertNode(root, data); + } + + shared_ptr> insertNode(shared_ptr> node, const T& data) { + if (!node) { + return make_shared>(data); + } + + if (!node->left) { + node->left = make_shared>(data); + } else if (!node->right) { + node->right = make_shared>(data); + } else { + node->left = insertNode(node->left, data); + } + + return node; + } + + string printTree() const { + return root ? printNode(root, "", true) : "Empty tree"; + } + + string printNode(const shared_ptr>& node, const string& prefix, bool isLeft) const { + string result; + if (node) { + result += printNode(node->right, prefix + (isLeft ? "│ " : " "), false); + result += prefix + (isLeft ? "└── " : "┌── ") + to_string(node->data) + "\\n"; + result += printNode(node->left, prefix + (isLeft ? " " : "│ "), true); + } + return result; + } +}; +`,Ay=`#include +#include +#include + +using namespace std; + + +template +class BinarySearchTree { +private: + shared_ptr> root; + +public: + BinarySearchTree() : root(nullptr) {} + + void insert(const T& data) { + if (!root) { + root = make_shared>(data); + } else { + insertNode(root, data); + } + } + + void insertNode(shared_ptr>& node, const T& data) { + if (data < node->data) { + if (!node->left) { + node->left = make_shared>(data); + } else { + insertNode(node->left, data); + } + } else { + if (!node->right) { + node->right = make_shared>(data); + } else { + insertNode(node->right, data); + } + } + } + + string printTree() const { + return root ? printNode(root, "", true) : "Empty tree"; + } + + string printNode(const shared_ptr>& node, const string& prefix, bool isLeft) const { + string result; + if (node) { + result += printNode(node->right, prefix + (isLeft ? "│ " : " "), false); + result += prefix + (isLeft ? "└── " : "┌── ") + to_string(node->data) + "\\n"; + result += printNode(node->left, prefix + (isLeft ? " " : "│ "), true); + } + return result; + } +}; +`,Cy=`#include + +using namespace std; + + +template +class ListNode { +public: + T data; + ListNode* next; + + ListNode(const T& data) : data(data), next(nullptr) {} +}; + +template +class LinkedList { +private: + ListNode* head; + +public: + LinkedList() : head(nullptr) {} + + void append(const T& data) { + if (!head) { + head = new ListNode(data); + return; + } + + ListNode* curr = head; + + while (curr->next) { + curr = curr->next; + } + + curr->next = new ListNode(data); + } + + void deleteNode(const T& data) { + if (!head) { + return; + } + + if (head->data == data) { + ListNode* temp = head; + head = head->next; + delete temp; + return; + } + + ListNode* prev = nullptr; + ListNode* curr = head; + + while (curr) { + if (curr->data == data) { + prev->next = curr->next; + delete curr; + return; + } + + prev = curr; + curr = curr->next; + } + } + + void reverse() { + ListNode* prev = nullptr; + ListNode* curr = head; + + while (curr) { + ListNode* nextNode = curr->next; + curr->next = prev; + prev = curr; + curr = nextNode; + } + + head = prev; + } + + ~LinkedList() { + ListNode* curr = head; + + while (curr) { + ListNode* temp = curr; + curr = curr->next; + delete temp; + } + } + + void display() { + ListNode* curr = head; + + while (curr) { + cout << "[" << curr->data << "]"; + if (curr->next) { + cout << " -> "; + } + curr = curr->next; + } + + cout << " -> None" << endl; + } +}; +`,Ly=`#include +#include +#include + +using namespace std; + + +template +class ListNode { +public: + T data; + shared_ptr> prev; + shared_ptr> next; + + ListNode(const T& data) : data(data), prev(nullptr), next(nullptr) {} +}; + +template +class DoublyLinkedList { +private: + shared_ptr> head; + +public: + DoublyLinkedList() : head(nullptr) {} + + void append(const T& data) { + if (!head) { + head = make_shared>(data); + return; + } + + auto curr = head; + + while (curr->next) { + curr = curr->next; + } + + auto new_node = make_shared>(data); + curr->next = new_node; + new_node->prev = curr; + } + + void deleteNode(const T& data) { + if (!head) { + return; + } + + if (head->data == data) { + head = head->next; + if (head) { + head->prev = nullptr; + } + return; + } + + auto curr = head; + + while (curr) { + if (curr->data == data) { + auto prev_node = curr->prev; + prev_node->next = curr->next; + + if (curr->next) { + curr->next->prev = prev_node; + } + + return; + } + curr = curr->next; + } + } + + void reverse() { + auto curr = head; + shared_ptr> prev = nullptr; + + while (curr) { + auto next_node = curr->next; + curr->next = prev; + curr->prev = next_node; + prev = curr; + curr = next_node; + } + + head = prev; + } + + string toString() const { + if (!head) { + return "None"; + } + + string result; + auto curr = head; + + while (curr) { + result += "[" + to_string(curr->data) + "]"; + + if (curr->next) { + result += " <-> "; + } + + curr = curr->next; + } + + result += " <-> None"; + return result; + } +}; +`,Ry=`#include +#include +#include +#include + +using namespace std; + + +class Graph { +private: + unordered_map> graph; + +public: + Graph() {} + + void addVertex(const string& vertex) { + if (graph.find(vertex) == graph.end()) { + graph[vertex] = {}; + } + } + + void addEdge(const string& a, const string& b) { + addVertex(a); + addVertex(b); + graph[a].push_back(b); + graph[b].push_back(a); + } + + vector getNeighbors(const string& vertex) { + return graph[vertex]; + } + + string toString() { + string output; + + for (const auto& [vertex, neighbors] : graph) { + output += vertex + " - "; + + for (const auto& neighbor : neighbors) { + output += neighbor + " - "; + } + + output.pop_back(); + output.pop_back(); + output += "\\n"; + } + + return output; + } +}; +`,Py=`#include +#include + +using namespace std; + + +template +class HashMap { +private: + const size_t size = 100000; + vector> buckets[size]; + + size_t hash(const KeyType& key) { + return hash{}(key) % size; + } + +public: + HashMap() {} + + void setItem(const KeyType& key, const ValueType& value) { + size_t index = hash(key); + + for (auto& pair : buckets[index]) { + if (pair.first == key) { + pair.second = value; + return; + } + } + + buckets[index].emplace_back(key, value); + } + + ValueType& getItem(const KeyType& key) { + size_t index = hash(key); + + for (auto& pair : buckets[index]) { + if (pair.first == key) { + return pair.second; + } + } + + throw out_of_range("Key not found"); + } + + void delItem(const KeyType& key) { + size_t index = hash(key); + + for (auto it = buckets[index].begin(); it != buckets[index].end(); ++it) { + if (it->first == key) { + buckets[index].erase(it); + return; + } + } + } +}; +`,My=`#include +#include +#include +#include + +using namespace std; + + +class TrieNode { +public: + unordered_map> children; + bool is_word; + + TrieNode() : is_word(false) {} +}; + +class Trie { +private: + shared_ptr root; + +public: + Trie() : root(make_shared()) {} + + void build(const vector& words) { + for (const auto& word : words) { + insert(word); + } + } + + void insert(const string& word) { + shared_ptr node = root; + + for (char ch : word) { + if (node->children.find(ch) == node->children.end()) { + node->children[ch] = make_shared(); + } + node = node->children[ch]; + } + + node->is_word = true; + } + + bool search(const string& word) { + shared_ptr node = root; + + for (char ch : word) { + if (node->children.find(ch) == node->children.end()) { + return false; + } + node = node->children[ch]; + } + + return node->is_word; + } + + bool startsWith(const string& prefix) { + shared_ptr node = root; + + for (char ch : prefix) { + if (node->children.find(ch) == node->children.end()) { + return false; + } + node = node->children[ch]; + } + + return true; + } + + vector collectWords(shared_ptr node, const string& prefix) { + vector words; + + if (node->is_word) { + words.push_back(prefix); + } + + for (const auto& [ch, childNode] : node->children) { + auto childWords = collectWords(childNode, prefix + ch); + words.insert(words.end(), childWords.begin(), childWords.end()); + } + + return words; + } + + vector collectWords() { + return collectWords(root, ""); + } +}; +`,Iy=`#include +#include +#include + +using namespace std; + + +class UnionFind { +private: + vector root; + +public: + UnionFind(int n) : root(n) { + for (int i = 0; i < n; ++i) { + root[i] = i; + } + } + + int find(int a) { + return a == root[a] ? a : root[a] = find(root[a]); + } + + void unionSets(int a, int b) { + root[find(a)] = find(b); + } + + bool connected(int a, int b) { + return find(a) == find(b); + } + + string toString() { + int n = root.size(); + vector> components(n); + + for (int i = 0; i < n; ++i) { + components[find(i)].push_back(i); + } + + string result; + + for (const auto& component : components) { + if (!component.empty()) { + for (int node : component) { + result += "(" + to_string(node) + ") - "; + } + result.pop_back(); + result.pop_back(); + result += "\\n"; + } + } + + return result; + } +}; +`,Dy=`#include +#include +#include + +using namespace std; + + +class UnionFind { +private: + vector root; + vector rank; + +public: + UnionFind(int n) : root(n), rank(n, 1) { + for (int i = 0; i < n; ++i) { + root[i] = i; + } + } + + int find(int a) { + return a == root[a] ? a : root[a] = find(root[a]); + } + + void unionSets(int a, int b) { + int rootA = find(a); + int rootB = find(b); + + if (rootA != rootB) { + if (rank[rootA] < rank[rootB]) { + root[rootA] = rootB; + } else if (rank[rootA] > rank[rootB]) { + root[rootB] = rootA; + } else { + root[rootB] = rootA; + rank[rootA]++; + } + } + } + + bool connected(int a, int b) { + return find(a) == find(b); + } + + string toString() { + int n = root.size(); + vector> components(n); + + for (int i = 0; i < n; ++i) { + components[find(i)].push_back(i); + } + + string result; + + for (const auto& component : components) { + if (!component.empty()) { + for (int node : component) { + result += "(" + to_string(node) + ") - "; + } + result.pop_back(); + result.pop_back(); + result += "\\n"; + } + } + + return result; + } +}; +`,zy=` +class Array + def initialize(size) + @size = size + @data = Array.new(size) + end + + def [](index) + @data[index] + end + + def []=(index, value) + @data[index] = value + end + + def length + @data.length + end + + def to_s + @data.to_s + end +end +`,By=`class TreeNode + attr_accessor :data, :left, :right + + def initialize(data) + @data = data + @left = nil + @right = nil + end +end + +class BinaryTree + attr_accessor :root + + def initialize + @root = nil + end + + def insert(data) + if @root.nil? + @root = TreeNode.new(data) + else + insert_node(@root, data) + end + end + + def insert_node(node, data) + return TreeNode.new(data) if node.nil? + + if node.left.nil? + node.left = TreeNode.new(data) + elsif node.right.nil? + node.right = TreeNode.new(data) + else + node.left = insert_node(node.left, data) + end + + node + end + + def to_s + @root.nil? ? 'Empty tree' : print_tree(@root, '', true) + end + + private + + def print_tree(node, prefix, is_left) + return '' if node.nil? + + result = '' + result += print_tree(node.right, prefix + (is_left ? '│ ' : ' '), false) + result += prefix + (is_left ? '└── ' : '┌── ') + node.data.to_s + "\\n" + result += print_tree(node.left, prefix + (is_left ? ' ' : '│ '), true) + + result + end +end +`,Fy=`class TreeNode + attr_accessor :data, :left, :right + + def initialize(data) + @data = data + @left = nil + @right = nil + end +end + +class BinarySearchTree + attr_accessor :root + + def initialize + @root = nil + end + + def insert(data) + if @root.nil? + @root = TreeNode.new(data) + else + insert_node(@root, data) + end + end + + def insert_node(node, data) + if data < node.data + if node.left.nil? + node.left = TreeNode.new(data) + else + insert_node(node.left, data) + end + else + if node.right.nil? + node.right = TreeNode.new(data) + else + insert_node(node.right, data) + end + end + end + + def to_s + @root.nil? ? 'Empty tree' : print_tree(@root, '', true) + end + + private + + def print_tree(node, prefix, is_left) + return '' if node.nil? + + result = '' + result += print_tree(node.right, prefix + (is_left ? '│ ' : ' '), false) + result += prefix + (is_left ? '└── ' : '┌── ') + node.data.to_s + "\\n" + result += print_tree(node.left, prefix + (is_left ? ' ' : '│ '), true) + + result + end +end +`,Uy=`class ListNode + attr_accessor :data, :next + + def initialize(data) + @data = data + @next = nil + end + + def to_s + "[#{@data}]" + end +end + +class LinkedList + attr_accessor :head + + def initialize + @head = nil + end + + def append(data) + if @head.nil? + @head = ListNode.new(data) + return + end + + curr = @head + curr = curr.next while curr.next + curr.next = ListNode.new(data) + end + + def delete(data) + return if @head.nil? + + if @head.data == data + @head = @head.next + return + end + + prev = nil + curr = @head + + while curr + if curr.data == data + prev.next = curr.next + return + end + prev = curr + curr = curr.next + end + end + + def reverse + prev = nil + curr = @head + + while curr + nxt = curr.next + curr.next = prev + prev = curr + curr = nxt + end + + @head = prev + end + + def to_s + return 'nil' if @head.nil? + + nodes = [] + curr = @head + while curr + nodes << curr.to_s + curr = curr.next + end + + nodes.join(' -> ') + ' -> nil' + end +end +`,Hy=`class ListNode + attr_accessor :data, :prev, :next + + def initialize(data) + @data = data + @prev = nil + @next = nil + end + + def to_s + "[#{@data}]" + end +end + +class DoublyLinkedList + attr_accessor :head + + def initialize + @head = nil + end + + def append(data) + if @head.nil? + @head = ListNode.new(data) + return + end + + curr = @head + curr = curr.next while curr.next + + new_node = ListNode.new(data) + curr.next = new_node + new_node.prev = curr + end + + def delete(data) + return if @head.nil? + + if @head.data == data + @head = @head.next + @head.prev = nil if @head + return + end + + curr = @head + while curr + if curr.data == data + prev_node = curr.prev + prev_node.next = curr.next + curr.next.prev = prev_node if curr.next + return + end + curr = curr.next + end + end + + def reverse + curr = @head + prev = nil + + while curr + nxt = curr.next + curr.next = prev + curr.prev = nxt + prev = curr + curr = nxt + end + + @head = prev + end + + def to_s + return 'None' if @head.nil? + + nodes = [] + curr = @head + while curr + nodes << curr.to_s + curr = curr.next + end + + nodes.join(' <-> ') + ' <-> None' + end +end +`,Wy=`class Graph + attr_accessor :graph + + def initialize + @graph = {} + end + + def add_vertex(vertex) + @graph[vertex] ||= [] + end + + def add_edge(a, b) + add_vertex(a) + add_vertex(b) + @graph[a] << b + @graph[b] << a + end + + def get_neighbors(vertex) + @graph.fetch(vertex, []) + end + + def to_s + output = '' + @graph.each do |vertex, neighbors| + output += "#{vertex} - #{neighbors.join(' - ')}\\n" + end + output + end +end +`,Vy=`class HashMap + def initialize + @size = 100_000 + @bucket = Array.new(@size) + end + + def hash_key(key) + key.hash % @size + end + + def []=(key, value) + @bucket[hash_key(key)] = value + end + + def [](key) + @bucket[hash_key(key)] + end + + def delete(key) + @bucket[hash_key(key)] = nil + end +end +`,$y=`class TrieNode + attr_accessor :children, :is_word + + def initialize + @children = {} + @is_word = false + end +end + +class Trie + attr_accessor :root + + def initialize + @root = TrieNode.new + end + + def build(words) + words.each { |word| insert(word) } + end + + def insert(word) + node = @root + word.each_char do |char| + node.children[char] ||= TrieNode.new + node = node.children[char] + end + node.is_word = true + end + + def search(word) + node = @root + word.each_char do |char| + return false unless node.children.key?(char) + node = node.children[char] + end + node.is_word + end + + def starts_with(prefix) + node = @root + prefix.each_char do |char| + return false unless node.children.key?(char) + node = node.children[char] + end + true + end + + def collect_words(node = @root, prefix = '') + words = [] + words << prefix if node.is_word + node.children.each do |char, child_node| + words.concat(collect_words(child_node, prefix + char)) + end + words + end + + def to_s + "Trie:\\n" + print_trie(@root) + end + + private + + def print_trie(node, level = 0, prefix = '') + return '' unless node + + output = '' + prefix_str = ' ' * level + prefix + output += prefix_str + ' ├─ (*)' + "\\n" if node.is_word + + node.children.each_with_index do |(char, child_node), i| + is_last = i == node.children.size - 1 + marker = is_last ? '└─ ' : '├─ ' + output += prefix_str + marker + char + "\\n" + new_prefix = is_last ? ' ' : ' │' + output += print_trie(child_node, level + 1, new_prefix) + end + + output + end +end +`,Ky=`class UnionFind + attr_accessor :root + + def initialize(n) + @root = Array.new(n) { |i| i } + end + + def find(a) + return a if a == @root[a] + + @root[a] = find(@root[a]) + end + + def union(a, b) + @root[find(a)] = find(b) + end + + def connected(a, b) + find(a) == find(b) + end + + def to_s + n = @root.size + components = Hash.new { |h, k| h[k] = [] } + + (0...n).each do |i| + root_i = find(i) + components[root_i] << i + end + + components.values.map { |comp| comp.map { |node| "(#{node})" }.join(' - ') }.join("\\n") + end +end +`,Gy=`class UnionFind + attr_accessor :root, :rank + + def initialize(n) + @root = Array.new(n) { |i| i } + @rank = Array.new(n, 1) + end + + def find(a) + return a if a == @root[a] + + @root[a] = find(@root[a]) + end + + def union(a, b) + root_a = find(a) + root_b = find(b) + + return if root_a == root_b + + if @rank[root_a] < @rank[root_b] + @root[root_a] = root_b + elsif @rank[root_a] > @rank[root_b] + @root[root_b] = root_a + else + @root[root_b] = root_a + @rank[root_a] += 1 + end + end + + def connected(a, b) + find(a) == find(b) + end + + def to_s + n = @root.size + components = Hash.new { |h, k| h[k] = [] } + + (0...n).each do |i| + root_i = find(i) + components[root_i] << i + end + + components.values.map { |comp| comp.map { |node| "(#{node})" }.join(' - ') }.join("\\n") + end +end +`;function Jy(){return r.jsxs("div",{className:Zn.container,children:[r.jsx("h2",{className:Zn.sectionHeader,children:"Data Structures"}),r.jsx("section",{id:"ds-array",children:r.jsxs(s,{title:"array",children:[r.jsx(s.Tab,{code:X1,language:"python"}),r.jsx(s.Tab,{code:ly,language:"javascript"}),r.jsx(s.Tab,{code:yy,language:"java"}),r.jsx(s.Tab,{code:Ny,language:"cpp"}),r.jsx(s.Tab,{code:zy,language:"ruby"})]})}),r.jsx("section",{id:"ds-hash-map",children:r.jsxs(s,{title:"hash map",children:[r.jsx(s.Tab,{code:iy,language:"python"}),r.jsx(s.Tab,{code:hy,language:"javascript"}),r.jsx(s.Tab,{code:Ty,language:"java"}),r.jsx(s.Tab,{code:Py,language:"cpp"}),r.jsx(s.Tab,{code:Vy,language:"ruby"})]})}),r.jsx("section",{id:"ds-linked-list",children:r.jsxs(s,{title:"linked list",children:[r.jsx(s.Tab,{code:ey,language:"python"}),r.jsx(s.Tab,{code:dy,language:"javascript"}),r.jsx(s.Tab,{code:by,language:"java"}),r.jsx(s.Tab,{code:Cy,language:"cpp"}),r.jsx(s.Tab,{code:Uy,language:"ruby"})]})}),r.jsx("section",{id:"ds-doubly-linked-list",children:r.jsxs(s,{title:"doubly linked list",children:[r.jsx(s.Tab,{code:ty,language:"python"}),r.jsx(s.Tab,{code:fy,language:"javascript"}),r.jsx(s.Tab,{code:wy,language:"java"}),r.jsx(s.Tab,{code:Ly,language:"cpp"}),r.jsx(s.Tab,{code:Hy,language:"ruby"})]})}),r.jsx("section",{id:"ds-binary-tree",children:r.jsxs(s,{title:"binary tree",children:[r.jsx(s.Tab,{code:Z1,language:"python"}),r.jsx(s.Tab,{code:uy,language:"javascript"}),r.jsx(s.Tab,{code:xy,language:"java"}),r.jsx(s.Tab,{code:Oy,language:"cpp"}),r.jsx(s.Tab,{code:By,language:"ruby"})]})}),r.jsx("section",{id:"ds-binary-search-tree",children:r.jsxs(s,{title:"binary search tree",children:[r.jsx(s.Tab,{code:ny,language:"python"}),r.jsx(s.Tab,{code:cy,language:"javascript"}),r.jsx(s.Tab,{code:_y,language:"java"}),r.jsx(s.Tab,{code:Ay,language:"cpp"}),r.jsx(s.Tab,{code:Fy,language:"ruby"})]})}),r.jsx("section",{id:"ds-graph",children:r.jsxs(s,{title:"graph",children:[r.jsx(s.Tab,{code:ry,language:"python"}),r.jsx(s.Tab,{code:py,language:"javascript"}),r.jsx(s.Tab,{code:Sy,language:"java"}),r.jsx(s.Tab,{code:Ry,language:"cpp"}),r.jsx(s.Tab,{code:Wy,language:"ruby"})]})}),r.jsx("section",{id:"ds-union-find",children:r.jsxs(s,{title:"union find",children:[r.jsx(s.Tab,{code:oy,language:"python"}),r.jsx(s.Tab,{code:my,language:"javascript"}),r.jsx(s.Tab,{code:ky,language:"java"}),r.jsx(s.Tab,{code:Iy,language:"cpp"}),r.jsx(s.Tab,{code:Ky,language:"ruby"})]})}),r.jsx("section",{id:"ds-union-find-optimized",children:r.jsxs(s,{title:"union find optimized",children:[r.jsx(s.Tab,{code:sy,language:"python"}),r.jsx(s.Tab,{code:vy,language:"javascript"}),r.jsx(s.Tab,{code:Ey,language:"java"}),r.jsx(s.Tab,{code:Dy,language:"cpp"}),r.jsx(s.Tab,{code:Gy,language:"ruby"})]})}),r.jsx("section",{id:"ds-trie",children:r.jsxs(s,{title:"trie",children:[r.jsx(s.Tab,{code:ay,language:"python"}),r.jsx(s.Tab,{code:gy,language:"javascript"}),r.jsx(s.Tab,{code:jy,language:"java"}),r.jsx(s.Tab,{code:My,language:"cpp"}),r.jsx(s.Tab,{code:$y,language:"ruby"})]})})]})}const Yy=`import random + + +def bogo_sort(arr: list) -> None: + target = sorted(arr) + + while arr != target: + random.shuffle(arr) +`,qy=`def bubble_sort(arr: list) -> None: + n = len(arr) + + for i in range(n): + swapped = False + + for j in range(0, n - i - 1): + if arr[j] > arr[j + 1]: + arr[j], arr[j + 1] = arr[j + 1], arr[j] + swapped = True + + if not swapped: + break +`,Qy=`def bucket_sort(arr: list) -> list: + num_buckets = 10 + min_num = min(arr) + max_num = max(arr) + bucket_size = (max_num - min_num) / num_buckets + buckets = [[] for _ in range(num_buckets)] + + for num in arr: + index = min(int((num - min_num) / bucket_size), num_buckets - 1) + buckets[index].append(num) + + return [num for bucket in buckets for num in sorted(bucket)] +`,Xy=`def counting_sort(arr: list) -> list: + max_num = max(arr) + min_num = min(arr) + count_range = max_num - min_num + 1 + count = [0] * count_range + output = [0] * len(arr) + + for num in arr: + count[num - min_num] += 1 + + for i in range(1, count_range): + count[i] += count[i - 1] + + for num in arr[::-1]: + output[count[num - min_num] - 1] = num + count[num - min_num] -= 1 + + return output +`,Zy=`def cube_sort(arr: list, processors: int) -> None: + n = len(arr) + subarrays = [] + subarray_size = n // processors + + for i in range(processors): + subarray = arr[i * subarray_size : (i + 1) * subarray_size] + subarrays.append(subarray) + + for subarray in subarrays: + subarray.sort() + + for dimension in range(processors.bit_length() - 1): + for i in range(processors): + partner = i ^ (1 << dimension) + if i < partner: + merged = subarrays[i] + subarrays[partner] + else: + merged = subarrays[partner] + subarrays[i] + merged.sort() + subarrays[i] = merged[:subarray_size] + subarrays[partner] = merged[subarray_size:] + + arr[:] = [num for subarray in subarrays for num in subarray] +`,n0=`def heap_sort(arr: list) -> list: + n = len(arr) + + for i in range(n // 2 - 1, -1, -1): + heapify(arr, n, i) + for i in range(n - 1, 0, -1): + arr[i], arr[0] = arr[0], arr[i] + heapify(arr, i, 0) + + return arr + +def heapify(arr: list, n: int, i: int) -> None: + largest = i + left = 2 * i + 1 + right = 2 * i + 2 + + if left < n and arr[left] > arr[largest]: + largest = left + if right < n and arr[right] > arr[largest]: + largest = right + if largest != i: + arr[i], arr[largest] = arr[largest], arr[i] + heapify(arr, n, largest) +`,e0=`def insertion_sort(arr: list) -> None: + n = len(arr) + + for i in range(1, n): + key = arr[i] + + while i > 0 and key < arr[i - 1]: + arr[i] = arr[i - 1] + i -= 1 + + arr[i] = key +`,t0=`def merge_sort(arr: list) -> list: + n = len(arr) + + if n <= 1: + return arr + + mid = n // 2 + left = merge_sort(arr[:mid]) + right = merge_sort(arr[mid:]) + + return merge(left, right) + +def merge(left: list, right: list) -> list: + output = [] + + while left and right: + min_num = left.pop(0) if left[0] <= right[0] else right.pop(0) + output.append(min_num) + + output.extend(left) + output.extend(right) + + return output +`,r0=`def pancake_sort(arr: list) -> None: + n = len(arr) + + for size in reversed(range(2, n + 1)): + max_idx = find_max_index(arr, size) + + if max_idx != size - 1: + flip(arr, max_idx) + flip(arr, size - 1) + +def flip(arr: list, i: int) -> None: + left = 0 + + while left < i: + arr[left], arr[i] = arr[i], arr[left] + left += 1 + i -= 1 + +def find_max_index(arr: list, n: int) -> int: + max_idx = 0 + + for i in range(n): + if arr[i] > arr[max_idx]: + max_idx = i + + return max_idx +`,i0=`def quick_sort(arr: list) -> list: + n = len(arr) + + if n <= 1: + return arr + + pivot = arr[n // 2] + left = [x for x in arr if x < pivot] + right = [x for x in arr if x > pivot] + + return quick_sort(left) + [pivot] + quick_sort(right) +`,a0=`def radix_sort(arr: list) -> None: + max_val = max(arr) + exp = 1 + + while max_val // exp > 0: + counting_sort(arr, exp) + exp *= 10 + +def counting_sort(arr: list, exp: int) -> None: + n = len(arr) + output = [0] * n + count = [0] * 10 + + for i in range(n): + idx = arr[i] // exp + count[idx % 10] += 1 + + for i in range(1, 10): + count[i] += count[i - 1] + + i = n - 1 + + while i >= 0: + idx = arr[i] // exp + output[count[idx % 10] - 1] = arr[i] + count[idx % 10] -= 1 + i -= 1 + + for i in range(n): + arr[i] = output[i] +`,o0=`def selection_sort(arr: list) -> None: + n = len(arr) + + for i in range(n): + min_i = i + + for j in range(i + 1, n): + if arr[j] < arr[min_i]: + min_i = j + + if min_i != i: + arr[i], arr[min_i] = arr[min_i], arr[i] +`,s0=`def shell_sort(arr: list) -> None: + n = len(arr) + gaps = [701, 301, 132, 57, 23, 10, 4, 1] + + for gap in gaps: + for i in range(gap, n): + tmp = arr[i] + j = i + + while j >= gap and arr[j - gap] > tmp: + arr[j] = arr[j - gap] + j -= gap + + if j != i: + arr[j] = tmp +`,l0=`from threading import Thread +from time import sleep + + +def sleep_sort(arr: list ) -> list: + sorted_arr = [] + threads = [] + + for num in arr: + thread = Thread(target=snorlax, args=(num, sorted_arr)) + threads.append(thread) + + for thread in threads: + thread.start( ) + + for thread in threads: + thread.join() + + return sorted_arr + +def snorlax(num: float, arr: list) -> None: + sleep(num / 1000.0) + arr.append(num) +`,u0=`def tim_sort(arr: list) -> list: + n = len(arr) + min_run = 32 + + for start in range(0, n, min_run): + end = min(start + min_run - 1, n - 1) + insertion_sort(arr, start, end) + + size = min_run + + while size < n: + for left in range(0, n, 2 * size): + mid = min(n - 1, left + size - 1) + right = min((left + 2 * size - 1), (n - 1)) + arr[left : right + 1] = merge(arr[left : mid + 1], arr[mid + 1 : right + 1]) + size *= 2 + + return arr + +def insertion_sort(arr: list, left: int, right: int) -> None: + for i in range(left + 1, right + 1): + key = arr[i] + + while i > 0 and key < arr[i - 1]: + arr[i] = arr[i - 1] + i -= 1 + + arr[i] = key + +def merge_sort(arr: list) -> list: + n = len(arr) + + if n <= 1: + return arr + + mid = n // 2 + left = merge_sort(arr[:mid]) + right = merge_sort(arr[mid:]) + + return merge(left, right) + +def merge(left: list, right: list) -> list: + output = [] + + while left and right: + min_num = left.pop(0) if left[0] <= right[0] else right.pop(0) + output.append(min_num) + + output.extend(left) + output.extend(right) + + return output +`,c0=`const bogoSort = (arr) => { + const isSorted = (arr) => { + for (let i = 0; i < arr.length - 1; i++) { + if (arr[i] > arr[i + 1]) { + return false + } + } + + return true + } + + const shuffleArray = (arr) => { + for (let i = arr.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)) + [arr[i], arr[j]] = [arr[j], arr[i]] + } + + return arr + } + + while (!isSorted(arr)) { + arr = shuffleArray(arr) + } +} +`,d0=`const bubbleSort = (arr) => { + const n = arr.length + + for (let i = 0; i < n; i++) { + let swapped = false + + for (let j = 0; j < n - i - 1; j++) { + if (arr[j] > arr[j + 1]) { + [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]] + swapped = true + } + } + + if (!swapped) { + break + } + } +} +`,f0=`const bucketSort = (arr) => { + const num_buckets = 10 + const min_num = Math.min(...arr) + const max_num = Math.max(...arr) + const bucket_size = (max_num - min_num) / num_buckets + const buckets = Array.from({ length: num_buckets }, () => []) + + for (const num of arr) { + const index = Math.min(Math.floor((num - min_num) / bucket_size), num_buckets - 1) + buckets[index].push(num) + } + + return buckets.flatMap(bucket => bucket.sort((a, b) => a - b)) +} +`,p0=`const countingSort = (arr) => { + const max_num = Math.max(...arr) + const min_num = Math.min(...arr) + const count_range = max_num - min_num + 1 + const count = Array(count_range).fill(0) + const output = Array(arr.length) + + for (const num of arr) { + count[num - min_num]++ + } + + for (let i = 1; i < count_range; i++) { + count[i] += count[i - 1] + } + + for (let i = arr.length - 1; i >= 0; i--) { + output[count[arr[i] - min_num] - 1] = arr[i] + count[arr[i] - min_num]-- + } + + return output +} +`,h0=`const cubeSort = (arr, processors) => { + const n = arr.length + const subarrays = [] + const subarraySize = Math.floor(n / processors) + + for (let i = 0; i < processors; i++) { + const subarray = arr.slice(i * subarraySize, (i + 1) * subarraySize) + subarray.sort((a, b) => a - b) + subarrays.push(subarray) + } + + for (let dimension = 0; dimension < Math.floor(Math.log2(processors)); dimension++) { + for (let i = 0; i < processors; i++) { + const partner = i ^ (1 << dimension) + if (i < partner) { + const merged = subarrays[i].concat(subarrays[partner]) + merged.sort((a, b) => a - b) + subarrays[i] = merged.slice(0, subarraySize) + subarrays[partner] = merged.slice(subarraySize) + } + } + } + + arr.splice(0, arr.length, ...subarrays.flat()) +} +`,g0=`const heapSort = (arr) => { + const n = arr.length + + const heapify = (arr, n, i) => { + let largest = i + const left = 2 * i + 1 + const right = 2 * i + 2 + + if (left < n && arr[left] > arr[largest]) { + largest = left + } + if (right < n && arr[right] > arr[largest]) { + largest = right + } + if (largest !== i) { + [arr[i], arr[largest]] = [arr[largest], arr[i]] + heapify(arr, n, largest) + } + } + + for (let i = Math.floor(n / 2) - 1; i >= 0; i--) { + heapify(arr, n, i) + } + for (let i = n - 1; i > 0; i--) { + [arr[i], arr[0]] = [arr[0], arr[i]] + heapify(arr, i, 0) + } + + return arr +} +`,m0=`const insertionSort = (arr) => { + const n = arr.length + + for (let i = 1; i < n; i++) { + let key = arr[i] + let j = i - 1 + + while (j >= 0 && key < arr[j]) { + arr[j + 1] = arr[j] + j-- + } + + arr[j + 1] = key + } +} +`,v0=`const mergeSort = (arr) => { + const n = arr.length + + if (n <= 1) { + return arr + } + + const mid = Math.floor(n / 2) + const left = mergeSort(arr.slice(0, mid)) + const right = mergeSort(arr.slice(mid)) + + return merge(left, right) +} + +const merge = (left, right) => { + const output = [] + + while (left.length && right.length) { + const minNum = left[0] <= right[0] ? left.shift() : right.shift() + output.push(minNum) + } + + output.push(...left) + output.push(...right) + + return output +} +`,y0=`const pancakeSort = (arr) => { + const n = arr.length + + for (let size = n; size > 1; size--) { + const maxIdx = findMaxIndex(arr, size) + + if (maxIdx !== size - 1) { + flip(arr, maxIdx) + flip(arr, size - 1) + } + } +} + +const flip = (arr, i) => { + let left = 0 + + while (left < i) { + [arr[left], arr[i]] = [arr[i], arr[left]] + left++ + i-- + } +} + +const findMaxIndex = (arr, n) => { + let maxIdx = 0 + + for (let i = 0; i < n; i++) { + if (arr[i] > arr[maxIdx]) { + maxIdx = i + } + } + + return maxIdx +} +`,x0=`const quickSort = (arr) => { + const n = arr.length + + if (n <= 1) { + return arr + } + + const pivot = arr[Math.floor(n / 2)] + const left = arr.filter(x => x < pivot) + const right = arr.filter(x => x > pivot) + + return [...quickSort(left), pivot, ...quickSort(right)] +} +`,_0=`const radixSort = (arr) => { + const maxVal = Math.max(...arr) + let exp = 1 + + while (maxVal / exp > 0) { + countingSort(arr, exp) + exp *= 10 + } +} + +const countingSort = (arr, exp) => { + const n = arr.length + const output = new Array(n).fill(0) + const count = new Array(10).fill(0) + + for (let i = 0; i < n; i++) { + const idx = Math.floor(arr[i] / exp) + count[idx % 10] += 1 + } + + for (let i = 1; i < 10; i++) { + count[i] += count[i - 1] + } + + let i = n - 1 + + while (i >= 0) { + const idx = Math.floor(arr[i] / exp) + output[count[idx % 10] - 1] = arr[i] + count[idx % 10] -= 1 + i -= 1 + } + + for (let i = 0; i < n; i++) { + arr[i] = output[i] + } +} +`,b0=`const selectionSort = (arr) => { + const n = arr.length + + for (let i = 0; i < n; i++) { + let minIndex = i + + for (let j = i + 1; j < n; j++) { + if (arr[j] < arr[minIndex]) { + minIndex = j + } + } + + if (minIndex !== i) { + [arr[i], arr[minIndex]] = [arr[minIndex], arr[i]] + } + } +} +`,w0=`const shellSort = (arr) => { + const n = arr.length + const gaps = [701, 301, 132, 57, 23, 10, 4, 1] + + for (const gap of gaps) { + for (let i = gap; i < n; i++) { + const tmp = arr[i] + let j = i + + while (j >= gap && arr[j - gap] > tmp) { + arr[j] = arr[j - gap] + j -= gap + } + + if (j !== i) { + arr[j] = tmp + } + } + } +} +`,S0=`const sleepSort = (arr) => { + const sortedArr = [] + const promises = [] + + for (const num of arr) { + promises.push(new Promise((resolve) => setTimeout(() => { + sortedArr.push(num) + resolve() + }, num))) + } + + return Promise.all(promises).then(() => sortedArr) +} +`,T0=`const timSort = (arr) => { + const n = arr.length + const minRun = 32 + + for (let start = 0; start < n; start += minRun) { + const end = Math.min(start + minRun - 1, n - 1) + insertionSort(arr, start, end) + } + + let size = minRun + + while (size < n) { + for (let left = 0; left < n; left += 2 * size) { + const mid = Math.min(n - 1, left + size - 1) + const right = Math.min((left + 2 * size - 1), (n - 1)) + const merged = merge(arr.slice(left, mid + 1), arr.slice(mid + 1, right + 1)) + arr.splice(left, right - left + 1, ...merged) + } + size *= 2 + } + + return arr +} + +const insertionSort = (arr, left, right) => { + for (let i = left + 1; i <= right; i++) { + const key = arr[i] + let j = i + + while (j > left && key < arr[j - 1]) { + arr[j] = arr[j - 1] + j-- + } + + arr[j] = key + } +} + +const mergeSort = (arr) => { + const n = arr.length + + if (n <= 1) { + return arr + } + + const mid = Math.floor(n / 2) + const left = mergeSort(arr.slice(0, mid)) + const right = mergeSort(arr.slice(mid)) + + return merge(left, right) +} + +const merge = (left, right) => { + const output = [] + + while (left.length && right.length) { + const minNum = left[0] <= right[0] ? left.shift() : right.shift() + output.push(minNum) + } + + return output.concat(left).concat(right) +} +`,j0=`import java.util.Arrays; +import java.util.Random; + + +public static void bogoSort(int[] arr) { + int[] target = Arrays.copyOf(arr, arr.length); + Arrays.sort(target); + + while (!Arrays.equals(arr, target)) { + shuffleArray(arr); + } +} + +public static void shuffleArray(int[] arr) { + Random rnd = new Random(); + + for (int i = arr.length - 1; i > 0; i--) { + int index = rnd.nextInt(i + 1); + int temp = arr[index]; + arr[index] = arr[i]; + arr[i] = temp; + } +} +`,k0=`public static void bubbleSort(int[] arr) { + int n = arr.length; + + for (int i = 0; i < n; i++) { + boolean swapped = false; + + for (int j = 0; j < n - i - 1; j++) { + if (arr[j] > arr[j + 1]) { + int temp = arr[j]; + arr[j] = arr[j + 1]; + arr[j + 1] = temp; + swapped = true; + } + } + + if (!swapped) { + break; + } + } +} +`,E0=`import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + + +public static int[] bucketSort(int[] arr) { + int numBuckets = 10; + int index; + int[] result = new int[arr.length]; + int minNum = Arrays.stream(arr).min().getAsInt(); + int maxNum = Arrays.stream(arr).max().getAsInt(); + double bucketSize = (double) (maxNum - minNum) / numBuckets; + List> buckets = new ArrayList<>(numBuckets); + + for (int i = 0; i < numBuckets; i++) { + buckets.add(new ArrayList<>()); + } + + for (int num : arr) { + index = Math.min((int) ((num - minNum) / bucketSize), numBuckets - 1); + buckets.get(index).add(num); + } + + index = 0; + + for (List bucket : buckets) { + Collections.sort(bucket); + + for (int num : bucket) { + result[index++] = num; + } + } + + return result; +} +`,N0=`import java.util.Arrays; + + +public static int[] countingSort(int[] arr) { + int maxNum = Arrays.stream(arr).max().orElse(Integer.MIN_VALUE); + int minNum = Arrays.stream(arr).min().orElse(Integer.MAX_VALUE); + int countRange = maxNum - minNum + 1; + int[] count = new int[countRange]; + int[] output = new int[arr.length]; + + for (int num : arr) { + count[num - minNum]++; + } + + for (int i = 1; i < countRange; i++) { + count[i] += count[i - 1]; + } + + for (int i = arr.length - 1; i >= 0; i--) { + output[count[arr[i] - minNum] - 1] = arr[i]; + count[arr[i] - minNum]--; + } + + return output; +} +`,O0=`import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + + +public static void cubeSort(int[] arr, int processors) { + int n = arr.length; + List subarrays = new ArrayList<>(); + int subarraySize = (n + processors - 1) / processors; + + for (int i = 0; i < processors; i++) { + int[] subarray = new int[Math.min(subarraySize, n - i * subarraySize)]; + System.arraycopy(arr, i * subarraySize, subarray, 0, subarray.length); + Arrays.sort(subarray); + subarrays.add(subarray); + } + + for (int dimension = 0; dimension < Integer.SIZE - 1; dimension++) { + for (int i = 0; i < processors; i++) { + int partner = i ^ (1 << dimension); + + if (i < partner && partner < processors) { + int[] merged = merge(subarrays.get(i), subarrays.get(partner)); + System.arraycopy(merged, 0, subarrays.get(i), 0, subarraySize); + System.arraycopy(merged, subarraySize, subarrays.get(partner), 0, subarraySize); + } + } + } + + int index = 0; + + for (int[] subarray : subarrays) { + for (int num : subarray) { + arr[index++] = num; + } + } +} + +public static int[] merge(int[] arr1, int[] arr2) { + int[] merged = new int[arr1.length + arr2.length]; + int i = 0, j = 0, k = 0; + + while (i < arr1.length && j < arr2.length) { + if (arr1[i] < arr2[j]) { + merged[k++] = arr1[i++]; + } else { + merged[k++] = arr2[j++]; + } + } + + while (i < arr1.length) { + merged[k++] = arr1[i++]; + } + + while (j < arr2.length) { + merged[k++] = arr2[j++]; + } + + return merged; +} +`,A0=`public static int[] heapSort(int[] arr) { + int n = arr.length; + + for (int i = n / 2 - 1; i >= 0; i--) { + heapify(arr, n, i); + } + + for (int i = n - 1; i > 0; i--) { + int temp = arr[0]; + arr[0] = arr[i]; + arr[i] = temp; + + heapify(arr, i, 0); + } + + return arr; +} + +public static void heapify(int[] arr, int n, int i) { + int largest = i; + int left = 2 * i + 1; + int right = 2 * i + 2; + + if (left < n && arr[left] > arr[largest]) { + largest = left; + } + if (right < n && arr[right] > arr[largest]) { + largest = right; + } + if (largest != i) { + int temp = arr[i]; + arr[i] = arr[largest]; + arr[largest] = temp; + + heapify(arr, n, largest); + } +} +`,C0=`public static void insertionSort(int[] arr) { + int n = arr.length; + + for (int i = 1; i < n; i++) { + int key = arr[i]; + int j = i - 1; + + while (j >= 0 && key < arr[j]) { + arr[j + 1] = arr[j]; + j--; + } + + arr[j + 1] = key; + } +} +`,L0=`import java.util.Arrays; + + +public static int[] mergeSort(int[] arr) { + int n = arr.length; + + if (n <= 1) { + return arr; + } + + int mid = n / 2; + int[] left = Arrays.copyOfRange(arr, 0, mid); + int[] right = Arrays.copyOfRange(arr, mid, n); + + left = mergeSort(left); + right = mergeSort(right); + + return merge(left, right); +} + +public static int[] merge(int[] left, int[] right) { + int[] output = new int[left.length + right.length]; + int i = 0, j = 0, k = 0; + + while (i < left.length && j < right.length) { + if (left[i] <= right[j]) { + output[k++] = left[i++]; + } else { + output[k++] = right[j++]; + } + } + + while (i < left.length) { + output[k++] = left[i++]; + } + + while (j < right.length) { + output[k++] = right[j++]; + } + + return output; +} +`,R0=`public static void pancakeSort(int[] arr) { + int n = arr.length; + + for (int size = n; size >= 2; size--) { + int maxIdx = findMaxIndex(arr, size); + + if (maxIdx != size - 1) { + flip(arr, maxIdx); + flip(arr, size - 1); + } + } +} + +public static void flip(int[] arr, int i) { + int left = 0; + + while (left < i) { + int temp = arr[left]; + arr[left] = arr[i]; + arr[i] = temp; + left++; + i--; + } +} + +public static int findMaxIndex(int[] arr, int n) { + int maxIdx = 0; + + for (int i = 0; i < n; i++) { + if (arr[i] > arr[maxIdx]) { + maxIdx = i; + } + } + + return maxIdx; +} +`,P0=`import java.util.ArrayList; +import java.util.List; + + +public static int[] quickSort(int[] arr) { + int n = arr.length; + + if (n <= 1) { + return arr; + } + + int pivot = arr[n / 2]; + List left = new ArrayList<>(); + List right = new ArrayList<>(); + + for (int x : arr) { + if (x < pivot) { + left.add(x); + } else if (x > pivot) { + right.add(x); + } + } + + int[] sortedLeft = quickSort(left.stream().mapToInt(i -> i).toArray()); + int[] sortedRight = quickSort(right.stream().mapToInt(i -> i).toArray()); + int[] result = new int[n]; + + System.arraycopy(sortedLeft, 0, result, 0, sortedLeft.length); + result[sortedLeft.length] = pivot; + System.arraycopy(sortedRight, 0, result, sortedLeft.length + 1, sortedRight.length); + + return result; +} +`,M0=`import java.util.Arrays; + + +public static void radixSort(int[] arr) { + int maxVal = Arrays.stream(arr).max().getAsInt(); + int exp = 1; + + while (maxVal / exp > 0) { + countingSort(arr, exp); + exp *= 10; + } +} + +public static void countingSort(int[] arr, int exp) { + int n = arr.length; + int[] output = new int[n]; + int[] count = new int[10]; + + for (int i = 0; i < n; i++) { + int idx = arr[i] / exp; + count[idx % 10]++; + } + + for (int i = 1; i < 10; i++) { + count[i] += count[i - 1]; + } + + for (int i = n - 1; i >= 0; i--) { + int idx = arr[i] / exp; + output[count[idx % 10] - 1] = arr[i]; + count[idx % 10]--; + } + + System.arraycopy(output, 0, arr, 0, n); +} +`,I0=`public static void selectionSort(int[] arr) { + int n = arr.length; + + for (int i = 0; i < n; i++) { + int minIdx = i; + + for (int j = i + 1; j < n; j++) { + if (arr[j] < arr[minIdx]) { + minIdx = j; + } + } + + if (minIdx != i) { + int temp = arr[i]; + arr[i] = arr[minIdx]; + arr[minIdx] = temp; + } + } +} +`,D0=`public static void shellSort(int[] arr) { + int n = arr.length; + int[] gaps = {701, 301, 132, 57, 23, 10, 4, 1}; + + for (int gap : gaps) { + for (int i = gap; i < n; i++) { + int tmp = arr[i]; + int j = i; + + while (j >= gap && arr[j - gap] > tmp) { + arr[j] = arr[j - gap]; + j -= gap; + } + + if (j != i) { + arr[j] = tmp; + } + } + } +} +`,z0=`import java.util.ArrayList; +import java.util.List; + + +public static int[] sleepSort(int[] arr) { + List sortedArr = new ArrayList<>(); + List threads = new ArrayList<>(); + + for (int num : arr) { + Thread thread = new Thread(() -> snorlax(num, sortedArr)); + threads.add(thread); + } + + for (Thread thread : threads) { + thread.start(); + } + + for (Thread thread : threads) { + try { + thread.join(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + return sortedArr.stream().mapToInt(i -> i).toArray(); +} + +public static void snorlax(int num, List arr) { + try { + Thread.sleep(num); + } catch (InterruptedException e) { + e.printStackTrace(); + } + arr.add(num); +} +`,B0=`public static int[] timSort(int[] arr) { + int n = arr.length; + int minRun = 32; + + for (int start = 0; start < n; start += minRun) { + int end = Math.min(start + minRun - 1, n - 1); + insertionSort(arr, start, end); + } + + int size = minRun; + + while (size < n) { + for (int left = 0; left < n; left += 2 * size) { + int mid = Math.min(n - 1, left + size - 1); + int right = Math.min(left + 2 * size - 1, n - 1); + arr = merge(arr, left, mid, right); + } + size *= 2; + } + + return arr; +} + +public static void insertionSort(int[] arr, int left, int right) { + for (int i = left + 1; i <= right; i++) { + int key = arr[i]; + int j = i - 1; + + while (j >= left && key < arr[j]) { + arr[j + 1] = arr[j]; + j--; + } + + arr[j + 1] = key; + } +} + +public static int[] merge(int[] arr, int left, int mid, int right) { + int[] output = new int[right - left + 1]; + int i = left, j = mid + 1, k = 0; + + while (i <= mid && j <= right) { + if (arr[i] <= arr[j]) { + output[k++] = arr[i++]; + } else { + output[k++] = arr[j++]; + } + } + + while (i <= mid) { + output[k++] = arr[i++]; + } + + while (j <= right) { + output[k++] = arr[j++]; + } + + System.arraycopy(output, 0, arr, left, output.length); + return arr; +} +`,F0=`#include +#include +#include + +using namespace std; + + +void BogoSort(vector& arr) { + vector target = arr; + sort(target.begin(), target.end()); + + random_device rd; + mt19937 g(rd()); + + while (!is_sorted(arr.begin(), arr.end())) { + shuffle(arr.begin(), arr.end(), g); + } +} +`,U0=`#include + +using namespace std; + + +void BubbleSort(vector& arr) { + int n = arr.size(); + + for (int i = 0; i < n; ++i) { + bool swapped = false; + + for (int j = 0; j < n - i - 1; ++j) { + if (arr[j] > arr[j + 1]) { + std::swap(arr[j], arr[j + 1]); + swapped = true; + } + } + + if (!swapped) { + break; + } + } +} +`,H0=`#include +#include + +using namespace std; + + +vector BucketSort(vector& arr) { + int num_buckets = 10; + int min_num = *min_element(arr.begin(), arr.end()); + int max_num = *max_element(arr.begin(), arr.end()); + double bucket_size = static_cast(max_num - min_num) / num_buckets; + vector> buckets(num_buckets); + vector result; + + for (int num : arr) { + int index = min(static_cast((num - min_num) / bucket_size), num_buckets - 1); + buckets[index].push_back(num); + } + + for (auto& bucket : buckets) { + sort(bucket.begin(), bucket.end()); + result.insert(result.end(), bucket.begin(), bucket.end()); + } + + return result; +} +`,W0=`#include +#include + +using namespace std; + + +vector CountingSort(vector& arr) { + int max_num = *max_element(arr.begin(), arr.end()); + int min_num = *min_element(arr.begin(), arr.end()); + int count_range = max_num - min_num + 1; + vector count(count_range, 0); + vector output(arr.size(), 0); + + for (int num : arr) { + count[num - min_num]++; + } + + for (int i = 1; i < count_range; ++i) { + count[i] += count[i - 1]; + } + + for (int i = arr.size() - 1; i >= 0; --i) { + output[count[arr[i] - min_num] - 1] = arr[i]; + count[arr[i] - min_num]--; + } + + return output; +} +`,V0=`#include +#include +#include + +using namespace std; + + +void CubeSort(vector& arr, int processors) { + int n = arr.size(); + vector> subarrays; + int subarray_size = n / processors; + + for (int i = 0; i < processors; ++i) { + vector subarray(arr.begin() + i * subarray_size, arr.begin() + (i + 1) * subarray_size); + sort(subarray.begin(), subarray.end()); + subarrays.push_back(subarray); + } + + for (int dimension = 0; dimension < log2(processors); ++dimension) { + for (int i = 0; i < processors; ++i) { + int partner = i ^ (1 << dimension); + vector merged; + if (i < partner) { + merged = subarrays[i]; + merged.insert(merged.end(), subarrays[partner].begin(), subarrays[partner].end()); + } else { + merged = subarrays[partner]; + merged.insert(merged.end(), subarrays[i].begin(), subarrays[i].end()); + } + sort(merged.begin(), merged.end()); + subarrays[i].assign(merged.begin(), merged.begin() + subarray_size); + subarrays[partner].assign(merged.begin() + subarray_size, merged.end()); + } + } + + arr.clear(); + for (auto& subarray : subarrays) { + arr.insert(arr.end(), subarray.begin(), subarray.end()); + } +} +`,$0=`#include + +using namespace std; + + +void Heapify(vector& arr, int n, int i) { + int largest = i; + int left = 2 * i + 1; + int right = 2 * i + 2; + + if (left < n && arr[left] > arr[largest]) { + largest = left; + } + if (right < n && arr[right] > arr[largest]) { + largest = right; + } + if (largest != i) { + swap(arr[i], arr[largest]); + Heapify(arr, n, largest); + } +} + +void HeapSort(vector& arr) { + int n = arr.size(); + + for (int i = n / 2 - 1; i >= 0; --i) { + Heapify(arr, n, i); + } + for (int i = n - 1; i > 0; --i) { + swap(arr[0], arr[i]); + Heapify(arr, i, 0); + } +} +`,K0=`#include + +using namespace std; + + +void InsertionSort(vector& arr) { + int n = arr.size(); + + for (int i = 1; i < n; ++i) { + int key = arr[i]; + int j = i - 1; + + while (j >= 0 && key < arr[j]) { + arr[j + 1] = arr[j]; + --j; + } + + arr[j + 1] = key; + } +} +`,G0=`#include + +using namespace std; + + +vector Merge(vector& left, vector& right) { + vector output; + + while (!left.empty() && !right.empty()) { + int min_num = (left[0] <= right[0]) ? left[0] : right[0]; + output.push_back(min_num); + + if (left[0] <= right[0]) { + left.erase(left.begin()); + } else { + right.erase(right.begin()); + } + } + + output.insert(output.end(), left.begin(), left.end()); + output.insert(output.end(), right.begin(), right.end()); + + return output; +} + +vector MergeSort(vector& arr) { + int n = arr.size(); + + if (n <= 1) { + return arr; + } + + int mid = n / 2; + vector left(arr.begin(), arr.begin() + mid); + vector right(arr.begin() + mid, arr.end()); + + left = MergeSort(left); + right = MergeSort(right); + + return Merge(left, right); +} +`,J0=`#include + +using namespace std; + + +int FindMaxIndex(vector& arr, int n) { + int max_idx = 0; + + for (int i = 0; i < n; ++i) { + if (arr[i] > arr[max_idx]) { + max_idx = i; + } + } + + return max_idx; +} + +void Flip(vector& arr, int i) { + int left = 0; + + while (left < i) { + swap(arr[left], arr[i]); + left++; + i--; + } +} + +void PancakeSort(vector& arr) { + int n = arr.size(); + + for (int size = n; size >= 2; --size) { + int max_idx = FindMaxIndex(arr, size); + + if (max_idx != size - 1) { + Flip(arr, max_idx); + Flip(arr, size - 1); + } + } +} +`,Y0=`#include + +using namespace std; + + +vector QuickSort(vector& arr) { + int n = arr.size(); + + if (n <= 1) { + return arr; + } + + int pivot = arr[n / 2]; + vector left, right; + + for (int x : arr) { + if (x < pivot) { + left.push_back(x); + } else if (x > pivot) { + right.push_back(x); + } + } + + left = QuickSort(left); + right = QuickSort(right); + + left.push_back(pivot); + left.insert(left.end(), right.begin(), right.end()); + + return left; +} +`,q0=`#include + +using namespace std; + + +void CountingSort(vector& arr, int exp) { + int n = arr.size(); + vector output(n, 0); + vector count(10, 0); + + for (int i = 0; i < n; ++i) { + int idx = arr[i] / exp % 10; + count[idx]++; + } + + for (int i = 1; i < 10; ++i) { + count[i] += count[i - 1]; + } + + for (int i = n - 1; i >= 0; --i) { + int idx = arr[i] / exp % 10; + output[count[idx] - 1] = arr[i]; + count[idx]--; + } + + for (int i = 0; i < n; ++i) { + arr[i] = output[i]; + } +} + +void RadixSort(vector& arr) { + int max_val = *max_element(arr.begin(), arr.end()); + int exp = 1; + + while (max_val / exp > 0) { + CountingSort(arr, exp); + exp *= 10; + } +} +`,Q0=`#include + +using namespace std; + + +void SelectionSort(vector& arr) { + int n = arr.size(); + + for (int i = 0; i < n; ++i) { + int min_i = i; + + for (int j = i + 1; j < n; ++j) { + if (arr[j] < arr[min_i]) { + min_i = j; + } + } + + if (min_i != i) { + swap(arr[i], arr[min_i]); + } + } +} +`,X0=`#include + +using namespace std; + + +void ShellSort(vector& arr) { + int n = arr.size(); + vector gaps = {701, 301, 132, 57, 23, 10, 4, 1}; + + for (int gap : gaps) { + for (int i = gap; i < n; ++i) { + int tmp = arr[i]; + int j = i; + + while (j >= gap && arr[j - gap] > tmp) { + arr[j] = arr[j - gap]; + j -= gap; + } + + if (j != i) { + arr[j] = tmp; + } + } + } +} +`,Z0=`#include +#include +#include + +using namespace std; + + +void Snorlax(double num, vector& arr) { + this_thread::sleep_for(chrono::milliseconds(static_cast(num))); + arr.push_back(num); +} + +vector SleepSort(vector& arr) { + vector sorted_arr; + vector threads; + + for (double num : arr) { + threads.emplace_back(Snorlax, num, ref(sorted_arr)); + } + + for (thread& t : threads) { + t.join(); + } + + return sorted_arr; +} +`,nx=`#include +#include + +using namespace std; + + +void InsertionSort(vector& arr, int left, int right) { + for (int i = left + 1; i <= right; ++i) { + double key = arr[i]; + int j = i - 1; + + while (j >= left && arr[j] > key) { + arr[j + 1] = arr[j]; + --j; + } + + arr[j + 1] = key; + } +} + +vector Merge(const vector& left, const vector& right) { + vector output; + + int left_index = 0; + int right_index = 0; + + while (left_index < left.size() && right_index < right.size()) { + if (left[left_index] <= right[right_index]) { + output.push_back(left[left_index++]); + } else { + output.push_back(right[right_index++]); + } + } + + while (left_index < left.size()) { + output.push_back(left[left_index++]); + } + + while (right_index < right.size()) { + output.push_back(right[right_index++]); + } + + return output; +} + +vector TimSort(vector& arr) { + int n = arr.size(); + int min_run = 32; + + for (int start = 0; start < n; start += min_run) { + int end = min(start + min_run - 1, n - 1); + InsertionSort(arr, start, end); + } + + int size = min_run; + + while (size < n) { + for (int left = 0; left < n; left += 2 * size) { + int mid = min(n - 1, left + size - 1); + int right = min((left + 2 * size - 1), (n - 1)); + vector merged = Merge( + vector(arr.begin() + left, arr.begin() + mid + 1), + vector(arr.begin() + mid + 1, arr.begin() + right + 1) + ); + copy(merged.begin(), merged.end(), arr.begin() + left); + } + size *= 2; + } + + return arr; +} +`,ex=`def bogo_sort(arr) + target = arr.sort + + until arr == target + arr.shuffle! + end +end +`,tx=`def bubble_sort(arr) + n = arr.size + + n.times do |i| + swapped = false + + (0...(n - i - 1)).each do |j| + if arr[j] > arr[j + 1] + arr[j], arr[j + 1] = arr[j + 1], arr[j] + swapped = true + end + end + + break unless swapped + end +end +`,rx=`def bucket_sort(arr) + num_buckets = 10 + min_num = arr.min + max_num = arr.max + bucket_size = (max_num - min_num).to_f / num_buckets + buckets = Array.new(num_buckets) { [] } + + arr.each do |num| + index = [( (num - min_num) / bucket_size ).to_i, num_buckets - 1].min + buckets[index] << num + end + + buckets.map { |bucket| bucket.sort }.flatten +end +`,ix=` +def counting_sort(arr) + max_num = arr.max + min_num = arr.min + count_range = max_num - min_num + 1 + count = Array.new(count_range, 0) + output = Array.new(arr.size, 0) + + arr.each do |num| + count[num - min_num] += 1 + end + + (1...count_range).each do |i| + count[i] += count[i - 1] + end + + arr.reverse_each do |num| + output[count[num - min_num] - 1] = num + count[num - min_num] -= 1 + end + + output +end +`,ax=`def cube_sort(arr, processors) + n = arr.size + subarrays = [] + subarray_size = n / processors + + (0...processors).each do |i| + subarray = arr[i * subarray_size, subarray_size] + subarrays << subarray + end + + subarrays.each(&:sort!) + + (0...(processors.bit_length - 1)).each do |dimension| + (0...processors).each do |i| + partner = i ^ (1 << dimension) + if i < partner + merged = subarrays[i] + subarrays[partner] + else + merged = subarrays[partner] + subarrays[i] + end + merged.sort! + subarrays[i] = merged[0...subarray_size] + subarrays[partner] = merged[subarray_size, subarray_size] + end + end + + arr.replace(subarrays.flatten) +end +`,ox=`def heap_sort(arr) + n = arr.size + + (n / 2 - 1).downto(0) do |i| + heapify(arr, n, i) + end + + (n - 1).downto(1) do |i| + arr[i], arr[0] = arr[0], arr[i] + heapify(arr, i, 0) + end + + arr +end + +def heapify(arr, n, i) + largest = i + left = 2 * i + 1 + right = 2 * i + 2 + + largest = left if left < n && arr[left] > arr[largest] + largest = right if right < n && arr[right] > arr[largest] + + if largest != i + arr[i], arr[largest] = arr[largest], arr[i] + heapify(arr, n, largest) + end +end +`,sx=`def insertion_sort(arr) + n = arr.size + + (1...n).each do |i| + key = arr[i] + j = i - 1 + + while j >= 0 && key < arr[j] + arr[j + 1] = arr[j] + j -= 1 + end + + arr[j + 1] = key + end +end +`,lx=`def merge_sort(arr) + n = arr.size + return arr if n <= 1 + + mid = n / 2 + left = merge_sort(arr[0...mid]) + right = merge_sort(arr[mid..-1]) + + merge(left, right) +end + +def merge(left, right) + output = [] + + until left.empty? || right.empty? + if left.first <= right.first + output << left.shift + else + output << right.shift + end + end + + output + left + right +end +`,ux=`def pancake_sort(arr) + n = arr.size + + (2..n).to_a.reverse.each do |size| + max_idx = find_max_index(arr, size) + + if max_idx != size - 1 + flip(arr, max_idx) + flip(arr, size - 1) + end + end +end + +def flip(arr, i) + left = 0 + + while left < i + arr[left], arr[i] = arr[i], arr[left] + left += 1 + i -= 1 + end +end + +def find_max_index(arr, n) + max_idx = 0 + + n.times do |i| + max_idx = i if arr[i] > arr[max_idx] + end + + max_idx +end +`,cx=`def quick_sort(arr) + n = arr.size + return arr if n <= 1 + + pivot = arr[n / 2] + left = arr.select { |x| x < pivot } + right = arr.select { |x| x > pivot } + + quick_sort(left) + [pivot] + quick_sort(right) +end +`,dx=`def radix_sort(arr) + max_val = arr.max + exp = 1 + + while max_val / exp > 0 + counting_sort(arr, exp) + exp *= 10 + end +end + +def counting_sort(arr, exp) + n = arr.size + output = Array.new(n, 0) + count = Array.new(10, 0) + + n.times do |i| + idx = arr[i] / exp + count[idx % 10] += 1 + end + + (1...10).each do |i| + count[i] += count[i - 1] + end + + (n - 1).downto(0) do |i| + idx = arr[i] / exp + output[count[idx % 10] - 1] = arr[i] + count[idx % 10] -= 1 + end + + n.times do |i| + arr[i] = output[i] + end +end +`,fx=`def selection_sort(arr) + n = arr.size + + n.times do |i| + min_i = i + + ((i + 1)...n).each do |j| + min_i = j if arr[j] < arr[min_i] + end + + arr[i], arr[min_i] = arr[min_i], arr[i] if min_i != i + end +end +`,px=`def shell_sort(arr) + n = arr.size + gaps = [701, 301, 132, 57, 23, 10, 4, 1] + + gaps.each do |gap| + (gap...n).each do |i| + tmp = arr[i] + j = i + + while j >= gap && arr[j - gap] > tmp + arr[j] = arr[j - gap] + j -= gap + end + + arr[j] = tmp if j != i + end + end +end +`,hx=`def sleep_sort(arr) + sorted_arr = [] + threads = [] + + arr.each do |num| + threads << Thread.new do + sleep(num / 1000.0) + sorted_arr << num + end + end + + threads.each(&:join) + sorted_arr +end +`,gx=`def tim_sort(arr) + n = arr.size + min_run = 32 + + (0...n).step(min_run) do |start_idx| + end_idx = [start_idx + min_run - 1, n - 1].min + insertion_sort(arr, start_idx, end_idx) + end + + size = min_run + + while size < n + (0...n).step(2 * size) do |left| + mid = [left + size - 1, n - 1].min + right = [left + 2 * size - 1, n - 1].min + arr[left..right] = merge(arr[left..mid], arr[(mid + 1)..right]) + end + size *= 2 + end + + arr +end + +def insertion_sort(arr, left, right) + (left + 1..right).each do |i| + key = arr[i] + j = i + while j > left && key < arr[j - 1] + arr[j] = arr[j - 1] + j -= 1 + end + arr[j] = key + end +end + +def merge_sort(arr) + return arr if arr.size <= 1 + + mid = arr.size / 2 + left = merge_sort(arr[0...mid]) + right = merge_sort(arr[mid..-1]) + + merge(left, right) +end + +def merge(left, right) + output = [] + + until left.empty? || right.empty? + if left.first <= right.first + output << left.shift + else + output << right.shift + end + end + + output + left + right +end +`;function mx(){return r.jsxs("div",{className:Zn.container,children:[r.jsx("h2",{className:Zn.sectionHeader,children:"Sorting Algorithms"}),r.jsx("section",{id:"sort-bubble",children:r.jsxs(s,{title:"bubble sort",children:[r.jsx(s.Tab,{code:qy,language:"python"}),r.jsx(s.Tab,{code:d0,language:"javascript"}),r.jsx(s.Tab,{code:k0,language:"java"}),r.jsx(s.Tab,{code:U0,language:"cpp"}),r.jsx(s.Tab,{code:tx,language:"ruby"})]})}),r.jsx("section",{id:"sort-selection",children:r.jsxs(s,{title:"selection sort",children:[r.jsx(s.Tab,{code:o0,language:"python"}),r.jsx(s.Tab,{code:b0,language:"javascript"}),r.jsx(s.Tab,{code:I0,language:"java"}),r.jsx(s.Tab,{code:Q0,language:"cpp"}),r.jsx(s.Tab,{code:fx,language:"ruby"})]})}),r.jsx("section",{id:"sort-insertion",children:r.jsxs(s,{title:"insertion sort",children:[r.jsx(s.Tab,{code:e0,language:"python"}),r.jsx(s.Tab,{code:m0,language:"javascript"}),r.jsx(s.Tab,{code:C0,language:"java"}),r.jsx(s.Tab,{code:K0,language:"cpp"}),r.jsx(s.Tab,{code:sx,language:"ruby"})]})}),r.jsx("section",{id:"sort-shell",children:r.jsxs(s,{title:"shell sort",children:[r.jsx(s.Tab,{code:s0,language:"python"}),r.jsx(s.Tab,{code:w0,language:"javascript"}),r.jsx(s.Tab,{code:D0,language:"java"}),r.jsx(s.Tab,{code:X0,language:"cpp"}),r.jsx(s.Tab,{code:px,language:"ruby"})]})}),r.jsx("section",{id:"sort-merge",children:r.jsxs(s,{title:"merge sort",children:[r.jsx(s.Tab,{code:t0,language:"python"}),r.jsx(s.Tab,{code:v0,language:"javascript"}),r.jsx(s.Tab,{code:L0,language:"java"}),r.jsx(s.Tab,{code:G0,language:"cpp"}),r.jsx(s.Tab,{code:lx,language:"ruby"})]})}),r.jsx("section",{id:"sort-quick",children:r.jsxs(s,{title:"quick sort",children:[r.jsx(s.Tab,{code:i0,language:"python"}),r.jsx(s.Tab,{code:x0,language:"javascript"}),r.jsx(s.Tab,{code:P0,language:"java"}),r.jsx(s.Tab,{code:Y0,language:"cpp"}),r.jsx(s.Tab,{code:cx,language:"ruby"})]})}),r.jsx("section",{id:"sort-tim",children:r.jsxs(s,{title:"timsort",children:[r.jsx(s.Tab,{code:u0,language:"python"}),r.jsx(s.Tab,{code:T0,language:"javascript"}),r.jsx(s.Tab,{code:B0,language:"java"}),r.jsx(s.Tab,{code:nx,language:"cpp"}),r.jsx(s.Tab,{code:gx,language:"ruby"})]})}),r.jsx("section",{id:"sort-heap",children:r.jsxs(s,{title:"heap sort",children:[r.jsx(s.Tab,{code:n0,language:"python"}),r.jsx(s.Tab,{code:g0,language:"javascript"}),r.jsx(s.Tab,{code:A0,language:"java"}),r.jsx(s.Tab,{code:$0,language:"cpp"}),r.jsx(s.Tab,{code:ox,language:"ruby"})]})}),r.jsx("section",{id:"sort-counting",children:r.jsxs(s,{title:"counting sort",children:[r.jsx(s.Tab,{code:Xy,language:"python"}),r.jsx(s.Tab,{code:p0,language:"javascript"}),r.jsx(s.Tab,{code:N0,language:"java"}),r.jsx(s.Tab,{code:W0,language:"cpp"}),r.jsx(s.Tab,{code:ix,language:"ruby"})]})}),r.jsx("section",{id:"sort-bucket",children:r.jsxs(s,{title:"bucket sort",children:[r.jsx(s.Tab,{code:Qy,language:"python"}),r.jsx(s.Tab,{code:f0,language:"javascript"}),r.jsx(s.Tab,{code:E0,language:"java"}),r.jsx(s.Tab,{code:H0,language:"cpp"}),r.jsx(s.Tab,{code:rx,language:"ruby"})]})}),r.jsx("section",{id:"sort-radix",children:r.jsxs(s,{title:"radix sort",children:[r.jsx(s.Tab,{code:a0,language:"python"}),r.jsx(s.Tab,{code:_0,language:"javascript"}),r.jsx(s.Tab,{code:M0,language:"java"}),r.jsx(s.Tab,{code:q0,language:"cpp"}),r.jsx(s.Tab,{code:dx,language:"ruby"})]})}),r.jsx("section",{id:"sort-cube",children:r.jsxs(s,{title:"cubesort",children:[r.jsx(s.Tab,{code:Zy,language:"python"}),r.jsx(s.Tab,{code:h0,language:"javascript"}),r.jsx(s.Tab,{code:O0,language:"java"}),r.jsx(s.Tab,{code:V0,language:"cpp"}),r.jsx(s.Tab,{code:ax,language:"ruby"})]})}),r.jsx("section",{id:"sort-bogo",children:r.jsxs(s,{title:"bogo sort",children:[r.jsx(s.Tab,{code:Yy,language:"python"}),r.jsx(s.Tab,{code:c0,language:"javascript"}),r.jsx(s.Tab,{code:j0,language:"java"}),r.jsx(s.Tab,{code:F0,language:"cpp"}),r.jsx(s.Tab,{code:ex,language:"ruby"})]})}),r.jsx("section",{id:"sort-pancake",children:r.jsxs(s,{title:"pancake sort",children:[r.jsx(s.Tab,{code:r0,language:"python"}),r.jsx(s.Tab,{code:y0,language:"javascript"}),r.jsx(s.Tab,{code:R0,language:"java"}),r.jsx(s.Tab,{code:J0,language:"cpp"}),r.jsx(s.Tab,{code:ux,language:"ruby"})]})}),r.jsx("section",{id:"sort-sleep",children:r.jsxs(s,{title:"sleep sort",children:[r.jsx(s.Tab,{code:l0,language:"python"}),r.jsx(s.Tab,{code:S0,language:"javascript"}),r.jsx(s.Tab,{code:z0,language:"java"}),r.jsx(s.Tab,{code:Z0,language:"cpp"}),r.jsx(s.Tab,{code:hx,language:"ruby"})]})})]})}function vx(){const{isSidebarOpen:c}=Xs(),S=Qe(Ac.main,!c&&Ac.sidebarHidden);return r.jsxs("main",{className:S,children:[r.jsx(Zp,{}),r.jsx(tg,{}),r.jsx(pg,{}),r.jsx(Tg,{}),r.jsx(Mg,{}),r.jsx(Qg,{}),r.jsx(zm,{}),r.jsx(Vm,{}),r.jsx(mv,{}),r.jsx(wv,{}),r.jsx(zv,{}),r.jsx(M1,{}),r.jsx(Q1,{}),r.jsx(Jy,{}),r.jsx(mx,{})]})}function yx(){return r.jsx(ro.StrictMode,{children:r.jsx(Rf,{children:r.jsx(Cf,{children:r.jsxs("div",{className:"App",children:[r.jsx(Mf,{}),r.jsx(Ip,{}),r.jsx(vx,{})]})})})})}Af.createRoot(document.getElementById("root")).render(r.jsx(yx,{})); diff --git a/docs/assets/index-CCPfFMQM.js b/docs/assets/index-CCPfFMQM.js deleted file mode 100644 index 345e11a..0000000 --- a/docs/assets/index-CCPfFMQM.js +++ /dev/null @@ -1,6739 +0,0 @@ -(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))t(o);new MutationObserver(o=>{for(const a of o)if(a.type==="childList")for(const s of a.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&t(s)}).observe(document,{childList:!0,subtree:!0});function e(o){const a={};return o.integrity&&(a.integrity=o.integrity),o.referrerPolicy&&(a.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?a.credentials="include":o.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function t(o){if(o.ep)return;o.ep=!0;const a=e(o);fetch(o.href,a)}})();var qd=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Va(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var gu={exports:{}},eo={},mu={exports:{}},tn={};/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Ht=Symbol.for("react.element"),Xd=Symbol.for("react.portal"),Zd=Symbol.for("react.fragment"),nf=Symbol.for("react.strict_mode"),rf=Symbol.for("react.profiler"),ef=Symbol.for("react.provider"),tf=Symbol.for("react.context"),of=Symbol.for("react.forward_ref"),af=Symbol.for("react.suspense"),sf=Symbol.for("react.memo"),lf=Symbol.for("react.lazy"),Vs=Symbol.iterator;function uf(n){return n===null||typeof n!="object"?null:(n=Vs&&n[Vs]||n["@@iterator"],typeof n=="function"?n:null)}var vu={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},yu=Object.assign,xu={};function Xe(n,r,e){this.props=n,this.context=r,this.refs=xu,this.updater=e||vu}Xe.prototype.isReactComponent={};Xe.prototype.setState=function(n,r){if(typeof n!="object"&&typeof n!="function"&&n!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,n,r,"setState")};Xe.prototype.forceUpdate=function(n){this.updater.enqueueForceUpdate(this,n,"forceUpdate")};function _u(){}_u.prototype=Xe.prototype;function Ka(n,r,e){this.props=n,this.context=r,this.refs=xu,this.updater=e||vu}var Ga=Ka.prototype=new _u;Ga.constructor=Ka;yu(Ga,Xe.prototype);Ga.isPureReactComponent=!0;var Ks=Array.isArray,wu=Object.prototype.hasOwnProperty,Ja={current:null},Su={key:!0,ref:!0,__self:!0,__source:!0};function ju(n,r,e){var t,o={},a=null,s=null;if(r!=null)for(t in r.ref!==void 0&&(s=r.ref),r.key!==void 0&&(a=""+r.key),r)wu.call(r,t)&&!Su.hasOwnProperty(t)&&(o[t]=r[t]);var l=arguments.length-2;if(l===1)o.children=e;else if(1>>1,Q=j[H];if(0>>1;Ho(cn,I))lno(pn,cn)?(j[H]=pn,j[ln]=I,H=ln):(j[H]=cn,j[kn]=I,H=kn);else if(lno(pn,I))j[H]=pn,j[ln]=I,H=ln;else break n}}return C}function o(j,C){var I=j.sortIndex-C.sortIndex;return I!==0?I:j.id-C.id}if(typeof performance=="object"&&typeof performance.now=="function"){var a=performance;n.unstable_now=function(){return a.now()}}else{var s=Date,l=s.now();n.unstable_now=function(){return s.now()-l}}var u=[],d=[],m=1,y=null,g=3,v=!1,w=!1,S=!1,E=typeof setTimeout=="function"?setTimeout:null,p=typeof clearTimeout=="function"?clearTimeout:null,f=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function h(j){for(var C=e(d);C!==null;){if(C.callback===null)t(d);else if(C.startTime<=j)t(d),C.sortIndex=C.expirationTime,r(u,C);else break;C=e(d)}}function x(j){if(S=!1,h(j),!w)if(e(u)!==null)w=!0,jn(T);else{var C=e(d);C!==null&&O(x,C.startTime-j)}}function T(j,C){w=!1,S&&(S=!1,p(P),P=-1),v=!0;var I=g;try{for(h(C),y=e(u);y!==null&&(!(y.expirationTime>C)||j&&!V());){var H=y.callback;if(typeof H=="function"){y.callback=null,g=y.priorityLevel;var Q=H(y.expirationTime<=C);C=n.unstable_now(),typeof Q=="function"?y.callback=Q:y===e(u)&&t(u),h(C)}else t(u);y=e(u)}if(y!==null)var bn=!0;else{var kn=e(d);kn!==null&&O(x,kn.startTime-C),bn=!1}return bn}finally{y=null,g=I,v=!1}}var b=!1,k=null,P=-1,N=5,R=-1;function V(){return!(n.unstable_now()-Rj||125H?(j.sortIndex=I,r(d,j),e(u)===null&&j===e(d)&&(S?(p(P),P=-1):S=!0,O(x,I-H))):(j.sortIndex=Q,r(u,j),w||v||(w=!0,jn(T))),j},n.unstable_shouldYield=V,n.unstable_wrapCallback=function(j){var C=g;return function(){var I=g;g=C;try{return j.apply(this,arguments)}finally{g=I}}}})(Eu);ku.exports=Eu;var _f=ku.exports;/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Nu=K,tr=_f;function A(n){for(var r="https://reactjs.org/docs/error-decoder.html?invariant="+n,e=1;e"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Zo=Object.prototype.hasOwnProperty,wf=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Js={},Ys={};function Sf(n){return Zo.call(Ys,n)?!0:Zo.call(Js,n)?!1:wf.test(n)?Ys[n]=!0:(Js[n]=!0,!1)}function jf(n,r,e,t){if(e!==null&&e.type===0)return!1;switch(typeof r){case"function":case"symbol":return!0;case"boolean":return t?!1:e!==null?!e.acceptsBooleans:(n=n.toLowerCase().slice(0,5),n!=="data-"&&n!=="aria-");default:return!1}}function Tf(n,r,e,t){if(r===null||typeof r>"u"||jf(n,r,e,t))return!0;if(t)return!1;if(e!==null)switch(e.type){case 3:return!r;case 4:return r===!1;case 5:return isNaN(r);case 6:return isNaN(r)||1>r}return!1}function Gn(n,r,e,t,o,a,s){this.acceptsBooleans=r===2||r===3||r===4,this.attributeName=t,this.attributeNamespace=o,this.mustUseProperty=e,this.propertyName=n,this.type=r,this.sanitizeURL=a,this.removeEmptyString=s}var In={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(n){In[n]=new Gn(n,0,!1,n,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(n){var r=n[0];In[r]=new Gn(r,1,!1,n[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(n){In[n]=new Gn(n,2,!1,n.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(n){In[n]=new Gn(n,2,!1,n,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(n){In[n]=new Gn(n,3,!1,n.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(n){In[n]=new Gn(n,3,!0,n,null,!1,!1)});["capture","download"].forEach(function(n){In[n]=new Gn(n,4,!1,n,null,!1,!1)});["cols","rows","size","span"].forEach(function(n){In[n]=new Gn(n,6,!1,n,null,!1,!1)});["rowSpan","start"].forEach(function(n){In[n]=new Gn(n,5,!1,n.toLowerCase(),null,!1,!1)});var Qa=/[\-:]([a-z])/g;function qa(n){return n[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(n){var r=n.replace(Qa,qa);In[r]=new Gn(r,1,!1,n,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(n){var r=n.replace(Qa,qa);In[r]=new Gn(r,1,!1,n,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(n){var r=n.replace(Qa,qa);In[r]=new Gn(r,1,!1,n,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(n){In[n]=new Gn(n,1,!1,n.toLowerCase(),null,!1,!1)});In.xlinkHref=new Gn("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(n){In[n]=new Gn(n,1,!1,n.toLowerCase(),null,!0,!0)});function Xa(n,r,e,t){var o=In.hasOwnProperty(r)?In[r]:null;(o!==null?o.type!==0:t||!(2l||o[s]!==a[l]){var u=` -`+o[s].replace(" at new "," at ");return n.displayName&&u.includes("")&&(u=u.replace("",n.displayName)),u}while(1<=s&&0<=l);break}}}finally{bo=!1,Error.prepareStackTrace=e}return(n=n?n.displayName||n.name:"")?ct(n):""}function bf(n){switch(n.tag){case 5:return ct(n.type);case 16:return ct("Lazy");case 13:return ct("Suspense");case 19:return ct("SuspenseList");case 0:case 2:case 15:return n=ko(n.type,!1),n;case 11:return n=ko(n.type.render,!1),n;case 1:return n=ko(n.type,!0),n;default:return""}}function ta(n){if(n==null)return null;if(typeof n=="function")return n.displayName||n.name||null;if(typeof n=="string")return n;switch(n){case Ee:return"Fragment";case ke:return"Portal";case na:return"Profiler";case Za:return"StrictMode";case ra:return"Suspense";case ea:return"SuspenseList"}if(typeof n=="object")switch(n.$$typeof){case Cu:return(n.displayName||"Context")+".Consumer";case Au:return(n._context.displayName||"Context")+".Provider";case ns:var r=n.render;return n=n.displayName,n||(n=r.displayName||r.name||"",n=n!==""?"ForwardRef("+n+")":"ForwardRef"),n;case rs:return r=n.displayName||null,r!==null?r:ta(n.type)||"Memo";case zr:r=n._payload,n=n._init;try{return ta(n(r))}catch{}}return null}function kf(n){var r=n.type;switch(n.tag){case 24:return"Cache";case 9:return(r.displayName||"Context")+".Consumer";case 10:return(r._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return n=r.render,n=n.displayName||n.name||"",r.displayName||(n!==""?"ForwardRef("+n+")":"ForwardRef");case 7:return"Fragment";case 5:return r;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return ta(r);case 8:return r===Za?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof r=="function")return r.displayName||r.name||null;if(typeof r=="string")return r}return null}function ne(n){switch(typeof n){case"boolean":case"number":case"string":case"undefined":return n;case"object":return n;default:return""}}function Pu(n){var r=n.type;return(n=n.nodeName)&&n.toLowerCase()==="input"&&(r==="checkbox"||r==="radio")}function Ef(n){var r=Pu(n)?"checked":"value",e=Object.getOwnPropertyDescriptor(n.constructor.prototype,r),t=""+n[r];if(!n.hasOwnProperty(r)&&typeof e<"u"&&typeof e.get=="function"&&typeof e.set=="function"){var o=e.get,a=e.set;return Object.defineProperty(n,r,{configurable:!0,get:function(){return o.call(this)},set:function(s){t=""+s,a.call(this,s)}}),Object.defineProperty(n,r,{enumerable:e.enumerable}),{getValue:function(){return t},setValue:function(s){t=""+s},stopTracking:function(){n._valueTracker=null,delete n[r]}}}}function Qt(n){n._valueTracker||(n._valueTracker=Ef(n))}function Mu(n){if(!n)return!1;var r=n._valueTracker;if(!r)return!0;var e=r.getValue(),t="";return n&&(t=Pu(n)?n.checked?"true":"false":n.value),n=t,n!==e?(r.setValue(n),!0):!1}function Ci(n){if(n=n||(typeof document<"u"?document:void 0),typeof n>"u")return null;try{return n.activeElement||n.body}catch{return n.body}}function ia(n,r){var e=r.checked;return Sn({},r,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:e??n._wrapperState.initialChecked})}function qs(n,r){var e=r.defaultValue==null?"":r.defaultValue,t=r.checked!=null?r.checked:r.defaultChecked;e=ne(r.value!=null?r.value:e),n._wrapperState={initialChecked:t,initialValue:e,controlled:r.type==="checkbox"||r.type==="radio"?r.checked!=null:r.value!=null}}function Ru(n,r){r=r.checked,r!=null&&Xa(n,"checked",r,!1)}function oa(n,r){Ru(n,r);var e=ne(r.value),t=r.type;if(e!=null)t==="number"?(e===0&&n.value===""||n.value!=e)&&(n.value=""+e):n.value!==""+e&&(n.value=""+e);else if(t==="submit"||t==="reset"){n.removeAttribute("value");return}r.hasOwnProperty("value")?aa(n,r.type,e):r.hasOwnProperty("defaultValue")&&aa(n,r.type,ne(r.defaultValue)),r.checked==null&&r.defaultChecked!=null&&(n.defaultChecked=!!r.defaultChecked)}function Xs(n,r,e){if(r.hasOwnProperty("value")||r.hasOwnProperty("defaultValue")){var t=r.type;if(!(t!=="submit"&&t!=="reset"||r.value!==void 0&&r.value!==null))return;r=""+n._wrapperState.initialValue,e||r===n.value||(n.value=r),n.defaultValue=r}e=n.name,e!==""&&(n.name=""),n.defaultChecked=!!n._wrapperState.initialChecked,e!==""&&(n.name=e)}function aa(n,r,e){(r!=="number"||Ci(n.ownerDocument)!==n)&&(e==null?n.defaultValue=""+n._wrapperState.initialValue:n.defaultValue!==""+e&&(n.defaultValue=""+e))}var dt=Array.isArray;function Be(n,r,e,t){if(n=n.options,r){r={};for(var o=0;o"+r.valueOf().toString()+"",r=qt.firstChild;n.firstChild;)n.removeChild(n.firstChild);for(;r.firstChild;)n.appendChild(r.firstChild)}});function Tt(n,r){if(r){var e=n.firstChild;if(e&&e===n.lastChild&&e.nodeType===3){e.nodeValue=r;return}}n.textContent=r}var ht={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Nf=["Webkit","ms","Moz","O"];Object.keys(ht).forEach(function(n){Nf.forEach(function(r){r=r+n.charAt(0).toUpperCase()+n.substring(1),ht[r]=ht[n]})});function zu(n,r,e){return r==null||typeof r=="boolean"||r===""?"":e||typeof r!="number"||r===0||ht.hasOwnProperty(n)&&ht[n]?(""+r).trim():r+"px"}function Fu(n,r){n=n.style;for(var e in r)if(r.hasOwnProperty(e)){var t=e.indexOf("--")===0,o=zu(e,r[e],t);e==="float"&&(e="cssFloat"),t?n.setProperty(e,o):n[e]=o}}var Of=Sn({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function ua(n,r){if(r){if(Of[n]&&(r.children!=null||r.dangerouslySetInnerHTML!=null))throw Error(A(137,n));if(r.dangerouslySetInnerHTML!=null){if(r.children!=null)throw Error(A(60));if(typeof r.dangerouslySetInnerHTML!="object"||!("__html"in r.dangerouslySetInnerHTML))throw Error(A(61))}if(r.style!=null&&typeof r.style!="object")throw Error(A(62))}}function ca(n,r){if(n.indexOf("-")===-1)return typeof r.is=="string";switch(n){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var da=null;function es(n){return n=n.target||n.srcElement||window,n.correspondingUseElement&&(n=n.correspondingUseElement),n.nodeType===3?n.parentNode:n}var fa=null,ze=null,Fe=null;function rl(n){if(n=Vt(n)){if(typeof fa!="function")throw Error(A(280));var r=n.stateNode;r&&(r=so(r),fa(n.stateNode,n.type,r))}}function Uu(n){ze?Fe?Fe.push(n):Fe=[n]:ze=n}function Hu(){if(ze){var n=ze,r=Fe;if(Fe=ze=null,rl(n),r)for(n=0;n>>=0,n===0?32:31-(Ff(n)/Uf|0)|0}var Xt=64,Zt=4194304;function ft(n){switch(n&-n){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return n&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return n&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return n}}function Ri(n,r){var e=n.pendingLanes;if(e===0)return 0;var t=0,o=n.suspendedLanes,a=n.pingedLanes,s=e&268435455;if(s!==0){var l=s&~o;l!==0?t=ft(l):(a&=s,a!==0&&(t=ft(a)))}else s=e&~o,s!==0?t=ft(s):a!==0&&(t=ft(a));if(t===0)return 0;if(r!==0&&r!==t&&!(r&o)&&(o=t&-t,a=r&-r,o>=a||o===16&&(a&4194240)!==0))return r;if(t&4&&(t|=e&16),r=n.entangledLanes,r!==0)for(n=n.entanglements,r&=t;0e;e++)r.push(n);return r}function $t(n,r,e){n.pendingLanes|=r,r!==536870912&&(n.suspendedLanes=0,n.pingedLanes=0),n=n.eventTimes,r=31-yr(r),n[r]=e}function Vf(n,r){var e=n.pendingLanes&~r;n.pendingLanes=r,n.suspendedLanes=0,n.pingedLanes=0,n.expiredLanes&=r,n.mutableReadLanes&=r,n.entangledLanes&=r,r=n.entanglements;var t=n.eventTimes;for(n=n.expirationTimes;0=mt),cl=" ",dl=!1;function lc(n,r){switch(n){case"keyup":return xp.indexOf(r.keyCode)!==-1;case"keydown":return r.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function uc(n){return n=n.detail,typeof n=="object"&&"data"in n?n.data:null}var Ne=!1;function wp(n,r){switch(n){case"compositionend":return uc(r);case"keypress":return r.which!==32?null:(dl=!0,cl);case"textInput":return n=r.data,n===cl&&dl?null:n;default:return null}}function Sp(n,r){if(Ne)return n==="compositionend"||!cs&&lc(n,r)?(n=ac(),Si=ss=$r=null,Ne=!1,n):null;switch(n){case"paste":return null;case"keypress":if(!(r.ctrlKey||r.altKey||r.metaKey)||r.ctrlKey&&r.altKey){if(r.char&&1=r)return{node:e,offset:r-n};n=t}n:{for(;e;){if(e.nextSibling){e=e.nextSibling;break n}e=e.parentNode}e=void 0}e=gl(e)}}function pc(n,r){return n&&r?n===r?!0:n&&n.nodeType===3?!1:r&&r.nodeType===3?pc(n,r.parentNode):"contains"in n?n.contains(r):n.compareDocumentPosition?!!(n.compareDocumentPosition(r)&16):!1:!1}function hc(){for(var n=window,r=Ci();r instanceof n.HTMLIFrameElement;){try{var e=typeof r.contentWindow.location.href=="string"}catch{e=!1}if(e)n=r.contentWindow;else break;r=Ci(n.document)}return r}function ds(n){var r=n&&n.nodeName&&n.nodeName.toLowerCase();return r&&(r==="input"&&(n.type==="text"||n.type==="search"||n.type==="tel"||n.type==="url"||n.type==="password")||r==="textarea"||n.contentEditable==="true")}function Cp(n){var r=hc(),e=n.focusedElem,t=n.selectionRange;if(r!==e&&e&&e.ownerDocument&&pc(e.ownerDocument.documentElement,e)){if(t!==null&&ds(e)){if(r=t.start,n=t.end,n===void 0&&(n=r),"selectionStart"in e)e.selectionStart=r,e.selectionEnd=Math.min(n,e.value.length);else if(n=(r=e.ownerDocument||document)&&r.defaultView||window,n.getSelection){n=n.getSelection();var o=e.textContent.length,a=Math.min(t.start,o);t=t.end===void 0?a:Math.min(t.end,o),!n.extend&&a>t&&(o=t,t=a,a=o),o=ml(e,a);var s=ml(e,t);o&&s&&(n.rangeCount!==1||n.anchorNode!==o.node||n.anchorOffset!==o.offset||n.focusNode!==s.node||n.focusOffset!==s.offset)&&(r=r.createRange(),r.setStart(o.node,o.offset),n.removeAllRanges(),a>t?(n.addRange(r),n.extend(s.node,s.offset)):(r.setEnd(s.node,s.offset),n.addRange(r)))}}for(r=[],n=e;n=n.parentNode;)n.nodeType===1&&r.push({element:n,left:n.scrollLeft,top:n.scrollTop});for(typeof e.focus=="function"&&e.focus(),e=0;e=document.documentMode,Oe=null,ya=null,yt=null,xa=!1;function vl(n,r,e){var t=e.window===e?e.document:e.nodeType===9?e:e.ownerDocument;xa||Oe==null||Oe!==Ci(t)||(t=Oe,"selectionStart"in t&&ds(t)?t={start:t.selectionStart,end:t.selectionEnd}:(t=(t.ownerDocument&&t.ownerDocument.defaultView||window).getSelection(),t={anchorNode:t.anchorNode,anchorOffset:t.anchorOffset,focusNode:t.focusNode,focusOffset:t.focusOffset}),yt&&At(yt,t)||(yt=t,t=Bi(ya,"onSelect"),0Le||(n.current=ba[Le],ba[Le]=null,Le--)}function gn(n,r){Le++,ba[Le]=n.current,n.current=r}var re={},Hn=te(re),Qn=te(!1),ge=re;function Ve(n,r){var e=n.type.contextTypes;if(!e)return re;var t=n.stateNode;if(t&&t.__reactInternalMemoizedUnmaskedChildContext===r)return t.__reactInternalMemoizedMaskedChildContext;var o={},a;for(a in e)o[a]=r[a];return t&&(n=n.stateNode,n.__reactInternalMemoizedUnmaskedChildContext=r,n.__reactInternalMemoizedMaskedChildContext=o),o}function qn(n){return n=n.childContextTypes,n!=null}function Fi(){vn(Qn),vn(Hn)}function Tl(n,r,e){if(Hn.current!==re)throw Error(A(168));gn(Hn,r),gn(Qn,e)}function jc(n,r,e){var t=n.stateNode;if(r=r.childContextTypes,typeof t.getChildContext!="function")return e;t=t.getChildContext();for(var o in t)if(!(o in r))throw Error(A(108,kf(n)||"Unknown",o));return Sn({},e,t)}function Ui(n){return n=(n=n.stateNode)&&n.__reactInternalMemoizedMergedChildContext||re,ge=Hn.current,gn(Hn,n),gn(Qn,Qn.current),!0}function bl(n,r,e){var t=n.stateNode;if(!t)throw Error(A(169));e?(n=jc(n,r,ge),t.__reactInternalMemoizedMergedChildContext=n,vn(Qn),vn(Hn),gn(Hn,n)):vn(Qn),gn(Qn,e)}var Or=null,lo=!1,Fo=!1;function Tc(n){Or===null?Or=[n]:Or.push(n)}function $p(n){lo=!0,Tc(n)}function ie(){if(!Fo&&Or!==null){Fo=!0;var n=0,r=fn;try{var e=Or;for(fn=1;n>=s,o-=s,Ar=1<<32-yr(r)+o|e<P?(N=k,k=null):N=k.sibling;var R=g(p,k,h[P],x);if(R===null){k===null&&(k=N);break}n&&k&&R.alternate===null&&r(p,k),f=a(R,f,P),b===null?T=R:b.sibling=R,b=R,k=N}if(P===h.length)return e(p,k),yn&&se(p,P),T;if(k===null){for(;PP?(N=k,k=null):N=k.sibling;var V=g(p,k,R.value,x);if(V===null){k===null&&(k=N);break}n&&k&&V.alternate===null&&r(p,k),f=a(V,f,P),b===null?T=V:b.sibling=V,b=V,k=N}if(R.done)return e(p,k),yn&&se(p,P),T;if(k===null){for(;!R.done;P++,R=h.next())R=y(p,R.value,x),R!==null&&(f=a(R,f,P),b===null?T=R:b.sibling=R,b=R);return yn&&se(p,P),T}for(k=t(p,k);!R.done;P++,R=h.next())R=v(k,p,P,R.value,x),R!==null&&(n&&R.alternate!==null&&k.delete(R.key===null?P:R.key),f=a(R,f,P),b===null?T=R:b.sibling=R,b=R);return n&&k.forEach(function(G){return r(p,G)}),yn&&se(p,P),T}function E(p,f,h,x){if(typeof h=="object"&&h!==null&&h.type===Ee&&h.key===null&&(h=h.props.children),typeof h=="object"&&h!==null){switch(h.$$typeof){case Yt:n:{for(var T=h.key,b=f;b!==null;){if(b.key===T){if(T=h.type,T===Ee){if(b.tag===7){e(p,b.sibling),f=o(b,h.props.children),f.return=p,p=f;break n}}else if(b.elementType===T||typeof T=="object"&&T!==null&&T.$$typeof===zr&&Ll(T)===b.type){e(p,b.sibling),f=o(b,h.props),f.ref=at(p,b,h),f.return=p,p=f;break n}e(p,b);break}else r(p,b);b=b.sibling}h.type===Ee?(f=pe(h.props.children,p.mode,x,h.key),f.return=p,p=f):(x=Ai(h.type,h.key,h.props,null,p.mode,x),x.ref=at(p,f,h),x.return=p,p=x)}return s(p);case ke:n:{for(b=h.key;f!==null;){if(f.key===b)if(f.tag===4&&f.stateNode.containerInfo===h.containerInfo&&f.stateNode.implementation===h.implementation){e(p,f.sibling),f=o(f,h.children||[]),f.return=p,p=f;break n}else{e(p,f);break}else r(p,f);f=f.sibling}f=Jo(h,p.mode,x),f.return=p,p=f}return s(p);case zr:return b=h._init,E(p,f,b(h._payload),x)}if(dt(h))return w(p,f,h,x);if(rt(h))return S(p,f,h,x);ai(p,h)}return typeof h=="string"&&h!==""||typeof h=="number"?(h=""+h,f!==null&&f.tag===6?(e(p,f.sibling),f=o(f,h),f.return=p,p=f):(e(p,f),f=Go(h,p.mode,x),f.return=p,p=f),s(p)):e(p,f)}return E}var Ge=Lc(!0),Pc=Lc(!1),Kt={},kr=te(Kt),Mt=te(Kt),Rt=te(Kt);function de(n){if(n===Kt)throw Error(A(174));return n}function _s(n,r){switch(gn(Rt,r),gn(Mt,n),gn(kr,Kt),n=r.nodeType,n){case 9:case 11:r=(r=r.documentElement)?r.namespaceURI:la(null,"");break;default:n=n===8?r.parentNode:r,r=n.namespaceURI||null,n=n.tagName,r=la(r,n)}vn(kr),gn(kr,r)}function Je(){vn(kr),vn(Mt),vn(Rt)}function Mc(n){de(Rt.current);var r=de(kr.current),e=la(r,n.type);r!==e&&(gn(Mt,n),gn(kr,e))}function ws(n){Mt.current===n&&(vn(kr),vn(Mt))}var _n=te(0);function Gi(n){for(var r=n;r!==null;){if(r.tag===13){var e=r.memoizedState;if(e!==null&&(e=e.dehydrated,e===null||e.data==="$?"||e.data==="$!"))return r}else if(r.tag===19&&r.memoizedProps.revealOrder!==void 0){if(r.flags&128)return r}else if(r.child!==null){r.child.return=r,r=r.child;continue}if(r===n)break;for(;r.sibling===null;){if(r.return===null||r.return===n)return null;r=r.return}r.sibling.return=r.return,r=r.sibling}return null}var Uo=[];function Ss(){for(var n=0;ne?e:4,n(!0);var t=Ho.transition;Ho.transition={};try{n(!1),r()}finally{fn=e,Ho.transition=t}}function Qc(){return dr().memoizedState}function Gp(n,r,e){var t=Xr(n);if(e={lane:t,action:e,hasEagerState:!1,eagerState:null,next:null},qc(n))Xc(r,e);else if(e=Nc(n,r,e,t),e!==null){var o=Vn();xr(e,n,t,o),Zc(e,r,t)}}function Jp(n,r,e){var t=Xr(n),o={lane:t,action:e,hasEagerState:!1,eagerState:null,next:null};if(qc(n))Xc(r,o);else{var a=n.alternate;if(n.lanes===0&&(a===null||a.lanes===0)&&(a=r.lastRenderedReducer,a!==null))try{var s=r.lastRenderedState,l=a(s,e);if(o.hasEagerState=!0,o.eagerState=l,_r(l,s)){var u=r.interleaved;u===null?(o.next=o,ys(r)):(o.next=u.next,u.next=o),r.interleaved=o;return}}catch{}finally{}e=Nc(n,r,o,t),e!==null&&(o=Vn(),xr(e,n,t,o),Zc(e,r,t))}}function qc(n){var r=n.alternate;return n===wn||r!==null&&r===wn}function Xc(n,r){xt=Ji=!0;var e=n.pending;e===null?r.next=r:(r.next=e.next,e.next=r),n.pending=r}function Zc(n,r,e){if(e&4194240){var t=r.lanes;t&=n.pendingLanes,e|=t,r.lanes=e,is(n,e)}}var Yi={readContext:cr,useCallback:zn,useContext:zn,useEffect:zn,useImperativeHandle:zn,useInsertionEffect:zn,useLayoutEffect:zn,useMemo:zn,useReducer:zn,useRef:zn,useState:zn,useDebugValue:zn,useDeferredValue:zn,useTransition:zn,useMutableSource:zn,useSyncExternalStore:zn,useId:zn,unstable_isNewReconciler:!1},Yp={readContext:cr,useCallback:function(n,r){return jr().memoizedState=[n,r===void 0?null:r],n},useContext:cr,useEffect:Ml,useImperativeHandle:function(n,r,e){return e=e!=null?e.concat([n]):null,ki(4194308,4,Vc.bind(null,r,n),e)},useLayoutEffect:function(n,r){return ki(4194308,4,n,r)},useInsertionEffect:function(n,r){return ki(4,2,n,r)},useMemo:function(n,r){var e=jr();return r=r===void 0?null:r,n=n(),e.memoizedState=[n,r],n},useReducer:function(n,r,e){var t=jr();return r=e!==void 0?e(r):r,t.memoizedState=t.baseState=r,n={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:n,lastRenderedState:r},t.queue=n,n=n.dispatch=Gp.bind(null,wn,n),[t.memoizedState,n]},useRef:function(n){var r=jr();return n={current:n},r.memoizedState=n},useState:Pl,useDebugValue:Es,useDeferredValue:function(n){return jr().memoizedState=n},useTransition:function(){var n=Pl(!1),r=n[0];return n=Kp.bind(null,n[1]),jr().memoizedState=n,[r,n]},useMutableSource:function(){},useSyncExternalStore:function(n,r,e){var t=wn,o=jr();if(yn){if(e===void 0)throw Error(A(407));e=e()}else{if(e=r(),Pn===null)throw Error(A(349));ve&30||Dc(t,r,e)}o.memoizedState=e;var a={value:e,getSnapshot:r};return o.queue=a,Ml(zc.bind(null,t,a,n),[n]),t.flags|=2048,Bt(9,Bc.bind(null,t,a,e,r),void 0,null),e},useId:function(){var n=jr(),r=Pn.identifierPrefix;if(yn){var e=Cr,t=Ar;e=(t&~(1<<32-yr(t)-1)).toString(32)+e,r=":"+r+"R"+e,e=It++,0<\/script>",n=n.removeChild(n.firstChild)):typeof t.is=="string"?n=s.createElement(e,{is:t.is}):(n=s.createElement(e),e==="select"&&(s=n,t.multiple?s.multiple=!0:t.size&&(s.size=t.size))):n=s.createElementNS(n,e),n[Tr]=r,n[Pt]=t,ld(n,r,!1,!1),r.stateNode=n;n:{switch(s=ca(e,t),e){case"dialog":mn("cancel",n),mn("close",n),o=t;break;case"iframe":case"object":case"embed":mn("load",n),o=t;break;case"video":case"audio":for(o=0;oQe&&(r.flags|=128,t=!0,st(a,!1),r.lanes=4194304)}else{if(!t)if(n=Gi(s),n!==null){if(r.flags|=128,t=!0,e=n.updateQueue,e!==null&&(r.updateQueue=e,r.flags|=4),st(a,!0),a.tail===null&&a.tailMode==="hidden"&&!s.alternate&&!yn)return Fn(r),null}else 2*Nn()-a.renderingStartTime>Qe&&e!==1073741824&&(r.flags|=128,t=!0,st(a,!1),r.lanes=4194304);a.isBackwards?(s.sibling=r.child,r.child=s):(e=a.last,e!==null?e.sibling=s:r.child=s,a.last=s)}return a.tail!==null?(r=a.tail,a.rendering=r,a.tail=r.sibling,a.renderingStartTime=Nn(),r.sibling=null,e=_n.current,gn(_n,t?e&1|2:e&1),r):(Fn(r),null);case 22:case 23:return Ps(),t=r.memoizedState!==null,n!==null&&n.memoizedState!==null!==t&&(r.flags|=8192),t&&r.mode&1?Zn&1073741824&&(Fn(r),r.subtreeFlags&6&&(r.flags|=8192)):Fn(r),null;case 24:return null;case 25:return null}throw Error(A(156,r.tag))}function th(n,r){switch(ps(r),r.tag){case 1:return qn(r.type)&&Fi(),n=r.flags,n&65536?(r.flags=n&-65537|128,r):null;case 3:return Je(),vn(Qn),vn(Hn),Ss(),n=r.flags,n&65536&&!(n&128)?(r.flags=n&-65537|128,r):null;case 5:return ws(r),null;case 13:if(vn(_n),n=r.memoizedState,n!==null&&n.dehydrated!==null){if(r.alternate===null)throw Error(A(340));Ke()}return n=r.flags,n&65536?(r.flags=n&-65537|128,r):null;case 19:return vn(_n),null;case 4:return Je(),null;case 10:return vs(r.type._context),null;case 22:case 23:return Ps(),null;case 24:return null;default:return null}}var li=!1,Un=!1,ih=typeof WeakSet=="function"?WeakSet:Set,U=null;function Ie(n,r){var e=n.ref;if(e!==null)if(typeof e=="function")try{e(null)}catch(t){Tn(n,r,t)}else e.current=null}function Da(n,r,e){try{e()}catch(t){Tn(n,r,t)}}var $l=!1;function oh(n,r){if(_a=Ii,n=hc(),ds(n)){if("selectionStart"in n)var e={start:n.selectionStart,end:n.selectionEnd};else n:{e=(e=n.ownerDocument)&&e.defaultView||window;var t=e.getSelection&&e.getSelection();if(t&&t.rangeCount!==0){e=t.anchorNode;var o=t.anchorOffset,a=t.focusNode;t=t.focusOffset;try{e.nodeType,a.nodeType}catch{e=null;break n}var s=0,l=-1,u=-1,d=0,m=0,y=n,g=null;r:for(;;){for(var v;y!==e||o!==0&&y.nodeType!==3||(l=s+o),y!==a||t!==0&&y.nodeType!==3||(u=s+t),y.nodeType===3&&(s+=y.nodeValue.length),(v=y.firstChild)!==null;)g=y,y=v;for(;;){if(y===n)break r;if(g===e&&++d===o&&(l=s),g===a&&++m===t&&(u=s),(v=y.nextSibling)!==null)break;y=g,g=y.parentNode}y=v}e=l===-1||u===-1?null:{start:l,end:u}}else e=null}e=e||{start:0,end:0}}else e=null;for(wa={focusedElem:n,selectionRange:e},Ii=!1,U=r;U!==null;)if(r=U,n=r.child,(r.subtreeFlags&1028)!==0&&n!==null)n.return=r,U=n;else for(;U!==null;){r=U;try{var w=r.alternate;if(r.flags&1024)switch(r.tag){case 0:case 11:case 15:break;case 1:if(w!==null){var S=w.memoizedProps,E=w.memoizedState,p=r.stateNode,f=p.getSnapshotBeforeUpdate(r.elementType===r.type?S:gr(r.type,S),E);p.__reactInternalSnapshotBeforeUpdate=f}break;case 3:var h=r.stateNode.containerInfo;h.nodeType===1?h.textContent="":h.nodeType===9&&h.documentElement&&h.removeChild(h.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(A(163))}}catch(x){Tn(r,r.return,x)}if(n=r.sibling,n!==null){n.return=r.return,U=n;break}U=r.return}return w=$l,$l=!1,w}function _t(n,r,e){var t=r.updateQueue;if(t=t!==null?t.lastEffect:null,t!==null){var o=t=t.next;do{if((o.tag&n)===n){var a=o.destroy;o.destroy=void 0,a!==void 0&&Da(r,e,a)}o=o.next}while(o!==t)}}function fo(n,r){if(r=r.updateQueue,r=r!==null?r.lastEffect:null,r!==null){var e=r=r.next;do{if((e.tag&n)===n){var t=e.create;e.destroy=t()}e=e.next}while(e!==r)}}function Ba(n){var r=n.ref;if(r!==null){var e=n.stateNode;switch(n.tag){case 5:n=e;break;default:n=e}typeof r=="function"?r(n):r.current=n}}function dd(n){var r=n.alternate;r!==null&&(n.alternate=null,dd(r)),n.child=null,n.deletions=null,n.sibling=null,n.tag===5&&(r=n.stateNode,r!==null&&(delete r[Tr],delete r[Pt],delete r[Ta],delete r[Up],delete r[Hp])),n.stateNode=null,n.return=null,n.dependencies=null,n.memoizedProps=null,n.memoizedState=null,n.pendingProps=null,n.stateNode=null,n.updateQueue=null}function fd(n){return n.tag===5||n.tag===3||n.tag===4}function Wl(n){n:for(;;){for(;n.sibling===null;){if(n.return===null||fd(n.return))return null;n=n.return}for(n.sibling.return=n.return,n=n.sibling;n.tag!==5&&n.tag!==6&&n.tag!==18;){if(n.flags&2||n.child===null||n.tag===4)continue n;n.child.return=n,n=n.child}if(!(n.flags&2))return n.stateNode}}function za(n,r,e){var t=n.tag;if(t===5||t===6)n=n.stateNode,r?e.nodeType===8?e.parentNode.insertBefore(n,r):e.insertBefore(n,r):(e.nodeType===8?(r=e.parentNode,r.insertBefore(n,e)):(r=e,r.appendChild(n)),e=e._reactRootContainer,e!=null||r.onclick!==null||(r.onclick=zi));else if(t!==4&&(n=n.child,n!==null))for(za(n,r,e),n=n.sibling;n!==null;)za(n,r,e),n=n.sibling}function Fa(n,r,e){var t=n.tag;if(t===5||t===6)n=n.stateNode,r?e.insertBefore(n,r):e.appendChild(n);else if(t!==4&&(n=n.child,n!==null))for(Fa(n,r,e),n=n.sibling;n!==null;)Fa(n,r,e),n=n.sibling}var Mn=null,mr=!1;function Br(n,r,e){for(e=e.child;e!==null;)pd(n,r,e),e=e.sibling}function pd(n,r,e){if(br&&typeof br.onCommitFiberUnmount=="function")try{br.onCommitFiberUnmount(to,e)}catch{}switch(e.tag){case 5:Un||Ie(e,r);case 6:var t=Mn,o=mr;Mn=null,Br(n,r,e),Mn=t,mr=o,Mn!==null&&(mr?(n=Mn,e=e.stateNode,n.nodeType===8?n.parentNode.removeChild(e):n.removeChild(e)):Mn.removeChild(e.stateNode));break;case 18:Mn!==null&&(mr?(n=Mn,e=e.stateNode,n.nodeType===8?zo(n.parentNode,e):n.nodeType===1&&zo(n,e),Nt(n)):zo(Mn,e.stateNode));break;case 4:t=Mn,o=mr,Mn=e.stateNode.containerInfo,mr=!0,Br(n,r,e),Mn=t,mr=o;break;case 0:case 11:case 14:case 15:if(!Un&&(t=e.updateQueue,t!==null&&(t=t.lastEffect,t!==null))){o=t=t.next;do{var a=o,s=a.destroy;a=a.tag,s!==void 0&&(a&2||a&4)&&Da(e,r,s),o=o.next}while(o!==t)}Br(n,r,e);break;case 1:if(!Un&&(Ie(e,r),t=e.stateNode,typeof t.componentWillUnmount=="function"))try{t.props=e.memoizedProps,t.state=e.memoizedState,t.componentWillUnmount()}catch(l){Tn(e,r,l)}Br(n,r,e);break;case 21:Br(n,r,e);break;case 22:e.mode&1?(Un=(t=Un)||e.memoizedState!==null,Br(n,r,e),Un=t):Br(n,r,e);break;default:Br(n,r,e)}}function Vl(n){var r=n.updateQueue;if(r!==null){n.updateQueue=null;var e=n.stateNode;e===null&&(e=n.stateNode=new ih),r.forEach(function(t){var o=hh.bind(null,n,t);e.has(t)||(e.add(t),t.then(o,o))})}}function pr(n,r){var e=r.deletions;if(e!==null)for(var t=0;to&&(o=s),t&=~a}if(t=o,t=Nn()-t,t=(120>t?120:480>t?480:1080>t?1080:1920>t?1920:3e3>t?3e3:4320>t?4320:1960*sh(t/1960))-t,10n?16:n,Wr===null)var t=!1;else{if(n=Wr,Wr=null,Xi=0,sn&6)throw Error(A(331));var o=sn;for(sn|=4,U=n.current;U!==null;){var a=U,s=a.child;if(U.flags&16){var l=a.deletions;if(l!==null){for(var u=0;uNn()-Cs?fe(n,0):As|=e),Xn(n,r)}function wd(n,r){r===0&&(n.mode&1?(r=Zt,Zt<<=1,!(Zt&130023424)&&(Zt=4194304)):r=1);var e=Vn();n=Rr(n,r),n!==null&&($t(n,r,e),Xn(n,e))}function ph(n){var r=n.memoizedState,e=0;r!==null&&(e=r.retryLane),wd(n,e)}function hh(n,r){var e=0;switch(n.tag){case 13:var t=n.stateNode,o=n.memoizedState;o!==null&&(e=o.retryLane);break;case 19:t=n.stateNode;break;default:throw Error(A(314))}t!==null&&t.delete(r),wd(n,e)}var Sd;Sd=function(n,r,e){if(n!==null)if(n.memoizedProps!==r.pendingProps||Qn.current)Yn=!0;else{if(!(n.lanes&e)&&!(r.flags&128))return Yn=!1,rh(n,r,e);Yn=!!(n.flags&131072)}else Yn=!1,yn&&r.flags&1048576&&bc(r,$i,r.index);switch(r.lanes=0,r.tag){case 2:var t=r.type;Ei(n,r),n=r.pendingProps;var o=Ve(r,Hn.current);He(r,e),o=Ts(null,r,t,n,o,e);var a=bs();return r.flags|=1,typeof o=="object"&&o!==null&&typeof o.render=="function"&&o.$$typeof===void 0?(r.tag=1,r.memoizedState=null,r.updateQueue=null,qn(t)?(a=!0,Ui(r)):a=!1,r.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,xs(r),o.updater=uo,r.stateNode=o,o._reactInternals=r,Aa(r,t,n,e),r=Pa(null,r,t,!0,a,e)):(r.tag=0,yn&&a&&fs(r),Wn(null,r,o,e),r=r.child),r;case 16:t=r.elementType;n:{switch(Ei(n,r),n=r.pendingProps,o=t._init,t=o(t._payload),r.type=t,o=r.tag=mh(t),n=gr(t,n),o){case 0:r=La(null,r,t,n,e);break n;case 1:r=Fl(null,r,t,n,e);break n;case 11:r=Bl(null,r,t,n,e);break n;case 14:r=zl(null,r,t,gr(t.type,n),e);break n}throw Error(A(306,t,""))}return r;case 0:return t=r.type,o=r.pendingProps,o=r.elementType===t?o:gr(t,o),La(n,r,t,o,e);case 1:return t=r.type,o=r.pendingProps,o=r.elementType===t?o:gr(t,o),Fl(n,r,t,o,e);case 3:n:{if(od(r),n===null)throw Error(A(387));t=r.pendingProps,a=r.memoizedState,o=a.element,Oc(n,r),Ki(r,t,null,e);var s=r.memoizedState;if(t=s.element,a.isDehydrated)if(a={element:t,isDehydrated:!1,cache:s.cache,pendingSuspenseBoundaries:s.pendingSuspenseBoundaries,transitions:s.transitions},r.updateQueue.baseState=a,r.memoizedState=a,r.flags&256){o=Ye(Error(A(423)),r),r=Ul(n,r,t,e,o);break n}else if(t!==o){o=Ye(Error(A(424)),r),r=Ul(n,r,t,e,o);break n}else for(nr=Yr(r.stateNode.containerInfo.firstChild),er=r,yn=!0,vr=null,e=Pc(r,null,t,e),r.child=e;e;)e.flags=e.flags&-3|4096,e=e.sibling;else{if(Ke(),t===o){r=Ir(n,r,e);break n}Wn(n,r,t,e)}r=r.child}return r;case 5:return Mc(r),n===null&&Ea(r),t=r.type,o=r.pendingProps,a=n!==null?n.memoizedProps:null,s=o.children,Sa(t,o)?s=null:a!==null&&Sa(t,a)&&(r.flags|=32),id(n,r),Wn(n,r,s,e),r.child;case 6:return n===null&&Ea(r),null;case 13:return ad(n,r,e);case 4:return _s(r,r.stateNode.containerInfo),t=r.pendingProps,n===null?r.child=Ge(r,null,t,e):Wn(n,r,t,e),r.child;case 11:return t=r.type,o=r.pendingProps,o=r.elementType===t?o:gr(t,o),Bl(n,r,t,o,e);case 7:return Wn(n,r,r.pendingProps,e),r.child;case 8:return Wn(n,r,r.pendingProps.children,e),r.child;case 12:return Wn(n,r,r.pendingProps.children,e),r.child;case 10:n:{if(t=r.type._context,o=r.pendingProps,a=r.memoizedProps,s=o.value,gn(Wi,t._currentValue),t._currentValue=s,a!==null)if(_r(a.value,s)){if(a.children===o.children&&!Qn.current){r=Ir(n,r,e);break n}}else for(a=r.child,a!==null&&(a.return=r);a!==null;){var l=a.dependencies;if(l!==null){s=a.child;for(var u=l.firstContext;u!==null;){if(u.context===t){if(a.tag===1){u=Lr(-1,e&-e),u.tag=2;var d=a.updateQueue;if(d!==null){d=d.shared;var m=d.pending;m===null?u.next=u:(u.next=m.next,m.next=u),d.pending=u}}a.lanes|=e,u=a.alternate,u!==null&&(u.lanes|=e),Na(a.return,e,r),l.lanes|=e;break}u=u.next}}else if(a.tag===10)s=a.type===r.type?null:a.child;else if(a.tag===18){if(s=a.return,s===null)throw Error(A(341));s.lanes|=e,l=s.alternate,l!==null&&(l.lanes|=e),Na(s,e,r),s=a.sibling}else s=a.child;if(s!==null)s.return=a;else for(s=a;s!==null;){if(s===r){s=null;break}if(a=s.sibling,a!==null){a.return=s.return,s=a;break}s=s.return}a=s}Wn(n,r,o.children,e),r=r.child}return r;case 9:return o=r.type,t=r.pendingProps.children,He(r,e),o=cr(o),t=t(o),r.flags|=1,Wn(n,r,t,e),r.child;case 14:return t=r.type,o=gr(t,r.pendingProps),o=gr(t.type,o),zl(n,r,t,o,e);case 15:return ed(n,r,r.type,r.pendingProps,e);case 17:return t=r.type,o=r.pendingProps,o=r.elementType===t?o:gr(t,o),Ei(n,r),r.tag=1,qn(t)?(n=!0,Ui(r)):n=!1,He(r,e),Cc(r,t,o),Aa(r,t,o,e),Pa(null,r,t,!0,n,e);case 19:return sd(n,r,e);case 22:return td(n,r,e)}throw Error(A(156,r.tag))};function jd(n,r){return Yu(n,r)}function gh(n,r,e,t){this.tag=n,this.key=e,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=r,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=t,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function lr(n,r,e,t){return new gh(n,r,e,t)}function Rs(n){return n=n.prototype,!(!n||!n.isReactComponent)}function mh(n){if(typeof n=="function")return Rs(n)?1:0;if(n!=null){if(n=n.$$typeof,n===ns)return 11;if(n===rs)return 14}return 2}function Zr(n,r){var e=n.alternate;return e===null?(e=lr(n.tag,r,n.key,n.mode),e.elementType=n.elementType,e.type=n.type,e.stateNode=n.stateNode,e.alternate=n,n.alternate=e):(e.pendingProps=r,e.type=n.type,e.flags=0,e.subtreeFlags=0,e.deletions=null),e.flags=n.flags&14680064,e.childLanes=n.childLanes,e.lanes=n.lanes,e.child=n.child,e.memoizedProps=n.memoizedProps,e.memoizedState=n.memoizedState,e.updateQueue=n.updateQueue,r=n.dependencies,e.dependencies=r===null?null:{lanes:r.lanes,firstContext:r.firstContext},e.sibling=n.sibling,e.index=n.index,e.ref=n.ref,e}function Ai(n,r,e,t,o,a){var s=2;if(t=n,typeof n=="function")Rs(n)&&(s=1);else if(typeof n=="string")s=5;else n:switch(n){case Ee:return pe(e.children,o,a,r);case Za:s=8,o|=8;break;case na:return n=lr(12,e,r,o|2),n.elementType=na,n.lanes=a,n;case ra:return n=lr(13,e,r,o),n.elementType=ra,n.lanes=a,n;case ea:return n=lr(19,e,r,o),n.elementType=ea,n.lanes=a,n;case Lu:return ho(e,o,a,r);default:if(typeof n=="object"&&n!==null)switch(n.$$typeof){case Au:s=10;break n;case Cu:s=9;break n;case ns:s=11;break n;case rs:s=14;break n;case zr:s=16,t=null;break n}throw Error(A(130,n==null?n:typeof n,""))}return r=lr(s,e,r,o),r.elementType=n,r.type=t,r.lanes=a,r}function pe(n,r,e,t){return n=lr(7,n,t,r),n.lanes=e,n}function ho(n,r,e,t){return n=lr(22,n,t,r),n.elementType=Lu,n.lanes=e,n.stateNode={isHidden:!1},n}function Go(n,r,e){return n=lr(6,n,null,r),n.lanes=e,n}function Jo(n,r,e){return r=lr(4,n.children!==null?n.children:[],n.key,r),r.lanes=e,r.stateNode={containerInfo:n.containerInfo,pendingChildren:null,implementation:n.implementation},r}function vh(n,r,e,t,o){this.tag=r,this.containerInfo=n,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=No(0),this.expirationTimes=No(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=No(0),this.identifierPrefix=t,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function Is(n,r,e,t,o,a,s,l,u){return n=new vh(n,r,e,l,u),r===1?(r=1,a===!0&&(r|=8)):r=0,a=lr(3,null,null,r),n.current=a,a.stateNode=n,a.memoizedState={element:t,isDehydrated:e,cache:null,transitions:null,pendingSuspenseBoundaries:null},xs(a),n}function yh(n,r,e){var t=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Ed)}catch(n){console.error(n)}}Ed(),bu.exports=ir;var Nd=bu.exports;const jh=Va(Nd);var Zl=Nd;Xo.createRoot=Zl.createRoot,Xo.hydrateRoot=Zl.hydrateRoot;const Od=K.createContext(void 0);function Th({children:n}){const[r,e]=K.useState(!0),t=()=>e(!0),o=()=>e(!1),a=()=>e(!r);return i.jsx(Od.Provider,{value:{isSidebarOpen:r,showSidebar:t,hideSidebar:o,toggleSidebar:a},children:n})}function Fs(){const n=K.useContext(Od);if(n===void 0)throw new Error("useSidebar must be used within SidebarProvider");return n}const bh="_wave_nm5to_1",kh="_gradient_nm5to_1",di={wave:bh,gradient:kh};function Eh(){return i.jsxs("div",{className:di.background,children:[i.jsx("div",{className:di.wave}),i.jsx("div",{className:di.wave}),i.jsx("div",{className:di.wave})]})}const Nh="_topbar_103sc_1",Oh="_container_103sc_22",Ah="_buttonContainer_103sc_28",Ch="_title_103sc_35",Lh="_iconLink_103sc_53",Ph="_hamburger_103sc_75",Mh="_hamburgerIcon_103sc_79",Rh="_hamburgerTop_103sc_88",Ih="_collapsed_103sc_92",Dh="_hamburgerMiddle_103sc_96",Bh="_hamburgerBottom_103sc_106",hr={topbar:Nh,container:Oh,buttonContainer:Ah,title:Ch,"animated-gradient":"_animated-gradient_103sc_1",iconLink:Lh,hamburger:Ph,hamburgerIcon:Mh,hamburgerTop:Rh,collapsed:Ih,hamburgerMiddle:Dh,hamburgerBottom:Bh};var Ad={exports:{}};(function(n,r){(function(t,o){n.exports=o(K)})(qd,e=>(()=>{var t={"./node_modules/css-mediaquery/index.js":(l,u)=>{u.match=w,u.parse=S;var d=/(?:(only|not)?\s*([^\s\(\)]+)(?:\s*and)?\s*)?(.+)?/i,m=/\(\s*([^\s\:\)]+)\s*(?:\:\s*([^\s\)]+))?\s*\)/,y=/^(?:(min|max)-)?(.+)/,g=/(em|rem|px|cm|mm|in|pt|pc)?$/,v=/(dpi|dpcm|dppx)?$/;function w(h,x){return S(h).some(function(T){var b=T.inverse,k=T.type==="all"||x.type===T.type;if(k&&b||!(k||b))return!1;var P=T.expressions.every(function(N){var R=N.feature,V=N.modifier,G=N.value,W=x[R];if(!W)return!1;switch(R){case"orientation":case"scan":return W.toLowerCase()===G.toLowerCase();case"width":case"height":case"device-width":case"device-height":G=f(G),W=f(W);break;case"resolution":G=p(G),W=p(W);break;case"aspect-ratio":case"device-aspect-ratio":case"device-pixel-ratio":G=E(G),W=E(W);break;case"grid":case"color":case"color-index":case"monochrome":G=parseInt(G,10)||1,W=parseInt(W,10)||0;break}switch(V){case"min":return W>=G;case"max":return W<=G;default:return W===G}});return P&&!b||!P&&b})}function S(h){return h.split(",").map(function(x){x=x.trim();var T=x.match(d),b=T[1],k=T[2],P=T[3]||"",N={};return N.inverse=!!b&&b.toLowerCase()==="not",N.type=k?k.toLowerCase():"all",P=P.match(/\([^\)]+\)/g)||[],N.expressions=P.map(function(R){var V=R.match(m),G=V[1].toLowerCase().match(y);return{modifier:G[1],feature:G[2],value:V[2]}}),N})}function E(h){var x=Number(h),T;return x||(T=h.match(/^(\d+)\s*\/\s*(\d+)$/),x=T[1]/T[2]),x}function p(h){var x=parseFloat(h),T=String(h).match(v)[1];switch(T){case"dpcm":return x/2.54;case"dppx":return x*96;default:return x}}function f(h){var x=parseFloat(h),T=String(h).match(g)[1];switch(T){case"em":return x*16;case"rem":return x*16;case"cm":return x*96/2.54;case"mm":return x*96/2.54/10;case"in":return x*96;case"pt":return x*72;case"pc":return x*72/12;default:return x}}},"./node_modules/hyphenate-style-name/index.js":(l,u,d)=>{d.r(u),d.d(u,{default:()=>S});var m=/[A-Z]/g,y=/^ms-/,g={};function v(E){return"-"+E.toLowerCase()}function w(E){if(g.hasOwnProperty(E))return g[E];var p=E.replace(m,v);return g[E]=y.test(p)?"-"+p:p}const S=w},"./node_modules/matchmediaquery/index.js":(l,u,d)=>{var m=d("./node_modules/css-mediaquery/index.js").match,y=typeof window<"u"?window.matchMedia:null;function g(w,S,E){var p=this;if(y&&!E){var f=y.call(window,w);this.matches=f.matches,this.media=f.media,f.addListener(T)}else this.matches=m(w,S),this.media=w;this.addListener=h,this.removeListener=x,this.dispose=b;function h(k){f&&f.addListener(k)}function x(k){f&&f.removeListener(k)}function T(k){p.matches=k.matches,p.media=k.media}function b(){f&&f.removeListener(T)}}function v(w,S,E){return new g(w,S,E)}l.exports=v},"./node_modules/object-assign/index.js":l=>{/* -object-assign -(c) Sindre Sorhus -@license MIT -*/var u=Object.getOwnPropertySymbols,d=Object.prototype.hasOwnProperty,m=Object.prototype.propertyIsEnumerable;function y(v){if(v==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(v)}function g(){try{if(!Object.assign)return!1;var v=new String("abc");if(v[5]="de",Object.getOwnPropertyNames(v)[0]==="5")return!1;for(var w={},S=0;S<10;S++)w["_"+String.fromCharCode(S)]=S;var E=Object.getOwnPropertyNames(w).map(function(f){return w[f]});if(E.join("")!=="0123456789")return!1;var p={};return"abcdefghijklmnopqrst".split("").forEach(function(f){p[f]=f}),Object.keys(Object.assign({},p)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}l.exports=g()?Object.assign:function(v,w){for(var S,E=y(v),p,f=1;f{var m=function(){};{var y=d("./node_modules/prop-types/lib/ReactPropTypesSecret.js"),g={},v=d("./node_modules/prop-types/lib/has.js");m=function(S){var E="Warning: "+S;typeof console<"u"&&console.error(E);try{throw new Error(E)}catch{}}}function w(S,E,p,f,h){for(var x in S)if(v(S,x)){var T;try{if(typeof S[x]!="function"){var b=Error((f||"React class")+": "+p+" type `"+x+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof S[x]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw b.name="Invariant Violation",b}T=S[x](E,x,f,p,null,y)}catch(P){T=P}if(T&&!(T instanceof Error)&&m((f||"React class")+": type specification of "+p+" `"+x+"` is invalid; the type checker function must return `null` or an `Error` but returned a "+typeof T+". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument)."),T instanceof Error&&!(T.message in g)){g[T.message]=!0;var k=h?h():"";m("Failed "+p+" type: "+T.message+(k??""))}}}w.resetWarningCache=function(){g={}},l.exports=w},"./node_modules/prop-types/factoryWithTypeCheckers.js":(l,u,d)=>{var m=d("./node_modules/react-is/index.js"),y=d("./node_modules/object-assign/index.js"),g=d("./node_modules/prop-types/lib/ReactPropTypesSecret.js"),v=d("./node_modules/prop-types/lib/has.js"),w=d("./node_modules/prop-types/checkPropTypes.js"),S=function(){};S=function(p){var f="Warning: "+p;typeof console<"u"&&console.error(f);try{throw new Error(f)}catch{}};function E(){return null}l.exports=function(p,f){var h=typeof Symbol=="function"&&Symbol.iterator,x="@@iterator";function T(L){var F=L&&(h&&L[h]||L[x]);if(typeof F=="function")return F}var b="<>",k={array:V("array"),bigint:V("bigint"),bool:V("boolean"),func:V("function"),number:V("number"),object:V("object"),string:V("string"),symbol:V("symbol"),any:G(),arrayOf:W,element:hn(),elementType:xn(),instanceOf:jn,node:I(),objectOf:j,oneOf:O,oneOfType:C,shape:Q,exact:bn};function P(L,F){return L===F?L!==0||1/L===1/F:L!==L&&F!==F}function N(L,F){this.message=L,this.data=F&&typeof F=="object"?F:{},this.stack=""}N.prototype=Error.prototype;function R(L){var F={},Z=0;function X(on,J,rn,en,D,an,M){if(en=en||b,an=an||rn,M!==g){if(f){var q=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");throw q.name="Invariant Violation",q}else if(typeof console<"u"){var Dn=en+":"+rn;!F[Dn]&&Z<3&&(S("You are manually calling a React.PropTypes validation function for the `"+an+"` prop on `"+en+"`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details."),F[Dn]=!0,Z++)}}return J[rn]==null?on?J[rn]===null?new N("The "+D+" `"+an+"` is marked as required "+("in `"+en+"`, but its value is `null`.")):new N("The "+D+" `"+an+"` is marked as required in "+("`"+en+"`, but its value is `undefined`.")):null:L(J,rn,en,D,an)}var Y=X.bind(null,!1);return Y.isRequired=X.bind(null,!0),Y}function V(L){function F(Z,X,Y,on,J,rn){var en=Z[X],D=ln(en);if(D!==L){var an=pn(en);return new N("Invalid "+on+" `"+J+"` of type "+("`"+an+"` supplied to `"+Y+"`, expected ")+("`"+L+"`."),{expectedType:L})}return null}return R(F)}function G(){return R(E)}function W(L){function F(Z,X,Y,on,J){if(typeof L!="function")return new N("Property `"+J+"` of component `"+Y+"` has invalid PropType notation inside arrayOf.");var rn=Z[X];if(!Array.isArray(rn)){var en=ln(rn);return new N("Invalid "+on+" `"+J+"` of type "+("`"+en+"` supplied to `"+Y+"`, expected an array."))}for(var D=0;D1?S("Invalid arguments supplied to oneOf, expected an array, got "+arguments.length+" arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z])."):S("Invalid argument supplied to oneOf, expected an array."),E;function F(Z,X,Y,on,J){for(var rn=Z[X],en=0;en0?", expected one of type ["+D.join(", ")+"]":"";return new N("Invalid "+rn+" `"+en+"` supplied to "+("`"+J+"`"+Dn+"."))}return R(X)}function I(){function L(F,Z,X,Y,on){return kn(F[Z])?null:new N("Invalid "+Y+" `"+on+"` supplied to "+("`"+X+"`, expected a ReactNode."))}return R(L)}function H(L,F,Z,X,Y){return new N((L||"React class")+": "+F+" type `"+Z+"."+X+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+Y+"`.")}function Q(L){function F(Z,X,Y,on,J){var rn=Z[X],en=ln(rn);if(en!=="object")return new N("Invalid "+on+" `"+J+"` of type `"+en+"` "+("supplied to `"+Y+"`, expected `object`."));for(var D in L){var an=L[D];if(typeof an!="function")return H(Y,on,J,D,pn(an));var M=an(rn,D,Y,on,J+"."+D,g);if(M)return M}return null}return R(F)}function bn(L){function F(Z,X,Y,on,J){var rn=Z[X],en=ln(rn);if(en!=="object")return new N("Invalid "+on+" `"+J+"` of type `"+en+"` "+("supplied to `"+Y+"`, expected `object`."));var D=y({},Z[X],L);for(var an in D){var M=L[an];if(v(L,an)&&typeof M!="function")return H(Y,on,J,an,pn(M));if(!M)return new N("Invalid "+on+" `"+J+"` key `"+an+"` supplied to `"+Y+"`.\nBad object: "+JSON.stringify(Z[X],null," ")+` -Valid keys: `+JSON.stringify(Object.keys(L),null," "));var q=M(rn,an,Y,on,J+"."+an,g);if(q)return q}return null}return R(F)}function kn(L){switch(typeof L){case"number":case"string":case"undefined":return!0;case"boolean":return!L;case"object":if(Array.isArray(L))return L.every(kn);if(L===null||p(L))return!0;var F=T(L);if(F){var Z=F.call(L),X;if(F!==L.entries){for(;!(X=Z.next()).done;)if(!kn(X.value))return!1}else for(;!(X=Z.next()).done;){var Y=X.value;if(Y&&!kn(Y[1]))return!1}}else return!1;return!0;default:return!1}}function cn(L,F){return L==="symbol"?!0:F?F["@@toStringTag"]==="Symbol"||typeof Symbol=="function"&&F instanceof Symbol:!1}function ln(L){var F=typeof L;return Array.isArray(L)?"array":L instanceof RegExp?"object":cn(F,L)?"symbol":F}function pn(L){if(typeof L>"u"||L===null)return""+L;var F=ln(L);if(F==="object"){if(L instanceof Date)return"date";if(L instanceof RegExp)return"regexp"}return F}function En(L){var F=pn(L);switch(F){case"array":case"object":return"an "+F;case"boolean":case"date":case"regexp":return"a "+F;default:return F}}function fr(L){return!L.constructor||!L.constructor.name?b:L.constructor.name}return k.checkPropTypes=w,k.resetWarningCache=w.resetWarningCache,k.PropTypes=k,k}},"./node_modules/prop-types/index.js":(l,u,d)=>{{var m=d("./node_modules/react-is/index.js"),y=!0;l.exports=d("./node_modules/prop-types/factoryWithTypeCheckers.js")(m.isElement,y)}},"./node_modules/prop-types/lib/ReactPropTypesSecret.js":l=>{var u="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";l.exports=u},"./node_modules/prop-types/lib/has.js":l=>{l.exports=Function.call.bind(Object.prototype.hasOwnProperty)},"./node_modules/react-is/cjs/react-is.development.js":(l,u)=>{/** @license React v16.13.1 - * react-is.development.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */(function(){var d=typeof Symbol=="function"&&Symbol.for,m=d?Symbol.for("react.element"):60103,y=d?Symbol.for("react.portal"):60106,g=d?Symbol.for("react.fragment"):60107,v=d?Symbol.for("react.strict_mode"):60108,w=d?Symbol.for("react.profiler"):60114,S=d?Symbol.for("react.provider"):60109,E=d?Symbol.for("react.context"):60110,p=d?Symbol.for("react.async_mode"):60111,f=d?Symbol.for("react.concurrent_mode"):60111,h=d?Symbol.for("react.forward_ref"):60112,x=d?Symbol.for("react.suspense"):60113,T=d?Symbol.for("react.suspense_list"):60120,b=d?Symbol.for("react.memo"):60115,k=d?Symbol.for("react.lazy"):60116,P=d?Symbol.for("react.block"):60121,N=d?Symbol.for("react.fundamental"):60117,R=d?Symbol.for("react.responder"):60118,V=d?Symbol.for("react.scope"):60119;function G(M){return typeof M=="string"||typeof M=="function"||M===g||M===f||M===w||M===v||M===x||M===T||typeof M=="object"&&M!==null&&(M.$$typeof===k||M.$$typeof===b||M.$$typeof===S||M.$$typeof===E||M.$$typeof===h||M.$$typeof===N||M.$$typeof===R||M.$$typeof===V||M.$$typeof===P)}function W(M){if(typeof M=="object"&&M!==null){var q=M.$$typeof;switch(q){case m:var Dn=M.type;switch(Dn){case p:case f:case g:case w:case v:case x:return Dn;default:var wr=Dn&&Dn.$$typeof;switch(wr){case E:case h:case k:case b:case S:return wr;default:return q}}case y:return q}}}var hn=p,xn=f,jn=E,O=S,j=m,C=h,I=g,H=k,Q=b,bn=y,kn=w,cn=v,ln=x,pn=!1;function En(M){return pn||(pn=!0,console.warn("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API.")),fr(M)||W(M)===p}function fr(M){return W(M)===f}function L(M){return W(M)===E}function F(M){return W(M)===S}function Z(M){return typeof M=="object"&&M!==null&&M.$$typeof===m}function X(M){return W(M)===h}function Y(M){return W(M)===g}function on(M){return W(M)===k}function J(M){return W(M)===b}function rn(M){return W(M)===y}function en(M){return W(M)===w}function D(M){return W(M)===v}function an(M){return W(M)===x}u.AsyncMode=hn,u.ConcurrentMode=xn,u.ContextConsumer=jn,u.ContextProvider=O,u.Element=j,u.ForwardRef=C,u.Fragment=I,u.Lazy=H,u.Memo=Q,u.Portal=bn,u.Profiler=kn,u.StrictMode=cn,u.Suspense=ln,u.isAsyncMode=En,u.isConcurrentMode=fr,u.isContextConsumer=L,u.isContextProvider=F,u.isElement=Z,u.isForwardRef=X,u.isFragment=Y,u.isLazy=on,u.isMemo=J,u.isPortal=rn,u.isProfiler=en,u.isStrictMode=D,u.isSuspense=an,u.isValidElementType=G,u.typeOf=W})()},"./node_modules/react-is/index.js":(l,u,d)=>{l.exports=d("./node_modules/react-is/cjs/react-is.development.js")},"./node_modules/shallow-equal/dist/index.esm.js":(l,u,d)=>{d.r(u),d.d(u,{shallowEqualArrays:()=>y,shallowEqualObjects:()=>m});function m(g,v){if(g===v)return!0;if(!g||!v)return!1;var w=Object.keys(g),S=Object.keys(v),E=w.length;if(S.length!==E)return!1;for(var p=0;p{Object.defineProperty(u,"__esModule",{value:!0});var m=d("react"),y=(0,m.createContext)(void 0);u.default=y},"./src/index.ts":function(l,u,d){var m=this&&this.__importDefault||function(S){return S&&S.__esModule?S:{default:S}};Object.defineProperty(u,"__esModule",{value:!0}),u.Context=u.toQuery=u.useMediaQuery=u.default=void 0;var y=m(d("./src/useMediaQuery.ts"));u.useMediaQuery=y.default;var g=m(d("./src/Component.ts"));u.default=g.default;var v=m(d("./src/toQuery.ts"));u.toQuery=v.default;var w=m(d("./src/Context.ts"));u.Context=w.default},"./src/mediaQuery.ts":function(l,u,d){var m=this&&this.__assign||function(){return m=Object.assign||function(x){for(var T,b=1,k=arguments.length;b{l.exports=e}},o={};function a(l){var u=o[l];if(u!==void 0)return u.exports;var d=o[l]={exports:{}};return t[l].call(d.exports,d,d.exports,a),d.exports}a.d=(l,u)=>{for(var d in u)a.o(u,d)&&!a.o(l,d)&&Object.defineProperty(l,d,{enumerable:!0,get:u[d]})},a.o=(l,u)=>Object.prototype.hasOwnProperty.call(l,u),a.r=l=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(l,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(l,"__esModule",{value:!0})};var s=a("./src/index.ts");return s})())})(Ad);var Cd=Ad.exports;function zh(n){return n<.5?2*n*n:1-Math.pow(-2*n+2,2)/2}function Ld({selector:n,duration:r=1500,offset:e=0}){const t=K.useRef(null),o=K.useRef(0),a=K.useRef(!1),s=()=>{o.current&&cancelAnimationFrame(o.current)},l=()=>a.current=!0,u=K.useCallback(()=>{if(!t.current)return;s(),a.current=!1;const m=t.current.offsetTop,y=window.scrollY,g=m-y-e,v=performance.now();if(!g)return;const w=S=>{const E=S-v,p=E/r,f=zh(p>1?1:p),h=y+g*f;window.scrollTo({top:h}),E(t.current=document.querySelector(n),window.addEventListener("wheel",l,{passive:!0}),window.addEventListener("touchmove",l,{passive:!0}),()=>{s(),window.removeEventListener("wheel",l),window.removeEventListener("touchmove",l)}),[n]),u}function rr(...n){return n.filter(Boolean).join(" ")}const Fh="_brand_18f9t_1",Uh="_bounce_18f9t_19",Hh="_glowDisappear_18f9t_23",$h="_heartBeat_18f9t_27",Wh="_rubberBand_18f9t_31",Vh="_rotate_18f9t_35",oe={brand:Fh,bounce:Uh,glowDisappear:Hh,"glow-disappear":"_glow-disappear_18f9t_1",heartBeat:$h,"heart-beat":"_heart-beat_18f9t_1",rubberBand:Wh,"rubber-band":"_rubber-band_18f9t_1",rotate:Vh};function Kh(){const[n,r]=K.useState(oe.rotate),[e,t]=K.useState(!1),o=[oe.bounce,oe.glowDisappear,oe.heartBeat,oe.rubberBand,oe.rotate],a=rr(oe.brand,e&&n),s=()=>t(!1),l=()=>{const u=Math.floor(Math.random()*o.length),d=o[u];t(!0),r(d)};return i.jsx("div",{className:a,onClick:l,onAnimationEnd:s,children:"JWL"})}const Gh="_container_uucyv_1",Jh="_input_uucyv_6",Yh="_label_uucyv_16",Qh="_indicator_uucyv_20",qh="_decoration_uucyv_28",Xh="_cloud_uucyv_1",Zh="_twinkle_uucyv_1",ut={container:Gh,input:Jh,label:Yh,indicator:Qh,decoration:qh,cloud:Xh,twinkle:Zh};function nu(){const n=document.documentElement,[r,e]=K.useState(!1),t=()=>{const a=new Event("themeChange");n.dispatchEvent(a)},o=()=>{e(!r),n.setAttribute("data-theme",r?"dark":"light"),t()};return K.useEffect(()=>{const a=n.getAttribute("data-theme");e(a==="light"),t()},[]),i.jsxs("div",{className:ut.container,children:[i.jsx("input",{className:ut.input,"aria-label":"theme switch",id:"theme-switch",type:"checkbox",checked:r,onChange:o}),i.jsxs("label",{className:ut.label,htmlFor:"theme-switch",children:[i.jsx("span",{className:ut.indicator}),i.jsx("span",{className:ut.decoration})]})]})}function ng(){const n=document.documentElement,[r,e]=K.useState("light"),t=()=>{const o=n.getAttribute("data-theme")??"light";e(o)};return K.useEffect(()=>(n.addEventListener("themeChange",t),()=>n.removeEventListener("themeChange",t)),[n]),r}function rg(){const r=ng()==="dark"?"#FFFFFF":"#181616";return i.jsx("svg",{viewBox:"0 0 128 128",children:i.jsxs("g",{fill:r,children:[i.jsx("path",{clipRule:"evenodd",fillRule:"evenodd",d:"M64 5.103c-33.347 0-60.388 27.035-60.388 60.388 0 26.682 17.303 49.317 41.297 57.303 3.017.56 4.125-1.31 4.125-2.905 0-1.44-.056-6.197-.082-11.243-16.8 3.653-20.345-7.125-20.345-7.125-2.747-6.98-6.705-8.836-6.705-8.836-5.48-3.748.413-3.67.413-3.67 6.063.425 9.257 6.223 9.257 6.223 5.386 9.23 14.127 6.562 17.573 5.02.542-3.903 2.107-6.568 3.834-8.076-13.413-1.525-27.514-6.704-27.514-29.843 0-6.593 2.36-11.98 6.223-16.21-.628-1.52-2.695-7.662.584-15.98 0 0 5.07-1.623 16.61 6.19C53.7 35 58.867 34.327 64 34.304c5.13.023 10.3.694 15.127 2.033 11.526-7.813 16.59-6.19 16.59-6.19 3.287 8.317 1.22 14.46.593 15.98 3.872 4.23 6.215 9.617 6.215 16.21 0 23.194-14.127 28.3-27.574 29.796 2.167 1.874 4.097 5.55 4.097 11.183 0 8.08-.07 14.583-.07 16.572 0 1.607 1.088 3.49 4.148 2.897 23.98-7.994 41.263-30.622 41.263-57.294C124.388 32.14 97.35 5.104 64 5.104z"}),i.jsx("path",{d:"M26.484 91.806c-.133.3-.605.39-1.035.185-.44-.196-.685-.605-.543-.906.13-.31.603-.395 1.04-.188.44.197.69.61.537.91zm2.446 2.729c-.287.267-.85.143-1.232-.28-.396-.42-.47-.983-.177-1.254.298-.266.844-.14 1.24.28.394.426.472.984.17 1.255zm2.382 3.477c-.37.258-.976.017-1.35-.52-.37-.538-.37-1.183.01-1.44.373-.258.97-.025 1.35.507.368.545.368 1.19-.01 1.452zm3.261 3.361c-.33.365-1.036.267-1.552-.23-.527-.487-.674-1.18-.343-1.544.336-.366 1.045-.264 1.564.23.527.486.686 1.18.333 1.543zm4.5 1.951c-.147.473-.825.688-1.51.486-.683-.207-1.13-.76-.99-1.238.14-.477.823-.7 1.512-.485.683.206 1.13.756.988 1.237m4.943.361c.017.498-.563.91-1.28.92-.723.017-1.308-.387-1.315-.877 0-.503.568-.91 1.29-.924.717-.013 1.306.387 1.306.88zm4.598-.782c.086.485-.413.984-1.126 1.117-.7.13-1.35-.172-1.44-.653-.086-.498.422-.997 1.122-1.126.714-.123 1.354.17 1.444.663zm0 0"})]})})}const eg=72;function tg({forwardedRef:n}){const r=K.useRef(null),e=Ld({selector:"main",offset:eg}),{isSidebarOpen:t,toggleSidebar:o}=Fs(),a=Cd.useMediaQuery({maxWidth:768}),s=rr(hr.hamburgerIcon,!t&&hr.collapsed),l=v=>{v.preventDefault(),window.history.replaceState({},"",window.location.pathname),e()},u=()=>o(),d=()=>!a&&i.jsx(Kh,{}),m=()=>!a&&i.jsx("a",{href:"main",onClick:l,role:"button",children:i.jsx("h1",{className:hr.title,children:"LeetCode Cheatsheet"})}),y=()=>i.jsx("a",{href:"https://github.com/jwl-7/leetcode-cheatsheet","aria-label":"GitHub source",className:hr.iconLink,target:"_blank",children:i.jsx(rg,{})}),g=()=>a?i.jsxs(i.Fragment,{children:[i.jsx(nu,{}),y()]}):i.jsxs("div",{className:hr.buttonContainer,children:[y(),i.jsx(nu,{})]});return i.jsx("header",{ref:r,className:hr.topbar,children:i.jsxs("div",{className:hr.container,children:[i.jsxs("div",{ref:n,className:hr.hamburger,onClick:u,children:[i.jsx("span",{className:rr(s,hr.hamburgerTop)}),i.jsx("span",{className:rr(s,hr.hamburgerMiddle)}),i.jsx("span",{className:rr(s,hr.hamburgerBottom)})]}),d(),m(),g()]})})}const ig="_sidebar_14bou_1",og="_exit_14bou_21",ag="_hide_14bou_24",sg="_scrollContainer_14bou_28",fi={sidebar:ig,"sidebar-enter":"_sidebar-enter_14bou_1",exit:og,"sidebar-exit":"_sidebar-exit_14bou_1",hide:ag,scrollContainer:sg};function xo(n,r){const e=t=>{const o=a=>a.current&&!a.current.contains(t.target);(Array.isArray(n)?n.every(o):o(n))&&r()};K.useEffect(()=>(document.addEventListener("click",e),()=>document.removeEventListener("click",e)),[n,r])}const lg="_accordion_1hmri_1",ug="_button_1hmri_6",cg="_open_1hmri_25",dg="_content_1hmri_29",pi={accordion:lg,button:ug,open:cg,content:dg};function fg(n){const r=parseFloat(n);return!isNaN(r)&&isFinite(r)}function ru(n){return typeof n=="string"&&n[n.length-1]==="%"&&fg(n.substring(0,n.length-1))}function Yo(n,r,e){r===0&&!e&&(n!=null&&n.style)&&(n==null?void 0:n.children.length)>0&&(n.style.display="none")}function pg(n,r){r===0&&(n!=null&&n.style)&&(n.style.display="")}const hg={animating:"rah-animating",animatingUp:"rah-animating--up",animatingDown:"rah-animating--down",animatingToHeightZero:"rah-animating--to-height-zero",animatingToHeightAuto:"rah-animating--to-height-auto",animatingToHeightSpecific:"rah-animating--to-height-specific",static:"rah-static",staticHeightZero:"rah-static--height-zero",staticHeightAuto:"rah-static--height-auto",staticHeightSpecific:"rah-static--height-specific"};function eu(n,r){return[n.static,r===0&&n.staticHeightZero,typeof r=="number"&&r>0?n.staticHeightSpecific:null,r==="auto"&&n.staticHeightAuto].filter(e=>e).join(" ")}const gg=["animateOpacity","animationStateClasses","applyInlineTransitions","children","className","contentClassName","contentRef","delay","duration","easing","height","onHeightAnimationEnd","onHeightAnimationStart","style","disableDisplayNone"],mg=_i.forwardRef((n,r)=>{const{animateOpacity:e=!1,animationStateClasses:t={},applyInlineTransitions:o=!0,children:a,className:s="",contentClassName:l,delay:u=0,disableDisplayNone:d=!1,duration:m=500,easing:y="ease",height:g,onHeightAnimationEnd:v,onHeightAnimationStart:w,style:S,contentRef:E}=n,p=Object.assign({},n);gg.forEach(cn=>{delete p[cn]});const f=K.useRef(g),h=K.useRef(null),x=K.useRef(),T=K.useRef(),b=K.useRef(Object.assign(Object.assign({},hg),t)),k=typeof window<"u",P=K.useRef(k&&window.matchMedia?window.matchMedia("(prefers-reduced-motion)").matches:!1),N=P.current?0:u,R=P.current?0:m;let V=g,G="visible";typeof g=="number"?(V=g<0?0:g,G="hidden"):ru(V)&&(V=g==="0%"?0:g,G="hidden");const[W,hn]=K.useState(V),[xn,jn]=K.useState(G),[O,j]=K.useState(!1),[C,I]=K.useState(eu(b.current,g));K.useEffect(()=>{Yo(h.current,W,d)},[]),K.useEffect(()=>{if(g!==f.current&&h.current){pg(h.current,f.current),h.current.style.overflow="hidden";const cn=h.current.offsetHeight;h.current.style.overflow="";const ln=R+N;let pn,En,fr="hidden",L;const F=f.current==="auto";typeof g=="number"?(pn=g<0?0:g,En=pn):ru(g)?(pn=g==="0%"?0:g,En=pn):(pn=cn,En="auto",fr=void 0),F&&(En=pn,pn=cn);const Z=[b.current.animating,(f.current==="auto"||gf.current)&&b.current.animatingDown,En===0&&b.current.animatingToHeightZero,En==="auto"&&b.current.animatingToHeightAuto,typeof En=="number"&&En>0?b.current.animatingToHeightSpecific:null].filter(Y=>Y).join(" "),X=eu(b.current,En);hn(pn),jn("hidden"),j(!F),I(Z),clearTimeout(T.current),clearTimeout(x.current),F?(L=!0,T.current=setTimeout(()=>{hn(En),jn(fr),j(L),w==null||w(En)},50),x.current=setTimeout(()=>{j(!1),I(X),Yo(h.current,En,d),v==null||v(En)},ln)):(w==null||w(pn),T.current=setTimeout(()=>{hn(En),jn(fr),j(!1),I(X),g!=="auto"&&Yo(h.current,pn,d),v==null||v(pn)},ln))}return f.current=g,()=>{clearTimeout(T.current),clearTimeout(x.current)}},[g]);const H=Object.assign(Object.assign({},S),{height:W,overflow:xn||(S==null?void 0:S.overflow)});O&&o&&(H.transition=`height ${R}ms ${y} ${N}ms`,S!=null&&S.transition&&(H.transition=`${S.transition}, ${H.transition}`),H.WebkitTransition=H.transition);const Q={};e&&(Q.transition=`opacity ${R}ms ${y} ${N}ms`,Q.WebkitTransition=Q.transition,W===0&&(Q.opacity=0));const kn=typeof p["aria-hidden"]<"u"?p["aria-hidden"]:g===0;return _i.createElement("div",Object.assign({},p,{"aria-hidden":kn,className:`${C} ${s}`,style:H,ref:r}),_i.createElement("div",{className:l,style:Q,ref:cn=>{h.current=cn,E&&(E.current=cn)}},a))});function vg(){return i.jsx("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"black",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:i.jsx("polyline",{points:"6 9 12 15 18 9"})})}function $n({title:n,children:r}){const[e,t]=K.useState(!1),o=e?"auto":0,a=rr(pi.button,e&&pi.open),s=()=>t(!e);return i.jsxs("div",{className:pi.accordion,children:[i.jsxs("button",{className:a,onClick:s,children:[i.jsx("span",{children:n}),i.jsx(vg,{})]}),i.jsx(mg,{animateOpacity:!0,height:o,duration:400,children:i.jsx("div",{className:pi.content,children:r})})]})}const yg="_linkWrapper_1logo_1",xg="_link_1logo_1",tu={linkWrapper:yg,link:xg},_g="_tooltip_1edpy_1",wg="_exit_1edpy_13",Sg="_text_1edpy_27",Qo={tooltip:_g,"tooltip-enter":"_tooltip-enter_1edpy_1",exit:wg,"tooltip-exit":"_tooltip-exit_1edpy_1",text:Sg};function jg({anchorRef:n,content:r,showTooltip:e}){const t=K.useRef(null),[o,a]=K.useState(null),[s,l]=K.useState(!1),u=rr(Qo.tooltip,!e&&Qo.exit),d=()=>l(!1),m=()=>{e||l(!0)};return K.useEffect(()=>{var S;if(!e||!n.current)return;const y=n.current.getBoundingClientRect(),g=((S=t.current)==null?void 0:S.offsetHeight)??0,v=y.left+window.scrollX,w=y.top+window.scrollY-g-4;a({top:w,left:v})},[e]),(e||!s)&&n.current&&jh.createPortal(i.jsx("div",{ref:t,className:u,style:o??{},onAnimationStart:d,onAnimationEnd:m,children:i.jsx("span",{className:Qo.text,children:r})}),document.body)}function z({href:n,description:r}){const e=K.useRef(null),[t,o]=K.useState(!1),a=Ld({selector:n,offset:72});let s;const l=m=>{m.preventDefault(),window.history.replaceState({},"",n),clearTimeout(s),o(!1),a()},u=()=>{s=setTimeout(()=>{o(!0)},700)},d=()=>{clearTimeout(s),o(!1)};return i.jsxs("div",{className:tu.linkWrapper,children:[i.jsx("a",{ref:e,href:n,className:tu.link,onClick:l,role:"button","aria-description":r,onMouseEnter:u,onMouseLeave:d,children:r}),i.jsx(jg,{anchorRef:e,content:r,showTooltip:t})]})}function Tg(){return i.jsxs(i.Fragment,{children:[i.jsxs($n,{title:"Big O",children:[i.jsx(z,{href:"#bigo-chart",description:"Time/Space Complexities"}),i.jsx(z,{href:"#bigo-data-structure-operations-table",description:"Data Structure Operations"}),i.jsx(z,{href:"#bigo-sorting-algorithms-table",description:"Sorting Algorithms"})]}),i.jsxs($n,{title:"Array",children:[i.jsx(z,{href:"#array-two-pointers-one-input",description:"two pointers: one input, opposite ends"}),i.jsx(z,{href:"#array-two-pointers-two-inputs",description:"two pointers: two inputs, exhaust both"}),i.jsx(z,{href:"#array-sliding-window",description:"sliding window"}),i.jsx(z,{href:"#array-prefix-sum",description:"prefix sum"}),i.jsx(z,{href:"#array-string-building",description:"efficient string building"})]}),i.jsxs($n,{title:"Hash Map",children:[i.jsx(z,{href:"#hashmap-find-number-of-subarrays",description:"find number of subarrays that fit an exact criteria"}),i.jsx(z,{href:"#hashmap-sliding-window",description:"sliding window"})]}),i.jsxs($n,{title:"Linked List",children:[i.jsx(z,{href:"#linkedlist-fast-and-slow-pointer",description:"fast and slow pointer"}),i.jsx(z,{href:"#linkedlist-reverse",description:"reverse linked list"})]}),i.jsxs($n,{title:"Stack",children:[i.jsx(z,{href:"#stack-monotonic-increasing",description:"monotonic increasing stack"}),i.jsx(z,{href:"#stack-monotonic-decreasing",description:"monotonic decreasing stack"})]}),i.jsxs($n,{title:"Binary Tree",children:[i.jsx(z,{href:"#tree-dfs-recursive",description:"DFS (recursive)"}),i.jsx(z,{href:"#tree-dfs-iterative",description:"DFS (iterative)"}),i.jsx(z,{href:"#tree-bfs",description:"BFS"})]}),i.jsxs($n,{title:"Graph",children:[i.jsx(z,{href:"#graph-dfs-recursive",description:"DFS (recursive)"}),i.jsx(z,{href:"#graph-dfs-iterative",description:"DFS (iterative)"}),i.jsx(z,{href:"#graph-bfs",description:"BFS"}),i.jsx(z,{href:"#graph-dijkstra",description:"Dijkstra (shortest path)"}),i.jsx(z,{href:"#graph-bellman-ford",description:"Bellman-Ford (shortest path)"}),i.jsx(z,{href:"#graph-kahn",description:"Kahn (topological sort)"}),i.jsx(z,{href:"#graph-kruskal",description:"Kruskal (mst)"}),i.jsx(z,{href:"#graph-prim",description:"Prim (mst)"})]}),i.jsx($n,{title:"Heap",children:i.jsx(z,{href:"#heap-find-top-k-elements",description:"find top k elements with heap"})}),i.jsxs($n,{title:"Binary Search",children:[i.jsx(z,{href:"#binarysearch-binary-search",description:"binary search"}),i.jsx(z,{href:"#binarysearch-duplicate-elements-left-insertion",description:"duplicate elements, left-most insertion point"}),i.jsx(z,{href:"#binarysearch-duplicate-elements-right-insertion",description:"duplicate elements, right-most insertion point"}),i.jsx(z,{href:"#binarysearch-greedy-minimum",description:"greedy (minimum)"}),i.jsx(z,{href:"#binarysearch-greedy-maximum",description:"greedy (maximum)"})]}),i.jsx($n,{title:"Backtracking",children:i.jsx(z,{href:"#backtracking-backtracking",description:"backtracking"})}),i.jsxs($n,{title:"Dynamic Programming",children:[i.jsx(z,{href:"#dp-top-down",description:"top-down DP"}),i.jsx(z,{href:"#dp-bottom-up",description:"bottom-up DP"}),i.jsx(z,{href:"#dp-kadane",description:"Kadane (max-sum subarray)"})]}),i.jsxs($n,{title:"Bit Manipulation",children:[i.jsx(z,{href:"#bitmanipulation-test-kth-bit",description:"test kth bit"}),i.jsx(z,{href:"#bitmanipulation-set-kth-bit",description:"set kth bit"}),i.jsx(z,{href:"#bitmanipulation-clear-kth-bit",description:"clear kth bit"}),i.jsx(z,{href:"#bitmanipulation-get-rightmost-bit",description:"get rightmost bit"}),i.jsx(z,{href:"#bitmanipulation-count-set-bits",description:"count set bits"}),i.jsx(z,{href:"#bitmanipulation-multiply-power-of-two",description:"multiply by 2^k"}),i.jsx(z,{href:"#bitmanipulation-divide-power-of-two",description:"divide by 2^k"}),i.jsx(z,{href:"#bitmanipulation-check-power-of-two",description:"check if number is power of 2"}),i.jsx(z,{href:"#bitmanipulation-swap-variables",description:"swap two variables"})]}),i.jsxs($n,{title:"Matrix",children:[i.jsx(z,{href:"#matrix-create-copy",description:"create / copy"}),i.jsx(z,{href:"#matrix-diagonals",description:"main / anti diagonals"}),i.jsx(z,{href:"#matrix-rotate-transpose",description:"rotate / transpose"})]}),i.jsxs($n,{title:"Data Structures",children:[i.jsx(z,{href:"#ds-array",description:"array"}),i.jsx(z,{href:"#ds-hash-map",description:"hashmap"}),i.jsx(z,{href:"#ds-linked-list",description:"linked list"}),i.jsx(z,{href:"#ds-doubly-linked-list",description:"doubly linked list"}),i.jsx(z,{href:"#ds-binary-tree",description:"binary tree"}),i.jsx(z,{href:"#ds-binary-search-tree",description:"binary search tree"}),i.jsx(z,{href:"#ds-graph",description:"graph"}),i.jsx(z,{href:"#ds-union-find",description:"union find"}),i.jsx(z,{href:"#ds-union-find-optimized",description:"union find optimized"}),i.jsx(z,{href:"#ds-trie",description:"trie"})]}),i.jsxs($n,{title:"Sorting Algorithms",children:[i.jsx(z,{href:"#sort-bubble",description:"bubble sort"}),i.jsx(z,{href:"#sort-selection",description:"selection sort"}),i.jsx(z,{href:"#sort-insertion",description:"insertion sort"}),i.jsx(z,{href:"#sort-shell",description:"shell sort"}),i.jsx(z,{href:"#sort-merge",description:"mergesort"}),i.jsx(z,{href:"#sort-quick",description:"quicksort"}),i.jsx(z,{href:"#sort-tim",description:"timsort"}),i.jsx(z,{href:"#sort-heap",description:"heapsort"}),i.jsx(z,{href:"#sort-counting",description:"counting sort"}),i.jsx(z,{href:"#sort-bucket",description:"bucket sort"}),i.jsx(z,{href:"#sort-radix",description:"radix sort"}),i.jsx(z,{href:"#sort-cube",description:"cubesort"}),i.jsx(z,{href:"#sort-bogo",description:"bogo sort"}),i.jsx(z,{href:"#sort-pancake",description:"pancake sort"}),i.jsx(z,{href:"#sort-sleep",description:"sleep sort"})]})]})}function bg({hamburgerButtonRef:n}){const r=K.useRef(null),{isSidebarOpen:e,showSidebar:t,hideSidebar:o}=Fs(),[a,s]=K.useState(!1),l=rr(fi.sidebar,!e&&fi.exit,!e&&a&&fi.hide),u=v=>{v&&e?o():!v&&!e&&t()},d=Cd.useMediaQuery({maxWidth:768},void 0,u),m=()=>{d&&e&&o()},y=()=>s(!1),g=()=>{e||s(!0)};return xo([r,n],m),i.jsx("nav",{ref:r,className:l,onAnimationStart:y,onAnimationEndCapture:g,children:i.jsx("div",{className:fi.scrollContainer,children:i.jsx(Tg,{})})})}function kg(){const n=K.useRef(null);return i.jsxs("div",{id:"AppBar",children:[i.jsx(tg,{forwardedRef:n}),i.jsx(bg,{hamburgerButtonRef:n})]})}const Eg="_main_1p6ym_1",Ng="_sidebarHidden_1p6ym_11",iu={main:Eg,sidebarHidden:Ng},Og="_container_1htmy_1",Ag="_sectionHeader_1htmy_7",un={container:Og,sectionHeader:Ag},Cg="_container_5c21h_1",Lg="_label_5c21h_13",Pg="_tableWrapper_5c21h_21",Mg="_red_5c21h_30",Rg="_oliveGreen_5c21h_34",Ig="_green_5c21h_38",Dg="_orange_5c21h_42",Bg="_yellow_5c21h_46",zg="_gray_5c21h_50",_={container:Cg,label:Lg,tableWrapper:Pg,red:Mg,oliveGreen:Rg,green:Ig,orange:Dg,yellow:Bg,gray:zg};function Fg(){const n={red:"rgba(255, 77, 77, 0.7)",orange:"rgba(255, 161, 22, 0.7)",yellow:"rgba(255, 216, 102, 0.7)",oliveGreen:"rgba(169, 220, 118, 0.7)",green:"rgba(63, 200, 111, 0.7)"};return i.jsx("section",{id:"bigo-chart",children:i.jsxs("div",{className:_.container,children:[i.jsx("h3",{children:"Big-O Complexity Chart"}),i.jsxs("svg",{id:"chart",viewBox:"0 0 800 500",children:[i.jsx("path",{d:"M50 450 L 50 0 L 800 0 L 800 450 Z",fill:n.red}),i.jsx("path",{d:"M50 450 L 800 0 L 800 450 Z",fill:n.orange}),i.jsx("path",{d:"M50 450 L 800 450 L 800 330 Z",fill:n.yellow}),i.jsx("path",{d:"M50 450 L 800 450 L 800 410 Z",fill:n.oliveGreen}),i.jsx("path",{d:"M50 450 L 800 450 L 800 440 Z",fill:n.green}),i.jsx("path",{d:"M50 0 L 50 450 L 800 450",fill:"transparent",stroke:"black",strokeWidth:"2"}),i.jsx("path",{d:"M50 448 L 800 448",fill:"transparent",stroke:"black",strokeWidth:"2"}),i.jsx("text",{x:"700",y:"438",fill:"black",children:"O(log n), O(1)"}),i.jsx("path",{d:"M50 450 L 800 400",fill:"transparent",stroke:"black",strokeWidth:"2"}),i.jsx("text",{x:"760",y:"390",fill:"black",children:"O(n)"}),i.jsx("path",{d:"M50 450 Q 400 350, 800 150",fill:"transparent",stroke:"black",strokeWidth:"2"}),i.jsx("text",{x:"630",y:"190",fill:"black",children:"O(n log n)"}),i.jsx("path",{d:"M50 450 Q 180 380, 250 0",fill:"transparent",stroke:"black",strokeWidth:"2"}),i.jsx("text",{x:"260",y:"30",fill:"black",children:"O(n^2)"}),i.jsx("path",{d:"M50 450 C 100 430, 120 350, 120 0",fill:"transparent",stroke:"black",strokeWidth:"2"}),i.jsx("text",{x:"125",y:"20",fill:"black",children:"O(2^n)"}),i.jsx("path",{d:"M50 450 C 80 450, 80 350, 80 0",fill:"transparent",stroke:"black",strokeWidth:"2"}),i.jsx("text",{x:"80",y:"20",fill:"black",children:"O(n!)"}),i.jsx("text",{className:_.label,x:"0",y:"0",transform:"translate(30 230) rotate(-90)",fill:"black",children:"Operations"}),i.jsx("text",{className:_.label,x:"0",y:"0",transform:"translate(420 470)",fill:"black",children:"Elements"})]})]})})}function Ug(){const n=K.useRef(null),[r,e]=K.useState(""),t=()=>{if(r){const a=n.current,s=a==null?void 0:a.querySelector(`tr[data-row-number="${r}"]`);s==null||s.removeAttribute("focused")}},o=a=>{const s=a.currentTarget,l=s.getAttribute("data-row-number")??"";t(),l===r?e(""):(s.setAttribute("focused",""),e(l))};return xo(n,t),i.jsx("section",{id:"bigo-data-structure-operations-table",children:i.jsxs("div",{className:_.container,children:[i.jsx("h3",{children:"Data Structure Operations"}),i.jsx("div",{className:_.tableWrapper,children:i.jsx("table",{ref:n,children:i.jsxs("tbody",{children:[i.jsxs("tr",{onClick:o,"data-row-number":"1",children:[i.jsx("th",{children:"Data Structure"}),i.jsx("th",{colSpan:8,children:"Time Complexity"}),i.jsx("th",{children:"Space Complexity"})]}),i.jsxs("tr",{onClick:o,"data-row-number":"2",children:[i.jsx("th",{}),i.jsx("th",{colSpan:4,children:"Average"}),i.jsx("th",{colSpan:4,children:"Worst"}),i.jsx("th",{children:"Worst"})]}),i.jsxs("tr",{onClick:o,"data-row-number":"3",children:[i.jsx("th",{}),i.jsx("th",{children:"Access"}),i.jsx("th",{children:"Search"}),i.jsx("th",{children:"Insertion"}),i.jsx("th",{children:"Deletion"}),i.jsx("th",{children:"Access"}),i.jsx("th",{children:"Search"}),i.jsx("th",{children:"Insertion"}),i.jsx("th",{children:"Deletion"}),i.jsx("th",{})]}),i.jsxs("tr",{onClick:o,"data-row-number":"4",children:[i.jsx("td",{children:i.jsx("a",{href:"http://en.wikipedia.org/wiki/Array_data_structure",target:"_blank",children:"Array"})}),i.jsx("td",{className:_.green,children:"Θ(1)"}),i.jsx("td",{className:_.yellow,children:"Θ(n)"}),i.jsx("td",{className:_.yellow,children:"Θ(n)"}),i.jsx("td",{className:_.yellow,children:"Θ(n)"}),i.jsx("td",{className:_.green,children:"O(1)"}),i.jsx("td",{className:_.yellow,children:"O(n)"}),i.jsx("td",{className:_.yellow,children:"O(n)"}),i.jsx("td",{className:_.yellow,children:"O(n)"}),i.jsx("td",{className:_.yellow,children:"O(n)"})]}),i.jsxs("tr",{onClick:o,"data-row-number":"5",children:[i.jsx("td",{children:i.jsx("a",{href:"http://en.wikipedia.org/wiki/Stack_(abstract_data_type)",target:"_blank",children:"Stack"})}),i.jsx("td",{className:_.yellow,children:"Θ(n)"}),i.jsx("td",{className:_.yellow,children:"Θ(n)"}),i.jsx("td",{className:_.green,children:"Θ(1)"}),i.jsx("td",{className:_.green,children:"Θ(1)"}),i.jsx("td",{className:_.yellow,children:"O(n)"}),i.jsx("td",{className:_.yellow,children:"O(n)"}),i.jsx("td",{className:_.green,children:"O(1)"}),i.jsx("td",{className:_.green,children:"O(1)"}),i.jsx("td",{className:_.yellow,children:"O(n)"})]}),i.jsxs("tr",{onClick:o,"data-row-number":"6",children:[i.jsx("td",{children:i.jsx("a",{href:"http://en.wikipedia.org/wiki/Queue_(abstract_data_type)",target:"_blank",children:"Queue"})}),i.jsx("td",{className:_.yellow,children:"Θ(n)"}),i.jsx("td",{className:_.yellow,children:"Θ(n)"}),i.jsx("td",{className:_.green,children:"Θ(1)"}),i.jsx("td",{className:_.green,children:"Θ(1)"}),i.jsx("td",{className:_.yellow,children:"O(n)"}),i.jsx("td",{className:_.yellow,children:"O(n)"}),i.jsx("td",{className:_.green,children:"O(1)"}),i.jsx("td",{className:_.green,children:"O(1)"}),i.jsx("td",{className:_.yellow,children:"O(n)"})]}),i.jsxs("tr",{onClick:o,"data-row-number":"7",children:[i.jsx("td",{children:i.jsx("a",{href:"http://en.wikipedia.org/wiki/Singly_linked_list#Singly_linked_lists",target:"_blank",children:"Singly-Linked List"})}),i.jsx("td",{className:_.yellow,children:"Θ(n)"}),i.jsx("td",{className:_.yellow,children:"Θ(n)"}),i.jsx("td",{className:_.green,children:"Θ(1)"}),i.jsx("td",{className:_.green,children:"Θ(1)"}),i.jsx("td",{className:_.yellow,children:"O(n)"}),i.jsx("td",{className:_.yellow,children:"O(n)"}),i.jsx("td",{className:_.green,children:"O(1)"}),i.jsx("td",{className:_.green,children:"O(1)"}),i.jsx("td",{className:_.yellow,children:"O(n)"})]}),i.jsxs("tr",{onClick:o,"data-row-number":"8",children:[i.jsx("td",{children:i.jsx("a",{href:"http://en.wikipedia.org/wiki/Doubly_linked_list",target:"_blank",children:"Doubly-Linked List"})}),i.jsx("td",{className:_.yellow,children:"Θ(n)"}),i.jsx("td",{className:_.yellow,children:"Θ(n)"}),i.jsx("td",{className:_.green,children:"Θ(1)"}),i.jsx("td",{className:_.green,children:"Θ(1)"}),i.jsx("td",{className:_.yellow,children:"O(n)"}),i.jsx("td",{className:_.yellow,children:"O(n)"}),i.jsx("td",{className:_.green,children:"O(1)"}),i.jsx("td",{className:_.green,children:"O(1)"}),i.jsx("td",{className:_.yellow,children:"O(n)"})]}),i.jsxs("tr",{onClick:o,"data-row-number":"9",children:[i.jsx("td",{children:i.jsx("a",{href:"http://en.wikipedia.org/wiki/Skip_list",target:"_blank",children:"Skip List"})}),i.jsx("td",{className:_.oliveGreen,children:"Θ(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"Θ(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"Θ(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"Θ(log(n))"}),i.jsx("td",{className:_.yellow,children:"O(n)"}),i.jsx("td",{className:_.yellow,children:"O(n)"}),i.jsx("td",{className:_.yellow,children:"O(n)"}),i.jsx("td",{className:_.yellow,children:"O(n)"}),i.jsx("td",{className:_.orange,children:"O(n log(n))"})]}),i.jsxs("tr",{onClick:o,"data-row-number":"10",children:[i.jsx("td",{children:i.jsx("a",{href:"http://en.wikipedia.org/wiki/Hash_table",target:"_blank",children:"Hash Table"})}),i.jsx("td",{className:_.gray,children:"N/A"}),i.jsx("td",{className:_.green,children:"Θ(1)"}),i.jsx("td",{className:_.green,children:"Θ(1)"}),i.jsx("td",{className:_.green,children:"Θ(1)"}),i.jsx("td",{className:_.gray,children:"N/A"}),i.jsx("td",{className:_.yellow,children:"O(n)"}),i.jsx("td",{className:_.yellow,children:"O(n)"}),i.jsx("td",{className:_.yellow,children:"O(n)"}),i.jsx("td",{className:_.yellow,children:"O(n)"})]}),i.jsxs("tr",{onClick:o,"data-row-number":"11",children:[i.jsx("td",{children:i.jsx("a",{href:"http://en.wikipedia.org/wiki/Binary_search_tree",target:"_blank",children:"Binary Search Tree"})}),i.jsx("td",{className:_.oliveGreen,children:"Θ(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"Θ(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"Θ(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"Θ(log(n))"}),i.jsx("td",{className:_.yellow,children:"O(n)"}),i.jsx("td",{className:_.yellow,children:"O(n)"}),i.jsx("td",{className:_.yellow,children:"O(n)"}),i.jsx("td",{className:_.yellow,children:"O(n)"}),i.jsx("td",{className:_.yellow,children:"O(n)"})]}),i.jsxs("tr",{onClick:o,"data-row-number":"12",children:[i.jsx("td",{children:i.jsx("a",{href:"https://en.wikipedia.org/wiki/Cartesian_tree",target:"_blank",children:"Cartesian Tree"})}),i.jsx("td",{className:_.gray,children:"N/A"}),i.jsx("td",{className:_.oliveGreen,children:"Θ(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"Θ(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"Θ(log(n))"}),i.jsx("td",{className:_.gray,children:"N/A"}),i.jsx("td",{className:_.yellow,children:"O(n)"}),i.jsx("td",{className:_.yellow,children:"O(n)"}),i.jsx("td",{className:_.yellow,children:"O(n)"}),i.jsx("td",{className:_.yellow,children:"O(n)"})]}),i.jsxs("tr",{onClick:o,"data-row-number":"13",children:[i.jsx("td",{children:i.jsx("a",{href:"http://en.wikipedia.org/wiki/B_tree",target:"_blank",children:"B-Tree"})}),i.jsx("td",{className:_.oliveGreen,children:"Θ(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"Θ(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"Θ(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"Θ(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"O(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"O(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"O(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"O(log(n))"}),i.jsx("td",{className:_.yellow,children:"O(n)"})]}),i.jsxs("tr",{onClick:o,"data-row-number":"14",children:[i.jsx("td",{children:i.jsx("a",{href:"http://en.wikipedia.org/wiki/Red-black_tree",target:"_blank",children:"Red-Black Tree"})}),i.jsx("td",{className:_.oliveGreen,children:"Θ(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"Θ(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"Θ(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"Θ(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"O(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"O(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"O(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"O(log(n))"}),i.jsx("td",{className:_.yellow,children:"O(n)"})]}),i.jsxs("tr",{onClick:o,"data-row-number":"15",children:[i.jsx("td",{children:i.jsx("a",{href:"https://en.wikipedia.org/wiki/Splay_tree",target:"_blank",children:"Splay Tree"})}),i.jsx("td",{className:_.gray,children:"N/A"}),i.jsx("td",{className:_.oliveGreen,children:"Θ(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"Θ(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"Θ(log(n))"}),i.jsx("td",{className:_.gray,children:"N/A"}),i.jsx("td",{className:_.oliveGreen,children:"O(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"O(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"O(log(n))"}),i.jsx("td",{className:_.yellow,children:"O(n)"})]}),i.jsxs("tr",{onClick:o,"data-row-number":"16",children:[i.jsx("td",{children:i.jsx("a",{href:"http://en.wikipedia.org/wiki/AVL_tree",target:"_blank",children:"AVL Tree"})}),i.jsx("td",{className:_.oliveGreen,children:"Θ(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"Θ(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"Θ(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"Θ(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"O(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"O(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"O(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"O(log(n))"}),i.jsx("td",{className:_.yellow,children:"O(n)"})]}),i.jsxs("tr",{onClick:o,"data-row-number":"17",children:[i.jsx("td",{children:i.jsx("a",{href:"http://en.wikipedia.org/wiki/K-d_tree",target:"_blank",children:"KD Tree"})}),i.jsx("td",{className:_.oliveGreen,children:"Θ(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"Θ(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"Θ(log(n))"}),i.jsx("td",{className:_.oliveGreen,children:"Θ(log(n))"}),i.jsx("td",{className:_.yellow,children:"O(n)"}),i.jsx("td",{className:_.yellow,children:"O(n)"}),i.jsx("td",{className:_.yellow,children:"O(n)"}),i.jsx("td",{className:_.yellow,children:"O(n)"}),i.jsx("td",{className:_.yellow,children:"O(n)"})]})]})})})]})})}function Hg(){const n=K.useRef(null),[r,e]=K.useState(""),t=()=>{if(r){const a=n.current,s=a==null?void 0:a.querySelector(`tr[data-row-number="${r}"]`);s==null||s.removeAttribute("focused")}},o=a=>{const s=a.currentTarget,l=s.getAttribute("data-row-number")??"";t(),l===r?e(""):(s.setAttribute("focused",""),e(l))};return xo(n,t),i.jsx("section",{id:"bigo-sorting-algorithms-table",children:i.jsxs("div",{className:_.container,children:[i.jsx("h3",{children:"Array Sorting Algorithms"}),i.jsx("div",{className:_.tableWrapper,children:i.jsx("table",{ref:n,children:i.jsxs("tbody",{children:[i.jsxs("tr",{onClick:o,"data-row-number":"1",children:[i.jsx("th",{children:"Algorithm"}),i.jsx("th",{colSpan:3,children:"Time Complexity"}),i.jsx("th",{children:"Space Complexity"})]}),i.jsxs("tr",{onClick:o,"data-row-number":"2",children:[i.jsx("th",{}),i.jsx("th",{children:"Best"}),i.jsx("th",{children:"Average"}),i.jsx("th",{children:"Worst"}),i.jsx("th",{children:"Worst"})]}),i.jsxs("tr",{onClick:o,"data-row-number":"3",children:[i.jsx("td",{children:i.jsx("a",{href:"http://en.wikipedia.org/wiki/Quicksort",target:"_blank",children:"Quicksort"})}),i.jsx("td",{className:_.orange,children:"Ω(n log(n))"}),i.jsx("td",{className:_.orange,children:"Θ(n log(n))"}),i.jsx("td",{className:_.red,children:"O(n^2)"}),i.jsx("td",{className:_.oliveGreen,children:"O(log(n))"})]}),i.jsxs("tr",{onClick:o,"data-row-number":"4",children:[i.jsx("td",{children:i.jsx("a",{href:"http://en.wikipedia.org/wiki/Merge_sort",target:"_blank",children:"Mergesort"})}),i.jsx("td",{className:_.orange,children:"Ω(n log(n))"}),i.jsx("td",{className:_.orange,children:"Θ(n log(n))"}),i.jsx("td",{className:_.orange,children:"O(n log(n))"}),i.jsx("td",{className:_.yellow,children:"O(n)"})]}),i.jsxs("tr",{onClick:o,"data-row-number":"5",children:[i.jsx("td",{children:i.jsx("a",{href:"http://en.wikipedia.org/wiki/Timsort",target:"_blank",children:"Timsort"})}),i.jsx("td",{className:_.yellow,children:"Ω(n)"}),i.jsx("td",{className:_.orange,children:"Θ(n log(n))"}),i.jsx("td",{className:_.orange,children:"O(n log(n))"}),i.jsx("td",{className:_.yellow,children:"O(n)"})]}),i.jsxs("tr",{onClick:o,"data-row-number":"6",children:[i.jsx("td",{children:i.jsx("a",{href:"http://en.wikipedia.org/wiki/Heapsort",target:"_blank",children:"Heapsort"})}),i.jsx("td",{className:_.orange,children:"Ω(n log(n))"}),i.jsx("td",{className:_.orange,children:"Θ(n log(n))"}),i.jsx("td",{className:_.orange,children:"O(n log(n))"}),i.jsx("td",{className:_.green,children:"O(1)"})]}),i.jsxs("tr",{onClick:o,"data-row-number":"7",children:[i.jsx("td",{children:i.jsx("a",{href:"http://en.wikipedia.org/wiki/Bubble_sort",target:"_blank",children:"Bubble Sort"})}),i.jsx("td",{className:_.yellow,children:"Ω(n)"}),i.jsx("td",{className:_.red,children:"Θ(n^2)"}),i.jsx("td",{className:_.red,children:"O(n^2)"}),i.jsx("td",{className:_.green,children:"O(1)"})]}),i.jsxs("tr",{onClick:o,"data-row-number":"8",children:[i.jsx("td",{children:i.jsx("a",{href:"http://en.wikipedia.org/wiki/Insertion_sort",target:"_blank",children:"Insertion Sort"})}),i.jsx("td",{className:_.yellow,children:"Ω(n)"}),i.jsx("td",{className:_.red,children:"Θ(n^2)"}),i.jsx("td",{className:_.red,children:"O(n^2)"}),i.jsx("td",{className:_.green,children:"O(1)"})]}),i.jsxs("tr",{onClick:o,"data-row-number":"9",children:[i.jsx("td",{children:i.jsx("a",{href:"http://en.wikipedia.org/wiki/Selection_sort",target:"_blank",children:"Selection Sort"})}),i.jsx("td",{className:_.red,children:"Ω(n^2)"}),i.jsx("td",{className:_.red,children:"Θ(n^2)"}),i.jsx("td",{className:_.red,children:"O(n^2)"}),i.jsx("td",{className:_.green,children:"O(1)"})]}),i.jsxs("tr",{onClick:o,"data-row-number":"10",children:[i.jsx("td",{children:i.jsx("a",{href:"https://en.wikipedia.org/wiki/Tree_sort",target:"_blank",children:"Tree Sort"})}),i.jsx("td",{className:_.orange,children:"Ω(n log(n))"}),i.jsx("td",{className:_.orange,children:"Θ(n log(n))"}),i.jsx("td",{className:_.red,children:"O(n^2)"}),i.jsx("td",{className:_.yellow,children:"O(n)"})]}),i.jsxs("tr",{onClick:o,"data-row-number":"11",children:[i.jsx("td",{children:i.jsx("a",{href:"http://en.wikipedia.org/wiki/Shellsort",target:"_blank",children:"Shell Sort"})}),i.jsx("td",{className:_.orange,children:"Ω(n log(n))"}),i.jsx("td",{className:_.red,children:"Θ(n(log(n))^2)"}),i.jsx("td",{className:_.red,children:"O(n(log(n))^2)"}),i.jsx("td",{className:_.green,children:"O(1)"})]}),i.jsxs("tr",{onClick:o,"data-row-number":"12",children:[i.jsx("td",{children:i.jsx("a",{href:"http://en.wikipedia.org/wiki/Bucket_sort",target:"_blank",children:"Bucket Sort"})}),i.jsx("td",{className:_.green,children:"Ω(n+k)"}),i.jsx("td",{className:_.green,children:"Θ(n+k)"}),i.jsx("td",{className:_.red,children:"O(n^2)"}),i.jsx("td",{className:_.yellow,children:"O(n)"})]}),i.jsxs("tr",{onClick:o,"data-row-number":"13",children:[i.jsx("td",{children:i.jsx("a",{href:"http://en.wikipedia.org/wiki/Radix_sort",target:"_blank",children:"Radix Sort"})}),i.jsx("td",{className:_.green,children:"Ω(nk)"}),i.jsx("td",{className:_.green,children:"Θ(nk)"}),i.jsx("td",{className:_.green,children:"O(nk)"}),i.jsx("td",{className:_.yellow,children:"O(n+k)"})]}),i.jsxs("tr",{onClick:o,"data-row-number":"14",children:[i.jsx("td",{children:i.jsx("a",{href:"https://en.wikipedia.org/wiki/Counting_sort",children:"Counting Sort"})}),i.jsx("td",{className:_.green,children:"Ω(n+k)"}),i.jsx("td",{className:_.green,children:"Θ(n+k)"}),i.jsx("td",{className:_.green,children:"O(n+k)"}),i.jsx("td",{className:_.yellow,children:"O(k)"})]}),i.jsxs("tr",{onClick:o,"data-row-number":"15",children:[i.jsx("td",{children:i.jsx("a",{href:"https://en.wikipedia.org/wiki/Cubesort",target:"_blank",children:"Cubesort"})}),i.jsx("td",{className:_.yellow,children:"Ω(n)"}),i.jsx("td",{className:_.orange,children:"Θ(n log(n))"}),i.jsx("td",{className:_.orange,children:"O(n log(n))"}),i.jsx("td",{className:_.yellow,children:"O(n)"})]})]})})})]})})}function $g(){return i.jsxs("div",{className:un.container,children:[i.jsx("h2",{className:un.sectionHeader,children:"Big O"}),i.jsx(Fg,{}),i.jsx(Ug,{}),i.jsx(Hg,{})]})}const Wg="_container_12crg_1",Vg="_buttonContainer_12crg_12",Kg="_tabButtonContainer_12crg_18",Gg="_tabButton_12crg_18",hi={container:Wg,buttonContainer:Vg,tabButtonContainer:Kg,tabButton:Gg},Jg="_code_4wy3e_1",Yg="_line_4wy3e_13",ou={code:Jg,line:Yg};function Qg(n){const r=n.regex,e=n.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),t="decltype\\(auto\\)",o="[a-zA-Z_]\\w*::",s="(?!struct)("+t+"|"+r.optional(o)+"[a-zA-Z_]\\w*"+r.optional("<[^<>]+>")+")",l={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},d={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[n.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+"\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)"+"|.)",end:"'",illegal:"."},n.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},m={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},y={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},n.inherit(d,{className:"string"}),{className:"string",begin:/<.*?>/},e,n.C_BLOCK_COMMENT_MODE]},g={className:"title",begin:r.optional(o)+n.IDENT_RE,relevance:0},v=r.optional(o)+n.IDENT_RE+"\\s*\\(",w=["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],S=["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],E=["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"],p=["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"],x={type:S,keyword:w,literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:E},T={className:"function.dispatch",relevance:0,keywords:{_hint:p},begin:r.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,n.IDENT_RE,r.lookahead(/(<[^<>]+>|)\s*\(/))},b=[T,y,l,e,n.C_BLOCK_COMMENT_MODE,m,d],k={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:x,contains:b.concat([{begin:/\(/,end:/\)/,keywords:x,contains:b.concat(["self"]),relevance:0}]),relevance:0},P={className:"function",begin:"("+s+"[\\*&\\s]+)+"+v,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:x,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:t,keywords:x,relevance:0},{begin:v,returnBegin:!0,contains:[g],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[d,m]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:x,relevance:0,contains:[e,n.C_BLOCK_COMMENT_MODE,d,m,l,{begin:/\(/,end:/\)/,keywords:x,relevance:0,contains:["self",e,n.C_BLOCK_COMMENT_MODE,d,m,l]}]},l,e,n.C_BLOCK_COMMENT_MODE,y]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:x,illegal:"",keywords:x,contains:["self",l]},{begin:n.IDENT_RE+"::",keywords:x},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}function Pd(n){return n instanceof Map?n.clear=n.delete=n.set=function(){throw new Error("map is read-only")}:n instanceof Set&&(n.add=n.clear=n.delete=function(){throw new Error("set is read-only")}),Object.freeze(n),Object.getOwnPropertyNames(n).forEach(r=>{const e=n[r],t=typeof e;(t==="object"||t==="function")&&!Object.isFrozen(e)&&Pd(e)}),n}class au{constructor(r){r.data===void 0&&(r.data={}),this.data=r.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function Md(n){return n.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function Vr(n,...r){const e=Object.create(null);for(const t in n)e[t]=n[t];return r.forEach(function(t){for(const o in t)e[o]=t[o]}),e}const qg="",su=n=>!!n.scope,Xg=(n,{prefix:r})=>{if(n.startsWith("language:"))return n.replace("language:","language-");if(n.includes(".")){const e=n.split(".");return[`${r}${e.shift()}`,...e.map((t,o)=>`${t}${"_".repeat(o+1)}`)].join(" ")}return`${r}${n}`};class Zg{constructor(r,e){this.buffer="",this.classPrefix=e.classPrefix,r.walk(this)}addText(r){this.buffer+=Md(r)}openNode(r){if(!su(r))return;const e=Xg(r.scope,{prefix:this.classPrefix});this.span(e)}closeNode(r){su(r)&&(this.buffer+=qg)}value(){return this.buffer}span(r){this.buffer+=``}}const lu=(n={})=>{const r={children:[]};return Object.assign(r,n),r};class Us{constructor(){this.rootNode=lu(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(r){this.top.children.push(r)}openNode(r){const e=lu({scope:r});this.add(e),this.stack.push(e)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(r){return this.constructor._walk(r,this.rootNode)}static _walk(r,e){return typeof e=="string"?r.addText(e):e.children&&(r.openNode(e),e.children.forEach(t=>this._walk(r,t)),r.closeNode(e)),r}static _collapse(r){typeof r!="string"&&r.children&&(r.children.every(e=>typeof e=="string")?r.children=[r.children.join("")]:r.children.forEach(e=>{Us._collapse(e)}))}}class nm extends Us{constructor(r){super(),this.options=r}addText(r){r!==""&&this.add(r)}startScope(r){this.openNode(r)}endScope(){this.closeNode()}__addSublanguage(r,e){const t=r.root;e&&(t.scope=`language:${e}`),this.add(t)}toHTML(){return new Zg(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function Ft(n){return n?typeof n=="string"?n:n.source:null}function Rd(n){return Se("(?=",n,")")}function rm(n){return Se("(?:",n,")*")}function em(n){return Se("(?:",n,")?")}function Se(...n){return n.map(e=>Ft(e)).join("")}function tm(n){const r=n[n.length-1];return typeof r=="object"&&r.constructor===Object?(n.splice(n.length-1,1),r):{}}function Hs(...n){return"("+(tm(n).capture?"":"?:")+n.map(t=>Ft(t)).join("|")+")"}function Id(n){return new RegExp(n.toString()+"|").exec("").length-1}function im(n,r){const e=n&&n.exec(r);return e&&e.index===0}const om=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function $s(n,{joinWith:r}){let e=0;return n.map(t=>{e+=1;const o=e;let a=Ft(t),s="";for(;a.length>0;){const l=om.exec(a);if(!l){s+=a;break}s+=a.substring(0,l.index),a=a.substring(l.index+l[0].length),l[0][0]==="\\"&&l[1]?s+="\\"+String(Number(l[1])+o):(s+=l[0],l[0]==="("&&e++)}return s}).map(t=>`(${t})`).join(r)}const am=/\b\B/,Dd="[a-zA-Z]\\w*",Ws="[a-zA-Z_]\\w*",Bd="\\b\\d+(\\.\\d+)?",zd="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",Fd="\\b(0b[01]+)",sm="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",lm=(n={})=>{const r=/^#![ ]*\//;return n.binary&&(n.begin=Se(r,/.*\b/,n.binary,/\b.*/)),Vr({scope:"meta",begin:r,end:/$/,relevance:0,"on:begin":(e,t)=>{e.index!==0&&t.ignoreMatch()}},n)},Ut={begin:"\\\\[\\s\\S]",relevance:0},um={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[Ut]},cm={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[Ut]},dm={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},_o=function(n,r,e={}){const t=Vr({scope:"comment",begin:n,end:r,contains:[]},e);t.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const o=Hs("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return t.contains.push({begin:Se(/[ ]+/,"(",o,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),t},fm=_o("//","$"),pm=_o("/\\*","\\*/"),hm=_o("#","$"),gm={scope:"number",begin:Bd,relevance:0},mm={scope:"number",begin:zd,relevance:0},vm={scope:"number",begin:Fd,relevance:0},ym={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[Ut,{begin:/\[/,end:/\]/,relevance:0,contains:[Ut]}]},xm={scope:"title",begin:Dd,relevance:0},_m={scope:"title",begin:Ws,relevance:0},wm={begin:"\\.\\s*"+Ws,relevance:0},Sm=function(n){return Object.assign(n,{"on:begin":(r,e)=>{e.data._beginMatch=r[1]},"on:end":(r,e)=>{e.data._beginMatch!==r[1]&&e.ignoreMatch()}})};var gi=Object.freeze({__proto__:null,APOS_STRING_MODE:um,BACKSLASH_ESCAPE:Ut,BINARY_NUMBER_MODE:vm,BINARY_NUMBER_RE:Fd,COMMENT:_o,C_BLOCK_COMMENT_MODE:pm,C_LINE_COMMENT_MODE:fm,C_NUMBER_MODE:mm,C_NUMBER_RE:zd,END_SAME_AS_BEGIN:Sm,HASH_COMMENT_MODE:hm,IDENT_RE:Dd,MATCH_NOTHING_RE:am,METHOD_GUARD:wm,NUMBER_MODE:gm,NUMBER_RE:Bd,PHRASAL_WORDS_MODE:dm,QUOTE_STRING_MODE:cm,REGEXP_MODE:ym,RE_STARTERS_RE:sm,SHEBANG:lm,TITLE_MODE:xm,UNDERSCORE_IDENT_RE:Ws,UNDERSCORE_TITLE_MODE:_m});function jm(n,r){n.input[n.index-1]==="."&&r.ignoreMatch()}function Tm(n,r){n.className!==void 0&&(n.scope=n.className,delete n.className)}function bm(n,r){r&&n.beginKeywords&&(n.begin="\\b("+n.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",n.__beforeBegin=jm,n.keywords=n.keywords||n.beginKeywords,delete n.beginKeywords,n.relevance===void 0&&(n.relevance=0))}function km(n,r){Array.isArray(n.illegal)&&(n.illegal=Hs(...n.illegal))}function Em(n,r){if(n.match){if(n.begin||n.end)throw new Error("begin & end are not supported with match");n.begin=n.match,delete n.match}}function Nm(n,r){n.relevance===void 0&&(n.relevance=1)}const Om=(n,r)=>{if(!n.beforeMatch)return;if(n.starts)throw new Error("beforeMatch cannot be used with starts");const e=Object.assign({},n);Object.keys(n).forEach(t=>{delete n[t]}),n.keywords=e.keywords,n.begin=Se(e.beforeMatch,Rd(e.begin)),n.starts={relevance:0,contains:[Object.assign(e,{endsParent:!0})]},n.relevance=0,delete e.beforeMatch},Am=["of","and","for","in","not","or","if","then","parent","list","value"],Cm="keyword";function Ud(n,r,e=Cm){const t=Object.create(null);return typeof n=="string"?o(e,n.split(" ")):Array.isArray(n)?o(e,n):Object.keys(n).forEach(function(a){Object.assign(t,Ud(n[a],r,a))}),t;function o(a,s){r&&(s=s.map(l=>l.toLowerCase())),s.forEach(function(l){const u=l.split("|");t[u[0]]=[a,Lm(u[0],u[1])]})}}function Lm(n,r){return r?Number(r):Pm(n)?0:1}function Pm(n){return Am.includes(n.toLowerCase())}const uu={},he=n=>{console.error(n)},cu=(n,...r)=>{console.log(`WARN: ${n}`,...r)},Te=(n,r)=>{uu[`${n}/${r}`]||(console.log(`Deprecated as of ${n}. ${r}`),uu[`${n}/${r}`]=!0)},ro=new Error;function Hd(n,r,{key:e}){let t=0;const o=n[e],a={},s={};for(let l=1;l<=r.length;l++)s[l+t]=o[l],a[l+t]=!0,t+=Id(r[l-1]);n[e]=s,n[e]._emit=a,n[e]._multi=!0}function Mm(n){if(Array.isArray(n.begin)){if(n.skip||n.excludeBegin||n.returnBegin)throw he("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),ro;if(typeof n.beginScope!="object"||n.beginScope===null)throw he("beginScope must be object"),ro;Hd(n,n.begin,{key:"beginScope"}),n.begin=$s(n.begin,{joinWith:""})}}function Rm(n){if(Array.isArray(n.end)){if(n.skip||n.excludeEnd||n.returnEnd)throw he("skip, excludeEnd, returnEnd not compatible with endScope: {}"),ro;if(typeof n.endScope!="object"||n.endScope===null)throw he("endScope must be object"),ro;Hd(n,n.end,{key:"endScope"}),n.end=$s(n.end,{joinWith:""})}}function Im(n){n.scope&&typeof n.scope=="object"&&n.scope!==null&&(n.beginScope=n.scope,delete n.scope)}function Dm(n){Im(n),typeof n.beginScope=="string"&&(n.beginScope={_wrap:n.beginScope}),typeof n.endScope=="string"&&(n.endScope={_wrap:n.endScope}),Mm(n),Rm(n)}function Bm(n){function r(s,l){return new RegExp(Ft(s),"m"+(n.case_insensitive?"i":"")+(n.unicodeRegex?"u":"")+(l?"g":""))}class e{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(l,u){u.position=this.position++,this.matchIndexes[this.matchAt]=u,this.regexes.push([u,l]),this.matchAt+=Id(l)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const l=this.regexes.map(u=>u[1]);this.matcherRe=r($s(l,{joinWith:"|"}),!0),this.lastIndex=0}exec(l){this.matcherRe.lastIndex=this.lastIndex;const u=this.matcherRe.exec(l);if(!u)return null;const d=u.findIndex((y,g)=>g>0&&y!==void 0),m=this.matchIndexes[d];return u.splice(0,d),Object.assign(u,m)}}class t{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(l){if(this.multiRegexes[l])return this.multiRegexes[l];const u=new e;return this.rules.slice(l).forEach(([d,m])=>u.addRule(d,m)),u.compile(),this.multiRegexes[l]=u,u}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(l,u){this.rules.push([l,u]),u.type==="begin"&&this.count++}exec(l){const u=this.getMatcher(this.regexIndex);u.lastIndex=this.lastIndex;let d=u.exec(l);if(this.resumingScanAtSamePosition()&&!(d&&d.index===this.lastIndex)){const m=this.getMatcher(0);m.lastIndex=this.lastIndex+1,d=m.exec(l)}return d&&(this.regexIndex+=d.position+1,this.regexIndex===this.count&&this.considerAll()),d}}function o(s){const l=new t;return s.contains.forEach(u=>l.addRule(u.begin,{rule:u,type:"begin"})),s.terminatorEnd&&l.addRule(s.terminatorEnd,{type:"end"}),s.illegal&&l.addRule(s.illegal,{type:"illegal"}),l}function a(s,l){const u=s;if(s.isCompiled)return u;[Tm,Em,Dm,Om].forEach(m=>m(s,l)),n.compilerExtensions.forEach(m=>m(s,l)),s.__beforeBegin=null,[bm,km,Nm].forEach(m=>m(s,l)),s.isCompiled=!0;let d=null;return typeof s.keywords=="object"&&s.keywords.$pattern&&(s.keywords=Object.assign({},s.keywords),d=s.keywords.$pattern,delete s.keywords.$pattern),d=d||/\w+/,s.keywords&&(s.keywords=Ud(s.keywords,n.case_insensitive)),u.keywordPatternRe=r(d,!0),l&&(s.begin||(s.begin=/\B|\b/),u.beginRe=r(u.begin),!s.end&&!s.endsWithParent&&(s.end=/\B|\b/),s.end&&(u.endRe=r(u.end)),u.terminatorEnd=Ft(u.end)||"",s.endsWithParent&&l.terminatorEnd&&(u.terminatorEnd+=(s.end?"|":"")+l.terminatorEnd)),s.illegal&&(u.illegalRe=r(s.illegal)),s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map(function(m){return zm(m==="self"?s:m)})),s.contains.forEach(function(m){a(m,u)}),s.starts&&a(s.starts,l),u.matcher=o(u),u}if(n.compilerExtensions||(n.compilerExtensions=[]),n.contains&&n.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return n.classNameAliases=Vr(n.classNameAliases||{}),a(n)}function $d(n){return n?n.endsWithParent||$d(n.starts):!1}function zm(n){return n.variants&&!n.cachedVariants&&(n.cachedVariants=n.variants.map(function(r){return Vr(n,{variants:null},r)})),n.cachedVariants?n.cachedVariants:$d(n)?Vr(n,{starts:n.starts?Vr(n.starts):null}):Object.isFrozen(n)?Vr(n):n}var Fm="11.9.0";class Um extends Error{constructor(r,e){super(r),this.name="HTMLInjectionError",this.html=e}}const qo=Md,du=Vr,fu=Symbol("nomatch"),Hm=7,Wd=function(n){const r=Object.create(null),e=Object.create(null),t=[];let o=!0;const a="Could not find the language '{}', did you forget to load/include a language module?",s={disableAutodetect:!0,name:"Plain text",contains:[]};let l={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:nm};function u(O){return l.noHighlightRe.test(O)}function d(O){let j=O.className+" ";j+=O.parentNode?O.parentNode.className:"";const C=l.languageDetectRe.exec(j);if(C){const I=N(C[1]);return I||(cu(a.replace("{}",C[1])),cu("Falling back to no-highlight mode for this block.",O)),I?C[1]:"no-highlight"}return j.split(/\s+/).find(I=>u(I)||N(I))}function m(O,j,C){let I="",H="";typeof j=="object"?(I=O,C=j.ignoreIllegals,H=j.language):(Te("10.7.0","highlight(lang, code, ...args) has been deprecated."),Te("10.7.0",`Please use highlight(code, options) instead. -https://github.com/highlightjs/highlight.js/issues/2277`),H=O,I=j),C===void 0&&(C=!0);const Q={code:I,language:H};xn("before:highlight",Q);const bn=Q.result?Q.result:y(Q.language,Q.code,C);return bn.code=Q.code,xn("after:highlight",bn),bn}function y(O,j,C,I){const H=Object.create(null);function Q(B,$){return B.keywords[$]}function bn(){if(!D.keywords){M.addText(q);return}let B=0;D.keywordPatternRe.lastIndex=0;let $=D.keywordPatternRe.exec(q),nn="";for(;$;){nn+=q.substring(B,$.index);const dn=J.case_insensitive?$[0].toLowerCase():$[0],Bn=Q(D,dn);if(Bn){const[Er,Yd]=Bn;if(M.addText(nn),nn="",H[dn]=(H[dn]||0)+1,H[dn]<=Hm&&(Dn+=Yd),Er.startsWith("_"))nn+=$[0];else{const Qd=J.classNameAliases[Er]||Er;ln($[0],Qd)}}else nn+=$[0];B=D.keywordPatternRe.lastIndex,$=D.keywordPatternRe.exec(q)}nn+=q.substring(B),M.addText(nn)}function kn(){if(q==="")return;let B=null;if(typeof D.subLanguage=="string"){if(!r[D.subLanguage]){M.addText(q);return}B=y(D.subLanguage,q,!0,an[D.subLanguage]),an[D.subLanguage]=B._top}else B=v(q,D.subLanguage.length?D.subLanguage:null);D.relevance>0&&(Dn+=B.relevance),M.__addSublanguage(B._emitter,B.language)}function cn(){D.subLanguage!=null?kn():bn(),q=""}function ln(B,$){B!==""&&(M.startScope($),M.addText(B),M.endScope())}function pn(B,$){let nn=1;const dn=$.length-1;for(;nn<=dn;){if(!B._emit[nn]){nn++;continue}const Bn=J.classNameAliases[B[nn]]||B[nn],Er=$[nn];Bn?ln(Er,Bn):(q=Er,bn(),q=""),nn++}}function En(B,$){return B.scope&&typeof B.scope=="string"&&M.openNode(J.classNameAliases[B.scope]||B.scope),B.beginScope&&(B.beginScope._wrap?(ln(q,J.classNameAliases[B.beginScope._wrap]||B.beginScope._wrap),q=""):B.beginScope._multi&&(pn(B.beginScope,$),q="")),D=Object.create(B,{parent:{value:D}}),D}function fr(B,$,nn){let dn=im(B.endRe,nn);if(dn){if(B["on:end"]){const Bn=new au(B);B["on:end"]($,Bn),Bn.isMatchIgnored&&(dn=!1)}if(dn){for(;B.endsParent&&B.parent;)B=B.parent;return B}}if(B.endsWithParent)return fr(B.parent,$,nn)}function L(B){return D.matcher.regexIndex===0?(q+=B[0],1):(So=!0,0)}function F(B){const $=B[0],nn=B.rule,dn=new au(nn),Bn=[nn.__beforeBegin,nn["on:begin"]];for(const Er of Bn)if(Er&&(Er(B,dn),dn.isMatchIgnored))return L($);return nn.skip?q+=$:(nn.excludeBegin&&(q+=$),cn(),!nn.returnBegin&&!nn.excludeBegin&&(q=$)),En(nn,B),nn.returnBegin?0:$.length}function Z(B){const $=B[0],nn=j.substring(B.index),dn=fr(D,B,nn);if(!dn)return fu;const Bn=D;D.endScope&&D.endScope._wrap?(cn(),ln($,D.endScope._wrap)):D.endScope&&D.endScope._multi?(cn(),pn(D.endScope,B)):Bn.skip?q+=$:(Bn.returnEnd||Bn.excludeEnd||(q+=$),cn(),Bn.excludeEnd&&(q=$));do D.scope&&M.closeNode(),!D.skip&&!D.subLanguage&&(Dn+=D.relevance),D=D.parent;while(D!==dn.parent);return dn.starts&&En(dn.starts,B),Bn.returnEnd?0:$.length}function X(){const B=[];for(let $=D;$!==J;$=$.parent)$.scope&&B.unshift($.scope);B.forEach($=>M.openNode($))}let Y={};function on(B,$){const nn=$&&$[0];if(q+=B,nn==null)return cn(),0;if(Y.type==="begin"&&$.type==="end"&&Y.index===$.index&&nn===""){if(q+=j.slice($.index,$.index+1),!o){const dn=new Error(`0 width match regex (${O})`);throw dn.languageName=O,dn.badRule=Y.rule,dn}return 1}if(Y=$,$.type==="begin")return F($);if($.type==="illegal"&&!C){const dn=new Error('Illegal lexeme "'+nn+'" for mode "'+(D.scope||"")+'"');throw dn.mode=D,dn}else if($.type==="end"){const dn=Z($);if(dn!==fu)return dn}if($.type==="illegal"&&nn==="")return 1;if(wo>1e5&&wo>$.index*3)throw new Error("potential infinite loop, way more iterations than matches");return q+=nn,nn.length}const J=N(O);if(!J)throw he(a.replace("{}",O)),new Error('Unknown language: "'+O+'"');const rn=Bm(J);let en="",D=I||rn;const an={},M=new l.__emitter(l);X();let q="",Dn=0,wr=0,wo=0,So=!1;try{if(J.__emitTokens)J.__emitTokens(j,M);else{for(D.matcher.considerAll();;){wo++,So?So=!1:D.matcher.considerAll(),D.matcher.lastIndex=wr;const B=D.matcher.exec(j);if(!B)break;const $=j.substring(wr,B.index),nn=on($,B);wr=B.index+nn}on(j.substring(wr))}return M.finalize(),en=M.toHTML(),{language:O,value:en,relevance:Dn,illegal:!1,_emitter:M,_top:D}}catch(B){if(B.message&&B.message.includes("Illegal"))return{language:O,value:qo(j),illegal:!0,relevance:0,_illegalBy:{message:B.message,index:wr,context:j.slice(wr-100,wr+100),mode:B.mode,resultSoFar:en},_emitter:M};if(o)return{language:O,value:qo(j),illegal:!1,relevance:0,errorRaised:B,_emitter:M,_top:D};throw B}}function g(O){const j={value:qo(O),illegal:!1,relevance:0,_top:s,_emitter:new l.__emitter(l)};return j._emitter.addText(O),j}function v(O,j){j=j||l.languages||Object.keys(r);const C=g(O),I=j.filter(N).filter(V).map(cn=>y(cn,O,!1));I.unshift(C);const H=I.sort((cn,ln)=>{if(cn.relevance!==ln.relevance)return ln.relevance-cn.relevance;if(cn.language&&ln.language){if(N(cn.language).supersetOf===ln.language)return 1;if(N(ln.language).supersetOf===cn.language)return-1}return 0}),[Q,bn]=H,kn=Q;return kn.secondBest=bn,kn}function w(O,j,C){const I=j&&e[j]||C;O.classList.add("hljs"),O.classList.add(`language-${I}`)}function S(O){let j=null;const C=d(O);if(u(C))return;if(xn("before:highlightElement",{el:O,language:C}),O.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",O);return}if(O.children.length>0&&(l.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(O)),l.throwUnescapedHTML))throw new Um("One of your code blocks includes unescaped HTML.",O.innerHTML);j=O;const I=j.textContent,H=C?m(I,{language:C,ignoreIllegals:!0}):v(I);O.innerHTML=H.value,O.dataset.highlighted="yes",w(O,C,H.language),O.result={language:H.language,re:H.relevance,relevance:H.relevance},H.secondBest&&(O.secondBest={language:H.secondBest.language,relevance:H.secondBest.relevance}),xn("after:highlightElement",{el:O,result:H,text:I})}function E(O){l=du(l,O)}const p=()=>{x(),Te("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function f(){x(),Te("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let h=!1;function x(){if(document.readyState==="loading"){h=!0;return}document.querySelectorAll(l.cssSelector).forEach(S)}function T(){h&&x()}typeof window<"u"&&window.addEventListener&&window.addEventListener("DOMContentLoaded",T,!1);function b(O,j){let C=null;try{C=j(n)}catch(I){if(he("Language definition for '{}' could not be registered.".replace("{}",O)),o)he(I);else throw I;C=s}C.name||(C.name=O),r[O]=C,C.rawDefinition=j.bind(null,n),C.aliases&&R(C.aliases,{languageName:O})}function k(O){delete r[O];for(const j of Object.keys(e))e[j]===O&&delete e[j]}function P(){return Object.keys(r)}function N(O){return O=(O||"").toLowerCase(),r[O]||r[e[O]]}function R(O,{languageName:j}){typeof O=="string"&&(O=[O]),O.forEach(C=>{e[C.toLowerCase()]=j})}function V(O){const j=N(O);return j&&!j.disableAutodetect}function G(O){O["before:highlightBlock"]&&!O["before:highlightElement"]&&(O["before:highlightElement"]=j=>{O["before:highlightBlock"](Object.assign({block:j.el},j))}),O["after:highlightBlock"]&&!O["after:highlightElement"]&&(O["after:highlightElement"]=j=>{O["after:highlightBlock"](Object.assign({block:j.el},j))})}function W(O){G(O),t.push(O)}function hn(O){const j=t.indexOf(O);j!==-1&&t.splice(j,1)}function xn(O,j){const C=O;t.forEach(function(I){I[C]&&I[C](j)})}function jn(O){return Te("10.7.0","highlightBlock will be removed entirely in v12.0"),Te("10.7.0","Please use highlightElement now."),S(O)}Object.assign(n,{highlight:m,highlightAuto:v,highlightAll:x,highlightElement:S,highlightBlock:jn,configure:E,initHighlighting:p,initHighlightingOnLoad:f,registerLanguage:b,unregisterLanguage:k,listLanguages:P,getLanguage:N,registerAliases:R,autoDetection:V,inherit:du,addPlugin:W,removePlugin:hn}),n.debugMode=function(){o=!1},n.safeMode=function(){o=!0},n.versionString=Fm,n.regex={concat:Se,lookahead:Rd,either:Hs,optional:em,anyNumberOfTimes:rm};for(const O in gi)typeof gi[O]=="object"&&Pd(gi[O]);return Object.assign(n,gi),n},qe=Wd({});qe.newInstance=()=>Wd({});var $m=qe;qe.HighlightJS=qe;qe.default=qe;const Gt=Va($m);var be="[0-9](_*[0-9])*",mi=`\\.(${be})`,vi="[0-9a-fA-F](_*[0-9a-fA-F])*",pu={className:"number",variants:[{begin:`(\\b(${be})((${mi})|\\.)?|(${mi}))[eE][+-]?(${be})[fFdD]?\\b`},{begin:`\\b(${be})((${mi})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${mi})[fFdD]?\\b`},{begin:`\\b(${be})[fFdD]\\b`},{begin:`\\b0[xX]((${vi})\\.?|(${vi})?\\.(${vi}))[pP][+-]?(${be})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${vi})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function Vd(n,r,e){return e===-1?"":n.replace(r,t=>Vd(n,r,e-1))}function Wm(n){const r=n.regex,e="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",t=e+Vd("(?:<"+e+"~~~(?:\\s*,\\s*"+e+"~~~)*>)?",/~~~/g,2),u={keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits"],literal:["false","true","null"],type:["char","boolean","long","float","int","byte","short","double"],built_in:["super","this"]},d={className:"meta",begin:"@"+e,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},m={className:"params",begin:/\(/,end:/\)/,keywords:u,relevance:0,contains:[n.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:u,illegal:/<\/|#/,contains:[n.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[n.BACKSLASH_ESCAPE]},n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,e],className:{1:"keyword",3:"title.class"}},{match:/non-sealed/,scope:"keyword"},{begin:[r.concat(/(?!else)/,e),/\s+/,e,/\s+/,/=(?!=)/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,e],className:{1:"keyword",3:"title.class"},contains:[m,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+t+"\\s+)",n.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:u,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:u,relevance:0,contains:[d,n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,pu,n.C_BLOCK_COMMENT_MODE]},n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE]},pu,d]}}const hu="[A-Za-z$_][0-9A-Za-z$_]*",Vm=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],Km=["true","false","null","undefined","NaN","Infinity"],Kd=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],Gd=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],Jd=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],Gm=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],Jm=[].concat(Jd,Kd,Gd);function Ym(n){const r=n.regex,e=(j,{after:C})=>{const I="",end:""},a=/<[A-Za-z0-9\\._:-]+\s*\/>/,s={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(j,C)=>{const I=j[0].length+j.index,H=j.input[I];if(H==="<"||H===","){C.ignoreMatch();return}H===">"&&(e(j,{after:I})||C.ignoreMatch());let Q;const bn=j.input.substring(I);if(Q=bn.match(/^\s*=/)){C.ignoreMatch();return}if((Q=bn.match(/^\s+extends\s+/))&&Q.index===0){C.ignoreMatch();return}}},l={$pattern:hu,keyword:Vm,literal:Km,built_in:Jm,"variable.language":Gm},u="[0-9](_?[0-9])*",d=`\\.(${u})`,m="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",y={className:"number",variants:[{begin:`(\\b(${m})((${d})|\\.)?|(${d}))[eE][+-]?(${u})\\b`},{begin:`\\b(${m})\\b((${d})\\b|\\.)?|(${d})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},g={className:"subst",begin:"\\$\\{",end:"\\}",keywords:l,contains:[]},v={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[n.BACKSLASH_ESCAPE,g],subLanguage:"xml"}},w={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[n.BACKSLASH_ESCAPE,g],subLanguage:"css"}},S={begin:"gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[n.BACKSLASH_ESCAPE,g],subLanguage:"graphql"}},E={className:"string",begin:"`",end:"`",contains:[n.BACKSLASH_ESCAPE,g]},f={className:"comment",variants:[n.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:t+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),n.C_BLOCK_COMMENT_MODE,n.C_LINE_COMMENT_MODE]},h=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,v,w,S,E,{match:/\$\d+/},y];g.contains=h.concat({begin:/\{/,end:/\}/,keywords:l,contains:["self"].concat(h)});const x=[].concat(f,g.contains),T=x.concat([{begin:/\(/,end:/\)/,keywords:l,contains:["self"].concat(x)}]),b={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:T},k={variants:[{match:[/class/,/\s+/,t,/\s+/,/extends/,/\s+/,r.concat(t,"(",r.concat(/\./,t),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,t],scope:{1:"keyword",3:"title.class"}}]},P={relevance:0,match:r.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...Kd,...Gd]}},N={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},R={variants:[{match:[/function/,/\s+/,t,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[b],illegal:/%/},V={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function G(j){return r.concat("(?!",j.join("|"),")")}const W={match:r.concat(/\b/,G([...Jd,"super","import"]),t,r.lookahead(/\(/)),className:"title.function",relevance:0},hn={begin:r.concat(/\./,r.lookahead(r.concat(t,/(?![0-9A-Za-z$_(])/))),end:t,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},xn={match:[/get|set/,/\s+/,t,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},b]},jn="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+n.UNDERSCORE_IDENT_RE+")\\s*=>",O={match:[/const|var|let/,/\s+/,t,/\s*/,/=\s*/,/(async\s*)?/,r.lookahead(jn)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[b]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:l,exports:{PARAMS_CONTAINS:T,CLASS_REFERENCE:P},illegal:/#(?![$_A-z])/,contains:[n.SHEBANG({label:"shebang",binary:"node",relevance:5}),N,n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,v,w,S,E,f,{match:/\$\d+/},y,P,{className:"attr",begin:t+r.lookahead(":"),relevance:0},O,{begin:"("+n.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[f,n.REGEXP_MODE,{className:"function",begin:jn,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:n.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:T}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:o.begin,end:o.end},{match:a},{begin:s.begin,"on:begin":s.isTrulyOpeningTag,end:s.end}],subLanguage:"xml",contains:[{begin:s.begin,end:s.end,skip:!0,contains:["self"]}]}]},R,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+n.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[b,n.inherit(n.TITLE_MODE,{begin:t,className:"title.function"})]},{match:/\.\.\./,relevance:0},hn,{match:"\\$"+t,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[b]},W,V,k,xn,{match:/\$[(.]/}]}}function Qm(n){const r=n.regex,e=new RegExp("[\\p{XID_Start}_]\\p{XID_Continue}*","u"),t=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],o=/[-+*\/%=<>&|^~]|\*\*?|\/\/?|<<=?|>>=?|\+=|-=|\*=|\/=|%=|@|<|>/,a=["bool","complex","dict","float","frozenset","int","list","set","str","tuple"],s=["add_vertex","add","append","backtrack","bit_length","clear","collect_words","connected","counting_sort","defaultdict","deque","dfs","dp","extend","find_max_index","find","heapify","heappop","heappush","insert","insertion_sort","join","ListNode","merge_sort","pop","popleft","print_trie","quick_sort","RECURRENCE_RELATION","remove","shuffle","sort","TreeNode","TrieNode","union","UnionFind","update"],l=["BASE_CASE","BOOLEAN","CONDITION","CRITERIA","ITERATE_OVER_INPUT","MAXIMUM_POSSIBLE_ANSWER","MINIMUM_POSSIBLE_ANSWER","OTHER_ARGUMENTS","SMALLEST_SUBPROBLEM","START_NODE","STATE_FOR_WHOLE_INPUT","STATE","WINDOW_CONDITION_BROKEN"],u=["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip",...s],d=["__debug__","Ellipsis","False","None","NotImplemented","True",...l],m=["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union",...a],y={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:t,built_in:u,literal:d,type:m},g={className:"meta",begin:/^(>>>|\.\.\.) /},v={className:"subst",begin:/\{/,end:/\}/,keywords:y,illegal:/#/},w={begin:/\{\{/,relevance:0},S={className:"string",contains:[n.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[n.BACKSLASH_ESCAPE,g],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[n.BACKSLASH_ESCAPE,g],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[n.BACKSLASH_ESCAPE,g,w,v]},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[n.BACKSLASH_ESCAPE,g,w,v]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[n.BACKSLASH_ESCAPE,w,v]},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[n.BACKSLASH_ESCAPE,w,v]},n.APOS_STRING_MODE,n.QUOTE_STRING_MODE]},E="[0-9](_?[0-9])*",p=`(\\b(${E}))?\\.(${E})|\\b(${E})\\.`,f=`\\b|${t.join("|")}`,h={className:"number",relevance:0,variants:[{begin:`(\\b(${E})|(${p}))[eE][+-]?(${E})[jJ]?(?=${f})`},{begin:`(${p})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${f})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${f})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${f})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${f})`},{begin:`\\b(${E})[jJ](?=${f})`}]},x={className:"comment",begin:r.lookahead(/# type:/),end:/$/,keywords:y,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},T={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:y,contains:["self",g,h,S,n.HASH_COMMENT_MODE,{scope:"params.operator",match:o},{scope:"params.comma",match:","},{scope:"params.self",match:/self/}]}]};return v.contains=[S,h,g],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:y,illegal:/(<\/|\?)|=>/,contains:[g,h,{begin:/\bself\b/},{beginKeywords:"if",relevance:0},S,x,n.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,e],scope:{1:"keyword.def",3:"title.function"},contains:[T]},{variants:[{match:[/\bclass/,/\s+/,e,/\s*/,/\(\s*/,e,/\s*\)/]},{match:[/\bclass/,/\s+/,e]}],scope:{1:"keyword.class",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[h,T,S]},{scope:"operator",match:o}]}}Gt.registerLanguage("python",Qm);Gt.registerLanguage("javascript",Ym);Gt.registerLanguage("java",Wm);Gt.registerLanguage("cpp",Qg);function qm({code:n,language:r}){const e=K.useRef(null),[t,o]=K.useState(""),[a,s]=K.useState(""),l=rr("hljs",r,ou.code),u=()=>{if(e.current){const S=n.split(` -`).map((E,p)=>{const f=Gt.highlight(E,{language:r}).value;return`${f}`}).join("");s(S)}},d=()=>{const v=e.current,w=v==null?void 0:v.querySelectorAll("span[data-line-number]");w==null||w.forEach(S=>S.addEventListener("click",g))},m=()=>{const v=e.current,w=v==null?void 0:v.querySelectorAll("span[data-line-number]");w==null||w.forEach(S=>S.removeEventListener("click",g))},y=()=>{const v=e.current,w=v==null?void 0:v.querySelector(`span[data-line-number="${t}"]`);w==null||w.removeAttribute("focused")},g=v=>{const w=v.currentTarget,S=w.getAttribute("data-line-number")??"";y(),S===t?o(""):(w.setAttribute("focused",""),o(S))};return xo(e,y),K.useEffect(()=>(u(),d(),()=>m()),[n,a,t]),i.jsx("pre",{ref:e,children:i.jsx("code",{className:l,dangerouslySetInnerHTML:{__html:a}})})}const Xm="_copyButton_1hjzm_1",Zm="_copySvg_1hjzm_25",n1="_checkSvg_1hjzm_32",r1="_checkSvgPath_1hjzm_37",e1="_draw_1hjzm_1",t1="_enter_1hjzm_48",i1="_exit_1hjzm_52",ae={copyButton:Xm,copySvg:Zm,checkSvg:n1,checkSvgPath:r1,draw:e1,enter:t1,"fade-in":"_fade-in_1hjzm_1",exit:i1,"fade-out":"_fade-out_1hjzm_1"};function o1({onClick:n}){const[r,e]=K.useState("show"),[t,o]=K.useState("hide"),a=rr(ae.copySvg,r==="enter"&&ae.enter,r==="exit"&&ae.exit),s=rr(ae.checkSvg,t==="exit"&&ae.exit),l=rr(ae.checkSvgPath),u=()=>{r==="show"&&t==="hide"&&(e("exit"),n())},d=()=>{r==="enter"&&e("show"),r==="exit"&&(e("hide"),o("show"))},m=()=>{t==="show"&&setTimeout(()=>{o("exit")},500),t==="exit"&&(o("hide"),e("enter"))},y=()=>r!=="hide"&&i.jsx("svg",{className:a,viewBox:"0 0 512 512",onAnimationEnd:d,children:i.jsx("path",{d:"M64 464H288c8.8 0 16-7.2 16-16V384h48v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h64v48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16zM224 304H448c8.8 0 16-7.2 16-16V64c0-8.8-7.2-16-16-16H224c-8.8 0-16 7.2-16 16V288c0 8.8 7.2 16 16 16zm-64-16V64c0-35.3 28.7-64 64-64H448c35.3 0 64 28.7 64 64V288c0 35.3-28.7 64-64 64H224c-35.3 0-64-28.7-64-64z"})}),g=()=>t!=="hide"&&i.jsx("svg",{className:s,viewBox:"0 0 16 16",onAnimationEnd:m,children:i.jsx("path",{className:l,d:"M3.428571,9.14285714 L6.85714286,12.57142857 L12.5714286,3.42857143"})});return i.jsxs("button",{"aria-label":"copy button",className:ae.copyButton,onClick:u,children:[y(),g()]})}function a1(){return i.jsxs("svg",{viewBox:"0 0 128 128",children:[i.jsxs("linearGradient",{id:"python_svg__a",x1:70.252,x2:170.659,y1:1237.476,y2:1151.089,gradientTransform:"matrix(.563 0 0 -.568 -29.215 707.817)",gradientUnits:"userSpaceOnUse",children:[i.jsx("stop",{offset:0,stopColor:"#5A9FD4"}),i.jsx("stop",{offset:1,stopColor:"#306998"})]}),i.jsxs("linearGradient",{id:"python_svg__b",x1:209.474,x2:173.62,y1:1098.811,y2:1149.537,gradientTransform:"matrix(.563 0 0 -.568 -29.215 707.817)",gradientUnits:"userSpaceOnUse",children:[i.jsx("stop",{offset:0,stopColor:"#FFD43B"}),i.jsx("stop",{offset:1,stopColor:"#FFE873"})]}),i.jsx("path",{fill:"url(#python_svg__a)",d:"M63.391 1.988c-4.222.02-8.252.379-11.8 1.007-10.45 1.846-12.346 5.71-12.346 12.837v9.411h24.693v3.137H29.977c-7.176 0-13.46 4.313-15.426 12.521-2.268 9.405-2.368 15.275 0 25.096 1.755 7.311 5.947 12.519 13.124 12.519h8.491V67.234c0-8.151 7.051-15.34 15.426-15.34h24.665c6.866 0 12.346-5.654 12.346-12.548V15.833c0-6.693-5.646-11.72-12.346-12.837-4.244-.706-8.645-1.027-12.866-1.008M50.037 9.557c2.55 0 4.634 2.117 4.634 4.721 0 2.593-2.083 4.69-4.634 4.69-2.56 0-4.633-2.097-4.633-4.69-.001-2.604 2.073-4.721 4.633-4.721",transform:"translate(0 10.26)"}),i.jsx("path",{fill:"url(#python_svg__b)",d:"M91.682 28.38v10.966c0 8.5-7.208 15.655-15.426 15.655H51.591c-6.756 0-12.346 5.783-12.346 12.549v23.515c0 6.691 5.818 10.628 12.346 12.547 7.816 2.297 15.312 2.713 24.665 0 6.216-1.801 12.346-5.423 12.346-12.547v-9.412H63.938v-3.138h37.012c7.176 0 9.852-5.005 12.348-12.519 2.578-7.735 2.467-15.174 0-25.096-1.774-7.145-5.161-12.521-12.348-12.521h-9.268zM77.809 87.927c2.561 0 4.634 2.097 4.634 4.692 0 2.602-2.074 4.719-4.634 4.719-2.55 0-4.633-2.117-4.633-4.719 0-2.595 2.083-4.692 4.633-4.692",transform:"translate(0 10.26)"}),i.jsxs("radialGradient",{id:"python_svg__c",cx:1825.678,cy:444.45,r:26.743,gradientTransform:"matrix(0 -.24 -1.055 0 532.979 557.576)",gradientUnits:"userSpaceOnUse",children:[i.jsx("stop",{offset:0,stopColor:"#B8B8B8",stopOpacity:.498}),i.jsx("stop",{offset:1,stopColor:"#7F7F7F",stopOpacity:0})]}),i.jsx("path",{fill:"url(#python_svg__c)",d:"M97.309 119.597c0 3.543-14.816 6.416-33.091 6.416-18.276 0-33.092-2.873-33.092-6.416s14.815-6.417 33.092-6.417c18.275 0 33.091 2.872 33.091 6.417",opacity:.444})]})}function s1(){return i.jsxs("svg",{viewBox:"0 0 128 128",children:[i.jsx("path",{fill:"#F0DB4F",d:"M1.408 1.408h125.184v125.185H1.408z"}),i.jsx("path",{fill:"#323330",d:"M116.347 96.736c-.917-5.711-4.641-10.508-15.672-14.981-3.832-1.761-8.104-3.022-9.377-5.926-.452-1.69-.512-2.642-.226-3.665.821-3.32 4.784-4.355 7.925-3.403 2.023.678 3.938 2.237 5.093 4.724 5.402-3.498 5.391-3.475 9.163-5.879-1.381-2.141-2.118-3.129-3.022-4.045-3.249-3.629-7.676-5.498-14.756-5.355l-3.688.477c-3.534.893-6.902 2.748-8.877 5.235-5.926 6.724-4.236 18.492 2.975 23.335 7.104 5.332 17.54 6.545 18.873 11.531 1.297 6.104-4.486 8.08-10.234 7.378-4.236-.881-6.592-3.034-9.139-6.949-4.688 2.713-4.688 2.713-9.508 5.485 1.143 2.499 2.344 3.63 4.26 5.795 9.068 9.198 31.76 8.746 35.83-5.176.165-.478 1.261-3.666.38-8.581M69.462 58.943H57.753l-.048 30.272c0 6.438.333 12.34-.714 14.149-1.713 3.558-6.152 3.117-8.175 2.427-2.059-1.012-3.106-2.451-4.319-4.485-.333-.584-.583-1.036-.667-1.071l-9.52 5.83c1.583 3.249 3.915 6.069 6.902 7.901 4.462 2.678 10.459 3.499 16.731 2.059 4.082-1.189 7.604-3.652 9.448-7.401 2.666-4.915 2.094-10.864 2.07-17.444.06-10.735.001-21.468.001-32.237"})]})}function l1(){return i.jsxs("svg",{id:"Layer_1",x:"0px",y:"0px",width:"306px",height:"344.35px",viewBox:"0 0 306 344.35","enable-background":"new 0 0 306 344.35",children:[i.jsx("path",{fill:"#00599C",d:"M302.107,258.262c2.401-4.159,3.893-8.845,3.893-13.053V99.14c0-4.208-1.49-8.893-3.892-13.052L153,172.175L302.107,258.262z"}),i.jsx("path",{fill:"#004482",d:"M166.25,341.193l126.5-73.034c3.644-2.104,6.956-5.737,9.357-9.897L153,172.175L3.893,258.263c2.401,4.159,5.714,7.793,9.357,9.896l126.5,73.034C147.037,345.401,158.963,345.401,166.25,341.193z"}),i.jsx("path",{fill:"#659AD2",d:"M302.108,86.087c-2.402-4.16-5.715-7.793-9.358-9.897L166.25,3.156c-7.287-4.208-19.213-4.208-26.5,0L13.25,76.19C5.962,80.397,0,90.725,0,99.14v146.069c0,4.208,1.491,8.894,3.893,13.053L153,172.175L302.108,86.087z"}),i.jsx("g",{children:i.jsx("path",{fill:"#FFFFFF",d:"M153,274.175c-56.243,0-102-45.757-102-102s45.757-102,102-102c36.292,0,70.139,19.53,88.331,50.968l-44.143,25.544c-9.105-15.736-26.038-25.512-44.188-25.512c-28.122,0-51,22.878-51,51c0,28.121,22.878,51,51,51c18.152,0,35.085-9.776,44.191-25.515l44.143,25.543C223.142,254.644,189.294,274.175,153,274.175z"})}),i.jsx("g",{children:i.jsx("polygon",{fill:"#FFFFFF",points:"255,166.508 243.666,166.508 243.666,155.175 232.334,155.175 232.334,166.508 221,166.508221,177.841 232.334,177.841 232.334,189.175 243.666,189.175 243.666,177.841 255,177.841 "})}),i.jsx("g",{children:i.jsx("polygon",{fill:"#FFFFFF",points:"297.5,166.508 286.166,166.508 286.166,155.175 274.834,155.175 274.834,166.508 263.5,166.508263.5,177.841 274.834,177.841 274.834,189.175 286.166,189.175 286.166,177.841 297.5,177.841 "})})]})}function u1(){return i.jsxs("svg",{height:"800px",width:"800px",id:"Layer_1",viewBox:"0 0 511.998 511.998",children:[i.jsxs("g",{children:[i.jsx("path",{fill:"#DB380E",d:"M253.464,94.869c-23.658,16.639-50.471,35.498-64.838,66.699c-24.954,54.435,51.062,113.812,54.311,116.313c0.755,0.581,1.659,0.871,2.56,0.871c0.957,0,1.915-0.327,2.693-0.979c1.509-1.262,1.937-3.406,1.031-5.152c-0.275-0.53-27.561-53.53-26.547-91.552c0.359-13.243,18.892-28.266,38.512-44.171c17.97-14.568,38.34-31.079,50.258-50.394c26.164-42.516-2.916-84.322-3.213-84.74c-1.155-1.622-3.287-2.209-5.11-1.41c-1.821,0.804-2.83,2.773-2.414,4.72c0.059,0.277,5.714,27.923-10.022,56.406C284.203,73.25,269.959,83.268,253.464,94.869z"}),i.jsx("path",{fill:"#DB380E",d:"M353.137,113.617c1.669-1.257,2.159-3.55,1.15-5.38c-1.011-1.83-3.211-2.637-5.165-1.895c-4.019,1.528-98.416,37.915-98.416,81.88c0,30.307,12.946,46.317,22.399,58.009c3.708,4.586,6.909,8.546,7.964,11.927c2.97,9.743-4.066,27.353-7.025,33.317c-0.853,1.714-0.435,3.792,1.016,5.044c0.784,0.677,1.763,1.021,2.743,1.021c0.834,0,1.672-0.248,2.396-0.752c1.623-1.128,39.667-28.026,32.844-60.433c-2.542-12.318-8.595-21.318-13.936-29.26c-8.274-12.305-14.25-21.193-5.184-37.609C304.545,150.338,352.65,113.981,353.137,113.617z"})]}),i.jsxs("g",{children:[i.jsx("path",{fill:"#73A1FB",d:"M107.418,298.236c-1.618,4.845-0.854,9.651,2.207,13.903c10.233,14.207,46.48,22.029,102.068,22.029c0.003,0,0.005,0,0.007,0c7.532,0,15.484-0.148,23.629-0.44c88.875-3.181,121.839-30.869,123.199-32.046c1.482-1.283,1.878-3.419,0.957-5.147c-0.922-1.727-2.909-2.595-4.808-2.072c-31.301,8.546-89.748,11.58-130.288,11.58c-45.363,0-68.465-3.268-74.121-5.681c2.902-3.985,20.802-11.101,42.983-15.464c2.12-0.416,3.577-2.374,3.367-4.524s-2.016-3.79-4.177-3.79C179.439,276.584,114.234,277.628,107.418,298.236z"}),i.jsx("path",{fill:"#73A1FB",d:"M404.812,269.718c-18.331,0-35.714,9.188-36.446,9.577c-1.695,0.908-2.555,2.852-2.09,4.72c0.467,1.865,2.144,3.176,4.067,3.178c0.389,0,39.102,0.317,42.608,22.436c3.106,19.082-36.629,50-52.202,60.304c-1.682,1.113-2.335,3.263-1.554,5.123c0.665,1.583,2.206,2.573,3.868,2.573c0.29,0,0.584-0.03,0.876-0.092c3.696-0.791,90.406-19.899,81.238-70.384C439.584,276.213,420.138,269.718,404.812,269.718z"}),i.jsx("path",{fill:"#73A1FB",d:"M345.347,363.755c0.302-1.617-0.371-3.262-1.717-4.207l-20.791-14.563c-1.014-0.71-2.295-0.933-3.485-0.618c-0.217,0.055-21.959,5.771-53.525,9.276c-12.528,1.405-26.56,2.147-40.582,2.147c-31.558,0-52.192-3.708-55.197-6.428c-0.398-0.764-0.272-1.111-0.201-1.304c0.546-1.518,3.472-3.322,5.358-4.036c2.083-0.771,3.206-3.033,2.558-5.157c-0.646-2.127-2.837-3.378-4.999-2.859c-20.856,5.033-31.054,12.071-30.312,20.918c1.318,15.686,37.65,23.737,68.365,25.865c4.417,0.302,9.194,0.455,14.195,0.455c0.003,0,0.005,0,0.008,0c51.074,0,116.55-16.025,117.204-16.188C343.825,366.666,345.044,365.375,345.347,363.755z"}),i.jsx("path",{fill:"#73A1FB",d:"M188.602,397.419c1.575-1.024,2.273-2.971,1.714-4.764c-0.557-1.793-2.234-2.971-4.118-2.946c-2.795,0.074-27.349,1.182-29.068,16.815c-0.52,4.672,0.818,8.941,3.979,12.686c8.816,10.448,32.614,16.658,72.741,18.984c4.747,0.285,9.569,0.428,14.334,0.428c51.015,0,85.373-15.973,86.812-16.653c1.395-0.66,2.315-2.031,2.397-3.571s-0.687-3.001-2.003-3.806l-26.275-16.04c-0.912-0.556-2.003-0.74-3.043-0.527c-0.166,0.035-16.849,3.495-42.026,6.913c-4.764,0.648-10.73,0.977-17.73,0.977c-25.15,0-53.124-4.109-58.489-6.8C187.749,398.613,187.848,397.975,188.602,397.419z"}),i.jsx("path",{fill:"#73A1FB",d:"M224.408,486.85c116.854-0.099,179.571-20.88,191.653-33.957c4.277-4.626,4.739-9.006,4.376-11.867c-0.898-7.04-7.311-11.35-8.038-11.818c-1.754-1.128-4.108-0.833-5.476,0.745c-1.365,1.578-1.397,3.884-0.027,5.461c0.737,0.948,1.163,2.535-0.992,4.692c-4.83,4.511-53.545,18.204-134.656,22.318c-11.111,0.577-22.765,0.871-34.636,0.873c-72.623,0-125.772-9.948-132.749-15.744c2.689-3.864,21.489-10.037,41.482-13.529c2.253-0.393,3.775-2.516,3.426-4.776c-0.349-2.259-2.432-3.814-4.709-3.519c-0.564,0.077-2.478,0.191-4.694,0.327c-32.988,2.014-71.109,6.503-73.098,23.5c-0.604,5.179,0.935,9.881,4.576,13.973c8.909,10.01,34.516,23.319,153.558,23.319C224.406,486.85,224.406,486.85,224.408,486.85z"}),i.jsx("path",{fill:"#73A1FB",d:"M439.013,456.578c-1.652-0.764-3.604-0.378-4.836,0.952c-0.171,0.185-17.74,18.556-70.564,29.344c-20.223,4.052-58.183,6.107-112.826,6.107c-54.745,0-106.838-2.154-107.357-2.176c-2.176-0.106-4.037,1.476-4.333,3.618c-0.297,2.14,1.083,4.158,3.184,4.658c0.542,0.128,55.135,12.918,129.779,12.918c35.801,0,70.639-2.907,103.548-8.645c61.361-10.757,65.657-41.183,65.81-42.473C441.632,459.078,440.662,457.342,439.013,456.578z"})]})]})}const c1={python:a1,javascript:s1,cpp:l1,java:u1};function c({title:n,children:r}){const[e,t]=K.useState(0),o=K.Children.toArray(r),a=o[e].props.code,s=o[e].props.language,l=m=>t(m),u=()=>navigator.clipboard.writeText(a),d=()=>o.map((m,y)=>{const g=c1[m.props.language],v=`view ${m.props.language} code`;return i.jsx("button",{role:"tab","aria-label":v,"aria-selected":y===e,className:hi.tabButton,onClick:()=>l(y),children:i.jsx(g,{})},y)});return i.jsxs("div",{role:"tablist",className:hi.container,children:[i.jsx("h3",{children:n}),i.jsxs("div",{className:hi.buttonContainer,children:[i.jsx("div",{role:"tablist",className:hi.tabButtonContainer,children:d()}),i.jsx(o1,{onClick:u})]}),i.jsx("div",{role:"tabpanel",className:"tabs-content",children:i.jsx(qm,{code:a,language:s})})]})}c.Tab=n=>i.jsx(i.Fragment,{children:n});const d1=`def fn(arr):\r - ans = 0\r - left = 0\r - right = len(arr) - 1\r -\r - while left < right:\r - # TODO: logic with left and right\r - if CONDITION:\r - left += 1\r - else:\r - right -= 1\r -\r - return ans\r -`,f1=`def fn(arr1, arr2):\r - i = 0\r - j = 0\r - ans = 0\r -\r - while i < len(arr1) and j < len(arr2):\r - # TODO: logic\r - if CONDITION:\r - i += 1\r - else:\r - j += 1\r -\r - while i < len(arr1):\r - # TODO: logic\r - i += 1\r -\r - while j < len(arr2):\r - # TODO: logic\r - j += 1\r -\r - return ans\r -`,p1=`def fn(arr):\r - n = len(arr)\r - window = 0\r - left = 0\r - ans = 0\r -\r - for right in range(n):\r - # TODO: add arr[right] to window\r -\r - while WINDOW_CONDITION_BROKEN:\r - # TODO: remove arr[left] from window\r - left += 1\r -\r - # TODO: update ans\r -\r - return ans\r -`,h1=`def fn(arr):\r - n = len(arr)\r - prefix = [arr[0]]\r -\r - for i in range(1, n):\r - prefix.append(prefix[-1] + arr[i])\r -\r - return prefix\r -`,g1=`def fn(strs: list[str]):\r - ans = []\r -\r - for char in strs:\r - ans.append(char)\r -\r - return ''.join(ans)\r -`,m1=`const fn = (arr) => {\r - let ans = 0\r - let left = 0\r - let right = arr.length - 1\r -\r - while (left < right) {\r - // TODO: logic with left and right\r - if (CONDITION) {\r - left++\r - } else {\r - right--\r - }\r - }\r -\r - return ans\r -}\r -`,v1=`let fn = (arr1, arr2) => {\r - let ans = 0\r - let i = 0\r - let j = 0\r -\r - while (i < arr1.length && j < arr2.length) {\r - // TODO: logic\r - if (CONDITION) {\r - i++\r - } else {\r - j++\r - }\r - }\r -\r - while (i < arr1.length) {\r - // TODO: logic\r - i++\r - }\r -\r - while (j < arr2.length) {\r - // TODO: logic\r - j++\r - }\r -\r - return ans\r -}\r -`,y1=`const fn = (arr) => {\r - let window = 0\r - let ans = 0\r - let left = 0\r -\r - for (let right = 0; right < arr.length; right++) {\r - // TODO: add arr[right] to window\r -\r - while (WINDOW_CONDITION_BROKEN) {\r - // TODO: remove arr[left] from window\r - left++\r - }\r -\r - // TODO: update ans\r - }\r -\r - return ans\r -}\r -`,x1=`const fn = (arr) => {\r - let prefix = [arr[0]]\r -\r - for (let i = 1; i < arr.length; i++) {\r - prefix.push(prefix[prefix.length - 1] + arr[i])\r - }\r -\r - return prefix\r -}\r -`,_1=`const fn = (arr) => {\r - let ans = []\r -\r - for (const c of arr) {\r - ans.push(c)\r - }\r -\r - return ans.join('')\r -}\r -\r -const fn = (arr) => {\r - let ans = ''\r -\r - for (const c of arr) {\r - ans += c\r - }\r -\r - return ans\r -}\r -`,w1=`public int fn(int[] arr) {\r - int ans = 0;\r - int left = 0;\r - int right = arr.length - 1;\r -\r - while (left < right) {\r - // TODO: logic with left and right\r - if (CONDITION) {\r - left++;\r - } else {\r - right--;\r - }\r - }\r -\r - return ans;\r -}\r -`,S1=`public int fn(int[] arr1, int[] arr2) {\r - int i = 0;\r - int j = 0;\r - int ans = 0;\r -\r - while (i < arr1.length && j < arr2.length) {\r - // TODO: logic\r - if (CONDITION) {\r - i++;\r - } else {\r - j++;\r - }\r - }\r -\r - while (i < arr1.length) {\r - // TODO: logic\r - i++;\r - }\r -\r - while (j < arr2.length) {\r - // TODO: logic\r - j++;\r - }\r -\r - return ans;\r -}\r -`,j1=`public int fn(int[] arr) {\r - int n = arr.length;\r - int window = 0;\r - int left = 0;\r - int ans = 0;\r -\r - for (int right = 0; right < arr.length; right++) {\r - // TODO: add arr[right] to window\r -\r - while (WINDOW_CONDITION_BROKEN) {\r - // TODO: remove arr[left] from window\r - left++;\r - }\r -\r - // TODO: update ans\r - }\r -\r - return ans;\r -}\r -`,T1=`import java.util.ArrayList;\r -import java.util.List;\r -\r -\r -public int[] fn(int[] arr) {\r - int n = arr.length;\r - int[] prefix = new int[n];\r - prefix[0] = arr[0];\r -\r - for (int i = 1; i < n; i++) {\r - prefix[i] = prefix[i - 1] + arr[i];\r - }\r -\r - return prefix;\r -}\r -`,b1=`public String fn(char[] strs) {\r - StringBuilder sb = new StringBuilder();\r -\r - for (char c: strs) {\r - sb.append(c);\r - }\r -\r - return sb.toString();\r -}\r -`,k1=`#include \r -\r -using namespace std;\r -\r -\r -int fn(vector& arr) {\r - int ans = 0;\r - int left = 0;\r - int right = arr.size() - 1;\r -\r - while (left < right) {\r - // TODO: logic with left and right\r - if (CONDITION) {\r - left++;\r - } else {\r - right--;\r - }\r - }\r -\r - return ans;\r -}\r -`,E1=`#include \r -\r -using namespace std;\r -\r -\r -int fn(vector& arr1, vector& arr2) {\r - int i = 0;\r - int j = 0;\r - int ans = 0;\r -\r - while (i < arr1.size() && j < arr2.size()) {\r - // TODO: logic\r - if (CONDITION) {\r - i++;\r - } else {\r - j++;\r - }\r - }\r -\r - while (i < arr1.size()) {\r - // TODO: logic\r - i++;\r - }\r -\r - while (j < arr2.size()) {\r - // TODO: logic\r - j++;\r - }\r -\r - return ans;\r -}\r -`,N1=`#include \r -\r -using namespace std;\r -\r -\r -int fn(vector& arr) {\r - int n = arr.size();\r - int window = 0;\r - int left = 0;\r - int ans = 0;\r -\r - for (int right = 0; right < n; right++) {\r - // TODO: add arr[right] to window\r -\r - while (WINDOW_CONDITION_BROKEN) {\r - // TODO: remove arr[left] from window\r - left++;\r - }\r -\r - // TODO: update ans\r - }\r -\r - return ans;\r -}\r -`,O1=`#include \r -#include \r -\r -using namespace std;\r -\r -\r -vector fn(vector& arr) {\r - int n = arr.size();\r - vector prefix;\r - prefix.push_back(arr[0]);\r -\r - for (int i = 1; i < n; ++i) {\r - prefix.push_back(prefix.back() + arr[i]);\r - }\r -\r - return prefix;\r -}\r -`,A1=`string fn(vector& arr) {\r - return string(arr.begin(), arr.end())\r -}\r -`;function C1(){return i.jsxs("div",{className:un.container,children:[i.jsx("h2",{className:un.sectionHeader,children:"Array"}),i.jsx("section",{id:"array-two-pointers-one-input",children:i.jsxs(c,{title:"two pointers: one input, opposite ends",children:[i.jsx(c.Tab,{code:d1,language:"python"}),i.jsx(c.Tab,{code:m1,language:"javascript"}),i.jsx(c.Tab,{code:w1,language:"java"}),i.jsx(c.Tab,{code:k1,language:"cpp"})]})}),i.jsx("section",{id:"array-two-pointers-two-inputs",children:i.jsxs(c,{title:"two pointers: two inputs, exhaust both",children:[i.jsx(c.Tab,{code:f1,language:"python"}),i.jsx(c.Tab,{code:v1,language:"javascript"}),i.jsx(c.Tab,{code:S1,language:"java"}),i.jsx(c.Tab,{code:E1,language:"cpp"})]})}),i.jsx("section",{id:"array-sliding-window",children:i.jsxs(c,{title:"sliding window",children:[i.jsx(c.Tab,{code:p1,language:"python"}),i.jsx(c.Tab,{code:y1,language:"javascript"}),i.jsx(c.Tab,{code:j1,language:"java"}),i.jsx(c.Tab,{code:N1,language:"cpp"})]})}),i.jsx("section",{id:"array-prefix-sum",children:i.jsxs(c,{title:"prefix sum",children:[i.jsx(c.Tab,{code:h1,language:"python"}),i.jsx(c.Tab,{code:x1,language:"javascript"}),i.jsx(c.Tab,{code:T1,language:"java"}),i.jsx(c.Tab,{code:O1,language:"cpp"})]})}),i.jsx("section",{id:"array-string-building",children:i.jsxs(c,{title:"efficient string building",children:[i.jsx(c.Tab,{code:g1,language:"python"}),i.jsx(c.Tab,{code:_1,language:"javascript"}),i.jsx(c.Tab,{code:b1,language:"java"}),i.jsx(c.Tab,{code:A1,language:"cpp"})]})})]})}const L1=`from collections import defaultdict\r -\r -\r -def fn(arr, k):\r - counts = defaultdict(int)\r - counts[0] = 1\r - ans = curr = 0\r -\r - for num in arr:\r - # TODO: logic to change curr\r - ans += counts[curr - k]\r - counts[curr] += 1\r -\r - return ans\r -`,P1=`def fn(arr):\r - window = set()\r - ans = 0\r - left = 0\r -\r - for right, ELEMENT in enumerate(arr):\r - # TODO: add arr[right] to window\r -\r - while WINDOW_CONDITION_BROKEN:\r - # TODO: remove arr[left] from window\r - left += 1\r -\r - # TODO: update ans\r -\r - return ans\r -`,M1=`const fn = (arr, k) => {\r - let counts = new Map()\r - counts.set(0, 1)\r - let ans = 0\r - let curr = 0\r -\r - for (const num of arr) {\r - // TODO: logic to change curr\r - ans += counts.get(curr - k) || 0\r - counts.set(curr, (counts.get(curr) || 0) + 1)\r - }\r -\r - return ans\r -}\r -`,R1=`function fn(arr) {\r - let window = new Set()\r - let ans = 0\r - let left = 0\r -\r - for (let right = 0; right < arr.length; right++) {\r - // TODO: add arr[right] to window\r -\r - while (WINDOW_CONDITION_BROKEN) {\r - // TODO: remove arr[left] from window\r - left += 1\r - }\r -\r - // TODO: update ans\r - }\r -\r - return ans\r -}\r -`,I1=`import java.util.HashMap;\r -import java.util.Map;\r -\r -\r -public int fn(int[] arr, int k) {\r - Map counts = new HashMap<>();\r - counts.put(0, 1);\r - int ans = 0;\r - int curr = 0;\r -\r - for (int num: arr) {\r - // TODO: logic to change curr\r - ans += counts.getOrDefault(curr - k, 0);\r - counts.put(curr, counts.getOrDefault(curr, 0) + 1);\r - }\r -\r - return ans;\r -}\r -`,D1=`import java.util.HashSet;\r -import java.util.Set;\r -\r -\r -public int fn(int[] arr) {\r - Set window = new HashSet<>();\r - int ans = 0;\r - int left = 0;\r -\r - for (int right = 0; right < arr.length; right++) {\r - // TODO: add arr[right] to window\r -\r - while (WINDOW_CONDITION_BROKEN) {\r - // TODO: remove arr[left] from window\r - left++;\r - }\r -\r - // TODO: update ans\r - }\r -\r - return ans;\r -}\r -`,B1=`#include \r -#include \r -\r -using namespace std;\r -\r -\r -int fn(vector& arr, int k) {\r - unordered_map counts;\r - counts[0] = 1;\r - int ans = 0;\r - int curr = 0;\r -\r - for (int num : arr) {\r - // TODO: logic to change curr\r - ans += counts[curr - k];\r - counts[curr]++;\r - }\r -\r - return ans;\r -}\r -`,z1=`#include \r -#include \r -\r -using namespace std;\r -\r -\r -int fn(vector& arr) {\r - unordered_set window;\r - int ans = 0;\r - int left = 0;\r -\r - for (int right = 0; right < arr.size(); right++) {\r - // TODO: add arr[right] to window\r -\r - while (WINDOW_CONDITION_BROKEN) {\r - // TODO: remove arr[left] from window\r - left++;\r - }\r -\r - // TODO: update ans\r - }\r -\r - return ans;\r -}\r -`;function F1(){return i.jsxs("div",{className:un.container,children:[i.jsx("h2",{className:un.sectionHeader,children:"Hash Map"}),i.jsx("section",{id:"hashmap-find-number-of-subarrays",children:i.jsxs(c,{title:"find number of subarrays that fit an exact criteria",children:[i.jsx(c.Tab,{code:L1,language:"python"}),i.jsx(c.Tab,{code:M1,language:"javascript"}),i.jsx(c.Tab,{code:I1,language:"java"}),i.jsx(c.Tab,{code:B1,language:"cpp"})]})}),i.jsx("section",{id:"hashmap-sliding-window",children:i.jsxs(c,{title:"sliding window",children:[i.jsx(c.Tab,{code:P1,language:"python"}),i.jsx(c.Tab,{code:R1,language:"javascript"}),i.jsx(c.Tab,{code:D1,language:"java"}),i.jsx(c.Tab,{code:z1,language:"cpp"})]})})]})}const U1=`def fn(head):\r - slow = head\r - fast = head\r - ans = 0\r -\r - while fast and fast.next:\r - # TODO: logic\r - slow = slow.next\r - fast = fast.next.next\r -\r - return ans\r -`,H1=`def fn(head):\r - prev = None\r - curr = head\r -\r - while curr:\r - nxt = curr.next\r - curr.next = prev\r - prev = curr\r - curr = nxt\r -\r - return prev\r -`,$1=`const fn = (head) => {\r - let ans = 0\r - let slow = head\r - let fast = head\r -\r - while (fast && fast.next) {\r - // TODO: logic\r - slow = slow.next\r - fast = fast.next.next\r - }\r -\r - return ans\r -}\r -`,W1=`const fn = (head) => {\r - let prev = null\r - let curr = head\r -\r - while (curr) {\r - let next = curr.next\r - curr.next = prev\r - prev = curr\r - curr = next\r - }\r -\r - return prev\r -}\r -`,V1=`public int fn(ListNode head) {\r - ListNode slow = head;\r - ListNode fast = head;\r - int ans = 0;\r -\r - while (fast != null && fast.next != null) {\r - // TODO: logic\r - slow = slow.next;\r - fast = fast.next.next;\r - }\r -\r - return ans;\r -}\r -`,K1=`public ListNode fn(ListNode head) {\r - ListNode curr = head;\r - ListNode prev = null;\r -\r - while (curr != null) {\r - ListNode nextNode = curr.next;\r - curr.next = prev;\r - prev = curr;\r - curr = nextNode;\r - }\r -\r - return prev;\r -}\r -`,G1=`int fn(ListNode* head) {\r - ListNode* slow = head;\r - ListNode* fast = head;\r - int ans = 0;\r -\r - while (fast && fast->next) {\r - // TODO: logic\r - slow = slow->next;\r - fast = fast->next->next;\r - }\r -\r - return ans;\r -}\r -`,J1=`ListNode* fn(ListNode* head) {\r - ListNode* prev = nullptr;\r - ListNode* curr = head;\r -\r - while (curr) {\r - ListNode* nxt = curr->next;\r - curr->next = prev;\r - prev = curr;\r - curr = nxt;\r - }\r -\r - return prev;\r -}\r -`;function Y1(){return i.jsxs("div",{className:un.container,children:[i.jsx("h2",{className:un.sectionHeader,children:"Linked List"}),i.jsx("section",{id:"linkedlist-fast-and-slow-pointer",children:i.jsxs(c,{title:"fast and slow pointer",children:[i.jsx(c.Tab,{code:U1,language:"python"}),i.jsx(c.Tab,{code:$1,language:"javascript"}),i.jsx(c.Tab,{code:V1,language:"java"}),i.jsx(c.Tab,{code:G1,language:"cpp"})]})}),i.jsx("section",{id:"linkedlist-reverse",children:i.jsxs(c,{title:"reverse linked list",children:[i.jsx(c.Tab,{code:H1,language:"python"}),i.jsx(c.Tab,{code:W1,language:"javascript"}),i.jsx(c.Tab,{code:K1,language:"java"}),i.jsx(c.Tab,{code:J1,language:"cpp"})]})})]})}const Q1=`def fn(arr):\r - stack = []\r - ans = 0\r -\r - for num in arr:\r - while stack and stack[-1] > num:\r - # TODO: logic\r - stack.pop()\r - stack.append(num)\r -\r - return ans\r -`,q1=`def fn(arr):\r - stack = []\r - ans = 0\r -\r - for num in arr:\r - while stack and stack[-1] < num:\r - # TODO: logic\r - stack.pop()\r - stack.append(num)\r -\r - return ans\r -`,X1=`const fn = (arr) => {\r - let stack = []\r - let ans = 0\r -\r - for (const num of arr) {\r - while (stack.length && stack[stack.length - 1] > num) {\r - // TODO: logic\r - stack.pop()\r - }\r -\r - stack.push(num)\r - }\r -\r - return ans\r -}\r -`,Z1=`const fn = (arr) => {\r - let stack = []\r - let ans = 0\r -\r - for (const num of arr) {\r - while (stack.length && stack[stack.length - 1] < num) {\r - // TODO: logic\r - stack.pop()\r - }\r -\r - stack.push(num)\r - }\r -\r - return ans\r -}\r -`,nv=`import java.util.Stack;\r -\r -\r -public int fn(int[] arr) {\r - Stack stack = new Stack<>();\r - int ans = 0;\r -\r - for (int num : arr) {\r - while (!stack.isEmpty() && stack.peek() > num) {\r - // TODO: logic\r - stack.pop();\r - }\r - stack.push(num);\r - }\r -\r - return ans;\r -}\r -`,rv=`import java.util.Stack;\r -\r -\r -public int fn(int[] arr) {\r - Stack stack = new Stack<>();\r - int ans = 0;\r -\r - for (int num : arr) {\r - while (!stack.isEmpty() && stack.peek() < num) {\r - // TODO: logic\r - stack.pop();\r - }\r - stack.push(num);\r - }\r -\r - return ans;\r -}\r -`,ev=`#include \r -#include \r -\r -using namespace std;\r -\r -\r -int fn(vector& arr) {\r - stack stack;\r - int ans = 0;\r -\r - for (int num : arr) {\r - while (!stack.empty() && stack.top() > num) {\r - // TODO: logic\r - stack.pop();\r - }\r - stack.push(num);\r - }\r -\r - return ans;\r -}\r -`,tv=`#include \r -#include \r -\r -using namespace std;\r -\r -\r -int fn(vector& arr) {\r - stack stack;\r - int ans = 0;\r -\r - for (int num : arr) {\r - while (!stack.empty() && stack.top() < num) {\r - // TODO: logic\r - stack.pop();\r - }\r - stack.push(num);\r - }\r -\r - return ans;\r -}\r -`;function iv(){return i.jsxs("div",{className:un.container,children:[i.jsx("h2",{className:un.sectionHeader,children:"Stack"}),i.jsx("section",{id:"stack-monotonic-increasing",children:i.jsxs(c,{title:"monotonic increasing stack",children:[i.jsx(c.Tab,{code:Q1,language:"python"}),i.jsx(c.Tab,{code:X1,language:"javascript"}),i.jsx(c.Tab,{code:nv,language:"java"}),i.jsx(c.Tab,{code:ev,language:"cpp"})]})}),i.jsx("section",{id:"stack-monotonic-decreasing",children:i.jsxs(c,{title:"monotonic decreasing stack",children:[i.jsx(c.Tab,{code:q1,language:"python"}),i.jsx(c.Tab,{code:Z1,language:"javascript"}),i.jsx(c.Tab,{code:rv,language:"java"}),i.jsx(c.Tab,{code:tv,language:"cpp"})]})})]})}const ov=`def dfs(root):\r - if not root:\r - return\r -\r - ans = 0\r -\r - # TODO: logic\r - dfs(root.left)\r - dfs(root.right)\r -\r - return ans\r -`,av=`def dfs(root):\r - stack = [root]\r - ans = 0\r -\r - while stack:\r - node = stack.pop()\r - # TODO: logic\r - if node.left:\r - stack.append(node.left)\r - if node.right:\r - stack.append(node.right)\r -\r - return ans\r -`,sv=`from collections import deque\r -\r -\r -def fn(root):\r - que = deque([root])\r - ans = 0\r -\r - while que:\r - current_length = len(que)\r - # TODO: logic for current level\r - for _ in range(current_length):\r - node = que.popleft()\r - # TODO: logic\r - if node.left:\r - que.append(node.left)\r - if node.right:\r - que.append(node.right)\r -\r - return ans\r -`,lv=`const dfs = (root) => {\r - if (!root) {\r - return\r - }\r -\r - let ans = 0\r -\r - // TODO: logic\r - dfs(root.left)\r - dfs(root.right)\r -\r - return ans\r -}\r -`,uv=`const dfs = (root) => {\r - let stack = [root]\r - let ans = 0\r -\r - while (stack.length) {\r - let node = stack.pop()\r - // TODO: logic\r - if (node.left) {\r - stack.push(node.left)\r - }\r - if (node.right) {\r - stack.push(node.right)\r - }\r - }\r -\r - return ans\r -}\r -`,cv=`const fn = (root) => {\r - let que = [root]\r - let ans = 0\r -\r - while (que.length) {\r - let currentLength = que.length\r - let nextQue = []\r - // TODO: logic for current level\r -\r - for (let i = 0; i < currentLength; i++) {\r - let node = que[i]\r - // TODO: logic\r - if (node.left) {\r - nextQue.push(node.left)\r - }\r - if (node.right) {\r - nextQue.push(node.right)\r - }\r - }\r -\r - que = nextQue\r - }\r -\r - return ans\r -}\r -`,dv=`public int dfs(TreeNode root) {\r - if (root == null) {\r - return 0;\r - }\r -\r - int ans = 0;\r -\r - // TODO: logic\r - ans += dfs(root.left);\r - ans += dfs(root.right);\r -\r - return ans;\r -}\r -`,fv=`import java.util.Stack;\r -\r -\r -public int dfs(TreeNode root) {\r - Stack stack = new Stack<>();\r - stack.push(root);\r - int ans = 0;\r -\r - while (!stack.isEmpty()) {\r - TreeNode node = stack.pop();\r - // TODO: logic\r - if (node.left != null) {\r - stack.push(node.left);\r - }\r - if (node.right != null) {\r - stack.push(node.right);\r - }\r - }\r -\r - return ans;\r -}\r -`,pv=`import java.util.LinkedList;\r -import java.util.Queue;\r -\r -\r -public int fn(TreeNode root) {\r - Queue que = new LinkedList<>();\r - que.add(root);\r - int ans = 0;\r -\r - while (!que.isEmpty()) {\r - int currentLength = que.size();\r - // TODO: logic for current level\r - for (int i = 0; i < currentLength; i++) {\r - TreeNode node = que.remove();\r - // TODO: logic\r - if (node.left != null) {\r - que.add(node.left);\r - }\r - if (node.right != null) {\r - que.add(node.right);\r - }\r - }\r - }\r -\r - return ans;\r -}\r -`,hv=`int dfs(TreeNode* root) {\r - if (root == nullptr) {\r - return 0;\r - }\r -\r - int ans = 0;\r -\r - // TODO: logic\r - dfs(root.left);\r - dfs(root.right);\r -\r - return ans;\r -}\r -`,gv=`#include \r -\r -using namespace std;\r -\r -\r -int dfs(TreeNode* root) {\r - stack stack;\r - stack.push(root);\r - int ans = 0;\r -\r - while (!stack.empty()) {\r - TreeNode* node = stack.top();\r - stack.pop();\r - // TODO: logic\r - if (node->left) {\r - stack.push(node->left);\r - }\r - if (node->right) {\r - stack.push(node->right);\r - }\r - }\r -\r - return ans;\r -}\r -`,mv=`#include \r -\r -using namespace std;\r -\r -\r -int fn(TreeNode* root) {\r - queue que;\r - que.push(root);\r - int ans = 0;\r -\r - while (!que.empty()) {\r - int currentLength = que.size();\r - // TODO: logic for current level\r -\r - for (int i = 0; i < currentLength; i++) {\r - TreeNode* node = que.front();\r - que.pop();\r - // TODO: logic\r - if (node->left != nullptr) {\r - que.push(node->left);\r - }\r - if (node->right != nullptr) {\r - que.push(node->right);\r - }\r - }\r - }\r -\r - return ans;\r -}\r -`;function vv(){return i.jsxs("div",{className:un.container,children:[i.jsx("h2",{className:un.sectionHeader,children:"Binary Tree"}),i.jsx("section",{id:"tree-dfs-recursive",children:i.jsxs(c,{title:"DFS (recursive)",children:[i.jsx(c.Tab,{code:ov,language:"python"}),i.jsx(c.Tab,{code:lv,language:"javascript"}),i.jsx(c.Tab,{code:dv,language:"java"}),i.jsx(c.Tab,{code:hv,language:"cpp"})]})}),i.jsx("section",{id:"tree-dfs-iterative",children:i.jsxs(c,{title:"DFS (iterative)",children:[i.jsx(c.Tab,{code:av,language:"python"}),i.jsx(c.Tab,{code:uv,language:"javascript"}),i.jsx(c.Tab,{code:fv,language:"java"}),i.jsx(c.Tab,{code:gv,language:"cpp"})]})}),i.jsx("section",{id:"tree-bfs",children:i.jsxs(c,{title:"BFS",children:[i.jsx(c.Tab,{code:sv,language:"python"}),i.jsx(c.Tab,{code:cv,language:"javascript"}),i.jsx(c.Tab,{code:pv,language:"java"}),i.jsx(c.Tab,{code:mv,language:"cpp"})]})})]})}const yv=`def fn(graph):\r - def dfs(node):\r - ans = 0\r - # TODO: logic\r - for neighbor in graph[node]:\r - if neighbor not in seen:\r - seen.add(neighbor)\r - ans += dfs(neighbor)\r -\r - return ans\r -\r - seen = {START_NODE}\r -\r - return dfs(START_NODE)\r -`,xv=`def fn(graph):\r - stack = [START_NODE]\r - seen = {START_NODE}\r - ans = 0\r -\r - while stack:\r - node = stack.pop()\r - # TODO: logic\r - for neighbor in graph[node]:\r - if neighbor not in seen:\r - seen.add(neighbor)\r - stack.append(neighbor)\r -\r - return ans\r -`,_v=`from collections import deque\r -\r -\r -def fn(graph):\r - que = deque([START_NODE])\r - seen = {START_NODE}\r - ans = 0\r -\r - while que:\r - node = que.popleft()\r - # TODO: logic\r - for neighbor in graph[node]:\r - if neighbor not in seen:\r - seen.add(neighbor)\r - que.append(neighbor)\r -\r - return ans\r -`,wv=`from heapq import heappop, heappush\r -\r -\r -def dijkstras(graph: list[list[tuple[int, int]]], source: int) -> list[int]:\r - n = len(graph)\r - distances = [float('inf')] * n\r - distances[source] = 0\r - heap = [(0, source)]\r -\r - while heap:\r - curr_dist, node = heappop(heap)\r -\r - if curr_dist > distances[node]:\r - continue\r -\r - for neighbor, weight in graph[node]:\r - dist = curr_dist + weight\r -\r - if dist < distances[neighbor]:\r - distances[neighbor] = dist\r - heappush(heap, (dist, neighbor))\r -\r - return distances\r -`,Sv=`def bellman_ford(n: int, edges: list[tuple[int, int, int]], source: int) -> list[int]:\r - distances = [float('inf')] * n\r - distances[source] = 0\r -\r - for _ in range(n - 1):\r - for u, v, w in edges:\r - if distances[u] != float('inf') and distances[u] + w < distances[v]:\r - distances[v] = distances[u] + w\r -\r - for u, v, w in edges:\r - if distances[u] != float('inf') and distances[u] + w < distances[v]:\r - return []\r -\r - return distances\r -`,jv=`from collections import defaultdict, deque\r -\r -\r -def kahn_topological_sort(graph: dict[int, list[int]]) -> list[int]:\r - result = []\r - indegree = defaultdict(int)\r -\r - for vertices in graph.values():\r - for v in vertices:\r - indegree[v] += 1\r -\r - que = deque([node for node in graph if not indegree[node]])\r -\r - while que:\r - node = que.popleft()\r - result.append(node)\r -\r - for neighbor in graph[node]:\r - indegree[neighbor] -= 1\r -\r - if not indegree[neighbor]:\r - que.append(neighbor)\r -\r - return result if len(result) == len(graph) else []\r -`,Tv=`def kruskal_mst(n: int, edges: list[tuple[int, int, int]]) -> list[tuple[int, int, int]]:\r - mst = []\r - uf = UnionFind(n)\r - edges.sort()\r -\r - for w, u, v in edges:\r - if not uf.connected(u, v):\r - uf.union(u, v)\r - mst.append((w, u, v))\r -\r - return mst\r -`,bv=`from heapq import heappop\r -\r -\r -def prim_mst(n: int, edges: list[tuple[int, int, int]]) -> list[tuple[int, int, int]]:\r - mst = []\r - uf = UnionFind(n)\r - edges.sort()\r -\r - while edges:\r - w, u, v = heappop(edges)\r -\r - if not uf.connected(u, v):\r - uf.union(u, v)\r - mst.append((w, u, v))\r -\r - return mst\r -`,kv=`const fn = (graph) => {\r - const dfs = (node) => {\r - let ans = 0\r - // TODO: logic\r - for (const neighbor of graph[node]) {\r - if (!seen.has(neighbor)) {\r - seen.add(neighbor)\r - ans += dfs(neighbor)\r - }\r - }\r -\r - return ans\r - }\r -\r - let seen = new Set([START_NODE])\r -\r - return dfs(START_NODE)\r -}\r -`,Ev=`const fn = (graph) => {\r - let stack = [START_NODE]\r - let seen = new Set([START_NODE])\r - let ans = 0\r -\r - while (stack.length) {\r - let node = stack.pop()\r - // TODO: logic\r - for (const neighbor of graph[node]) {\r - if (!seen.has(neighbor)) {\r - seen.add(neighbor)\r - stack.push(neighbor)\r - }\r - }\r - }\r -\r - return ans\r -}\r -`,Nv=`const fn = (graph) => {\r - let que = [START_NODE]\r - let seen = new Set([START_NODE])\r - let ans = 0\r -\r - while (que.length) {\r - let currentLength = que.length\r - let nextQue = []\r -\r - for (let i = 0; i < currentLength; i++) {\r - let node = que[i]\r - // TODO: logic\r - for (const neighbor of graph[node]) {\r - if (!seen.has(neighbor)) {\r - seen.add(neighbor)\r - nextQue.push(neighbor)\r - }\r - }\r - }\r -\r - que = nextQue\r - }\r -\r - return ans\r -}\r -`,Ov=`/*\r - JavaScript lacks built-in support for heaps.\r - Try using a language that doesn't hate you, like Python.\r -*/\r -`,Av=`const bellmanFord = (n, edges, source) => {\r - let distances = new Array(n).fill(Infinity)\r - distances[source] = 0\r -\r - for (let i = 0; i < n - 1; i++) {\r - for (let j = 0; j < edges.length; j++) {\r - let [u, v, w] = edges[j]\r -\r - if (distances[u] !== Infinity && distances[u] + w < distances[v]) {\r - distances[v] = distances[u] + w\r - }\r - }\r - }\r -\r - for (let i = 0; i < edges.length; i++) {\r - let [u, v, w] = edges[i]\r -\r - if (distances[u] !== Infinity && distances[u] + w < distances[v]) {\r - return []\r - }\r - }\r -\r - return distances\r -}\r -`,Cv=`const kahnTopologicalSort = (graph) => {\r - const result = []\r - const queue = []\r - const indegree = new Map()\r -\r - for (let nodes of Object.values(graph)) {\r - for (let node of nodes) {\r - if (indegree.has(node)) {\r - indegree.set(node, indegree.get(node) + 1)\r - } else {\r - indegree.set(node, 1)\r - }\r - }\r - }\r -\r - for (let node of Object.keys(graph)) {\r - if (!indegree.has(node)) {\r - queue.push(node)\r - }\r - }\r -\r - while (queue.length > 0) {\r - const node = queue.shift()\r - result.push(node)\r -\r - if (graph[node]) {\r - for (let neighbor of graph[node]) {\r - indegree.set(neighbor, indegree.get(neighbor) - 1)\r -\r - if (indegree.get(neighbor) === 0) {\r - queue.push(neighbor)\r - }\r - }\r - }\r - }\r -\r - return result.length === Object.keys(graph).length ? result : []\r -}\r -`,Lv=`const kruskalMst = (n, edges) => {\r - let mst = []\r - let uf = new UnionFind(n)\r -\r - edges.sort((a, b) => a[0] - b[0])\r -\r - for (let i = 0; i < edges.length; i++) {\r - let [w, u, v] = edges[i]\r -\r - if (!uf.connected(u, v)) {\r - uf.union(u, v)\r - mst.push([w, u, v])\r - }\r - }\r -\r - return mst\r -}\r -`,Pv=`/*\r - JavaScript lacks built-in support for heaps.\r - Try using a language that doesn't hate you, like Python.\r -*/\r -`,Mv=`import java.util.HashSet;\r -import java.util.Set;\r -\r -\r -Set seen = new HashSet<>();\r -\r -public int fn(int[][] graph) {\r - seen.add(START_NODE);\r - return dfs(START_NODE, graph);\r -}\r -\r -public int dfs(int node, int[][] graph) {\r - int ans = 0;\r - // TODO: logic\r - for (int neighbor: graph[node]) {\r - if (!seen.contains(neighbor)) {\r - seen.add(neighbor);\r - ans += dfs(neighbor, graph);\r - }\r - }\r -\r - return ans;\r -}\r -`,Rv=`import java.util.Stack;\r -import java.util.HashSet;\r -import java.util.Set;\r -\r -\r -public int fn(int[][] graph) {\r - Stack stack = new Stack<>();\r - Set seen = new HashSet<>();\r - stack.push(START_NODE);\r - seen.add(START_NODE);\r - int ans = 0;\r -\r - while (!stack.empty()) {\r - int node = stack.pop();\r - // TODO: logic\r - for (int neighbor: graph[node]) {\r - if (!seen.contains(neighbor)) {\r - seen.add(neighbor);\r - stack.push(neighbor);\r - }\r - }\r - }\r -\r - return ans;\r -}\r -`,Iv=`import java.util.ArrayList;\r -import java.util.HashSet;\r -import java.util.LinkedList;\r -import java.util.List;\r -import java.util.Map;\r -import java.util.Queue;\r -import java.util.Set;\r -\r -\r -public int fn(int[][] graph) {\r - Queue que = new LinkedList<>();\r - Set seen = new HashSet<>();\r - que.offer(START_NODE);\r - seen.add(START_NODE);\r - int ans = 0;\r -\r - while (!que.isEmpty()) {\r - int node = que.remove();\r - // TODO: Logic\r - for (int neighbor: graph[node]) {\r - if (!seen.contains(neighbor)) {\r - seen.add(neighbor);\r - que.add(neighbor);\r - }\r - }\r - }\r -\r - return ans;\r -}\r -`,Dv=`import java.util.Arrays;\r -import java.util.Comparator;\r -import java.util.PriorityQueue;\r -import java.util.Queue;\r -import java.util.List;\r -\r -\r -public int[] dijkstras(List> graph, int source) {\r - int n = graph.size();\r - int[] distances = new int[n];\r - Arrays.fill(distances, Integer.MAX_VALUE);\r - distances[source] = 0;\r -\r - PriorityQueue pq = new PriorityQueue<>(Comparator.comparingInt(a -> a[1]));\r - pq.offer(new int[]{source, 0});\r -\r - while (!pq.isEmpty()) {\r - int[] curr = pq.poll();\r - int node = curr[0];\r - int dist = curr[1];\r -\r - if (dist > distances[node]) {\r - continue;\r - }\r -\r - for (int[] edge : graph.get(node)) {\r - int neighbor = edge[0];\r - int weight = edge[1];\r - int newDist = dist + weight;\r -\r - if (newDist < distances[neighbor]) {\r - distances[neighbor] = newDist;\r - pq.offer(new int[]{neighbor, newDist});\r - }\r - }\r - }\r -\r - return distances;\r -}\r -`,Bv=`import java.util.Arrays;\r -import java.util.List;\r -\r -\r -public int[] bellmanFord(int n, List edges, int source) {\r - int[] distances = new int[n];\r - Arrays.fill(distances, Integer.MAX_VALUE);\r - distances[source] = 0;\r -\r - for (int i = 0; i < n - 1; i++) {\r - for (int[] edge : edges) {\r - int u = edge[0];\r - int v = edge[1];\r - int w = edge[2];\r -\r - if (distances[u] != Integer.MAX_VALUE && distances[u] + w < distances[v]) {\r - distances[v] = distances[u] + w;\r - }\r - }\r - }\r -\r - for (int[] edge : edges) {\r - int u = edge[0];\r - int v = edge[1];\r - int w = edge[2];\r -\r - if (distances[u] != Integer.MAX_VALUE && distances[u] + w < distances[v]) {\r - return new int[]{};\r - }\r - }\r -\r - return distances;\r -}\r -`,zv=`import java.util.ArrayList;\r -import java.util.HashMap;\r -import java.util.LinkedList;\r -import java.util.List;\r -import java.util.Map;\r -import java.util.Queue;\r -\r -\r -public static List kahnTopologicalSort(Map> graph) {\r - List result = new ArrayList<>();\r - Map indegree = new HashMap<>();\r - Queue que = new LinkedList<>();\r -\r - for (List vertices : graph.values()) {\r - for (int v : vertices) {\r - indegree.put(v, indegree.getOrDefault(v, 0) + 1);\r - }\r - }\r -\r - for (Integer node : graph.keySet()) {\r - if (!indegree.containsKey(node)) {\r - que.offer(node);\r - }\r - }\r -\r - while (!que.isEmpty()) {\r - int node = que.poll();\r - result.add(node);\r -\r - if (graph.containsKey(node)) {\r - for (int neighbor : graph.get(node)) {\r - indegree.put(neighbor, indegree.get(neighbor) - 1);\r -\r - if (indegree.get(neighbor) == 0) {\r - que.offer(neighbor);\r - }\r - }\r - }\r - }\r -\r - if (result.size() != graph.size()) {\r - return new ArrayList<>();\r - }\r -\r - return result;\r -}\r -`,Fv=`import java.util.ArrayList;\r -import java.util.Collections;\r -import java.util.List;\r -\r -\r -public List kruskalMST(int n, List edges) {\r - List mst = new ArrayList<>();\r - UnionFind uf = new UnionFind(n);\r - Collections.sort(edges, (a, b) -> Integer.compare(a[0], b[0]));\r -\r - for (int[] edge : edges) {\r - int weight = edge[0];\r - int u = edge[1];\r - int v = edge[2];\r -\r - if (!uf.connected(u, v)) {\r - uf.union(u, v);\r - mst.add(edge);\r - }\r - }\r -\r - return mst;\r -}\r -`,Uv=`import java.util.ArrayList;\r -import java.util.Comparator;\r -import java.util.List;\r -import java.util.PriorityQueue;\r -\r -\r -public List primMST(int n, List edges) {\r - List mst = new ArrayList<>();\r - UnionFind uf = new UnionFind(n);\r - PriorityQueue pq = new PriorityQueue<>(Comparator.comparingInt(edge -> edge[0]));\r -\r - for (int[] edge : edges) {\r - pq.offer(edge);\r - }\r -\r - while (!pq.isEmpty()) {\r - int[] edge = pq.poll();\r - int w = edge[0];\r - int u = edge[1];\r - int v = edge[2];\r -\r - if (!uf.connected(u, v)) {\r - uf.union(u, v);\r - mst.add(edge);\r - }\r - }\r -\r - return mst;\r -}\r -`,Hv=`#include \r -#include \r -\r -using namespace std;\r -\r -\r -unordered_set seen;\r -\r -int fn(vector>& graph) {\r - seen.insert(START_NODE);\r - return dfs(START_NODE, graph);\r -}\r -\r -int dfs(int node, vector>& graph) {\r - int ans = 0;\r - // TODO: logic\r - for (int neighbor: graph[node]) {\r - if (seen.find(neighbor) == seen.end()) {\r - seen.insert(neighbor);\r - ans += dfs(neighbor, graph);\r - }\r - }\r -\r - return ans;\r -}\r -`,$v=`#include \r -#include \r -#include \r -\r -using namespace std;\r -\r -\r -int fn(vector>& graph) {\r - stack stack;\r - unordered_set seen;\r - stack.push(START_NODE);\r - seen.insert(START_NODE);\r - int ans = 0;\r -\r - while (!stack.empty()) {\r - int node = stack.top();\r - stack.pop();\r - // TODO: logic\r - for (int neighbor: graph[node]) {\r - if (seen.find(neighbor) == seen.end()) {\r - seen.insert(neighbor);\r - stack.push(neighbor);\r - }\r - }\r - }\r -}\r -`,Wv=`#include \r -#include \r -#include \r -\r -using namespace std;\r -\r -\r -int fn(vector>& graph) {\r - queue que;\r - unordered_set seen;\r - que.push(START_NODE);\r - seen.insert(START_NODE);\r - int ans = 0;\r -\r - while (!que.empty()) {\r - int node = que.front();\r - que.pop();\r - // TODO: logic\r - for (int neighbor: graph[node]) {\r - if (seen.find(neighbor) == seen.end()) {\r - seen.insert(neighbor);\r - que.push(neighbor);\r - }\r - }\r - }\r -}\r -`,Vv=`#include \r -#include \r -#include \r -#include \r -\r -using namespace std;\r -\r -\r -vector dijkstra(vector>>& graph, int source) {\r - int n = graph.size();\r - vector distances(n, INT_MAX);\r - distances[source] = 0;\r -\r - priority_queue, vector>, greater>> heap;\r - heap.push({0, source});\r -\r - while (!heap.empty()) {\r - int currDist = heap.top().first;\r - int node = heap.top().second;\r - heap.pop();\r -\r - if (currDist > distances[node]) {\r - continue;\r - }\r -\r - for (pair edge : graph[node]) {\r - int neighbor = edge.first;\r - int weight = edge.second;\r - int dist = currDist + weight;\r -\r - if (dist < distances[neighbor]) {\r - distances[neighbor] = dist;\r - heap.push({dist, neighbor});\r - }\r - }\r - }\r -\r - return distances;\r -}\r -`,Kv=`#include \r -#include \r -#include \r -\r -using namespace std;\r -\r -\r -vector bellman_ford(int n, vector, int>>& edges, int source) {\r - vector distances(n, numeric_limits::max());\r - distances[source] = 0;\r -\r - for (int i = 0; i < n - 1; ++i) {\r - for (const auto& edge : edges) {\r - int u = edge.first.first;\r - int v = edge.first.second;\r - int w = edge.second;\r -\r - if (distances[u] != numeric_limits::max() && distances[u] + w < distances[v]) {\r - distances[v] = distances[u] + w;\r - }\r - }\r - }\r -\r - for (const auto& edge : edges) {\r - int u = edge.first.first;\r - int v = edge.first.second;\r - int w = edge.second;\r -\r - if (distances[u] != numeric_limits::max() && distances[u] + w < distances[v]) {\r - return vector();\r - }\r - }\r -\r - return distances;\r -}\r -`,Gv=`#include \r -#include \r -#include \r -\r -using namespace std;\r -\r -\r -vector kahn_topological_sort(unordered_map>& graph) {\r - vector result;\r - unordered_map indegree;\r -\r - for (auto& [node, neighbors] : graph) {\r - for (int neighbor : neighbors) {\r - indegree[neighbor]++;\r - }\r - }\r -\r - queue que;\r -\r - for (auto& [node, _] : graph) {\r - if (indegree[node] == 0) {\r - que.push(node);\r - }\r - }\r -\r - while (!que.empty()) {\r - int node = que.front();\r - que.pop();\r - result.push_back(node);\r -\r - for (int neighbor : graph[node]) {\r - indegree[neighbor]--;\r - if (indegree[neighbor] == 0) {\r - que.push(neighbor);\r - }\r - }\r - }\r -\r - return (result.size() == graph.size()) ? result : vector();\r -}\r -`,Jv=`#include \r -#include \r -\r -using namespace std;\r -\r -\r -vector> kruskal_mst(int n, vector>& edges) {\r - vector> mst;\r - UnionFind uf(n);\r - sort(edges.begin(), edges.end());\r -\r - for (auto& [w, u, v] : edges) {\r - if (!uf.connected(u, v)) {\r - uf.unionNodes(u, v);\r - mst.emplace_back(w, u, v);\r - }\r - }\r -\r - return mst;\r -}\r -`,Yv=`#include \r -#include \r -#include \r -\r -using namespace std;\r -\r -\r -vector> prim_mst(int n, vector>& edges) {\r - vector> mst;\r - UnionFind uf(n);\r - make_heap(edges.begin(), edges.end());\r -\r - while (!edges.empty()) {\r - auto [w, u, v] = edges.front();\r - pop_heap(edges.begin(), edges.end());\r - edges.pop_back();\r -\r - if (!uf.connected(u, v)) {\r - uf.unionNodes(u, v);\r - mst.emplace_back(w, u, v);\r - }\r - }\r -\r - return mst;\r -}\r -`;function Qv(){return i.jsxs("div",{className:un.container,children:[i.jsx("h2",{className:un.sectionHeader,children:"Graph"}),i.jsx("section",{id:"graph-dfs-recursive",children:i.jsxs(c,{title:"DFS (recursive)",children:[i.jsx(c.Tab,{code:yv,language:"python"}),i.jsx(c.Tab,{code:kv,language:"javascript"}),i.jsx(c.Tab,{code:Mv,language:"java"}),i.jsx(c.Tab,{code:Hv,language:"cpp"})]})}),i.jsx("section",{id:"graph-dfs-iterative",children:i.jsxs(c,{title:"DFS (iterative)",children:[i.jsx(c.Tab,{code:xv,language:"python"}),i.jsx(c.Tab,{code:Ev,language:"javascript"}),i.jsx(c.Tab,{code:Rv,language:"java"}),i.jsx(c.Tab,{code:$v,language:"cpp"})]})}),i.jsx("section",{id:"graph-bfs",children:i.jsxs(c,{title:"BFS",children:[i.jsx(c.Tab,{code:_v,language:"python"}),i.jsx(c.Tab,{code:Nv,language:"javascript"}),i.jsx(c.Tab,{code:Iv,language:"java"}),i.jsx(c.Tab,{code:Wv,language:"cpp"})]})}),i.jsx("section",{id:"graph-dijkstra",children:i.jsxs(c,{title:"Dijkstra (shortest path)",children:[i.jsx(c.Tab,{code:wv,language:"python"}),i.jsx(c.Tab,{code:Ov,language:"javascript"}),i.jsx(c.Tab,{code:Dv,language:"java"}),i.jsx(c.Tab,{code:Vv,language:"cpp"})]})}),i.jsx("section",{id:"graph-bellman-ford",children:i.jsxs(c,{title:"Bellman-Ford (shortest path)",children:[i.jsx(c.Tab,{code:Sv,language:"python"}),i.jsx(c.Tab,{code:Av,language:"javascript"}),i.jsx(c.Tab,{code:Bv,language:"java"}),i.jsx(c.Tab,{code:Kv,language:"cpp"})]})}),i.jsx("section",{id:"graph-kahn",children:i.jsxs(c,{title:"Kahn (topological sort)",children:[i.jsx(c.Tab,{code:jv,language:"python"}),i.jsx(c.Tab,{code:Cv,language:"javascript"}),i.jsx(c.Tab,{code:zv,language:"java"}),i.jsx(c.Tab,{code:Gv,language:"cpp"})]})}),i.jsx("section",{id:"graph-kruskal",children:i.jsxs(c,{title:"Kruskal (mst)",children:[i.jsx(c.Tab,{code:Tv,language:"python"}),i.jsx(c.Tab,{code:Lv,language:"javascript"}),i.jsx(c.Tab,{code:Fv,language:"java"}),i.jsx(c.Tab,{code:Jv,language:"cpp"})]})}),i.jsx("section",{id:"graph-prim",children:i.jsxs(c,{title:"Prim (mst)",children:[i.jsx(c.Tab,{code:bv,language:"python"}),i.jsx(c.Tab,{code:Pv,language:"javascript"}),i.jsx(c.Tab,{code:Uv,language:"java"}),i.jsx(c.Tab,{code:Yv,language:"cpp"})]})})]})}const qv=`from heapq import heappop, heappush\r -\r -\r -def fn(arr, k):\r - heap = []\r -\r - for num in arr:\r - # TODO: logic to push onto heap according to problem's criteria\r - heappush(heap, (CRITERIA, num))\r -\r - if len(heap) > k:\r - heappop(heap)\r -\r - return [num for num in heap]\r -`,Xv=`/*\r - JavaScript lacks built-in support for heaps.\r - Try using a language that doesn't hate you, like Python.\r -*/\r -`,Zv=`import java.util.PriorityQueue;\r -\r -\r -public int[] fn(int[] arr, int k) {\r - PriorityQueue heap = new PriorityQueue<>(CRITERIA);\r -\r - for (int num: arr) {\r - // TODO: logic to push onto heap according to problem's criteria\r - heap.add(num);\r -\r - if (heap.size() > k) {\r - heap.remove();\r - }\r - }\r -\r - int[] ans = new int[k];\r -\r - for (int i = 0; i < k; i++) {\r - ans[i] = heap.remove();\r - }\r -\r - return ans;\r -}\r -`,n0=`#include \r -#include \r -\r -using namespace std;\r -\r -\r -vector fn(vector& arr, int k) {\r - priority_queue, greater> min_heap;\r - vector result;\r -\r - for (int num : arr) {\r - // TODO: logic to push onto heap according to problem's criteria\r - min_heap.push(num);\r -\r - if (min_heap.size() > k) {\r - min_heap.pop();\r - }\r - }\r -\r - while (!min_heap.empty()) {\r - result.push_back(min_heap.top());\r - min_heap.pop();\r - }\r -\r - return result;\r -}\r -`;function r0(){return i.jsxs("div",{className:un.container,children:[i.jsx("h2",{className:un.sectionHeader,children:"Heap"}),i.jsx("section",{id:"heap-find-top-k-elements",children:i.jsxs(c,{title:"find top k elements",children:[i.jsx(c.Tab,{code:qv,language:"python"}),i.jsx(c.Tab,{code:Xv,language:"javascript"}),i.jsx(c.Tab,{code:Zv,language:"java"}),i.jsx(c.Tab,{code:n0,language:"cpp"})]})})]})}const e0=`def fn(arr, target):\r - left = 0\r - right = len(arr) - 1\r -\r - while left <= right:\r - mid = (left + right) // 2\r -\r - if arr[mid] == target:\r - # TODO: logic\r - return\r - if arr[mid] > target:\r - right = mid - 1\r - else:\r - left = mid + 1\r -\r - return left\r -`,t0=`def fn(arr, target):\r - left = 0\r - right = len(arr)\r -\r - while left < right:\r - mid = (left + right) // 2\r -\r - if arr[mid] >= target:\r - right = mid\r - else:\r - left = mid + 1\r -\r - return left\r -`,i0=`def fn(arr, target):\r - left = 0\r - right = len(arr)\r -\r - while left < right:\r - mid = (left + right) // 2\r -\r - if arr[mid] > target:\r - right = mid\r - else:\r - left = mid + 1\r -\r - return left\r -`,o0=`def fn(arr):\r - def check(x):\r - return BOOLEAN\r -\r - left = MINIMUM_POSSIBLE_ANSWER\r - right = MAXIMUM_POSSIBLE_ANSWER\r -\r - while left <= right:\r - mid = (left + right) // 2\r -\r - if check(mid):\r - right = mid - 1\r - else:\r - left = mid + 1\r -\r - return left\r -`,a0=`def fn(arr):\r - def check(x):\r - return BOOLEAN\r -\r - left = MINIMUM_POSSIBLE_ANSWER\r - right = MAXIMUM_POSSIBLE_ANSWER\r -\r - while left <= right:\r - mid = (left + right) // 2\r -\r - if check(mid):\r - left = mid + 1\r - else:\r - right = mid - 1\r -\r - return right\r -`,s0=`const fn = (arr, target) => {\r - let left = 0\r - let right = arr.length - 1\r -\r - while (left <= right) {\r - let mid = Math.floor((left + right) / 2)\r -\r - if (arr[mid] == target) {\r - // TODO: logic\r - return\r - }\r -\r - if (arr[mid] > target) {\r - right = mid - 1\r - } else {\r - left = mid + 1\r - }\r - }\r -\r - return left\r -}\r -`,l0=`const fn = (arr, target) => {\r - let left = 0\r - let right = arr.length\r -\r - while (left < right) {\r - let mid = Math.floor((left + right) / 2)\r -\r - if (arr[mid] >= target) {\r - right = mid\r - } else {\r - left = mid + 1\r - }\r - }\r -\r - return left\r -}\r -`,u0=`const fn = (arr, target) => {\r - let left = 0\r - let right = arr.length\r -\r - while (left < right) {\r - let mid = Math.floor((left + right) / 2)\r -\r - if (arr[mid] > target) {\r - right = mid\r - } else {\r - left = mid + 1\r - }\r - }\r -\r - return left\r -}\r -`,c0=`const fn = (arr) => {\r - const check = (x) => {\r - return BOOLEAN\r - }\r -\r - let left = MINIMUM_POSSIBLE_ANSWER\r - let right = MAXMIMUM_POSSIBLE_ANSWER\r -\r - while (left <= right) {\r - let mid = Math.floor((left + right) / 2)\r -\r - if (check(mid)) {\r - right = mid - 1\r - } else {\r - left = mid + 1\r - }\r - }\r -\r - return left\r -}\r -`,d0=`const fn = (arr) => {\r - const check = (x) => {\r - return BOOLEAN\r - }\r -\r - let left = MINIMUM_POSSIBLE_ANSWER\r - let right = MAXMIMUM_POSSIBLE_ANSWER\r -\r - while (left <= right) {\r - let mid = Math.floor((left + right) / 2)\r -\r - if (check(mid)) {\r - left = mid + 1\r - } else {\r - right = mid - 1\r - }\r - }\r -\r - return right\r -}\r -`,f0=`public int fn(int[] arr, int target) {\r - int left = 0;\r - int right = arr.length - 1;\r -\r - while (left <= right) {\r - int mid = left + (right - left) / 2;\r -\r - if (arr[mid] == target) {\r - // TODO: logic\r - return mid;\r - }\r - if (arr[mid] > target) {\r - right = mid - 1;\r - } else {\r - left = mid + 1;\r - }\r - }\r -\r - return left;\r -}\r -`,p0=`public int fn(int[] arr, int target) {\r - int left = 0;\r - int right = arr.length;\r -\r - while (left < right) {\r - int mid = left + (right - left) / 2;\r -\r - if (arr[mid] >= target) {\r - right = mid;\r - } else {\r - left = mid + 1;\r - }\r - }\r -\r - return left;\r -}\r -`,h0=`public int fn(int[] arr, int target) {\r - int left = 0;\r - int right = arr.length;\r -\r - while (left < right) {\r - int mid = left + (right - left) / 2;\r -\r - if (arr[mid] > target) {\r - right = mid;\r - } else {\r - left = mid + 1;\r - }\r - }\r -\r - return left;\r -}\r -`,g0=`public int fn(int[] arr) {\r - int left = MINIMUM_POSSIBLE_ANSWER;\r - int right = MAXIMUM_POSSIBLE_ANSWER;\r -\r - while (left <= right) {\r - int mid = left + (right - left) / 2;\r -\r - if (check(mid)) {\r - right = mid - 1;\r - } else {\r - left = mid + 1;\r - }\r - }\r -\r - return left;\r -}\r -\r -public boolean check(int x) {\r - return BOOLEAN\r -}\r -`,m0=`public int fn(int[] arr) {\r - int left = MINIMUM_POSSIBLE_ANSWER;\r - int right = MAXIMUM_POSSIBLE_ANSWER;\r -\r - while (left <= right) {\r - int mid = left + (right - left) / 2;\r -\r - if (check(mid)) {\r - left = mid + 1;\r - } else {\r - right = mid - 1;\r - }\r - }\r -\r - return right;\r -}\r -\r -public boolean check(int x) {\r - return BOOLEAN\r -}\r -`,v0=`#include \r -\r -using namespace std;\r -\r -\r -int fn(vector& arr, int target) {\r - int left = 0;\r - int right = arr.size() - 1;\r -\r - while (left <= right) {\r - int mid = left + (right - left) / 2;\r -\r - if (arr[mid] == target) {\r - // TODO: logic\r - return mid;\r - }\r - if (arr[mid] > target) {\r - right = mid - 1;\r - } else {\r - left = mid + 1;\r - }\r - }\r -\r - return left;\r -}\r -`,y0=`#include \r -\r -using namespace std;\r -\r -\r -int fn(vector& arr, int target) {\r - int left = 0;\r - int right = arr.size();\r -\r - while (left < right) {\r - int mid = left + (right - left) / 2;\r -\r - if (arr[mid] >= target) {\r - right = mid;\r - } else {\r - left = mid + 1;\r - }\r - }\r -\r - return left;\r -}\r -`,x0=`#include \r -\r -using namespace std;\r -\r -\r -int fn(vector& arr, int target) {\r - int left = 0;\r - int right = arr.size();\r -\r - while (left < right) {\r - int mid = left + (right - left) / 2;\r -\r - if (arr[mid] > target) {\r - right = mid;\r - } else {\r - left = mid + 1;\r - }\r - }\r -\r - return left;\r -}\r -`,_0=`#include \r -\r -using namespace std;\r -\r -\r -bool check(int x) {\r - return BOOLEAN;\r -}\r -\r -int fn(vector& arr) {\r - int left = MINIMUM_POSSIBLE_ANSWER;\r - int right = MAXIMUM_POSSIBLE_ANSWER;\r -\r - while (left <= right) {\r - int mid = left + (right - left) / 2;\r -\r - if (check(mid)) {\r - right = mid - 1;\r - } else {\r - left = mid + 1;\r - }\r - }\r -\r - return left;\r -}\r -`,w0=`#include \r -\r -using namespace std;\r -\r -\r -bool check(int x) {\r - return BOOLEAN;\r -}\r -\r -int fn(vector& arr) {\r - int left = MINIMUM_POSSIBLE_ANSWER;\r - int right = MAXIMUM_POSSIBLE_ANSWER;\r -\r - while (left <= right) {\r - int mid = left + (right - left) / 2;\r -\r - if (check(mid)) {\r - left = mid + 1;\r - } else {\r - right = mid - 1;\r - }\r - }\r -\r - return right;\r -}\r -`;function S0(){return i.jsxs("div",{className:un.container,children:[i.jsx("h2",{className:un.sectionHeader,children:"Binary Search"}),i.jsx("section",{id:"binarysearch-binary-search",children:i.jsxs(c,{title:"binary search",children:[i.jsx(c.Tab,{code:e0,language:"python"}),i.jsx(c.Tab,{code:s0,language:"javascript"}),i.jsx(c.Tab,{code:f0,language:"java"}),i.jsx(c.Tab,{code:v0,language:"cpp"})]})}),i.jsx("section",{id:"binarysearch-duplicate-elements-left-insertion",children:i.jsxs(c,{title:"duplicate elements, left-most insertion point",children:[i.jsx(c.Tab,{code:t0,language:"python"}),i.jsx(c.Tab,{code:l0,language:"javascript"}),i.jsx(c.Tab,{code:p0,language:"java"}),i.jsx(c.Tab,{code:y0,language:"cpp"})]})}),i.jsx("section",{id:"binarysearch-duplicate-elements-right-insertion",children:i.jsxs(c,{title:"duplicate elements, right-most insertion point",children:[i.jsx(c.Tab,{code:i0,language:"python"}),i.jsx(c.Tab,{code:u0,language:"javascript"}),i.jsx(c.Tab,{code:h0,language:"java"}),i.jsx(c.Tab,{code:x0,language:"cpp"})]})}),i.jsx("section",{id:"binarysearch-greedy-minimum",children:i.jsxs(c,{title:"greedy (minimum)",children:[i.jsx(c.Tab,{code:o0,language:"python"}),i.jsx(c.Tab,{code:c0,language:"javascript"}),i.jsx(c.Tab,{code:g0,language:"java"}),i.jsx(c.Tab,{code:_0,language:"cpp"})]})}),i.jsx("section",{id:"binarysearch-greedy-maximum",children:i.jsxs(c,{title:"greedy (maximum)",children:[i.jsx(c.Tab,{code:a0,language:"python"}),i.jsx(c.Tab,{code:d0,language:"javascript"}),i.jsx(c.Tab,{code:m0,language:"java"}),i.jsx(c.Tab,{code:w0,language:"cpp"})]})})]})}const j0=`def backtrack(curr, OTHER_ARGUMENTS...):\r - if (BASE_CASE):\r - # TODO: modify answer\r - return\r -\r - ans = 0\r -\r - for (ITERATE_OVER_INPUT):\r - # TODO: modify current state\r - ans += backtrack(curr, OTHER_ARGUMENTS...)\r - # TODO: undo modification of current state\r -\r - return ans\r -`,T0=`const backtrack = (curr, OTHER_ARGUMENTS...) => {\r - if (BASE_CASE) {\r - // TODO: modify answer\r - return\r - }\r -\r - let ans = 0\r -\r - for (ITERATE_OVER_INPUT) {\r - // TODO: modify current state\r - ans += backtrack(curr, OTHER_ARGUMENTS...)\r - // TODO: undo modification of current state\r - }\r -\r - return ans\r -}\r -`,b0=`public int backtrack(STATE curr, OTHER_ARGUMENTS...) {\r - if (BASE_CASE) {\r - // TODO: modify answer\r - return 0;\r - }\r -\r - int ans = 0;\r -\r - for (ITERATE_OVER_INPUT) {\r - // TODO: modify current state\r - ans += backtrack(curr, OTHER_ARGUMENTS...);\r - // TODO: undo modification of current state\r - }\r -\r - return ans;\r -}\r -`,k0=`int backtrack(STATE curr, OTHER_ARGUMENTS...) {\r - if (BASE_CASE) {\r - // TODO: modify answer\r - return 0;\r - }\r -\r - int ans = 0;\r -\r - for (ITERATE_OVER_INPUT) {\r - // TODO: modify current state\r - ans += backtrack(curr, OTHER_ARGUMENTS...);\r - // TODO: undo modification of current state\r - }\r -\r - return ans;\r -}\r -`;function E0(){return i.jsxs("div",{className:un.container,children:[i.jsx("h2",{className:un.sectionHeader,children:"Backtracking"}),i.jsx("section",{id:"backtracking-backtracking",children:i.jsxs(c,{title:"backtracking",children:[i.jsx(c.Tab,{code:j0,language:"python"}),i.jsx(c.Tab,{code:T0,language:"javascript"}),i.jsx(c.Tab,{code:b0,language:"java"}),i.jsx(c.Tab,{code:k0,language:"cpp"})]})})]})}const N0=`def fn(arr):\r - @cache\r - def dp(STATE):\r - if BASE_CASE:\r - return 0\r - return RECURRENCE_RELATION(STATE)\r -\r - return dp(STATE_FOR_WHOLE_INPUT)\r -`,O0=`def fn(arr):\r - if BASE_CASE:\r - return 0\r -\r - dp = [BASE_CASE] * (STATE_FOR_WHOLE_INPUT + 1)\r -\r - for STATE in range(SMALLEST_SUBPROBLEM, STATE_FOR_WHOLE_INPUT + 1):\r - if BASE_CASE:\r - dp[STATE] = BASE_CASE\r - else:\r - dp[STATE] = RECURRENCE_RELATION(STATE)\r -\r - return dp[STATE_FOR_WHOLE_INPUT]\r -`,A0=`def kadane(arr: list[int]) -> int:\r - curr_sub = max_sub = arr[0]\r -\r - for num in arr[1:]:\r - curr_sub = max(curr_sub + num, num)\r - max_sub = max(max_sub, curr_sub)\r -\r - return max_sub\r -`,C0=`const fn = (arr) => {\r - const dp = (STATE) => {\r - if (BASE_CASE) {\r - return 0\r - }\r -\r - if (memo[STATE] != -1) {\r - return memo[STATE]\r - }\r -\r - let ans = RECURRENCE_RELATION(STATE)\r - memo[STATE] = ans\r -\r - return ans\r - }\r -\r - let memo = ARRAY_SIZED_ACCORDING_TO_STATE\r -\r - return dp(STATE_FOR_WHOLE_INPUT)\r -}\r -`,L0=`const fn = (arr) => {\r - const dp = new Array(STATE_FOR_WHOLE_INPUT + 1).fill(BASE_CASE)\r -\r - for (let state = SMALLEST_SUBPROBLEM; state <= STATE_FOR_WHOLE_INPUT; state++) {\r - if (BASE_CASE) {\r - dp[state] = BASE_CASE\r - } else {\r - dp[state] = RECURRENCE_RELATION(state)\r - }\r - }\r -\r - return dp[STATE_FOR_WHOLE_INPUT]\r -}\r -`,P0=`const kadane = (arr) => {\r - let currSub = arr[0]\r - let maxSub = arr[0]\r -\r - for (let i = 1; i < arr.length; i++) {\r - currSub = Math.max(currSub + arr[i], arr[i])\r - maxSub = Math.max(maxSub, currSub)\r - }\r -\r - return maxSub\r -}\r -`,M0=`import java.util.HashMap;\r -import java.util.Map;\r -\r -\r -Map memo = new HashMap<>();\r -\r -public int fn(int[] arr) {\r - return dp(STATE_FOR_WHOLE_INPUT, arr);\r -}\r -\r -public int dp(STATE, int[] arr) {\r - if (BASE_CASE) {\r - return 0;\r - }\r -\r - if (memo.contains(STATE)) {\r - return memo.get(STATE);\r - }\r -\r - int ans = RECURRENCE_RELATION(STATE);\r - memo.put(STATE, ans);\r - return ans;\r -}\r -`,R0=`import java.util.Arrays;\r -\r -\r -public int fn(int[] arr) {\r - if (BASE_CASE) {\r - return 0;\r - }\r -\r - int[] dp = new int[STATE_FOR_WHOLE_INPUT + 1];\r - Arrays.fill(dp, BASE_CASE);\r -\r - for (int STATE = SMALLEST_SUBPROBLEM; STATE <= STATE_FOR_WHOLE_INPUT; STATE++) {\r - if (BASE_CASE) {\r - dp[STATE] = BASE_CASE;\r - } else {\r - dp[STATE] = RECURRENCE_RELATION(STATE);\r - }\r - }\r -\r - return dp[STATE_FOR_WHOLE_INPUT];\r -}\r -`,I0=`public int kadane(int[] arr) {\r - int currSub = arr[0];\r - int maxSub = arr[0];\r -\r - for (int i = 1; i < arr.length; i++) {\r - currSub = Math.max(currSub + arr[i], arr[i]);\r - maxSub = Math.max(maxSub, currSub);\r - }\r -\r - return maxSub;\r -}\r -`,D0=`#include \r -\r -using namespace std;\r -\r -\r -unordered_map memo;\r -\r -int fn(vector& arr) {\r - return dp(STATE_FOR_WHOLE_INPUT, arr);\r -}\r -\r -int dp(STATE, vector& arr) {\r - if (BASE_CASE) {\r - return 0;\r - }\r -\r - if (memo.find(STATE) != memo.end()) {\r - return memo[STATE];\r - }\r -\r - int ans = RECURRENCE_RELATION(STATE);\r - memo[STATE] = ans;\r - return ans;\r -}\r -`,B0=`#include \r -#include \r -\r -using namespace std;\r -\r -\r -int fn(int arr[], int size) {\r - if (BASE_CASE) {\r - return 0;\r - }\r -\r - vector dp(STATE_FOR_WHOLE_INPUT + 1, BASE_CASE);\r -\r - for (int state = SMALLEST_SUBPROBLEM; state <= STATE_FOR_WHOLE_INPUT; ++state) {\r - if (BASE_CASE) {\r - dp[state] = BASE_CASE;\r - } else {\r - dp[state] = RECURRENCE_RELATION(state);\r - }\r - }\r -\r - return dp[STATE_FOR_WHOLE_INPUT];\r -}\r -`,z0=`#include \r -#include \r -\r -using namespace std;\r -\r -\r -int kadane(vector& arr) {\r - int curr_sub = arr[0];\r - int max_sub = arr[0];\r -\r - for (size_t i = 1; i < arr.size(); ++i) {\r - curr_sub = max(curr_sub + arr[i], arr[i]);\r - max_sub = max(max_sub, curr_sub);\r - }\r -\r - return max_sub;\r -}\r -`;function F0(){return i.jsxs("div",{className:un.container,children:[i.jsx("h2",{className:un.sectionHeader,children:"Dynamic Programming"}),i.jsx("section",{id:"dp-top-down",children:i.jsxs(c,{title:"DP top-down",children:[i.jsx(c.Tab,{code:N0,language:"python"}),i.jsx(c.Tab,{code:C0,language:"javascript"}),i.jsx(c.Tab,{code:M0,language:"java"}),i.jsx(c.Tab,{code:D0,language:"cpp"})]})}),i.jsx("section",{id:"dp-bottom-up",children:i.jsxs(c,{title:"DP bottom-up",children:[i.jsx(c.Tab,{code:O0,language:"python"}),i.jsx(c.Tab,{code:L0,language:"javascript"}),i.jsx(c.Tab,{code:R0,language:"java"}),i.jsx(c.Tab,{code:B0,language:"cpp"})]})}),i.jsx("section",{id:"dp-kadane",children:i.jsxs(c,{title:"Kadane (max-sum subarray)",children:[i.jsx(c.Tab,{code:A0,language:"python"}),i.jsx(c.Tab,{code:P0,language:"javascript"}),i.jsx(c.Tab,{code:I0,language:"java"}),i.jsx(c.Tab,{code:z0,language:"cpp"})]})})]})}const U0=`def test_kth_bit(num: int, k: int) -> bool:\r - return num & (1 << k) != 0\r -`,H0=`def set_kth_bit(num: int, k: int) -> int:\r - return num | (1 << k)\r -`,$0=`def clear_kth_bit(num: int, k: int) -> int:\r - return num & ~(1 << k)\r -`,W0=`def toggle_kth_bit(num: int, k: int) -> int:\r - return num ^ (1 << k)\r -`,V0=`def get_rightmost_set_bit(num: int) -> int:\r - return num & -num\r -`,K0=`def count_set_bits(num: int) -> int:\r - return bin(num).count('1')\r -`,G0=`def multiply_by_power_of_two(num: int, k: int) -> int:\r - return num << k\r -`,J0=`def divide_by_power_of_two(num: int, k: int) -> int:\r - return num >> k\r -`,Y0=`def is_power_of_two(num: int) -> bool:\r - return (num & (num - 1)) == 0\r -`,Q0=`def swap_variables(num1: int, num2: int) -> tuple:\r - num1 ^= num2\r - num2 ^= num1\r - num1 ^= num2\r - return num1, num2\r -`,q0=`const testKthBit = (num, k) => {\r - return num & (1 << k) !== 0\r -}\r -`,X0=`const setKthBit = (num, k) => {\r - return num | (1 << k)\r -}\r -`,Z0=`const clearKthBit = (num, k) => {\r - return num & ~(1 << k)\r -}\r -`,ny=`const toggleKthBit = (num, k) => {\r - return num ^ (1 << k)\r -}\r -`,ry=`const getRightmostSetBit = (num) => {\r - return num & -num\r -}\r -`,ey=`const countSetBits = (num) => {\r - return num.toString(2).split('1').length - 1\r -}\r -`,ty=`const multiplyByPowerOfTwo = (num, k) => {\r - return num << k\r -}\r -`,iy=`const divideByPowerOfTwo = (num, k) => {\r - return num >> k;\r -}\r -`,oy=`const isPowerOfTwo = (num) => {\r - return (num & (num - 1)) === 0\r -}\r -`,ay=`const swapVariables = (num1, num2) => {\r - num1 ^= num2\r - num2 ^= num1\r - num1 ^= num2\r - return [num1, num2]\r -}\r -`,sy=`public boolean testKthBit(int num, int k) {\r - return (num & (1 << k)) != 0;\r -}\r -`,ly=`public int setKthBit(int num, int k) {\r - return num | (1 << k);\r -}\r -`,uy=`public int clearKthBit(int num, int k) {\r - return num & ~(1 << k);\r -}\r -`,cy=`public int toggleKthBit(int num, int k) {\r - return num ^ (1 << k);\r -}\r -`,dy=`public int getRightmostSetBit(int num) {\r - return num & -num;\r -}\r -`,fy=`public int countSetBits(int num) {\r - int count = 0;\r -\r - while (num > 0) {\r - count += num & 1;\r - num >>= 1;\r - }\r -\r - return count;\r -}\r -`,py=`public int multiplyByPowerOfTwo(int num, int k) {\r - return num << k;\r -}\r -`,hy=`public int divideByPowerOfTwo(int num, int k) {\r - return num >> k;\r -}\r -`,gy=`public boolean isPowerOfTwo(int num) {\r - return (num & (num - 1)) == 0;\r -}\r -`,my=`public int[] swapVariables(int num1, int num2) {\r - num1 ^= num2;\r - num2 ^= num1;\r - num1 ^= num2;\r - return new int[] { num1, num2 };\r -}\r -`,vy=`bool test_kth_bit(int num, int k) {\r - return (num & (1 << k)) != 0;\r -}\r -`,yy=`int set_kth_bit(int num, int k) {\r - return num | (1 << k);\r -}\r -`,xy=`int clear_kth_bit(int num, int k) {\r - return num & ~(1 << k);\r -}\r -`,_y=`int toggle_kth_bit(int num, int k) {\r - return num ^ (1 << k);\r -}\r -`,wy=`int get_rightmost_set_bit(int num) {\r - return num & -num;\r -}\r -`,Sy=`int count_set_bits(int num) {\r - int count = 0;\r -\r - while (num) {\r - count += num & 1;\r - num >>= 1;\r - }\r -\r - return count;\r -}\r -`,jy=`int multiply_by_power_of_two(int num, int k) {\r - return num << k;\r -}\r -`,Ty=`int divide_by_power_of_two(int num, int k) {\r - return num >> k;\r -}\r -`,by=`bool is_power_of_two(int num) {\r - return (num & (num - 1)) == 0;\r -}\r -`,ky=`#include \r -\r -using namespace std;\r -\r -\r -tuple swap_variables(int num1, int num2) {\r - num1 ^= num2;\r - num2 ^= num1;\r - num1 ^= num2;\r - return std::make_tuple(num1, num2);\r -}\r -`;function Ey(){return i.jsxs("div",{className:un.container,children:[i.jsx("h2",{className:un.sectionHeader,children:"Bit Manipulation"}),i.jsx("section",{id:"bitmanipulation-test-kth-bit",children:i.jsxs(c,{title:"test kth-bit",children:[i.jsx(c.Tab,{code:U0,language:"python"}),i.jsx(c.Tab,{code:q0,language:"javascript"}),i.jsx(c.Tab,{code:sy,language:"java"}),i.jsx(c.Tab,{code:vy,language:"cpp"})]})}),i.jsx("section",{id:"bitmanipulation-set-kth-bit",children:i.jsxs(c,{title:"set kth bit",children:[i.jsx(c.Tab,{code:H0,language:"python"}),i.jsx(c.Tab,{code:X0,language:"javascript"}),i.jsx(c.Tab,{code:ly,language:"java"}),i.jsx(c.Tab,{code:yy,language:"cpp"})]})}),i.jsx("section",{id:"bitmanipulation-clear-kth-bit",children:i.jsxs(c,{title:"clear kth bit",children:[i.jsx(c.Tab,{code:$0,language:"python"}),i.jsx(c.Tab,{code:Z0,language:"javascript"}),i.jsx(c.Tab,{code:uy,language:"java"}),i.jsx(c.Tab,{code:xy,language:"cpp"})]})}),i.jsx("section",{id:"bitmanipulation-toggle-kth-bit",children:i.jsxs(c,{title:"toggle kth bit",children:[i.jsx(c.Tab,{code:W0,language:"python"}),i.jsx(c.Tab,{code:ny,language:"javascript"}),i.jsx(c.Tab,{code:cy,language:"java"}),i.jsx(c.Tab,{code:_y,language:"cpp"})]})}),i.jsx("section",{id:"bitmanipulation-get-rightmost-bit",children:i.jsxs(c,{title:"get rightmost bit",children:[i.jsx(c.Tab,{code:V0,language:"python"}),i.jsx(c.Tab,{code:ry,language:"javascript"}),i.jsx(c.Tab,{code:dy,language:"java"}),i.jsx(c.Tab,{code:wy,language:"cpp"})]})}),i.jsx("section",{id:"bitmanipulation-count-set-bits",children:i.jsxs(c,{title:"count set bits",children:[i.jsx(c.Tab,{code:K0,language:"python"}),i.jsx(c.Tab,{code:ey,language:"javascript"}),i.jsx(c.Tab,{code:fy,language:"java"}),i.jsx(c.Tab,{code:Sy,language:"cpp"})]})}),i.jsx("section",{id:"bitmanipulation-multiply-power-of-two",children:i.jsxs(c,{title:"multiply by 2^k",children:[i.jsx(c.Tab,{code:G0,language:"python"}),i.jsx(c.Tab,{code:ty,language:"javascript"}),i.jsx(c.Tab,{code:py,language:"java"}),i.jsx(c.Tab,{code:jy,language:"cpp"})]})}),i.jsx("section",{id:"bitmanipulation-divide-power-of-two",children:i.jsxs(c,{title:"divide by 2^k",children:[i.jsx(c.Tab,{code:J0,language:"python"}),i.jsx(c.Tab,{code:iy,language:"javascript"}),i.jsx(c.Tab,{code:hy,language:"java"}),i.jsx(c.Tab,{code:Ty,language:"cpp"})]})}),i.jsx("section",{id:"bitmanipulation-check-power-of-two",children:i.jsxs(c,{title:"check if number is power of 2",children:[i.jsx(c.Tab,{code:Y0,language:"python"}),i.jsx(c.Tab,{code:oy,language:"javascript"}),i.jsx(c.Tab,{code:gy,language:"java"}),i.jsx(c.Tab,{code:by,language:"cpp"})]})}),i.jsx("section",{id:"bitmanipulation-swap-variables",children:i.jsxs(c,{title:"swap two variables",children:[i.jsx(c.Tab,{code:Q0,language:"python"}),i.jsx(c.Tab,{code:ay,language:"javascript"}),i.jsx(c.Tab,{code:my,language:"java"}),i.jsx(c.Tab,{code:ky,language:"cpp"})]})})]})}const Ny=`def fn(matrix: list[list[int]]):\r - r = len(matrix)\r - c = len(matrix[0])\r -\r - create_matrix = [[0 for _ in range(c)] for _ in range(r)]\r - copy_matrix = [row[:] for row in matrix]\r -`,Oy=`def fn(matrix: list[list[int]]):\r - r = len(matrix)\r - c = len(matrix[0])\r -\r - main_diagonal = [matrix[i][i] for i in range(min(r, c))]\r - anti_diagonal = [matrix[i][~i] for i in range(min(r, c))]\r -`,Ay=`def fn(matrix: list[list[int]]):\r - r = len(matrix)\r - c = len(matrix[0])\r -\r - transpose_tuple = zip(*matrix)\r - transpose = [list(row) for row in transpose_tuple]\r - rotate_left = transpose[::-1]\r - rotate_right = [row[::-1] for row in transpose]\r -`,Cy=`const fn = (matrix) => {\r - const r = matrix.length;\r - const c = matrix[0].length;\r -\r - const createMatrix = Array.from({ length: r }, () => Array(c).fill(0))\r - const copyMatrix = matrix.map(row => [...row])\r -}\r -`,Ly=`const fn = (matrix) => {\r - const r = matrix.length\r - const c = matrix[0].length\r -\r - const mainDiagonal = Array.from({ length: Math.min(r, c) }, (_, i) => matrix[i][i])\r - const antiDiagonal = Array.from({ length: Math.min(r, c) }, (_, i) => matrix[i][~i])\r -}\r -`,Py=`const fn = (matrix) => {\r - const r = matrix.length\r - const c = matrix[0].length\r -\r - const transposeTuple = matrix[0].map((_, i) => matrix.map(row => row[i]))\r - const transpose = transposeTuple.map(row => [...row])\r - const rotateLeft = transpose.reverse()\r - const rotateRight = transpose.map(row => row.reverse())\r -}\r -`,My=`import java.util.ArrayList;\r -import java.util.List;\r -\r -\r -public void fn(List> matrix) {\r - List> createMatrix = new ArrayList<>();\r - List> copyMatrix = new ArrayList<>();\r - int r = matrix.size();\r - int c = matrix.get(0).size();\r -\r - for (int i = 0; i < r; i++) {\r - List row = new ArrayList<>();\r -\r - for (int j = 0; j < c; j++) {\r - row.add(0);\r - }\r -\r - createMatrix.add(row);\r - }\r -\r - for (List row : matrix) {\r - copyMatrix.add(new ArrayList<>(row));\r - }\r -}\r -`,Ry=`import java.util.ArrayList;\r -import java.util.List;\r -\r -\r -public void fn(List> matrix) {\r - List mainDiagonal = new ArrayList<>();\r - List antiDiagonal = new ArrayList<>();\r - int r = matrix.size();\r - int c = matrix.get(0).size();\r -\r - for (int i = 0; i < Math.min(r, c); i++) {\r - mainDiagonal.add(matrix.get(i).get(i));\r - }\r -\r - for (int i = 0; i < Math.min(r, c); i++) {\r - antiDiagonal.add(matrix.get(i).get(c - 1 - i));\r - }\r -}\r -`,Iy=`import java.util.ArrayList;\r -import java.util.List;\r -\r -\r -public static void fn(List> matrix) {\r - List> transpose = new ArrayList<>();\r - List> rotateLeft = new ArrayList<>();\r - List> rotateRight = new ArrayList<>();\r - int r = matrix.size();\r - int c = matrix.get(0).size();\r -\r - for (int j = 0; j < c; j++) {\r - List newRow = new ArrayList<>();\r -\r - for (int i = 0; i < r; i++) {\r - newRow.add(matrix.get(i).get(j));\r - }\r -\r - transpose.add(newRow);\r - }\r -\r - for (int i = transpose.size() - 1; i >= 0; i--) {\r - rotateLeft.add(transpose.get(i));\r - }\r -\r - for (List row : transpose) {\r - List newRow = new ArrayList<>();\r -\r - for (int i = row.size() - 1; i >= 0; i--) {\r - newRow.add(row.get(i));\r - }\r -\r - rotateRight.add(newRow);\r - }\r -}\r -`,Dy=`#include \r -\r -using namespace std;\r -\r -\r -void fn(vector>& matrix) {\r - int r = matrix.size();\r - int c = matrix[0].size();\r -\r - vector> create_matrix(r, vector(c, 0));\r - vector> copy_matrix(matrix);\r -}\r -`,By=`#include \r -\r -using namespace std;\r -\r -\r -void fn(vector>& matrix) {\r - int r = matrix.size();\r - int c = matrix[0].size();\r -\r - vector main_diagonal;\r - vector anti_diagonal;\r -\r - for (int i = 0; i < min(r, c); ++i) {\r - main_diagonal.push_back(matrix[i][i]);\r - anti_diagonal.push_back(matrix[i][c - i - 1]);\r - }\r -}\r -`,zy=`#include \r -\r -using namespace std;\r -\r -\r -void fn(vector>& matrix) {\r - int r = matrix.size();\r - int c = matrix[0].size();\r - vector> transpose(c, vector(r));\r - vector> rotate_left(c, vector(r));\r - vector> rotate_right(c, vector(r));\r -\r - for (int i = 0; i < r; ++i) {\r - for (int j = 0; j < c; ++j) {\r - transpose[j][i] = matrix[i][j];\r - }\r - }\r -\r - for (int i = 0; i < c; ++i) {\r - for (int j = 0; j < r; ++j) {\r - rotate_left[i][j] = transpose[c - i - 1][j];\r - }\r - }\r -\r - for (int i = 0; i < c; ++i) {\r - for (int j = 0; j < r; ++j) {\r - rotate_right[i][j] = transpose[i][r - j - 1];\r - }\r - }\r -}\r -`;function Fy(){return i.jsxs("div",{className:un.container,children:[i.jsx("h2",{className:un.sectionHeader,children:"Matrix"}),i.jsx("section",{id:"matrix-create-copy",children:i.jsxs(c,{title:"create / copy",children:[i.jsx(c.Tab,{code:Ny,language:"python"}),i.jsx(c.Tab,{code:Cy,language:"javascript"}),i.jsx(c.Tab,{code:My,language:"java"}),i.jsx(c.Tab,{code:Dy,language:"cpp"})]})}),i.jsx("section",{id:"matrix-diagonals",children:i.jsxs(c,{title:"diagonals / anti-diagonals",children:[i.jsx(c.Tab,{code:Oy,language:"python"}),i.jsx(c.Tab,{code:Ly,language:"javascript"}),i.jsx(c.Tab,{code:Ry,language:"java"}),i.jsx(c.Tab,{code:By,language:"cpp"})]})}),i.jsx("section",{id:"matrix-rotate-transpose",children:i.jsxs(c,{title:"rotate / transpose",children:[i.jsx(c.Tab,{code:Ay,language:"python"}),i.jsx(c.Tab,{code:Py,language:"javascript"}),i.jsx(c.Tab,{code:Iy,language:"java"}),i.jsx(c.Tab,{code:zy,language:"cpp"})]})})]})}const Uy=`from typing import Any\r -\r -\r -class Array:\r - def __init__(self, size: int) -> None:\r - self.size = size\r - self.data = [None] * size\r -\r - def __getitem__(self, index: int) -> Any:\r - return self.data[index]\r -\r - def __setitem__(self, index: int, value: Any) -> None:\r - self.data[index] = value\r -\r - def __len__(self) -> int:\r - return len(self.data)\r -\r - def __repr__(self) -> str:\r - return repr(self.data)\r -`,Hy=`from typing import Any\r -\r -\r -class TreeNode:\r - def __init__(self, data: Any) -> None:\r - self.data = data\r - self.left = None\r - self.right = None\r -\r -\r -class BinaryTree:\r - def __init__(self) -> None:\r - self.root = None\r -\r - def insert(self, data: Any) -> None:\r - if not self.root:\r - self.root = TreeNode(data)\r - else:\r - self.insert_node(self.root, data)\r -\r - def insert_node(self, node: TreeNode | None, data: Any) -> TreeNode:\r - if not node:\r - return TreeNode(data)\r -\r - if not node.left:\r - node.left = TreeNode(data)\r - elif not node.right:\r - node.right = TreeNode(data)\r - else:\r - node.left = self.insert_node(node.left, data)\r -\r - return node\r -\r - def __repr__(self) -> str:\r - return 'Empty tree' if not self.root else self._print_tree(self.root, '', True)\r -\r - def _print_tree(self, node: TreeNode | None, prefix: str, is_left: bool) -> str:\r - if node is None:\r - return ''\r -\r - result = ''\r - result += self._print_tree(node.right, prefix + ('│ ' if is_left else ' '), False)\r - result += prefix + ('└── ' if is_left else '┌── ') + str(node.data) + '\\n'\r - result += self._print_tree(node.left, prefix + (' ' if is_left else '│ '), True)\r -\r - return result\r -`,$y=`from typing import Any\r -\r -\r -class TreeNode:\r - def __init__(self, data: Any) -> None:\r - self.data = data\r - self.left = None\r - self.right = None\r -\r -\r -class BinarySearchTree:\r - def __init__(self) -> None:\r - self.root = None\r -\r - def insert(self, data: Any) -> None:\r - if not self.root:\r - self.root = TreeNode(data)\r - else:\r - self.insert_node(self.root, data)\r -\r - def insert_node(self, node: TreeNode | None, data: Any) -> None:\r - if data < node.data:\r - if not node.left:\r - node.left = TreeNode(data)\r - else:\r - self.insert_node(node.left, data)\r - else:\r - if not node.right:\r - node.right = TreeNode(data)\r - else:\r - self.insert_node(node.right, data)\r -\r - def __repr__(self) -> str:\r - return 'Empty tree' if not self.root else self._print_tree(self.root, '', True)\r -\r - def _print_tree(self, node: TreeNode | None, prefix: str, is_left: bool) -> str:\r - if node is None:\r - return ''\r -\r - result = ''\r - result += self._print_tree(node.right, prefix + ('│ ' if is_left else ' '), False)\r - result += prefix + ('└── ' if is_left else '┌── ') + str(node.data) + '\\n'\r - result += self._print_tree(node.left, prefix + (' ' if is_left else '│ '), True)\r -\r - return result\r -`,Wy=`from typing import Any\r -\r -\r -class ListNode:\r - def __init__(self, data: Any) -> None:\r - self.data = data\r - self.next = None\r -\r - def __repr__(self) -> str:\r - return f'[{self.data}]'\r -\r -\r -class LinkedList:\r - def __init__(self) -> None:\r - self.head = None\r -\r - def append(self, data: Any) -> None:\r - if not self.head:\r - self.head = ListNode(data)\r - return\r -\r - curr = self.head\r -\r - while curr.next:\r - curr = curr.next\r -\r - curr.next = ListNode(data)\r -\r - def delete(self, data: Any) -> None:\r - if not self.head:\r - return\r -\r - if self.head.data == data:\r - self.head = self.head.next\r - return\r -\r - prev = None\r - curr = self.head\r -\r - while curr:\r - if curr.data == data:\r - prev.next = curr.next\r - return\r -\r - prev = curr\r - curr = curr.next\r -\r - def reverse(self) -> None:\r - prev = None\r - curr = self.head\r -\r - while curr:\r - nxt = curr.next\r - curr.next = prev\r - prev = curr\r - curr = nxt\r -\r - self.head = prev\r -\r - def __repr__(self) -> str:\r - if not self.head:\r - return 'None'\r -\r - nodes = []\r - node = self.head\r -\r - while node:\r - nodes.append(repr(node))\r - node = node.next\r -\r - return ' -> '.join(nodes) + ' -> None'\r -`,Vy=`from typing import Any\r -\r -\r -class ListNode:\r - def __init__(self, data: Any) -> None:\r - self.data = data\r - self.prev = None\r - self.next = None\r -\r - def __repr__(self) -> str:\r - return f'[{self.data}]'\r -\r -\r -class DoublyLinkedList:\r - def __init__(self) -> None:\r - self.head = None\r -\r - def append(self, data: Any) -> None:\r - if not self.head:\r - self.head = ListNode(data)\r - return\r -\r - curr = self.head\r -\r - while curr.next:\r - curr = curr.next\r -\r - new_node = ListNode(data)\r - curr.next = new_node\r - new_node.prev = curr\r -\r - def delete(self, data: Any) -> None:\r - if not self.head:\r - return\r -\r - if self.head.data == data:\r - self.head = self.head.next\r - if self.head:\r - self.head.prev = None\r - return\r -\r - curr = self.head\r - while curr:\r - if curr.data == data:\r - prev_node = curr.prev\r - prev_node.next = curr.next\r - if curr.next:\r - curr.next.prev = prev_node\r - return\r - curr = curr.next\r -\r - def reverse(self) -> None:\r - curr = self.head\r - prev = None\r -\r - while curr:\r - nxt = curr.next\r - curr.next = prev\r - curr.prev = nxt\r - prev = curr\r - curr = nxt\r -\r - self.head = prev\r -\r - def __repr__(self) -> str:\r - if not self.head:\r - return 'None'\r -\r - nodes = []\r - curr = self.head\r -\r - while curr:\r - nodes.append(repr(curr))\r - curr = curr.next\r -\r - return ' <-> '.join(nodes) + ' <-> None'\r -`,Ky=`class Graph:\r - def __init__(self) -> None:\r - self.graph = {}\r -\r - def add_vertex(self, vertex: str) -> None:\r - if vertex not in self.graph:\r - self.graph[vertex] = []\r -\r - def add_edge(self, a: str, b: str) -> None:\r - self.add_vertex(a)\r - self.add_vertex(b)\r - self.graph[a].append(b)\r - self.graph[b].append(a)\r -\r - def get_neighbors(self, vertex: str) -> list[str]:\r - return self.graph.get(vertex, [])\r -\r - def __repr__(self) -> str:\r - output = ''\r -\r - for vertex, neighbors in self.graph.items():\r - output += f'{vertex} - {' - '.join(neighbors)}\\n'\r -\r - return output\r -`,Gy=`from typing import Any\r -\r -\r -class HashMap:\r - def __init__(self) -> None:\r - self.size = 100000\r - self.bucket = [None] * self.size\r -\r - def _hash(self, key: int) -> int:\r - return hash(key) % self.size\r -\r - def __setitem__(self, key: int, value: Any) -> None:\r - self.bucket[self._hash(key)] = value\r -\r - def __getitem__(self, key: int) -> Any:\r - return self.bucket[self._hash(key)]\r -\r - def __delitem__(self, key: int) -> None:\r - self.bucket[self._hash(key)] = None\r -`,Jy=`class TrieNode:\r - def __init__(self) -> None:\r - self.children = {}\r - self.is_word = False\r -\r -\r -class Trie:\r - def __init__(self) -> None:\r - self.root = TrieNode()\r -\r - def build(self, words: list[str]) -> None:\r - for word in words:\r - self.insert(word)\r -\r - def insert(self, word: str) -> None:\r - node = self.root\r -\r - for char in word:\r - if char not in node.children:\r - node.children[char] = TrieNode()\r - node = node.children[char]\r -\r - node.is_word = True\r -\r - def search(self, word: str) -> bool:\r - node = self.root\r -\r - for char in word:\r - if char not in node.children:\r - return False\r - node = node.children[char]\r -\r - return node.is_word\r -\r - def starts_with(self, prefix: str) -> bool:\r - node = self.root\r -\r - for char in prefix:\r - if char not in node.children:\r - return False\r - node = node.children[char]\r -\r - return True\r -\r - def collect_words(self, node: TrieNode, prefix: str) -> list[str]:\r - words = []\r -\r - if node.is_word:\r - words.append(prefix)\r -\r - for char, child_node in node.children.items():\r - words.extend(self.collect_words(child_node, prefix + char))\r -\r - return words\r -\r - def __repr__(self) -> str:\r - return 'Trie:\\n' + self._print_trie(self.root)\r -\r - def _print_trie(self, node: TrieNode | None, level: int = 0, prefix: str = '') -> str:\r - output = ''\r - prefix_str = ' ' * level + prefix\r -\r - if not node:\r - return output\r -\r - if node.is_word:\r - output += prefix_str + ' ├─ ' + '(*)' + '\\n'\r -\r - for i, (char, child_node) in enumerate(node.children.items()):\r - is_last = i == len(node.children) - 1\r - marker = '└─ ' if is_last else '├─ '\r - output += prefix_str + marker + char + '\\n'\r - output += self._print_trie(child_node, level + 1, ' │' if not is_last else ' ')\r -\r - return output\r -`,Yy=`class UnionFind:\r - def __init__(self, n: int) -> None:\r - self.root = list(range(n))\r -\r - def find(self, a: int) -> int:\r - return a if a == self.root[a] else self.find(self.root[a])\r -\r - def union(self, a: int, b: int) -> None:\r - self.root[self.find(a)] = self.find(b)\r -\r - def connected(self, a: int, b: int) -> bool:\r - return self.find(a) == self.find(b)\r -\r - def __repr__(self) -> str:\r - n = len(self.root)\r - lines = []\r - components = {}\r -\r - for i in range(n):\r - root = self.find(i)\r -\r - if root not in components:\r - components[root] = []\r -\r - components[root].append(i)\r -\r - for component in components.values():\r - lines.append(' - '.join(f'({node})' for node in component))\r -\r - return '\\n'.join(lines)\r -`,Qy=`class UnionFind:\r - def __init__(self, n: int) -> None:\r - self.root = list(range(n))\r - self.rank = [1] * n\r -\r - def find(self, a: int) -> int:\r - return a if a == self.root[a] else self.find(self.root[a])\r -\r - def union(self, a: int, b: int) -> None:\r - root_a = self.find(a)\r - root_b = self.find(b)\r -\r - if root_a != root_b:\r - if self.rank[root_a] < self.rank[root_b]:\r - self.root[root_a] = root_b\r - elif self.rank[root_a] > self.rank[root_b]:\r - self.root[root_b] = root_a\r - else:\r - self.root[root_b] = root_a\r - self.rank[root_a] += 1\r -\r - def connected(self, a: int, b: int) -> bool:\r - return self.find(a) == self.find(b)\r -\r - def __repr__(self) -> str:\r - n = len(self.root)\r - lines = []\r - components = {}\r -\r - for i in range(n):\r - root = self.find(i)\r -\r - if root not in components:\r - components[root] = []\r -\r - components[root].append(i)\r -\r - for component in components.values():\r - lines.append(' - '.join(f'({node})' for node in component))\r -\r - return '\\n'.join(lines)\r -`,qy=`class Array {\r - constructor(size) {\r - this.size = size\r - this.data = new Array(size).fill(null)\r - }\r -\r - getItem(index) {\r - return this.data[index]\r - }\r -\r - setItem(index, value) {\r - this.data[index] = value\r - }\r -\r - get length() {\r - return this.data.length\r - }\r -\r - toString() {\r - return this.data.toString()\r - }\r -}\r -`,Xy=`class TreeNode {\r - constructor(data) {\r - this.data = data\r - this.left = null\r - this.right = null\r - }\r -}\r -\r -class BinaryTree {\r - constructor() {\r - this.root = null\r - }\r -\r - insert(data) {\r - if (!this.root) {\r - this.root = new TreeNode(data)\r - } else {\r - this.insertNode(this.root, data)\r - }\r - }\r -\r - insertNode(node, data) {\r - if (!node) {\r - return new TreeNode(data)\r - }\r -\r - if (!node.left) {\r - node.left = new TreeNode(data)\r - } else if (!node.right) {\r - node.right = new TreeNode(data)\r - } else {\r - node.left = this.insertNode(node.left, data)\r - }\r -\r - return node\r - }\r -\r - toString() {\r - return this.root ? this.printTree(this.root, '', true) : 'Empty tree'\r - }\r -\r - printTree(node, prefix, isLeft) {\r - if (!node) {\r - return ''\r - }\r -\r - let result = ''\r - result += this.printTree(node.right, prefix + (isLeft ? '│ ' : ' '), false)\r - result += prefix + (isLeft ? '└── ' : '┌── ') + node.data + '\\n'\r - result += this.printTree(node.left, prefix + (isLeft ? ' ' : '│ '), true)\r -\r - return result\r - }\r -}\r -`,Zy=`class TreeNode {\r - constructor(data) {\r - this.data = data\r - this.left = null\r - this.right = null\r - }\r -}\r -\r -class BinarySearchTree {\r - constructor() {\r - this.root = null\r - }\r -\r - insert(data) {\r - if (!this.root) {\r - this.root = new TreeNode(data)\r - } else {\r - this._insertNode(this.root, data)\r - }\r - }\r -\r - _insertNode(node, data) {\r - if (data < node.data) {\r - if (!node.left) {\r - node.left = new TreeNode(data)\r - } else {\r - this._insertNode(node.left, data)\r - }\r - } else {\r - if (!node.right) {\r - node.right = new TreeNode(data)\r - } else {\r - this._insertNode(node.right, data)\r - }\r - }\r - }\r -\r - toString() {\r - return this.root ? this._printTree(this.root, '', true) : 'Empty tree'\r - }\r -\r - _printTree(node, prefix, isLeft) {\r - if (!node) {\r - return ''\r - }\r -\r - let result = ''\r - result += this._printTree(node.right, prefix + (isLeft ? '│ ' : ' '), false)\r - result += prefix + (isLeft ? '└── ' : '┌── ') + node.data + '\\n'\r - result += this._printTree(node.left, prefix + (isLeft ? ' ' : '│ '), true)\r -\r - return result\r - }\r -}\r -`,nx=`class ListNode {\r - constructor(data) {\r - this.data = data\r - this.next = null\r - }\r -\r - toString() {\r - return \`[\${this.data}]\`\r - }\r -}\r -\r -class LinkedList {\r - constructor() {\r - this.head = null\r - }\r -\r - append(data) {\r - if (!this.head) {\r - this.head = new ListNode(data)\r - return\r - }\r -\r - let curr = this.head\r - while (curr.next) {\r - curr = curr.next\r - }\r -\r - curr.next = new ListNode(data)\r - }\r -\r - delete(data) {\r - if (!this.head) {\r - return\r - }\r -\r - if (this.head.data === data) {\r - this.head = this.head.next\r - return\r - }\r -\r - let prev = null\r - let curr = this.head\r -\r - while (curr) {\r - if (curr.data === data) {\r - prev.next = curr.next\r - return\r - }\r -\r - prev = curr\r - curr = curr.next\r - }\r - }\r -\r - reverse() {\r - let prev = null\r - let curr = this.head\r -\r - while (curr) {\r - let nxt = curr.next\r - curr.next = prev\r - prev = curr\r - curr = nxt\r - }\r -\r - this.head = prev\r - }\r -\r - toString() {\r - if (!this.head) {\r - return 'None'\r - }\r -\r - let nodes = []\r - let node = this.head\r -\r - while (node) {\r - nodes.push(node.toString())\r - node = node.next\r - }\r -\r - return nodes.join(' -> ') + ' -> None'\r - }\r -}\r -`,rx=`class ListNode {\r - constructor(data) {\r - this.data = data\r - this.prev = null\r - this.next = null\r - }\r -\r - toString() {\r - return \`[\${this.data}]\`\r - }\r -}\r -\r -class DoublyLinkedList {\r - constructor() {\r - this.head = null\r - }\r -\r - append(data) {\r - if (!this.head) {\r - this.head = new ListNode(data)\r - return\r - }\r -\r - let curr = this.head\r - while (curr.next) {\r - curr = curr.next\r - }\r -\r - const new_node = new ListNode(data)\r - curr.next = new_node\r - new_node.prev = curr\r - }\r -\r - delete(data) {\r - if (!this.head) {\r - return\r - }\r -\r - if (this.head.data === data) {\r - this.head = this.head.next\r - if (this.head) {\r - this.head.prev = null\r - }\r - return\r - }\r -\r - let curr = this.head\r - while (curr) {\r - if (curr.data === data) {\r - const prev_node = curr.prev\r - prev_node.next = curr.next\r - if (curr.next) {\r - curr.next.prev = prev_node\r - }\r - return\r - }\r - curr = curr.next\r - }\r - }\r -\r - reverse() {\r - let curr = this.head\r - let prev = null\r -\r - while (curr) {\r - const nxt = curr.next\r - curr.next = prev\r - curr.prev = nxt\r - prev = curr\r - curr = nxt\r - }\r -\r - this.head = prev\r - }\r -\r - toString() {\r - if (!this.head) {\r - return 'None'\r - }\r -\r - const nodes = []\r - let curr = this.head\r -\r - while (curr) {\r - nodes.push(curr.toString())\r - curr = curr.next\r - }\r -\r - return nodes.join(' <-> ') + ' <-> None'\r - }\r -}\r -`,ex=`class Graph {\r - constructor() {\r - this.graph = {}\r - }\r -\r - addVertex(vertex) {\r - if (!(vertex in this.graph)) {\r - this.graph[vertex] = []\r - }\r - }\r -\r - addEdge(a, b) {\r - this.addVertex(a)\r - this.addVertex(b)\r - this.graph[a].push(b)\r - this.graph[b].push(a)\r - }\r -\r - getNeighbors(vertex) {\r - return this.graph[vertex] || []\r - }\r -\r - toString() {\r - let output = ''\r -\r - for (const [vertex, neighbors] of Object.entries(this.graph)) {\r - output += \`\${vertex} - \${neighbors.join(' - ')}\\n\`\r - }\r -\r - return output\r - }\r -}\r -`,tx=`class HashMap {\r - constructor() {\r - this.size = 100000\r - this.bucket = new Array(this.size).fill(null)\r - }\r -\r - _hash(key) {\r - return key % this.size\r - }\r -\r - setItem(key, value) {\r - this.bucket[this._hash(key)] = value\r - }\r -\r - getItem(key) {\r - return this.bucket[this._hash(key)]\r - }\r -\r - deleteItem(key) {\r - this.bucket[this._hash(key)] = null\r - }\r -}\r -`,ix=`class TrieNode {\r - constructor() {\r - this.children = {}\r - this.isWord = false\r - }\r -}\r -\r -class Trie {\r - constructor() {\r - this.root = new TrieNode()\r - }\r -\r - build(words) {\r - for (const word of words) {\r - this.insert(word)\r - }\r - }\r -\r - insert(word) {\r - let node = this.root\r -\r - for (const char of word) {\r - if (!(char in node.children)) {\r - node.children[char] = new TrieNode()\r - }\r - node = node.children[char]\r - }\r -\r - node.isWord = true\r - }\r -\r - search(word) {\r - let node = this.root\r -\r - for (const char of word) {\r - if (!(char in node.children)) {\r - return false\r - }\r - node = node.children[char]\r - }\r -\r - return node.isWord\r - }\r -\r - startsWith(prefix) {\r - let node = this.root\r -\r - for (const char of prefix) {\r - if (!(char in node.children)) {\r - return false\r - }\r - node = node.children[char]\r - }\r -\r - return true\r - }\r -\r - collectWords(node, prefix) {\r - const words = []\r -\r - if (node.isWord) {\r - words.push(prefix)\r - }\r -\r - for (const [char, childNode] of Object.entries(node.children)) {\r - words.push(...this.collectWords(childNode, prefix + char))\r - }\r -\r - return words\r - }\r -\r - toString() {\r - return 'Trie:\\n' + this._printTrie(this.root)\r - }\r -\r - _printTrie(node, level = 0, prefix = '') {\r - let output = ''\r - const prefixStr = ' '.repeat(level) + prefix\r -\r - if (!node) {\r - return output\r - }\r -\r - if (node.isWord) {\r - output += prefixStr + ' ├─ ' + '(*)' + '\\n'\r - }\r -\r - const children = Object.entries(node.children)\r - children.forEach(([char, childNode], i) => {\r - const isLast = i === children.length - 1\r - const marker = isLast ? '└─ ' : '├─ '\r - output += prefixStr + marker + char + '\\n'\r - output += this._printTrie(childNode, level + 1, isLast ? ' ' : ' │')\r - })\r -\r - return output\r - }\r -}\r -`,ox=`class UnionFind {\r - constructor(n) {\r - this.root = [...Array(n).keys()]\r - }\r -\r - find(a) {\r - return a === this.root[a] ? a : this.find(this.root[a])\r - }\r -\r - union(a, b) {\r - this.root[this.find(a)] = this.find(b)\r - }\r -\r - connected(a, b) {\r - return this.find(a) === this.find(b)\r - }\r -\r - toString() {\r - const n = this.root.length\r - const lines = []\r - const components = {}\r -\r - for (let i = 0; i < n; i++) {\r - const root = this.find(i)\r -\r - if (!(root in components)) {\r - components[root] = []\r - }\r -\r - components[root].push(i)\r - }\r -\r - for (const component of Object.values(components)) {\r - lines.push(\`(\${component.join(' - ')})\`)\r - }\r -\r - return lines.join('\\n')\r - }\r -}\r -`,ax=`class UnionFind {\r - constructor(n) {\r - this.root = [...Array(n).keys()]\r - this.rank = Array(n).fill(1)\r - }\r -\r - find(a) {\r - return a === this.root[a] ? a : this.find(this.root[a])\r - }\r -\r - union(a, b) {\r - const rootA = this.find(a)\r - const rootB = this.find(b)\r -\r - if (rootA !== rootB) {\r - if (this.rank[rootA] < this.rank[rootB]) {\r - this.root[rootA] = rootB\r - } else if (this.rank[rootA] > this.rank[rootB]) {\r - this.root[rootB] = rootA\r - } else {\r - this.root[rootB] = rootA\r - this.rank[rootA]++\r - }\r - }\r - }\r -\r - connected(a, b) {\r - return this.find(a) === this.find(b)\r - }\r -\r - toString() {\r - const n = this.root.length\r - const lines = []\r - const components = {}\r -\r - for (let i = 0; i < n; i++) {\r - const root = this.find(i)\r -\r - if (!(root in components)) {\r - components[root] = []\r - }\r -\r - components[root].push(i)\r - }\r -\r - for (const component of Object.values(components)) {\r - lines.push(component.map(node => \`(\${node})\`).join(' - '))\r - }\r -\r - return lines.join('\\n')\r - }\r -}\r -`,sx=`public class Array {\r - private int size;\r - private T[] data;\r -\r - @SuppressWarnings("unchecked")\r - public Array(int size) {\r - this.size = size;\r - this.data = (T[]) new Object[size];\r - }\r -\r - public T get(int index) {\r - if (index < 0 || index >= size) {\r - throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size);\r - }\r - return data[index];\r - }\r -\r - public void set(int index, T value) {\r - if (index < 0 || index >= size) {\r - throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size);\r - }\r - data[index] = value;\r - }\r -\r - public int size() {\r - return size;\r - }\r -\r - @Override\r - public String toString() {\r - StringBuilder sb = new StringBuilder("[");\r -\r - for (int i = 0; i < size; i++) {\r - sb.append(data[i]);\r - if (i < size - 1) {\r - sb.append(", ");\r - }\r - }\r -\r - sb.append("]");\r - return sb.toString();\r - }\r -}\r -`,lx=`public class TreeNode {\r - T data;\r - TreeNode left;\r - TreeNode right;\r -\r - public TreeNode(T data) {\r - this.data = data;\r - left = null;\r - right = null;\r - }\r -}\r -\r -public class BinaryTree {\r - TreeNode root;\r -\r - public BinaryTree() {\r - root = null;\r - }\r -\r - public void insert(T data) {\r - root = insertNode(root, data);\r - }\r -\r - private TreeNode insertNode(TreeNode node, T data) {\r - if (node == null) {\r - return new TreeNode<>(data);\r - }\r -\r - if (node.left == null) {\r - node.left = new TreeNode<>(data);\r - } else if (node.right == null) {\r - node.right = new TreeNode<>(data);\r - } else {\r - node.left = insertNode(node.left, data);\r - }\r -\r - return node;\r - }\r -\r - @Override\r - public String toString() {\r - return root == null ? "Empty tree" : printTree(root, "", true);\r - }\r -\r - private String printTree(TreeNode node, String prefix, boolean isLeft) {\r - if (node == null) {\r - return "";\r - }\r -\r - StringBuilder sb = new StringBuilder();\r - sb.append(printTree(node.right, prefix + (isLeft ? "│ " : " "), false));\r - sb.append(prefix).append(isLeft ? "└── " : "┌── ").append(node.data).append("\\n");\r - sb.append(printTree(node.left, prefix + (isLeft ? " " : "│ "), true));\r -\r - return sb.toString();\r - }\r -}\r -`,ux=`public class TreeNode> {\r - T data;\r - TreeNode left;\r - TreeNode right;\r -\r - public TreeNode(T data) {\r - this.data = data;\r - left = null;\r - right = null;\r - }\r -}\r -\r -public class BinarySearchTree> {\r - TreeNode root;\r -\r - public BinarySearchTree() {\r - root = null;\r - }\r -\r - public void insert(T data) {\r - root = insertNode(root, data);\r - }\r -\r - private TreeNode insertNode(TreeNode node, T data) {\r - if (node == null) {\r - return new TreeNode<>(data);\r - }\r -\r - if (data.compareTo(node.data) < 0) {\r - node.left = insertNode(node.left, data);\r - } else if (data.compareTo(node.data) > 0) {\r - node.right = insertNode(node.right, data);\r - }\r -\r - return node;\r - }\r -\r - @Override\r - public String toString() {\r - return root == null ? "Empty tree" : printTree(root, "", true);\r - }\r -\r - private String printTree(TreeNode node, String prefix, boolean isLeft) {\r - if (node == null) {\r - return "";\r - }\r -\r - StringBuilder sb = new StringBuilder();\r - sb.append(printTree(node.right, prefix + (isLeft ? "│ " : " "), false));\r - sb.append(prefix).append(isLeft ? "└── " : "┌── ").append(node.data).append("\\n");\r - sb.append(printTree(node.left, prefix + (isLeft ? " " : "│ "), true));\r -\r - return sb.toString();\r - }\r -}\r -`,cx=`class ListNode {\r - public int data;\r - public ListNode next;\r -\r - public ListNode(int data) {\r - this.data = data;\r - this.next = null;\r - }\r -\r - @Override\r - public String toString() {\r - return "[" + data + "]";\r - }\r -}\r -\r -class LinkedList {\r - private ListNode head;\r -\r - public LinkedList() {\r - this.head = null;\r - }\r -\r - public void append(int data) {\r - if (head == null) {\r - head = new ListNode(data);\r - return;\r - }\r -\r - ListNode current = head;\r -\r - while (current.next != null) {\r - current = current.next;\r - }\r -\r - current.next = new ListNode(data);\r - }\r -\r - public void delete(int data) {\r - if (head == null) {\r - return;\r - }\r -\r - if (head.data == data) {\r - head = head.next;\r - return;\r - }\r -\r - ListNode prev = null;\r - ListNode current = head;\r -\r - while (current != null) {\r - if (current.data == data) {\r - prev.next = current.next;\r - return;\r - }\r - prev = current;\r - current = current.next;\r - }\r - }\r -\r - public void reverse() {\r - ListNode prev = null;\r - ListNode current = head;\r -\r - while (current != null) {\r - ListNode next = current.next;\r - current.next = prev;\r - prev = current;\r - current = next;\r - }\r -\r - head = prev;\r - }\r -\r - @Override\r - public String toString() {\r - if (head == null) {\r - return "None";\r - }\r -\r - StringBuilder result = new StringBuilder();\r - ListNode current = head;\r -\r - while (current != null) {\r - result.append(current.toString()).append(" -> ");\r - current = current.next;\r - }\r -\r - result.append("None");\r - return result.toString();\r - }\r -}\r -`,dx=`public class ListNode {\r - T data;\r - ListNode prev;\r - ListNode next;\r -\r - public ListNode(T data) {\r - this.data = data;\r - prev = null;\r - next = null;\r - }\r -\r - @Override\r - public String toString() {\r - return "[" + data + "]";\r - }\r -}\r -\r -public class DoublyLinkedList {\r - ListNode head;\r -\r - public DoublyLinkedList() {\r - head = null;\r - }\r -\r - public void append(T data) {\r - if (head == null) {\r - head = new ListNode<>(data);\r - return;\r - }\r -\r - ListNode curr = head;\r -\r - while (curr.next != null) {\r - curr = curr.next;\r - }\r -\r - ListNode newNode = new ListNode<>(data);\r - curr.next = newNode;\r - newNode.prev = curr;\r - }\r -\r - public void delete(T data) {\r - if (head == null) {\r - return;\r - }\r -\r - if (head.data.equals(data)) {\r - head = head.next;\r - if (head != null) {\r - head.prev = null;\r - }\r - return;\r - }\r -\r - ListNode curr = head;\r -\r - while (curr != null) {\r - if (curr.data.equals(data)) {\r - ListNode prevNode = curr.prev;\r - prevNode.next = curr.next;\r - if (curr.next != null) {\r - curr.next.prev = prevNode;\r - }\r - return;\r - }\r - curr = curr.next;\r - }\r - }\r -\r - public void reverse() {\r - ListNode curr = head;\r - ListNode prev = null;\r -\r - while (curr != null) {\r - ListNode nextNode = curr.next;\r - curr.next = prev;\r - curr.prev = nextNode;\r - prev = curr;\r - curr = nextNode;\r - }\r -\r - head = prev;\r - }\r -\r - @Override\r - public String toString() {\r - if (head == null) {\r - return "None";\r - }\r -\r - StringBuilder sb = new StringBuilder();\r - ListNode curr = head;\r -\r - while (curr != null) {\r - sb.append(curr.toString()).append(" <-> ");\r - curr = curr.next;\r - }\r -\r - sb.append("None");\r - return sb.toString();\r - }\r -}\r -`,fx=`import java.util.ArrayList;\r -import java.util.HashMap;\r -import java.util.List;\r -import java.util.Map;\r -\r -\r -public class Graph {\r - Map> graph;\r -\r - public Graph() {\r - graph = new HashMap<>();\r - }\r -\r - public void addVertex(String vertex) {\r - if (!graph.containsKey(vertex)) {\r - graph.put(vertex, new ArrayList<>());\r - }\r - }\r -\r - public void addEdge(String a, String b) {\r - addVertex(a);\r - addVertex(b);\r - graph.get(a).add(b);\r - graph.get(b).add(a);\r - }\r -\r - public List getNeighbors(String vertex) {\r - return graph.getOrDefault(vertex, new ArrayList<>());\r - }\r -\r - @Override\r - public String toString() {\r - StringBuilder output = new StringBuilder();\r -\r - for (Map.Entry> entry : graph.entrySet()) {\r - output.append(entry.getKey()).append(" - ").append(String.join(" - ", entry.getValue())).append("\\n");\r - }\r -\r - return output.toString();\r - }\r -}\r -`,px=`public class HashMap {\r - private int size;\r - private Object[] bucket;\r -\r - public HashMap() {\r - size = 100000;\r - bucket = new Object[size];\r - }\r -\r - private int hash(int key) {\r - return key % size;\r - }\r -\r - public void put(int key, Object value) {\r - bucket[hash(key)] = value;\r - }\r -\r - public Object get(int key) {\r - return bucket[hash(key)];\r - }\r -\r - public void remove(int key) {\r - bucket[hash(key)] = null;\r - }\r -}\r -`,hx=`import java.util.ArrayList;\r -import java.util.HashMap;\r -import java.util.List;\r -import java.util.Map;\r -\r -\r -class TrieNode {\r - Map children;\r - boolean isWord;\r -\r - public TrieNode() {\r - this.children = new HashMap<>();\r - this.isWord = false;\r - }\r -}\r -\r -class Trie {\r - TrieNode root;\r -\r - public Trie() {\r - this.root = new TrieNode();\r - }\r -\r - public void build(String[] words) {\r - for (String word : words) {\r - insert(word);\r - }\r - }\r -\r - public void insert(String word) {\r - TrieNode node = root;\r -\r - for (char ch : word.toCharArray()) {\r - if (!node.children.containsKey(ch)) {\r - node.children.put(ch, new TrieNode());\r - }\r - node = node.children.get(ch);\r - }\r -\r - node.isWord = true;\r - }\r -\r - public boolean search(String word) {\r - TrieNode node = root;\r -\r - for (char ch : word.toCharArray()) {\r - if (!node.children.containsKey(ch)) {\r - return false;\r - }\r - node = node.children.get(ch);\r - }\r -\r - return node.isWord;\r - }\r -\r - public boolean startsWith(String prefix) {\r - TrieNode node = root;\r -\r - for (char ch : prefix.toCharArray()) {\r - if (!node.children.containsKey(ch)) {\r - return false;\r - }\r - node = node.children.get(ch);\r - }\r -\r - return true;\r - }\r -\r - public List collectWords(TrieNode node, String prefix) {\r - List words = new ArrayList<>();\r -\r - if (node.isWord) {\r - words.add(prefix);\r - }\r -\r - for (Map.Entry entry : node.children.entrySet()) {\r - words.addAll(collectWords(entry.getValue(), prefix + entry.getKey()));\r - }\r -\r - return words;\r - }\r -\r - @Override\r - public String toString() {\r - return "Trie:\\n" + printTrie(root, 0, null);\r - }\r -\r - private String printTrie(TrieNode node, int level, String prefix) {\r - StringBuilder output = new StringBuilder();\r - String prefixStr = "\\t".repeat(level) + prefix;\r -\r - if (node == null) {\r - return output.toString();\r - }\r -\r - if (node.isWord) {\r - output.append(prefixStr).append(" ├─ ").append("(*)").append("\\n");\r - }\r -\r - int i = 0;\r -\r - for (Map.Entry entry : node.children.entrySet()) {\r - boolean isLast = i == node.children.size() - 1;\r - String marker = isLast ? "└─ " : "├─ ";\r - output.append(prefixStr).append(marker).append(entry.getKey()).append("\\n");\r - output.append(printTrie(entry.getValue(), level + 1, isLast ? " │" : " "));\r - i++;\r - }\r -\r - return output.toString();\r - }\r -}\r -`,gx=`import java.util.ArrayList;\r -import java.util.HashMap;\r -import java.util.List;\r -import java.util.Map;\r -\r -\r -public class UnionFind {\r - private int[] root;\r -\r - public UnionFind(int n) {\r - this.root = new int[n];\r - for (int i = 0; i < n; i++) {\r - this.root[i] = i;\r - }\r - }\r -\r - public int find(int a) {\r - if (a == root[a]) {\r - return a;\r - }\r - return root[a] = find(root[a]);\r - }\r -\r - public void union(int a, int b) {\r - root[find(a)] = find(b);\r - }\r -\r - public boolean connected(int a, int b) {\r - return find(a) == find(b);\r - }\r -\r - @Override\r - public String toString() {\r - int n = root.length;\r - List> components = new ArrayList<>();\r - Map> componentMap = new HashMap<>();\r -\r - for (int i = 0; i < n; i++) {\r - int root = find(i);\r -\r - if (!componentMap.containsKey(root)) {\r - componentMap.put(root, new ArrayList<>());\r - }\r -\r - componentMap.get(root).add(i);\r - }\r -\r - StringBuilder sb = new StringBuilder();\r -\r - for (List component : componentMap.values()) {\r - sb.append(" - ").append(component);\r - }\r -\r - return sb.toString();\r - }\r -}\r -`,mx=`import java.util.ArrayList;\r -import java.util.HashMap;\r -import java.util.List;\r -import java.util.Map;\r -\r -\r -class UnionFind {\r - int[] root;\r - int[] rank;\r -\r - public UnionFind(int n) {\r - this.root = new int[n];\r - this.rank = new int[n];\r -\r - for (int i = 0; i < n; i++) {\r - this.root[i] = i;\r - this.rank[i] = 1;\r - }\r - }\r -\r - public int find(int a) {\r - if (a == root[a]) {\r - return a;\r - }\r - return root[a] = find(root[a]);\r - }\r -\r - public void union(int a, int b) {\r - int rootA = find(a);\r - int rootB = find(b);\r -\r - if (rootA != rootB) {\r - if (rank[rootA] < rank[rootB]) {\r - root[rootA] = rootB;\r - } else if (rank[rootA] > rank[rootB]) {\r - root[rootB] = rootA;\r - } else {\r - root[rootB] = rootA;\r - rank[rootA]++;\r - }\r - }\r - }\r -\r - public boolean connected(int a, int b) {\r - return find(a) == find(b);\r - }\r -\r - @Override\r - public String toString() {\r - int n = root.length;\r - Map> componentMap = new HashMap<>();\r -\r - for (int i = 0; i < n; i++) {\r - int root = find(i);\r -\r - if (!componentMap.containsKey(root)) {\r - componentMap.put(root, new ArrayList<>());\r - }\r -\r - componentMap.get(root).add(i);\r - }\r -\r - StringBuilder sb = new StringBuilder();\r -\r - for (List component : componentMap.values()) {\r - sb.append(" - ").append(component);\r - }\r -\r - return sb.toString();\r - }\r -}\r -`,vx=`#include \r -#include \r -\r -using namespace std;\r -\r -\r -template\r -class Array {\r -private:\r - T* data;\r - size_t size;\r -\r -public:\r - Array(size_t size) : size(size) {\r - data = new T[size];\r - }\r -\r - ~Array() {\r - delete[] data;\r - }\r -\r - T& operator[](size_t index) {\r - if (index >= size) {\r - throw std::out_of_range("Index out of range");\r - }\r - return data[index];\r - }\r -\r - const T& operator[](size_t index) const {\r - if (index >= size) {\r - throw out_of_range("Index out of range");\r - }\r - return data[index];\r - }\r -\r - size_t len() const {\r - return size;\r - }\r -\r - friend ostream& operator<<(ostream& os, const Array& arr) {\r - os << "[";\r - for (size_t i = 0; i < arr.size; ++i) {\r - os << arr.data[i];\r - if (i < arr.size - 1) {\r - os << ", ";\r - }\r - }\r - os << "]";\r - return os;\r - }\r -};\r -`,yx=`#include \r -#include \r -#include \r -\r -using namespace std;\r -\r -\r -template\r -class BinaryTree {\r -private:\r - shared_ptr> root;\r -\r -public:\r - BinaryTree() : root(nullptr) {}\r -\r - void insert(const T& data) {\r - root = insertNode(root, data);\r - }\r -\r - shared_ptr> insertNode(shared_ptr> node, const T& data) {\r - if (!node) {\r - return make_shared>(data);\r - }\r -\r - if (!node->left) {\r - node->left = make_shared>(data);\r - } else if (!node->right) {\r - node->right = make_shared>(data);\r - } else {\r - node->left = insertNode(node->left, data);\r - }\r -\r - return node;\r - }\r -\r - string printTree() const {\r - return root ? printNode(root, "", true) : "Empty tree";\r - }\r -\r - string printNode(const shared_ptr>& node, const string& prefix, bool isLeft) const {\r - string result;\r - if (node) {\r - result += printNode(node->right, prefix + (isLeft ? "│ " : " "), false);\r - result += prefix + (isLeft ? "└── " : "┌── ") + to_string(node->data) + "\\n";\r - result += printNode(node->left, prefix + (isLeft ? " " : "│ "), true);\r - }\r - return result;\r - }\r -};\r -`,xx=`#include \r -#include \r -#include \r -\r -using namespace std;\r -\r -\r -template\r -class BinarySearchTree {\r -private:\r - shared_ptr> root;\r -\r -public:\r - BinarySearchTree() : root(nullptr) {}\r -\r - void insert(const T& data) {\r - if (!root) {\r - root = make_shared>(data);\r - } else {\r - insertNode(root, data);\r - }\r - }\r -\r - void insertNode(shared_ptr>& node, const T& data) {\r - if (data < node->data) {\r - if (!node->left) {\r - node->left = make_shared>(data);\r - } else {\r - insertNode(node->left, data);\r - }\r - } else {\r - if (!node->right) {\r - node->right = make_shared>(data);\r - } else {\r - insertNode(node->right, data);\r - }\r - }\r - }\r -\r - string printTree() const {\r - return root ? printNode(root, "", true) : "Empty tree";\r - }\r -\r - string printNode(const shared_ptr>& node, const string& prefix, bool isLeft) const {\r - string result;\r - if (node) {\r - result += printNode(node->right, prefix + (isLeft ? "│ " : " "), false);\r - result += prefix + (isLeft ? "└── " : "┌── ") + to_string(node->data) + "\\n";\r - result += printNode(node->left, prefix + (isLeft ? " " : "│ "), true);\r - }\r - return result;\r - }\r -};\r -`,_x=`#include \r -\r -using namespace std;\r -\r -\r -template\r -class ListNode {\r -public:\r - T data;\r - ListNode* next;\r -\r - ListNode(const T& data) : data(data), next(nullptr) {}\r -};\r -\r -template\r -class LinkedList {\r -private:\r - ListNode* head;\r -\r -public:\r - LinkedList() : head(nullptr) {}\r -\r - void append(const T& data) {\r - if (!head) {\r - head = new ListNode(data);\r - return;\r - }\r -\r - ListNode* curr = head;\r -\r - while (curr->next) {\r - curr = curr->next;\r - }\r -\r - curr->next = new ListNode(data);\r - }\r -\r - void deleteNode(const T& data) {\r - if (!head) {\r - return;\r - }\r -\r - if (head->data == data) {\r - ListNode* temp = head;\r - head = head->next;\r - delete temp;\r - return;\r - }\r -\r - ListNode* prev = nullptr;\r - ListNode* curr = head;\r -\r - while (curr) {\r - if (curr->data == data) {\r - prev->next = curr->next;\r - delete curr;\r - return;\r - }\r -\r - prev = curr;\r - curr = curr->next;\r - }\r - }\r -\r - void reverse() {\r - ListNode* prev = nullptr;\r - ListNode* curr = head;\r -\r - while (curr) {\r - ListNode* nextNode = curr->next;\r - curr->next = prev;\r - prev = curr;\r - curr = nextNode;\r - }\r -\r - head = prev;\r - }\r -\r - ~LinkedList() {\r - ListNode* curr = head;\r -\r - while (curr) {\r - ListNode* temp = curr;\r - curr = curr->next;\r - delete temp;\r - }\r - }\r -\r - void display() {\r - ListNode* curr = head;\r -\r - while (curr) {\r - cout << "[" << curr->data << "]";\r - if (curr->next) {\r - cout << " -> ";\r - }\r - curr = curr->next;\r - }\r -\r - cout << " -> None" << endl;\r - }\r -};\r -`,wx=`#include \r -#include \r -#include \r -\r -using namespace std;\r -\r -\r -template\r -class ListNode {\r -public:\r - T data;\r - shared_ptr> prev;\r - shared_ptr> next;\r -\r - ListNode(const T& data) : data(data), prev(nullptr), next(nullptr) {}\r -};\r -\r -template\r -class DoublyLinkedList {\r -private:\r - shared_ptr> head;\r -\r -public:\r - DoublyLinkedList() : head(nullptr) {}\r -\r - void append(const T& data) {\r - if (!head) {\r - head = make_shared>(data);\r - return;\r - }\r -\r - auto curr = head;\r -\r - while (curr->next) {\r - curr = curr->next;\r - }\r -\r - auto new_node = make_shared>(data);\r - curr->next = new_node;\r - new_node->prev = curr;\r - }\r -\r - void deleteNode(const T& data) {\r - if (!head) {\r - return;\r - }\r -\r - if (head->data == data) {\r - head = head->next;\r - if (head) {\r - head->prev = nullptr;\r - }\r - return;\r - }\r -\r - auto curr = head;\r -\r - while (curr) {\r - if (curr->data == data) {\r - auto prev_node = curr->prev;\r - prev_node->next = curr->next;\r -\r - if (curr->next) {\r - curr->next->prev = prev_node;\r - }\r -\r - return;\r - }\r - curr = curr->next;\r - }\r - }\r -\r - void reverse() {\r - auto curr = head;\r - shared_ptr> prev = nullptr;\r -\r - while (curr) {\r - auto next_node = curr->next;\r - curr->next = prev;\r - curr->prev = next_node;\r - prev = curr;\r - curr = next_node;\r - }\r -\r - head = prev;\r - }\r -\r - string toString() const {\r - if (!head) {\r - return "None";\r - }\r -\r - string result;\r - auto curr = head;\r -\r - while (curr) {\r - result += "[" + to_string(curr->data) + "]";\r -\r - if (curr->next) {\r - result += " <-> ";\r - }\r -\r - curr = curr->next;\r - }\r -\r - result += " <-> None";\r - return result;\r - }\r -};\r -`,Sx=`#include \r -#include \r -#include \r -#include \r -\r -using namespace std;\r -\r -\r -class Graph {\r -private:\r - unordered_map> graph;\r -\r -public:\r - Graph() {}\r -\r - void addVertex(const string& vertex) {\r - if (graph.find(vertex) == graph.end()) {\r - graph[vertex] = {};\r - }\r - }\r -\r - void addEdge(const string& a, const string& b) {\r - addVertex(a);\r - addVertex(b);\r - graph[a].push_back(b);\r - graph[b].push_back(a);\r - }\r -\r - vector getNeighbors(const string& vertex) {\r - return graph[vertex];\r - }\r -\r - string toString() {\r - string output;\r -\r - for (const auto& [vertex, neighbors] : graph) {\r - output += vertex + " - ";\r -\r - for (const auto& neighbor : neighbors) {\r - output += neighbor + " - ";\r - }\r -\r - output.pop_back();\r - output.pop_back();\r - output += "\\n";\r - }\r -\r - return output;\r - }\r -};\r -`,jx=`#include \r -#include \r -\r -using namespace std;\r -\r -\r -template\r -class HashMap {\r -private:\r - const size_t size = 100000;\r - vector> buckets[size];\r -\r - size_t hash(const KeyType& key) {\r - return hash{}(key) % size;\r - }\r -\r -public:\r - HashMap() {}\r -\r - void setItem(const KeyType& key, const ValueType& value) {\r - size_t index = hash(key);\r -\r - for (auto& pair : buckets[index]) {\r - if (pair.first == key) {\r - pair.second = value;\r - return;\r - }\r - }\r -\r - buckets[index].emplace_back(key, value);\r - }\r -\r - ValueType& getItem(const KeyType& key) {\r - size_t index = hash(key);\r -\r - for (auto& pair : buckets[index]) {\r - if (pair.first == key) {\r - return pair.second;\r - }\r - }\r -\r - throw out_of_range("Key not found");\r - }\r -\r - void delItem(const KeyType& key) {\r - size_t index = hash(key);\r -\r - for (auto it = buckets[index].begin(); it != buckets[index].end(); ++it) {\r - if (it->first == key) {\r - buckets[index].erase(it);\r - return;\r - }\r - }\r - }\r -};\r -`,Tx=`#include \r -#include \r -#include \r -#include \r -\r -using namespace std;\r -\r -\r -class TrieNode {\r -public:\r - unordered_map> children;\r - bool is_word;\r -\r - TrieNode() : is_word(false) {}\r -};\r -\r -class Trie {\r -private:\r - shared_ptr root;\r -\r -public:\r - Trie() : root(make_shared()) {}\r -\r - void build(const vector& words) {\r - for (const auto& word : words) {\r - insert(word);\r - }\r - }\r -\r - void insert(const string& word) {\r - shared_ptr node = root;\r -\r - for (char ch : word) {\r - if (node->children.find(ch) == node->children.end()) {\r - node->children[ch] = make_shared();\r - }\r - node = node->children[ch];\r - }\r -\r - node->is_word = true;\r - }\r -\r - bool search(const string& word) {\r - shared_ptr node = root;\r -\r - for (char ch : word) {\r - if (node->children.find(ch) == node->children.end()) {\r - return false;\r - }\r - node = node->children[ch];\r - }\r -\r - return node->is_word;\r - }\r -\r - bool startsWith(const string& prefix) {\r - shared_ptr node = root;\r -\r - for (char ch : prefix) {\r - if (node->children.find(ch) == node->children.end()) {\r - return false;\r - }\r - node = node->children[ch];\r - }\r -\r - return true;\r - }\r -\r - vector collectWords(shared_ptr node, const string& prefix) {\r - vector words;\r -\r - if (node->is_word) {\r - words.push_back(prefix);\r - }\r -\r - for (const auto& [ch, childNode] : node->children) {\r - auto childWords = collectWords(childNode, prefix + ch);\r - words.insert(words.end(), childWords.begin(), childWords.end());\r - }\r -\r - return words;\r - }\r -\r - vector collectWords() {\r - return collectWords(root, "");\r - }\r -};\r -`,bx=`#include \r -#include \r -#include \r -\r -using namespace std;\r -\r -\r -class UnionFind {\r -private:\r - vector root;\r -\r -public:\r - UnionFind(int n) : root(n) {\r - for (int i = 0; i < n; ++i) {\r - root[i] = i;\r - }\r - }\r -\r - int find(int a) {\r - return a == root[a] ? a : root[a] = find(root[a]);\r - }\r -\r - void unionSets(int a, int b) {\r - root[find(a)] = find(b);\r - }\r -\r - bool connected(int a, int b) {\r - return find(a) == find(b);\r - }\r -\r - string toString() {\r - int n = root.size();\r - vector> components(n);\r -\r - for (int i = 0; i < n; ++i) {\r - components[find(i)].push_back(i);\r - }\r -\r - string result;\r -\r - for (const auto& component : components) {\r - if (!component.empty()) {\r - for (int node : component) {\r - result += "(" + to_string(node) + ") - ";\r - }\r - result.pop_back();\r - result.pop_back();\r - result += "\\n";\r - }\r - }\r -\r - return result;\r - }\r -};\r -`,kx=`#include \r -#include \r -#include \r -\r -using namespace std;\r -\r -\r -class UnionFind {\r -private:\r - vector root;\r - vector rank;\r -\r -public:\r - UnionFind(int n) : root(n), rank(n, 1) {\r - for (int i = 0; i < n; ++i) {\r - root[i] = i;\r - }\r - }\r -\r - int find(int a) {\r - return a == root[a] ? a : root[a] = find(root[a]);\r - }\r -\r - void unionSets(int a, int b) {\r - int rootA = find(a);\r - int rootB = find(b);\r -\r - if (rootA != rootB) {\r - if (rank[rootA] < rank[rootB]) {\r - root[rootA] = rootB;\r - } else if (rank[rootA] > rank[rootB]) {\r - root[rootB] = rootA;\r - } else {\r - root[rootB] = rootA;\r - rank[rootA]++;\r - }\r - }\r - }\r -\r - bool connected(int a, int b) {\r - return find(a) == find(b);\r - }\r -\r - string toString() {\r - int n = root.size();\r - vector> components(n);\r -\r - for (int i = 0; i < n; ++i) {\r - components[find(i)].push_back(i);\r - }\r -\r - string result;\r -\r - for (const auto& component : components) {\r - if (!component.empty()) {\r - for (int node : component) {\r - result += "(" + to_string(node) + ") - ";\r - }\r - result.pop_back();\r - result.pop_back();\r - result += "\\n";\r - }\r - }\r -\r - return result;\r - }\r -};\r -`;function Ex(){return i.jsxs("div",{className:un.container,children:[i.jsx("h2",{className:un.sectionHeader,children:"Data Structures"}),i.jsx("section",{id:"ds-array",children:i.jsxs(c,{title:"array",children:[i.jsx(c.Tab,{code:Uy,language:"python"}),i.jsx(c.Tab,{code:qy,language:"javascript"}),i.jsx(c.Tab,{code:sx,language:"java"}),i.jsx(c.Tab,{code:vx,language:"cpp"})]})}),i.jsx("section",{id:"ds-hash-map",children:i.jsxs(c,{title:"hash map",children:[i.jsx(c.Tab,{code:Gy,language:"python"}),i.jsx(c.Tab,{code:tx,language:"javascript"}),i.jsx(c.Tab,{code:px,language:"java"}),i.jsx(c.Tab,{code:jx,language:"cpp"})]})}),i.jsx("section",{id:"ds-linked-list",children:i.jsxs(c,{title:"linked list",children:[i.jsx(c.Tab,{code:Wy,language:"python"}),i.jsx(c.Tab,{code:nx,language:"javascript"}),i.jsx(c.Tab,{code:cx,language:"java"}),i.jsx(c.Tab,{code:_x,language:"cpp"})]})}),i.jsx("section",{id:"ds-doubly-linked-list",children:i.jsxs(c,{title:"doubly linked list",children:[i.jsx(c.Tab,{code:Vy,language:"python"}),i.jsx(c.Tab,{code:rx,language:"javascript"}),i.jsx(c.Tab,{code:dx,language:"java"}),i.jsx(c.Tab,{code:wx,language:"cpp"})]})}),i.jsx("section",{id:"ds-binary-tree",children:i.jsxs(c,{title:"binary tree",children:[i.jsx(c.Tab,{code:Hy,language:"python"}),i.jsx(c.Tab,{code:Xy,language:"javascript"}),i.jsx(c.Tab,{code:lx,language:"java"}),i.jsx(c.Tab,{code:yx,language:"cpp"})]})}),i.jsx("section",{id:"ds-binary-search-tree",children:i.jsxs(c,{title:"binary search tree",children:[i.jsx(c.Tab,{code:$y,language:"python"}),i.jsx(c.Tab,{code:Zy,language:"javascript"}),i.jsx(c.Tab,{code:ux,language:"java"}),i.jsx(c.Tab,{code:xx,language:"cpp"})]})}),i.jsx("section",{id:"ds-graph",children:i.jsxs(c,{title:"graph",children:[i.jsx(c.Tab,{code:Ky,language:"python"}),i.jsx(c.Tab,{code:ex,language:"javascript"}),i.jsx(c.Tab,{code:fx,language:"java"}),i.jsx(c.Tab,{code:Sx,language:"cpp"})]})}),i.jsx("section",{id:"ds-union-find",children:i.jsxs(c,{title:"union find",children:[i.jsx(c.Tab,{code:Yy,language:"python"}),i.jsx(c.Tab,{code:ox,language:"javascript"}),i.jsx(c.Tab,{code:gx,language:"java"}),i.jsx(c.Tab,{code:bx,language:"cpp"})]})}),i.jsx("section",{id:"ds-union-find-optimized",children:i.jsxs(c,{title:"union find optimized",children:[i.jsx(c.Tab,{code:Qy,language:"python"}),i.jsx(c.Tab,{code:ax,language:"javascript"}),i.jsx(c.Tab,{code:mx,language:"java"}),i.jsx(c.Tab,{code:kx,language:"cpp"})]})}),i.jsx("section",{id:"ds-trie",children:i.jsxs(c,{title:"trie",children:[i.jsx(c.Tab,{code:Jy,language:"python"}),i.jsx(c.Tab,{code:ix,language:"javascript"}),i.jsx(c.Tab,{code:hx,language:"java"}),i.jsx(c.Tab,{code:Tx,language:"cpp"})]})})]})}const Nx=`import random\r -\r -\r -def bogo_sort(arr: list) -> None:\r - target = sorted(arr)\r -\r - while arr != target:\r - random.shuffle(arr)\r -`,Ox=`def bubble_sort(arr: list) -> None:\r - n = len(arr)\r -\r - for i in range(n):\r - swapped = False\r -\r - for j in range(0, n - i - 1):\r - if arr[j] > arr[j + 1]:\r - arr[j], arr[j + 1] = arr[j + 1], arr[j]\r - swapped = True\r -\r - if not swapped:\r - break\r -`,Ax=`def bucket_sort(arr: list) -> list:\r - num_buckets = 10\r - min_num = min(arr)\r - max_num = max(arr)\r - bucket_size = (max_num - min_num) / num_buckets\r - buckets = [[] for _ in range(num_buckets)]\r -\r - for num in arr:\r - index = min(int((num - min_num) / bucket_size), num_buckets - 1)\r - buckets[index].append(num)\r -\r - return [num for bucket in buckets for num in sorted(bucket)]\r -`,Cx=`def counting_sort(arr: list) -> list:\r - max_num = max(arr)\r - min_num = min(arr)\r - count_range = max_num - min_num + 1\r - count = [0] * count_range\r - output = [0] * len(arr)\r -\r - for num in arr:\r - count[num - min_num] += 1\r -\r - for i in range(1, count_range):\r - count[i] += count[i - 1]\r -\r - for num in arr[::-1]:\r - output[count[num - min_num] - 1] = num\r - count[num - min_num] -= 1\r -\r - return output\r -`,Lx=`def cube_sort(arr: list, processors: int) -> None:\r - n = len(arr)\r - subarrays = []\r - subarray_size = n // processors\r -\r - for i in range(processors):\r - subarray = arr[i * subarray_size : (i + 1) * subarray_size]\r - subarrays.append(subarray)\r -\r - for subarray in subarrays:\r - subarray.sort()\r -\r - for dimension in range(processors.bit_length() - 1):\r - for i in range(processors):\r - partner = i ^ (1 << dimension)\r - if i < partner:\r - merged = subarrays[i] + subarrays[partner]\r - else:\r - merged = subarrays[partner] + subarrays[i]\r - merged.sort()\r - subarrays[i] = merged[:subarray_size]\r - subarrays[partner] = merged[subarray_size:]\r -\r - arr[:] = [num for subarray in subarrays for num in subarray]\r -`,Px=`def heap_sort(arr: list) -> list:\r - n = len(arr)\r -\r - for i in range(n // 2 - 1, -1, -1):\r - heapify(arr, n, i)\r - for i in range(n - 1, 0, -1):\r - arr[i], arr[0] = arr[0], arr[i]\r - heapify(arr, i, 0)\r -\r - return arr\r -\r -def heapify(arr: list, n: int, i: int) -> None:\r - largest = i\r - left = 2 * i + 1\r - right = 2 * i + 2\r -\r - if left < n and arr[left] > arr[largest]:\r - largest = left\r - if right < n and arr[right] > arr[largest]:\r - largest = right\r - if largest != i:\r - arr[i], arr[largest] = arr[largest], arr[i]\r - heapify(arr, n, largest)\r -`,Mx=`def insertion_sort(arr: list) -> None:\r - n = len(arr)\r -\r - for i in range(1, n):\r - key = arr[i]\r -\r - while i > 0 and key < arr[i - 1]:\r - arr[i] = arr[i - 1]\r - i -= 1\r -\r - arr[i] = key\r -`,Rx=`def merge_sort(arr: list) -> list:\r - n = len(arr)\r -\r - if n <= 1:\r - return arr\r -\r - mid = n // 2\r - left = merge_sort(arr[:mid])\r - right = merge_sort(arr[mid:])\r -\r - return merge(left, right)\r -\r -def merge(left: list, right: list) -> list:\r - output = []\r -\r - while left and right:\r - min_num = left.pop(0) if left[0] <= right[0] else right.pop(0)\r - output.append(min_num)\r -\r - output.extend(left)\r - output.extend(right)\r -\r - return output\r -`,Ix=`def pancake_sort(arr: list) -> None:\r - n = len(arr)\r -\r - for size in reversed(range(2, n + 1)):\r - max_idx = find_max_index(arr, size)\r -\r - if max_idx != size - 1:\r - flip(arr, max_idx)\r - flip(arr, size - 1)\r -\r -def flip(arr: list, i: int) -> None:\r - left = 0\r -\r - while left < i:\r - arr[left], arr[i] = arr[i], arr[left]\r - left += 1\r - i -= 1\r -\r -def find_max_index(arr: list, n: int) -> int:\r - max_idx = 0\r -\r - for i in range(n):\r - if arr[i] > arr[max_idx]:\r - max_idx = i\r -\r - return max_idx\r -`,Dx=`def quick_sort(arr: list) -> list:\r - n = len(arr)\r -\r - if n <= 1:\r - return arr\r -\r - pivot = arr[n // 2]\r - left = [x for x in arr if x < pivot]\r - right = [x for x in arr if x > pivot]\r -\r - return quick_sort(left) + [pivot] + quick_sort(right)\r -`,Bx=`def radix_sort(arr: list) -> None:\r - max_val = max(arr)\r - exp = 1\r -\r - while max_val // exp > 0:\r - counting_sort(arr, exp)\r - exp *= 10\r -\r -def counting_sort(arr: list, exp: int) -> None:\r - n = len(arr)\r - output = [0] * n\r - count = [0] * 10\r -\r - for i in range(n):\r - idx = arr[i] // exp\r - count[idx % 10] += 1\r -\r - for i in range(1, 10):\r - count[i] += count[i - 1]\r -\r - i = n - 1\r -\r - while i >= 0:\r - idx = arr[i] // exp\r - output[count[idx % 10] - 1] = arr[i]\r - count[idx % 10] -= 1\r - i -= 1\r -\r - for i in range(n):\r - arr[i] = output[i]\r -`,zx=`def selection_sort(arr: list) -> None:\r - n = len(arr)\r -\r - for i in range(n):\r - min_i = i\r -\r - for j in range(i + 1, n):\r - if arr[j] < arr[min_i]:\r - min_i = j\r -\r - if min_i != i:\r - arr[i], arr[min_i] = arr[min_i], arr[i]\r -`,Fx=`def shell_sort(arr: list) -> None:\r - n = len(arr)\r - gaps = [701, 301, 132, 57, 23, 10, 4, 1]\r -\r - for gap in gaps:\r - for i in range(gap, n):\r - tmp = arr[i]\r - j = i\r -\r - while j >= gap and arr[j - gap] > tmp:\r - arr[j] = arr[j - gap]\r - j -= gap\r -\r - if j != i:\r - arr[j] = tmp\r -`,Ux=`from threading import Thread\r -from time import sleep\r -\r -\r -def sleep_sort(arr: list ) -> list:\r - sorted_arr = []\r - threads = []\r -\r - for num in arr:\r - thread = Thread(target=snorlax, args=(num, sorted_arr))\r - threads.append(thread)\r -\r - for thread in threads:\r - thread.start( )\r -\r - for thread in threads:\r - thread.join()\r -\r - return sorted_arr\r -\r -def snorlax(num: float, arr: list) -> None:\r - sleep(num / 1000.0)\r - arr.append(num)\r -`,Hx=`def tim_sort(arr: list) -> list:\r - n = len(arr)\r - min_run = 32\r -\r - for start in range(0, n, min_run):\r - end = min(start + min_run - 1, n - 1)\r - insertion_sort(arr, start, end)\r -\r - size = min_run\r -\r - while size < n:\r - for left in range(0, n, 2 * size):\r - mid = min(n - 1, left + size - 1)\r - right = min((left + 2 * size - 1), (n - 1))\r - arr[left : right + 1] = merge(arr[left : mid + 1], arr[mid + 1 : right + 1])\r - size *= 2\r -\r - return arr\r -\r -def insertion_sort(arr: list, left: int, right: int) -> None:\r - for i in range(left + 1, right + 1):\r - key = arr[i]\r -\r - while i > 0 and key < arr[i - 1]:\r - arr[i] = arr[i - 1]\r - i -= 1\r -\r - arr[i] = key\r -\r -def merge_sort(arr: list) -> list:\r - n = len(arr)\r -\r - if n <= 1:\r - return arr\r -\r - mid = n // 2\r - left = merge_sort(arr[:mid])\r - right = merge_sort(arr[mid:])\r -\r - return merge(left, right)\r -\r -def merge(left: list, right: list) -> list:\r - output = []\r -\r - while left and right:\r - min_num = left.pop(0) if left[0] <= right[0] else right.pop(0)\r - output.append(min_num)\r -\r - output.extend(left)\r - output.extend(right)\r -\r - return output\r -`,$x=`const bogoSort = (arr) => {\r - const isSorted = (arr) => {\r - for (let i = 0; i < arr.length - 1; i++) {\r - if (arr[i] > arr[i + 1]) {\r - return false\r - }\r - }\r -\r - return true\r - }\r -\r - const shuffleArray = (arr) => {\r - for (let i = arr.length - 1; i > 0; i--) {\r - const j = Math.floor(Math.random() * (i + 1))\r - [arr[i], arr[j]] = [arr[j], arr[i]]\r - }\r -\r - return arr\r - }\r -\r - while (!isSorted(arr)) {\r - arr = shuffleArray(arr)\r - }\r -}\r -`,Wx=`const bubbleSort = (arr) => {\r - const n = arr.length\r -\r - for (let i = 0; i < n; i++) {\r - let swapped = false\r -\r - for (let j = 0; j < n - i - 1; j++) {\r - if (arr[j] > arr[j + 1]) {\r - [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]\r - swapped = true\r - }\r - }\r -\r - if (!swapped) {\r - break\r - }\r - }\r -}\r -`,Vx=`const bucketSort = (arr) => {\r - const num_buckets = 10\r - const min_num = Math.min(...arr)\r - const max_num = Math.max(...arr)\r - const bucket_size = (max_num - min_num) / num_buckets\r - const buckets = Array.from({ length: num_buckets }, () => [])\r -\r - for (const num of arr) {\r - const index = Math.min(Math.floor((num - min_num) / bucket_size), num_buckets - 1)\r - buckets[index].push(num)\r - }\r -\r - return buckets.flatMap(bucket => bucket.sort((a, b) => a - b))\r -}\r -`,Kx=`const countingSort = (arr) => {\r - const max_num = Math.max(...arr)\r - const min_num = Math.min(...arr)\r - const count_range = max_num - min_num + 1\r - const count = Array(count_range).fill(0)\r - const output = Array(arr.length)\r -\r - for (const num of arr) {\r - count[num - min_num]++\r - }\r -\r - for (let i = 1; i < count_range; i++) {\r - count[i] += count[i - 1]\r - }\r -\r - for (let i = arr.length - 1; i >= 0; i--) {\r - output[count[arr[i] - min_num] - 1] = arr[i]\r - count[arr[i] - min_num]--\r - }\r -\r - return output\r -}\r -`,Gx=`const cubeSort = (arr, processors) => {\r - const n = arr.length\r - const subarrays = []\r - const subarraySize = Math.floor(n / processors)\r -\r - for (let i = 0; i < processors; i++) {\r - const subarray = arr.slice(i * subarraySize, (i + 1) * subarraySize)\r - subarray.sort((a, b) => a - b)\r - subarrays.push(subarray)\r - }\r -\r - for (let dimension = 0; dimension < Math.floor(Math.log2(processors)); dimension++) {\r - for (let i = 0; i < processors; i++) {\r - const partner = i ^ (1 << dimension)\r - if (i < partner) {\r - const merged = subarrays[i].concat(subarrays[partner])\r - merged.sort((a, b) => a - b)\r - subarrays[i] = merged.slice(0, subarraySize)\r - subarrays[partner] = merged.slice(subarraySize)\r - }\r - }\r - }\r -\r - arr.splice(0, arr.length, ...subarrays.flat())\r -}\r -`,Jx=`const heapSort = (arr) => {\r - const n = arr.length\r -\r - const heapify = (arr, n, i) => {\r - let largest = i\r - const left = 2 * i + 1\r - const right = 2 * i + 2\r -\r - if (left < n && arr[left] > arr[largest]) {\r - largest = left\r - }\r - if (right < n && arr[right] > arr[largest]) {\r - largest = right\r - }\r - if (largest !== i) {\r - [arr[i], arr[largest]] = [arr[largest], arr[i]]\r - heapify(arr, n, largest)\r - }\r - }\r -\r - for (let i = Math.floor(n / 2) - 1; i >= 0; i--) {\r - heapify(arr, n, i)\r - }\r - for (let i = n - 1; i > 0; i--) {\r - [arr[i], arr[0]] = [arr[0], arr[i]]\r - heapify(arr, i, 0)\r - }\r -\r - return arr\r -}\r -`,Yx=`const insertionSort = (arr) => {\r - const n = arr.length\r -\r - for (let i = 1; i < n; i++) {\r - let key = arr[i]\r - let j = i - 1\r -\r - while (j >= 0 && key < arr[j]) {\r - arr[j + 1] = arr[j]\r - j--\r - }\r -\r - arr[j + 1] = key\r - }\r -}\r -`,Qx=`const mergeSort = (arr) => {\r - const n = arr.length\r -\r - if (n <= 1) {\r - return arr\r - }\r -\r - const mid = Math.floor(n / 2)\r - const left = mergeSort(arr.slice(0, mid))\r - const right = mergeSort(arr.slice(mid))\r -\r - return merge(left, right)\r -}\r -\r -const merge = (left, right) => {\r - const output = []\r -\r - while (left.length && right.length) {\r - const minNum = left[0] <= right[0] ? left.shift() : right.shift()\r - output.push(minNum)\r - }\r -\r - output.push(...left)\r - output.push(...right)\r -\r - return output\r -}\r -`,qx=`const pancakeSort = (arr) => {\r - const n = arr.length\r -\r - for (let size = n; size > 1; size--) {\r - const maxIdx = findMaxIndex(arr, size)\r -\r - if (maxIdx !== size - 1) {\r - flip(arr, maxIdx)\r - flip(arr, size - 1)\r - }\r - }\r -}\r -\r -const flip = (arr, i) => {\r - let left = 0\r -\r - while (left < i) {\r - [arr[left], arr[i]] = [arr[i], arr[left]]\r - left++\r - i--\r - }\r -}\r -\r -const findMaxIndex = (arr, n) => {\r - let maxIdx = 0\r -\r - for (let i = 0; i < n; i++) {\r - if (arr[i] > arr[maxIdx]) {\r - maxIdx = i\r - }\r - }\r -\r - return maxIdx\r -}\r -`,Xx=`const quickSort = (arr) => {\r - const n = arr.length\r -\r - if (n <= 1) {\r - return arr\r - }\r -\r - const pivot = arr[Math.floor(n / 2)]\r - const left = arr.filter(x => x < pivot)\r - const right = arr.filter(x => x > pivot)\r -\r - return [...quickSort(left), pivot, ...quickSort(right)]\r -}\r -`,Zx=`const radixSort = (arr) => {\r - const maxVal = Math.max(...arr)\r - let exp = 1\r -\r - while (maxVal / exp > 0) {\r - countingSort(arr, exp)\r - exp *= 10\r - }\r -}\r -\r -const countingSort = (arr, exp) => {\r - const n = arr.length\r - const output = new Array(n).fill(0)\r - const count = new Array(10).fill(0)\r -\r - for (let i = 0; i < n; i++) {\r - const idx = Math.floor(arr[i] / exp)\r - count[idx % 10] += 1\r - }\r -\r - for (let i = 1; i < 10; i++) {\r - count[i] += count[i - 1]\r - }\r -\r - let i = n - 1\r -\r - while (i >= 0) {\r - const idx = Math.floor(arr[i] / exp)\r - output[count[idx % 10] - 1] = arr[i]\r - count[idx % 10] -= 1\r - i -= 1\r - }\r -\r - for (let i = 0; i < n; i++) {\r - arr[i] = output[i]\r - }\r -}\r -`,n_=`const selectionSort = (arr) => {\r - const n = arr.length\r -\r - for (let i = 0; i < n; i++) {\r - let minIndex = i\r -\r - for (let j = i + 1; j < n; j++) {\r - if (arr[j] < arr[minIndex]) {\r - minIndex = j\r - }\r - }\r -\r - if (minIndex !== i) {\r - [arr[i], arr[minIndex]] = [arr[minIndex], arr[i]]\r - }\r - }\r -}\r -`,r_=`const shellSort = (arr) => {\r - const n = arr.length\r - const gaps = [701, 301, 132, 57, 23, 10, 4, 1]\r -\r - for (const gap of gaps) {\r - for (let i = gap; i < n; i++) {\r - const tmp = arr[i]\r - let j = i\r -\r - while (j >= gap && arr[j - gap] > tmp) {\r - arr[j] = arr[j - gap]\r - j -= gap\r - }\r -\r - if (j !== i) {\r - arr[j] = tmp\r - }\r - }\r - }\r -}\r -`,e_=`const sleepSort = (arr) => {\r - const sortedArr = []\r - const promises = []\r -\r - for (const num of arr) {\r - promises.push(new Promise((resolve) => setTimeout(() => {\r - sortedArr.push(num)\r - resolve()\r - }, num)))\r - }\r -\r - return Promise.all(promises).then(() => sortedArr)\r -}\r -`,t_=`const timSort = (arr) => {\r - const n = arr.length\r - const minRun = 32\r -\r - for (let start = 0; start < n; start += minRun) {\r - const end = Math.min(start + minRun - 1, n - 1)\r - insertionSort(arr, start, end)\r - }\r -\r - let size = minRun\r -\r - while (size < n) {\r - for (let left = 0; left < n; left += 2 * size) {\r - const mid = Math.min(n - 1, left + size - 1)\r - const right = Math.min((left + 2 * size - 1), (n - 1))\r - const merged = merge(arr.slice(left, mid + 1), arr.slice(mid + 1, right + 1))\r - arr.splice(left, right - left + 1, ...merged)\r - }\r - size *= 2\r - }\r -\r - return arr\r -}\r -\r -const insertionSort = (arr, left, right) => {\r - for (let i = left + 1; i <= right; i++) {\r - const key = arr[i]\r - let j = i\r -\r - while (j > left && key < arr[j - 1]) {\r - arr[j] = arr[j - 1]\r - j--\r - }\r -\r - arr[j] = key\r - }\r -}\r -\r -const mergeSort = (arr) => {\r - const n = arr.length\r -\r - if (n <= 1) {\r - return arr\r - }\r -\r - const mid = Math.floor(n / 2)\r - const left = mergeSort(arr.slice(0, mid))\r - const right = mergeSort(arr.slice(mid))\r -\r - return merge(left, right)\r -}\r -\r -const merge = (left, right) => {\r - const output = []\r -\r - while (left.length && right.length) {\r - const minNum = left[0] <= right[0] ? left.shift() : right.shift()\r - output.push(minNum)\r - }\r -\r - return output.concat(left).concat(right)\r -}\r -`,i_=`import java.util.Arrays;\r -import java.util.Random;\r -\r -\r -public static void bogoSort(int[] arr) {\r - int[] target = Arrays.copyOf(arr, arr.length);\r - Arrays.sort(target);\r -\r - while (!Arrays.equals(arr, target)) {\r - shuffleArray(arr);\r - }\r -}\r -\r -public static void shuffleArray(int[] arr) {\r - Random rnd = new Random();\r -\r - for (int i = arr.length - 1; i > 0; i--) {\r - int index = rnd.nextInt(i + 1);\r - int temp = arr[index];\r - arr[index] = arr[i];\r - arr[i] = temp;\r - }\r -}\r -`,o_=`public static void bubbleSort(int[] arr) {\r - int n = arr.length;\r -\r - for (int i = 0; i < n; i++) {\r - boolean swapped = false;\r -\r - for (int j = 0; j < n - i - 1; j++) {\r - if (arr[j] > arr[j + 1]) {\r - int temp = arr[j];\r - arr[j] = arr[j + 1];\r - arr[j + 1] = temp;\r - swapped = true;\r - }\r - }\r -\r - if (!swapped) {\r - break;\r - }\r - }\r -}\r -`,a_=`import java.util.ArrayList;\r -import java.util.Arrays;\r -import java.util.Collections;\r -import java.util.List;\r -\r -\r -public static int[] bucketSort(int[] arr) {\r - int numBuckets = 10;\r - int index;\r - int[] result = new int[arr.length];\r - int minNum = Arrays.stream(arr).min().getAsInt();\r - int maxNum = Arrays.stream(arr).max().getAsInt();\r - double bucketSize = (double) (maxNum - minNum) / numBuckets;\r - List> buckets = new ArrayList<>(numBuckets);\r -\r - for (int i = 0; i < numBuckets; i++) {\r - buckets.add(new ArrayList<>());\r - }\r -\r - for (int num : arr) {\r - index = Math.min((int) ((num - minNum) / bucketSize), numBuckets - 1);\r - buckets.get(index).add(num);\r - }\r -\r - index = 0;\r -\r - for (List bucket : buckets) {\r - Collections.sort(bucket);\r -\r - for (int num : bucket) {\r - result[index++] = num;\r - }\r - }\r -\r - return result;\r -}\r -`,s_=`import java.util.Arrays;\r -\r -\r -public static int[] countingSort(int[] arr) {\r - int maxNum = Arrays.stream(arr).max().orElse(Integer.MIN_VALUE);\r - int minNum = Arrays.stream(arr).min().orElse(Integer.MAX_VALUE);\r - int countRange = maxNum - minNum + 1;\r - int[] count = new int[countRange];\r - int[] output = new int[arr.length];\r -\r - for (int num : arr) {\r - count[num - minNum]++;\r - }\r -\r - for (int i = 1; i < countRange; i++) {\r - count[i] += count[i - 1];\r - }\r -\r - for (int i = arr.length - 1; i >= 0; i--) {\r - output[count[arr[i] - minNum] - 1] = arr[i];\r - count[arr[i] - minNum]--;\r - }\r -\r - return output;\r -}\r -`,l_=`import java.util.ArrayList;\r -import java.util.Arrays;\r -import java.util.List;\r -\r -\r -public static void cubeSort(int[] arr, int processors) {\r - int n = arr.length;\r - List subarrays = new ArrayList<>();\r - int subarraySize = (n + processors - 1) / processors;\r -\r - for (int i = 0; i < processors; i++) {\r - int[] subarray = new int[Math.min(subarraySize, n - i * subarraySize)];\r - System.arraycopy(arr, i * subarraySize, subarray, 0, subarray.length);\r - Arrays.sort(subarray);\r - subarrays.add(subarray);\r - }\r -\r - for (int dimension = 0; dimension < Integer.SIZE - 1; dimension++) {\r - for (int i = 0; i < processors; i++) {\r - int partner = i ^ (1 << dimension);\r -\r - if (i < partner && partner < processors) {\r - int[] merged = merge(subarrays.get(i), subarrays.get(partner));\r - System.arraycopy(merged, 0, subarrays.get(i), 0, subarraySize);\r - System.arraycopy(merged, subarraySize, subarrays.get(partner), 0, subarraySize);\r - }\r - }\r - }\r -\r - int index = 0;\r -\r - for (int[] subarray : subarrays) {\r - for (int num : subarray) {\r - arr[index++] = num;\r - }\r - }\r -}\r -\r -public static int[] merge(int[] arr1, int[] arr2) {\r - int[] merged = new int[arr1.length + arr2.length];\r - int i = 0, j = 0, k = 0;\r -\r - while (i < arr1.length && j < arr2.length) {\r - if (arr1[i] < arr2[j]) {\r - merged[k++] = arr1[i++];\r - } else {\r - merged[k++] = arr2[j++];\r - }\r - }\r -\r - while (i < arr1.length) {\r - merged[k++] = arr1[i++];\r - }\r -\r - while (j < arr2.length) {\r - merged[k++] = arr2[j++];\r - }\r -\r - return merged;\r -}\r -`,u_=`public static int[] heapSort(int[] arr) {\r - int n = arr.length;\r -\r - for (int i = n / 2 - 1; i >= 0; i--) {\r - heapify(arr, n, i);\r - }\r -\r - for (int i = n - 1; i > 0; i--) {\r - int temp = arr[0];\r - arr[0] = arr[i];\r - arr[i] = temp;\r -\r - heapify(arr, i, 0);\r - }\r -\r - return arr;\r -}\r -\r -public static void heapify(int[] arr, int n, int i) {\r - int largest = i;\r - int left = 2 * i + 1;\r - int right = 2 * i + 2;\r -\r - if (left < n && arr[left] > arr[largest]) {\r - largest = left;\r - }\r - if (right < n && arr[right] > arr[largest]) {\r - largest = right;\r - }\r - if (largest != i) {\r - int temp = arr[i];\r - arr[i] = arr[largest];\r - arr[largest] = temp;\r -\r - heapify(arr, n, largest);\r - }\r -}\r -`,c_=`public static void insertionSort(int[] arr) {\r - int n = arr.length;\r -\r - for (int i = 1; i < n; i++) {\r - int key = arr[i];\r - int j = i - 1;\r -\r - while (j >= 0 && key < arr[j]) {\r - arr[j + 1] = arr[j];\r - j--;\r - }\r -\r - arr[j + 1] = key;\r - }\r -}\r -`,d_=`import java.util.Arrays;\r -\r -\r -public static int[] mergeSort(int[] arr) {\r - int n = arr.length;\r -\r - if (n <= 1) {\r - return arr;\r - }\r -\r - int mid = n / 2;\r - int[] left = Arrays.copyOfRange(arr, 0, mid);\r - int[] right = Arrays.copyOfRange(arr, mid, n);\r -\r - left = mergeSort(left);\r - right = mergeSort(right);\r -\r - return merge(left, right);\r -}\r -\r -public static int[] merge(int[] left, int[] right) {\r - int[] output = new int[left.length + right.length];\r - int i = 0, j = 0, k = 0;\r -\r - while (i < left.length && j < right.length) {\r - if (left[i] <= right[j]) {\r - output[k++] = left[i++];\r - } else {\r - output[k++] = right[j++];\r - }\r - }\r -\r - while (i < left.length) {\r - output[k++] = left[i++];\r - }\r -\r - while (j < right.length) {\r - output[k++] = right[j++];\r - }\r -\r - return output;\r -}\r -`,f_=`public static void pancakeSort(int[] arr) {\r - int n = arr.length;\r -\r - for (int size = n; size >= 2; size--) {\r - int maxIdx = findMaxIndex(arr, size);\r -\r - if (maxIdx != size - 1) {\r - flip(arr, maxIdx);\r - flip(arr, size - 1);\r - }\r - }\r -}\r -\r -public static void flip(int[] arr, int i) {\r - int left = 0;\r -\r - while (left < i) {\r - int temp = arr[left];\r - arr[left] = arr[i];\r - arr[i] = temp;\r - left++;\r - i--;\r - }\r -}\r -\r -public static int findMaxIndex(int[] arr, int n) {\r - int maxIdx = 0;\r -\r - for (int i = 0; i < n; i++) {\r - if (arr[i] > arr[maxIdx]) {\r - maxIdx = i;\r - }\r - }\r -\r - return maxIdx;\r -}\r -`,p_=`import java.util.ArrayList;\r -import java.util.List;\r -\r -\r -public static int[] quickSort(int[] arr) {\r - int n = arr.length;\r -\r - if (n <= 1) {\r - return arr;\r - }\r -\r - int pivot = arr[n / 2];\r - List left = new ArrayList<>();\r - List right = new ArrayList<>();\r -\r - for (int x : arr) {\r - if (x < pivot) {\r - left.add(x);\r - } else if (x > pivot) {\r - right.add(x);\r - }\r - }\r -\r - int[] sortedLeft = quickSort(left.stream().mapToInt(i -> i).toArray());\r - int[] sortedRight = quickSort(right.stream().mapToInt(i -> i).toArray());\r - int[] result = new int[n];\r -\r - System.arraycopy(sortedLeft, 0, result, 0, sortedLeft.length);\r - result[sortedLeft.length] = pivot;\r - System.arraycopy(sortedRight, 0, result, sortedLeft.length + 1, sortedRight.length);\r -\r - return result;\r -}\r -`,h_=`import java.util.Arrays;\r -\r -\r -public static void radixSort(int[] arr) {\r - int maxVal = Arrays.stream(arr).max().getAsInt();\r - int exp = 1;\r -\r - while (maxVal / exp > 0) {\r - countingSort(arr, exp);\r - exp *= 10;\r - }\r -}\r -\r -public static void countingSort(int[] arr, int exp) {\r - int n = arr.length;\r - int[] output = new int[n];\r - int[] count = new int[10];\r -\r - for (int i = 0; i < n; i++) {\r - int idx = arr[i] / exp;\r - count[idx % 10]++;\r - }\r -\r - for (int i = 1; i < 10; i++) {\r - count[i] += count[i - 1];\r - }\r -\r - for (int i = n - 1; i >= 0; i--) {\r - int idx = arr[i] / exp;\r - output[count[idx % 10] - 1] = arr[i];\r - count[idx % 10]--;\r - }\r -\r - System.arraycopy(output, 0, arr, 0, n);\r -}\r -`,g_=`public static void selectionSort(int[] arr) {\r - int n = arr.length;\r -\r - for (int i = 0; i < n; i++) {\r - int minIdx = i;\r -\r - for (int j = i + 1; j < n; j++) {\r - if (arr[j] < arr[minIdx]) {\r - minIdx = j;\r - }\r - }\r -\r - if (minIdx != i) {\r - int temp = arr[i];\r - arr[i] = arr[minIdx];\r - arr[minIdx] = temp;\r - }\r - }\r -}\r -`,m_=`public static void shellSort(int[] arr) {\r - int n = arr.length;\r - int[] gaps = {701, 301, 132, 57, 23, 10, 4, 1};\r -\r - for (int gap : gaps) {\r - for (int i = gap; i < n; i++) {\r - int tmp = arr[i];\r - int j = i;\r -\r - while (j >= gap && arr[j - gap] > tmp) {\r - arr[j] = arr[j - gap];\r - j -= gap;\r - }\r -\r - if (j != i) {\r - arr[j] = tmp;\r - }\r - }\r - }\r -}\r -`,v_=`import java.util.ArrayList;\r -import java.util.List;\r -\r -\r -public static int[] sleepSort(int[] arr) {\r - List sortedArr = new ArrayList<>();\r - List threads = new ArrayList<>();\r -\r - for (int num : arr) {\r - Thread thread = new Thread(() -> snorlax(num, sortedArr));\r - threads.add(thread);\r - }\r -\r - for (Thread thread : threads) {\r - thread.start();\r - }\r -\r - for (Thread thread : threads) {\r - try {\r - thread.join();\r - } catch (InterruptedException e) {\r - e.printStackTrace();\r - }\r - }\r -\r - return sortedArr.stream().mapToInt(i -> i).toArray();\r -}\r -\r -public static void snorlax(int num, List arr) {\r - try {\r - Thread.sleep(num);\r - } catch (InterruptedException e) {\r - e.printStackTrace();\r - }\r - arr.add(num);\r -}\r -`,y_=`public static int[] timSort(int[] arr) {\r - int n = arr.length;\r - int minRun = 32;\r -\r - for (int start = 0; start < n; start += minRun) {\r - int end = Math.min(start + minRun - 1, n - 1);\r - insertionSort(arr, start, end);\r - }\r -\r - int size = minRun;\r -\r - while (size < n) {\r - for (int left = 0; left < n; left += 2 * size) {\r - int mid = Math.min(n - 1, left + size - 1);\r - int right = Math.min(left + 2 * size - 1, n - 1);\r - arr = merge(arr, left, mid, right);\r - }\r - size *= 2;\r - }\r -\r - return arr;\r -}\r -\r -public static void insertionSort(int[] arr, int left, int right) {\r - for (int i = left + 1; i <= right; i++) {\r - int key = arr[i];\r - int j = i - 1;\r -\r - while (j >= left && key < arr[j]) {\r - arr[j + 1] = arr[j];\r - j--;\r - }\r -\r - arr[j + 1] = key;\r - }\r -}\r -\r -public static int[] merge(int[] arr, int left, int mid, int right) {\r - int[] output = new int[right - left + 1];\r - int i = left, j = mid + 1, k = 0;\r -\r - while (i <= mid && j <= right) {\r - if (arr[i] <= arr[j]) {\r - output[k++] = arr[i++];\r - } else {\r - output[k++] = arr[j++];\r - }\r - }\r -\r - while (i <= mid) {\r - output[k++] = arr[i++];\r - }\r -\r - while (j <= right) {\r - output[k++] = arr[j++];\r - }\r -\r - System.arraycopy(output, 0, arr, left, output.length);\r - return arr;\r -}\r -`,x_=`#include \r -#include \r -#include \r -\r -using namespace std;\r -\r -\r -void BogoSort(vector& arr) {\r - vector target = arr;\r - sort(target.begin(), target.end());\r -\r - random_device rd;\r - mt19937 g(rd());\r -\r - while (!is_sorted(arr.begin(), arr.end())) {\r - shuffle(arr.begin(), arr.end(), g);\r - }\r -}\r -`,__=`#include \r -\r -using namespace std;\r -\r -\r -void BubbleSort(vector& arr) {\r - int n = arr.size();\r -\r - for (int i = 0; i < n; ++i) {\r - bool swapped = false;\r -\r - for (int j = 0; j < n - i - 1; ++j) {\r - if (arr[j] > arr[j + 1]) {\r - std::swap(arr[j], arr[j + 1]);\r - swapped = true;\r - }\r - }\r -\r - if (!swapped) {\r - break;\r - }\r - }\r -}\r -`,w_=`#include \r -#include \r -\r -using namespace std;\r -\r -\r -vector BucketSort(vector& arr) {\r - int num_buckets = 10;\r - int min_num = *min_element(arr.begin(), arr.end());\r - int max_num = *max_element(arr.begin(), arr.end());\r - double bucket_size = static_cast(max_num - min_num) / num_buckets;\r - vector> buckets(num_buckets);\r - vector result;\r -\r - for (int num : arr) {\r - int index = min(static_cast((num - min_num) / bucket_size), num_buckets - 1);\r - buckets[index].push_back(num);\r - }\r -\r - for (auto& bucket : buckets) {\r - sort(bucket.begin(), bucket.end());\r - result.insert(result.end(), bucket.begin(), bucket.end());\r - }\r -\r - return result;\r -}\r -`,S_=`#include \r -#include \r -\r -using namespace std;\r -\r -\r -vector CountingSort(vector& arr) {\r - int max_num = *max_element(arr.begin(), arr.end());\r - int min_num = *min_element(arr.begin(), arr.end());\r - int count_range = max_num - min_num + 1;\r - vector count(count_range, 0);\r - vector output(arr.size(), 0);\r -\r - for (int num : arr) {\r - count[num - min_num]++;\r - }\r -\r - for (int i = 1; i < count_range; ++i) {\r - count[i] += count[i - 1];\r - }\r -\r - for (int i = arr.size() - 1; i >= 0; --i) {\r - output[count[arr[i] - min_num] - 1] = arr[i];\r - count[arr[i] - min_num]--;\r - }\r -\r - return output;\r -}\r -`,j_=`#include \r -#include \r -#include \r -\r -using namespace std;\r -\r -\r -void CubeSort(vector& arr, int processors) {\r - int n = arr.size();\r - vector> subarrays;\r - int subarray_size = n / processors;\r -\r - for (int i = 0; i < processors; ++i) {\r - vector subarray(arr.begin() + i * subarray_size, arr.begin() + (i + 1) * subarray_size);\r - sort(subarray.begin(), subarray.end());\r - subarrays.push_back(subarray);\r - }\r -\r - for (int dimension = 0; dimension < log2(processors); ++dimension) {\r - for (int i = 0; i < processors; ++i) {\r - int partner = i ^ (1 << dimension);\r - vector merged;\r - if (i < partner) {\r - merged = subarrays[i];\r - merged.insert(merged.end(), subarrays[partner].begin(), subarrays[partner].end());\r - } else {\r - merged = subarrays[partner];\r - merged.insert(merged.end(), subarrays[i].begin(), subarrays[i].end());\r - }\r - sort(merged.begin(), merged.end());\r - subarrays[i].assign(merged.begin(), merged.begin() + subarray_size);\r - subarrays[partner].assign(merged.begin() + subarray_size, merged.end());\r - }\r - }\r -\r - arr.clear();\r - for (auto& subarray : subarrays) {\r - arr.insert(arr.end(), subarray.begin(), subarray.end());\r - }\r -}\r -`,T_=`#include \r -\r -using namespace std;\r -\r -\r -void Heapify(vector& arr, int n, int i) {\r - int largest = i;\r - int left = 2 * i + 1;\r - int right = 2 * i + 2;\r -\r - if (left < n && arr[left] > arr[largest]) {\r - largest = left;\r - }\r - if (right < n && arr[right] > arr[largest]) {\r - largest = right;\r - }\r - if (largest != i) {\r - swap(arr[i], arr[largest]);\r - Heapify(arr, n, largest);\r - }\r -}\r -\r -void HeapSort(vector& arr) {\r - int n = arr.size();\r -\r - for (int i = n / 2 - 1; i >= 0; --i) {\r - Heapify(arr, n, i);\r - }\r - for (int i = n - 1; i > 0; --i) {\r - swap(arr[0], arr[i]);\r - Heapify(arr, i, 0);\r - }\r -}\r -`,b_=`#include \r -\r -using namespace std;\r -\r -\r -void InsertionSort(vector& arr) {\r - int n = arr.size();\r -\r - for (int i = 1; i < n; ++i) {\r - int key = arr[i];\r - int j = i - 1;\r -\r - while (j >= 0 && key < arr[j]) {\r - arr[j + 1] = arr[j];\r - --j;\r - }\r -\r - arr[j + 1] = key;\r - }\r -}\r -`,k_=`#include \r -\r -using namespace std;\r -\r -\r -vector Merge(vector& left, vector& right) {\r - vector output;\r -\r - while (!left.empty() && !right.empty()) {\r - int min_num = (left[0] <= right[0]) ? left[0] : right[0];\r - output.push_back(min_num);\r -\r - if (left[0] <= right[0]) {\r - left.erase(left.begin());\r - } else {\r - right.erase(right.begin());\r - }\r - }\r -\r - output.insert(output.end(), left.begin(), left.end());\r - output.insert(output.end(), right.begin(), right.end());\r -\r - return output;\r -}\r -\r -vector MergeSort(vector& arr) {\r - int n = arr.size();\r -\r - if (n <= 1) {\r - return arr;\r - }\r -\r - int mid = n / 2;\r - vector left(arr.begin(), arr.begin() + mid);\r - vector right(arr.begin() + mid, arr.end());\r -\r - left = MergeSort(left);\r - right = MergeSort(right);\r -\r - return Merge(left, right);\r -}\r -`,E_=`#include \r -\r -using namespace std;\r -\r -\r -int FindMaxIndex(vector& arr, int n) {\r - int max_idx = 0;\r -\r - for (int i = 0; i < n; ++i) {\r - if (arr[i] > arr[max_idx]) {\r - max_idx = i;\r - }\r - }\r -\r - return max_idx;\r -}\r -\r -void Flip(vector& arr, int i) {\r - int left = 0;\r -\r - while (left < i) {\r - swap(arr[left], arr[i]);\r - left++;\r - i--;\r - }\r -}\r -\r -void PancakeSort(vector& arr) {\r - int n = arr.size();\r -\r - for (int size = n; size >= 2; --size) {\r - int max_idx = FindMaxIndex(arr, size);\r -\r - if (max_idx != size - 1) {\r - Flip(arr, max_idx);\r - Flip(arr, size - 1);\r - }\r - }\r -}\r -`,N_=`#include \r -\r -using namespace std;\r -\r -\r -vector QuickSort(vector& arr) {\r - int n = arr.size();\r -\r - if (n <= 1) {\r - return arr;\r - }\r -\r - int pivot = arr[n / 2];\r - vector left, right;\r -\r - for (int x : arr) {\r - if (x < pivot) {\r - left.push_back(x);\r - } else if (x > pivot) {\r - right.push_back(x);\r - }\r - }\r -\r - left = QuickSort(left);\r - right = QuickSort(right);\r -\r - left.push_back(pivot);\r - left.insert(left.end(), right.begin(), right.end());\r -\r - return left;\r -}\r -`,O_=`#include \r -\r -using namespace std;\r -\r -\r -void CountingSort(vector& arr, int exp) {\r - int n = arr.size();\r - vector output(n, 0);\r - vector count(10, 0);\r -\r - for (int i = 0; i < n; ++i) {\r - int idx = arr[i] / exp % 10;\r - count[idx]++;\r - }\r -\r - for (int i = 1; i < 10; ++i) {\r - count[i] += count[i - 1];\r - }\r -\r - for (int i = n - 1; i >= 0; --i) {\r - int idx = arr[i] / exp % 10;\r - output[count[idx] - 1] = arr[i];\r - count[idx]--;\r - }\r -\r - for (int i = 0; i < n; ++i) {\r - arr[i] = output[i];\r - }\r -}\r -\r -void RadixSort(vector& arr) {\r - int max_val = *max_element(arr.begin(), arr.end());\r - int exp = 1;\r -\r - while (max_val / exp > 0) {\r - CountingSort(arr, exp);\r - exp *= 10;\r - }\r -}\r -`,A_=`#include \r -\r -using namespace std;\r -\r -\r -void SelectionSort(vector& arr) {\r - int n = arr.size();\r -\r - for (int i = 0; i < n; ++i) {\r - int min_i = i;\r -\r - for (int j = i + 1; j < n; ++j) {\r - if (arr[j] < arr[min_i]) {\r - min_i = j;\r - }\r - }\r -\r - if (min_i != i) {\r - swap(arr[i], arr[min_i]);\r - }\r - }\r -}\r -`,C_=`#include \r -\r -using namespace std;\r -\r -\r -void ShellSort(vector& arr) {\r - int n = arr.size();\r - vector gaps = {701, 301, 132, 57, 23, 10, 4, 1};\r -\r - for (int gap : gaps) {\r - for (int i = gap; i < n; ++i) {\r - int tmp = arr[i];\r - int j = i;\r -\r - while (j >= gap && arr[j - gap] > tmp) {\r - arr[j] = arr[j - gap];\r - j -= gap;\r - }\r -\r - if (j != i) {\r - arr[j] = tmp;\r - }\r - }\r - }\r -}\r -`,L_=`#include \r -#include \r -#include \r -\r -using namespace std;\r -\r -\r -void Snorlax(double num, vector& arr) {\r - this_thread::sleep_for(chrono::milliseconds(static_cast(num)));\r - arr.push_back(num);\r -}\r -\r -vector SleepSort(vector& arr) {\r - vector sorted_arr;\r - vector threads;\r -\r - for (double num : arr) {\r - threads.emplace_back(Snorlax, num, ref(sorted_arr));\r - }\r -\r - for (thread& t : threads) {\r - t.join();\r - }\r -\r - return sorted_arr;\r -}\r -`,P_=`#include \r -#include \r -\r -using namespace std;\r -\r -\r -void InsertionSort(vector& arr, int left, int right) {\r - for (int i = left + 1; i <= right; ++i) {\r - double key = arr[i];\r - int j = i - 1;\r -\r - while (j >= left && arr[j] > key) {\r - arr[j + 1] = arr[j];\r - --j;\r - }\r -\r - arr[j + 1] = key;\r - }\r -}\r -\r -vector Merge(const vector& left, const vector& right) {\r - vector output;\r -\r - int left_index = 0;\r - int right_index = 0;\r -\r - while (left_index < left.size() && right_index < right.size()) {\r - if (left[left_index] <= right[right_index]) {\r - output.push_back(left[left_index++]);\r - } else {\r - output.push_back(right[right_index++]);\r - }\r - }\r -\r - while (left_index < left.size()) {\r - output.push_back(left[left_index++]);\r - }\r -\r - while (right_index < right.size()) {\r - output.push_back(right[right_index++]);\r - }\r -\r - return output;\r -}\r -\r -vector TimSort(vector& arr) {\r - int n = arr.size();\r - int min_run = 32;\r -\r - for (int start = 0; start < n; start += min_run) {\r - int end = min(start + min_run - 1, n - 1);\r - InsertionSort(arr, start, end);\r - }\r -\r - int size = min_run;\r -\r - while (size < n) {\r - for (int left = 0; left < n; left += 2 * size) {\r - int mid = min(n - 1, left + size - 1);\r - int right = min((left + 2 * size - 1), (n - 1));\r - vector merged = Merge(\r - vector(arr.begin() + left, arr.begin() + mid + 1),\r - vector(arr.begin() + mid + 1, arr.begin() + right + 1)\r - );\r - copy(merged.begin(), merged.end(), arr.begin() + left);\r - }\r - size *= 2;\r - }\r -\r - return arr;\r -}\r -`;function M_(){return i.jsxs("div",{className:un.container,children:[i.jsx("h2",{className:un.sectionHeader,children:"Sorting Algorithms"}),i.jsx("section",{id:"sort-bubble",children:i.jsxs(c,{title:"bubble sort",children:[i.jsx(c.Tab,{code:Ox,language:"python"}),i.jsx(c.Tab,{code:Wx,language:"javascript"}),i.jsx(c.Tab,{code:o_,language:"java"}),i.jsx(c.Tab,{code:__,language:"cpp"})]})}),i.jsx("section",{id:"sort-selection",children:i.jsxs(c,{title:"selection sort",children:[i.jsx(c.Tab,{code:zx,language:"python"}),i.jsx(c.Tab,{code:n_,language:"javascript"}),i.jsx(c.Tab,{code:g_,language:"java"}),i.jsx(c.Tab,{code:A_,language:"cpp"})]})}),i.jsx("section",{id:"sort-insertion",children:i.jsxs(c,{title:"insertion sort",children:[i.jsx(c.Tab,{code:Mx,language:"python"}),i.jsx(c.Tab,{code:Yx,language:"javascript"}),i.jsx(c.Tab,{code:c_,language:"java"}),i.jsx(c.Tab,{code:b_,language:"cpp"})]})}),i.jsx("section",{id:"sort-shell",children:i.jsxs(c,{title:"shell sort",children:[i.jsx(c.Tab,{code:Fx,language:"python"}),i.jsx(c.Tab,{code:r_,language:"javascript"}),i.jsx(c.Tab,{code:m_,language:"java"}),i.jsx(c.Tab,{code:C_,language:"cpp"})]})}),i.jsx("section",{id:"sort-merge",children:i.jsxs(c,{title:"merge sort",children:[i.jsx(c.Tab,{code:Rx,language:"python"}),i.jsx(c.Tab,{code:Qx,language:"javascript"}),i.jsx(c.Tab,{code:d_,language:"java"}),i.jsx(c.Tab,{code:k_,language:"cpp"})]})}),i.jsx("section",{id:"sort-quick",children:i.jsxs(c,{title:"quick sort",children:[i.jsx(c.Tab,{code:Dx,language:"python"}),i.jsx(c.Tab,{code:Xx,language:"javascript"}),i.jsx(c.Tab,{code:p_,language:"java"}),i.jsx(c.Tab,{code:N_,language:"cpp"})]})}),i.jsx("section",{id:"sort-tim",children:i.jsxs(c,{title:"timsort",children:[i.jsx(c.Tab,{code:Hx,language:"python"}),i.jsx(c.Tab,{code:t_,language:"javascript"}),i.jsx(c.Tab,{code:y_,language:"java"}),i.jsx(c.Tab,{code:P_,language:"cpp"})]})}),i.jsx("section",{id:"sort-heap",children:i.jsxs(c,{title:"heap sort",children:[i.jsx(c.Tab,{code:Px,language:"python"}),i.jsx(c.Tab,{code:Jx,language:"javascript"}),i.jsx(c.Tab,{code:u_,language:"java"}),i.jsx(c.Tab,{code:T_,language:"cpp"})]})}),i.jsx("section",{id:"sort-counting",children:i.jsxs(c,{title:"counting sort",children:[i.jsx(c.Tab,{code:Cx,language:"python"}),i.jsx(c.Tab,{code:Kx,language:"javascript"}),i.jsx(c.Tab,{code:s_,language:"java"}),i.jsx(c.Tab,{code:S_,language:"cpp"})]})}),i.jsx("section",{id:"sort-bucket",children:i.jsxs(c,{title:"bucket sort",children:[i.jsx(c.Tab,{code:Ax,language:"python"}),i.jsx(c.Tab,{code:Vx,language:"javascript"}),i.jsx(c.Tab,{code:a_,language:"java"}),i.jsx(c.Tab,{code:w_,language:"cpp"})]})}),i.jsx("section",{id:"sort-radix",children:i.jsxs(c,{title:"radix sort",children:[i.jsx(c.Tab,{code:Bx,language:"python"}),i.jsx(c.Tab,{code:Zx,language:"javascript"}),i.jsx(c.Tab,{code:h_,language:"java"}),i.jsx(c.Tab,{code:O_,language:"cpp"})]})}),i.jsx("section",{id:"sort-cube",children:i.jsxs(c,{title:"cubesort",children:[i.jsx(c.Tab,{code:Lx,language:"python"}),i.jsx(c.Tab,{code:Gx,language:"javascript"}),i.jsx(c.Tab,{code:l_,language:"java"}),i.jsx(c.Tab,{code:j_,language:"cpp"})]})}),i.jsx("section",{id:"sort-bogo",children:i.jsxs(c,{title:"bogo sort",children:[i.jsx(c.Tab,{code:Nx,language:"python"}),i.jsx(c.Tab,{code:$x,language:"javascript"}),i.jsx(c.Tab,{code:i_,language:"java"}),i.jsx(c.Tab,{code:x_,language:"cpp"})]})}),i.jsx("section",{id:"sort-pancake",children:i.jsxs(c,{title:"pancake sort",children:[i.jsx(c.Tab,{code:Ix,language:"python"}),i.jsx(c.Tab,{code:qx,language:"javascript"}),i.jsx(c.Tab,{code:f_,language:"java"}),i.jsx(c.Tab,{code:E_,language:"cpp"})]})}),i.jsx("section",{id:"sort-sleep",children:i.jsxs(c,{title:"sleep sort",children:[i.jsx(c.Tab,{code:Ux,language:"python"}),i.jsx(c.Tab,{code:e_,language:"javascript"}),i.jsx(c.Tab,{code:v_,language:"java"}),i.jsx(c.Tab,{code:L_,language:"cpp"})]})})]})}function R_(){const{isSidebarOpen:n}=Fs(),r=rr(iu.main,!n&&iu.sidebarHidden);return i.jsxs("main",{className:r,children:[i.jsx($g,{}),i.jsx(C1,{}),i.jsx(F1,{}),i.jsx(Y1,{}),i.jsx(iv,{}),i.jsx(vv,{}),i.jsx(Qv,{}),i.jsx(r0,{}),i.jsx(S0,{}),i.jsx(E0,{}),i.jsx(F0,{}),i.jsx(Ey,{}),i.jsx(Fy,{}),i.jsx(Ex,{}),i.jsx(M_,{})]})}function I_(){return i.jsx(_i.StrictMode,{children:i.jsx(Th,{children:i.jsxs("div",{className:"App",children:[i.jsx(Eh,{}),i.jsx(kg,{}),i.jsx(R_,{})]})})})}Xo.createRoot(document.getElementById("root")).render(i.jsx(I_,{})); diff --git a/docs/assets/index-DqUlzqnG.css b/docs/assets/index-DqUlzqnG.css deleted file mode 100644 index d0f2122..0000000 --- a/docs/assets/index-DqUlzqnG.css +++ /dev/null @@ -1 +0,0 @@ -:root{--color-black: #000000;--color-white: #ffffff;--color-frost-white: #f8f8f8;--color-platinum: #e0e0e0;--color-azure: #03a9f4;--color-comet: #5a5d7a;--color-gunmetal: #2e3140;--color-red: #ff4d4d;--color-green: #3fc86f;--color-orange: #ffa116;--color-code-red: #ff6188;--color-code-orange: #fc9867;--color-code-yellow: #ffd866;--color-code-green: #a9dc76;--color-code-blue: #78dce8;--color-code-purple: #ab9df2;--color-code-mist: #fcfcfa0c;--color-code-linen: #fdf9f3;--color-code-slate: #c1c0c0;--color-code-venus: #939293;--color-code-dull: #727072;--color-code-carbon: #5b595c;--color-code-dark: #2c292d;--color-red-alpha: rgba(255, 77, 77, .7);--color-green-alpha: rgba(63, 200, 111, .7);--color-olive-green-alpha: rgba(169, 220, 118, .7);--color-orange-alpha: rgba(255, 161, 22, .7);--color-yellow-alpha: rgba(255, 216, 102, .7);--color-gray-alpha: rgba(190, 190, 190, .7);--color-black-alpha-1: rgba(0, 0, 0, .1);--color-black-alpha-2: rgba(0, 0, 0, .2);--color-black-alpha-3: rgba(0, 0, 0, .3);--color-black-alpha-4: rgba(0, 0, 0, .4);--color-black-alpha-5: rgba(0, 0, 0, .5);--color-black-alpha-6: rgba(0, 0, 0, .6);--color-black-alpha-7: rgba(0, 0, 0, .7);--color-black-alpha-8: rgba(0, 0, 0, .8);--color-black-alpha-9: rgba(0, 0, 0, .9);--color-white-alpha-1: rgba(255, 255, 255, .1);--color-white-alpha-2: rgba(255, 255, 255, .2);--color-white-alpha-3: rgba(255, 255, 255, .3);--color-white-alpha-4: rgba(255, 255, 255, .4);--color-white-alpha-5: rgba(255, 255, 255, .5);--color-white-alpha-6: rgba(255, 255, 255, .6);--color-white-alpha-7: rgba(255, 255, 255, .7);--color-white-alpha-8: rgba(255, 255, 255, .8);--color-white-alpha-9: rgba(255, 255, 255, .9);--gradient-oceanic-blue: linear-gradient(to right, #56ccf2, #2f80ed);--gradient-pastel-rainbow: linear-gradient(135deg, #ffb6c1, #ffcc99, #ffff99, #ccffcc, #99ccff, #cc99ff);--gradient-pastel-rainbow-transparent: linear-gradient(135deg, rgba(255, 183, 197, .5), rgba(255, 240, 245, .5), rgba(204, 255, 144, .5), rgba(128, 216, 255, .5));--gradient-mask-right: linear-gradient(90deg, #000 90%, transparent)}:root{--accordion-button-font-size: 1.25rem;--button-padding-x: 16px;--button-padding-y: 4px;--button-border-radius: 4px;--button-font-size: 1.375rem;--bigo-chart-label-font-size: 1.5rem;--brand-color: var(--color-white-alpha-4);--card-border-radius: 6px;--card-font-size: 1.125rem;--card-padding: 20px;--code-border-color: var(--color-white-alpha-3);--code-font-size: 1.125rem;--code-line-height: normal;--code-line-hover-color: var(--color-code-mist);--code-line-number-color: var(--color-code-carbon);--code-line-number-hover-color: var(--color-code-slate);--copy-button-background-color: var(--color-white-alpha-6);--copy-button-hover-background-color: var(--color-white-alpha-7);--copy-button-active-background-color: var(--color-frost-white);--copy-button-svg-fill-color: var(--color-black-alpha-5);--content-margin-left: 308px;--content-margin-right: 4px;--content-margin-top: 72px;--content-margin-bottom: 4px;--font-family-sans-serif: "Segoe UI", Roboto, sans-serif;--font-family-monospace: firacode, monospace;--font-size: 16px;--font-weight: 400;--glass-backdrop-filter: blur(8px);--glass-border-radius: 12px;--glass-box-shadow: 0 4px 30px var(--color-black-alpha-1);--gutter-spacing: 2rem;--h1-font-family: silkscreen, monospace;--h3-font-family: firacode, monospace;--h1-font-size: 2rem;--h2-font-size: 2rem;--h3-font-size: 1.5rem;--header-font-weight: 500;--line-height: 1.5;--link-hover-color: var(--color-azure);--link-overflow-mask: var(--gradient-mask-right);--tab-button-border-bottom-color: var(--color-white-alpha-6);--table-border-color: var(--color-white-alpha-6);--table-font-family: var(--font-family-sans-serif);--table-font-size: 1.25rem;--table-wrapper-border-color: var(--color-black-alpha-3);--table-wrapper-backdrop-filter: blur(32px);--topbar-title-color: var(--color-white-alpha-8);--topbar-title-hover-color: var(--gradient-pastel-rainbow);--topbar-brand-font-size: var(--h1-font-size);--topbar-brand-gradient: var(--gradient-oceanic-blue);--topbar-height: 64px;--topbar-padding: 6px 32px;--section-header-background: var(--gradient-pastel-rainbow-transparent);--sidebar-height: calc(100vh - 76px) ;--sidebar-width: 300px;--style-transition-property: background, background-color, background-image, border-color, box-shadow, color, fill, height, max-height, opacity, stroke, transform, outline;--style-transition-duration: .3s}[data-theme=light]{--accordion-button-background-color: var(--color-white-alpha-5);--accordion-button-chevron-color: var(--color-black-alpha-4);--accordion-content-background-color: var(--color-white-alpha-7);--background-image: url(https://jwl-7.github.io/leetcode-cheatsheet/assets/bg-cotton-orb-COQ-b5QR.webp);--glass-background-color: var(--color-white-alpha-2);--glass-border: 1px solid var(--color-white-alpha-3);--link-hover-background-color: var(--color-white-alpha-7);--table-cell-text-color: var(--color-gunmetal);--table-wrapper-background-color: var(--color-white-alpha-4);--text-color: var(--color-comet);--nav-icon-link-color: var(--color-white-alpha-9);--nav-icon-link-hover-color: var(--color-white-alpha-7);--nav-icon-link-active-color: var(--color-white-alpha-8);--nav-link-active-color: var(--color-white-alpha-8);--toggler-icon-color: var(--color-black-alpha-6);color-scheme:light}[data-theme=dark]{--accordion-button-background-color: var(--color-black-alpha-4);--accordion-button-chevron-color: var(--color-white-alpha-4);--accordion-content-background-color: var(--color-black-alpha-2);--background-image: url(https://jwl-7.github.io/leetcode-cheatsheet/assets/bg-city-night-Hn7IgFgp.webp);--glass-background-color: var(--color-black-alpha-2);--glass-border: 1px solid var(--color-black-alpha-3);--link-hover-background-color: var(--color-black-alpha-4);--table-cell-text-color: var(--color-frost-white);--table-wrapper-background-color: var(--color-black-alpha-1);--text-color: var(--color-platinum);--nav-icon-link-color: var(--color-white-alpha-8);--nav-icon-link-hover-color: var(--color-white-alpha-4);--nav-icon-link-active-color: var(--color-black-alpha-6);--nav-link-active-color: var(--color-black-alpha-6);--toggler-icon-color: var(--color-white-alpha-8);color-scheme:dark}*,*:before,*:after{box-sizing:border-box;background-repeat:no-repeat}html{font-family:var(--font-family-monospace)}body{background-attachment:fixed;background-image:var(--background-image);background-size:cover;color:var(--text-color);font-size:var(--font-size);font-weight:var(--font-weight);line-height:var(--line-height);text-rendering:optimizeLegibility;overflow-wrap:break-word;margin:0;transition-duration:var(--style-transition-duration);transition-property:var(--style-transition-property);width:100%}section{transition-property:var(--style-transition-property);transition-duration:var(--style-transition-duration)}@media (min-width: 768px){section{padding-left:var(--gutter-spacing);padding-right:var(--gutter-spacing)}}@media (max-width: 768px){section{padding-left:0;padding-right:0}}main{height:100vh}pre{margin:0}@keyframes gradient{0%{background-position:0% 0%}50%{background-position:100% 100%}to{background-position:0% 0%}}@font-face{font-display:swap;font-family:firacode;src:url(https://jwl-7.github.io/leetcode-cheatsheet/assets/firacode-DmifnrmV.woff2) format("woff2")}@font-face{font-display:swap;font-family:neometric;src:url(data:font/woff2;base64,d09GMgABAAAAAA9UAA8AAAAAIhAAAA74AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cGh4bikAcIAZgAIMKEQgKonyZUwuBHAABNgIkA4I0BCAFiX4HgTwbxhuzEVW3N6l5kf2XCeYYov1Mq4pkMsVlMrIMuViGhzwkNdxtl1eX9X/56mHVL/TgepqD2Ke7pBNbPx8hyaz/uFa+n2RmM7NZYDogEOYKBBrJ17j6WlJAoOoIrqdNf4mIQEg1JhAe0d9GDLj3sDsqFiOESypOqpGZQs1jNZWQVNSvop8x4Hogn3iMZNG6e5dHYMzHozAalAJhUB4lUAZJQkKCkTdHOvXuZRfu9PFawAkIN5wkvVlhFWHVt5sVD0sR8CUlvAw5mNeleHFwXJNeqAMId9J/Wiuz84LkgSqkIiQJH03GVP2G7O+anoYZrhDscncYZzeHElACC9U7YdTHIMwJfUadkaf1uRPG3CIeFpNLLb+X4bJzZ2KUcRAg0LQ+l5cnAkAAPP3uiwC40ZX3GHFZEfiZBQtzC3iEo3JhU1wVva+ZW3BqF1CTNN42jOctGVJwev8VJDpvIgBlK+112n1f4iQ+pZCGKmgUNWz7ju7p3ptmiayENXjez+k8ycW8J5/AV7a+rR3ubHd73T9hi63CJGZ87Tf/JH6hOLE4uTiFOOXWiolTbaW49kpoClGc9jgdcTrjDMcZiTMaZzzORJzJOFNdNd1Ls73EydZz7r5A3CmMGboZOlgsPomVNic66hoYfe1MX9TqpE6me+1JxWMkYGr9HAEUDO8lxbCehG8PdV0OqwKu4mr9ull8bU05sWpEXAskJMH6ODpcH8otKYkOF2EjvqtNwj/qGht97U8/12onxND9OBBUjtTleqncY0Jxft+LZvuMkcMOA7iWmLcK/sULtFoYmymqBFqXEkcASiSemdcsBW+XNYPtlFWAkAMJv+r4Jy+kVxK2XJgaXNQEqHFSe2rYdeS1nTsYk7AZJzGDrUBYcdw/ahnv+Tip3zTLyAZsIEEVxPUpwnA9qrMYFSjHZVQc2cBRW5zufMMTxQtNtVlBx812NSWxWF+WwAAmSUiCQKeJcPj9bVnsuk3okDEPTZ97KccAcW25dsxMj5swMMQ0cc05aDftuoK0gXk4JAk8JiE4gnJTAZzmYHzaEgLmAF7f0OtxtDPTfcOKaRYKkVbgQZ0s5PN1Iwy4gE4hgGH15fwS46sBM9r9DuzczWb29k0/BjoGu28opTB4hGAUYx3jvTfR4kmsp+wM5XBQv8fLGgaVnkDUZoiiO6UBivw5+WLoccoTTIF+rID+wTQR8cH4m8G3v39DQBgQFSMkpemyagwNDR4tvbz6jRAak6OLKXJhCGCKited8DAAm3PjoBF7xSkAzrGPph/a/MJixUOAPNruj3ECQPIutGH/iySPYNwi3kyfVvL3wAB87UdV+VigqT9Z2PzZ+DlxupS8kqq6fsOWjLnH/v8fJOUVeWjOGFV8j/7V9NdA/fXWU3dpSX9+ZyGLDXRDxGjaAVnkTOAnbqvRHwDJYD4qm93xRbUWwkLgbuv/Dzt17tI1LDwiMio6JjYuPiERAACt5yQJkianpKalZ/zXrXumomq6YVq240J7Oc6/wDrq/6CHLuJSbtse4h/oX+L+qt3DcLRsZgxsA8eaBS46laTdWhqBuVv38CTyy6TkKUJWZ6fzyFY2SzDrauuzO5teleRMdd11UjnZpAxKJ2VGlJ2p6Za428XFNM67c0uh9LJ4KMOqpF36lZPX4h3pWRAJSImY08XJdifMpPKS1pVbPMn71/JZEDDQbvLemPVJolJ1a9y5NI0nnjXzXeU6xQsvzr6cdPn1qGOv8g/TWd6X2WfiJkgS1KmCC5MNhO7VOdenpai9a1MxjiE0jmKHFAMNRDFAaGoJom7SSc0AhDFHKfqcoSzh9tg4jgQbW16nM28li38A6XRZGgdP433aOYyjdGxFhBy91q+o9kIonTquvV0wEBDaGBTQ2W5DQcJJqvE5xVHNkqXNAkjqWSV2Lhe+hczL4RLbGQDK5Ntog8KIlr3iBHl5r/YCwpccvUb9Kn95z+fuMj1P6gJJWjAetUyJgTqLOT5z+kGfIW0tNmbLOWnbQwVkzS3qMQjCZpAIv1naWdn1HDThNnA9//U/amWbW2rJ0YCNS/csEn0HzWNjBusMqZhGwc6074aGbI7tAhJsODwMBUUvrncoauimFaGEsNRKspAWZ4hJE2ZU9itBi0VoyGchSLYH3Nrmc0aCTdujGARZ+l/tD6MuhbfVTQfqAgKntmEtQ5c5c8T0G5SdQb3df0KU2Rb9R/2PbBisc+bGSkP+leu9sd21PwYgUVkQJRJqdfKBch5jJWfndChBHfwn/MvgYw5Kg96PP+5IwiCjn2KLz1toG+8ucZmqZcIqF0p8uLWNPIeCdnZVoLhVkNXOyodiq4QGDHoiB/b4QbVEx5i4lFL6Eeg6+N3FYW5S7K6bQ+9Spnsd3zH1drgJiRdKkLoCOVmsPsI+uWFVW7HcPoZPJdtlK2AgQRYhY0B5tEugJQCTsccKlTRxpfSbHaRTSqWzzBaL7NnmnlFmKPHUBekKeYodHqDstHL2ohR0mR1xnDby3s7B7mR4z1s3A1l0lAXhdEesBg14vFLKdF4JrzKac9Kt+zrqa1SMmv2A17YgWyOmzkNVifNERd7djD3neOeC4oAdt79ZeexGKyNLNwsAWiXYiBjYWKLqh31B7Z+pxxTq8XOchDGGXChX0NmjY9o1/sy8AHUgo4y84haNdcPtGRLVOV39u28lH8sCI6sPVy+N8K+fPSvCJbg078IBdVhy87arCVckfcEW9TSIx58abdquahD1PHKwqGiKpajkAtxYemEOLVP88MDWak402jT6bsXAUnjidj4IFZjCMN+4cfRonVXHbfYHwQySy1lKjqyIopBEQSFgjYQlIZjAnABRbuCaHPGTtYi0FHe4NsTN8PJXhccSlEUSo3Xjc8TrgoAe/xr1S9aVohBFsYrnXhQoDafxGSnNF9ACnK5Rp6f1TymFeqNSiqVWbA2m7JS+5M2u17AvhNTWMCbTesxMNqmSyZFUJmt3h7TAm2ZIGl4nZWpDsq78cpm/UqKgWHfV/HgUzDOGhdrF3hfQDwQyDMz4O6ivI23JNnknAmWoNaOeRTPQtFGCfAE/d1d9sKA8uB0hVJg0PNUbo67apENbGlN05VfK/BlTNaMzmWilVCGvwkUp2u0MQldM4eHJl2fnFKNRLRVdxeNiB8On0tTqERp1WrpMpfNpAZ85J+E0jZrrak1amAGVq9cQVLNzJzxPU4PwGuv0zLbMIrP56CQz3DrAHpDp9YWaTEl3NW2hvmy34NigSIvKHDnQXWdEmVWWKNBCza7P5Xa1KF08rGNv+tzg/Oy+nMOibBueo2OZK4JF86FSVlpjoNpfDohKDAAzhdnrPrHw6Gvy+jiYBSFHX+FXnoRl4Qq4QvowdMrNQXk8gN1bkWK0LjC3HUfzaqDS04uwxK1NjQd7QWglqQQhlokR9iWrBoRGghBR8ST3JL2NJBOELBEWkU08uGU8ZuoLD+KDsSWSwRQ2de6JV9MmZd4Grhhjo0KQWWUP4tWAduKuXROJsoZxhxAvHW/ai+AWW0h5Fs0Y5EkqD3gQ5qjIIznoGJh3Qu9rj14D1xdG02reg56zGhQKJJkSzWayOdISiTWLoKbZ5H7GKkv/EW72lunLZun1sgP4QJRJZY50N6FCKyVuwgNhEKkknsE4GNIkobvIvUn6PyXQ4ocCmmc08Iw08Hbj7WSwkRkiGCygYaiRKLeWbjWAxRhDCX3bj/YfepXBk5S1f2/7Ds+h0V3q3XMicIRHjh6EAsIS+G79gVm8GZjfXFQ347iWgqxdbriecxWVa6qZMZkYXYvYLi3kz3gfwvfkZaQMbwvWzpmGgoqemqyifim5AmVpelYY8iF7+rGycb9xi06n/xaM1K7qmZy3O0ccIxnZr760WzqOcVfZ/e1MjghSBUghR7XkjjDpPDC+BwzkxY2X7UXqcSvvokEKBum8ctSPMqPD30e76v4ZWWD53F05cHwhU/I1whsja9g3Cm0hLcmYYBC2spi1K3Q1axt27f8qSlpa7zuULGqFUJawUPnuPXmflWp0YZkx7/H7TEbsGIvKBGyrFdd3ZIL8c2LURVluuIZHzQYWNJ93SfGYCItMKMI3TVlJ1rfgPz6+sAP2JRa29kKM3L0hK4GFzZ1xZ9/G8EZfWCsuKBAnsagzSab6+jT5ZuTDHqO1Ftcq8fbuGFuhCult/s/OJO2K5uiolc1acDgRlv4idLYFXZ3U53kp9GwupqVWXDWDOIfJ6fDGUC2m6+3qVlrTCr8/LexrDo8MhwjcEhYJYRBO4Orximzjnu3UBNEAdmQ33r79bH9Y5HnDP71q+J3GBL4j46tk/vkhxss7Eu01DwIgMQUZLvRfxLlfYvbdP3GxbnE47XjNfgJwWuiWwnPSitajPeTTDjdzj8bO7VM3iU9yJD9qmPKubmN+85rTw1ZHzhAeSvBJv+adSuZU7CUHETfX2G4+d7xYz7Iz+LWlSe1TtIa75HuwT7SAtv0iRmYuwyJw5qI4XINmkAFGTgMbwtOtua7PwWNBDFcFo3shONc4CcE5GUJjmy2sl4Y3Cou29RKSfdewgYdfEKa+w1dYuY8RUBmbsEWnAWDzoSmI22XBKLcEl/ZeCMnhC014MOt0+GhhsX7WCym6OWzg4UOEaf8uElbZYwuB+i2ZaTq9w6iQyc0QIUJCEoFIgEIHpGjFRokJmgRakVzixIm4vpsRhmRsWU4UrwPHoCb4A94bEYk/gNn5U5vXTjj9rcPl5PzP0ChAYfrHnx0IcJXoNETPRjiKS+v+7G0urL7orxeWZh6+MeBeAEw3V28+hUp2cwuaDH/3zqc3+EtLDvYVVb69TeP/p5Sc0sgArO41JgtsS399vNGk0GkhEUdY+vDaiZrICd3Z1nzKyy+JjIqoNgEUclDkZJgZGFWvqZOm3/Emh2Ez/snv1nM49PbMkyXRMwd9A4DkSTvLfg1//cNmzObAga4aZ04VDh2PxIvSzoBAz0E1Ny9NWI9Pwp2jvQwUYBar/ZfTprD4PPl3TDBYKQ4uHl4+fgFBIWERUTFxaVk5eQVFJWUVVTV1jZj+tbVp16FTl249evXpN2DQhDz5ChSSkVOgYISSipqGFo2h00NPvfTWR1/97LQL) format("woff2")}@font-face{font-display:swap;font-family:silkscreen;src:url(https://jwl-7.github.io/leetcode-cheatsheet/assets/silkscreen-DLtPLOcD.woff2) format("woff2")}h1,h2,h3{font-weight:var(--header-font-weight);margin:0}h1{font-family:var(--h1-font-family);font-size:var(--h1-font-size)}h2{font-size:var(--h2-font-size)}h3{font-family:var(--h3-font-family);font-size:var(--h3-font-size);margin-bottom:12px}code{font-family:var(--font-family-monospace);white-space:pre}button,a[role=button]{display:inline-flex;align-items:center;justify-content:center;background:transparent;border:none;box-shadow:none;color:inherit;font-family:inherit;cursor:pointer;outline:none;margin:0;padding:0;text-decoration:none;transition-duration:var(--style-transition-duration);transition-property:var(--style-transition-property);white-space:nowrap}button svg,a[role=button] svg{height:1em;width:1em;vertical-align:middle}a:not([role=button]){color:inherit;cursor:pointer;text-decoration:none;transition-duration:var(--style-transition-duration);transition-property:var(--style-transition-property)}a:not([role=button]):hover{color:var(--link-hover-color)}a:not([role=button]):active{color:inherit}table,th,td,tr{transition-duration:var(--style-transition-duration);transition-property:var(--style-transition-property)}table{border-collapse:collapse;font-family:var(--table-font-family);font-size:var(--table-font-size);position:relative;width:100%}td:not(:first-child){color:var(--table-cell-text-color)}th,td{background-clip:padding-box;overflow:hidden;padding:8px;text-align:center}th:not(:last-child),td:not(:last-child){border-right:4px solid var(--table-border-color)}tr:not(:last-child) th,tr:not(:last-child) td{border-bottom:4px solid var(--table-border-color)}.hljs{display:block;overflow-x:auto;padding:.5em;background-color:var(--color-code-dark)}.hljs-built_in{color:var(--color-code-green)}.hljs-selector-tag,.hljs-section,.hljs-link{color:var(--color-code-blue)}.hljs-keyword{color:var(--color-code-red)}.hljs-keyword.class_,.hljs-keyword.def_{color:var(--color-code-blue);font-style:italic}.hljs{color:var(--color-code-linen)}.hljs-subst{color:var(--color-code-purple)}.hljs-attr,.hljs-meta-keyword,.hljs-title{color:var(--color-code-green)}.hljs-title.class_,.hljs-type{color:var(--color-code-blue)}.hljs-string,.hljs-meta,.hljs-name,.hljs-symbol,.hljs-bullet,.hljs-addition,.hljs-variable,.hljs-template-tag,.hljs-template-variable{color:var(--color-code-yellow)}.hljs-comment,.hljs-quote,.hljs-deletion{color:var(--color-code-dull)}.hljs-section,.hljs-strong{font-weight:700}.hljs-doctag,.hljs-literal,.hljs-number{color:var(--color-code-purple)}.hljs-emphasis{font-style:italic}.hljs-params{color:var(--color-code-orange)}.hljs-params.self_{color:var(--color-code-slate)}.hljs-params.comma_{color:var(--color-code-venus)}.hljs-params.operator_{color:var(--color-code-red)}.hljs-params .hljs-built_in{color:var(--color-code-blue)}.hljs-operator{color:var(--color-code-red)}._wave_nm5to_1{background:linear-gradient(210,#ffb7c580,#fff0f580,#ccff9080,#80d8ff80);border-radius:1000% 1000% 0 0;position:fixed;width:200%;height:144px;animation:_wave_nm5to_1 10s -3s linear infinite;transform:translateZ(0);opacity:.7;bottom:0;left:0;z-index:-1}._wave_nm5to_1:nth-of-type(2){background:linear-gradient(180deg,#ffb7c580,#fff0f580,#ccff9080,#80d8ff80);bottom:-20px;opacity:.7;animation:_wave_nm5to_1 18s linear reverse infinite}._wave_nm5to_1:nth-of-type(3){background:linear-gradient(135deg,#ffb7c580,#fff0f580,#ccff9080,#80d8ff80);bottom:-40px;opacity:.8;animation:_wave_nm5to_1 20s -1s reverse infinite}@keyframes _gradient_nm5to_1{0%{background-position:0% 0%}50%{background-position:100% 100%}to{background-position:0% 0%}}@keyframes _wave_nm5to_1{2%{transform:translate(1)}25%{transform:translate(-25%)}50%{transform:translate(-50%)}75%{transform:translate(-25%)}to{transform:translate(1)}}._topbar_103sc_1{background-color:var(--glass-background-color);-webkit-backdrop-filter:var(--glass-backdrop-filter);backdrop-filter:var(--glass-backdrop-filter);border:var(--glass-border);border-radius:var(--glass-border-radius);box-shadow:var(--glass-box-shadow);display:flex;flex-direction:column;position:fixed;overflow:hidden;max-height:var(--topbar-height);padding:var(--topbar-padding);left:4px;right:0;top:4px;transition-property:var(--style-transition-property);transition-duration:var(--style-transition-duration);width:calc(100% - 8px);z-index:999}._container_103sc_22{display:flex;align-items:center;justify-content:space-between}._buttonContainer_103sc_28{display:flex;flex-direction:row;align-items:center;gap:12px}._title_103sc_35{color:var(--topbar-title-color);text-decoration:none;padding:0;transition-duration:var(--style-transition-duration);transition-property:var(--style-transition-property)}._title_103sc_35:hover{animation:_animated-gradient_103sc_1 3s ease alternate infinite;background-image:var(--topbar-title-hover-color);background-size:300% 300%;-webkit-background-clip:text;background-clip:text;color:transparent}._title_103sc_35:active{color:var(--nav-link-active-color)}._iconLink_103sc_53{display:inline-block;border:1px solid var(--nav-icon-link-color);border-radius:var(--button-border-radius);height:44px;width:44px;padding:4px;transition-duration:var(--style-transition-duration);transition-property:var(--style-transition-property)}._iconLink_103sc_53 svg{height:100%;width:100%;vertical-align:middle}._iconLink_103sc_53:hover{background-color:var(--nav-icon-link-hover-color)}._iconLink_103sc_53:active{background-color:var(--nav-icon-link-active-color)}._hamburger_103sc_75:hover{cursor:pointer}._hamburgerIcon_103sc_79{background-color:var(--toggler-icon-color);display:block;height:3px;width:30px;transition-property:var(--style-transition-property);transition-duration:var(--style-transition-duration)}._hamburgerTop_103sc_88{transform:rotate(45deg);transform-origin:10% 10%}._hamburgerTop_103sc_88._collapsed_103sc_92{transform:rotate(0)}._hamburgerMiddle_103sc_96{filter:alpha(opacity=0);opacity:0;margin:5px auto}._hamburgerMiddle_103sc_96._collapsed_103sc_92{opacity:1;filter:alpha(opacity=100)}._hamburgerBottom_103sc_106{transform:rotate(-45deg);transform-origin:10% 90%}._hamburgerBottom_103sc_106._collapsed_103sc_92{transform:rotate(0)}@keyframes _animated-gradient_103sc_1{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}._brand_18f9t_1{color:var(--brand-color);font-size:var(--topbar-brand-font-size);transition-duration:var(--style-transition-duration);transition-property:var(--style-transition-property);-webkit-user-select:none;user-select:none}._brand_18f9t_1:hover{-webkit-background-clip:text;background-clip:text;background-image:var(--topbar-brand-gradient);background-size:100%;color:transparent;cursor:pointer}._brand_18f9t_1:active{color:var(--glass-background-color)}._bounce_18f9t_19{animation:_bounce_18f9t_19 .5s ease-in-out forwards}._glowDisappear_18f9t_23{animation:_glow-disappear_18f9t_1 1.5s ease-out forwards}._heartBeat_18f9t_27{animation:_heart-beat_18f9t_1 .5s ease-in-out forwards}._rubberBand_18f9t_31{animation:_rubber-band_18f9t_1 .5s ease forwards}._rotate_18f9t_35{animation:_rotate_18f9t_35 .5s ease forwards}@keyframes _bounce_18f9t_19{0%,20%,53%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1);transform:translateZ(0)}40%,43%{animation-timing-function:cubic-bezier(.755,.05,.855,.06);transform:translate3d(0,-30px,0) scaleY(1.1)}70%{animation-timing-function:cubic-bezier(.755,.05,.855,.06);transform:translate3d(0,-15px,0) scaleY(1.05)}80%{transition-timing-function:cubic-bezier(.215,.61,.355,1);transform:translateZ(0) scaleY(.95)}90%{transform:translate3d(0,-4px,0) scaleY(1.02)}}@keyframes _glow-disappear_18f9t_1{0%{text-shadow:0px -5px 10px rgb(255,255,255),0px 0px 5px rgba(255,255,255,0),0px 0px 10px rgba(255,255,255,0),2px 1px 15px rgba(100,240,255,0),0px 0px 20px rgba(255,255,255,0);opacity:1}90%{text-shadow:0px -5px 10px rgb(255,255,255),0px 0px 5px rgba(255,255,255,0),0px 0px 10px rgba(255,255,255,0),2px 1px 4px rgb(255,100,100),0px 0px 20px rgba(255,255,255,0);opacity:0}to{color:var(--glass-background-color);opacity:1}}@keyframes _heart-beat_18f9t_1{0%{transform:scale(1)}14%{transform:scale(1.3)}28%{transform:scale(1)}42%{transform:scale(1.3)}70%{transform:scale(1)}}@keyframes _rubber-band_18f9t_1{0%{transform:scaleZ(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleZ(1)}}@keyframes _rotate_18f9t_35{0%{transform:rotate(0)}to{transform:rotate(360deg)}}._container_uucyv_1{display:flex;justify-content:center}._input_uucyv_6{clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;width:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}._input_uucyv_6:checked+._label_uucyv_16{background-color:#8fb5f5;border-color:#347cf8}._input_uucyv_6:checked+._label_uucyv_16 ._indicator_uucyv_20{background-color:#ecd21f;box-shadow:none;transform:translate(-50%,-50%) translate(72%)}._input_uucyv_6:checked+._label_uucyv_16 ._indicator_uucyv_20:before,._input_uucyv_6:checked+._label_uucyv_16 ._indicator_uucyv_20:after{display:none}._input_uucyv_6:checked+._label_uucyv_16 ._decoration_uucyv_28{animation:_cloud_uucyv_1 8s linear infinite;border-radius:9999px 9999px 0;height:20px;width:20px;top:50%;transform:translateY(-50%)}._input_uucyv_6:checked+._label_uucyv_16 ._decoration_uucyv_28:before{animation:none;height:10px;width:10px;bottom:0;left:-8px;top:auto}._input_uucyv_6:checked+._label_uucyv_16 ._decoration_uucyv_28:after{animation:none;border-bottom-right-radius:9999px;height:15px;width:15px;bottom:0;left:16px;top:auto}._label_uucyv_16{background-color:#2b2b2b;border:5px solid #5b5b5b;border-radius:9999px;cursor:pointer;display:inline-block;position:relative;height:51px;width:102px;transition:all .4s cubic-bezier(.46,.03,.52,.96)}._indicator_uucyv_20{background-color:#7b7b7b;border-radius:9999px;box-shadow:10px 0 #0003 inset;display:block;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) translate(-72%);transition:all .4s cubic-bezier(.46,.03,.52,.96);height:34px;width:34px}._indicator_uucyv_20:before,._indicator_uucyv_20:after{background-color:#fff;border-radius:9999px;content:"";display:block;position:absolute}._indicator_uucyv_20:before{background-color:#fff;left:5px;top:5px;opacity:.6;height:7px;width:7px}._indicator_uucyv_20:after{background-color:#fff;bottom:6.8px;opacity:.8;height:11.9px;width:11.9px;right:5.1px}._decoration_uucyv_28{animation:_twinkle_uucyv_1 3.4s infinite -.6s;background-color:#fff;border-radius:9999px;display:block;height:4px;width:4px;position:absolute;left:50%;top:65%}._decoration_uucyv_28:before,._decoration_uucyv_28:after{background-color:#fff;border-radius:9999px;content:"";display:block;position:absolute;height:5px;width:5px}._decoration_uucyv_28:before{top:-17px;left:8px;opacity:1;animation:_twinkle_uucyv_1 3s infinite}._decoration_uucyv_28:after{top:-6px;left:24px;animation:_twinkle_uucyv_1 3s infinite -.2s}@keyframes _cloud_uucyv_1{0%{transform:translateY(-50%)}50%{transform:translate(-50%,-50%)}to{transform:translateY(-50%)}}@keyframes _twinkle_uucyv_1{50%{opacity:.2}}._sidebar_14bou_1{position:fixed;top:72px;bottom:0;left:4px;background-color:var(--glass-background-color);-webkit-backdrop-filter:var(--glass-backdrop-filter);backdrop-filter:var(--glass-backdrop-filter);border:var(--glass-border);border-radius:var(--glass-border-radius);box-shadow:var(--glass-box-shadow);padding:8px;margin:0;max-height:var(--sidebar-height);transition-duration:var(--style-transition-duration);transition-property:var(--style-transition-property);width:var(--sidebar-width);z-index:999;transform:translate(-100%);animation:_sidebar-enter_14bou_1 .3s forwards}._sidebar_14bou_1._exit_14bou_21{animation:_sidebar-exit_14bou_1 .3s forwards}._sidebar_14bou_1._hide_14bou_24{display:none}._scrollContainer_14bou_28{display:flex;position:static;z-index:1;row-gap:4px;flex-direction:column;overflow-y:auto;overscroll-behavior:contain;max-height:100%;width:100%;border-radius:4px;transition-duration:var(--style-transition-duration);transition-property:var(--style-transition-property);z-index:999}@keyframes _sidebar-enter_14bou_1{0%{transform:translate(calc(-1 * (var(--sidebar-width) + 4px)));opacity:.7;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}to{transform:translate(0);opacity:1;-webkit-backdrop-filter:var(--glass-backdrop-filter);backdrop-filter:var(--glass-backdrop-filter)}}@keyframes _sidebar-exit_14bou_1{0%{transform:translate(0);opacity:1;-webkit-backdrop-filter:var(--glass-backdrop-filter);backdrop-filter:var(--glass-backdrop-filter)}to{transform:translate(calc(-1 * (var(--sidebar-width) + 4px)));opacity:.7;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}._accordion_1hmri_1{display:flex;flex-direction:column}._button_1hmri_6{align-self:flex-start;justify-content:space-between;background-color:var(--accordion-button-background-color);-webkit-backdrop-filter:var(--glass-backdrop-filter);backdrop-filter:var(--glass-backdrop-filter);border:var(--glass-border);border-radius:4px;box-shadow:var(--glass-box-shadow);font-size:var(--accordion-button-font-size);padding-left:16px;padding-right:4px;width:100%}._button_1hmri_6 svg{stroke:var(--accordion-button-chevron-color);transform:rotate(90deg);transition-property:var(--style-transition-property);transition-duration:var(--style-transition-duration)}._button_1hmri_6._open_1hmri_25 svg{transform:rotate(0)}._content_1hmri_29{background-color:var(--accordion-content-background-color);-webkit-backdrop-filter:var(--glass-backdrop-filter);backdrop-filter:var(--glass-backdrop-filter);border-left:var(--glass-border);border-right:var(--glass-border);border-bottom:var(--glass-border);border-bottom-left-radius:4px;border-bottom-right-radius:4px;box-shadow:var(--glass-box-shadow);display:flex;flex-direction:column;margin-left:2px;margin-right:2px;padding:10px}._linkWrapper_1logo_1{width:100%}._linkWrapper_1logo_1:hover{background-color:var(--link-hover-background-color);border-radius:4px}._link_1logo_1[role=button]{padding-left:12px;justify-content:flex-start;overflow:hidden;mask:var(--link-overflow-mask);width:100%}._tooltip_1edpy_1{position:absolute;background-color:#000000b3;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.3);border-radius:4px;box-shadow:0 4px 30px #0000001a;color:#ffffffe6;padding:6px;z-index:999;animation:_tooltip-enter_1edpy_1 var(--style-transition-duration) forwards}._tooltip_1edpy_1._exit_1edpy_13{animation:_tooltip-exit_1edpy_1 var(--style-transition-duration) forwards}._tooltip_1edpy_1:after{content:"";position:absolute;top:100%;left:50%;margin-left:-5px;border-color:rgba(0,0,0,.7) transparent transparent transparent;border-style:solid;border-width:5px}._text_1edpy_27{text-align:center}@keyframes _tooltip-enter_1edpy_1{0%{opacity:0}to{opacity:1}}@keyframes _tooltip-exit_1edpy_1{0%{opacity:1}to{opacity:0}}._main_1p6ym_1{display:flex;flex-direction:column;row-gap:48px;margin-bottom:var(--content-margin-bottom);margin-left:var(--content-margin-left);margin-right:var(--content-margin-right);margin-top:var(--content-margin-top);transition:margin .3s ease}._main_1p6ym_1._sidebarHidden_1p6ym_11{margin-left:4px}@media (max-width: 768px){._main_1p6ym_1{margin-left:4px}}._container_1htmy_1{display:flex;flex-direction:column;row-gap:48px}._sectionHeader_1htmy_7{align-self:flex-start;flex-grow:0;background:var(--section-header-background);-webkit-backdrop-filter:var(--glass-backdrop-filter);backdrop-filter:var(--glass-backdrop-filter);border:var(--glass-border);border-radius:var(--glass-border-radius);box-shadow:var(--glass-box-shadow);padding:20px;transition-duration:var(--style-transition-duration);transition-property:var(--style-transition-property)}._container_5c21h_1{background-color:var(--glass-background-color);-webkit-backdrop-filter:var(--glass-backdrop-filter);backdrop-filter:var(--glass-backdrop-filter);border:var(--glass-border);border-radius:var(--glass-border-radius);box-shadow:var(--glass-box-shadow);font-family:var(--font-family-sans-serif);padding:20px;transition-duration:var(--style-transition-duration);transition-property:var(--style-transition-property)}._label_5c21h_13{dominant-baseline:middle;text-anchor:middle;fill:var(--text-color);font-size:var(--bigo-chart-label-font-size);font-style:italic}._tableWrapper_5c21h_21{background-color:var(--table-wrapper-background-color);-webkit-backdrop-filter:var(--table-wrapper-backdrop-filter);backdrop-filter:var(--table-wrapper-backdrop-filter);border-radius:12px;border:1px solid var(--table-wrapper-border-color);padding:8px;overflow-x:auto}._red_5c21h_30{background-color:var(--color-red-alpha)}._oliveGreen_5c21h_34{background-color:var(--color-olive-green-alpha)}._green_5c21h_38{background-color:var(--color-green-alpha)}._orange_5c21h_42{background-color:var(--color-orange-alpha)}._yellow_5c21h_46{background-color:var(--color-yellow-alpha)}._gray_5c21h_50{background-color:var(--color-gray-alpha)}._container_12crg_1{background-color:var(--glass-background-color);-webkit-backdrop-filter:var(--glass-backdrop-filter);backdrop-filter:var(--glass-backdrop-filter);border:var(--glass-border);border-radius:var(--glass-border-radius);box-shadow:var(--glass-box-shadow);padding:20px;transition-duration:var(--style-transition-duration);transition-property:var(--style-transition-property)}._buttonContainer_12crg_12{display:flex;flex-direction:row;justify-content:space-between}._tabButtonContainer_12crg_18{display:flex;flex-direction:row;gap:12px;margin-bottom:12px}._tabButton_12crg_18{background-color:#fff9;border-bottom:2px solid var(--tab-button-border-bottom-color);border-radius:8px;font-size:var(--button-font-size);padding-left:var(--button-padding-x);padding-right:var(--button-padding-x);padding-top:var(--button-padding-y);padding-bottom:var(--button-padding-y);transition-duration:var(--style-transition-duration);transition-property:var(--style-transition-property);position:relative;height:48px;width:70px}._tabButton_12crg_18 svg{width:100%;height:100%}._tabButton_12crg_18:hover{background-color:#f8f8f8cc}._tabButton_12crg_18:active{background-color:var(--color-frost-white)}._tabButton_12crg_18[aria-selected=true]{border-bottom:2px solid var(--color-azure)}._code_4wy3e_1{border:.5px solid var(--code-border-color);border-radius:6px;font-size:var(--code-font-size);line-height:var(--code-line-height);position:relative;padding-left:2em}._code_4wy3e_1 ::selection{background-color:var(--code-line-hover-color)}._line_4wy3e_13{display:inline;border-left:.5px solid var(--code-line-number-color);padding-left:1em}._line_4wy3e_13:before{content:attr(data-line-number);position:absolute;color:var(--code-line-number-color);left:-5px;width:2em;text-align:right;-webkit-user-select:none;user-select:none}._line_4wy3e_13:hover,._line_4wy3e_13[focused]{background-color:var(--code-line-hover-color)}._line_4wy3e_13:hover:before,._line_4wy3e_13[focused]:before{color:var(--code-line-number-hover-color)}._copyButton_1hjzm_1{background-color:var(--copy-button-background-color);border:none;border-bottom:2px solid var(--tab-button-border-bottom-color);border-radius:8px;box-shadow:none;padding-left:var(--button-padding-x);padding-right:var(--button-padding-x);padding-top:var(--button-padding-y);padding-bottom:var(--button-padding-y);height:48px;width:70px;display:inline-flex;align-items:center;justify-content:center;outline:none}._copyButton_1hjzm_1:hover{background-color:var(--copy-button-hover-background-color)}._copyButton_1hjzm_1:active{background-color:var(--copy-button-active-background-color)}._copySvg_1hjzm_25{height:100%;width:100%;opacity:1;fill:var(--copy-button-svg-fill-color)}._checkSvg_1hjzm_32{height:100%;width:100%}._checkSvgPath_1hjzm_37{stroke:var(--copy-button-svg-fill-color);stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:16;stroke-dashoffset:16;animation:_draw_1hjzm_1 var(--style-transition-duration) ease-in-out forwards}._enter_1hjzm_48{animation:_fade-in_1hjzm_1 .15s forwards}._exit_1hjzm_52{animation:_fade-out_1hjzm_1 .15s forwards}@keyframes _fade-in_1hjzm_1{0%{opacity:0}to{opacity:1}}@keyframes _fade-out_1hjzm_1{0%{opacity:1}to{opacity:0}}@keyframes _draw_1hjzm_1{to{stroke-dashoffset:0}} diff --git a/docs/assets/index-or45TzHb.css b/docs/assets/index-or45TzHb.css new file mode 100644 index 0000000..44059df --- /dev/null +++ b/docs/assets/index-or45TzHb.css @@ -0,0 +1 @@ +:root{--color-black: #000000;--color-white: #ffffff;--color-frost-white: #f8f8f8;--color-platinum: #e0e0e0;--color-azure: #03a9f4;--color-comet: #5a5d7a;--color-gunmetal: #2e3140;--color-red: #ff4d4d;--color-green: #3fc86f;--color-orange: #ffa116;--color-code-red: #ff6188;--color-code-orange: #fc9867;--color-code-yellow: #ffd866;--color-code-green: #a9dc76;--color-code-blue: #78dce8;--color-code-purple: #ab9df2;--color-code-mist: #fcfcfa0c;--color-code-linen: #fdf9f3;--color-code-slate: #c1c0c0;--color-code-venus: #939293;--color-code-dull: #727072;--color-code-carbon: #5b595c;--color-code-dark: #2c292d;--color-red-alpha: rgba(255, 77, 77, .7);--color-green-alpha: rgba(63, 200, 111, .7);--color-olive-green-alpha: rgba(169, 220, 118, .7);--color-orange-alpha: rgba(255, 161, 22, .7);--color-yellow-alpha: rgba(255, 216, 102, .7);--color-gray-alpha: rgba(190, 190, 190, .7);--color-black-alpha-1: rgba(0, 0, 0, .1);--color-black-alpha-2: rgba(0, 0, 0, .2);--color-black-alpha-3: rgba(0, 0, 0, .3);--color-black-alpha-4: rgba(0, 0, 0, .4);--color-black-alpha-5: rgba(0, 0, 0, .5);--color-black-alpha-6: rgba(0, 0, 0, .6);--color-black-alpha-7: rgba(0, 0, 0, .7);--color-black-alpha-8: rgba(0, 0, 0, .8);--color-black-alpha-9: rgba(0, 0, 0, .9);--color-white-alpha-1: rgba(255, 255, 255, .1);--color-white-alpha-2: rgba(255, 255, 255, .2);--color-white-alpha-3: rgba(255, 255, 255, .3);--color-white-alpha-4: rgba(255, 255, 255, .4);--color-white-alpha-5: rgba(255, 255, 255, .5);--color-white-alpha-6: rgba(255, 255, 255, .6);--color-white-alpha-7: rgba(255, 255, 255, .7);--color-white-alpha-8: rgba(255, 255, 255, .8);--color-white-alpha-9: rgba(255, 255, 255, .9);--gradient-oceanic-blue: linear-gradient(to right, #56ccf2, #2f80ed);--gradient-pastel-rainbow: linear-gradient(135deg, #ffb6c1, #ffcc99, #ffff99, #ccffcc, #99ccff, #cc99ff);--gradient-pastel-rainbow-transparent: linear-gradient(135deg, rgba(255, 183, 197, .5), rgba(255, 240, 245, .5), rgba(204, 255, 144, .5), rgba(128, 216, 255, .5));--gradient-mask-right: linear-gradient(90deg, #000 90%, transparent)}:root{--accordion-button-font-size: 1.25rem;--button-padding-x: 16px;--button-padding-y: 4px;--button-border-radius: 4px;--button-font-size: 1.375rem;--bigo-chart-label-font-size: 1.5rem;--brand-color: var(--color-white-alpha-4);--card-border-radius: 6px;--card-font-size: 1.125rem;--card-padding: 20px;--code-border-color: var(--color-white-alpha-3);--code-font-size: 1.125rem;--code-line-height: normal;--code-line-hover-color: var(--color-code-mist);--code-line-number-color: var(--color-code-carbon);--code-line-number-hover-color: var(--color-code-slate);--copy-button-background-color: var(--color-white-alpha-6);--copy-button-hover-background-color: var(--color-white-alpha-7);--copy-button-active-background-color: var(--color-frost-white);--copy-button-svg-fill-color: var(--color-black-alpha-5);--content-margin-left: 308px;--content-margin-right: 4px;--content-margin-top: 72px;--content-margin-bottom: 4px;--font-family-sans-serif: "Segoe UI", Roboto, sans-serif;--font-family-monospace: firacode, monospace;--font-size: 16px;--font-weight: 400;--glass-backdrop-filter: blur(8px);--glass-border-radius: 12px;--glass-box-shadow: 0 4px 30px var(--color-black-alpha-1);--gutter-spacing: 2rem;--h1-font-family: silkscreen, monospace;--h3-font-family: firacode, monospace;--h1-font-size: 2rem;--h2-font-size: 2rem;--h3-font-size: 1.5rem;--header-font-weight: 500;--line-height: 1.5;--link-hover-color: var(--color-azure);--link-overflow-mask: var(--gradient-mask-right);--tab-button-border-bottom-color: var(--color-white-alpha-6);--table-border-color: var(--color-white-alpha-6);--table-font-family: var(--font-family-sans-serif);--table-font-size: 1.25rem;--table-wrapper-border-color: var(--color-black-alpha-3);--table-wrapper-backdrop-filter: blur(32px);--topbar-title-color: var(--color-white-alpha-8);--topbar-title-hover-color: var(--gradient-pastel-rainbow);--topbar-brand-font-size: var(--h1-font-size);--topbar-brand-gradient: var(--gradient-oceanic-blue);--topbar-height: 64px;--topbar-padding: 6px 32px;--section-header-background: var(--gradient-pastel-rainbow-transparent);--sidebar-height: calc(100vh - 76px) ;--sidebar-width: 300px;--style-transition-property: background, background-color, background-image, border-color, box-shadow, color, fill, height, max-height, opacity, stroke, transform, outline;--style-transition-duration: .3s}[data-theme=light]{--accordion-button-background-color: var(--color-white-alpha-5);--accordion-button-chevron-color: var(--color-black-alpha-4);--accordion-content-background-color: var(--color-white-alpha-7);--background-image: url(/leetcode-cheatsheet/assets/bg-cotton-orb-COQ-b5QR.webp);--glass-background-color: var(--color-white-alpha-2);--glass-border: 1px solid var(--color-white-alpha-3);--link-hover-background-color: var(--color-white-alpha-7);--table-cell-text-color: var(--color-gunmetal);--table-wrapper-background-color: var(--color-white-alpha-4);--text-color: var(--color-comet);--nav-icon-link-color: var(--color-white-alpha-9);--nav-icon-link-hover-color: var(--color-white-alpha-7);--nav-icon-link-active-color: var(--color-white-alpha-8);--nav-link-active-color: var(--color-white-alpha-8);--toggler-icon-color: var(--color-black-alpha-6);color-scheme:light}[data-theme=dark]{--accordion-button-background-color: var(--color-black-alpha-4);--accordion-button-chevron-color: var(--color-white-alpha-4);--accordion-content-background-color: var(--color-black-alpha-2);--background-image: url(/leetcode-cheatsheet/assets/bg-city-night-Hn7IgFgp.webp);--glass-background-color: var(--color-black-alpha-2);--glass-border: 1px solid var(--color-black-alpha-3);--link-hover-background-color: var(--color-black-alpha-4);--table-cell-text-color: var(--color-frost-white);--table-wrapper-background-color: var(--color-black-alpha-1);--text-color: var(--color-platinum);--nav-icon-link-color: var(--color-white-alpha-8);--nav-icon-link-hover-color: var(--color-white-alpha-4);--nav-icon-link-active-color: var(--color-black-alpha-6);--nav-link-active-color: var(--color-black-alpha-6);--toggler-icon-color: var(--color-white-alpha-8);color-scheme:dark}*,*:before,*:after{box-sizing:border-box;background-repeat:no-repeat}html{font-family:var(--font-family-monospace)}body{background-attachment:fixed;background-image:var(--background-image);background-size:cover;color:var(--text-color);font-size:var(--font-size);font-weight:var(--font-weight);line-height:var(--line-height);text-rendering:optimizeLegibility;overflow-wrap:break-word;margin:0;transition-duration:var(--style-transition-duration);transition-property:var(--style-transition-property);width:100%}section{transition-property:var(--style-transition-property);transition-duration:var(--style-transition-duration)}@media(min-width:768px){section{padding-left:var(--gutter-spacing);padding-right:var(--gutter-spacing)}}@media(max-width:768px){section{padding-left:0;padding-right:0}}main{height:100vh}pre{margin:0}@keyframes gradient{0%{background-position:0% 0%}50%{background-position:100% 100%}to{background-position:0% 0%}}@font-face{font-display:swap;font-family:firacode;src:url(/leetcode-cheatsheet/assets/firacode-DmifnrmV.woff2) format("woff2")}@font-face{font-display:swap;font-family:neometric;src:url(data:font/woff2;base64,d09GMgABAAAAAA9UAA8AAAAAIhAAAA74AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cGh4bikAcIAZgAIMKEQgKonyZUwuBHAABNgIkA4I0BCAFiX4HgTwbxhuzEVW3N6l5kf2XCeYYov1Mq4pkMsVlMrIMuViGhzwkNdxtl1eX9X/56mHVL/TgepqD2Ke7pBNbPx8hyaz/uFa+n2RmM7NZYDogEOYKBBrJ17j6WlJAoOoIrqdNf4mIQEg1JhAe0d9GDLj3sDsqFiOESypOqpGZQs1jNZWQVNSvop8x4Hogn3iMZNG6e5dHYMzHozAalAJhUB4lUAZJQkKCkTdHOvXuZRfu9PFawAkIN5wkvVlhFWHVt5sVD0sR8CUlvAw5mNeleHFwXJNeqAMId9J/Wiuz84LkgSqkIiQJH03GVP2G7O+anoYZrhDscncYZzeHElACC9U7YdTHIMwJfUadkaf1uRPG3CIeFpNLLb+X4bJzZ2KUcRAg0LQ+l5cnAkAAPP3uiwC40ZX3GHFZEfiZBQtzC3iEo3JhU1wVva+ZW3BqF1CTNN42jOctGVJwev8VJDpvIgBlK+112n1f4iQ+pZCGKmgUNWz7ju7p3ptmiayENXjez+k8ycW8J5/AV7a+rR3ubHd73T9hi63CJGZ87Tf/JH6hOLE4uTiFOOXWiolTbaW49kpoClGc9jgdcTrjDMcZiTMaZzzORJzJOFNdNd1Ls73EydZz7r5A3CmMGboZOlgsPomVNic66hoYfe1MX9TqpE6me+1JxWMkYGr9HAEUDO8lxbCehG8PdV0OqwKu4mr9ull8bU05sWpEXAskJMH6ODpcH8otKYkOF2EjvqtNwj/qGht97U8/12onxND9OBBUjtTleqncY0Jxft+LZvuMkcMOA7iWmLcK/sULtFoYmymqBFqXEkcASiSemdcsBW+XNYPtlFWAkAMJv+r4Jy+kVxK2XJgaXNQEqHFSe2rYdeS1nTsYk7AZJzGDrUBYcdw/ahnv+Tip3zTLyAZsIEEVxPUpwnA9qrMYFSjHZVQc2cBRW5zufMMTxQtNtVlBx812NSWxWF+WwAAmSUiCQKeJcPj9bVnsuk3okDEPTZ97KccAcW25dsxMj5swMMQ0cc05aDftuoK0gXk4JAk8JiE4gnJTAZzmYHzaEgLmAF7f0OtxtDPTfcOKaRYKkVbgQZ0s5PN1Iwy4gE4hgGH15fwS46sBM9r9DuzczWb29k0/BjoGu28opTB4hGAUYx3jvTfR4kmsp+wM5XBQv8fLGgaVnkDUZoiiO6UBivw5+WLoccoTTIF+rID+wTQR8cH4m8G3v39DQBgQFSMkpemyagwNDR4tvbz6jRAak6OLKXJhCGCKited8DAAm3PjoBF7xSkAzrGPph/a/MJixUOAPNruj3ECQPIutGH/iySPYNwi3kyfVvL3wAB87UdV+VigqT9Z2PzZ+DlxupS8kqq6fsOWjLnH/v8fJOUVeWjOGFV8j/7V9NdA/fXWU3dpSX9+ZyGLDXRDxGjaAVnkTOAnbqvRHwDJYD4qm93xRbUWwkLgbuv/Dzt17tI1LDwiMio6JjYuPiERAACt5yQJkianpKalZ/zXrXumomq6YVq240J7Oc6/wDrq/6CHLuJSbtse4h/oX+L+qt3DcLRsZgxsA8eaBS46laTdWhqBuVv38CTyy6TkKUJWZ6fzyFY2SzDrauuzO5teleRMdd11UjnZpAxKJ2VGlJ2p6Za428XFNM67c0uh9LJ4KMOqpF36lZPX4h3pWRAJSImY08XJdifMpPKS1pVbPMn71/JZEDDQbvLemPVJolJ1a9y5NI0nnjXzXeU6xQsvzr6cdPn1qGOv8g/TWd6X2WfiJkgS1KmCC5MNhO7VOdenpai9a1MxjiE0jmKHFAMNRDFAaGoJom7SSc0AhDFHKfqcoSzh9tg4jgQbW16nM28li38A6XRZGgdP433aOYyjdGxFhBy91q+o9kIonTquvV0wEBDaGBTQ2W5DQcJJqvE5xVHNkqXNAkjqWSV2Lhe+hczL4RLbGQDK5Ntog8KIlr3iBHl5r/YCwpccvUb9Kn95z+fuMj1P6gJJWjAetUyJgTqLOT5z+kGfIW0tNmbLOWnbQwVkzS3qMQjCZpAIv1naWdn1HDThNnA9//U/amWbW2rJ0YCNS/csEn0HzWNjBusMqZhGwc6074aGbI7tAhJsODwMBUUvrncoauimFaGEsNRKspAWZ4hJE2ZU9itBi0VoyGchSLYH3Nrmc0aCTdujGARZ+l/tD6MuhbfVTQfqAgKntmEtQ5c5c8T0G5SdQb3df0KU2Rb9R/2PbBisc+bGSkP+leu9sd21PwYgUVkQJRJqdfKBch5jJWfndChBHfwn/MvgYw5Kg96PP+5IwiCjn2KLz1toG+8ucZmqZcIqF0p8uLWNPIeCdnZVoLhVkNXOyodiq4QGDHoiB/b4QbVEx5i4lFL6Eeg6+N3FYW5S7K6bQ+9Spnsd3zH1drgJiRdKkLoCOVmsPsI+uWFVW7HcPoZPJdtlK2AgQRYhY0B5tEugJQCTsccKlTRxpfSbHaRTSqWzzBaL7NnmnlFmKPHUBekKeYodHqDstHL2ohR0mR1xnDby3s7B7mR4z1s3A1l0lAXhdEesBg14vFLKdF4JrzKac9Kt+zrqa1SMmv2A17YgWyOmzkNVifNERd7djD3neOeC4oAdt79ZeexGKyNLNwsAWiXYiBjYWKLqh31B7Z+pxxTq8XOchDGGXChX0NmjY9o1/sy8AHUgo4y84haNdcPtGRLVOV39u28lH8sCI6sPVy+N8K+fPSvCJbg078IBdVhy87arCVckfcEW9TSIx58abdquahD1PHKwqGiKpajkAtxYemEOLVP88MDWak402jT6bsXAUnjidj4IFZjCMN+4cfRonVXHbfYHwQySy1lKjqyIopBEQSFgjYQlIZjAnABRbuCaHPGTtYi0FHe4NsTN8PJXhccSlEUSo3Xjc8TrgoAe/xr1S9aVohBFsYrnXhQoDafxGSnNF9ACnK5Rp6f1TymFeqNSiqVWbA2m7JS+5M2u17AvhNTWMCbTesxMNqmSyZFUJmt3h7TAm2ZIGl4nZWpDsq78cpm/UqKgWHfV/HgUzDOGhdrF3hfQDwQyDMz4O6ivI23JNnknAmWoNaOeRTPQtFGCfAE/d1d9sKA8uB0hVJg0PNUbo67apENbGlN05VfK/BlTNaMzmWilVCGvwkUp2u0MQldM4eHJl2fnFKNRLRVdxeNiB8On0tTqERp1WrpMpfNpAZ85J+E0jZrrak1amAGVq9cQVLNzJzxPU4PwGuv0zLbMIrP56CQz3DrAHpDp9YWaTEl3NW2hvmy34NigSIvKHDnQXWdEmVWWKNBCza7P5Xa1KF08rGNv+tzg/Oy+nMOibBueo2OZK4JF86FSVlpjoNpfDohKDAAzhdnrPrHw6Gvy+jiYBSFHX+FXnoRl4Qq4QvowdMrNQXk8gN1bkWK0LjC3HUfzaqDS04uwxK1NjQd7QWglqQQhlokR9iWrBoRGghBR8ST3JL2NJBOELBEWkU08uGU8ZuoLD+KDsSWSwRQ2de6JV9MmZd4Grhhjo0KQWWUP4tWAduKuXROJsoZxhxAvHW/ai+AWW0h5Fs0Y5EkqD3gQ5qjIIznoGJh3Qu9rj14D1xdG02reg56zGhQKJJkSzWayOdISiTWLoKbZ5H7GKkv/EW72lunLZun1sgP4QJRJZY50N6FCKyVuwgNhEKkknsE4GNIkobvIvUn6PyXQ4ocCmmc08Iw08Hbj7WSwkRkiGCygYaiRKLeWbjWAxRhDCX3bj/YfepXBk5S1f2/7Ds+h0V3q3XMicIRHjh6EAsIS+G79gVm8GZjfXFQ347iWgqxdbriecxWVa6qZMZkYXYvYLi3kz3gfwvfkZaQMbwvWzpmGgoqemqyifim5AmVpelYY8iF7+rGycb9xi06n/xaM1K7qmZy3O0ccIxnZr760WzqOcVfZ/e1MjghSBUghR7XkjjDpPDC+BwzkxY2X7UXqcSvvokEKBum8ctSPMqPD30e76v4ZWWD53F05cHwhU/I1whsja9g3Cm0hLcmYYBC2spi1K3Q1axt27f8qSlpa7zuULGqFUJawUPnuPXmflWp0YZkx7/H7TEbsGIvKBGyrFdd3ZIL8c2LURVluuIZHzQYWNJ93SfGYCItMKMI3TVlJ1rfgPz6+sAP2JRa29kKM3L0hK4GFzZ1xZ9/G8EZfWCsuKBAnsagzSab6+jT5ZuTDHqO1Ftcq8fbuGFuhCult/s/OJO2K5uiolc1acDgRlv4idLYFXZ3U53kp9GwupqVWXDWDOIfJ6fDGUC2m6+3qVlrTCr8/LexrDo8MhwjcEhYJYRBO4Orximzjnu3UBNEAdmQ33r79bH9Y5HnDP71q+J3GBL4j46tk/vkhxss7Eu01DwIgMQUZLvRfxLlfYvbdP3GxbnE47XjNfgJwWuiWwnPSitajPeTTDjdzj8bO7VM3iU9yJD9qmPKubmN+85rTw1ZHzhAeSvBJv+adSuZU7CUHETfX2G4+d7xYz7Iz+LWlSe1TtIa75HuwT7SAtv0iRmYuwyJw5qI4XINmkAFGTgMbwtOtua7PwWNBDFcFo3shONc4CcE5GUJjmy2sl4Y3Cou29RKSfdewgYdfEKa+w1dYuY8RUBmbsEWnAWDzoSmI22XBKLcEl/ZeCMnhC014MOt0+GhhsX7WCym6OWzg4UOEaf8uElbZYwuB+i2ZaTq9w6iQyc0QIUJCEoFIgEIHpGjFRokJmgRakVzixIm4vpsRhmRsWU4UrwPHoCb4A94bEYk/gNn5U5vXTjj9rcPl5PzP0ChAYfrHnx0IcJXoNETPRjiKS+v+7G0urL7orxeWZh6+MeBeAEw3V28+hUp2cwuaDH/3zqc3+EtLDvYVVb69TeP/p5Sc0sgArO41JgtsS399vNGk0GkhEUdY+vDaiZrICd3Z1nzKyy+JjIqoNgEUclDkZJgZGFWvqZOm3/Emh2Ez/snv1nM49PbMkyXRMwd9A4DkSTvLfg1//cNmzObAga4aZ04VDh2PxIvSzoBAz0E1Ny9NWI9Pwp2jvQwUYBar/ZfTprD4PPl3TDBYKQ4uHl4+fgFBIWERUTFxaVk5eQVFJWUVVTV1jZj+tbVp16FTl249evXpN2DQhDz5ChSSkVOgYISSipqGFo2h00NPvfTWR1/97LQL) format("woff2")}@font-face{font-display:swap;font-family:silkscreen;src:url(/leetcode-cheatsheet/assets/silkscreen-DLtPLOcD.woff2) format("woff2")}h1,h2,h3{font-weight:var(--header-font-weight);margin:0}h1{font-family:var(--h1-font-family);font-size:var(--h1-font-size)}h2{font-size:var(--h2-font-size)}h3{font-family:var(--h3-font-family);font-size:var(--h3-font-size);margin-bottom:12px}code{font-family:var(--font-family-monospace);white-space:pre}button,a[role=button]{display:inline-flex;align-items:center;justify-content:center;background:transparent;border:none;box-shadow:none;color:inherit;font-family:inherit;cursor:pointer;outline:none;margin:0;padding:0;text-decoration:none;transition-duration:var(--style-transition-duration);transition-property:var(--style-transition-property);white-space:nowrap}button svg,a[role=button] svg{height:1em;width:1em;vertical-align:middle}a:not([role=button]){color:inherit;cursor:pointer;text-decoration:none;transition-duration:var(--style-transition-duration);transition-property:var(--style-transition-property)}a:not([role=button]):hover{color:var(--link-hover-color)}a:not([role=button]):active{color:inherit}table,th,td,tr{transition-duration:var(--style-transition-duration);transition-property:var(--style-transition-property)}table{border-collapse:collapse;font-family:var(--table-font-family);font-size:var(--table-font-size);position:relative;width:100%}td:not(:first-child){color:var(--table-cell-text-color)}th,td{background-clip:padding-box;overflow:hidden;padding:8px;text-align:center}th:not(:last-child),td:not(:last-child){border-right:4px solid var(--table-border-color)}tr:not(:last-child) th,tr:not(:last-child) td{border-bottom:4px solid var(--table-border-color)}.hljs{display:block;overflow-x:auto;padding:.5em;background-color:var(--color-code-dark)}.hljs-built_in{color:var(--color-code-green)}.hljs-selector-tag,.hljs-section,.hljs-link{color:var(--color-code-blue)}.hljs-keyword{color:var(--color-code-red)}.hljs-keyword.class_,.hljs-keyword.def_{color:var(--color-code-blue);font-style:italic}.hljs{color:var(--color-code-linen)}.hljs-subst{color:var(--color-code-purple)}.hljs-attr,.hljs-meta-keyword,.hljs-title{color:var(--color-code-green)}.hljs-title.class_,.hljs-type{color:var(--color-code-blue)}.hljs-string,.hljs-meta,.hljs-name,.hljs-symbol,.hljs-bullet,.hljs-addition,.hljs-variable,.hljs-template-tag,.hljs-template-variable{color:var(--color-code-yellow)}.hljs-comment,.hljs-quote,.hljs-deletion{color:var(--color-code-dull)}.hljs-section,.hljs-strong{font-weight:700}.hljs-doctag,.hljs-literal,.hljs-number{color:var(--color-code-purple)}.hljs-emphasis{font-style:italic}.hljs-params{color:var(--color-code-orange)}.hljs-params.self_{color:var(--color-code-slate)}.hljs-params.comma_{color:var(--color-code-venus)}.hljs-params.operator_{color:var(--color-code-red)}.hljs-params .hljs-built_in{color:var(--color-code-blue)}.hljs-operator{color:var(--color-code-red)}._wave_nm5to_1{background:linear-gradient(210,#ffb7c580,#fff0f580,#ccff9080,#80d8ff80);border-radius:1000% 1000% 0 0;position:fixed;width:200%;height:144px;animation:_wave_nm5to_1 10s -3s linear infinite;transform:translateZ(0);opacity:.7;bottom:0;left:0;z-index:-1}._wave_nm5to_1:nth-of-type(2){background:linear-gradient(180deg,#ffb7c580,#fff0f580,#ccff9080,#80d8ff80);bottom:-20px;opacity:.7;animation:_wave_nm5to_1 18s linear reverse infinite}._wave_nm5to_1:nth-of-type(3){background:linear-gradient(135deg,#ffb7c580,#fff0f580,#ccff9080,#80d8ff80);bottom:-40px;opacity:.8;animation:_wave_nm5to_1 20s -1s reverse infinite}@keyframes _gradient_nm5to_1{0%{background-position:0% 0%}50%{background-position:100% 100%}to{background-position:0% 0%}}@keyframes _wave_nm5to_1{2%{transform:translate(1)}25%{transform:translate(-25%)}50%{transform:translate(-50%)}75%{transform:translate(-25%)}to{transform:translate(1)}}._topbar_103sc_1{background-color:var(--glass-background-color);-webkit-backdrop-filter:var(--glass-backdrop-filter);backdrop-filter:var(--glass-backdrop-filter);border:var(--glass-border);border-radius:var(--glass-border-radius);box-shadow:var(--glass-box-shadow);display:flex;flex-direction:column;position:fixed;overflow:hidden;max-height:var(--topbar-height);padding:var(--topbar-padding);left:4px;right:0;top:4px;transition-property:var(--style-transition-property);transition-duration:var(--style-transition-duration);width:calc(100% - 8px);z-index:999}._container_103sc_22{display:flex;align-items:center;justify-content:space-between}._buttonContainer_103sc_28{display:flex;flex-direction:row;align-items:center;gap:12px}._title_103sc_35{color:var(--topbar-title-color);text-decoration:none;padding:0;transition-duration:var(--style-transition-duration);transition-property:var(--style-transition-property)}._title_103sc_35:hover{animation:_animated-gradient_103sc_1 3s ease alternate infinite;background-image:var(--topbar-title-hover-color);background-size:300% 300%;-webkit-background-clip:text;background-clip:text;color:transparent}._title_103sc_35:active{color:var(--nav-link-active-color)}._iconLink_103sc_53{display:inline-block;border:1px solid var(--nav-icon-link-color);border-radius:var(--button-border-radius);height:44px;width:44px;padding:4px;transition-duration:var(--style-transition-duration);transition-property:var(--style-transition-property)}._iconLink_103sc_53 svg{height:100%;width:100%;vertical-align:middle}._iconLink_103sc_53:hover{background-color:var(--nav-icon-link-hover-color)}._iconLink_103sc_53:active{background-color:var(--nav-icon-link-active-color)}._hamburger_103sc_75:hover{cursor:pointer}._hamburgerIcon_103sc_79{background-color:var(--toggler-icon-color);display:block;height:3px;width:30px;transition-property:var(--style-transition-property);transition-duration:var(--style-transition-duration)}._hamburgerTop_103sc_88{transform:rotate(45deg);transform-origin:10% 10%}._hamburgerTop_103sc_88._collapsed_103sc_92{transform:rotate(0)}._hamburgerMiddle_103sc_96{filter:alpha(opacity=0);opacity:0;margin:5px auto}._hamburgerMiddle_103sc_96._collapsed_103sc_92{opacity:1;filter:alpha(opacity=100)}._hamburgerBottom_103sc_106{transform:rotate(-45deg);transform-origin:10% 90%}._hamburgerBottom_103sc_106._collapsed_103sc_92{transform:rotate(0)}@keyframes _animated-gradient_103sc_1{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}._brand_18f9t_1{color:var(--brand-color);font-size:var(--topbar-brand-font-size);transition-duration:var(--style-transition-duration);transition-property:var(--style-transition-property);-webkit-user-select:none;user-select:none}._brand_18f9t_1:hover{-webkit-background-clip:text;background-clip:text;background-image:var(--topbar-brand-gradient);background-size:100%;color:transparent;cursor:pointer}._brand_18f9t_1:active{color:var(--glass-background-color)}._bounce_18f9t_19{animation:_bounce_18f9t_19 .5s ease-in-out forwards}._glowDisappear_18f9t_23{animation:_glow-disappear_18f9t_1 1.5s ease-out forwards}._heartBeat_18f9t_27{animation:_heart-beat_18f9t_1 .5s ease-in-out forwards}._rubberBand_18f9t_31{animation:_rubber-band_18f9t_1 .5s ease forwards}._rotate_18f9t_35{animation:_rotate_18f9t_35 .5s ease forwards}@keyframes _bounce_18f9t_19{0%,20%,53%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1);transform:translateZ(0)}40%,43%{animation-timing-function:cubic-bezier(.755,.05,.855,.06);transform:translate3d(0,-30px,0) scaleY(1.1)}70%{animation-timing-function:cubic-bezier(.755,.05,.855,.06);transform:translate3d(0,-15px,0) scaleY(1.05)}80%{transition-timing-function:cubic-bezier(.215,.61,.355,1);transform:translateZ(0) scaleY(.95)}90%{transform:translate3d(0,-4px,0) scaleY(1.02)}}@keyframes _glow-disappear_18f9t_1{0%{text-shadow:0px -5px 10px rgb(255,255,255),0px 0px 5px rgba(255,255,255,0),0px 0px 10px rgba(255,255,255,0),2px 1px 15px rgba(100,240,255,0),0px 0px 20px rgba(255,255,255,0);opacity:1}90%{text-shadow:0px -5px 10px rgb(255,255,255),0px 0px 5px rgba(255,255,255,0),0px 0px 10px rgba(255,255,255,0),2px 1px 4px rgb(255,100,100),0px 0px 20px rgba(255,255,255,0);opacity:0}to{color:var(--glass-background-color);opacity:1}}@keyframes _heart-beat_18f9t_1{0%{transform:scale(1)}14%{transform:scale(1.3)}28%{transform:scale(1)}42%{transform:scale(1.3)}70%{transform:scale(1)}}@keyframes _rubber-band_18f9t_1{0%{transform:scaleZ(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleZ(1)}}@keyframes _rotate_18f9t_35{0%{transform:rotate(0)}to{transform:rotate(360deg)}}._container_uucyv_1{display:flex;justify-content:center}._input_uucyv_6{clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;width:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}._input_uucyv_6:checked+._label_uucyv_16{background-color:#8fb5f5;border-color:#347cf8}._input_uucyv_6:checked+._label_uucyv_16 ._indicator_uucyv_20{background-color:#ecd21f;box-shadow:none;transform:translate(-50%,-50%) translate(72%)}._input_uucyv_6:checked+._label_uucyv_16 ._indicator_uucyv_20:before,._input_uucyv_6:checked+._label_uucyv_16 ._indicator_uucyv_20:after{display:none}._input_uucyv_6:checked+._label_uucyv_16 ._decoration_uucyv_28{animation:_cloud_uucyv_1 8s linear infinite;border-radius:9999px 9999px 0;height:20px;width:20px;top:50%;transform:translateY(-50%)}._input_uucyv_6:checked+._label_uucyv_16 ._decoration_uucyv_28:before{animation:none;height:10px;width:10px;bottom:0;left:-8px;top:auto}._input_uucyv_6:checked+._label_uucyv_16 ._decoration_uucyv_28:after{animation:none;border-bottom-right-radius:9999px;height:15px;width:15px;bottom:0;left:16px;top:auto}._label_uucyv_16{background-color:#2b2b2b;border:5px solid #5b5b5b;border-radius:9999px;cursor:pointer;display:inline-block;position:relative;height:51px;width:102px;transition:all .4s cubic-bezier(.46,.03,.52,.96)}._indicator_uucyv_20{background-color:#7b7b7b;border-radius:9999px;box-shadow:10px 0 #0003 inset;display:block;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) translate(-72%);transition:all .4s cubic-bezier(.46,.03,.52,.96);height:34px;width:34px}._indicator_uucyv_20:before,._indicator_uucyv_20:after{background-color:#fff;border-radius:9999px;content:"";display:block;position:absolute}._indicator_uucyv_20:before{background-color:#fff;left:5px;top:5px;opacity:.6;height:7px;width:7px}._indicator_uucyv_20:after{background-color:#fff;bottom:6.8px;opacity:.8;height:11.9px;width:11.9px;right:5.1px}._decoration_uucyv_28{animation:_twinkle_uucyv_1 3.4s infinite -.6s;background-color:#fff;border-radius:9999px;display:block;height:4px;width:4px;position:absolute;left:50%;top:65%}._decoration_uucyv_28:before,._decoration_uucyv_28:after{background-color:#fff;border-radius:9999px;content:"";display:block;position:absolute;height:5px;width:5px}._decoration_uucyv_28:before{top:-17px;left:8px;opacity:1;animation:_twinkle_uucyv_1 3s infinite}._decoration_uucyv_28:after{top:-6px;left:24px;animation:_twinkle_uucyv_1 3s infinite -.2s}@keyframes _cloud_uucyv_1{0%{transform:translateY(-50%)}50%{transform:translate(-50%,-50%)}to{transform:translateY(-50%)}}@keyframes _twinkle_uucyv_1{50%{opacity:.2}}._sidebar_14bou_1{position:fixed;top:72px;bottom:0;left:4px;background-color:var(--glass-background-color);-webkit-backdrop-filter:var(--glass-backdrop-filter);backdrop-filter:var(--glass-backdrop-filter);border:var(--glass-border);border-radius:var(--glass-border-radius);box-shadow:var(--glass-box-shadow);padding:8px;margin:0;max-height:var(--sidebar-height);transition-duration:var(--style-transition-duration);transition-property:var(--style-transition-property);width:var(--sidebar-width);z-index:999;transform:translate(-100%);animation:_sidebar-enter_14bou_1 .3s forwards}._sidebar_14bou_1._exit_14bou_21{animation:_sidebar-exit_14bou_1 .3s forwards}._sidebar_14bou_1._hide_14bou_24{display:none}._scrollContainer_14bou_28{display:flex;position:static;z-index:1;row-gap:4px;flex-direction:column;overflow-y:auto;overscroll-behavior:contain;max-height:100%;width:100%;border-radius:4px;transition-duration:var(--style-transition-duration);transition-property:var(--style-transition-property);z-index:999}@keyframes _sidebar-enter_14bou_1{0%{transform:translate(calc(-1 * (var(--sidebar-width) + 4px)));opacity:.7;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}to{transform:translate(0);opacity:1;-webkit-backdrop-filter:var(--glass-backdrop-filter);backdrop-filter:var(--glass-backdrop-filter)}}@keyframes _sidebar-exit_14bou_1{0%{transform:translate(0);opacity:1;-webkit-backdrop-filter:var(--glass-backdrop-filter);backdrop-filter:var(--glass-backdrop-filter)}to{transform:translate(calc(-1 * (var(--sidebar-width) + 4px)));opacity:.7;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}._accordion_1hmri_1{display:flex;flex-direction:column}._button_1hmri_6{align-self:flex-start;justify-content:space-between;background-color:var(--accordion-button-background-color);-webkit-backdrop-filter:var(--glass-backdrop-filter);backdrop-filter:var(--glass-backdrop-filter);border:var(--glass-border);border-radius:4px;box-shadow:var(--glass-box-shadow);font-size:var(--accordion-button-font-size);padding-left:16px;padding-right:4px;width:100%}._button_1hmri_6 svg{stroke:var(--accordion-button-chevron-color);transform:rotate(90deg);transition-property:var(--style-transition-property);transition-duration:var(--style-transition-duration)}._button_1hmri_6._open_1hmri_25 svg{transform:rotate(0)}._content_1hmri_29{background-color:var(--accordion-content-background-color);-webkit-backdrop-filter:var(--glass-backdrop-filter);backdrop-filter:var(--glass-backdrop-filter);border-left:var(--glass-border);border-right:var(--glass-border);border-bottom:var(--glass-border);border-bottom-left-radius:4px;border-bottom-right-radius:4px;box-shadow:var(--glass-box-shadow);display:flex;flex-direction:column;margin-left:2px;margin-right:2px;padding:10px}._linkWrapper_1logo_1{width:100%}._linkWrapper_1logo_1:hover{background-color:var(--link-hover-background-color);border-radius:4px}._link_1logo_1[role=button]{padding-left:12px;justify-content:flex-start;overflow:hidden;mask:var(--link-overflow-mask);width:100%}._tooltip_1edpy_1{position:absolute;background-color:#000000b3;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.3);border-radius:4px;box-shadow:0 4px 30px #0000001a;color:#ffffffe6;padding:6px;z-index:999;animation:_tooltip-enter_1edpy_1 var(--style-transition-duration) forwards}._tooltip_1edpy_1._exit_1edpy_13{animation:_tooltip-exit_1edpy_1 var(--style-transition-duration) forwards}._tooltip_1edpy_1:after{content:"";position:absolute;top:100%;left:50%;margin-left:-5px;border-color:rgba(0,0,0,.7) transparent transparent transparent;border-style:solid;border-width:5px}._text_1edpy_27{text-align:center}@keyframes _tooltip-enter_1edpy_1{0%{opacity:0}to{opacity:1}}@keyframes _tooltip-exit_1edpy_1{0%{opacity:1}to{opacity:0}}._main_1p6ym_1{display:flex;flex-direction:column;row-gap:48px;margin-bottom:var(--content-margin-bottom);margin-left:var(--content-margin-left);margin-right:var(--content-margin-right);margin-top:var(--content-margin-top);transition:margin .3s ease}._main_1p6ym_1._sidebarHidden_1p6ym_11{margin-left:4px}@media(max-width:768px){._main_1p6ym_1{margin-left:4px}}._container_1htmy_1{display:flex;flex-direction:column;row-gap:48px}._sectionHeader_1htmy_7{align-self:flex-start;flex-grow:0;background:var(--section-header-background);-webkit-backdrop-filter:var(--glass-backdrop-filter);backdrop-filter:var(--glass-backdrop-filter);border:var(--glass-border);border-radius:var(--glass-border-radius);box-shadow:var(--glass-box-shadow);padding:20px;transition-duration:var(--style-transition-duration);transition-property:var(--style-transition-property)}._container_5c21h_1{background-color:var(--glass-background-color);-webkit-backdrop-filter:var(--glass-backdrop-filter);backdrop-filter:var(--glass-backdrop-filter);border:var(--glass-border);border-radius:var(--glass-border-radius);box-shadow:var(--glass-box-shadow);font-family:var(--font-family-sans-serif);padding:20px;transition-duration:var(--style-transition-duration);transition-property:var(--style-transition-property)}._label_5c21h_13{dominant-baseline:middle;text-anchor:middle;fill:var(--text-color);font-size:var(--bigo-chart-label-font-size);font-style:italic}._tableWrapper_5c21h_21{background-color:var(--table-wrapper-background-color);-webkit-backdrop-filter:var(--table-wrapper-backdrop-filter);backdrop-filter:var(--table-wrapper-backdrop-filter);border-radius:12px;border:1px solid var(--table-wrapper-border-color);padding:8px;overflow-x:auto}._red_5c21h_30{background-color:var(--color-red-alpha)}._oliveGreen_5c21h_34{background-color:var(--color-olive-green-alpha)}._green_5c21h_38{background-color:var(--color-green-alpha)}._orange_5c21h_42{background-color:var(--color-orange-alpha)}._yellow_5c21h_46{background-color:var(--color-yellow-alpha)}._gray_5c21h_50{background-color:var(--color-gray-alpha)}._container_12crg_1{background-color:var(--glass-background-color);-webkit-backdrop-filter:var(--glass-backdrop-filter);backdrop-filter:var(--glass-backdrop-filter);border:var(--glass-border);border-radius:var(--glass-border-radius);box-shadow:var(--glass-box-shadow);padding:20px;transition-duration:var(--style-transition-duration);transition-property:var(--style-transition-property)}._buttonContainer_12crg_12{display:flex;flex-direction:row;justify-content:space-between}._tabButtonContainer_12crg_18{display:flex;flex-direction:row;gap:12px;margin-bottom:12px}._tabButton_12crg_18{background-color:#fff9;border-bottom:2px solid var(--tab-button-border-bottom-color);border-radius:8px;font-size:var(--button-font-size);padding-left:var(--button-padding-x);padding-right:var(--button-padding-x);padding-top:var(--button-padding-y);padding-bottom:var(--button-padding-y);transition-duration:var(--style-transition-duration);transition-property:var(--style-transition-property);position:relative;height:48px;width:70px}._tabButton_12crg_18 svg{width:100%;height:100%}._tabButton_12crg_18:hover{background-color:#f8f8f8cc}._tabButton_12crg_18:active{background-color:var(--color-frost-white)}._tabButton_12crg_18[aria-selected=true]{border-bottom:2px solid var(--color-azure)}._code_1qx6e_1{border:.5px solid var(--code-border-color);border-radius:6px;font-size:var(--code-font-size);line-height:var(--code-line-height);position:relative;padding-left:2em}._code_1qx6e_1 ::selection{background-color:var(--code-line-hover-color)}._line_1qx6e_13{display:block;border-left:.5px solid var(--code-line-number-color);padding-left:1em;min-height:1em}._line_1qx6e_13:before{content:attr(data-line-number);position:absolute;color:var(--code-line-number-color);left:-5px;width:2em;text-align:right;-webkit-user-select:none;user-select:none}._line_1qx6e_13:hover,._line_1qx6e_13[focused]{background-color:var(--code-line-hover-color)}._line_1qx6e_13:hover:before,._line_1qx6e_13[focused]:before{color:var(--code-line-number-hover-color)}._copyButton_1hjzm_1{background-color:var(--copy-button-background-color);border:none;border-bottom:2px solid var(--tab-button-border-bottom-color);border-radius:8px;box-shadow:none;padding-left:var(--button-padding-x);padding-right:var(--button-padding-x);padding-top:var(--button-padding-y);padding-bottom:var(--button-padding-y);height:48px;width:70px;display:inline-flex;align-items:center;justify-content:center;outline:none}._copyButton_1hjzm_1:hover{background-color:var(--copy-button-hover-background-color)}._copyButton_1hjzm_1:active{background-color:var(--copy-button-active-background-color)}._copySvg_1hjzm_25{height:100%;width:100%;opacity:1;fill:var(--copy-button-svg-fill-color)}._checkSvg_1hjzm_32{height:100%;width:100%}._checkSvgPath_1hjzm_37{stroke:var(--copy-button-svg-fill-color);stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:16;stroke-dashoffset:16;animation:_draw_1hjzm_1 var(--style-transition-duration) ease-in-out forwards}._enter_1hjzm_48{animation:_fade-in_1hjzm_1 .15s forwards}._exit_1hjzm_52{animation:_fade-out_1hjzm_1 .15s forwards}@keyframes _fade-in_1hjzm_1{0%{opacity:0}to{opacity:1}}@keyframes _fade-out_1hjzm_1{0%{opacity:1}to{opacity:0}}@keyframes _draw_1hjzm_1{to{stroke-dashoffset:0}} diff --git a/docs/index.html b/docs/index.html index 99b8ad1..9a5138c 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,23 +1,23 @@ - - - - - LeetCode Cheatsheet - - - - - - - - - - - - - - - + + + + + LeetCode Cheatsheet + + + + + + + + + + + + + + + - - - - - - -
-
-
-
-
-
-
-
-
- - - + + + + + + + +
+
+
+
+
+
+
+
+
+ + + diff --git a/index.html b/index.html index 8f3bcfe..64a3ee5 100644 --- a/index.html +++ b/index.html @@ -10,8 +10,8 @@ - - + + diff --git a/src/components/Topbar/index.tsx b/src/components/Topbar/index.tsx index 5a2cfa9..a611b4f 100644 --- a/src/components/Topbar/index.tsx +++ b/src/components/Topbar/index.tsx @@ -47,7 +47,7 @@ export default function Topbar({ forwardedRef }: TopbarProps) { const renderGitHubButton = () => { return (