p in A?f(A,p,{enumerable:!0,configurable:!0,writable:!0,value:L}):A[p]=L,S=(A,p)=>{for(var L in p||(p={}))j.call(p,L)&&E(A,L,p[L]);if(g)for(var L of g(p))d.call(p,L)&&E(A,L,p[L]);return A};const z=A=>e.createElement("svg",S({viewBox:"64 64 896 896"},A),e.createElement("path",{d:"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z"}));var O="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSI2NCA2NCA4OTYgODk2Ij48cGF0aCBkPSJNODg0IDI1NmgtNzVjLTUuMSAwLTkuOSAyLjUtMTIuOSA2LjZMNTEyIDY1NC4yIDIyNy45IDI2Mi42Yy0zLTQuMS03LjgtNi42LTEyLjktNi42aC03NWMtNi41IDAtMTAuMyA3LjQtNi41IDEyLjdsMzUyLjYgNDg2LjFjMTIuOCAxNy42IDM5IDE3LjYgNTEuNyAwbDM1Mi42LTQ4Ni4xYzMuOS01LjMuMS0xMi43LTYuNC0xMi43eiIvPjwvc3ZnPg==",C=a(5899);function x(A,p){return h(A)||v(A,p)||V(A,p)||K()}function K(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
+In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function V(A,p){if(A){if(typeof A=="string")return I(A,p);var L=Object.prototype.toString.call(A).slice(8,-1);if(L==="Object"&&A.constructor&&(L=A.constructor.name),L==="Map"||L==="Set")return Array.from(A);if(L==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(L))return I(A,p)}}function I(A,p){(p==null||p>A.length)&&(p=A.length);for(var L=0,P=new Array(p);L2?e.createElement("div",{className:"dumi-default-lang-select"},e.createElement("select",{defaultValue:R,onChange:function(re){C.m8.push(D({pathname:C.m8.location.pathname,current:G,target:L.find(function(ce){var me=ce.id;return me===re.target.value})}))}},L.map(function(te){return e.createElement("option",{key:te.id,value:te.id},te.name)})),e.createElement(z,null)):e.createElement(H,{locale:L.find(function(te){var re=te.id;return re!==R}),current:G})},$=B},38798:function(M,N,a){"use strict";a.d(N,{Z:function(){return j}});var e=a(5899),f=a(93236),g=function(){var E=(0,e.WF)(),S=E.themeConfig,z=(0,e.bU)();return f.createElement(e.rU,{className:"dumi-default-logo",to:"base"in z?z.base:"/"},S.logo!==!1&&f.createElement("img",{src:S.logo||"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIQAAACCCAMAAACww5CIAAACf1BMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8YkP8AAAACCxMamv/6+voaGhoXi/YYjv8aoP8cq/8dr/8bo/8cqP8bpv8Ykv8drv8BAwUcrP8Zlf8Xjf/s7OzLy8scp/8anP8ZmP/d3d0BBArg4ODT09O7u7sEGCsKCgoanf8YlP/8/Pz09PTIyMgMTIV1dXUGKEVEREQ0NDQODg4GBgYdsv8dsf8Zl//m5uYVgOXj4+MWgtfW1tYTc87BwcERbLWzs7Ovr6+np6cQX6OgoKCTk5MMSXlwcHBra2tiYmIVFRUetf/39/fp6ekWhOkXi+QVfNvY2NjPz88TdcUSb7u6urq3t7cPYK0NUJGQkJCLi4ttbW0JO2cINFtVVVVRUVEHMFEHLEs6OjoEHDEiIiIcHBwXj/vx8fEWh+4Sb8gRbL+rq6upqakOVZiWlpaJiYmGhoYMSIF9fX15eXkKPnQLRHJMTExHR0c9PT0FHzkqKiomJiYEFyUBBw8bovfu7u4Wht4UedsUeMrFxcW9vb0RZrOkpKSampoPXZqAgIALQmtlZWUJOGJZWVkIMFcFIUExMTEwMDAtLS0DEh8Zl/v4+PgXj/QWhvEWhvAYku8YjuwUfNcUfNAVfc0RaLkSaKsRZ6kPWqENUYlbW1sCEBhkSPCkAAAAOHRSTlMA87y4BeKrltbFnUDo0MCup6D67t7ayZKGemtmWS8rEwLNso1wVEpFGaR+UDUlHwmBYls5i1oN/DMym4YAAAfTSURBVHjaxNndS1NxHMfxX5s6t1Kz1KzsuazMnqjgyxv03ovtQrYxUBEfLkREVBQf0AsFBRUUQvEiSVFQ0YsuiiIiqKC/oH+o31lzjtPZg55zttfVNnbx5ffw+X53pmx5UFl2+XLZ4zpVOPWlJFTntYyiBwF/VbX39Sv9upYU9/QHjbXe6qqayrrnylXXi0kov3GVuFiMuNqbHhIu3FcuuohZZ+jDh7mdXkwqlGtKMGmOSFzrGiYe5ZL4+vdsd/SHFyYxtIQlIdiD4ftCa39osTlxRtzwHO1tUOLm0XYk6T3asMRtdKHdUs6qv+L1l/vKgak2SYjqN+1yYg2G5NgR4Pd5/F7fk9sO3YhSkoYkaW40KCk2Rj9KUoikqmtOn8YpydE6J7xFyq5yUhxIjvZJcUfZ5EOb6oxGQmPdtEQlR4Mxupc6IoOdzWiVypabaF1BiesIS876OiSufRXtvO0DcSi2dAN+ZcclYFZsCaOps3nYUOKprDTiSWzqAioCnpIX9ep03pxkw7jYtMWx0pdn7Jb2i1jixN3cM6OGFCti0zgpyopOsw6xiZHoyHIPLIhNHdD7bWR+c7znFD3+PNp+vxhmRkNi28BoWAzBPbQHKhdlQLe4ogsoVTl4ijYjrmiKATdUdvfjh9Ely8DVHFvWe3HJMBBQ2QWAd+KSeeBxjtuxKC7ZzG07Ht0DusQlfwDfs2wZ4b2EYVBcESHO81BlcIWESXHFV7Qss5aXY1FxRSj7L7QAhv3tsaVBMVn8Ou1MFUtjW3sYKjL0jO6QWJiA7iZxysBbtDplpRT4KZbQWkUbHRMnGFUUKwuNaH1iaRJ+Tf8bDbqcWJH2HuCV+l9DpkuxtdsuGlpYHNAJ1FqNMjnE9QocOXJCPwJ309zPT9la8e5yUJwwC/jTBNWQ5EkIqEyzHROSJzvWSeFDW5M8OUArsdgMq2EmanOyGB4WSyMYAhZp2TwkJouw2mZvmusUSwtraA//m7DXZ8SsBxiQM5tGSxNuv3+ZU/NmIpfN9qDXxp1sO4LDNrE202J6cHE1TVq2f1uNiA39K9/7JJ0JwGe6nvOSZ4OA1/R0bFbyrBWoMUX2nOTZAOA3pcSXjFW7UOJnU17VAYeZv98pTvsB1KsTRVXAtqQVA/rFWSNo11SKiuRYZeknEBRn7WJ4rZKuX8pcROvBj6g4rLUZQ8NJYBo2Jb/ax2KkhKYf6I1I3oWngKqUhfgkBTCL1pics1elICaS/5Y9jk+XBdEBeJKhHZGCCLZAWTIkBqQgNlr+NbGi2wHgS1tTAbQNAxW3i1R58WWgd725ANZ7gXPFNaqagrvwt1t7aW0qiOIAPlErPqJCq6JWrW8r1ar1xf0n4NxnnpCELEKyCNmkJZSQRSCbQltooS4sVApiC10U2kWhFRUEEdGF4vuNH8g7c9NQ2pjepPcB/r5ADjlnzp2ZM+QMXHeYb+1WfO5hi5QfveYe33XJ4+d8a3MNQHbI75KhMt9z9wF4FRNcIi3wO94bAHJiQHCHNgmgh3QD8D1MCK6I+KeNCUgbgFFRcEX8Qwhov014o/juUlEoxeqrgpsA7oWp4AZprnpv1ANgShFcoU4a+36jMgOuVGYmnuJ1Wb0hKWqCC8QCgI4dqyfRbNCFoqDBX7Xz6C0AS660K3UKQCdhuqAbdqFT+B8mAXQTbhtbpM7ng4Yn1oytOwFMu5AP9QGAa4Qz8lFwvFWIH6G7Qjijc8/LDueDyvd4z151EYBvwOF+lRFTAK6TGi+ACWdLk0ozANqvkpojAFJKRnCSlFt3m8pLc9bJTylVn64ty9rJfEl1cpVKbH3uJ2v1QleUqOCI2h9xeeP0aVqLCA4JSLk6s7hu6CbkqOAIGpyB7iRZ5xLvFWlHEkITyjK/41/v9h0AC3lngpCz0PXWf0yDUcmBhFDt0T/flx8CkNL8VLAZjUhvAHSQek5AtyALdqP5e9BdbPCkZsbuFRKVvlRHs/W1AfC902yNgoriWwCeqw1fSL+J2VkWNBF8vckr6mPQ3ZcjtkVBA/3z4Ju6Bs5ANzck2BQFpUMTxlVZQ4ege95vUxRUHoPOe5s01OWBbryf2hEFDX4Fc4Vs4gaYZ3ZEQeXBJPgMcFPnwYzJVmeE6jGsGCNAE/rAlPIBamkMQv9YCLpzxJRjYMr5BLXyg5EvgTlKTOoEkw2LUct6dTz4ojqCNO04mMm4ZE150mhMuQ+jHppwAUxqUM5QK9qkPLIE5jhpygkvmHJYiW45FaL8IwmdZy9pUtc2MK9HtvgloZngJyMVp3tJ846ASb7Q1NYrg1JN+ukDs4e05LwHTO5bUKG0tRBEeXAKzJ3rpEXdB8C9fBIWKW0hhOBIBdy2K6R11zvALY6EFYE21yHF4OdKEkz7ObIlXXvAhV4OquoApaYbpCo9qayA29lLturibhimSgOSFjG1ILRwYnwShn09xArnT8PwdnHML6n+hl+2gD8Wjj+rLMOwq49Y5dZpVKUWS++VcCwdCdT5/Uhck5SH45VpVO3qJFbq2Y5Vvly2VBgQY5KqKWI6HY+n06KiqVJMSQyP/37wB6v29xGrnThyEDWh5dyr+fJscbQw/OjRcGG0OFvO3n+QSqKm7exlYgsvNgolkyFs1HGV2OQgTGsjNjnVBtO8Owj3nwbhgWnttgWxy2PaoWaC+AuAXqWYKHupMgAAAABJRU5ErkJggg==",alt:S.name}),S.name)},j=g},97360:function(M,N,a){"use strict";a.d(N,{Z:function(){return E}});var e=a(5899),f=a(74483),g=a(93236);function j(){return j=Object.assign?Object.assign.bind():function(S){for(var z=1;zI.length)&&(v=I.length);for(var h=0,D=new Array(v);hu in o?f(o,u,{enumerable:!0,configurable:!0,writable:!0,value:c}):o[u]=c,S=(o,u)=>{for(var c in u||(u={}))j.call(u,c)&&E(o,c,u[c]);if(g)for(var c of g(u))d.call(u,c)&&E(o,c,u[c]);return o};const z=o=>e.createElement("svg",S({viewBox:"64 64 896 896"},o),e.createElement("path",{d:"M862 465.3h-81c-4.6 0-9 2-12.1 5.5L550 723.1V160c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v563.1L255.1 470.8c-3-3.5-7.4-5.5-12.1-5.5h-81c-6.8 0-10.5 8.1-6 13.2L487.9 861a31.96 31.96 0 0 0 48.3 0L868 478.5c4.5-5.2.8-13.2-6-13.2z"}));var O="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSI2NCA2NCA4OTYgODk2Ij48cGF0aCBkPSJNODYyIDQ2NS4zaC04MWMtNC42IDAtOSAyLTEyLjEgNS41TDU1MCA3MjMuMVYxNjBjMC00LjQtMy42LTgtOC04aC02MGMtNC40IDAtOCAzLjYtOCA4djU2My4xTDI1NS4xIDQ3MC44Yy0zLTMuNS03LjQtNS41LTEyLjEtNS41aC04MWMtNi44IDAtMTAuNSA4LjEtNiAxMy4yTDQ4Ny45IDg2MWEzMS45NiAzMS45NiAwIDAgMCA0OC4zIDBMODY4IDQ3OC41YzQuNS01LjIuOC0xMy4yLTYtMTMuMnoiLz48L3N2Zz4=",C=Object.defineProperty,x=Object.getOwnPropertySymbols,K=Object.prototype.hasOwnProperty,V=Object.prototype.propertyIsEnumerable,I=(o,u,c)=>u in o?C(o,u,{enumerable:!0,configurable:!0,writable:!0,value:c}):o[u]=c,v=(o,u)=>{for(var c in u||(u={}))K.call(u,c)&&I(o,c,u[c]);if(x)for(var c of x(u))V.call(u,c)&&I(o,c,u[c]);return o};const h=o=>e.createElement("svg",v({viewBox:"64 64 896 896"},o),e.createElement("path",{d:"M868 545.5 536.1 163a31.96 31.96 0 0 0-48.3 0L156 545.5a7.97 7.97 0 0 0 6 13.2h81c4.6 0 9-2 12.1-5.5L474 300.9V864c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V300.9l218.9 252.3c3 3.5 7.4 5.5 12.1 5.5h81c6.8 0 10.5-8 6-13.2z"}));var D="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSI2NCA2NCA4OTYgODk2Ij48cGF0aCBkPSJNODY4IDU0NS41IDUzNi4xIDE2M2EzMS45NiAzMS45NiAwIDAgMC00OC4zIDBMMTU2IDU0NS41YTcuOTcgNy45NyAwIDAgMCA2IDEzLjJoODFjNC42IDAgOS0yIDEyLjEtNS41TDQ3NCAzMDAuOVY4NjRjMCA0LjQgMy42IDggOCA4aDYwYzQuNCAwIDgtMy42IDgtOFYzMDAuOWwyMTguOSAyNTIuM2MzIDMuNSA3LjQgNS41IDEyLjEgNS41aDgxYzYuOCAwIDEwLjUtOCA2LTEzLjJ6Ii8+PC9zdmc+",H=Object.defineProperty,B=Object.getOwnPropertySymbols,$=Object.prototype.hasOwnProperty,A=Object.prototype.propertyIsEnumerable,p=(o,u,c)=>u in o?H(o,u,{enumerable:!0,configurable:!0,writable:!0,value:c}):o[u]=c,L=(o,u)=>{for(var c in u||(u={}))$.call(u,c)&&p(o,c,u[c]);if(B)for(var c of B(u))A.call(u,c)&&p(o,c,u[c]);return o};const P=o=>e.createElement("svg",L({viewBox:"64 64 896 896"},o),e.createElement("path",{d:"M909.6 854.5 649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0 0 11.6 0l43.6-43.5a8.2 8.2 0 0 0 0-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z"}));var R="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSI2NCA2NCA4OTYgODk2Ij48cGF0aCBkPSJNOTA5LjYgODU0LjUgNjQ5LjkgNTk0LjhDNjkwLjIgNTQyLjcgNzEyIDQ3OSA3MTIgNDEyYzAtODAuMi0zMS4zLTE1NS40LTg3LjktMjEyLjEtNTYuNi01Ni43LTEzMi04Ny45LTIxMi4xLTg3LjlzLTE1NS41IDMxLjMtMjEyLjEgODcuOUMxNDMuMiAyNTYuNSAxMTIgMzMxLjggMTEyIDQxMmMwIDgwLjEgMzEuMyAxNTUuNSA4Ny45IDIxMi4xQzI1Ni41IDY4MC44IDMzMS44IDcxMiA0MTIgNzEyYzY3IDAgMTMwLjYtMjEuOCAxODIuNy02MmwyNTkuNyAyNTkuNmE4LjIgOC4yIDAgMCAwIDExLjYgMGw0My42LTQzLjVhOC4yIDguMiAwIDAgMCAwLTExLjZ6TTU3MC40IDU3MC40QzUyOCA2MTIuNyA0NzEuOCA2MzYgNDEyIDYzNnMtMTE2LTIzLjMtMTU4LjQtNjUuNkMyMTEuMyA1MjggMTg4IDQ3MS44IDE4OCA0MTJzMjMuMy0xMTYuMSA2NS42LTE1OC40QzI5NiAyMTEuMyAzNTIuMiAxODggNDEyIDE4OHMxMTYuMSAyMy4yIDE1OC40IDY1LjZTNjM2IDM1Mi4yIDYzNiA0MTJzLTIzLjMgMTE2LjEtNjUuNiAxNTguNHoiLz48L3N2Zz4=",G=a(5899),te=Object.defineProperty,re=Object.getOwnPropertySymbols,ce=Object.prototype.hasOwnProperty,me=Object.prototype.propertyIsEnumerable,Le=(o,u,c)=>u in o?te(o,u,{enumerable:!0,configurable:!0,writable:!0,value:c}):o[u]=c,De=(o,u)=>{for(var c in u||(u={}))ce.call(u,c)&&Le(o,c,u[c]);if(re)for(var c of re(u))me.call(u,c)&&Le(o,c,u[c]);return o};const Oe=o=>e.createElement("svg",De({viewBox:"0 0 1024 1024"},o),e.createElement("path",{d:"m885.2 446.3-.2-.8-112.2-285.1c-5-16.1-19.9-27.2-36.8-27.2H281.2c-17 0-32.1 11.3-36.9 27.6L139.4 443l-.3.7-.2.8c-1.3 4.9-1.7 9.9-1 14.8-.1 1.6-.2 3.2-.2 4.8V830a60.9 60.9 0 0 0 60.8 60.8h627.2c33.5 0 60.8-27.3 60.9-60.8V464.1c0-1.3 0-2.6-.1-3.7.4-4.9 0-9.6-1.3-14.1zm-295.8-43-.3 15.7c-.8 44.9-31.8 75.1-77.1 75.1-22.1 0-41.1-7.1-54.8-20.6S436 441.2 435.6 419l-.3-15.7H229.5L309 210h399.2l81.7 193.3H589.4zm-375 76.8h157.3c24.3 57.1 76 90.8 140.4 90.8 33.7 0 65-9.4 90.3-27.2 22.2-15.6 39.5-37.4 50.7-63.6h156.5V814H214.4V480.1z"}));var T="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0Ij48cGF0aCBkPSJtODg1LjIgNDQ2LjMtLjItLjgtMTEyLjItMjg1LjFjLTUtMTYuMS0xOS45LTI3LjItMzYuOC0yNy4ySDI4MS4yYy0xNyAwLTMyLjEgMTEuMy0zNi45IDI3LjZMMTM5LjQgNDQzbC0uMy43LS4yLjhjLTEuMyA0LjktMS43IDkuOS0xIDE0LjgtLjEgMS42LS4yIDMuMi0uMiA0LjhWODMwYTYwLjkgNjAuOSAwIDAgMCA2MC44IDYwLjhoNjI3LjJjMzMuNSAwIDYwLjgtMjcuMyA2MC45LTYwLjhWNDY0LjFjMC0xLjMgMC0yLjYtLjEtMy43LjQtNC45IDAtOS42LTEuMy0xNC4xem0tMjk1LjgtNDMtLjMgMTUuN2MtLjggNDQuOS0zMS44IDc1LjEtNzcuMSA3NS4xLTIyLjEgMC00MS4xLTcuMS01NC44LTIwLjZTNDM2IDQ0MS4yIDQzNS42IDQxOWwtLjMtMTUuN0gyMjkuNUwzMDkgMjEwaDM5OS4ybDgxLjcgMTkzLjNINTg5LjR6bS0zNzUgNzYuOGgxNTcuM2MyNC4zIDU3LjEgNzYgOTAuOCAxNDAuNCA5MC44IDMzLjcgMCA2NS05LjQgOTAuMy0yNy4yIDIyLjItMTUuNiAzOS41LTM3LjQgNTAuNy02My42aDE1Ni41VjgxNEgyMTQuNFY0ODAuMXoiLz48L3N2Zz4=";function s(o,u){return y(o)||Y(o,u)||i(o,u)||l()}function l(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
+In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function i(o,u){if(o){if(typeof o=="string")return m(o,u);var c=Object.prototype.toString.call(o).slice(8,-1);if(c==="Object"&&o.constructor&&(c=o.constructor.name),c==="Map"||c==="Set")return Array.from(o);if(c==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c))return m(o,u)}}function m(o,u){(u==null||u>o.length)&&(u=o.length);for(var c=0,w=new Array(u);c=0){var ie,pe=Z.find(function(he){return he.type==="hint"&&he.activeIndex===ne}).value;G.m8.push(pe.link),(ie=u.onItemSelect)===null||ie===void 0||ie.call(u,pe),document.activeElement.blur()}["Escape","Enter"].includes(je.key)&&de(-1)};return document.addEventListener("keydown",ee),function(){return document.removeEventListener("keydown",ee)}}),e.createElement("div",{className:"dumi-default-search-result",onMouseEnter:function(){return de(-1)},onMouseDownCapture:function(Ae){return Ae.preventDefault()},onMouseUpCapture:function(){document.activeElement.blur()}},Boolean(u.data.length||u.loading)?e.createElement("dl",null,Z.map(function(ee,Ae){return ee.type==="title"?e.createElement("dt",{key:String(Ae)},ee.value.title):e.createElement("dd",{key:String(Ae)},e.createElement(G.rU,{to:ee.value.link,"data-active":ne===ee.activeIndex||void 0,onClick:function(){var ie;return(ie=u.onItemSelect)===null||ie===void 0?void 0:ie.call(u,ee.value)}},e.createElement(b[ee.value.type]),e.createElement("h4",null,e.createElement(q,{texts:ee.value.highlightTitleTexts})),e.createElement("p",null,e.createElement(q,{texts:ee.value.highlightTexts}))))})):e.createElement("div",{className:"dumi-default-search-empty"},e.createElement(Oe,null),e.createElement(G._H,{id:"search.not.found"})))},_=Q,k=(0,e.forwardRef)(function(o,u){var c=(0,G.YB)(),w=(0,e.useRef)(!1),Z=(0,e.useRef)(null);return(0,e.useImperativeHandle)(u,function(){return Z.current}),e.createElement("input",{className:"dumi-default-search-bar-input",onCompositionStart:function(){return w.current=!0},onCompositionEnd:function(F){w.current=!1,o.onChange(F.currentTarget.value)},onFocus:o.onFocus,onBlur:o.onBlur,onKeyDown:function(F){["ArrowDown","ArrowUp"].includes(F.key)&&F.preventDefault(),F.key==="Escape"&&!w.current&&F.currentTarget.blur()},onChange:function(F){setTimeout(function(){w.current||o.onChange(F.target.value)},1)},placeholder:c.formatMessage({id:"header.search.placeholder"}),ref:Z})}),J=function(u){return(0,e.useEffect)(function(){if(u.visible)document.body.style.overflow="hidden";else{var c;document.body.style.overflow="",(c=u.onClose)===null||c===void 0||c.call(u)}},[u.visible]),u.visible?e.createElement("div",{className:"dumi-default-search-modal"},e.createElement("div",{className:"dumi-default-search-modal-mask",onClick:u.onMaskClick}),e.createElement("div",{className:"dumi-default-search-modal-content"},u.children)):null},ue;function Me(o,u){return Qe(o)||Ie(o,u)||ye(o,u)||fe()}function fe(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
+In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ye(o,u){if(o){if(typeof o=="string")return Ce(o,u);var c=Object.prototype.toString.call(o).slice(8,-1);if(c==="Object"&&o.constructor&&(c=o.constructor.name),c==="Map"||c==="Set")return Array.from(o);if(c==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c))return Ce(o,u)}}function Ce(o,u){(u==null||u>o.length)&&(u=o.length);for(var c=0,w=new Array(u);c=0&&Je>=0&&_e<=window.innerHeight&&Ke<=window.innerWidth;Ge?W.current.focus():(ie(""),Ue(!0),setTimeout(function(){var He;(He=F.current)===null||He===void 0||He.focus()}))}Ne.key==="Escape"&&(Ne.preventDefault(),Ue(!1))};return document.addEventListener("keydown",ge),function(){return document.removeEventListener("keydown",ge)}},[]),e.createElement("div",{className:"dumi-default-search-bar"},e.createElement(P,{className:"dumi-default-search-bar-svg"}),e.createElement(k,{onFocus:function(){return Z(!0)},onBlur:function(){setTimeout(function(){Z(!1)},1)},onChange:function(we){return ie(we)},ref:W}),e.createElement("span",{className:"dumi-default-search-shortcut"},de," K"),je.trim()&&w&&(pe.length||!he)&&!We&&e.createElement("div",{className:"dumi-default-search-popover"},e.createElement("section",null,e.createElement(_,{data:pe,loading:he}))),e.createElement(J,{visible:We,onMaskClick:function(){Ue(!1)},onClose:function(){return ie("")}},e.createElement("div",{style:{position:"relative"}},e.createElement(P,{className:"dumi-default-search-bar-svg"}),e.createElement(k,{onFocus:function(){return Z(!0)},onBlur:function(){setTimeout(function(){Z(!1)},1)},onChange:function(we){return ie(we)},ref:F})),e.createElement(_,{data:pe,loading:he,onItemSelect:function(){Ue(!1)}}),e.createElement("footer",null,e.createElement("ul",{className:"dumi-default-search-modal-commands"},e.createElement("li",{className:"dumi-default-search-modal-commands-arrow"},e.createElement("span",{className:"dumi-default-search-modal-shortcut"},e.createElement(h,{width:"10px",height:"10px",fill:"rgba(0, 0, 0, 0.45)"})),e.createElement("span",{className:"dumi-default-search-modal-shortcut"},e.createElement(z,{width:"10px",height:"10px",fill:"rgba(0, 0, 0, 0.45)"})),e.createElement("span",{className:"dumi-default-search-modal-commands-text"},"to navigate")),e.createElement("li",null,e.createElement("span",{className:"dumi-default-search-modal-shortcut"},"esc"),e.createElement("span",{className:"dumi-default-search-modal-commands-text"},"to close"))))))},ke=Ye},91814:function(M,N,a){"use strict";a.d(N,{Z:function(){return d}});var e=a(5899),f=a(26307),g=a(93236),j=function(){var S=(0,e.TH)(),z=S.pathname,O=(0,e.eL)(),C=(0,e.tx)();return C?g.createElement("div",{className:"dumi-default-sidebar"},C.map(function(x,K){return g.createElement("dl",{className:"dumi-default-sidebar-group",key:String(K)},x.title&&g.createElement("dt",null,x.title),x.children.map(function(V){return g.createElement("dd",{key:V.link},g.createElement(e.OL,{to:V.link,title:V.title,end:!0},V.title),V.link===z&&O.frontmatter.toc==="menu"&&g.createElement(f.Z,null))}))})):null},d=j},62111:function(M,N,a){"use strict";a.d(N,{Z:function(){return Oe}});var e=a(93525),f=a.n(e),g=a(54306),j=a.n(g),d=a(93236),E=a(21140),S=a.n(E),z=a(63466),O=a.n(z),C=a(68608),x=a.n(C),K=a(58853),V=a.n(K),I=a(38888),v=a.n(I),h=a(52510),D=a.n(h),H=O()(function T(){S()(this,T)}),B=function(T){V()(l,T);var s=v()(l);function l(i){var m;return S()(this,l),m=s.call(this),D()(x()(m),"el",void 0),m.el=i,m}return O()(l,[{key:"top",get:function(){return this.el.getBoundingClientRect().top}},{key:"outerHeight",get:function(){return this.el.getBoundingClientRect().height}},{key:"scrollTop",get:function(){return this.el.scrollTop}},{key:"scrollHeight",get:function(){return this.el.scrollHeight}},{key:"isScrolledToBottom",value:function(){return this.scrollTop+this.outerHeight>=this.scrollHeight}},{key:"registerScrollEvent",value:function(m){this.el.addEventListener("scroll",m)}},{key:"unregisterScrollEvent",value:function(m){this.el.removeEventListener("scroll",m)}}],[{key:"create",value:function(m){var Y=document.querySelector(m);if(!Y)throw new Error("element is not found.");return new l(Y)}}]),l}(H),$=function(T){V()(l,T);var s=v()(l);function l(){return S()(this,l),s.apply(this,arguments)}return O()(l,[{key:"outerHeight",get:function(){return window.innerHeight}},{key:"scrollTop",get:function(){return document.documentElement.scrollTop}},{key:"scrollHeight",get:function(){return document.documentElement.scrollHeight}},{key:"isScrolledToBottom",value:function(){return this.scrollTop+this.outerHeight>=this.scrollHeight}},{key:"registerScrollEvent",value:function(m){document.addEventListener("scroll",m)}},{key:"unregisterScrollEvent",value:function(m){document.removeEventListener("scroll",m)}}],[{key:"create",value:function(){return new l}}]),l}(H),A=function(){function T(){S()(this,T)}return O()(T,null,[{key:"create",value:function(l){return l?B.create(l):$.create()}}]),T}(),p=function(s){var l=s.sectionRefs,i=s.rootSelector,m=s.offset,Y=m===void 0?0:m,y=(0,d.useRef)(null);(0,d.useEffect)(function(){y.current=A.create(i)},[i]);var U=(0,d.useCallback)(function(){return y.current?y.current.isScrolledToBottom():!1},[y]),X=(0,d.useCallback)(function(k){if(!y.current)return!1;var J=y.current.scrollTop,ue=J+y.current.outerHeight,Me=k.getBoundingClientRect(),fe=y.current instanceof B?J+Me.top-y.current.top+Y:J+Me.top+Y,ye=fe+Me.height;return[feJ].every(function(Ce){return Ce})},[y,Y]),ae=(0,d.useCallback)(function(){return l.map(function(k){return k.current?X(k.current):!1})},[X,l]),oe=(0,d.useState)([]),b=j()(oe,2),q=b[0],se=b[1],Q=(0,d.useMemo)(function(){return q.findIndex(function(k){return k})},[q]),_=(0,d.useCallback)(function(){var k=U()?[].concat(f()(new Array(l.length-1).fill(!1).map(function(J){return J})),[!0]):ae();se(k)},[ae,U,l]);return(0,d.useEffect)(function(){return _(),y.current&&y.current.registerScrollEvent(_),function(){y.current&&y.current.unregisterScrollEvent(_)}},[_]),{elementsStatusInViewport:q,currentElementIndexInViewport:Q}},L=function(s){var l=s.children,i=s.sectionRefs,m=s.rootSelector,Y=s.offset,y=p({sectionRefs:i,rootSelector:m,offset:Y}),U=y.elementsStatusInViewport,X=y.currentElementIndexInViewport;return l({elementsStatusInViewport:U,currentElementIndexInViewport:X})},P=a(5899);function R(){return R=Object.assign?Object.assign.bind():function(T){for(var s=1;sT.length)&&(s=T.length);for(var l=0,i=new Array(s);l1&&k<4})},[m,Y]);return(0,d.useEffect)(function(){if(!U){var Q=se.map(function(_){var k=_.id;return{current:document.getElementById(k)}});q(Q)}},[l,i,U]),b.length?d.createElement(L,{sectionRefs:b},function(Q){var _=Q.currentElementIndexInViewport;return _>-1&&(X.current=_),d.createElement("ul",{className:"dumi-default-toc"},se.filter(function(k){var J=k.depth;return J>1&&J<4}).map(function(k,J){var ue="".concat(i,"#").concat(encodeURIComponent(k.id)),Me=_>-1?_:X.current;return d.createElement("li",{key:k.id,"data-depth":k.depth},d.createElement(P.rU,R({to:ue,title:k.title},Me===J?{className:"active"}:{}),k.title))}))}):null},Oe=De},30006:function(M,N,a){var e=a(25705);function f(g){if(Array.isArray(g))return e(g)}M.exports=f,M.exports.__esModule=!0,M.exports.default=M.exports},68608:function(M){function N(a){if(a===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return a}M.exports=N,M.exports.__esModule=!0,M.exports.default=M.exports},21140:function(M){function N(a,e){if(!(a instanceof e))throw new TypeError("Cannot call a class as a function")}M.exports=N,M.exports.__esModule=!0,M.exports.default=M.exports},63466:function(M,N,a){var e=a(26982);function f(j,d){for(var E=0;E
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/blogs/index.html b/blogs/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/blogs/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/blogs/js_module/index.html b/blogs/js_module/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/blogs/js_module/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/blogs/performance/index.html b/blogs/performance/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/blogs/performance/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/blogs/promise/index.html b/blogs/promise/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/blogs/promise/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data-structure/01_stack/index.html b/data-structure/01_stack/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/data-structure/01_stack/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data-structure/02_queue/index.html b/data-structure/02_queue/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/data-structure/02_queue/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data-structure/03_linked_list/index.html b/data-structure/03_linked_list/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/data-structure/03_linked_list/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data-structure/04_doubly_linked_list/index.html b/data-structure/04_doubly_linked_list/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/data-structure/04_doubly_linked_list/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data-structure/05_set/index.html b/data-structure/05_set/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/data-structure/05_set/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data-structure/06_dictionary/index.html b/data-structure/06_dictionary/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/data-structure/06_dictionary/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data-structure/07_hash_table/index.html b/data-structure/07_hash_table/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/data-structure/07_hash_table/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data-structure/08_tree&binary_tree/index.html b/data-structure/08_tree&binary_tree/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/data-structure/08_tree&binary_tree/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data-structure/09_binary_search_tree/index.html b/data-structure/09_binary_search_tree/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/data-structure/09_binary_search_tree/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data-structure/10-red_black_tree/index.html b/data-structure/10-red_black_tree/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/data-structure/10-red_black_tree/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data-structure/11_graph/index.html b/data-structure/11_graph/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/data-structure/11_graph/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data-structure/index.html b/data-structure/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/data-structure/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/blogs/browser.md b/docs/blogs/browser.md
deleted file mode 100644
index 66af4b0..0000000
--- a/docs/blogs/browser.md
+++ /dev/null
@@ -1,557 +0,0 @@
----
-nav:
- title: Blog
-group:
- title: js相关
- order: 0
-order: 1
----
-
-# 浏览器对象
-
-## 一、参考资料
-
-- [浏览器对象模型](https://segmentfault.com/a/1190000014212576)
-- [聊聊 H5 的 pushState 与 replaceState](https://juejin.cn/post/6844903558576341000)
-- [用 Javascript 获取页面元素的位置](https://www.ruanyifeng.com/blog/2009/09/find_element_s_position_using_javascript.html)
-- [js 获取操作元素位置](https://juejin.cn/post/6961383795866435591)
-
-## 二、认识浏览器运行态下的 js
-
-### 1.问:是否了解浏览器的执行态(分层设计)?
-
-- ECMAScript - 基础逻辑、数据处理,js 语法块
-- BOM - 浏览器本身的能力操作
- - Browser Object Model(浏览器对象模型)
- - 浏览器模型提供了独立于内容的、可以与浏览器窗口进行滑动的对象结构,就是浏览器提供的 API
-- DOM - 浏览器文本的操作
-
-### 2.BOM
-
-#### 1.[location](https://developer.mozilla.org/zh-CN/docs/Web/API/Location)
-
-> 提供当前窗口中的加载的文档有关的信息和一些导航功能。
-> 既是 window 对象属性,也是 document 的对象属性
-
-```js
-window.location === document.location; //true
-
-// https://www.zhihu.com/search?type=content&q=123
-
-location.href =
- 'https://www.zhihu.com/search?type=content&q=123'.origin = // 完整的url
- 'https://www.zhihu.com'.host = // 页面的标准域名
- 'www.zhihu.com'.hash = // 服务器名称+端口 例如:‘www.zhihu.com:8080’
- '#hash'.pathname = // url中#号后面的哈希值
- '/search'.search = // url中[/]后面内容
- '?type=content&q=123'.protocol = // url中[?]后面内容
- 'https:'.port = // 协议[http:]
- ''; //端口号:[ 80 | 8080 | ... ]
-```
-
-方法:
-
-1. assign()
- 1. `不会打开新窗口`,把请求 url 中的资源,加载到当前窗口
- 2. 会给浏览器的`History`中增加一条历史记录
-2. replace(url)
- 1. 用 url 中的内容,替换掉当前的 location 资源
- 2. 不会在浏览器的`History`中增加记录,意味着用户`不能使用回退`按钮
-3. reload()
- 1. 重新加载当前 url 的内容
- 2. 当 reload(true)时,会`强制从服务器获取`所有内容
- 3. 若没有参数,重新加载时,`可能从浏览器缓存`加载页面
-
-##### 拓展方向:
-
-- location 本身 api 操作
- - assign VS replace 的区别
-- **解析 url 中的查询字符串,返回一个对象**
- - 思路:
- - 可以通过`正则`的方式获取,或者通过`字符串分割`的方式
- - 通过`location.search`获取查询字符串内容,如果有`[?]`就截取`[?]`后面的内容
- - 然后通过`[&]`进行分割成为`['key=val1','key=val2']`的形式
- - 通过`[=]`对数组进行分割,使用`decodeURIComponent`对 key 和 val 进行解码,存放到对象中
-- 路由相关: 跳转、参数、操作
- - 页面能否`返回`(history)
- - 页面是否`刷新`(hash)
- - reload、assign、replace 参数等
-- URI or URL 的区别?
- - URI `Uniform Resource Identifier - 统一资源标识符`
- - URL `Uniform Resource Locator - 统一资源定位符`
-
-#### 2.[History](https://developer.mozilla.org/zh-CN/docs/Web/API/History)
-
-```js
-history.state.length; // 当前页面的状态 // 返回当前 `会话` 中的 history 个数
-```
-
-方法:
-
-- pushState(state, title, url)
- - 给当前的 history 中添加一个状态
- - 浏览器地址会改变,但是不会加载页面,本质上页面还是停留在原来的页面
-- replaceState()
- - 与 pushState 方法类似,但是`不会添加`一个新的 state 到 history 中,而是直接`修改当前`state
-
-相关联的方法
-
-- [window.onpopstate()](https://developer.mozilla.org/zh-CN/docs/Web/API/Window/popstate_event)
- - 每当处于激活状态的历史记录条目发生变化时,`popstate`事件就会在对应 window 对象上触发
- - 调用`history.pushState()` 或者 `history.replaceState()` `不会`触发 popstate 事件。
- - popstate 事件只会在`浏览器`某些`行为下触发`
- - 比如点击后退、前进按钮(或者在 JavaScript 中调用 history.back()、history.forward()、history.go()方法)
-
-例子:
-
-```js
-window.onpopstate = function (event) {
- alert(
- 'location: ' +
- document.location +
- ', state: ' +
- JSON.stringify(event.state),
- );
-};
-//绑定事件处理函数.
-history.pushState({ page: 1 }, 'title 1', '?page=1'); //添加并激活一个历史记录条目 http://example.com/example.html?page=1,条目索引为1
-history.pushState({ page: 2 }, 'title 2', '?page=2'); //添加并激活一个历史记录条目 http://example.com/example.html?page=2,条目索引为2
-history.replaceState({ page: 3 }, 'title 3', '?page=3'); //修改当前激活的历史记录条目 http://ex..?page=2 变为 http://ex..?page=3,条目索引为3
-history.back(); // 弹出 "location: http://example.com/example.html?page=1, state: {"page":1}"
-history.back(); // 弹出 "location: http://example.com/example.html, state: null
-history.go(2); // 弹出 "location: http://example.com/example.html?page=3, state: {"page":3}
-```
-
-#### 3.[navigator](https://developer.mozilla.org/zh-CN/docs/Web/API/Navigator)
-
-> 浏览器系统信息大集合
-
-- clipboard
- - 系统剪切板相关信息
-- userAgent
- - 当前用户的设备信息
-- onLine
- - 返回浏览器的在线状态
-- serial
- - 返回[串口](https://developer.chrome.com/articles/serial/)对象,Web Serial API 的入口点
-- bluetooth
- - 系统蓝牙相关
- ...
-
-#### 4.[screen](https://developer.mozilla.org/zh-CN/docs/Web/API/Screen)
-
-> 用来表示浏览器窗口外部的显示器的信息等
-
-window.screen.deviceXDPI/deviceYDPI 屏幕实际的水平 DPI、垂直 DPI
-
-## 三、浏览器事件
-
-浏览器事件模型主要分为三个阶段:
-
-- 捕获阶段(IE)
- - 事件由最外层元素(window),层层向内传递,直到最具体的元素
-- 目标阶段
-- 冒泡阶段(网景)
- - 事件由最具体的元素(事件的触发者),层层向外传递(传递给父节点),直到 window 对象停止
-
-
-
-### 1.addEventListener 第三个参数
-
-```js
-el.addEventListener(event, function, useCapture)
-// useCapture默认值false,也就是默认冒泡
-// true为捕获阶段
-```
-
-### 2.阻断事件传播
-
-- event.stopPropagation()
- - `阻断`事件的传播
- - 但是无法阻止默认事件
-- event.stopImmediatePropagation()
- - 如果有多个`相同类型`的事件监听函数`绑定到同一个`元素
- - 当该类型的事件触发时,它们会按照被`添加的顺序`执行
- - 如果其中某个监听函数执行了此方法,则当前元素`剩下`的监听函数将`不会`被执行
-
-### 3.阻止默认行为
-
-- e.preventDefault()
- - e.preventDefault()可以阻止事件的默认行为发生
- - 默认行为是指:点击 a 标签就转跳到其他页面、拖拽一个图片到浏览器会自动打开、点击表单的提交按钮会提交表单等等,因为有的时候我们并不希望发生这些事情,所以需要阻止默认行为
-
-### 拓展方向
-
-#### 性能方向
-
-- 如:事件委托的运用,一个 ul 和多个 li,点击 li 时,改变背景颜色
-
-```js
-{
- /*
-
-*/
-}
-var list = document.querySelector('list');
-
-function onClick(e) {
- var e = e || window.event;
- if (e.target.tagName.toLowerCase() === 'li') {
- // 业务逻辑...
- e.target.style.backgroundColor = 'pink';
- }
-}
-
-list.addEventListener('click', onClick, false);
-```
-
-#### 兼容性方向
-
-- 如:写一个兼容 IE 的事件绑定
-
-先区别 IE 的不同之处
-
-- 绑定事件的函数和传参不同: 使用 `attachEvent`绑定,`事件名要加on`
-- 解绑时使用的函数和参数不同: 使用`detachEvent`解绑
-- 阻断时的不同: `event.cancelBubble = true`
-- 阻止默认行为的不同: `event.returnValue = false`
-
-```js
-class BindEvent {
- constructor(el) {
- this.el = el;
- }
-
- addEventListener(type, handler) {
- if (this.el.addEventListener) {
- this.el.addEventListener(type, handler, false);
- } else if (this.el.attachEvent) {
- this.el.attachEvent('on' + type, handler);
- } else {
- this.el['on' + type] = handler;
- }
- }
-
- removeEventListener(type, handler) {
- if (this.el.removeEventListener) {
- this.el.removeEventListener(type, handler, false);
- } else if (this.el.detachEvent) {
- this.el.detachEvent('on' + type, handler);
- } else {
- this.el['on' + type] = null;
- }
- }
-
- static stopPropagation() {
- if (e.stopPropagation) {
- e.stopPropagation();
- } else {
- e.cancelBubble = true;
- }
- }
-
- static preventDefault() {
- if (e.preventDefault) {
- e.preventDefault();
- } else {
- e.returnValue = false;
- }
- }
-}
-```
-
-## 四、网络请求
-
-### 1.XMLHttpRequest
-
-- 属性
- - responseText(服务端响应的文本数据)
- - responseXML(服务点响应的 xml 或者 html 类型数据)
- - status(响应 HTTP 状态)
- - statusText(响应 HTTP 状态描述)
- - readyState(发出请求的状态码)对应`onreadystatechange`事件
- - 0:创建成功,但是没有调用 open 方法
- - 1:open 方法被调用
- - 2:send 方法被调用
- - 3:loading,下载中
- - 4:下载操作完成
- - timeout(超时时间,对应超时事件`ontimeout`,ontimeout 事件被弃用)
- - upload(上传进度)
-- 方法
- - open() 初始化请求(method, url, async),async 表示是否异步操作,默认 true
- - send() 发送请求数据,get 请求时,send 可以不传或者 null
- - abort() 中止已经发出的请求
- - setRequestHeader() 设置请求头信息
- - getRequestHeader() 获取指定响应头信息
- - getAllResponseHeaders() 获取所有响应头信息
-
-封装 XMLHttpRequest 请求
-
-```js
-function ajax({ method = 'get', url = '', params = undefined }) {
- return new Promise((resolve, reject) => {
- let xhr = new XMLHttpRequest();
- if (method.toLowerCase() === 'get' && params !== undefined) {
- url = url + '?' + params;
- }
- xhr.open(method, url, true);
- xhr.onreadystatechange = function () {
- if (xhr.readyState === 4) {
- if (xhr.status === 200) {
- resolve(xhr.responseText);
- } else {
- reject(xhr.status);
- }
- }
- };
-
- if (method.toLocaleLowerCase() === 'get') {
- xhr.send();
- } else {
- xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
- xhr.send(params);
- }
-
- xhr.onerror = (err) => reject(err);
- xhr.timeout = () => reject('timeout');
-
- // progress事件可以报告长时间运行的文件上传
- xhr.upload.onprogress = (p) => {
- console.log(Math.round((p.loaded / p.total) * 100) + '%');
- };
- });
-}
-```
-
-### 2.fetch
-
-- 方法:fetch(url,{}| init 对象 ),返回 Promise 对象,只支持异步
-- 响应通过 response 对象获取:
- - `fetch().then((response)=>{}).catch(()=>{})`
- - response 对象混入了 body,提供了 5 个方法,将 ReadableStream 转存到缓冲区的内存里,将缓冲区转换为 js 对象,通过 Promise 返回
- - response.text() //转为 text
- - response.json() //转为 json
- - response.formData()
- - response.arrayBuffer()
- - response.blob()
-- `不支持超时设置`
- - 但是可以使用`promise+setTimeout`进行控制
-- 默认`不携带cookies`,但是可以设置
- - `fetch(url, {credentials: 'include'});`
- - omit 不发送 cookie
- - same-origin 同源发送 cookie(默认)
- - include 都发送 cookie
-- resolve 若发生在网络通信正常(404,500)也是 resolve
- - .catch()也不会被执行。
- - reject 只发生在网络通信异常
- - 想要精确的判断 fetch 是否成功
- - 需要包含 promise resolved 的情况,此时再判断 response.ok 是不是为 true
-- 需要借用 AbortController 中止 fetch
-
-```js
-// resolve若发生在网络通信正常(404,500)也是resolve
-fetch('http://domain/service', {
- method: 'GET',
-})
- .then((response) => {
- // 想要精确的判断 fetch是否成功
- // 需要包含 promise resolved 的情况,此时再判断 response.ok是不是为 true
- if (response.ok) {
- return response.json();
- }
- throw new Error('Network response was not ok.');
- })
- .then((json) => console.log(json))
- // .catch()也不会被执行
- .catch((error) => console.error('error:', error));
-
-// ************************************
-// 不支持直接设置超时, 可以用promise
-function fetchTimeout(url, init, timeout = 3000) {
- return new Promise((resolve, reject) => {
- fetch(url, init).then(resolve).catch(reject);
- setTimeout(reject, timeout);
- });
-}
-// ************************************
-// 中止fetch
-// signal用于支持AbortController中断请求
-const controller = new AbortController();
-// AbortController接口表示一个控制器对象
-// 允许你根据需要中止一个或多个 Web请求
-fetch('http://domain/service', {
- method: 'GET',
- signal: controller.signal,
-})
- .then((response) => response.json())
- .then((json) => console.log(json))
- .catch((error) => console.error('Error:', error));
-controller.abort();
-```
-
-### 3.Http 状态码和 Header
-
-#### 1.状态码
-
-> 100 信息性|200 成功|300 重定向|400 客户端错误|500 服务器错误
-
-##### [1|2|3]xx
-
-- 101 切换协议
-- 200 Ok
-- **301** 永久重定向(设备会缓存)
-- 302 临时重定向(以前是临时转移,已经不推荐使用了,建议使用 307)
-- **307** 临时重定向
- - 如果是 POST/DELETE 过来的会继续使用
- - 302 只会使用 get
-- **304** (Not Modified)服务器文件未修改,协商缓存
-- 308 永久重定向
- 
-
-##### 4xx
-
-- 400 客户端请求有语法错误,不能被服务器识别
-- 403 服务器受到请求,但是拒绝提供服务,可能是跨域也可是权限不够
-- 404 请求的资源不存在
-- 405 请求的 method 不允许
- 
-
-##### 5xx
-
-- 500 服务器发生不可预期的错误
- 
-
-#### 2.字段
-
-- Content-Length: 发送给接收者给 Body 内容长度(字节)
- - 一个 Byte 是 8bit
- - utf-8 编码的字符是 1-4 个字节
-- User-Agent:客户端特性的字符串
-- Content-Type: 媒体类型
-- Origin:描述请求来源地址
-- Accept
- - 建议服务端返回何种媒体类型
- - */*表示所有类型(默认)
- - text/html,application/json
-- Accept-Encoding
- - 建议服务端发送什么编码(压缩算法)
- - deflate,gzip;q=1.0,\*;q=0.5
-- Accept-Language: 建议服务端传递那种语言
-- Referer
- - 告诉服务端打开当前页面的上一张页面的 URL;
- - 如果是 ajax 请求那么就告诉服务端发送请求的 URL 的什么
- - 非浏览器环境有时候不发生 Referer(或者虚拟 Referer,通常是爬虫)
- - 常用来做用户行为分析
-- Connection
- - 决定链接是否在当前事务完成后关闭
- - http1.0 默认是 close
- - http1.1 默认是 keep-alive
-
-
-
-### 4.拓展方向
-
-#### 如何应对网络不稳定(波动)的情况?
-
-- 失败了重发,指数补偿
-
-```js
-const request = (url) => {
- let resolved = false;
- let t = 1;
- return new Promise((resolve, reject) => {
- // Promise.race([
- // fetch(url),
- // wait(100, () => fetch(url)),
- // wait(200, () => fetch(url)),
- // wait(400, () => fetch(url)),
- // wait(800, () => fetch(url)),
- // wait(1600, () => fetch(url)),
- // ])
- function doFetch() {
- if (resolved || t > 16) return;
- fetch(url)
- .then((resp) => resp.text())
- .then((data) => {
- if (!resolved) {
- resolved = true;
- resolve(data);
- }
- });
-
- setTimeout(() => {
- doFetch();
- t *= 2;
- }, t * 100);
- }
- doFetch();
- });
-};
-```
-
-#### 如何处理并发请求?
-
-- 若`相同`的请求,`多次`发送,会照成`带宽`的浪费
-- 处理思路:做`缓存`
-- 因为请求具有`时效性`,所以`不能做永久缓存`
-- 相同的请求在`一定的时间`内只发生`一次`
- - 使用`w`保存请求信息,若同一时间发送多次相同对请求
- - 使用`w[hash].resolves`保存 resolve 函数
- - 当请求函数`w[hash].func`发送成功,执行 resolves 中的函数,保证每次请求都有响应信息
-
-```js
-import fetch from 'node-fetch';
-function hash(...args) {
- return args.join(',');
-}
-function window_it(fn, time = 50) {
- let w = {}; // 时间窗口
- let flag = false;
-
- return (...args) => {
- return new Promise((resolve, reject) => {
- if (!w[hash(args)]) {
- w[hash(args)] = {
- resolves: [],
- func: fn,
- args,
- };
- }
- if (!flag) {
- flag = true;
- setTimeout(() => {
- Object.keys(w).forEach((key) => {
- console.log(`run ${key}`);
- const { func, args, resolves } = w[key];
- func(...args)
- .then((res) => res.text())
- .then((data) => {
- resolves.forEach((r) => {
- console.log(`resolve ${key}`);
- r(data);
- });
- flag = false;
- delete w[key];
- });
- });
- }, time);
- }
-
- w[hash(args)].resolves.push(resolve);
- });
- };
-}
-
-const request = window_it(fetch, 20);
-request('http://www.baidu.com').then((txt) => console.log(txt.length));
-request('http://www.baidu.com').then((txt) => console.log(txt.length));
-request('http://www.baidu.com').then((txt) => console.log(txt.length));
-
-request('http://www.zhihu.com').then((txt) => console.log(txt.length));
-request('http://www.zhihu.com').then((txt) => console.log(txt.length));
-request('http://www.zhihu.com').then((txt) => console.log(txt.length));
-```
diff --git a/docs/blogs/index.md b/docs/blogs/index.md
deleted file mode 100644
index 217d6e6..0000000
--- a/docs/blogs/index.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-nav:
- title: Blog
- order: 3
-group:
- order: -1
----
-
-# 介绍
-
-记录一些学习笔记
diff --git a/docs/blogs/js_module.md b/docs/blogs/js_module.md
deleted file mode 100644
index a305712..0000000
--- a/docs/blogs/js_module.md
+++ /dev/null
@@ -1,312 +0,0 @@
----
-nav:
- title: Blog
-group:
- title: 工程化
- order: 1
-toc: content
-order: 0
----
-
-# 前端模块化
-
-## 省流:chatGPT 总结
-
-> 该文章主要讲述了前端模块化的发展历史和各个阶段的技术方案,包括无模块化(IIFE)、CommonJS、AMD、CMD、ESModule、UMD。
->
-> 其中,无模块化时期的文件拆分是最基础的模块化,但也存在函数命名冲突的问题;
->
-> IIFE 是现代模块化的基石,利用函数的块级作用域进行隔离,可以控制作用域;
->
-> CommonJS 文件即模块,模块加载同步,适用于服务器端 node,浏览器端使用 webpack 或 browserfy。
->
-> 最后,各种模块化技术方案都是为了更好地满足前端代码管理、组织、通信的需求,模块已经成为了代码管理/编译、业务分离的基本单元。
-
-## 一、参考资料
-
-- [es-module-history](https://gist.github.com/jkrems/769a8cd8806f7f57903b641c74b5f08a)
-- [网页性能管理详解](http://www.ruanyifeng.com/blog/2015/09/web-page-performance-in-depth.html)
-- [defer 和 async 的区别](https://segmentfault.com/q/1010000000640869)
-- [可能是最详细的 UMD 模块入门指南](https://juejin.cn/post/6844903927104667662)
-- [在浏览器中使用 ECMAScript Modules](https://juejin.cn/post/6943233321765715976#heading-9)
-
-## 二、发展历史
-
-- js 的设计之初就是为了满足简单的页面设计+表单提交,并无模块化 or 命名空间的概念
-- 而是实实在在的需求推进了所有技术的演进,模块化也是。
-- 站在前端发展的上帝视角来看,随着前端的能力在纵深都得到增强之后,迫切的需要更好的代码管理、组织、通信的模式,各种模块化的技术方案开始出现。
-- 现如今模块已经成为了代码管理/编译,业务分离的基本单元。
-
-总的发展历史:
-
-- 无模块化(IIFE) -> CommonJS -> AMD -> CMD -> ESModule、UMD
-
-### 1.无模块化
-
-需求:
-
-1. 开始需要在页面中加载不同的 js:动画、组件、格式化
-2. 多种 js 分布在不同的文件中
-3. 不同的文件又被同一个模块中引用
-
-**文件拆分是最基础的模块化**
-
-```js
-
-
-
-// ...
-```
-
-问题:这个时期函数命名可能会冲突,影响到其他人写的代码
-
-#### 引出的问题:
-
-- script 标签的参数 - async & defer 的区别?
-
-
-
-总结:
-主要是对标签下载和执行时机的控制
-
-- 普通标签 - 遇到标签就去下载,下载完毕之后立刻去解析代码并执行,这个时候会阻塞 GUI 线程渲染
-- defer - 遇到标签之后异步下载,下载完成之后等待其他标签解析完成之后开始执行(**在主线程解析完成之后才执行,降低脚本的优先级,保持用户体验**,使用相对较多)
-- async - 遇到标签之后异步下载,下载完成之后立即执行并阻塞渲染,执行完成之后继续渲染(**异步下载结束之后立即执行,不保证脚本执行顺序**,一般用来给那些不需要任何依赖的脚本使用)
-- 拓展
-- `ESM` 默认是通过 `defer` 的方式加载的,所以是不需要在 `script` 标签上加 `defer` 属性的
-
-#### 横向拓展
-
-1. 兼容性如何? > IE9
-2. 引导内容
- 1. **浏览器渲染原理**
- 2. **同步异步的原理(Promise,任务队列)**
- 3. 模块化加载原理
-3. 产生的问题
- 1. 污染全局作用域 => 不利于大型项目的开发以及多人团队的共建
-
-### 2.IIFE
-
-IIFE 主要是开始对作用域的把控
-利用函数的块级作用域进行隔离
-可以说 IIFE 是现代模块化的基石
-
-```js
-(function ($) {
- console.log($);
- return {
- data: [],
- };
-})(jQuery); //注入对象
-```
-
-### 3.Commonjs(cjs)
-
-- 服务器端 node,浏览器端 webpack|browserfy
-- 文件即模块
- - 模块加载同步
- - 服务器模块加载是运行时同步加载
- - 浏览器模块加载是提前编译打包处理
-- exports = module.exports
- - 注意:不能直接给 exports 赋值,会导致与 module 断开引用
- - 使用 require 进行引入
-- 缓存
- - cjs 在引用文件的时候,会将文件执行一遍,然后将结果通过浅拷贝的方式写入全局缓存中
- - 后续再次 require 同一个文件时,直接从缓存中读取,不会重新执行模块文件
-
-```js
-// a.js
-var name = 'morrain';
-var age = 18;
-exports.name = name;
-exports.getAge = function () {
- return age;
-};
-// b.js
-var a = require('a.js');
-console.log(a.name); // 'morrain'
-a.name = 'rename';
-var b = require('a.js');
-console.log(b.name); // 'rename'
-```
-
-- 模块输出的结果是**值的拷贝**,一但输出,模块内部变化后,无法影响之前的引用,而**ESModule 是引用拷贝**
-
-```js
-// a.js
-var name = 'morrain';
-var age = 18;
-exports.name = name;
-exports.age = age;
-exports.setAge = function (a) {
- age = a;
-};
-// b.js
-var a = require('a.js');
-console.log(a.age); // 18
-a.setAge(19);
-console.log(a.age); // 18
-```
-
-- cjs 在**运行时**加载,ESM 是**编译时**加载
-- 缺点:**不支持异步**
- - cjs 更偏向于服务端,因为服务端 I/O 能力强,所以 CMJ 是同步的方法
- - ESM 时机遇编译时的,所以支持**异步**能力
-
-### 4.AMD
-
-AMD(Asynchronous module definition)异步的模块定义
-解决了 Commonjs 不支持异步的缺点,可以在浏览器端运行
-
-经典代表:[require.js](https://requirejs.org/)
-
-使用方法:
-
-```js
-// define来定义模块
-define(id, [depends], callback);
-// require进行加载
-require([module], callback);
-```
-
-示例:
-
-```js
-//提前加载执行顺序
-// RequireJS
-define('a', function () {
- console.log('a load');
- return {
- run: function () {
- console.log('a run');
- },
- };
-});
-
-define('b', function () {
- console.log('b load');
- return {
- run: function () {
- console.log('b run');
- },
- };
-});
-
-require(['a', 'b'], function (a, b) {
- console.log('main run'); // 🔥
- a.run();
- b.run();
-});
-
-// a load
-// b load
-// main run
-// a run
-// b run
-```
-
-缺点:
-
-- 在代码运行时,会**先递归的找出所有的依赖**,然后将依赖放到**前面**加载
-- 如果依赖过多,项目可能会变慢,引入成本升高
-
-#### 引出的问题:
-
-- 如果现在 AMD 中兼容 CJS 的代码怎么办?
-
-```js
-define('amdModule', [], (require) => {
- const dep1 = require('./dep1');
- const dep2 = require('./dep2');
- // 业务逻辑……
-});
-```
-
-### 5.CMD
-
-CMD(Common Module Definition-通用模块定义)推崇**依赖后置**,也就是**按需执行**
-CMD 解决了 AMD**依赖前置**导致的引入成本过高的问题
-整合了 CJS 和 AMD 的特点,浏览器端运行
-
-经典代表:[Sea.js](https://seajs.github.io/seajs/docs/)
-
-```js
-// 引入require
-var fs = require('fs'); //同步
-require.async('./module3', function (m3) {}); //异步
-
-// sea.js,按需引入
-define('a', function (require, exports, module) {
- console.log('a load');
- exports.run = function () {
- console.log('a run');
- };
-});
-
-define('b', function (require, exports, module) {
- console.log('b load');
- exports.run = function () {
- console.log('b run');
- };
-});
-
-define('main', function (require, exports, module) {
- console.log('main run');
- var a = require('a');
- a.run();
- var b = require('b');
- b.run();
-});
-
-seajs.use('main');
-
-// main run
-// a load
-// a run
-// b load
-// b run
-```
-
-缺点:
-
-- 依赖打包,加载逻辑存在于每个模块中
-- 扩大了模块体积,同时功能上依赖编译
-
-### 6.UMD
-
-UMD (Universal Module Definition)就是一种通用模块定义规范,让你的模块能在所有运行环境中使用,如`CommonJS`, `AMD`, `CMD`
-
-```js
-(function (root, factory) {
- if (typeof module === 'object' && typeof module.exports === 'object') {
- console.log('是commonjs模块规范,nodejs环境');
- module.exports = factory();
- } else if (typeof define === 'function' && define.amd) {
- console.log('是AMD模块规范,如require.js');
- define(factory);
- } else if (typeof define === 'function' && define.cmd) {
- console.log('是CMD模块规范,如sea.js');
- define(function (require, exports, module) {
- module.exports = factory();
- });
- } else {
- console.log('没有模块环境,直接挂载在全局对象上');
- root.umdModule = factory();
- }
-})(this, function () {
- return {
- name: '我是一个umd模块',
- };
-});
-```
-
-### 7.ESM
-
-ESModule 是伴随着 ES6 推出的原生模块化解决方案
-import 输入、export 输出
-
-- 支持异步加载
-- 编译时加载,支持静态分析
-- 更好的支持`chunk`和`tree shaking`
-- 支持动态导入(按需加载)`import().then()`
-- 支持`import.meta`获取模块元数据
diff --git a/docs/blogs/performance.md b/docs/blogs/performance.md
deleted file mode 100644
index bebfc7d..0000000
--- a/docs/blogs/performance.md
+++ /dev/null
@@ -1,523 +0,0 @@
----
-nav:
- title: Blog
-group:
- title: 其他
- order: 2
-toc: content
-order: 0
----
-
-# 前端性能指标&优化
-
-## 参考资料
-
-- [从输入 URL 到页面展示到底发生了什么?](https://zhuanlan.zhihu.com/p/133906695)
-- [Web 指标-Google](https://web.dev/vitals/)
-- [关于 cdn、回源等问题一网打尽](https://juejin.cn/post/6844903604596244493)
-- [前端性能优化之 rel=“prefetch“预/懒加载功能](https://blog.csdn.net/weixin_45792953/article/details/112168794)
-
-## 前置知识
-
-从一个经典的面试题引出文章内容:
-**输入 url 到页面最终呈现都发生了什么?**
-
-- URL 解析
- - 判断输入是搜索关键字还是 url 地址,对 url 解析
-- DNS 域名解析获取 IP 地址
- - 缓存查找:浏览器缓存(chrome://net-internals/#dns)->系统缓存(host)->路由器缓存->运营商缓存(IPS)->根域名服务器
- - 向本地 DNS 服务器发送查询报文"query zh.wikipedia.org"
- - 本地 DNS 服务器检查自身缓存,存在返回,不存在向根域名服务器发送查询报文"query zh.wikipedia.org",得到顶级域 .org 的顶级域名服务器地址
- - DNS 服务器向 .org 域的顶级域名服务器发送查询报文"query zh.wikipedia.org",得到二级域 .wikipedia.org 的权威域名服务器地址
- - DNS 服务器向 .wikipedia.org 域的权威域名服务器发送查询报文"query zh.wikipedia.org",得到主机 zh 的 A 记录,存入自身缓存并返回给客户端
- - 拓展方向:什么是 CDN?、CDN 回源?
-- 根据 IP 地址建立 TCP 链接(三次握手)
- - 三次挥手主要是为了`双方确认过信息,可以建立起通信`,见图 1
- - 抽象一点的话,这个过程可以想象成两个人分别站在`山谷的两边`,想要`相互聊天`,但是又不确定自己喊一嗓子之后对方到底能不能听到,然后就双方开始聊天之前先互相喊几嗓子,确认一下双方是不是都可以听到
- - 第一次:主机 A 发给 B 一个标识位 SYN,希望通过该数据告诉主机 B 建立连接
- - 相当于 A 想找 B 聊天,就喊了一个 x 给 B
- - 第二次:主机 B 通过一个确认应答的 ACK 和同步序列号 SYN 响应给 A,这样主机 A 通过 ACK 就知道主机 B 接收到了第一次的握手的数据,并且主机 A 通过响应的 SYN 知道了要从那个序列号做标记
- - 相当于 B 听到了 A 喊的 x,知道 A 想聊天,`B不知道A能不能听到自己说话`,然后 B 就把 A 第一次的 x 和自己想说的话 y 一起喊给了 A
- - 第三次:主机 A 发送主机 B 响应的 SYN+1,这样主机 B 就知道主机 A 收到了自己的信息,后面就可以传输数据了
- - 然后 A 收到了第一次喊话的 x+1,这样`A就确认了B可以听到自己的话`,然后 A 再把 B 说的话 y+1 喊给 B,这样`B收到A的信息之后就知道A可以听到自己的话`,后面双方就可以愉快的聊天了
-- 发送 http 请求,服务器响应,缓存判断(强缓存|协商缓存)
- - 请求:发送命令+发送请求头信息+空白行+请求体(post)
- - 响应:响应状态 + 响应头+空白行+响应体
- - 强缓存:cache-control(max-age)、Expires
- - 协商缓存:返回 ETag、Last-modified 和请求 IF-none-match、IF-modified-since
-- 浏览器解析响应内容并渲染页面,见图 2
- - 解析 HTML,生成 DOM 树
- - 解析 CSS,生成 CSSOM(CSS Object Model)
- - 合并 DOM 树和 CSSOM,生成 Render 树
- - 然后交给 Layout 引擎,根据 Render 树信息,获取节点的元素大小和位置等布局信息
- - 然后交给 Paint 引擎,绘制页面像素信息,显示在屏幕上
- - 这个过程并不是一次性完成的,而是可能存在`重复`或`交叉`的情况,比如当遇到 JavaScript 或者动态资源时,可能需要重新构建或更新某些部分。
- - 拓展方向:重排、重绘
- - 重排(reflow):元素的几何尺寸发生变化需要重新计算元素在页面中的位置和大小,这个过程会交给 Layout 引擎,导致整颗 Render 树重新计算,开销较大
- - 重绘(repaint):元素的外观(颜色、背景、边框)发生变化,浏览器需要重新绘制,这个过程触及到 Paint 引擎,直接绘制,执行效率比重排高
-- 连接结束关闭 TCP 链接(四次挥手)
- - 抽象层面理解的话,就好比男女朋友分手
- - 第一次:男方想分手,就给女方发一个 FIN 包(表示结束),并等待女方的回答
- - 第二次:女方收到了男方的 FIN 包,就给男方回复了一个 ACK 包(表示确认),告诉他“我知道你想分手了”,但是女方还有一些话想说,不会马上同意分手(表示服务器需要时间处理关闭的逻辑)
- - 第三次:女方说完了自己的话(关闭逻辑处理结束),就给男方发一个 FIN 包(表结束),表示自己也同意分手了,并等待男方的回应
- - 第四次:男方收到了 FIN 包,就给女方回一个 ACK 包(表确认),表示自己也同意分手了,并且俩人不再有话说。这样女方听到之后俩人就正式断开了链接
-
-三次握手与四次挥手
-
-
-浏览器解析响应内容并渲染页面
-
-
-### 拓展方向
-
-#### TCP 与 UDP 的区别?
-
-- TCP:
- - TCP 协议则是`建立在IP协议`之上的。TCP 协议负责在两台计算机之间建立`可靠`连接,保证数据包按`顺序`到达。
- - TCP 协议会通过`三次握手`建立连接,然后,对每个 IP 包编号,确保对方按顺序收到,如果包丢掉了,就自动重发。
- - 许多常用的更高级的协议都是建立在 TCP 协议基础上的,比如用于浏览器的`HTTP`协议、发送邮件的`SMTP`协议等。
- - 一个 TCP 报文除了包含要传输的数据外,还包含源 IP 地址和目标 IP 地址,源端口和目标端口。
-- UDP:
- - UDP 则是`面向无连接`的协议,TCP 必须建立可靠的连接
- - 使用 UDP 协议时,`不需要建立连接`,只需要知道对方的 IP 地址和端口号,就可以直接发数据包。但是,能不能到达就不知道了。所以 UDP 传输的数据`不可靠`
- - UDP 是`面向报文`的,没有拥塞控制,所以速度快,比较多媒体通讯,
- - 如:聊天和视频,支持一对一、一对多、多对一、多对多,如浏览器上的视频聊天
- - 但是现在常见的直播服务,为了提供`稳定`的直播环境,都是采用的 TCP 链接
-
-#### HTTP1.0、1.1、2.0 的区别?
-
-- 1.0
- - 每次 tcp 连接只能发送`一个`请求,当服务器响应后就会关闭这次连接,下一个请求需要`再次建立`TCP 连接
-- 1.1
- - 默认采用`持续链接`(TCP 链接默认不关闭,可以被多个请求复用,不用声明 Connection:keep-alive)
- - 增加了`管道机制`,在同一个 TCP 连接里,浏览器允许多个请求同时发送,增加了并发性,进一步改善了 HTTP 协议的效率
- - 但是在同一个 TCP 连接里,所有的数据通信是按`次序`进行的。如果前面有一个请求回应慢,就会有许多请求排队,造成`“队头堵塞”`
-- 2.0
- - 加了`双工模式`,即:不仅客户端能够同时发送多个请求,服务端也能同时处理多个请求,解决了队头堵塞的问题
- - 使用了`多路复用`的技术,做到`同一个连接并发处理多个请求`,而且并发请求数量比 http1.1 大了好几个数量级
- - 增加服务器推送的功能,不经请求,服务端主动向客户端发送数据
-
-#### HTTP1.1 长连接和 2.0 多路复用的区别?
-
-- 长连接:同一时间一个 TCP 连接只能处理一个请求,采用`一问一答`的形式,上一个请求响应后才能处理下一个请求,由于`浏览器有最大TCP连接的限制`(6 个),所以有了最大并发请求数的限制。
-- 多路复用:同域名下所有的通信都在`单个TCP`连接上完成,消除了因多个 TCP 连接而带来的延时和内存消耗。单个连接上可以`并行`的请求和响应,之前互不干扰
-
-#### 为什么 HTTP1.1 不能实现多路复用?
-
-- http2.0 是基于`二进制"帧"`的概念,http1.1 是基于`“文本分割”`解析的协议
-- 在 http1.1 的报文结构中,服务器需要不断的读入字节,直到遇到`换行符(br)`,或者说是空白行。处理顺序是`串行`的,一个请求和一个响应需要通过`一问一答`的形式才能对应起来
-- http2.0 中,有两个非常重要的概念,分别是`“帧”和“流”`
-- 帧:代表着最小的`数据单位`,每个帧会标识出该帧属于哪个流,流也就是帧组成的数据流
-- 多路复用:就是在每一个`TCP连接中可以存在多条流`。
-- 换句话说,也就是可以发送多个请求,可以通过`帧中的标识`知道属于哪个请求
-- 通过这个技术,可以避免 HTTP 就版本中的`队头堵塞`问题,极大的提高传输性能
-
-#### 什么是 CDN?、CDN 回源?
-
-- CDN 是`内容分发网络`的缩写,它是一种将互联网内容快速传输给用户的技术。CDN 通过在不同地区部署多个服务器,将内容缓存到离用户最近的服务器上,从而`减少延迟和带宽`消耗。
-- CDN 回源是指当 CDN 节点没有缓存用户请求的内容时,需要向源站(原始服务器)请求资源,并`重新设置缓存`的过程。回源可以保证 CDN 节点总是能够提供最新和最完整的内容给用户,但也会增加源站的负载和流量成本。
-
-#### JS 中的垃圾回收机制(GC)
-
-垃圾回收是一站自动管理内存的机制,js 中的 gc 主要有两种算法:引用计数、标记清除
-
-- 引用计数:比较早的算法
- - 记录每个对象被引用的次数,当一个对象的引用次数为零时,就可以被释放
- - 缺点:无法处理循环引用的情况
- - 当两个或多个对象相互引用时,他们的引用计数永远不会为零
- 循环引用例子:
-
-```js
-var a = {};
-var b = {};
-a.b = b;
-b.a = a;
-```
-
-- 标记清除:常用的算法,可以处理循环引用问题
- - 遍历所有的对象,标记那些`可达`的对象,然后清除那些不可达的对象
- - 这样即使发生循环引用,但是当他们都不可达了,就会被标记清除算法回收
-
-标记清除处理循环引用的例子:
-
-```js
-var a = {};
-var b = {};
-a.b = b;
-b.a = a;
-a = null;
-b = null;
-```
-
-这里,对象 a 和对象 b 互相引用,但在最后两行,它们都被赋值为 null,不再被任何变量引用。
-如果使用引用计数算法,它们的引用计数仍然为 1,不会被回收。
-但如果使用标记清除算法,它会从全局对象 window)作为根开始遍历所有的对象,发现 a 和 b 都不可达了(因为没有任何变量指向它们),就会把它们标记为垃圾,并在下一次 gc 时清除它们。
-
-## 检测工具
-
-原理:就是在合适的时机,打上合适的时间戳,或者暴露出事件。然后通过这些时间戳之间的差值,得出⼀个耗时时间。这个耗时时间就可以反映出我们⻚⾯的相关性能。工具如下:
-
-- API:[window.performance](https://developer.mozilla.org/zh-CN/docs/Web/API/Performance_API)
-- 性能监测对象:[PerformanceObserver.observe()](https://developer.mozilla.org/zh-CN/docs/Web/API/PerformanceObserver/observe)
-- npm 包:[web-vitals](https://github.com/GoogleChrome/web-vitals)
-- 开发者工具:[Lighthouse](https://developer.chrome.com/docs/lighthouse/overview/)
-
-### 1.performance
-
-Performance 接口可以获取到当前页面中与性能相关的信息。它是 High Resolution Time API 的一部分,同时也融合了 Performance Timeline API、[Navigation Timing API](https://developer.mozilla.org/en-US/docs/Web/API/Navigation_timing_API)、 [User Timing API](https://developer.mozilla.org/en-US/docs/Web/API/User_Timing_API)和 [Resource Timing API](https://developer.mozilla.org/en-US/docs/Web/API/Resource_Timing_API)。
-
-- User Timing API :⽤户⾃⼰定义在代码中通过调⽤ performance.mark(key) ⽅法定义的时间点。
-- Navigation Timing API : 资源请求的时间戳。
-- Navigation Timing API :它⾥⾯包含的是我们从请求开始,到整个⻚⾯的完全显示的各个阶段的时间点,包
- 含了以下:
- 
-
-| key 值 | value 值解释 |
-| :------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------: |
-| navigationStart | 当前浏览器窗⼝的前⼀个⽹⻚关闭,发⽣ unload 事件时的时间戳。如果没有前⼀个⽹⻚,就等于 fetchStart(也就是输⼊ URL 开始,第⼀步就是卸载上个⻚⾯) |
-| redirectStart | 第⼀次重定向开始时的时间戳,如果没有重定向,或者上次重定向不是同源的,则为 0 |
-| redirectEnd | 最后⼀次重定向完成,也就是 Http 响应的最后⼀个字节返回时的时间戳,如果没有重定向,或者上次重定向不是同源的,则为 0 |
-| fetchStart | 浏览器准备通过 HTTP 请求去获取⻚⾯的时间戳。在检查应⽤缓存之前发生 |
-| domainLookupStart | 域名查询开始时的时间戳。如果使⽤持久连接,或者从本地缓存获取信息的,等同于 fetchStart |
-| domainLookupEnd | 域名查询结束时的时间戳。如果使⽤持久连接,或者从本地缓存获取信息的,等同于 fetchStart |
-| connectStart | HTTP 请求开始向服务器发送时的时间戳,如果是持久连接,则等同于 fetchStart |
-| connectEnd | 浏览器与服务器之间的连接建⽴时的时间戳,连接建⽴指的是所有握⼿和认证过程全部结束 |
-| requestStart | 浏览器向服务器发出 HTTP 请求时(或开始读取本地缓存时)的时间戳 |
-| responseEnd | 浏览器从服务器收到(或从本地缓存读取)最后⼀个字节时(如果在此之前 HTTP 连接已经关闭,则返回关闭时)的时间戳 |
-| domLoading | 当前⽹⻚ DOM 结构开始解析时,也就是 document.readyState 属性变为“loading”、并且相应的 readystatechange 事件触发时的时间戳 |
-| domInteractive | 当前⽹⻚ DOM 结构结束解析 |
-| domContentLoadedEventStart | 当前⽹⻚ DOMContentLoaded 事件发⽣时,也就是 DOM 结构解析完毕、所有脚本开始运⾏时的时间戳 |
-| domContentLoadedEventEnd | 当前⽹⻚ DOMContentLoaded 事件发⽣时,也就是 DOM 结构解析完毕、所有脚本运⾏完成时的时间戳 |
-| domComplete | 当前⽹⻚ DOM 结构⽣成时,也就是 Document.readyState 属性变为“complete” |
-| loadEventStart | 当前⽹⻚ load 事件的回调函数开始时的时间戳。如果该事件还没有发⽣,返回 0 |
-| loadEventEnd | 当前⽹⻚ load 事件的回调函数结束时的时间戳。如果该事件还没有发⽣,返回 0 |
-
-### 2.performanceObserver
-
-PerformanceObserver.observe() :指定监测的 `entryTypes` 的集合。
-
-当 performance entry 被记录并且是指定的 `entryTypes` 之⼀的时候,性能观察者对象的回调函数会被调⽤。
-
-```js
-var observer = new PerformanceObserver(callback);
-
-// 直接往 PerformanceObserver() 入参匿名回调函数
-// 成功 new 了一个 PerformanceObserver 类的,名为 observer 的对象
-var observer = new PerformanceObserver(function (list, obj) {
- var entries = list.getEntries();
- for (var i = 0; i < entries.length; i++) {
- //处理“mark”和“frame”事件
- }
-});
-//调用 observer 对象的 observe() 方法
-observer.observe({ entryTypes: ['mark', 'frame'] });
-```
-
-### 3.web-vitals
-
-⽬前只能统计'CLS' | 'FCP' | 'FID' | 'LCP' | 'TTFB' 。如果需要扩充的话,就可以使⽤上⾯的 Performance 进⾏更改
-
-```js
-import { getCLS, getFID, getLCP } from 'web-vitals';
-
-getCLS(console.log);
-getFID(console.log);
-getLCP(console.log);
-// ...
-```
-
-### 4.Lighthouse
-
-使用开发者工具中的`Lighthouse`Tab
-或者使用 Node CLI 的方式
-
-```js
-npm install -g lighthouse
-lighthouse
-```
-
-## 性能指标
-
-### 1.白屏时间 FP
-
-输入 URL 开始,到页面开始有变化,只要有任意像素点的变化,就算是白屏时间完结
-
-```js
-function getFP() {
- new PerformanceObserver((entryList, observer) => {
- let entries = entryList.getEntries();
- for (let i = 0; i < entries.length; i++) {
- if (entries[i].name === 'first-paint') {
- console.log('FP', entries[i].startTime);
- }
- }
- }).observe({ entryTypes: ['paint'] });
-}
-```
-
-### 2.首次内容绘制时间 FCP
-
-指的是⻚⾯上绘制了第⼀个元素的时间
-
-FP 与 FCP 的最⼤的区别就在于:FP 指的是绘制像素,⽐如说⻚⾯的背景⾊是灰⾊的,那么在显示灰⾊背景时就记录下了 FP 指标。但是此时 DOM 内容还没开始绘制,可能需要⽂件下载、解析等过程,只有当 DOM 内容发⽣变化才会触发,⽐如说渲染出了⼀段⽂字,此时就会记录下 FCP 指标。因此说我们可以把这两个指标认为是和⽩屏时间相关的指标,所以肯定是最快越好。
-
-```js
-function getFCP() {
- new PerformanceObserver((entryList, observer) => {
- let entries = entryList.getEntries();
- for (let i = 0; i < entries.length; i++) {
- if (entries[i].name === 'first-contentful-paint') {
- console.log('FCP', entries[i].startTime);
- }
- }
- }).observe({ entryTypes: ['paint'] });
-}
-```
-
-### 3.⾸⻚时间
-
-当 onload 事件触发的时候,也就是整个⾸⻚加载完成的时候
-
-```js
-function getFirstPage() {
- console.log(
- 'FIRSTPAGE',
- performance.timing.loadEventEnd - performance.timing.fetchStart,
- );
-}
-```
-
-### 4.最⼤内容绘制 LCP
-
-⽤于记录视窗内最⼤的元素绘制的时间,该时间会随着⻚⾯渲染变化⽽变化,因为⻚⾯中的最⼤元素在渲染过程中可能会发⽣改变,另外该指标会在⽤户第⼀次交互后停⽌记录。
-
-```js
-function getLCP() {
- new PerformanceObserver((entryList, observer) => {
- let entries = entryList.getEntries();
- const lastEntry = entries[entries.length - 1];
- console.log('LCP', lastEntry.renderTime || lastEntry.loadTime);
- }).observe({ entryTypes: ['largest-contentful-paint'] });
-}
-```
-
-### 5.⾸次可交互时间 TTI
-
-FCP 指标后,首个长任务执行时间点,其后无长任务或 2 个 get 请求。
-
-1. 从 FCP 指标后开始计算
-2. 持续 5 秒内⽆⻓任务(执⾏时间超过 50 ms)且⽆两个以上正在进⾏中的 GET 请求
-3. 往前回溯⾄ 5 秒前的最后⼀个⻓任务结束的时间
-
-
-
-```js
-function getTTI() {
- let time = performance.timing.domInteractive - performance.timing.fetchStart;
- console.log('TTI', time);
-}
-```
-
-### 6.⾸次输⼊延迟 FID
-
-- 从用户第一次与页面交互到浏览器实际能够开始处理事件的时间,在 FCP(首次内容绘制) 和 TTI (首次可交互时间)之间
-- ⽤户⾸次与⻚⾯交互时响应的延迟
-- eg:点击输入框后,因渲染等引起的延迟
-
-```js
-function getFID() {
- new PerformanceObserver((entryList, observer) => {
- let firstInput = entryList.getEntries()[0];
- if (firstInput) {
- const FID = firstInput.processingStart - firstInput.startTime;
- console.log('FID', FID);
- }
- }).observe({ type: 'first-input', buffered: true });
-}
-```
-
-### 7.累计位移偏移 CLS
-
-- 通过计算未在用户输入 500 毫秒内发生的布局偏移的偏移分数总和来测量内容的不稳定性
-- ⻚⾯渲染过程中突然插⼊⼀张巨⼤的图⽚或者说点击了某个按钮突然动态插⼊了⼀块内容等等相当影响⽤户体验
-- 这个指标就是为这种情况⽽⽣的,计算⽅式为:
-- [`位移影响的⾯积 * 位移距离`](https://web.dev/cls/)
-- CLS 推荐值为低于 0.1
-- CLS 较差的最常见原因为:
- - 无尺寸的图像
- - 无尺寸的广告、嵌入和 iframe
- - 动态注入的内容
- - 导致不可见文本闪烁 (FOIT)/无样式文本闪烁 (FOUT) 的网络字体
- - 在更新 DOM 之前等待网络响应的操作
-
-
-
-```js
-function getCLS() {
- try {
- let cumulativeLayoutShiftScore = 0;
- const observer = new PerformanceObserver((list) => {
- for (const entry of list.getEntries()) {
- // Only count layout shifts without recent user input.
- if (!entry.hadRecentInput) {
- cumulativeLayoutShiftScore += entry.value;
- }
- }
- });
- observer.observe({ type: 'layout-shift', buffered: true });
- document.addEventListener('visibilitychange', () => {
- if (document.visibilityState === 'hidden') {
- // Force any pending records to be dispatched.
- observer.takeRecords();
- observer.disconnect();
- console.log('CLS:', cumulativeLayoutShiftScore);
- }
- });
- } catch (e) {
- // Do nothing if the browser doesn't support this API.
- }
-}
-```
-
-### 8.谷歌标准
-
-
-
-- LCP(Largest Contentful Paint - 最大内容绘制时间)=> 加载性能
-- FID(First Input Delay - 首次输入延迟)=> 交互性
-- CLS(Cumulative Layout Shift - 累计位移偏移)=> 视觉稳定性
-
-### 9.如何使用
-
-- vue:定义公用方法类,common.js,mounted 阶段页面进行挂载,$nextTick()里对响应方法进行使用
-- react:hooks useEffect()中使用`react.useEffect(() => {}, []);`
-- 公司内部使用打点系统:使用 echars 绘制,使用均值统计、百分位数统计、样本分布统计输出性能
-
-## 优化方法
-
-### 1.[LCP](https://web.dev/optimize-lcp/)
-
-影响因素
-
-- 缓慢的服务器响应速度
-- 阻塞渲染的 JavaScript 和 CSS
-- 缓慢的资源加载速度
-- 客户端渲染
-
-提升方法
-
-- 提⾼带宽(⽹速)
-- 需要使⽤ webpack 进⾏ tree-shaking
-- 使⽤路由懒加载,只有在使⽤的时候在进⾏路由加载
-- 部署 CDN,缩短⽤户与节点之间的距离(⽹速)
-- 建⽴缓存,提⾼下次加载速度。
-- 开启 gzip 压缩。
-- 不要在头部添加任何 script 标签,或使用 js 异步加载 defer。
-- 对于少量⼩图标(单个尽量不要超过 10K 的),我们可以使⽤ url-loader 打包。或者使⽤将图标转化为字体库,异步进⾏加载。
-- 对于⼤图标的话,需要做到在展示的时候再去加载。也就是当图⽚出现到浏览器窗⼝的时候再去加载,⽽不是⾸屏的图⽚全部加载。
-
-### 2.[FID](https://web.dev/optimize-fid/)
-
-影响因素
-
-- 对于⽤户可操作时间,影响⼀个是注册的事件是否可以被执⾏(说的通俗点就是 JS 脚本是否加载完毕),以及是否存在`⻓任务`。
-
-提升方法
-
-- `分割长任务`
-- 对⽂件进⾏`懒加载`,不要⼀次性把所有的 JS 加载出来。这就需要使⽤路由懒加载,在跳转到某个路由的时候,再去加载他的脚本资源。这样就可以保证 JS 加载速度的优化。
-- 不要在响应事件⾥有过多的运算,导致卡顿。如果确有需要,应当开启`webWorker`,新起线程运算。
-
-### 3.[CLS](https://web.dev/optimize-cls/)
-
-影响因素
-
-- 无尺寸的图像
-- 无尺寸的广告、嵌入和 iframe
-- 动态注入的内容
-- 导致不可见文本闪烁 (FOIT)/无样式文本闪烁 (FOUT) 的网络字体
-- 在更新 DOM 之前等待网络响应的操作
-
-提升方法
-
-- 设置图片的时候给宽高
-- 预留后续动态插入的内容:骨架屏
-- 如果经常需要变动的元素,脱离⽂档流,或者是占据位置,只是隐藏
-- 文本字体等资源预加载
-- 倾向于选择 transform 动画,而不是触发布局偏移的属性动画
-
-## 实战
-
-整体优化思路及解析:
-
-- 从浏览器输入 url 到页面各阶段做了什么,进行性能优化
-- 根据前端性能指标进行优化
-- 框架特有的性能优化点:小程序分包、vue 路由按需加载等
-- 优化方法:开发规范、技术架构设计、系统架构设计
-
-### 1.浏览器加载优化
-
-#### DNS 预解析、预链接
-
-```html
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-更多内容见[前端性能优化之 rel=“prefetch“预/懒加载功能](https://blog.csdn.net/weixin_45792953/article/details/112168794)
-
-#### http 请求阶段
-
-- 减少 http 请求合理利用时序:资源合并(雪碧图)、使用 promise.all 并发请求
-- 减少资源体积:减少 cookie 信息、图片格式优化、gzip 静态资源压缩、webpack 打包压缩
-- 合理利用缓存:cdn、http 缓存(强缓存和协商缓存)、本地缓存(localStorage、sessionStorage)
-
-#### 浏览器渲染阶段:下载 css 并解析、下载 js 文件并解析会影响页面首屏渲染
-
-- 减少重排重绘,尽量使用 css 动画,或者添加 will-change 属性
-- script 脚本放在 body 元素中⻚⾯内容的后⾯,避免 JS 阻碍 html 解析,减少⽩屏时间
-- css 文件尽量放在 head 中,尽快下载和解析
-- 使用预解析和异步加载:prefetch、prerender、preload、async、defer
-- 服务器端渲染 ssr
-- 资源按需引入:路由懒加载,组件库按需引入
-
-### 2.技术框架
-
-- 路由懒加载
-- 组件按需引入:babel 插件转换
-- webpack 打包优化配置:资源压缩、资源拆分部署至 cdn(externals)
-- 小程序:分包加载、setData 操作优化、限频接口调用优化等
-
-### 3.架构优化
-
-- cdn 预热
-- nginx 缓存配置、gzip 压缩开启
-- ssr 及预渲染
-- 后端 bigpipe 引入:动态网页加载技术
-
-### 4.bigpipe 框架
-
-[bigPipe](https://github.com/bigpipe/bigpipe)是由 facebook 提出来的⼀种动态⽹⻚加载技术。
-它将⽹⻚分解成称为 pagelets 的⼩块,然后分块传输到浏览器端,进⾏渲染。
-它可以有效地提升⾸屏渲染时间。bigpipe 的适⽤是服务端进⾏渲染,然后将⼀块⼀块的⽂件传递给前端。
diff --git a/docs/blogs/promise.md b/docs/blogs/promise.md
deleted file mode 100644
index bf75b65..0000000
--- a/docs/blogs/promise.md
+++ /dev/null
@@ -1,859 +0,0 @@
----
-nav:
- title: Blog
-group:
- title: js相关
- order: 0
-order: 0
-toc: content
----
-
-# Promise 分析与实现
-
-## 一、参考资料
-
-- [深入分析 Promise 实现细节](https://juejin.cn/post/6945319439772434469)
-- [Promise A+规范](https://promisesaplus.com/#notes)
-- [promise v8 源码](https://chromium.googlesource.com/v8/v8/+/3.29.45/src/promise.js)
-
-## 二、术语
-
-- **promise**是一个有 then 方法的对象或者函数
-- **thenable**是一个有 then 方法的对象或者函数
-- **value**是 promise 状态成功时的值,也就是 resolve 的参数, 包括各种数据类型, 也包括 undefined/thenable 或者是 promise
-- **reason** 是 promise 状态失败时的值, 也就是 reject 的参数, 表示拒绝的原因
-- **exception**是一个使用 throw 抛出的异常值
-
-## 三、Promise States
-
-promise 应该有**三种状态**. 要注意他们之间的**流转关系**.
-
-### 1.pending
-
-1.1 初始的状态, 可改变.
-1.2 一个 promise 在 resolve 或者 reject 前都处于这个状态。
-1.3 可以通过 resolve -> fulfilled 状态;
-1.4 可以通过 reject -> rejected 状态;
-
-### 2.fulfilled
-
-2.1 最终态, 不可变.
-2.2 一个 promise 被 resolve 后会变成这个状态.
-2.3 必须拥有一个 value 值
-
-### 3.rejected
-
-3.1 最终态, 不可变.
-3.2 一个 promise 被 reject 后会变成这个状态
-3.3 必须拥有一个 reason
-
-Tips: 总结一下, 就是 promise 的状态流转是这样的
-
-pending -> resolve(value) -> fulfilled
-pending -> reject(reason) -> rejected
-
-## 四、Then 方法
-
-promise 应该提供一个 then 方法, 用来访问最终的结果, 无论是 value 还是 reason.
-
-```js
-promise.then(onFulfilled, onRejected);
-```
-
-### 1.参数要求
-
-1.1 onFulfilled 必须是**函数类型,** 如果不是函数, 应该被忽略.
-1.2 onRejected 必须是**函数类型**, 如果不是函数, 应该被忽略.
-
-### 2.onFulfilled 特性
-
-2.1 在 promise 变成 fulfilled 时,应该调用 onFulfilled, 参数是 value
-2.2 在 promise 变成 fulfilled 之前, 不应该被调用.
-2.3 只能被**调用一次** (所以在实现的时候需要一个变量来限制执行次数)
-
-### 3.onRejected 特性
-
-3.1 在 promise 变成 rejected 时,应该调用 onRejected, 参数是 reason
-3.2 在 promise 变成 rejected 之前, 不应该被调用.
-3.3 只能被**调用一次**(所以在实现的时候需要一个变量来限制执行次数)
-
-### 4.onFulfilled 和 onRejected 应该是**微任务**
-
-这里用**queueMicrotask**来实现微任务的调用.
-
-### 5.then 方法可以被**调用多次**
-
-5.1 promise 状态变成 fulfilled 后,所有的 onFulfilled 回调都需要按照**then 的顺序执行**, 也就是按照注册顺序执行(所以在实现的时候需要一个**数组来存放**多个 onFulfilled 的回调)
-5.2 promise 状态变成 rejected 后,所有的 onRejected 回调都需要按照**then 的顺序执行**, 也就是按照注册顺序执行(所以在实现的时候需要一个**数组来存放**多个 onRejected 的回调)
-
-### 6.返回值
-
-- then 应该返回一个 promise
-
-```js
-promise2 = promise1.then(onFulfilled, onRejected);
-```
-
-6.1 onFulfilled 或 onRejected 执行的结果为 x, 调用 **resolvePromise**
-6.2 如果 **onFulfilled 或者 onRejected 执行时抛出异常 e,** promise2 需要被 reject
-6.3 如果 onFulfilled 不是一个函数, promise2 以 promise1 的 value 触发 fulfilled
-6.4 如果 onRejected 不是一个函数, promise2 以 promise1 的 reason 触发 rejected
-
-### 7.resolvePromise
-
-```js
-resolvePromise(promise2, x, resolve, reject);
-```
-
-- 如果 **promise2 和 x 相等**,那么**reject TypeError,防止循环引用,造成死循环**
-- 如果 x **是一个 promise**
- - 如果 x 是 pending 态,那么 promise 必须要在 pending,直到 x 变成 fulfilled or rejected.
- - 如果 x 被 fulfilled, 用相同的 value 执行 promise
- - 如果 x 被 rejected, 用相同的 reason 拒绝 promise
-- 如果 x**是一个 object 或者 是一个 function**
- - 首先取出 then,let then = x.then.
- - 如果**x.then 这步出错**,那么 reject(e)
- - 如果**then 是一个函数**,then.call(x, resolvePromiseFn, rejectPromiseFn)
- - resolvePromiseFn 的 入参是 y, 执行 resolvePromise(promise2, y, resolve, reject);
- - rejectPromiseFn 的 入参是 r, resolvePromise(promise2, r, resolve, reject)
- - 如果 resolvePromise 和 rejectPromise 都调用了,那么第一个调用优先,后面的调用忽略。使用 called 标识
- - 如果调用 then 抛出异常 e
- - 如果 resolvePromise 或 rejectPromise 已经被调用,那么忽略
-- 如果 then 不是一个 function. resolve(x)
-
-## 五、实现 promise
-
-### 1.定义并设置三种状态,传入执行器 exec
-
-```js
-const PENDING = 'pending';
-const FULFILLED = 'fulfilled';
-const REJECTED = 'rejected';
-
-class MyPromise {
- constructor(exec) {
- this.status = PENDING;
- this.value = null;
- this.reason = null;
-
- // 执行器传入后立即执行
- exec();
- }
-}
-```
-
-### 2.为 exec 添加 reject 和 resolve 方法,执行回调
-
-```js
-const PENDING = 'pending';
-const FULFILLED = 'fulfilled';
-const REJECTED = 'rejected';
-
-class MyPromise {
- constructor(exec) {
- this.status = PENDING;
- this.value = null;
- this.reason = null;
-
- // resolve和reject被回调的时候,状态流转
- // 这里使用箭头函数,绑定resolve和reject的this始终指向MyPromise
- let resolve = (value) => {
- if (this.status === PENDING) {
- this.status = FULFILLED;
- this.value = value;
- }
- };
-
- let reject = (reason) => {
- if (this.status === PENDING) {
- this.status = REJECTED;
- this.reason = reason;
- }
- };
- // 若执行器报错,直接reject出去
- try {
- // 执行器传入后立即执行
- exec(resolve, reject);
- } catch (error) {
- reject(error);
- }
- }
-}
-```
-
-### 3.简单实现 then 方法
-
-```js
-then(onFulfilled, onRejected) {
- if (this.status === FULFILLED) {
- // 调用成功回调,并且把值返回
- onFulfilled(this.value);
- } else if (this.status === REJECTED) {
- // 调用失败回调,并且把原因返回
- onRejected(this.reason);
- }
-}
-```
-
-到这个地方一个简单的 promise 的骨架已经形成了,写一个测试检查一下
-
-```js
-const promise = new MyPromise((resolve, reject) => {
- resolve('success');
- reject('err');
- // 如果这里使用异步的方法,上述的then是感觉不到的
- // setTimeout(() => {
- // resolve('success')
- // })
-});
-
-promise.then(
- (value) => {
- console.log('resolve', value);
- },
- (reason) => {
- console.log('reject', reason);
- },
-);
-
-// 输出: resolve success
-```
-
-### 4.添加 then 方法的对异步的处理
-
-> 思考:为什么使用异步的方法就感受不到了呢?
-> 上面的写法, 是在 then 函数被调用的瞬间就会执行.
-> 那这时候如果 status 还没变成 fulfilled 或者 rejected 怎么办, 很有可能还是 pending 的
-> 那么我们首先要拿到所有的回调, 然后才能在某个时机去执行他.
-> 新建两个数组, 来分别存储成功和失败的回调, 调用 then 的时候, 如果还是 pending 就存入数组
-
-```js
-class MyPromise {
- constructor(exec) {
- this.status = PENDING;
- this.value = null;
- this.reason = null;
-
- this.resolveCallbacks = [];
- this.rejectCallbacks = [];
-
- // resolve和reject被回调的时候,状态流转
- // 这里使用箭头函数,绑定resolve和reject的this始终指向MyPromise
- let resolve = (value) => {
- if (this.status === PENDING) {
- this.status = FULFILLED;
- this.value = value;
- this.resolveCallbacks.forEach((fn) => fn());
- }
- };
-
- let reject = (reason) => {
- if (this.status === PENDING) {
- this.status = REJECTED;
- this.reason = reason;
- this.rejectCallbacks.forEach((fn) => fn());
- }
- };
-
- // 若执行器报错,直接reject出去
- try {
- // 执行器传入后立即执行
- exec(resolve, reject);
- } catch (error) {
- reject(error);
- }
- }
-
- then(onFulfilled, onRejected) {
- if (this.status === FULFILLED) {
- // 调用成功回调,并且把值返回
- onFulfilled(this.value);
- } else if (this.status === REJECTED) {
- // 调用失败回调,并且把原因返回
- onRejected(this.reason);
- } else if (this.status === PENDING) {
- this.resolveCallbacks.push(onFulfilled);
- this.rejectCallbacks.push(onRejected);
- }
- }
-}
-```
-
-### 5.完善 then 方法-(链式调用)
-
-1. onFulfilled 和 onRejected 如果不是函数,就返回原 value 或 reason
-2. then 方法返回一个 promise 对象
- 1. onFulfilled 或 onRejected 执行的结果是 x,调用 resolvePromise
- 2. 如果 onFulfilled 或者 onRejected 执行时抛出异常 e,promise2 需要被 reject,其 reason 为 e
-3. onFulfilled 和 onRejected 是微任务,需要使用 queueMicrotask 或者 setTimeout 包裹
-
-```js
-isFunction(params) {
- return typeof params === 'function';
-}
-
-then(onFulfilled, onRejected) {
- // 1.onFulfilled和onRejected如果不是函数,就返回原value或reason
- const fulFilledFn = this.isFunction(onFulfilled) ? onFulfilled : value => value;
- const rejectedFn = this.isFunction(onRejected) ? onRejected : reason => { throw reason };
-
- // 2.then方法返回一个promise对象
- const p2 = new MyPromise((resolve, reject) => {
- if (this.status === FULFILLED) {
- // fulFilledFn(this.value)
- // 3.3. onFulfilled和onRejected是微任务,需要使用queueMicrotask或者setTimeout包裹
- queueMicrotask(() => {
- // 2.2 如果onFulfilled或者onRejected执行时抛出异常e,promise2需要被reject,其reason为e
- try {
- // 2.1 onFulfilled或onRejected执行的结果是x,调用resolvePromise
- // 获取成功回调函数的执行结果
- const x = fulFilledFn(this.value);
- // 传入 resolvePromise 集中处理
- this.resolvePromise(p2, x, resolve, reject);
- } catch (e) {
- reject(e);
- }
- })
- } else if (this.status === REJECTED) {
- // rejectedFn(this.reason);
- queueMicrotask(() => {
- try {
- const x = rejectedFn(this.value);
- // 传入 resolvePromise 集中处理
- this.resolvePromise(x, resolve, reject);
- } catch (e) {
- reject(e);
- }
- })
- } else if (this.status === PENDING) {
- this.resolveCallbacks.push(() => {
- queueMicrotask(() => {
- try {
- const x = fulFilledFn(this.value);
- // 传入 resolvePromise 集中处理
- this.resolvePromise(x, resolve, reject);
- } catch (e) {
- reject(e);
- }
- })
- });
- this.rejectCallbacks.push(() => {
- queueMicrotask(() => {
- try {
- const x = rejectedFn(this.value);
- // 传入 resolvePromise 集中处理
- this.resolvePromise(x, resolve, reject);
- } catch (e) {
- reject(e);
- }
- })
- });
- }
- });
- return p2;
-}
-
-resolvePromise(x, resolve, reject) {
- // 判断x是不是 MyPromise 实例对象
- if (x instanceof MyPromise) {
- // 执行 x,调用 then 方法,目的是将其状态变为 fulfilled 或者 rejected
- // x.then(value => resolve(value), reason => reject(reason))
- // 简化之后
- x.then(resolve, reject);
- } else {
- // 普通值
- resolve(x);
- }
-}
-```
-
-发现上面 promise2 中很多重复的代码,进行抽离
-
-```js
-then(onFulfilled, onRejected) {
- // 1.onFulfilled和onRejected如果不是函数,就返回原value或reason
- const fulFilledFn = this.isFunction(onFulfilled) ? onFulfilled : value => value;
- const rejectedFn = this.isFunction(onRejected) ? onRejected : reason => { throw reason };
-
- // 2.then方法返回一个promise对象
- const p2 = new MyPromise((resolve, reject) => {
-
- const fulfilledMicrotask = () => {
- // 3.3. onFulfilled和onRejected是微任务,需要使用queueMicrotask或者setTimeout包裹
- queueMicrotask(() => {
- // 2.2 如果onFulfilled或者onRejected执行时抛出异常e,promise2需要被reject,其reason为e
- try {
- // 2.1 onFulfilled或onRejected执行的结果是x,调用resolvePromise
- // 获取成功回调函数的执行结果
- const x = fulFilledFn(this.value);
- // 传入 resolvePromise 集中处理
- this.resolvePromise(p2, x, resolve, reject);
- } catch (e) {
- reject(e);
- }
- })
- }
-
- const rejectedMicrotask = () => {
- queueMicrotask(() => {
- try {
- const x = rejectedFn(this.reason);
- // 传入 resolvePromise 集中处理
- this.resolvePromise(p2, x, resolve, reject);
- } catch (e) {
- reject(e);
- }
- })
- }
-
- if (this.status === FULFILLED) {
- // fulFilledFn(this.value)
- fulfilledMicrotask();
- } else if (this.status === REJECTED) {
- // rejectedFn(this.reason);
- rejectedMicrotask();
- } else if (this.status === PENDING) {
- this.resolveCallbacks.push(fulfilledMicrotask);
- this.rejectCallbacks.push(rejectedMicrotask);
- }
- });
-
- return p2;
-}
-```
-
-### 6.完善 resolvePromise 的处理
-
-其实整体的处理逻辑与原来相似,不过是对边界情况更加细化了
-
-```js
-resolvePromise(x, resolve, reject) {
- // 判断x是不是 MyPromise 实例对象
- if (x instanceof MyPromise) {
- // 执行 x,调用 then 方法,目的是将其状态变为 fulfilled 或者 rejected
- // x.then(value => resolve(value), reason => reject(reason))
- // 简化之后
- x.then(resolve, reject);
- } else {
- // 普通值
- resolve(x);
- }
-}
-```
-
----
-
-```js
-resolvePromise(promise2, x, resolve, reject);
-```
-
-- 防止循环引用,这里要给 resolvePromise 函数签名加一个新参数,判断 promise2 和 x 是否为同一个 promise
-- 如果 x**是一个 object 或者 是一个 function**
- - 如果 x 是 null,直接 resolve(x)出去
- - 然后取出 then,let then = x.then.
- - 如果**x.then 这步出错**,那么 reject(e)
- - 如果**then 是一个函数**,then.call(x, resolvePromiseFn, rejectPromiseFn)
- - resolvePromiseFn 的入参是 y, 如果被调用,执行**resolvePromise(promise2, y, resolve, reject);**
- - rejectPromiseFn 的入参是 r, 如果被调用,**执行 reject(r)**
- - 如果 resolvePromise 和 rejectPromise 都调用了,那么第一个调用优先,后面的调用忽略。使用**called**标识
- - 如果调用 then 抛出异常 e
- - 如果 resolvePromise 或 rejectPromise 已经被调用,那么忽略,if(called) return
- - 如果 then 不是一个 function. resolve(x)
-
-```js
-resolvePromise(promise2, x, resolve, reject) {
- if (promise2 === x) {
- throw new TypeError('循环引用')
- }
-
- if (typeof x === 'object' || typeof x === 'function') {
- if (x === null) {
- return resolve(x);
- }
- let then;
-
- try {
- then = x.then;
- } catch (e) {
- return reject(e);
- }
- if (typeof then === 'function') {
- let called = false;
- try {
- then.call(x, y => {
- if (called) return;
- called = true;
- this.resolvePromise(promise2, y, resolve, reject)
- }, r => {
- if (called) return;
- called = true;
- reject(r);
- })
- } catch (e) {
- if (called) return;
- reject(e);
- }
- } else {
- resolve(x);
- }
- } else {
- resolve(x);
- }
-}
-```
-
-### 7.添加 resolve、reject、catch 静态方法
-
-```js
-static resolve(params) {
- if (params instanceof MyPromise) {
- return params;
- }
- return new MyPromise((resolve, reject) => {
- resolve(params);
- })
- }
-
-static reject(reason) {
- return new MyPromise((resolve, reject) => {
- reject(reason);
- })
-}
-
-catch(onRejected){
- return this.then(null, onRejected)
-}
-```
-
-### 8.实现 race、all、allSettled 方法
-
-`const p = Promise.race([p1, p2, p3]);`
-该方法是将多个 Promise 实例,包装成一个新的 Promise 实例。
-只要 p1、p2、p3 之中有一个实例率先改变状态,p 的状态就跟着改变。
-那个率先改变的 Promise 实例的返回值,就传递给 p 的回调函数。
-
-```js
-static race(promises) {
- if (!Array.isArray(promises)) {
- throw new TypeError('arguments must be an array')
- }
- return new MyPromise((resolve, reject) => {
- if (promises.length === 0) {
- return resolve();
- }
- for (let i = 0; i < promises.length; i++) {
- MyPromise.resolve(promises[i]).then(resolve, reject);
- }
- })
-}
-
-static all(promises) {
- return new MyPromise((resolve, reject) => {
- if (!Array.isArray(promises)) {
- throw new TypeError('arguments must be an array')
- }
- if (promises.length === 0) {
- return resolve([]);
- }
- let result = [];
- let count = 0;
- for (let i = 0; i < promises.length; i++) {
- MyPromise.resolve(promises[i]).then(value => {
- result[i] = value;
- count++;
- if (count === promises.length) {
- resolve(result);
- }
- }, reject);
- }
- })
-}
-
-// 返回所有promise的状态和结果
-static allSettled(promises) {
- return new MyPromise((resolve, reject) => {
- if (!Array.isArray(promises)) {
- throw new TypeError('arguments must be an array')
- }
- let count = 0;
- let result = [];
-
- for (let i = 0; i < promises.length; i++) {
- MyPromise.resolve(promises[i]).then(value => {
- result[i] = {
- status: 'fulfilled',
- value
- }
- count++;
- if (count === promises.length) {
- resolve(result);
- }
- }, reason => {
- result[i] = {
- status: 'rejected',
- reason
- }
- count++;
- if (count === promises.length) {
- resolve(result);
- }
- })
- }
- })
-}
-```
-
-## 六、使用 promises-aplus-tests 进行测试
-
-```js
-// npm i promises-aplus-tests -g
-// 命令行执行 => promises-aplus-tests [待测试文件] 即可验证
-MyPromise.deferred = function () {
- var result = {};
- result.promise = new MyPromise(function (resolve, reject) {
- result.resolve = resolve;
- result.reject = reject;
- });
-
- return result;
-};
-module.exports = MyPromise;
-```
-
-## 七、完整代码
-
-```js
-const PENDING = 'pending';
-const FULFILLED = 'fulfilled';
-const REJECTED = 'rejected';
-
-class MyPromise {
- constructor(exec) {
- this.status = PENDING;
- this.value = null;
- this.reason = null;
-
- this.resolveCallbacks = [];
- this.rejectCallbacks = [];
-
- // resolve和reject被回调的时候,状态流转
- // 这里使用箭头函数,绑定resolve和reject的this始终指向MyPromise
- let resolve = (value) => {
- if (this.status === PENDING) {
- this.status = FULFILLED;
- this.value = value;
- this.resolveCallbacks.forEach((fn) => fn());
- }
- };
-
- let reject = (reason) => {
- if (this.status === PENDING) {
- this.status = REJECTED;
- this.reason = reason;
- this.rejectCallbacks.forEach((fn) => fn());
- }
- };
- // 若执行器报错,直接reject出去
- try {
- // 执行器传入后立即执行
- exec(resolve, reject);
- } catch (error) {
- reject(error);
- }
- }
-
- isFunction(params) {
- return typeof params === 'function';
- }
-
- then(onFulfilled, onRejected) {
- // 1.onFulfilled和onRejected如果不是函数,就返回原value或reason
- const fulFilledFn = this.isFunction(onFulfilled)
- ? onFulfilled
- : (value) => value;
- const rejectedFn = this.isFunction(onRejected)
- ? onRejected
- : (reason) => {
- throw reason;
- };
-
- // 2.then方法返回一个promise对象
- const p2 = new MyPromise((resolve, reject) => {
- const fulfilledMicrotask = () => {
- // 3.3. onFulfilled和onRejected是微任务,需要使用queueMicrotask或者setTimeout包裹
- queueMicrotask(() => {
- // 2.2 如果onFulfilled或者onRejected执行时抛出异常e,promise2需要被reject,其reason为e
- try {
- // 2.1 onFulfilled或onRejected执行的结果是x,调用resolvePromise
- // 获取成功回调函数的执行结果
- const x = fulFilledFn(this.value);
- // 传入 resolvePromise 集中处理
- this.resolvePromise(p2, x, resolve, reject);
- } catch (e) {
- reject(e);
- }
- });
- };
-
- const rejectedMicrotask = () => {
- queueMicrotask(() => {
- try {
- const x = rejectedFn(this.reason);
- // 传入 resolvePromise 集中处理
- this.resolvePromise(p2, x, resolve, reject);
- } catch (e) {
- reject(e);
- }
- });
- };
-
- if (this.status === FULFILLED) {
- // fulFilledFn(this.value)
- fulfilledMicrotask();
- } else if (this.status === REJECTED) {
- // rejectedFn(this.reason);
- rejectedMicrotask();
- } else if (this.status === PENDING) {
- this.resolveCallbacks.push(fulfilledMicrotask);
- this.rejectCallbacks.push(rejectedMicrotask);
- }
- });
-
- return p2;
- }
-
- resolvePromise(promise2, x, resolve, reject) {
- if (promise2 === x) {
- throw new TypeError('Chaining cycle ');
- }
-
- if (typeof x === 'object' || typeof x === 'function') {
- if (x === null) {
- return resolve(x);
- }
- let then;
-
- try {
- then = x.then;
- } catch (e) {
- return reject(e);
- }
- if (typeof then === 'function') {
- let called = false;
- try {
- then.call(
- x,
- (y) => {
- if (called) return;
- called = true;
- this.resolvePromise(promise2, y, resolve, reject);
- },
- (r) => {
- if (called) return;
- called = true;
- reject(r);
- },
- );
- } catch (e) {
- if (called) return;
- reject(e);
- }
- } else {
- resolve(x);
- }
- } else {
- resolve(x);
- }
- }
-
- static resolve(params) {
- if (params instanceof MyPromise) {
- return params;
- }
- return new MyPromise((resolve, reject) => {
- resolve(params);
- });
- }
-
- static reject(reason) {
- return new MyPromise((resolve, reject) => {
- reject(reason);
- });
- }
-
- catch(onRejected) {
- return this.then(null, onRejected);
- }
-
- static race(promises) {
- if (!Array.isArray(promises)) {
- throw new TypeError('arguments must be an array');
- }
- return new MyPromise((resolve, reject) => {
- if (promises.length === 0) {
- return resolve();
- }
- for (let i = 0; i < promises.length; i++) {
- MyPromise.resolve(promises[i]).then(resolve, reject);
- }
- });
- }
-
- static all(promises) {
- return new MyPromise((resolve, reject) => {
- if (!Array.isArray(promises)) {
- throw new TypeError('arguments must be an array');
- }
- if (promises.length === 0) {
- return resolve([]);
- }
- let result = [];
- let count = 0;
- for (let i = 0; i < promises.length; i++) {
- MyPromise.resolve(promises[i]).then((value) => {
- result[i] = value;
- count++;
- if (count === promises.length) {
- resolve(result);
- }
- }, reject);
- }
- });
- }
-
- static allSettled(promises) {
- return new MyPromise((resolve, reject) => {
- if (!Array.isArray(promises)) {
- throw new TypeError('arguments must be an array');
- }
- let count = 0;
- let result = [];
-
- for (let i = 0; i < promises.length; i++) {
- MyPromise.resolve(promises[i]).then(
- (value) => {
- result[i] = {
- status: 'fulfilled',
- value,
- };
- count++;
- if (count === promises.length) {
- resolve(result);
- }
- },
- (reason) => {
- result[i] = {
- status: 'rejected',
- reason,
- };
- count++;
- if (count === promises.length) {
- resolve(result);
- }
- },
- );
- }
- });
- }
-}
-```
diff --git a/docs/data-structure/01_stack.md b/docs/data-structure/01_stack.md
deleted file mode 100644
index 8dbebfa..0000000
--- a/docs/data-structure/01_stack.md
+++ /dev/null
@@ -1,191 +0,0 @@
----
-nav:
- title: 数据结构
- order: 1
-group:
- title: 常见数据结构
- order: 1
-order: 1
----
-
-# 栈(stack)
-
-## 一、介绍
-
-**数组**是一个**线性结构**,并且可以在数组的任意位置**插入**和**删除**元素。 但是有时候,我们为了实现某些功能,必须对这种任意性加以限制。 **栈和队列**就是比较常见的**受限的线性结构**。
-
-特点:
-
-- 栈是`后进先出`(last in first out)的,就是后进入的元素,先出栈。类似于自动餐托盘,最后放上的托盘,往往先拿出去使用
-- 栈的最上面的元素被称为`栈顶`,栈的最内的元素,被称为`栈底`
-- 向一个栈插入新元素又称作`进栈`、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素
-- 从一个栈删除元素又称作`出栈`或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素
-
-如图所示:
-
-
-
-
栈
-
-
-## 二、程序中的栈
-
-- **函数调用栈**:A(B(C(D()))): 即 A 函数中调用 B,B 调用 C,C 调用 D;在 A 执行的过程中会将 A 压入栈,随后 B 执行时 B 也被压入栈,函数 C 和 D 执行时也会被压入栈。所以当前栈的顺序为:A->B->C->D(栈顶);函数 D 执行完之后,会弹出栈被释放,弹出栈的顺序为 D->C->B->A;
-- **递归**: 为什么没有停止条件的递归会造成栈溢出?比如函数 A 为递归函数,不断地调用自己(因为函数还没有执行完,不会把函数弹出栈),不停地把相同的函数 A 压入栈,最后造成**栈溢出(Queue OverFloat)**。
-
-## 三、练习
-
-题目:有 6 个元素 6,5,4,3,2,1 按顺序进栈,问下列哪一个不是合法的出栈顺序?
-
-- A:5 4 3 6 1 2 (√)
-- B:4 5 3 2 1 6 (√)
-- C:3 4 6 5 2 1 (×)
-- D:2 3 4 1 5 6 (√)
-
-题目所说的按顺序进栈指的不是一次性全部进栈,而是有进有出,进栈顺序为 6 -> 5 -> 4 -> 3 -> 2 -> 1。
-
-解析:
-
-- A 答案:65 进栈,5 出栈,4 进栈出栈,3 进栈出栈,6 出栈,21 进栈,1 出栈,2 出栈(整体入栈顺序符合 654321)。
-- B 答案:654 进栈,4 出栈,5 出栈,3 进栈出栈,2 进栈出栈,1 进栈出栈,6 出栈(整体的入栈顺序符合 654321)。
-- C 答案:6543 进栈,3 出栈,4 出栈,之后应该 5 出栈而不是 6,所以错误。
-- D 答案:65432 进栈,2 出栈,3 出栈,4 出栈,1 进栈出栈,5 出栈,6 出栈。符合入栈顺序。
-
-## 四、实现栈结构
-
-### 栈常见的操作
-
-- `push()` 添加一个新元素到栈顶位置。
-- `pop()` 移除栈顶的元素,同时返回被移除的元素。
-- `peek()` 返回栈顶的元素,不对栈做任何修改(该方法不会移除栈顶的元素,仅仅返回它)。
-- `isEmpty()` 如果栈里没有任何元素就返回 `true`,否则返回 `false`。
-- `size()` 返回栈里的元素个数。这个方法和数组的 `length` 属性类似。
-- `toString()` 将栈结构的内容以字符串的形式返回。
-
-### 代码实现
-
-```js
-function Stack() {
- this.items = [];
-
- // 1.入栈
- Stack.prototype.push = function (element) {
- return this.items.push(element);
- };
-
- // 2.出栈
- Stack.prototype.pop = function () {
- return this.items.pop();
- };
-
- // 3.查看栈顶元素
- Stack.prototype.peek = function () {
- return this.items[this.items.length - 1];
- };
-
- // 4.判断栈是否为空
- Stack.prototype.isEmpty = function () {
- return this.items.length === 0;
- };
-
- // 5.返回栈的长度
- Stack.prototype.size = function () {
- return this.items.length;
- };
-
- // 6.toString方法
- Stack.prototype.toString = function () {
- // 返回格式如: 10 20 30 等
- var resString = '';
- for (var i = 0; i < this.items.length; i++) {
- resString += this.items[i] + ' ';
- }
- return resString;
- };
-}
-```
-
-### 测试代码
-
-```js
-var stack = new Stack();
-stack.push('10');
-stack.push('20');
-stack.push('30');
-console.log(stack.items); // [ '10', '20', '30' ]
-
-stack.pop();
-console.log(stack.items); // [ '10', '20' ]
-
-console.log(stack.peek()); // 20
-console.log(stack.isEmpty()); // false
-console.log(stack.size()); // 2
-console.log(stack.toString()); // 10 20
-```
-
-## 五、应用
-
-### 1.利用栈结构的特点封装实现十进制转换为二进制的方法
-
-```js
-// 十进制转二进制
-function dec2bin(decNumber) {
- var stack = new Stack();
- while (decNumber > 0) {
- stack.push(decNumber % 2);
- decNumber = Math.floor(decNumber / 2);
- }
-
- var binaryString = '';
- while (!stack.isEmpty()) {
- binaryString += stack.pop();
- }
- return binaryString;
-}
-console.log(dec2bin(100)); // 110010
-```
-
-### 2.[有效的括号](/js-logs/stack#20有效的括号)
-
-- 解题思路:
-- 使用栈结构先进后出的特性
-- 先声明一个栈 stack 变量
-- 遍历整个字符串
-- 发现 ( 、 {、 [ 就入栈
-- 发现 )、}、] 就和栈顶做比较,若栈顶存在对应的括号,将与之对应的括号出栈
-- 遍历结束后,若栈空,则说明所有括号都能找到相匹配的
-
-```js
-/**
- * @param {string} s
- * @return {boolean}
- */
-var isValid = function (s) {
- if (s.length % 2 === 1) {
- return false;
- }
- var stack = [];
- var length = s.length;
- var map = new Map();
- map.set('(', ')');
- map.set('{', '}');
- map.set('[', ']');
-
- for (var i = 0; i < length; i++) {
- var c = s[i];
- if (map.has(c)) {
- stack.push(c);
- } else {
- var stackTop = stack[stack.length - 1];
- if (map.get(stackTop) === c) {
- // 栈顶元素出栈
- stack.pop();
- } else {
- // 栈顶元素与当前元素不匹配 “})” "])" return
- return false;
- }
- }
- }
- return stack.length === 0 ? true : false;
-};
-```
diff --git a/docs/data-structure/02_queue.md b/docs/data-structure/02_queue.md
deleted file mode 100644
index 373059e..0000000
--- a/docs/data-structure/02_queue.md
+++ /dev/null
@@ -1,249 +0,0 @@
----
-nav:
- title: 数据结构
- order: 1
-group:
- title: 常见数据结构
- order: 1
-order: 2
----
-
-# 队列(queue)
-
-## 一、介绍
-
-队列是一种特殊的线性表,生活中类似队列结构的场景:
-
-- 排队,比如在电影院,商场,甚至是厕所排队。
-- 优先排队的人,优先处理。 (买票、结账、WC)。
-
-如图所示:
-
-
-
-
生活中的队列
-
-
-队列的限制
-
-- `先进先出` (FIFO:First In First Out)
-- 只允许在表的前端(front)进行删除操作
-- 只允许在表的后端(rear)进行插入操作
-
-如图所示:
-
-
-
-
队列
-
-
-## 二、程序中的队列
-
-- 打印队列:计算机打印多个文件的时候,需要排队打印
-- 线程队列:当开启多线程时,当新开启的线程所需的资源不足时就先放入线程队列,等待 CPU 处理
-
-## 三、队列的实现
-
-队列有两种实现方式,这里就基于数组方式实现了
-
-- 基于数组实现
-- 基于链表实现
-
-### 队列常见的操作
-
-- `enqueue(element)` 向队列尾部添加一个(或多个)新的项
-- `dequeue()` 移除队列的第一(即排在队列最前面的)项,并返回被移除的元素
-- `front()` 返回队列中的第一个元素——最先被添加,也将是最先被移除的元素。队列不做任何变动(不移除元素,只返回元素信息与 Map 类的 peek 方法非常类似)
-- `isEmpty()` 如果队列中不包含任何元素,返回 true,否则返回 false
-- `size()` 返回队列包含的元素个数,与数组的 length 属性类似
-- `toString()` 将队列中的内容,转成字符串形式
-
-### 代码实现
-
-#### 1.普通队列
-
-```js
-function Queue() {
- this.items = [];
-
- // 1.将元素加入队列
- Queue.prototype.enqueue = function (element) {
- return this.items.push(element);
- };
-
- // 2.从队列中删除元素
- Queue.prototype.dequeue = function () {
- return this.items.shift();
- };
-
- // 3.查看前端的元素
- Queue.prototype.front = function () {
- return this.items[0];
- };
-
- // 4.查看队列是否为空
- Queue.prototype.isEmpty = function () {
- return this.items.length === 0;
- };
-
- // 5.查看队列元素个数
- Queue.prototype.size = function () {
- return this.items.length;
- };
-
- // 6.toString方法
- Queue.prototype.toString = function () {
- // 返回格式如: 10 20 30 等
- var resString = '';
- for (var i = 0; i < this.items.length; i++) {
- resString += this.items[i] + ' ';
- }
- return resString;
- };
-}
-```
-
-#### 测试代码
-
-```js
-var q = new Queue();
-q.enqueue('10');
-q.enqueue('20');
-q.enqueue('30');
-console.log(q.items); // [ '10', '20', '30' ]
-
-q.dequeue();
-console.log(q.items); // [ '20', '30' ]
-
-console.log(q.front()); // 20
-console.log(q.isEmpty()); // false
-console.log(q.size()); // 2
-console.log(q.toString()); // 20 30
-```
-
-#### 2.优先级队列
-
-> 优先级队列,在队列的基础上,增加优先级
->
-> 其实就是在元素`入队时`,`根据传入的优先级,找到合适的位置`,并插入
-
-```js
-function PriorityQueue() {
- // 内部类 也可以用对象存放
- function QueueElement(element, priority) {
- this.element = element;
- this.priority = priority;
- }
-
- this.item = [];
-
- // 1.将元素加入队列
- PriorityQueue.prototype.enqueue = function (element, priority) {
- var queueElement = new QueueElement(element, priority);
- // 如果数组为空,将直接push
- if (this.item.length === 0) {
- this.item.push(queueElement);
- } else {
- var added = false;
- for (var i = 0; i < this.item.length; i++) {
- // 若发现优先级比较大
- if (queueElement.priority < this.item[i].priority) {
- // 插入进去
- this.item.splice(i, 0, queueElement);
- added = true;
- break;
- }
- }
-
- // 若没有执行过插入,说明优先级比较小,直接push
- if (!added) {
- this.item.push(queueElement);
- }
- }
- };
-
- // 2.从队列中删除元素
- PriorityQueue.prototype.dequeue = function () {
- return this.items.shift();
- };
-
- // 3.查看前端的元素
- PriorityQueue.prototype.front = function () {
- return this.items[0];
- };
-
- // 4.查看队列是否为空
- PriorityQueue.prototype.isEmpty = function () {
- return this.items.length === 0;
- };
-
- // 5.查看队列元素个数
- PriorityQueue.prototype.size = function () {
- return this.items.length;
- };
-
- // 6.toString方法
- PriorityQueue.prototype.toString = function () {
- // 返回格式如: 10 20 30 等
- var resString = '';
- for (var i = 0; i < this.items.length; i++) {
- resString += this.items[i] + ' ';
- }
- return resString;
- };
-}
-```
-
-## 四、应用
-
-### 1.击鼓传花
-
-```js
-const Queue = require('./queue');
-
-/**
- * 击鼓传花游戏规则:
- * 几个朋友一起玩一个游戏,围成一圈,开始数数,数到某个数字的人自动淘汰
- * 最后剩下的这个人会获得胜利,请问:最后胜利者原来在哪一个位置上
- */
-let names = ['小明', '小红', '小亮'];
-function passGame(nameList, stopNum = 1) {
- let q = new Queue();
- for (const item of nameList) {
- q.enqueue(item);
- }
-
- while (q.size() > 1) {
- for (let i = 0; i < stopNum - 1; i++) {
- q.enqueue(q.dequeue());
- }
- q.dequeue();
- }
- console.log('最后剩下的人是:', q.front()); // 最后剩下的人是: 小红
- return nameList.indexOf(q.front()); //返回对应的位置
-}
-
-console.log(passGame(names, 3)); // 1
-```
-
-### 2.[最近的请求次数](https://leetcode-cn.com/problems/number-of-recent-calls/)
-
-```js
-var RecentCounter = function () {
- this.queue = [];
-};
-
-/**
- * @param {number} t
- * @return {number}
- */
-RecentCounter.prototype.ping = function (t) {
- this.queue.push(t);
- // 将3000ms之前的数据,踢出队列
- while (this.queue[0] < t - 3000) {
- this.queue.shift();
- }
- // 队列中剩下的元素个数就是最近的请求次数
- return this.queue.length;
-};
-```
diff --git a/docs/data-structure/03_linked_list.md b/docs/data-structure/03_linked_list.md
deleted file mode 100644
index a445e2e..0000000
--- a/docs/data-structure/03_linked_list.md
+++ /dev/null
@@ -1,599 +0,0 @@
----
-nav:
- title: 数据结构
- order: 1
-group:
- title: 常见数据结构
- order: 1
-order: 3
----
-
-# 链表(LinkedList)
-
-## 一、介绍
-
-链表和数组一样,可以用于**存储一系列的元素**,但是链表和数组的实现**机制完全不同**。链表又可以分作**单向链表**和**双向链表**。
-
-链表的每个元素由一个存储**元素本身的节点**和一个**指向下一个元素的引用**(有的语言称为指针或连接)组成。类似于火车头,一节车厢载着乘客(数据),通过节点连接另一节车厢。如下图所示
-
-- 链表的火车结构
-
-
-
-
火车结构
-
-
-- 链表的数据结构
-
-
-
-
链表的数据结构
-
-
- head 属性指向链表的第一个节点。
-
- 链表中的最后一个节点指向 `null`。
-
- 当链表中一个节点也没有的时候,head 直接指向 `null`。
-
-- 给火车加上数据结构后
-
-
-
-
给火车加上数据结构后
-
-
-### 数组的优缺点
-
-- 优点:
- - 一般存储多个元素时,数组(或列表)可能是最常用的数据结构
-- 缺点:
- - 数组的创建需要申请一段连续的内存空间(一整块内存),并且大小是固定的,**当前数组不能满足容量需求时,需要扩容**。 (一般情况下是申请一个更大的数组,比如 2 倍,然后将原数组中的元素复制过去)
- - 在数组**开头**或中间位置**插入数据的成本很高**,需要进行**大量元素的位移**
-
-
-
-### 链表的优缺点
-
-- 优点:
- - 链表中的元素在内存中**不必是连续的空间**,可以充分利用计算机的内存,实现灵活的**内存动态管理**。
- - 链表不必在创建时就**确定大小**,并且大小可以**无限地延伸**下去。
- - 链表在**插入和删除**数据时,**时间复杂度**可以达到 O(1),相对数组效率高很多。
-- 缺点:
- - 链表访问任何一个位置的元素时,都需要**从头开始访问**(无法跳过第一个元素访问任何一个元素)
- - 无法通过下标值直接访问元素,需要从头开始一个个访问,直到找到对应的元素
- - 虽然可以轻松地到达**下一个节点**,但是回到**前一个节点**是很难的
- - 总的来说就是**链表查找效率低**
-
-## 二、链表的实现
-
-### 链表中的常见操作
-
-- `append(element)` 向链表尾部添加一个新的项。
-- `insert(position, element)` 向链表的特定位置插入一个新的项。
-- `get(position)` 获取对应位置的元素。
-- `indexOf(element)` 返回元素在链表中的索引。如果链表中没有该元素就返回-1。
-- `update(position, element)` 修改某个位置的元素。
-- `removeAt(position)` 从链表的特定位置移除一项。
-- `remove(element)` 从链表中移除一项。
-- `isEmpty()` 如果链表中不包含任何元素,返回 true,如果链表长度大于 0 则返回 false。
-- `size()` 返回链表包含的元素个数,与数组的 length 属性类似。
-- `toString()` 由于链表项使用了 Node 类,就需要重写继承自 JavaScript 对象默认的 toString 方法,让其只输出元素的值。
-
-### 1.逐步封装单向链表
-
-#### 1.1 先创建单向链表类 LinkedList,并添加基本属性,再实现单向链表的常用方法:
-
-```js
-function LinkedList() {
- function Node(data) {
- this.data = data;
- this.next = null;
- }
-
- this.head = null;
- this.length = 0;
-}
-```
-
-#### 1.2 实现 append() 方法
-
-```js
-// 1.向链表尾部追加数据
-LinkedList.prototype.append = function (data) {
- var newNode = new Node(data);
- // 若链表为空
- if (this.length === 0) {
- // 将head指向第一个节点
- this.head = newNode;
- } else {
- var current = this.head;
- // 当current.next为null 的时候会退出循环
- while (current.next) {
- // 指针后移
- current = current.next;
- }
- // 当指到最后一个node时,给next append newNode
- current.next = newNode;
- }
- // 注意:append后长度要+1
- this.length += 1;
-};
-```
-
-##### append 过程详解
-
-1. 首先让 `currentNode` 指向第一个节点。
-
-
-
-
-
-2. 通过 `while` 循环使 `currentNode` 指向最后一个节点,最后通过 `currentNode.next = newNode`,让最后一个节点指向新节点 `newNode`。
-
-
-
-
-
-#### 1.3 实现 toString() 方法
-
-```js
-// 2.方便测试,先完成toString方法
-LinkedList.prototype.toString = function () {
- var current = this.head;
- var resultString = '';
- while (current) {
- resultString += current.data + ' ';
- current = current.next;
- }
- return resultString;
-};
-```
-
-##### 测试代码
-
-```js
-var linked = new LinkedList();
-linked.append('10');
-linked.append('20');
-linked.append('30');
-console.log(linked.toString()); // 10 20 30
-```
-
-#### 1.4 实现 insert()方法
-
-```js
-// 3.插入
-LinkedList.prototype.insert = function (position, data) {
- // 1.对position进行边界情况判断
- if (position < 0 || position > this.length) return false;
-
- var newNode = new Node(data);
- // 2.当在第一个位置插入的时候
- if (position === 0) {
- // 将要新节点的next与原链表相连
- newNode.next = this.head;
- // 改变head的指向到新的节点,有点移花接木的意思了哈~
- this.head = newNode;
- } else {
- // 3.这里要找到合适的插入位置
- var index = 0;
- var current = this.head;
- var previous = null;
-
- // 3.1 遍历的找到要插入的节点位置
- while (index++ < position) {
- previous = current; // 保存前一个节点
- current = current.next; // 保持当前节点
- }
-
- // 3.2 同样是移花接木
- newNode.next = current;
- previous.next = newNode;
- }
-
- this.length += 1;
- return true;
-};
-```
-
-##### 测试代码
-
-```js
-linked.insert(0, '00');
-linked.insert(2, '22');
-linked.insert(5, '55');
-console.log(linked.toString()); // 00 10 22 20 30 55
-```
-
-#### 1.5 实现 get()方法
-
-> 根据位置获取 对应位置的数据
-
-```js
-// 4.获取对应位置的数据
-LinkedList.prototype.get = function (position) {
- if (position < 0 || position >= this.length) return false;
- var current = this.head;
- var index = 0;
- while (index++ < position) {
- current = current.next;
- }
- return current.data;
-};
-```
-
-##### 测试代码
-
-```js
-console.log(linked.get(0)); // 00
-console.log(linked.get(2)); // 22
-console.log(linked.get(5)); // 55
-```
-
-#### 1.6 实现 indexOf()方法
-
-```js
-// 5.返回数据当前位置,若找不到传入数据的位置,返回-1
-LinkedList.prototype.indexOf = function (data) {
- var current = this.head;
- var index = 0;
- while (current) {
- if (current.data === data) return index;
- current = current.next;
- index += 1;
- }
- return -1;
-};
-```
-
-##### 测试代码
-
-```js
-console.log(linked.indexOf('00')); // 0
-console.log(linked.indexOf('22')); // 2
-console.log(linked.indexOf('123123')); // -1
-```
-
-#### 1.7 实现 update()方法
-
-```js
-// 6.更新对应位置对数据
-LinkedList.prototype.update = function (position, newData) {
- if (position < 0 || position >= this.length) return false;
- var current = this.head;
- var index = 0;
- while (index++ < position) {
- current = current.next;
- }
- current.data = newData;
- return true;
-};
-```
-
-##### 测试代码
-
-```js
-linked.update(0, '000');
-console.log(linked.get(0)); // 000
-```
-
-#### 1.8 实现 removeAt()方法
-
-```js
-// 7.根据位置删除数据
-LinkedList.prototype.removeAt = function (position) {
- if (position < 0 || position >= this.length) return null;
- var current = this.head;
-
- if (position === 0) {
- this.head = this.head.next;
- } else {
- var previous = null;
- var index = 0;
- while (index++ < position) {
- previous = current;
- current = current.next;
- }
- // 将前一个节点的next执行下一个节点
- previous.next = current.next;
- }
- this.length -= 1;
- return current.data; // 返回删除的数据
-};
-```
-
-##### 测试代码
-
-```js
-console.log(linked.removeAt(0)); // 000
-console.log(linked.removeAt(4)); // 55
-console.log(linked.toString()); // 10 22 20 30
-```
-
-#### 1.9 实现 remove()方法
-
-```js
-// 8.删除数据
-LinkedList.prototype.remove = function (data) {
- var position = this.indexOf(data);
- return this.removeAt(position);
-};
-```
-
-##### 测试代码
-
-```js
-console.log(linked.remove('10')); // 10
-console.log(linked.toString()); // 22 20 30
-```
-
-### 2.封装完的单向链表
-
-> 包括测试代码和 isEmpty()、size()的实现
-
-```js
-function LinkedList() {
- function Node(data) {
- this.data = data;
- this.next = null;
- }
-
- this.head = null;
- this.length = 0;
-
- // 1.向链表尾部追加数据
- LinkedList.prototype.append = function (data) {
- var newNode = new Node(data);
- // 若链表为空
- if (this.length === 0) {
- // 将head指向第一个节点
- this.head = newNode;
- } else {
- var current = this.head;
- // 当current.next为null 的时候会退出循环
- while (current.next) {
- // 指针后移
- current = current.next;
- }
- // 当指到最后一个node时,给next append newNode
- current.next = newNode;
- }
- // 注意:append后长度要+1
- this.length += 1;
- };
-
- // 3.插入
- LinkedList.prototype.insert = function (position, data) {
- // 1.对position进行边界情况判断
- if (position < 0 || position > this.length) return false;
-
- var newNode = new Node(data);
- // 2.当在第一个位置插入的时候
- if (position === 0) {
- // 将要新节点的next与原链表相连
- newNode.next = this.head;
- // 改变head的指向到新的节点,有点移花接木的意思了哈~
- this.head = newNode;
- } else {
- // 3.这里要找到合适的插入位置
- var index = 0;
- var current = this.head;
- var previous = null;
-
- // 3.1 遍历的找到要插入的节点位置
- while (index++ < position) {
- previous = current; // 保存前一个节点
- current = current.next; // 保持当前节点
- }
-
- // 3.2 同样是移花接木
- newNode.next = current;
- previous.next = newNode;
- }
-
- this.length += 1;
- return true;
- };
-
- // 4.获取对应位置的数据
- LinkedList.prototype.get = function (position) {
- if (position < 0 || position >= this.length) return false;
- var current = this.head;
- var index = 0;
- while (index++ < position) {
- current = current.next;
- }
- return current.data;
- };
-
- // 5.返回数据当前位置
- LinkedList.prototype.indexOf = function (data) {
- var current = this.head;
- var index = 0;
- while (current) {
- if (current.data === data) return index;
- current = current.next;
- index += 1;
- }
- return -1;
- };
-
- // 6.更新对应位置对数据
- LinkedList.prototype.update = function (position, newData) {
- if (position < 0 || position >= this.length) return false;
- var current = this.head;
- var index = 0;
- while (index++ < position) {
- current = current.next;
- }
- current.data = newData;
- return true;
- };
-
- // 7.根据位置删除数据
- LinkedList.prototype.removeAt = function (position) {
- if (position < 0 || position >= this.length) return null;
- var current = this.head;
-
- if (position === 0) {
- this.head = this.head.next;
- } else {
- var previous = null;
- var index = 0;
- while (index++ < position) {
- previous = current;
- current = current.next;
- }
- // 将前一个节点的next执行下一个节点
- previous.next = current.next;
- }
- this.length -= 1;
- return current.data; // 返回删除的数据
- };
-
- // 8.删除数据
- LinkedList.prototype.remove = function (data) {
- var position = this.indexOf(data);
- return this.removeAt(position);
- };
-
- LinkedList.prototype.isEmpty = function () {
- return this.length === 0;
- };
-
- LinkedList.prototype.size = function () {
- return this.length;
- };
-
- // 2.方便测试,先完成toString方法
- LinkedList.prototype.toString = function () {
- var current = this.head;
- var resultString = '';
- while (current) {
- resultString += current.data + ' ';
- current = current.next;
- }
- return resultString;
- };
-}
-
-// 测试代码
-var linked = new LinkedList();
-linked.append('10');
-linked.append('20');
-linked.append('30');
-console.log(linked.toString()); // 10 20 30
-
-linked.insert(0, '00');
-linked.insert(2, '22');
-linked.insert(5, '55');
-console.log(linked.toString()); // 00 10 22 20 30 55
-console.log(linked.get(0)); // 00
-console.log(linked.get(2)); // 22
-console.log(linked.get(5)); // 55
-
-console.log(linked.indexOf('00')); // 0
-console.log(linked.indexOf('22')); // 2
-console.log(linked.indexOf('123123')); // -1
-
-linked.update(0, '000');
-console.log(linked.get(0)); // 000
-
-console.log(linked.removeAt(0)); // 000
-console.log(linked.removeAt(4)); // 55
-console.log(linked.toString()); // 10 22 20 30
-
-console.log(linked.remove('10')); // 10
-console.log(linked.toString()); // 22 20 30
-```
-
-## 三、应用
-
-### 1.[删除链表中的节点](https://leetcode-cn.com/problems/delete-node-in-a-linked-list/)
-
-- 思路
-- 若无任何限制,是一个普通链表,可以用正常方法删除(将上一个节点的 next,指向下一个节点即可)
-- 因为题目限制无法访问链表的头节点
-- 所以需要绕一个弯,将当前节点,指向下一个节点,这个时候当前节点跟下一个节点是同一个节点
-- 然后将下一个节点删除即可,也就是将下个节点的指向下下个节点
-
-```js
-var deleteNode = function (node) {
- node.val = node.next.val;
- node.next = node.next.next;
-};
-```
-
-### 2.[删除排序链表中的重复元素](/js-logs/array#83删除排序链表中的重复元素)
-
-- 思路
-- 因为题目给出的链表是排好序的
-- 所以只需要,遍历链表,判断当前节点与下个节点的值是否相等
-- 遇到相等的情况继续删除,当 遇到 不相等的情况再进行赋值往下走
-
-注意点:
-因为第一次判断的时候用到了 p.next.val,若 p.next 为 null,则会报错,所以 while 中需要考虑 p.next 不为空的情况
-
-```js
-var deleteDuplicates = function (head) {
- var p = head;
- while (p && p.next) {
- if (p.val === p.next.val) {
- p.next = p.next.next;
- } else {
- p = p.next;
- }
- }
- return head;
-};
-```
-
-### 3.[反转链表](/js-logs/linked-list#反转链表)
-
-- 思路
-- 链表太长不容易看出如何反转,所以可以看作两个最短链表反转
-- 短链表反转,只需要将 当前节点的 next 指回 给 上一个节点
-- 所以使用 p1 为头节点,p2 为后节点,双指针一直指回,然后让双指针共同前进即可
-- 因为 p1 最后会指向一个 null,p2 会指向 5
-- 所以最后返回 p2 链表
-
-```js
-var reverseList = function (head) {
- var p1 = head;
- var p2 = null;
- while (p1) {
- var temp = p1.next;
- p1.next = p2;
- p2 = p1;
- p1 = temp;
- }
-
- return p2;
-};
-```
-
-### 4. [环形链表](/js-logs/linked-list#141环形链表)
-
-- 思路
-- 声明快慢两个指针进行赛跑
-- 如果有环,快慢指针肯定会重逢
-- 如果没有环,则不会重逢
-
-```js
-var hasCycle = function (head) {
- var p1 = head;
- var p2 = head;
-
- while (p1 && p2 && p2.next) {
- p1 = p1.next;
- p2 = p2.next.next;
-
- if (p1 === p2) {
- return true;
- }
- }
-
- return false;
-};
-```
diff --git a/docs/data-structure/04_doubly_linked_list.md b/docs/data-structure/04_doubly_linked_list.md
deleted file mode 100644
index a3afdf2..0000000
--- a/docs/data-structure/04_doubly_linked_list.md
+++ /dev/null
@@ -1,883 +0,0 @@
----
-nav:
- title: 数据结构
- order: 1
-group:
- title: 常见数据结构
- order: 1
-order: 4
----
-
-# 双向链表(DoublyLinkedList)
-
-## 一、双向链表的介绍
-
-既可以从头遍历到尾,也可以从**尾遍历到头**。链表相连的过程是**双向**的。实现原理是一个节点**既有向前连接的引用**,也有一个**向后连接的引用**
-
-### 单向链表的特性
-
-- 只能从头遍历到尾或者从尾遍历到头(一般从头到尾)
-- 链表相连的过程是单向的,实现原理是上一个节点中有指向下一个节点的引用
-- 单向链表有一个比较明显的缺点:可以轻松到达下一个节点,但回到前一个节点很难,在实际开发中, 经常会遇到需要回到上一个节点的情况。
-- 由于双向链表的节点指向是双向的,所以双向链表可以有效的解决单向链表存在的问题
-
-### 双向链表结构
-
-
-
-
双向链表结构
-
-
-- 双向链表不仅有**head**指针指向第一个节点,而且有**tail**指针指向最后一个节点
-- 每一个节点由三部分组成:**item**储存数据、**prev**指向前一个节点、**next**指向后一个节点
-- 双向链表的第一个节点的 prev 指向**null**
-- 双向链表的最后一个节点的 next 指向**null**
-
-### 双向链表的缺点
-
-- 每次在**插入或删除**某个节点时,都需要处理四个引用,而不是两个,实现起来会困难些
-- 相对于单向链表,所占**内存空间更大**一些
-
-## 二、双向链表的封装
-
-### 常见操作
-
-- `append(element)` 向链表尾部追加一个新元素
-- `insert(position, element)` 向链表的指定位置插入一个新元素
-- `getElement(position)` 获取指定位置的元素
-- `indexOf(element)` 返回元素在链表中的索引。如果链表中没有该元素就返回 -1
-- `update(position, element)` 修改指定位置上的元素
-- `removeAt(position)` 从链表中的删除指定位置的元素
-- `remove(element)` 从链表删除指定的元素
-- `isEmpty()` 如果链表中不包含任何元素,返回 `true`,如果链表长度大于 0 则返回 `false`
-- `size()` 返回链表包含的元素个数,与数组的 `length` 属性类似
-- `toString()` 由于链表项使用了 Node 类,就需要重写继承自 JavaScript 对象默认的 `toString` 方法,让其只输出元素的值
-- `forwardString()` 返回正向遍历节点字符串形式
-- `backwardString()` 返回反向遍历的节点的字符串形式
-
-### 1.逐步封装双向链表
-
-> 双向链表的插入(insert)和删除(removeAt)方法需要考虑的情况较多,是一个难点
-
-#### 1.1 先创建双向链表类 DoublyLinkedList
-
-创建内部类并添加基本属性,再实现单向链表的常用方法
-
-与单向链表相比
-
-- 双向链表内部类中新添加`this.prev`属性,指向该节点的上一个节点
-- 双向链表新添加 `this.tail` 属性,该属性指向末尾的节点
-
-```js
-function DoublyLinkedList() {
- // 内部类
- function Node(data) {
- this.data = data;
- this.prev = null;
- this.next = null;
- }
-
- // 属性
- this.head = null;
- this.tail = null;
- this.length = 0;
-}
-```
-
-#### 1.2 实现 append()方法
-
-```js
-// 1.向链表尾部追加数据
-DoublyLinkedList.prototype.append = function (data) {
- var newNode = new Node(data);
- // 若是第一次添加,直接将head和tail指向新节点即可
- if (this.length === 0) {
- this.head = newNode;
- this.tail = newNode;
- } else {
- // 让tail与新节点的prev建立连接
- newNode.prev = this.tail;
- // tail的next指向新节点
- this.tail.next = newNode;
- // 改变tail指针
- this.tail = newNode;
- }
-
- this.length += 1;
-};
-```
-
-##### append()方法图解
-
-情况 1:第一次添加 ==> 只需要让 head 和 tail 都指向新节点即可
-
-
-
-
-
-情况 2:不是第一次添加,需要改变 tail 指针的引用关系
-
-- 通过`newNode.prev = this.tail`:建立指向 1
-- 通过`this.tail.next = newNode`:建立指向 2
-
-如图:
-
-
-
-
-
-- 通过`this.tail = newNode`:建立指向 3
-- 要注意**指针改变的顺序**,最后修改 tail 指向,这样未修改前 tail 始终指向原链表的最后一个节点。
-
-如图:
-
-
-
-
-
-#### 1.3 实现 forwardString()、backwardString()、toString()方法
-
-便于我们测试代码,先实现以上三个方法,这里就放在同一个代码块下了~其实 toString()方法就是 forwardString()方法
-
-```js
-// 返回正向遍历节点字符串形式
-DoublyLinkedList.prototype.forwardString = function () {
- var current = this.head;
- var resultString = '';
- while (current) {
- resultString += current.data + ' ';
- current = current.next;
- }
- return resultString;
-};
-
-// 返回反向遍历的节点的字符串形式
-DoublyLinkedList.prototype.backwardString = function () {
- var current = this.tail;
- var resultString = '';
- while (current) {
- resultString += current.data + ' ';
- current = current.prev;
- }
- return resultString;
-};
-
-DoublyLinkedList.prototype.toString = function () {
- return this.forwardString();
-};
-```
-
-##### 测试代码
-
-```js
-// 测试代码
-var dll = new DoublyLinkedList();
-
-dll.append('10');
-dll.append('20');
-dll.append('30');
-console.log(dll.toString()); // 10 20 30
-console.log(dll.forwardString()); // 10 20 30
-console.log(dll.backwardString()); // 30 20 10
-```
-
-#### 1.4 实现 insert()方法
-
-```js
-// 2.向链表中插入数据
-DoublyLinkedList.prototype.insert = function (position, data) {
- // 1.边界判断
- if (position < 0 || position > this.length) return false;
- var newNode = new Node(data);
-
- // 2.第一次添加
- if (this.length === 0) {
- this.head = newNode;
- this.tail = newNode;
- } else {
- if (position === 0) {
- // 3.1 在头部插入
- this.head.prev = newNode;
- newNode.next = this.head;
- this.head = newNode;
- } else if (position === this.length) {
- // 3.2 在尾部插入
- newNode.prev = this.tail;
- this.tail.next = newNode;
- this.tail = newNode;
- } else {
- // 3.3 在中间插入 0 < position < this.length
- var current = this.head;
- var index = 0;
- // 找到要插入的位置
- while (index++ < position) {
- current = current.next;
- }
- // 让新节点的next 指向要插入位置的节点(current)
- newNode.next = current;
- // 让新节点的prev 指向 current的prev
- newNode.prev = current.prev;
- // 将新节点与 当前节点的 前一个节点的 next建立关系
- current.prev.next = newNode;
- // 让newNode成为current的前一个节点
- current.prev = newNode;
- }
- }
- this.length += 1;
- return true;
-};
-```
-
-##### insert 方法图解
-
-我们一起来分析,双向链表在进行插入时,都有哪些情况会出现
-
-1. **情况 1**:当是第一次添加的时候,只需要让 head 和 tail 都指向 newNode 即可
-
-```js
-// 2.第一次添加
-if (this.length === 0) {
- this.head = newNode;
- this.tail = newNode;
-}
-```
-
-
-
-
-
-2. **当不是第一次插入的时候,又可以细分为以下几种情况**
- - 2.1 在头部插入 (position === 0)
- - 2.2 在尾部插入 (position === this.length)
- - 2.3 在中间插入 (0 < position < this.length)
-
-2.1 **在头部插入时**
-
-```js
-if (position === 0) {
- // 3.1 在头部插入
- this.head.prev = newNode;
- newNode.next = this.head;
- this.head = newNode;
-}
-```
-
-- 在 position === 0 时,我们要将 newNode 插入到如图的位置,成为新的头节点
-
-
-
-
-
-- 通过`this.head.prev = newNode`,将头节点的 prev 指向新节点,建立引用 1
-- 通过`newNode.next = this.head`,将新节点的 next 指向原来的头节点,建立引用 2
-- 此时可以发现,newNode 已经与原来的头节点互相建立指向关系
-
-
-
-
-
-- 最后通过` this.head = newNode`,将 newNode 成为新的头节点,建立引用 3
-
-
-
-
-
-2.2 **在尾部插入时**
-
-```js
-if (position === this.length) {
- // 3.2 在尾部插入
- this.tail.next = newNode;
- newNode.prev = this.tail;
- this.tail = newNode;
-}
-```
-
-- 在 position === this.length 时,我们要将 newNode 成为新的尾节点
-
-
-
-
-
-- 通过`this.tail.next = newNode`,将原来的节点的 next 指向新节点,建立引用 1
-- 通过`newNode.prev = this.tail`,将新节点的 prev,指向原来的尾节点,建立引用 2
-
-
-
-
-
-- 通过`this.tail = newNode`,将 tail 指向新的尾节点,建立引用 3
-
-
-
-
-
-2.3 **在中间插入时**
-
-> 这种情况下,我们需要改变的引用关系稍微多一些
-
-```js
-// 3.3 在中间插入 0 < position < this.length
-var current = this.head;
-var index = 0;
-// 找到要插入的位置
-while (index++ < position) {
- current = current.next;
-}
-// 让新节点的next 指向要插入位置的节点(current)
-newNode.next = current;
-// 让新节点的prev 指向 current的prev
-newNode.prev = current.prev;
-// 将新节点与 当前节点的 前一个节点的 next建立关系
-current.prev.next = newNode;
-// 让newNode成为current的前一个节点
-current.prev = newNode;
-```
-
-- 在 0 < position < this.length 时,我们假设在 1 的位置插入一个新的节点,如下图所示
-
-
-
-
-
-- 我们先要找到要插入元素合适的位置,我们可以通过以下代码来找到插入的位置
-
-
-
-
-
-- 我们找到**current 就是新的节点要插入的位置**,所以下面要做的就是让新的节点与 node1,node2**建立起引用关系**
-
-
-
-
-
-- 通过`newNode.next = current`, 让新节点的 next 指向要插入位置的节点(current),建立引用 1
-- 通过`newNode.prev = current.prev`,让新节点的 prev 指向 current 的 prev,建立引用 2
-
-
-
-
-
-- 通过`current.prev.next = newNode`,将新节点与 当前节点的 前一个节点的 next 建立关系,建立引用 3
-- 通过`current.prev = newNode`,让 newNode 成为 current 的前一个节点,建立引用 4
-
-
-
-
-
-##### 测试代码
-
-```js
-dll.insert(0, '000');
-dll.insert(2, '222');
-dll.insert(5, '555');
-console.log(dll.toString()); // 000 10 222 20 30 555
-```
-
-#### 1.5 实现 get()方法
-
-```js
-// 3.获取对应位置数据
-DoublyLinkedList.prototype.get = function (position) {
- if (position < 0 || position >= this.length) return null;
-
- if (Math.floor(this.length / 2) > position) {
- // 从前往后遍历
- var index = 0;
- var current = this.head;
- while (index++ < position) {
- current = current.next;
- }
- return current.data;
- } else {
- // 从后往前遍历
- var index = this.length - 1;
- var current = this.tail;
- while (index-- > position) {
- current = current.prev;
- }
- return current.data;
- }
-};
-```
-
-##### 测试代码
-
-```js
-console.log(dll.get(0)); // 000
-console.log(dll.get(2)); // 222
-console.log(dll.get(3)); // 20
-console.log(dll.get(5)); // 555
-```
-
-#### 1.6 实现 indexOf()方法
-
-```js
-// 4.获取数据对应的位置
-DoublyLinkedList.prototype.indexOf = function (data) {
- var current = this.head;
- var index = 0;
- while (current) {
- if (current.data === data) return index;
- current = current.next;
- index += 1;
- }
-
- return -1;
-};
-```
-
-##### 测试代码
-
-```js
-console.log(dll.indexOf('000')); // 0
-console.log(dll.indexOf('222')); // 2
-```
-
-#### 1.7 实现 update()方法
-
-其实就在 get 方法找到元素的基础上,赋值新的数据
-
-```js
-// 5.更新方法
-DoublyLinkedList.prototype.update = function (position, newData) {
- if (position < 0 || position >= this.length) return false;
- if (Math.floor(this.length / 2) > position) {
- // 从前往后 遍历
- var current = this.head;
- var index = 0;
- while (index++ < position) {
- current = current.next;
- }
- current.data = newData;
- return true;
- } else {
- // 从后往前 遍历
- var current = this.tail;
- var index = this.length - 1;
- while (index-- > position) {
- current = current.prev;
- }
- current.data = newData;
- return true;
- }
-};
-```
-
-##### 测试代码
-
-```js
-dll.update(1, '111');
-dll.update(3, '333');
-dll.update(4, '444');
-console.log(dll.toString()); // 000 111 222 333 444 555
-```
-
-#### 1.8 实现 removeAt()方法
-
-```js
-// 6.删除指定位置
-DoublyLinkedList.prototype.removeAt = function (position) {
- if (position < 0 || position >= this.length) return null;
- var current = this.head;
-
- // 1.只有一个节点时
- if (this.length === 1) {
- this.head = null;
- this.tail = null;
- } else {
- // 2.删除 头部节点
- if (position === 0) {
- this.head.next.prev = null;
- this.head = this.head.next;
- } else if (position === this.length - 1) {
- // 3.删除尾部节点
- this.tail.prev.next = null;
- this.tail = this.tail.prev;
- // 如果上面一种不好理解,也可以用下面这种写法
- // current = this.tail;
- // this.tail = this.tail.prev;
- // this.tail.next = null;
- } else {
- // 4.删除中间
- var index = 0;
- while (index++ < position) {
- current = current.next;
- }
- current.next.prev = current.prev;
- current.prev.next = current.next;
- }
- }
-
- this.length -= 1;
- return current.data;
-};
-```
-
-##### removeAt()方法图解
-
-让我们一起回顾一下 removeAt 主要实现了什么功能?
-
-removeAt()方法:删除指定位置的元素,删除成功返回删除的元素的数据,删除失败返回 null
-
-下面我们一起分析下,删除时会有哪些情况?
-
-1. **情况 1**:只有一个节点时,将 head 和 tail 指针,指向 null 即可
-
-
-
-
-
-2. 当链表的节点数量大于 1 时,会出现以下三种情况
- - 2.1 删除 头部节点,也就是删除位置 0 上的节点
- - 2.2 删除 尾部节点,也就是链表最后一位的节点
- - 2.3 删除 中间节点
-
-2.1 删除 头部节点
-
-```js
-// 2.删除 头部节点
-if (position === 0) {
- this.head.next.prev = null;
- this.head = this.head.next;
-}
-```
-
-- 如下图所示,我们要删除的节点是 Node1
-
-
-
-
-
-- 通过`this.head.next.prev = null`,让 Node1 后面的节点指向 null(图中引用 1) ,与 Node1 失去引用关系
-- 通过`this.head = this.head.next`,让 head 与 Node1 后面的节点建立引用 2
-- 经过上面两步的操作,Node1 将没有别的节点指向它,最终会被垃圾回收机制给**回收**掉,也就是会被删除
-
-
-
-
-
-2.2 删除尾部节点
-
-```js
-if (position === this.length - 1) {
- // 3.删除尾部节点
- this.tail.prev.next = null;
- this.tail = this.tail.prev;
-}
-```
-
-- 通过`this.tail.prev.next = null`,让尾元素的前一个节点,与之失去引用关系 1
-- 通过`this.tail = this.tail.prev`,让尾元素的前一个节点与 tail 建立引用 2,使之成为新的尾元素
-- 之前的尾元素,由于没有其他元素指向它,最终会被垃圾回收机制删除掉
-
-
-
-
-
-
-```js
-// 4.删除中间
-var index = 0;
-while (index++ < position) {
- current = current.next;
-}
-current.next.prev = current.prev;
-current.prev.next = current.next;
-```
-
-- 先通过 while 循环找到要删除的元素,比如 position = x,那么需要删除的节点就是 Node(x+1),如下图所示,我们要做的就是断了前后元素的引用关系
-
-
-
-
-
-- 通过`current.next.prev = current.prev`,建立新的引用 1
-- 通过`current.prev.next = current.next`,建立新的引用 2
-- current 同样会被垃圾回收掉
-
-
-
-
-
-##### 测试代码
-
-```js
-console.log(dll.removeAt(0)); // 000
-console.log(dll.removeAt(1)); // 222
-console.log(dll.removeAt(3)); // 555
-console.log(dll.toString()); // 111 333 444
-```
-
-#### 1.9 实现 remove()方法
-
-```js
-// 7.remove
-DoublyLinkedList.prototype.remove = function (data) {
- var position = this.indexOf(data);
- return this.removeAt(position);
-};
-```
-
-##### 测试代码
-
-```js
-console.log(dll.remove('111')); // 111
-console.log(dll.toString()); // 333 444Ï
-```
-
-### 2.封装完的双向链表
-
-```js
-function DoublyLinkedList() {
- // 内部类
- function Node(data) {
- this.data = data;
- this.prev = null;
- this.next = null;
- }
-
- // 属性
- this.head = null;
- this.tail = null;
- this.length = 0;
-
- // 1.向链表尾部追加数据
- DoublyLinkedList.prototype.append = function (data) {
- var newNode = new Node(data);
- // 若是第一次添加,直接将head和tail指向新节点即可
- if (this.length === 0) {
- this.head = newNode;
- this.tail = newNode;
- } else {
- // 让tail与新节点的prev建立连接
- newNode.prev = this.tail;
- // tail的next指向新节点
- this.tail.next = newNode;
- // 改变tail指针
- this.tail = newNode;
- }
-
- this.length += 1;
- };
-
- // 2.向链表中插入数据
- DoublyLinkedList.prototype.insert = function (position, data) {
- // 1.边界判断
- if (position < 0 || position > this.length) return false;
- var newNode = new Node(data);
-
- // 2.第一次添加
- if (this.length === 0) {
- this.head = newNode;
- this.tail = newNode;
- } else {
- if (position === 0) {
- // 3.1 在头部插入
- this.head.prev = newNode;
- newNode.next = this.head;
- this.head = newNode;
- } else if (position === this.length) {
- // 3.2 在尾部插入
- this.tail.next = newNode;
- newNode.prev = this.tail;
- this.tail = newNode;
- } else {
- // 3.3 在中间插入 0 < position < this.length
- var current = this.head;
- var index = 0;
- // 找到要插入的位置
- while (index++ < position) {
- current = current.next;
- }
- // 让新节点的next 指向要插入位置的节点(current)
- newNode.next = current;
- // 让新节点的prev 指向 current的prev
- newNode.prev = current.prev;
- // 将新节点与 当前节点的 前一个节点的 next建立关系
- current.prev.next = newNode;
- // 让newNode成为current的前一个节点
- current.prev = newNode;
- }
- }
- this.length += 1;
- return true;
- };
-
- // 3.获取对应位置数据
- DoublyLinkedList.prototype.get = function (position) {
- if (position < 0 || position >= this.length) return null;
-
- if (Math.floor(this.length / 2) > position) {
- // 从前往后遍历
- var index = 0;
- var current = this.head;
- while (index++ < position) {
- current = current.next;
- }
- return current.data;
- } else {
- // 从后往前遍历
- var index = this.length - 1;
- var current = this.tail;
- while (index-- > position) {
- current = current.prev;
- }
- return current.data;
- }
- };
-
- // 4.获取数据对应的位置
- DoublyLinkedList.prototype.indexOf = function (data) {
- var current = this.head;
- var index = 0;
- while (current) {
- if (current.data === data) return index;
- current = current.next;
- index += 1;
- }
-
- return -1;
- };
-
- // 5.更新方法
- DoublyLinkedList.prototype.update = function (position, newData) {
- if (position < 0 || position >= this.length) return false;
- if (Math.floor(this.length / 2) > position) {
- // 从前往后 遍历
- var current = this.head;
- var index = 0;
- while (index++ < position) {
- current = current.next;
- }
- current.data = newData;
- return true;
- } else {
- // 从后往前 遍历
- var current = this.tail;
- var index = this.length - 1;
- while (index-- > position) {
- current = current.prev;
- }
- current.data = newData;
- return true;
- }
- };
-
- // 6.删除指定位置
- DoublyLinkedList.prototype.removeAt = function (position) {
- if (position < 0 || position >= this.length) return null;
- var current = this.head;
-
- // 1.只有一个节点时
- if (this.length === 1) {
- this.head = null;
- this.tail = null;
- } else {
- // 2.删除 头部节点
- if (position === 0) {
- this.head.next.prev = null;
- this.head = this.head.next;
- } else if (position === this.length - 1) {
- // 3.删除尾部节点
- this.tail.prev.next = null;
- this.tail = this.tail.prev;
- // 如果上面一种不好理解,也可以用下面这种写法
- // current = this.tail;
- // this.tail = this.tail.prev;
- // this.tail.next = null;
- } else {
- // 4.删除中间
- var index = 0;
- while (index++ < position) {
- current = current.next;
- }
- current.next.prev = current.prev;
- current.prev.next = current.next;
- }
- }
-
- this.length -= 1;
- return current.data;
- };
-
- // 7.remove
- DoublyLinkedList.prototype.remove = function (data) {
- var position = this.indexOf(data);
- return this.removeAt(position);
- };
-
- DoublyLinkedList.prototype.size = function () {
- return this.length;
- };
-
- DoublyLinkedList.prototype.isEmpty = function () {
- return this.length === 0;
- };
-
- DoublyLinkedList.prototype.toString = function () {
- return this.forwardString();
- };
-
- // 返回正向遍历节点字符串形式
- DoublyLinkedList.prototype.forwardString = function () {
- var current = this.head;
- var resultString = '';
- while (current) {
- resultString += current.data + ' ';
- current = current.next;
- }
- return resultString;
- };
-
- // 返回反向遍历的节点的字符串形式
- DoublyLinkedList.prototype.backwardString = function () {
- var current = this.tail;
- var resultString = '';
- while (current) {
- resultString += current.data + ' ';
- current = current.prev;
- }
- return resultString;
- };
-}
-
-// 测试代码
-var dll = new DoublyLinkedList();
-
-dll.append('10');
-dll.append('20');
-dll.append('30');
-console.log(dll.toString()); // 10 20 30
-console.log(dll.forwardString()); // 10 20 30
-console.log(dll.backwardString()); // 30 20 10
-
-dll.insert(0, '000');
-dll.insert(2, '222');
-dll.insert(5, '555');
-console.log(dll.toString()); // 000 10 222 20 30 555
-
-console.log(dll.get(0)); // 000
-console.log(dll.get(2)); // 222
-console.log(dll.get(3)); // 20
-console.log(dll.get(5)); // 555
-
-console.log(dll.indexOf('000')); // 0
-console.log(dll.indexOf('222')); // 2
-
-dll.update(1, '111');
-dll.update(3, '333');
-dll.update(4, '444');
-console.log(dll.toString()); // 000 111 222 333 444 555
-
-console.log(dll.removeAt(0)); // 000
-console.log(dll.removeAt(1)); // 222
-console.log(dll.removeAt(3)); // 555
-console.log(dll.toString()); // 111 333 444
-
-console.log(dll.remove('111')); // 111
-console.log(dll.toString()); // 333 444
-```
diff --git a/docs/data-structure/05_set.md b/docs/data-structure/05_set.md
deleted file mode 100644
index f295804..0000000
--- a/docs/data-structure/05_set.md
+++ /dev/null
@@ -1,349 +0,0 @@
----
-nav:
- title: 数据结构
- order: 1
-group:
- title: 常见数据结构
- order: 1
-order: 5
----
-
-# 集合(set)
-
-## 一、介绍
-
-集合通常是由一组**无序的**、**不能重复的**元素构成。数学中常指的集合中的元素是可以重复的,但是计算机中集合的元素不能重复。
-
-集合是特殊的数组。
-
-- 特殊之处在于里面的元素**没有顺序**,也**不能重复**。
-- 没有顺序意味着**不能通过下标值进行访问**,不能重复意味着相同的对象在集合中**只会存在一份**。
-
-## 二、集合的实现
-
-集合比较常见的实现方式是哈希表,这里使用 JavaScript 的 Object 进行封装
-
-### 集合常见的操作
-
-- `add(value)` 向集合添加一个新的项
-- `remove(value)` 从集合移除一个值
-- `has(value)` 如果值在集合中,返回 `true`,否则返回` false`
-- `clear()` 移除集合中的所有项
-- `size()` 返回集合所包含元素的数量。与数组的 `length` 属性类似
-- `values()` 返回一个包含集合中所有值的数组。
-- 还有其他的方法,用的不多,这里不做封装
-
-### 1.Set 类的代码实现
-
-```js
-function MySet() {
- this.items = {};
-
- MySet.prototype.add = function (value) {
- if (this.has(value)) return false;
- this.items[value] = value;
- return true;
- };
-
- MySet.prototype.has = function (value) {
- return this.items.hasOwnProperty(value);
- };
-
- MySet.prototype.remove = function (value) {
- if (!this.has(value)) return false;
- delete this.items[value];
- return true;
- };
-
- MySet.prototype.clear = function () {
- this.items = {};
- };
-
- MySet.prototype.size = function () {
- return Object.keys(this.items).length;
- };
-
- // 返回一个包含集合中所有值的数组
- MySet.prototype.values = function () {
- return Object.keys(this.items);
- };
-}
-```
-
-#### 测试代码
-
-```js
-// 测试代码
-var set = new MySet();
-console.log(set.add('10')); // true
-console.log(set.add('10')); // false
-console.log(set.add('20')); // true
-console.log(set.add('30')); // true
-console.log(set.values()); // [ '10', '20', '30' ]
-
-console.log(set.remove('10')); // true
-console.log(set.remove('10')); // false
-console.log(set.values()); // [ '20', '30' ]
-console.log(set.size()); // 2
-```
-
-### 2.集合间操作的封装
-
-- 并集:对于给定的两个集合,返回一个包含两个集合中所有元素的新集合
-- 交集:对于给定的两个集合,返回一个包含两个集合中共有元素的新集合
-- 差集:对于给定的两个集合,返回一个包含所有存在于第一个集合且不存在于第二个集合的元素的新集合
-- 子集:验证一个给定集合是否是另一个集合的子集
-
-
-
-
集合间操作
-
-
-#### 2.1 并集的实现
-
-```js
-// 并集 ==> 将两个set集合合并
-MySet.prototype.union = function (otherSet) {
- // 创建一个新的set
- var unionSet = new MySet();
- // 取出当前set里的value
- var values = this.values();
-
- // 将当前set里的value添加到新的set中
- for (var i = 0; i < values.length; i++) {
- unionSet.add(values[i]);
- }
-
- // 取出传入的set
- values = otherSet.values();
- // 将传入的set添加到新的set中
- for (var i = 0; i < values.length; i++) {
- // 因为是set结构,所以会过滤掉重复的内容
- unionSet.add(values[i]);
- }
-
- return unionSet;
-};
-```
-
-##### 测试代码
-
-```js
-// 测试代码
-var set1 = new MySet();
-var set2 = new MySet();
-set1.add('10');
-set1.add('20');
-set1.add('30');
-
-set2.add('10');
-set2.add('40');
-set2.add('50');
-var unionSet = set1.union(set2);
-console.log(unionSet.values()); // [ '10', '20', '30', '40', '50' ]
-```
-
-#### 2.2 交集的实现
-
-```js
-// 交集 ==> 取出两个集合重复的内容
-MySet.prototype.intersect = function (otherSet) {
- var intersectSet = new MySet();
- var values = this.values();
-
- for (var i = 0; i < values.length; i++) {
- // 找出重复的内容
- if (otherSet.has(values[i])) {
- // 将重复的内容,添加到交集中
- intersectSet.add(values[i]);
- }
- }
- return intersectSet;
-};
-```
-
-##### 测试代码
-
-```js
-var intersectSet = set1.intersect(set2);
-console.log(intersectSet.values()); // [ '10' ]
-```
-
-#### 2.3 差集的实现
-
-```js
-// 差集 ==> 跟交集相反,剔除集合A中那些在集合B中也存在的内容
-MySet.prototype.difference = function (otherSet) {
- var differenceSet = new MySet();
- var values = this.values();
- for (var i = 0; i < values.length; i++) {
- if (!otherSet.has(values[i])) {
- differenceSet.add(values[i]);
- }
- }
- return differenceSet;
-};
-```
-
-##### 测试代码
-
-```js
-var differenceSet = set1.difference(set2);
-console.log(differenceSet.values()); // [ '20', '30' ]
-```
-
-#### 2.4 判断子集的实现
-
-```js
-// 子集 ==> 若集合B里的内容,在集合A中也存在,那么B就是A的子集
-MySet.prototype.subset = function (otherSet) {
- var values = this.values();
- for (var i = 0; i < values.length; i++) {
- if (!otherSet.has(values[i])) {
- return false;
- }
- }
- return true;
-};
-```
-
-##### 测试代码
-
-```js
-console.log(set1.subset(set2)); // false
-```
-
-### 3.完整代码
-
-```js
-function MySet() {
- this.items = {};
-
- MySet.prototype.add = function (value) {
- if (this.has(value)) return false;
- this.items[value] = value;
- return true;
- };
-
- MySet.prototype.has = function (value) {
- return this.items.hasOwnProperty(value);
- };
-
- MySet.prototype.remove = function (value) {
- if (!this.has(value)) return false;
- delete this.items[value];
- return true;
- };
-
- MySet.prototype.clear = function () {
- this.items = {};
- };
-
- MySet.prototype.size = function () {
- return Object.keys(this.items).length;
- };
-
- // 返回一个包含集合中所有值的数组
- MySet.prototype.values = function () {
- return Object.keys(this.items);
- };
-
- // 并集 ==> 将两个set集合合并
- MySet.prototype.union = function (otherSet) {
- // 创建一个新的set
- var unionSet = new MySet();
- // 取出当前set里的value
- var values = this.values();
-
- // 将当前set里的value添加到新的set中
- for (var i = 0; i < values.length; i++) {
- unionSet.add(values[i]);
- }
-
- // 取出传入的set
- values = otherSet.values();
- // 将传入的set添加到新的set中
- for (var i = 0; i < values.length; i++) {
- // 因为是set结构,所以会过滤掉重复的内容
- unionSet.add(values[i]);
- }
-
- return unionSet;
- };
-
- // 交集 ==> 取出两个集合重复的内容
- MySet.prototype.intersect = function (otherSet) {
- var intersectSet = new MySet();
- var values = this.values();
-
- for (var i = 0; i < values.length; i++) {
- // 找出重复的内容
- if (otherSet.has(values[i])) {
- // 将重复的内容,添加到交集中
- intersectSet.add(values[i]);
- }
- }
- return intersectSet;
- };
-
- // 差集 ==> 跟交集相反,剔除集合A中那些在集合B中也存在的内容
- MySet.prototype.difference = function (otherSet) {
- var differenceSet = new MySet();
- var values = this.values();
- for (var i = 0; i < values.length; i++) {
- if (!otherSet.has(values[i])) {
- differenceSet.add(values[i]);
- }
- }
- return differenceSet;
- };
-
- // 子集 ==> 若集合B里的内容,在集合A中也存在,那么B就是A的子集
- MySet.prototype.subset = function (otherSet) {
- var values = this.values();
- for (var i = 0; i < values.length; i++) {
- if (!otherSet.has(values[i])) {
- return false;
- }
- }
- return true;
- };
-}
-
-// 测试代码
-var set1 = new MySet();
-var set2 = new MySet();
-set1.add('10');
-set1.add('20');
-set1.add('30');
-
-set2.add('10');
-set2.add('40');
-set2.add('50');
-var unionSet = set1.union(set2);
-console.log(unionSet.values()); // [ '10', '20', '30', '40', '50' ]
-
-var intersectSet = set1.intersect(set2);
-console.log(intersectSet.values()); // [ '10' ]
-
-var differenceSet = set1.difference(set2);
-console.log(differenceSet.values()); // [ '20', '30' ]
-
-console.log(set1.subset(set2)); // false
-```
-
-## 三、应用
-
-### 1.[两个数组的交集](https://leetcode-cn.com/problems/intersection-of-two-arrays/)
-
-```js
-/**
- * @param {number[]} nums1
- * @param {number[]} nums2
- * @return {number[]}
- */
-var intersection = function (nums1, nums2) {
- // 使用set结构,一行代码就可以解决
- return [...new Set(nums1)].filter((n) => nums2.includes(n));
-};
-```
diff --git a/docs/data-structure/06_dictionary.md b/docs/data-structure/06_dictionary.md
deleted file mode 100644
index f3e7a16..0000000
--- a/docs/data-structure/06_dictionary.md
+++ /dev/null
@@ -1,207 +0,0 @@
----
-nav:
- title: 数据结构
- order: 1
-group:
- title: 常见数据结构
- order: 1
-order: 6
----
-
-# 字典(Dictionary)
-
-## 一、介绍
-
-字典是用来存储唯一值的一种数据结构,通常以 **[键, 值]** **对 **的形式来存储数据,主要特点是**一一对应**,也称为**映射**。
-
-在 js 中字典是使用`Map`类实现的,每个语言实现的类名不同,比如:Python 中是 `dict`,Java 中的 `HashMap` 和 `TreeMap`,但是实现字典的特点都是一样的
-
-## 二、字典的实现
-
-> 为了区分 ES6 中的 Map,这里使用 Dictionary 作为类名
-
-### 字典常见的操作
-
-- `set(key,value)` 向字典中添加新元素
-- `remove(key)` 通过使用键值来从字典中移除键值对应的数据值
-- `has(key)` 如果某个键值存在于这个字典中,则返回 `true`,反之则返回 `false`
-- `get(key)` 通过键值查找特定的数值并返回
-- `clear()` 将这个字典中的所有元素全部删除
-- `size()` 返回字典所包含元素的数量。与数组的 `length` 属性类似
-- `keys()` 将字典所包含的所有键名以数组形式返回
-- `values()` 将字典所包含的所有数值以数组形式返回
-
-### 代码实现
-
-```js
-function Dictionary() {
- this.item = {};
-
- Dictionary.prototype.has = function (key) {
- return this.item.hasOwnProperty(key);
- };
-
- Dictionary.prototype.set = function (key, value) {
- this.item[key] = value;
- };
-
- Dictionary.prototype.remove = function (key) {
- if (!this.has(key)) return false;
- delete this.item[key];
- return true;
- };
-
- Dictionary.prototype.get = function (key) {
- return this.has(key) ? this.item[key] : undefined;
- };
-
- Dictionary.prototype.clear = function () {
- this.item = {};
- };
-
- Dictionary.prototype.size = function () {
- return this.keys().length;
- };
-
- // 返回一个包含集合中所有值的数组
- Dictionary.prototype.keys = function () {
- return Object.keys(this.item);
- };
-
- Dictionary.prototype.values = function () {
- return Object.values(this.item);
- };
-}
-```
-
-##### 测试代码
-
-```js
-// 测试代码
-let map = new Dictionary();
-map.set('10', 10);
-map.set('20', 20);
-map.set('30', 30);
-console.log('[ map ] >', map); // [ map ] > Dictionary { item: { 10: 10, 20: 20, 30: 30 } }
-
-map.has('10'); // ? true
-
-map.remove('20'); // ? true
-console.log('[ map ] >', map); //[ map ] > Dictionary { item: { 10: 10, 30: 30 } }
-
-map.keys(); // ? [ '10', '30' ]
-
-map.values(); // ? [ 10, 30 ]
-map.size(); // ? 2
-map.clear();
-console.log('[ map ] >', map); // [ map ] > Dictionary { item: {} }
-```
-
-## 三、应用
-
-### 1.[两数之和](/js-logs/n-sum#1两数之和)
-
-```js
-/**
- * @param {number[]} nums
- * @param {number} target
- * @return {number[]}
- */
-var twoSum = function (nums, target) {
- var map = new Map();
-
- for (var i = 0; i < nums.length; i++) {
- var n = nums[i];
- var n2 = target - n;
-
- if (map.has(n2)) {
- return [map.get(n2), i];
- } else {
- map.set(n, i);
- }
- }
-};
-```
-
-### 2.[无重复字符的最长子串](/js-logs/sliding-window#3无重复字符的最长子串)
-
-- 思路
-- 用双指针维护一个"滑动窗口"
-- 不断移动右指针,当遇到重复元素,将左指针移动到重复元素的下一位
-- 遍历过程中,记录窗口的长度,返回最大值
-
-注意
-"abbcdefa",遇到这种情况,要加判断 ==> 重复元素的位置要大于左指针才有效
-
-```js
-/**
- * @param {string} s
- * @return {number}
- */
-var lengthOfLongestSubstring = function (s) {
- let map = new Map();
- let l = 0,
- res = 0;
-
- for (let r = 0; r < s.length; r++) {
- let c = s[r];
- // 2.如果发现map中已经存过c的位置
- // 4.map.get(c)的位置要大于左指针的位置才更新
- if (map.has(c) && map.get(c) >= l) {
- // 2.1将c的位置拿出来,改变l指针的位置
- l = map.get(c) + 1;
- }
- // 3.更新最长的子串
- res = Math.max(res, r - l + 1);
- // 1.右指针在滑动的过程中,将对应的位置,存入map中
- map.set(c, r);
- }
- return res;
-};
-```
-
-### 3.[有效的括号](/js-logs/stack#20有效的括号)
-
-- 思路:
-- 使用栈结构先进后出的特性
-- 先声明一个栈 stack 变量
-- 遍历整个字符串
-- 发现 ( 、 {、 [ 就入栈
-- 发现 )、}、] 就和栈顶做比较,若栈顶存在对应的括号,将与之对应的括号出栈
-- 遍历结束后,若栈空,则说明所有括号都能找到相匹配的
-- 这题使用 map 做了存储上的优化,不然要写一堆的判断
-
-```js
-/**
- * @param {string} s
- * @return {boolean}
- */
-var isValid = function (s) {
- if (s.length % 2 === 1) {
- return false;
- }
- var stack = [];
- var length = s.length;
- var map = new Map();
- map.set('(', ')');
- map.set('{', '}');
- map.set('[', ']');
-
- for (var i = 0; i < length; i++) {
- var c = s[i];
- if (map.has(c)) {
- stack.push(c);
- } else {
- var stackTop = stack[stack.length - 1];
- if (map.get(stackTop) === c) {
- // 栈顶元素出栈
- stack.pop();
- } else {
- // 栈顶元素与当前元素不匹配 “})” "])" return
- return false;
- }
- }
- }
- return stack.length === 0 ? true : false;
-};
-```
diff --git a/docs/data-structure/07_hash_table.md b/docs/data-structure/07_hash_table.md
deleted file mode 100644
index 28023af..0000000
--- a/docs/data-structure/07_hash_table.md
+++ /dev/null
@@ -1,700 +0,0 @@
----
-nav:
- title: 数据结构
- order: 1
-group:
- title: 常见数据结构
- order: 1
-order: 7
----
-
-# 哈希表(HashTable)
-
-## 一、介绍
-
-哈希表并不好理解,不像数组、链表和树等可通过图形的形式表示其结构和原理。
-
-哈希表的结构就是**数组**,但它神奇之处在于对**下标值的一种变换**,这种变换我们可以称之为**哈希函数**,通过哈希函数可以获取**HashCode**。哈希表通常是基于**数组**实现的,但是相对于数组,它存在更多优势
-
-### 1. 哈希表的优点
-
-- 哈希表可以提供非常快速的**插入-删除-查找操作**;
-- 无论多少数据,插入和删除值都只需要非常短的时间,即 O(1)的时间级。实际上,只需要**几个机器指令**即可完成;
-- 哈希表的速度比**树还要快**,基本可以瞬间查找到想要的元素。
-
-### 2. 哈希表的缺点
-
-- 哈希表中的数据是**没有顺序**的,所以不能以一种固定的方式(比如从小到大 )来遍历其中的元素。
-- 通常情况下,哈希表中的 key 是**不允许重复**的,不能放置相同的 key,用于保存不同的元素。
-
-**通过以下案例了解哈希表:**
-
-- 案例一:公司想要存储 1000 个人的信息,每一个工号对应一个员工的信息。若**使用数组,增删数据时比较麻烦**;使用**链表,获取数据时比较麻烦**。有没有一种数据结构,能把某一员工的姓名转换为它对应的工号,再根据工号查找该员工的完整信息呢?没错此时就可以使用哈希表的哈希函数来实现。
-- 案例二:存储联系人和对应的电话号码:当要查找张三(比如)的号码时,若使用数组:由于**不知道存储张三数据对象的下标值**,所以**查找起来十分麻烦**,使用**链表时也同样麻烦**。而使用哈希表就能通过**哈希函数**把张三这个名称**转换**为它对应的**下标值**,再通过下标值查找效率就非常高了。
-
-也就是说:哈希表最后还是基于数组来实现的,只不过**哈希表能够通过哈希函数把字符串转化为对应的下标值,建立字符串和下标值的映射关系**。
-
-### 3. 关于哈希表的一些概念
-
-- **哈希化**
- 将**大数字**转化成**数组范围内下标**的过程,称之为哈希化。
-
-- **哈希函数**
- 我们通常会将单词转化成大数字,把大数字进行哈希化的代码实现放在一个函数中,该函数就称为哈希函数。
-
-- **哈希表**
- 对最终数据插入的数组进行整个结构的封装,得到的就是哈希表。
-
-### 4. 认识哈希化
-
-为了把字符串转化为对应的下标值,需要有一套编码系统,为了方便理解我们创建这样一套编码系统:比如 a 为 1,b 为 2,c 为 3,以此类推 z 为 26,空格为 27(不考虑大写情况)。
-
-有了编码系统后,将字母转化为数字也有很多种方案:
-
-- 方案一:数字相加
- 例如 cats 转化为数字:`3 + 1 + 20 + 19 = 43`,那么就把 43 作为 cats 单词的下标值储存在数组中;
- 但是这种方式会存在这样的问题:很多的单词按照该方式转化为数字后都是 43,比如 was。而在数组中一个下标值只能储存一个数据,所以该方式不合理。
-
-- 方案二:幂的连乘
- 我们平时使用的大于 10 的数字,就是用幂的连乘来表示它的唯一性的。 比如: `6543 = 6 * 10^3 + 5 * 10^2 + 4 * 10 + 3`;这样单词也可以用该种方式来表示:`cats = 3 * 27^3 + 1 * 27^2 + 20 * 27 + 17 = 60337`。
- 虽然该方式可以保证字符的唯一性,但是如果是较长的字符(如 aaaaaaaaaa)所表示的数字就非常大,此时要求很大容量的数组,然而其中却有许多下标值指向的是无效的数据(比如不存在 zxcvvv 这样的单词),造成了数组空间的浪费。
-
-两种方案总结:
-
-- 第一种方案(让数字相加求和)产生的数组下标太少。
-- 第二种方案(与 27 的幂相乘求和)产生的数组下标又太多。
-
-现在需要一种压缩方法,把幂的连乘方案系统中得到的**巨大整数范围压缩到可接受的数组范围中**。可以通过==取余==操作来实现。虽然取余操作得到的结构也有可能重复,但是可以通过其他方式解决。
-
-### 5. 解决哈希化后地址仍然冲突的方法
-
-#### 5.1 拉链法
-
-如下图所示,我们将每一个数字都对**10**进行取余操作,则余数的范围**0~9**作为数组的下标值。并且,数组每一个下标值对应的位置存储的不再是一个数字了,而是存储由经过取余操作后得到相同余数的数字组成的**数组**或**链表**
-
-
-
-
拉链法
-
-
-这样可以根据下标值获取到整个数组或链表,之后继续在数组或链表中查找就可以了。而且,产生冲突的元素一般不会太多。
-
-**总结**:链地址法解决冲突的办法是每个数组单元中存储的不再是单个数据,而是一条链条,这条链条常使用的数据结构为数组或链表,两种数据结构查找的效率相当(因为链条的元素一般不会太多)
-
-#### 5.2 开放地址法
-
-> 开放地址法的主要工作方式是寻找空白的单元格来放置冲突的数据项。
-
-
-
-
开放地址法
-
-
-根据探测空白单元格位置方式的不同,可分为三种方法:
-
-- 线性探测
-- 二次探测
-- 再哈希法
-
-##### 5.2.1 线性探测
-
-下面我们根据上图举例感受一下什么是线性探测
-
-- 当插入 13 时:
- 经过哈希化(对 10 取余)之后得到的下标值 index=3,但是该位置已经放置了数据 33。而线性探测就是从 index 位置+1 开始向后一个一个来查找合适的位置来放置 13,所谓合适的位置指的是空的位置,如上图中 index=4 的位置就是合适的位置。
-
-- 当查询 13 时:
- - 首先 13 经过哈希化得到 index=3,如果 index=3 的位置存放的数据与需要查询的数据 13 相同,就直接返回; 不相同时,则线性查找,从 index+1 位置开始一个一个位置地查找数据 13。
- - 查询过程中不会遍历整个哈希表,只要查询到空位置,就停止,因为插入 13 时不会跳过空位置去插入其他位置。
-- 当删除 13 时:
- - 删除操作和上述两种情况类似,但需要注意的是,删除一个数据项时,不能将该位置下标的内容设置为 null,否则会影响到之后其他的查询操作,因为一遇到为 null 的位置就会停止查找。
- - 通常删除一个位置的数据项时,我们可以将它进行特殊处理(比如设置为-1),这样在查找时遇到-1 就知道要继续查找。
-
-**线性探测存在的问题:**
-
-- 线性探测存在一个比较严重的问题,就是**聚集**。
-- 如哈希表中还没插入任何元素时,插入 23、24、25、26、27,这就意味着下标值为 3、4、5、6、7 的位置都放置了数据,这种一连串填充单元就称为聚集。
-- **聚集会影响哈希表的性能,无论是插入/查询/删除都会影响**。
-- 比如插入 13 时就会发现,连续的单元 3~7 都不允许插入数据,并且在插入的过程中需要经历多次这种情况。
-
-
-
-
线性探测
-
-
-> 二次探测法可以解决该问题
-
-##### 5.2.2 二次探测
-
-**上文所说的线性探测存在的问题:**
-
-- 如果之前的数据是连续插入的,那么新插入的一个数据可能需要探测很长的距离
-
-**二次探测是在线性探测的基础上进行了优化:**
-
-- 线性探测:我们可以看成是步长为 1 的探测,比如从下表值 x 开始,那么线性探测就是按照下标值:x+1、x+2、x+3 等依次探测;
-- 二次探测:对步长进行了优化,比如从下标值 x 开始探测:x+1^2^、x+2^2^、x+3^3^ 。
-- 这样**一次性探测比较长的距离,避免了数据聚集带来的影响**。
-
-**二次探测存在的问题:**
-
-- 当插入数据分布性较大的一组数据时,比如:13-163-63-3-213,这种情况会造成步长不一的一种聚集(虽然这种情况出现的概率较线性探测的聚集要小),同样会影响性能。
-
-##### 5.2.3 再哈希法
-
-在开放地址法中寻找空白单元格的最好的解决方式为再哈希化。
-
-- 二次探测的步长是固定的:1,4,9,16 依次类推
-- 现在需要一种方法:**产生一种依赖关键字(数据)的探测序列**,而不是每个关键字探测步长都一样
-- 这样,**不同的关键字即使映射到相同的数组下标,也可以使用不同的探测序列**
-- 再哈希法的做法为:**把关键字用另一个哈希函数,再做一次哈希化**,用这次**哈希化的结果作为该关键字的步长**
-
-第二次哈希化需要满足以下两点:
-
-- 和第一个哈希函数不同,不然哈希化后的结果仍是原来位置
-- 不能输出为 0,否则每次探测都是原地踏步的死循环
-
-**优秀的哈希函数:**
-
-- stepSize = constant - (key % constant)
-- 其中 constant 是**质数**,且**小于数组的容量**
-- 例如:stepSize = 5 - (key % 5),满足需求,并且结果不可能为 0
-
-**哈希化的效率:**
-
-哈希表中执行插入和搜索操作效率是非常高的。
-
-- 如果没有发生冲突,那么效率就会更高
-- 如果发生冲突,存取时间就依赖后来的探测长度
-- 平均探测长度以及平均存取时间,取决于**填装因子**,\*_随着填装因子变大,探测长度会越来越长。_
-
-**装填因子:**
-
-- 装填因子表示**当前哈希表中已经包含的数据项和整个哈希表长度的比值**
-- 装填因子 = 总数据项 / 哈希表长度
-- 开放地址法的装填因子最大为 1,因为只有空白的单元才能放入元素
-- 链地址法的装填因子可以大于 1,因为只要愿意,拉链法可以无限延伸下去
-
-**不同探测方式性能的比较:**
-
-- 线性探测
-
- 可以看到,随着装填因子的增大,平均探测长度呈指数形式增长,性能较差。实际情况中,最好的装填因子取决于存储效率和速度之间的平衡,随着装填因子变小,存储效率下降,而速度上升。
-
-
-
-
-
-- 二次探测和再哈希化的性能
-
- 二次探测和再哈希法性能相当,它们的性能比线性探测略好。由下图可知,随着装填因子的变大,平均探测长度呈指数形式增长,需要探测的次数也呈指数形式增长,性能不高。
-
-
-
-
-
-- 链地址法的性能
-
- 可以看到随着装填因子的增加,平均探测长度呈线性增长,较为平缓。在开发中使用链地址法较多,比如 Java 中的 HashMap 中使用的就是链地址法。
-
-
-
-
-
-### 6. 哈希函数
-
-哈希表的优势在于它的速度,所以哈希函数不能采用消耗性能较高的复杂算法。提高速度的一个方法是在哈希函数中尽量减少乘法和除法。
-
-性能高的哈希函数应具备以下两个优点:
-
-- 快速的计算
-- 均匀的分布
-
-#### 快速计算
-
-霍纳法则:在中国霍纳法则也叫做秦久韶算法,具体算法为:
-
-
-
-
-
-求多项式的值时,首先计算最内层括号内一次多项式的值,然后由内向外逐层计算一次多项式的值。这种算法把求 n 次多项式 f(x)的值就转化为求 n 个一次多项式的值。
-
-- 变换之前:
- - 乘法次数:n(n+1) / 2 次
- - 加法次数:n 次
-- 变换之后:
- - 乘法次数:n 次
- - 加法次数:n 次
-
-如果使用大 O 表示时间复杂度的话,直接从变换前的 O(N^2)降到了 O(N)。
-
-#### 均匀分布
-
-在设计哈希表时,我们已经有办法处理映射到相同下标值的情况:链地址法或者开放地址法。但是,为了提供效率,最好的情况还是让数据在哈希表中均匀分布。因此,我们需要在使用常量的地方,尽量使用质数。比如:哈希表的长度、N 次幂的底数等。
-
-**Java 中的 HashMap 采用的是链地址法**,哈希化采用的是公式为:**index = HashCode(key) & (Length-1)** 即将数据化为二进制进行与运算,而不是取余运算。这样计算机直接运算二进制数据,效率更高。但是 JavaScript 在进行较大数据的与运算时会出现问题,所以我们使用 JavaScript 实现哈希化时采用**取余运算**。
-
-## 二、哈希表的封装
-
-### 1. 实现一个哈希函数
-
-```js
-function hashFunction(str, size) {
- // 1.定义hashCode
- var hashCode = 0;
- // 2.霍纳算法,来计算hashCode的值
- for (var i = 0; i < str.length; i++) {
- hashCode = 37 * hashCode + str.charCodeAt(i);
- }
- // 缩小hashCode的范围
- var index = hashCode % size;
- return index;
-}
-```
-
-#### 测试代码
-
-```js
-hashFunction('abc', 7); //? 4
-hashFunction('cba', 7); //? 3
-hashFunction('nba', 7); //? 5
-hashFunction('mba', 7); //? 1
-```
-
-### 2. 哈希表常见操作
-
-- `put(key, value)` 插入或修改操作。
-- `get(key)` 获取哈希表中特定位置的元素。
-- `remove(key)` 删除哈希表中特定位置的元素。
-- `isEmpty()` 如果哈希表中不包含任何元素,返回 `trun`,如果哈希表长度大于 0 则返回 `false`。
-- `size()` 返回哈希表包含的元素个数。
-- `resize(value)` 对哈希表进行扩容操作。
-
-### 3. 创建哈希表类
-
-封装的哈希表的数据结构模型:
-
-
-
-
-
-#### 3.1 创建哈希表类
-
-```js
-// 根据 链地址法(拉链法) 封装哈希表
-function HashTable() {
- this.storage = [];
- this.count = 0; // 保存已经存放的总数,用于计算装载因
- this.limit = 7; // 数组长度,用于动态扩容
-}
-```
-
-#### 3.2 实现 put()方法
-
-哈希表的插入和修改操作是同一个函数:因为,当使用者传入一个 `[key, value]` 时,如果原来不存在该 key,那么就是插入操作,如果原来已经存在该 key,那么就是修改操作。
-
-
-
-
-
-实现思路:
-
-- 首先,根据 key 获取索引值 index,目的为将数据插入到 storage 的对应位置;
-- 然后,根据索引值取出 bucket,如果 bucket 不存在,先创建 bucket,随后放置在该索引值的位置;
-- 接着,判断新增还是修改原来的值。如果已经有值了,就修改该值;如果没有,就执行后续操作。
-- 最后,进行新增数据操作。
-
-**代码实现**
-
-```js
-// 1.插入和修改
-HashTable.prototype.put = function (key, value) {
- if (typeof key === 'String') {
- throw new Error('key must be a string');
- }
-
- // 1.根据key获取对应的index
- var index = this.hashFunction(key, this.limit);
- var bucket = this.storage[index];
- if (bucket === undefined) {
- bucket = [];
- this.storage[index] = bucket;
- }
-
- // 修改操作
- for (var i = 0; i < bucket.length; i++) {
- var tuple = bucket[i];
- if (tuple[0] === key) {
- tuple[1] = value;
- return;
- }
- }
-
- // 插入操作
- bucket.push([key, value]);
- this.count += 1;
-};
-```
-
-为了方便测试,我们下面去实现 get 方法
-
-#### 3.3 实现 get()方法
-
-实现思路:
-
-- 首先,根据 key 通过哈希函数获取它在 `storage` 中对应的索引值 `index`。
-- 然后,根据索引值获取对应的 `bucket`。
-- 接着,判断获取到的 `bucket` 是否为 `null`,如果为 `null`,直接返回 `null`。
-- 随后,线性遍历 `bucket` 中每一个 `key` 是否等于传入的 `key`。如果等于,直接返回对应的 `value`。
-- 最后,遍历完 `bucket` 后,仍然没有找到对应的 `key`,直接 `return null` 即可。
-
-**代码实现**
-
-```js
-// 2.获取操作
-HashTable.prototype.get = function (key) {
- if (typeof key === 'String') {
- throw new Error('key must be a string');
- }
-
- var index = this.hashFunction(key, this.limit);
- var bucket = this.storage[index];
-
- if (bucket === undefined) return null;
- // 从 bucket 中线性查找key
- for (var i = 0; i < bucket.length; i++) {
- var tuple = bucket[i];
- if (tuple[0] === key) {
- return tuple[1];
- }
- }
- // bucket中没有找到返回 null
- return null;
-};
-```
-
-**测试代码**
-
-```js
-//测试代码
-var ht = new HashTable();
-ht.put('abc', '111');
-ht.put('cba', '222');
-ht.put('nba', '333');
-console.log(ht);
-console.log(ht.get('abc')); // ? 111
-console.log(ht.get('cba')); // ? 222
-console.log(ht.get('nba')); // ? 333
-// 测试修改
-ht.put('abc', '444');
-console.log(ht.get('abc')); // ? 444Ï
-```
-
-#### 3.4 实现 remove()方法
-
-实现思路:
-
-- 首先,根据 key 通过哈希函数获取它在 `storage` 中对应的索引值 `index`。
-- 然后,根据索引值获取对应的 `bucket`。
-- 接着,判断获取到的 `bucket` 是否为 `null`,如果为 `null`,直接返回 `null`。
-- 随后,线性查找 `bucket`,寻找对应的数据,并且删除。
-- 最后,依然没有找到,返回 `null`。
-
-```js
-// 3.删除操作
-HashTable.prototype.remove = function (key) {
- if (typeof key === 'String') {
- throw new Error('key must be a string');
- }
-
- var index = this.hashFunction(key, this.limit);
- var bucket = this.storage[index];
-
- if (bucket === undefined) return null;
-
- for (var i = 0; i < bucket.length; i++) {
- var tuple = bucket[i];
- if (tuple[0] === key) {
- bucket.splice(i, 1);
- this.count -= 1;
- return tuple[1];
- }
- }
-
- return null;
-};
-```
-
-#### 3.5 实现 isEmpty()方法和 size()方法
-
-```js
-HashTable.prototype.isEmpty = function () {
- return this.count === 0;
-};
-
-HashTable.prototype.size = function () {
- return this.count;
-};
-```
-
-#### 3.6 哈希表的扩容和压缩
-
-为什么需要扩容?
-
-- 前面我们在哈希表中使用的是长度为 7 的数组,由于使用的是链地址法,装填因子(loadFactor)可以大于 1,所以这个哈希表可以无限制地插入新数据。
-- 但是,随着数据量的增多,storage 中每一个 `index` 对应的 `bucket` 数组(链表)就会越来越长,这就会造成哈希表效率的降低。
-
-什么情况下需要扩容?
-
-- 常见的情况是 `loadFactor > 0.75` 的时候进行扩容。
-
-如何进行扩容?
-
-- 简单的扩容可以直接扩大两倍(关于质数,之后讨论)。
-- 扩容之后所有的数据项都要进行同步修改。
-
-实现思路:
-
-- 首先,定义一个变量,比如 oldStorage 指向原来的 `storage`。
-- 然后,创建一个新的容量更大的数组,让 `this.storage` 指向它。
-- 最后,将 oldStorage 中的每一个 bucket 中的每一个数据取出来依次添加到 `this.storage` 指向的新数组中。
-
-
-
-
-
-#### 3.7 实现 resize()方法
-
-装填因子 = 哈希表中数据 / 哈希表长度,即 `loadFactor = count / HashTable.length`。
-
-resize 方法,既可以实现哈希表的扩容,也可以实现哈希表容量的压缩。
-
-```js
-// 4.哈希表扩容
-HashTable.prototype.resize = function (newLimit) {
- var oldStorage = this.storage;
- this.storage = [];
- this.count = 0;
- this.limit = newLimit;
- for (var i = 0; i < oldStorage.length; i++) {
- var bucket = oldStorage[i];
- if (bucket === undefined) continue;
-
- for (var j = 0; j < bucket.length; j++) {
- var tuple = bucket[j];
- this.put(tuple[0], tuple[1]);
- }
- }
-};
-```
-
-通常情况下当装填因子 `loadFactor > 0.75` 时,对哈希表进行扩容。在哈希表中的 put 方法中添加如下代码,判断是否需要调用扩容函数进行扩容。
-
-```js
-// 动态扩容
-if (this.count > this.limit * 0.75) {
- let newLimit = this.getPrime(this.limit * 2);
- this.resize(newLimit);
-}
-```
-
-当装填因子 `loadFactor < 0.25` 时,对哈希表容量进行压缩。在哈希表中的 remove 方法中添加如下代码,判断是否需要调用扩容函数进行压缩。
-
-```js
-// 动态减少容量
-if (this.limit > 7 && this.count < this.limit * 0.25) {
- let newLimit = this.getPrime(this.limit * 2);
- this.resize(newLimit);
-}
-```
-
-这里封装两个工具函数
-
-```js
-// 判断是否为质数
-HashTable.prototype.isPrime = function (number) {
- var temp = parseInt(Math.sqrt(number));
- for (var i = 2; i <= temp; i++) {
- if (number % i === 0) {
- return false;
- }
- }
- return true;
-};
-
-// 获取一个质数
-HashTable.prototype.getPrime = function (number) {
- while (!this.isPrime(number)) {
- number += 1;
- }
- return number;
-};
-```
-
-## 三、完整实现
-
-```js
-// 根据 链地址法(拉链法) 封装哈希表
-function HashTable() {
- this.storage = [];
- this.count = 0; // 保存已经存放的总数,用于计算装载因
- this.limit = 7; // 数组长度,用于动态扩容
-
- HashTable.prototype.hashFunction = function (str, size) {
- // 1.定义hashCode
- var hashCode = 0;
- // 2.霍纳算法,来计算hashCode的值
- // 这里就采用37作为公式里的质数(无强制要求,质数即可)
- for (var i = 0; i < str.length; i++) {
- hashCode = 37 * hashCode + str.charCodeAt(i);
- }
- // 缩小hashCode的范围
- var index = hashCode % size;
- return index;
- };
-
- // 1.插入和修改
- HashTable.prototype.put = function (key, value) {
- if (typeof key === 'String') {
- throw new Error('key must be a string');
- }
-
- // 1.根据key获取对应的index
- var index = this.hashFunction(key, this.limit);
- var bucket = this.storage[index];
- if (bucket === undefined) {
- bucket = [];
- this.storage[index] = bucket;
- }
-
- // 修改操作
- for (var i = 0; i < bucket.length; i++) {
- var tuple = bucket[i];
- if (tuple[0] === key) {
- tuple[1] = value;
- return;
- }
- }
-
- // 插入操作
- bucket.push([key, value]);
- this.count += 1;
-
- // 动态扩容
- if (this.count > this.limit * 0.75) {
- let newLimit = this.getPrime(this.limit * 2);
- this.resize(newLimit);
- }
- };
-
- // 2.获取操作
- HashTable.prototype.get = function (key) {
- if (typeof key === 'String') {
- throw new Error('key must be a string');
- }
-
- var index = this.hashFunction(key, this.limit);
- var bucket = this.storage[index];
-
- if (bucket === undefined) return null;
- // 从 bucket 中线性查找key
- for (var i = 0; i < bucket.length; i++) {
- var tuple = bucket[i];
- if (tuple[0] === key) {
- return tuple[1];
- }
- }
- // bucket中没有找到返回 null
- return null;
- };
-
- // 3.删除操作
- HashTable.prototype.remove = function (key) {
- if (typeof key === 'String') {
- throw new Error('key must be a string');
- }
-
- var index = this.hashFunction(key, this.limit);
- var bucket = this.storage[index];
-
- if (bucket === undefined) return null;
-
- for (var i = 0; i < bucket.length; i++) {
- var tuple = bucket[i];
- if (tuple[0] === key) {
- bucket.splice(i, 1);
- this.count -= 1;
- // 动态减少容量
- if (this.limit > 7 && this.count < this.limit * 0.25) {
- let newLimit = this.getPrime(this.limit * 2);
- this.resize(newLimit);
- }
- return tuple[1];
- }
- }
-
- return null;
- };
-
- HashTable.prototype.isEmpty = function () {
- return this.count === 0;
- };
-
- HashTable.prototype.size = function () {
- return this.count;
- };
-
- // 4.哈希表扩容
- HashTable.prototype.resize = function (newLimit) {
- var oldStorage = this.storage;
- this.storage = [];
- this.count = 0;
- this.limit = newLimit;
- for (var i = 0; i < oldStorage.length; i++) {
- var bucket = oldStorage[i];
- if (bucket === undefined) continue;
-
- for (var j = 0; j < bucket.length; j++) {
- var tuple = bucket[j];
- this.put(tuple[0], tuple[1]);
- }
- }
- };
-
- // 判断是否为质数
- HashTable.prototype.isPrime = function (number) {
- var temp = parseInt(Math.sqrt(number));
- for (var i = 2; i <= temp; i++) {
- if (number % i === 0) {
- return false;
- }
- }
- return true;
- };
-
- // 获取一个质数
- HashTable.prototype.getPrime = function (number) {
- while (!this.isPrime(number)) {
- number += 1;
- }
- return number;
- };
-}
-
-//测试代码
-
-var ht = new HashTable();
-ht.put('abc', '111');
-ht.put('cba', '222');
-ht.put('nba', '333');
-console.log(ht);
-console.log(ht.get('abc')); // ? 111
-console.log(ht.get('cba')); // ? 222
-console.log(ht.get('nba')); // ? 333
-
-ht.put('abc', '444');
-console.log(ht.get('abc')); // ? 444
-ht.remove('abc');
-console.log(ht.get('abc')); // ? null
-```
diff --git a/docs/data-structure/08_tree&binary_tree.md b/docs/data-structure/08_tree&binary_tree.md
deleted file mode 100644
index b78911e..0000000
--- a/docs/data-structure/08_tree&binary_tree.md
+++ /dev/null
@@ -1,252 +0,0 @@
----
-nav:
- title: 数据结构
- order: 1
-group:
- title: 常见数据结构
- order: 1
-order: 8
----
-
-# 树(Tree)和二叉树(BinaryTree)
-
-## 一、树结构的介绍
-
-我们大家都见过现实生活中的树 🌲,例如:
-
-
-
-
世界十大名树全球最著名的树盘点其中一棵位于我国台湾
-
-
-### 1.1 树的特点:
-
-- 树一般都有一个**根**,连接着根的是**树干**
-- 树干会发生**分叉**,形成许多树枝,树枝会继续分化成更小的树枝
-- 树枝的最后是**叶子**
-
-现实生活中很多结构都是树的抽象,模拟的树结构相当于旋转`180°`的树,如下:
-
-
-
-
-
-### 1.2 树结构 对比于数组/链表/哈希表 有哪些**优势**呢?
-
-**数组:**
-
-- 优点:可以通过**下标值访问**,效率高;
-- 缺点:查找数据时需要先对数据进行**排序**,生成**有序数组**,才能提高查找效率;并且在插入和删除元素时,需要大量的**位移操作**;
-
-**链表:**
-
-- 优点:数据的插入和删除操作效率都很高;
-- 缺点:**查找**效率低,需要从头开始依次查找,直到找到目标数据为止;当需要在链表中间位置插入或删除数据时,插入或删除的效率都不高。
-
-**哈希表:**
-
-- 优点:哈希表的插入/查询/删除效率都非常高;
-- 缺点:**空间利用率不高**,底层使用的数组中很多单元没有被利用;并且哈希表中的元素是**无序**的,不能按照固定顺序遍历哈希表中的元素;而且不能快速找出哈希表中**最大值或最小值**这些特殊值。
-
-**树结构:**
-
-优点:树结构综合了上述三种结构的优点,同时也弥补了它们存在的缺点(虽然效率不一定都比它们高),比如树结构中数据都是有序的,查找效率高;空间利用率高;并且可以快速获取最大值和最小值等。
-
-总结:**每种数据结构都有自己特定的应用场景**
-
-## 二、认识树结构
-
-> **树(Tree)**:由 n(n ≥ 0)个节点构成的**有限集合**。当 n = 0 时,称为**空树**。
-
-对于任一棵非空树(n > 0),它具备以下性质:
-
-- 数中有一个称为 **根(Root)** 的特殊节点,用 **r** 表示;
-- 其余节点可分为 m(m > 0)个互不相交的有限集合 T1,T2,...,Tm,其中每个集合本身又是一棵树,称为原来树的**子树(SubTree)**。
-
-### 2.1 树的常用术语:
-
-
-
-
-
-- **节点的度(Degree)**:节点的**子树个数**,比如节点 B 的度为 2
-- **树的度**:树的所有节点中**最大的度数**,如上图树的度为 2
-- **叶节点(Leaf)**:**度为 0 的节点**(也称为叶子节点),如上图的 H,I,J 等
-- **父节点(Parent)**:度不为 0 的节点称为父节点,如上图节点 B 是节点 D 和 E 的父节点
-- **子节点(Child)**:若 B 是 D 的父节点,那么 D 就是 B 的子节点
-- **兄弟节点(Sibling)**:具有同一父节点的各节点彼此是兄弟节点,比如上图的 B 和 C,D 和 E 互为兄弟节点
-- **路径和路径长度**:路径指的是一个节点到另一节点的通道,路径所包含边的个数称为路径长度,比如 A->H 的路径长度为 3
-- **节点的层次(Level)**:规定**根节点在 1 层**,其他任一节点的层数是其父节点的**层数加 1**。如 B 和 C 节点的层次为 2
-- **树的深度(Depth)**:树种所有节点中的**最大层次**是这棵树的深度,如上图树的深度为 4
-
-### 2.2 数结构的表示方式
-
-#### 2.2.1 常见的表示方法
-
-
-
-
-
-如图,树结构的组成方式类**似于链表**,都是由一个个节点连接构成。
-
-不过,根据每个父节点子节点数量的不同,每一个父节点需要的引用数量也不同。
-
-比如:节点 A 需要 3 个引用,分别指向子节点 B,C,D;而 B 节点需要 2 个引用,分别指向子节点 E 和 F;K 节点由于没有子节点,所以不需要引用。
-
-这种方法**缺点**在于我们**无法确定某一结点的引用数**
-
-#### 2.2.2 **儿子-兄弟表示法**
-
-
-
-
-
-这种表示方法可以完整地记录每个节点的数据,比如
-
-```js
-//节点A
-Node{
- //存储数据
- this.data = data
- //统一只记录左边的子节点
- this.leftChild = B
- //统一只记录右边的第一个兄弟节点
- this.rightSibling = null
-}
-
-//节点B
-Node{
- this.data = data
- this.leftChild = E
- this.rightSibling = C
-}
-
-//节点F
-Node{
- this.data = data
- this.leftChild = null
- this.rightSibling = null
-}
-```
-
-这种表示法的优点在于每一个节点中引用的数量都是确定的
-
-#### 2.2.3 将儿子-兄弟表示法 选择
-
-将儿子-兄弟表示法旋转后会打开一个新世界,让我们一步一步揭开新世界的大门,下面是儿子-兄弟表示法**尚未旋转**的结构
-
-
-
-
-
-将其顺时针旋转 45° 之后:
-
-
-
-这样就成为了一棵**二叉树**,由此我们可以得出结论:**任何树都可以通过二叉树进行模拟**。
-
-问:但是这样父节点不是变了吗?
-
-其实,父节点的设置只是为了方便指向子节点,在代码实现中谁是父节点并没有关系,只要能正确找到对应节点即可
-
-## 三、二叉树的介绍
-
-#### 3.1 什么是二叉树?
-
-
-
-
-
-正如上图所示:如果树中的每一个节点最多只能由**两个子节点**,这样的树就称为**二叉树**
-
-二叉树**十分重要**,不仅仅是因为简单,更是因为几乎所有的树都可以表示成二叉树形式。
-
-#### 3.2 二叉树的组成:
-
-- 二叉树可以为空,也就是可以没有节点;
-- 若二叉树不为空,则它由根节点和称为其**左子树 TL**和**右子树 TR**的两个不相交的二叉树组成;
-
-#### 3.3 二叉树的五种形态
-
-
-
-
-
-上图分别表示:**空的二叉树**、只有**一个节点的二叉树**、只有**左子树 TL**的二叉树、只有**右子树 TR**的二叉树、有左右**两个子树的二叉树**
-
-#### 3.4 二叉树的特性
-
-- 一个二叉树的**第 i 层的最多有 2 ^ (i-1)个节点,i >= 1**
-- 一个**深度为 k 的二叉树的最多有(2 ^ k) - 1 个节点,k >= 1**
-- 对任何非空二叉树,若 n0 表示叶子节点的个数,n2 表示度为 2 的非叶子节点个数,那么两者满足关系:n0 = n2 + 1;
- - 如下图所示:H,E,I,J,G 为叶子节点,总数为 5;
- - A,B,C,F 为度为 2 的非叶子节点,总数为 4;
- - 满足 n0 = n2 + 1 的规律
-
-
-
-
-
-#### 3.5 特殊的二叉树
-
-##### 3.5.1 完美二叉树 |满二叉树
-
-完美二叉树(Perfect Binary Tree)也成为满二叉树(Full Binary Tree),在二叉树中,除了最下一层的叶子节点外,每层节点都有 2 个子节点,这就构成了完美二叉树
-
-
-
-
-
-##### 3.5.2 完全二叉树
-
-- 除了**二叉树最后一层外**,其他各层的节点数都达到了**最大值**
-- 并且,最后一层的叶子节点**从左向右是连续存在**,**只缺失右侧若干叶子节点**
-- **完美二叉树是特殊的完全二叉树**
-
-
-
-
-
-在上图中,由于**H 缺失了右子节点**,所以它**不是**完全二叉树,若 H 存在右子节点,那么上图就是一颗完全二叉树
-
-#### 3.6 二叉树的数据存储
-
-常见的二叉树存储方式为**数组和链表**:
-
-##### 3.6.1 使用数组存储数据
-
-**完全二叉树**:按从上到下,从左到右的方式存储数据
-
-
-
-
-
-| 节点 | A | B | C | D | E | F | G | H |
-| :------: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
-| **序号** | **1** | **2** | **3** | **4** | **5** | **6** | **7** | **8** |
-
-使用数组存储时,取数据的时候也十分方便:
-
-- **左子节点的序号等于父节点序号 \* 2**,**右子节点的序号等于父节点序号 \* 2 + 1**
-
-- 例如:H 节点的数据是 D 节点数据 * 2 ,也就是 4*2= 8,I 节点的数据是 D 节点数据 * 2 + 1,也就是 4*2+1 = 9
-
-**非完全二叉树**:非完全二叉树需要转换成完全二叉树才能按照上面的方案存储,这样会**浪费**很大的**存储空间**
-
-
-
-
-
-| 节点 | A | B | C | ^ | ^ | F | ^ | ^ | ^ | ^ | ^ | ^ | M |
-| :------: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :----: | :----: | :----: | :----: |
-| **序号** | **1** | **2** | **3** | **4** | **5** | **6** | **7** | **8** | **9** | **10** | **11** | **12** | **13** |
-
-所以,对于非完全二叉树,一般都是使用**链表**进行数据存储
-
-##### 3.6.2 使用链表存储数据
-
-每一个节点封装成一个 Node,Node 中包含存储的数据、左节点的引用和右节点的引用
-
-
-
-
diff --git a/docs/data-structure/09_binary_search_tree.md b/docs/data-structure/09_binary_search_tree.md
deleted file mode 100644
index 1e834db..0000000
--- a/docs/data-structure/09_binary_search_tree.md
+++ /dev/null
@@ -1,1308 +0,0 @@
----
-nav:
- title: 数据结构
- order: 1
-group:
- title: 常见数据结构
- order: 1
-order: 9
----
-
-# 二叉搜索树(BinarySearchTree)
-
-## 一、对二叉搜索树的介绍
-
-> 二叉搜索树(BST,Binary Search Tree),也称为二叉排序树和二叉查找树
-
-### 1. 二叉搜索树的特性
-
-- 非空左子树的所有键值小于其根节点的键值。比如:下图三,中节点 6 的所有非空左子树的键值都小于 6
-- 非空右子树的所有键值大于其根节点的键值;比如:下图三,中节点 6 的所有非空右子树的键值都大于 6;
-- 左、右子树本身也都是二叉搜索树
-
-
-
-
-
-图二和图三符合二叉搜索树的特效,所以属于二叉树
-
-图一中的节点 5 要比节点 7 大,不符合二叉搜索树的特性, 所以不是二叉树
-
-**总结**:二叉搜索树的特点主要是**较小的值总是保存在左节点上**,相对**较大的值总是保存在右节点**上。这种特点使得二叉搜索树的**查询效率非常高**,这也就是二叉搜索树中“搜索”的来源。
-
-### 2. 二叉搜索树应用举例
-
-
-
-
-
-上面是一个二叉搜索树,我们若想在其中找到数据 10,只需要查找 4 次,查找效率非常高有木有!
-
-查找步骤图解:
-
-
-
-
-
-- 第 1 次:将 10 与根节点 9 进行比较,由于 10 > 9,所以 10 下一步与根节点 9 的右子节点 13 比较;
-- 第 2 次:由于 10 < 13,所以 10 下一步与父节点 13 的左子节点 11 比较;
-- 第 3 次:由于 10 < 11,所以 10 下一步与父节点 11 的左子节点 10 比较;
-- 第 4 次:由于 10 = 10,最终查找到数据 10
-- 总结:有没有觉得很像**二分查找**
-
-下面看一下数组这种数据结构 的查找效率:
-
-
-
-
-
-同样是 15 个数据,在排序好的数组中查询数据 10,需要查询 10 次
-
-其实:如果是排序好的数组,可以通过二分查找:第一次找 9,第二次找 13,第三次找 15...。我们发现如果把**每次二分的数据拿出来以树的形式表示的话就是二叉搜索树**。这就是数组二分法查找效率之所以高的原因
-
-### 3. 二叉搜索树的基本属性
-
-
-
-
-
-二叉搜索树有四个最基本的属性:指向节点的**根**(root),节点中的**键**(key)、**左指针**(right)、**右指针**(right)
-
-用代码的方式体现:
-
-```js
-function BinarySearchTree() {
- // 节点类
- function Node(key) {
- this.left = null; // 左指针
- this.key = key;
- this.right = null; // 右指针
- }
-
- this.root = null; // 根节点
-}
-```
-
-## 二、对二叉搜索树的封装
-
-### 二叉搜索树的常见操作:
-
-- `insert(key)`:向树中插入一个新的键
-- `search(key)`:在树中查找一个键,如果节点存在,则返回 true;如果不存在,则返回 false
-- `midOrderTraversal`:通过中序遍历方式遍历所有节点
-- `preOrderTraversal`:通过先序遍历方式遍历所有节点
-- `postOrderTraversal`:通过后序遍历方式遍历所有节点
-- `min`:返回树中最小的值/键
-- `max`:返回树中最大的值/键
-- `remove(key)`:从树中移除某个键
-
-### 1. 实现 insert()方法
-
-```js
-BinarySearchTree.prototype.insert = function (key) {
- // 1. 创建一个节点类
- var newNode = new Node(key);
- // 2. 判断根节点是否为空
- if (this.root === null) {
- // 2.1 直接插入新的节点
- this.root = newNode;
- } else {
- // 2.2 插入节点类,实现根节点非空时的插入
- this._insertNode(this.root, newNode);
- }
-};
-```
-
-#### 1.1 \_insertNode 方法的实现
-
-思路:比较 传入的两个节点(root 和要插入的节点) 的大小,寻找新节点适合插入的位置,直到成功插入新节点为止
-
-这里先看一眼**代码实现**,然后再看图解步骤:
-
-```js
-BinarySearchTree.prototype._insertNode = function (node, newNode) {
- // 向左寻找
- if (node.key > newNode.key) {
- if (node.left === null) {
- node.left = newNode;
- } else {
- this._insertNode(node.left, newNode);
- }
- } else {
- // 向右寻找
- if (node.right === null) {
- node.right = newNode;
- } else {
- this._insertNode(node.right, newNode);
- }
- }
-};
-```
-
-根据传入两个节点的比较分为两种情况:
-
-##### 1.1.1 newNode.key < node.key 时
-
-根据二叉搜索树的特性,新节点的位置肯定在 node 节点的左子树,
-
-- 情况 1:若 node 节点的左子树是 null,那么说明 node 没有左子树,其实这个时候 newNode 已经找到合适的位置,让 newNode 插入到 node 的 left 即可
-- 情况 2:若 node 节点的左子树**有值存在**,那么需要在 node 的左子树去寻找新节点的插入位置,所以这里需要递归的查找下去并插入面,查找过程如下图所示:
-
-
-
-
-
-##### 1.1.2 newNode.key > node.key 时
-
-这时候遇到的情况,根上面刚好相反,新节点的位置肯定在 node 节点的右子树嘛,也是需要递归的找到合适的插入位置并插入即可,查找插入过程如图所示:
-
-
-
-
-
-#### 测试代码
-
-```js
-// 测试代码
-var bst = new BinarySearchTree();
-
-bst.insert(11);
-bst.insert(7);
-bst.insert(15);
-bst.insert(5);
-bst.insert(9);
-console.log('[ bst ] >', bst);
-```
-
-结构化一下测试数据应该是这样的一颗树:
-
-
-
-
-
-### 2. 对二叉搜索树的遍历
-
-这里所说的树的遍历**不仅仅针对二叉搜索树**,而是**适用于所有的二叉树**。
-
-由于树结构不是线性结构,所以遍历方式有多种选择,常见的三种二叉树遍历方式为:
-
-- 先序遍历 > ==前序位置的代码在刚刚进入一个二叉树节点的时候执行==
-- 中序遍历 > ==后序位置的代码在将要离开一个二叉树节点的时候执行==
-- 后序遍历 > ==中序位置的代码在一个二叉树节点左子树都遍历完,即将开始遍历右子树的时候执行==
-
-还有层序遍历,使用较少,理解上面高亮部分的内容,对刷 leetcode 非常有好处
-
-
-
-
-
-#### 2.1 先序遍历
-
-先序遍历的过程为:
-
-- 首先,遍历根节点
-- 然后,遍历其左子树
-- 最后,遍历其右子树
-
-示例:
-
-
-
-
-
-如上图所示,二叉树的节点遍历顺序为:A -> B -> D -> H -> I -> E -> C -> F -> G。
-
-##### 2.1.1 代码实现
-
-```js
-//1.先序遍历 ==> 根 -> 左 -> 右
-BinarySearchTree.prototype.preOrderTraversal = function (handler) {
- this._preOrderTraversalNode(this.root, handler);
-};
-
-BinarySearchTree.prototype._preOrderTraversalNode = function (node, handler) {
- if (node !== null) {
- // 1.处理经过的节点
- handler(node.key);
- // 2.处理左节点
- this._preOrderTraversalNode(node.left, handler);
- // 3.处理右节点
- this._preOrderTraversalNode(node.right, handler);
- }
-};
-```
-
-##### 2.1.2 过程详解
-
-以遍历以下二叉搜索树为例:
-
-
-
-
-
-首先调用 preOrderTraversal 方法,在方法里再调用 preOrderTraversalNode 方法用于遍历二叉搜索树。在 preOrderTraversalNode 方法中,递归 1 负责遍历左子节点,递归 2 负责遍历右子节点。先执行递归 1,执行过程如下图所示:
-
-> 这里用:preOrderTraversalNode() 表示为 A(),方便图解
-
-
-
-
-
-可以看到一共递归调用了 4 次方法 A,分别传入 11、7、5、3,最后遇到 null 不满足 node != null 条件结束递归 1。
-
-注意此时只是执行完最开始的递归 1,并没有执行递归 2,并且递归 1 执行到 null 停止后要一层层地往上返回,按顺序将调用的函数压出函数调用栈。
-
-关于函数调用栈:之前的四次递归共把 4 个函数压入了函数调用栈,现在递归执行完了一层层地把函数压出栈。
-
-值得注意的是:每一层函数都只是执行完了递归 1,当返回到该层函数时,比如 A(3)要继续执行递归 2 遍历二叉搜索树中的右子节点。
-
-在执行递归 2 的过程中会不断调用方法 A,并依次执行递归 1 和递归 2,以此类推直到遇到 null 不满足 node != null 条件为止,才停止递归并一层层返回,如此循环。同理 A(5)层、A(7)层、A(11)层都要经历上述循环,直到将二叉搜索树中的节点全部遍历完为止。
-
-具体过程如下图所示:
-
-
-
-
-
-##### 2.1.3 测试代码
-
-```js
-// 测试代码
-var bst = new BinarySearchTree();
-
-bst.insert(11);
-bst.insert(7);
-bst.insert(15);
-bst.insert(5);
-bst.insert(3);
-bst.insert(9);
-bst.insert(8);
-bst.insert(10);
-bst.insert(13);
-bst.insert(12);
-bst.insert(14);
-bst.insert(20);
-bst.insert(18);
-bst.insert(25);
-bst.insert(6);
-
-var resString = ' ';
-bst.preOrderTraversal(function (key) {
- resString += key + ' ';
-});
-console.log(resString); // ? 11 7 5 3 6 9 8 10 15 13 12 14 20 18 25
-```
-
-#### 2.2 中序遍历
-
-实现思路:与先序遍历原理相同,只不过是遍历的顺序不一样了。
-
-- 首先,遍历其左子树
-- 然后,遍历根(父)节点
-- 最后,遍历其右子树
-
-##### 2.2.1 代码实现
-
-```js
-// 2.中序遍历 ==> 左 -> 根 -> 右
-BinarySearchTree.prototype.midOrderTraversal = function (handler) {
- this._midOrderTraversalNode(this.root, handler);
-};
-
-BinarySearchTree.prototype._midOrderTraversalNode = function (node, handler) {
- if (node !== null) {
- // 1.处理左节点
- this._midOrderTraversalNode(node.left, handler);
- // 2.处理经过的节点
- handler(node.key);
- // 3.处理右节点
- this._midOrderTraversalNode(node.right, handler);
- }
-};
-```
-
-##### 2.2.2 过程详解
-
-遍历的顺序应如下图所示:
-
-
-
-
-
-首先调用 midOrderTraversal 方法,在方法里再调用 midOrderTraversalNode 方法用于遍历二叉搜索树。
-
-先使用递归 1 遍历左子树中的节点;然后,处理父节点;最后,遍历右子树中的节点。
-
-##### 2.2.3 测试代码
-
-```js
-// 插入顺序和先序遍历的插入一样,这里就省略了,也可以看上图,验证中序遍历的结果
-var resString = ' ';
-bst.midOrderTraversal(function (key) {
- resString += key + ' ';
-});
-console.log(resString); // ? 3 5 6 7 8 9 10 11 12 13 14 15 18 20 25
-```
-
-#### 2.3 后序遍历
-
-实现思路:与先序遍历原理相同,只不过是遍历的顺序不一样了。
-
-- 首先,遍历其左子树
-- 然后,遍历其右子树
-- 最后,遍历根(父)节点
-
-##### 2.3.1 代码实现
-
-```js
-// 3.后序遍历 ==> 左 -> 右 -> 根
-BinarySearchTree.prototype.postOrderTraversal = function (handler) {
- this._postOrderTraversalNode(this.root, handler);
-};
-
-BinarySearchTree.prototype._postOrderTraversalNode = function (node, handler) {
- if (node !== null) {
- // 1.处理左节点
- this._postOrderTraversalNode(node.left, handler);
- // 2.处理右节点
- this._postOrderTraversalNode(node.right, handler);
- // 3.处理经过的节点
- handler(node.key);
- }
-};
-```
-
-##### 2.3.2 过程详解
-
-遍历的顺序应如下图所示:
-
-
-
-
-
-首先调用 postOrderTraversal 方法,在方法里再调用 postOrderTraversalNode 方法用于遍历二叉搜索树。
-
-先使用递归 1 遍历左子树中的节点;然后,遍历右子树中的节点;最后,处理父节点。
-
-##### 2.3.3 测试代码
-
-```js
-var resString = ' ';
-bst.postOrderTraversal(function (key) {
- resString += key + ' ';
-});
-console.log(resString); // ? 3 6 5 8 10 9 7 12 14 13 18 25 20 15 11
-```
-
-### 3. 对二叉搜索树的搜索
-
-#### 3.1 搜索最大值&最小值
-
-在二叉搜索树中查找最值非常简单,最小值在二叉搜索树的最左边,最大值在二叉搜索树的最右边。只需要一直向左/右查找就能得到最值,如下图所示:
-
-
-
-
-
-##### 代码实现
-
-```js
-BinarySearchTree.prototype.min = function () {
- var node = this.root;
- while (node.left !== null) {
- node = node.left;
- }
- return node.key;
-};
-
-BinarySearchTree.prototype.max = function () {
- var node = this.root;
- while (node.right !== null) {
- node = node.right;
- }
- return node.key;
-};
-```
-
-#### 3.2 实现 search()
-
-search 方法可以返回某个值是否在二叉树中,若存在返回 true,不存在返回 false
-
-查找二叉搜索树当中的特定值效率也非常高。只需要从根节点开始将需要查找节点的 key 值与之比较,若**node.key < root**则向左查找,若**node.key > root**就向右查找,直到找到或查找到 null 为止。这里可以使用递归实现,也可以采用循环来实现
-
-##### 3.2.1 代码实现
-
-```js
-BinarySearchTree.prototype.search = function (key) {
- return this._searchNode(this.root, key);
-};
-BinarySearchTree.prototype._searchNode = function (node, key) {
- // 这里使用while循环
- var node = this.root;
- while (node !== null) {
- if (key < node.key) {
- node = node.left;
- } else if (key > node.key) {
- node = node.right;
- } else {
- return true;
- }
- }
- return false;
-
- // 递归调用,占用空间,
- // if (node === null) return false;
- // if (node.key < key) {
- // // 查找右边的树
- // this._searchNode(node.right, key);
- // } else if (node.key > key) {
- // //查找左边的树
- // this._searchNode(node.left, key);
- // } else {
- // // 相等情况,说明找到
- // return true;
- // }
-};
-```
-
-##### 3.2.2 测试代码
-
-```js
-// 测试代码
-var bst = new BinarySearchTree();
-
-bst.insert(11);
-bst.insert(7);
-bst.insert(15);
-bst.insert(5);
-bst.insert(3);
-bst.insert(9);
-bst.insert(8);
-bst.insert(10);
-bst.insert(13);
-bst.insert(12);
-bst.insert(14);
-bst.insert(20);
-bst.insert(18);
-bst.insert(25);
-bst.insert(6);
-
-bst.search(3); // ? true
-bst.search(26124); // ? false
-```
-
-### 4. 实现 remove()方法
-
-> 删除方法要考虑的情况比较多,是一个难点
-
-删除思路:
-
-- 先寻找要删除的节点
- - 若没有找到要删除的节点,说明节点不存在,直接返回 return false 即可
- - 若找到要删除的节点,我们需要先记录下**节点(current)**,以及**删除节点的父节点(parent)**,删除节点是**父节点的左子树还是父节点的右子树(isLeftChild)**
- - 若找到删除的节点,我们需要考虑以下 3 种情况
- - 要删除的是**叶子**节点
- - 要删除的节点,只有**一个子节点**
- - 要删除的节点,有**两个子节点**
-
-#### 4.1 寻找要删除的节点
-
-```js
-BinarySearchTree.prototype.remove = function (key) {
- var current = this.root; // current保存要删除的节点
- var parent = null; // 保存要删除节点的父节点
- var isLeftChild = false; // 用于判断要删除的节点是父节点的左节点还是右节点
-
- // 寻找要删除的节点
- while (current.key != key) {
- parent = current;
- if (key < current.key) {
- isLeftChild = true;
- current = current.left;
- } else {
- isLeftChild = false;
- current = current.right;
- }
- // 若没有找到,说明不需要删除,返回false
- if (current === null) return false;
- }
-};
-```
-
-#### 4.2 找到了要删除的节点
-
-当我们通过上面的代码找到了删除的节点,我们需要对以下 3 种情况进行展开
-
-- 4.2.1 要删除的是**叶子**节点
-- 4.2.2 要删除的节点,只有**一个子节点**
-- 4.2.3 要删除的节点,有**两个子节点**
-
-##### 4.2.1 要删除的是叶子节点
-
-```js
-// 找到了对应的节点,进行情况分析
-// 1.删除的是叶子结点
-if (current.left === null && current.right === null) {
- // 1.1 删除的是根节点
- if (current === this.root) {
- this.root = null;
- } else if (isLeftChild) {
- parent.left = null;
- } else {
- parent.right = null;
- }
-}
-```
-
-###### 情况分析:
-
-当该叶子节点为根节点时,如下图所示,此时**current == this.root**,直接通过:**this.root = null**,删除根节点。
-
-
-
-
-
-当该叶子节点不为根节点时也有两种情况,如下图所示:
-
-
-
-
-
-若 current = 8,可以通过:`parent.left = null`,删除节点 8
-
-若 current = 10,可以通过:`parent.right = null`,删除节点 10
-
-##### 4.2.2 要删除的节点只有一个子节点
-
-```js
-// 此处是要删除的是叶子节点代码...
-
-// 2.删除的节点只有一个子节点
-else if (current.left === null) {
- // 2.1 要删除的是右节点,下面按照一个节点的情况删除即可
- if (current === this.root) {
- this.root = current.right;
- } else if (isLeftChild) {
- parent.left = current.right;
- } else {
- parent.right = current.right;
- }
-} else if (current.right === null) {
- // 2.2 要删除的是左节点
- if (current === this.root) {
- this.root = current.left;
- } else if (isLeftChild) {
- parent.left = current.left;
- } else {
- parent.right = current.left;
- }
-}
-```
-
-###### 情况分析:
-
-当 current 存在左子节点时`current.right === null`:
-
-- 情况 1:current 为根节点`current === this.root`,如节点 11,此时通过:`this.root = current.left`,删除根节点 11
-- 情况 2:current 为父节点 parent 的左子节点`isLeftChild === true`,如节点 5,此时通过:`parent.left = current.left`,删除节点 5
-- 情况 3:current 为父节点 parent 的右子节点`isLeftChild == false`,如节点 9,此时通过:`parent.right = current.left`,删除节点 9
-
-
-
-
-
-当 current 存在右子节点时`current.left === null`:
-
-- 情况 4:current 为根节点`current === this.root`,如节点 11,此时通过:`this.root = current.right`,删除根节点 11
-- 情况 5:current 为父节点 parent 的左子节点`isLeftChild === true`,如节点 5,此时通过:`parent.left = current.right`,删除节点 5
-- 情况 6:current 为父节点 parent 的右子节点`isLeftChild == false`,如节点 9,此时通过:`parent.right = current.right`,删除节点 9
-
-
-
-
-
-##### 4.2.3 要删除的节点,有**两个子节点**
-
-> 这种情况比较**棘手**,让我们先来观察一下,这种情况下有没有什么规律可循
-
-
-
-
-
-**删除节点 9**
-
-在保证删除节点 9 后原二叉树仍为二叉搜索树的前提下,有两种方式:
-
-- 方式 1:从节点 9 的左子树中选择一合适的节点替代节点 9,可知节点 8 符合要求
-- 方式 2:从节点 9 的右子树中选择一合适的节点替代节点 9,可知节点 10 符合要求
-
-
-
-
-
-**删除节点 7**
-
-在保证删除节点 7 后原二叉树仍为二叉搜索树的前提下,也有两种方式:
-
-- 方式 1:从节点 7 的左子树中选择一合适的节点替代节点 7,可知节点 5 符合要求
-- 方式 2:从节点 7 的右子树中选择一合适的节点替代节点 7,可知节点 8 符合要求
-
-
-
-
-
-**删除节点 15**
-
-在保证删除节点 15 后原树二叉树仍为二叉搜索树的前提下,同样有两种方式:
-
-- 方式 1:从节点 15 的左子树中选择一合适的节点替代节点 15,可知节点 14 符合要求
-- 方式 2:从节点 15 的右子树中选择一合适的节点替代节点 15,可知节点 18 符合要求
-
-
-
-
-
-相信你已经发现其中的规律了!
-
-**规律总结:**如果要删除的节点有两个子节点,甚至子节点还有子节点,这种情况下需要从要删除节点**下面的子节点中找到一个合适的节点**,来替换当前的节点。
-
-若用 current 表示需要删除的节点,则合适的节点指的是
-
-- current 左子树中比 current**小一点点的节点**,即 current**左子树**中的**最大值**
-- current 右子树中比 current**大一点点的节点**,即 current**右子树**中的**最小值**
-
-**前驱&后继**
-
-在二叉搜索树中,这两个特殊的节点有特殊的名字:
-
-- 比 current 小一点点的节点,称为 current 节点的**前驱**。比如下图中的节点 5 就是节点 7 的前驱;
-- 比 current 大一点点的节点,称为 current 节点的**后继**。比如下图中的节点 8 就是节点 7 的后继;
-
-
-
-
-
-**代码实现:**
-
-- 查找需要被删除的节点 current 的后继时,需要在 current 的**右子树**中查找**最小值**,即在 current 的**右子树**中一直**向左遍历**查找;
-- 查找前驱时,则需要在 current 的**左子树**中查找**最大值**,即在 current 的**左子树**中一直**向右遍历**查找。
-
-下面只讨论查找 current 后继的情况,查找前驱的原理相同,这里暂不讨论。
-
-```js
-// 获取后继的节点,即从要删除的节点的右边开始查找最小的值
-BinarySearchTree.prototype.getSuccessor = function (delNode) {
- var successor = delNode; // 保存后继
- var current = delNode.right; // 保存删除节点的右子树
- var successorParent = delNode; // 保存后继节点的父节点
- // 循环查找 current 的右子树节点
- while (current !== null) {
- successorParent = successor; // 保存父节点
- successor = current; // 保存后继
- current = current.left;
- }
- // 判断寻找到的后续节点是否直接就是要删除节点的 right
- if (successor !== delNode.right) {
- successorParent.left = successor.right;
- successor.right = delNode.right;
- }
-
- return successor;
-};
-```
-
-###### 代码实现
-
-```js
-// 3.有两个子节点(难点)
-else {
- /**
- * 规律:如果要删除的节点有两个子节点,甚至子节点还有子节点,
- * 这种情况下需要从要删除节点下面的子节点中找到一个合适的节点,来替换当前的节点
- * 若用 current 表示需要删除的节点,则合适的节点指的是:
- * - current 左子树中比 current 小一点点的节点,即 current 左子树中的最大值
- * - current 右子树中比 current 大一点点的节点,即 current 右子树中的最小值
- */
- // 找到后继节点
- var successor = this.getSuccessor(current);
- // 判断是否为根节点
- if (this.root === successor) {
- this.root = successor; // 使用后继替换根节点
- } else if (isLeftChild) {
- parent.left = successor; // 使用后继替换掉 要删除节点的位置
- } else {
- parent.right = successor; // 使用后继替换掉 要删除节点的位置
- }
-
- successor.left = current.left; // 将后继节点的左子树,与要删除节点的左子树相连
-}
-// 删除成功
-return true;
-};
-```
-
-##### 4.2.4 完整的 remove 代码
-
-```js
-BinarySearchTree.prototype.remove = function (key) {
- var current = this.root; // current保存要删除的节点
- var parent = null; // 保存要删除节点的父节点
- var isLeftChild = false; // 用于判断要删除的节点是父节点的左节点还是右节点
-
- // 寻找要删除的节点
- while (current.key != key) {
- parent = current;
- if (key < current.key) {
- isLeftChild = true;
- current = current.left;
- } else {
- isLeftChild = false;
- current = current.right;
- }
- // 若没有找到,说明不需要删除,返回false
- if (current === null) return false;
- }
-
- // 找到了对应的节点,进行情况分析
- // 1.删除的是叶子结点
- if (current.left === null && current.right === null) {
- // 1.1 删除的是根节点
- if (current === this.root) {
- this.root = null;
- } else if (isLeftChild) {
- parent.left = null;
- } else {
- parent.right = null;
- }
- }
-
- // 2.删除的节点只有一个子节点
- else if (current.left === null) {
- if (current === this.root) {
- this.root = current.right;
- } else if (isLeftChild) {
- parent.left = current.right;
- } else {
- parent.right = current.right;
- }
- } else if (current.right === null) {
- if (current === this.root) {
- this.root = current.left;
- } else if (isLeftChild) {
- parent.left = current.left;
- } else {
- parent.right = current.left;
- }
- }
- // 3.有两个子节点(难点)
- else {
- /**
- * 规律:如果要删除的节点有两个子节点,甚至子节点还有子节点,
- * 这种情况下需要从要删除节点下面的子节点中找到一个合适的节点,来替换当前的节点
- * 若用 current 表示需要删除的节点,则合适的节点指的是:
- * - current 左子树中比 current 小一点点的节点,即 current 左子树中的最大值
- * - current 右子树中比 current 大一点点的节点,即 current 右子树中的最小值
- */
- var successor = this.getSuccessor(current);
- if (this.root === successor) {
- this.root = successor;
- } else if (isLeftChild) {
- parent.left = successor;
- } else {
- parent.right = successor;
- }
-
- successor.left = current.left;
- }
-
- return true;
-};
-
-// 获取后继的节点,即从要删除的节点的右边开始查找最小的值
-BinarySearchTree.prototype.getSuccessor = function (delNode) {
- var successor = delNode;
- var current = delNode.right;
- var successorParent = delNode;
-
- while (current !== null) {
- successorParent = successor;
- successor = current;
- current = current.left;
- }
-
- if (successor !== delNode.right) {
- successorParent.left = successor.right;
- successor.right = delNode.right;
- }
-
- return successor;
-};
-```
-
-#### 5. 完整的二叉搜索树代码
-
-```js
-function BinarySearchTree() {
- function Node(key) {
- this.left = null;
- this.key = key;
- this.right = null;
- }
-
- this.root = null;
-
- BinarySearchTree.prototype.insert = function (key) {
- // 1. 创建一个节点类
- var newNode = new Node(key);
- // 2. 判断根节点是否为空
- if (this.root === null) {
- // 2.1 直接插入新的节点
- this.root = newNode;
- } else {
- // 2.2 插入节点类,实现根节点非空时的插入
- this._insertNode(this.root, newNode);
- }
- };
-
- BinarySearchTree.prototype._insertNode = function (node, newNode) {
- // 向左寻找
- if (node.key > newNode.key) {
- if (node.left === null) {
- node.left = newNode;
- } else {
- this._insertNode(node.left, newNode);
- }
- } else {
- // 向右寻找
- if (node.right === null) {
- node.right = newNode;
- } else {
- this._insertNode(node.right, newNode);
- }
- }
- };
-
- //1.先序遍历 ==> 根 -> 左 -> 右
- BinarySearchTree.prototype.preOrderTraversal = function (handler) {
- this._preOrderTraversalNode(this.root, handler);
- };
-
- BinarySearchTree.prototype._preOrderTraversalNode = function (node, handler) {
- if (node !== null) {
- // 1.处理经过的节点
- handler(node.key);
- // 2.处理左节点
- this._preOrderTraversalNode(node.left, handler);
- // 3.处理右节点
- this._preOrderTraversalNode(node.right, handler);
- }
- };
-
- // 2.中序遍历 ==> 左 -> 根 -> 右
- BinarySearchTree.prototype.midOrderTraversal = function (handler) {
- this._midOrderTraversalNode(this.root, handler);
- };
-
- BinarySearchTree.prototype._midOrderTraversalNode = function (node, handler) {
- if (node !== null) {
- // 1.处理左节点
- this._midOrderTraversalNode(node.left, handler);
- // 2.处理经过的节点
- handler(node.key);
- // 3.处理右节点
- this._midOrderTraversalNode(node.right, handler);
- }
- };
-
- // 3.后序遍历 ==> 左 -> 右 -> 根
- BinarySearchTree.prototype.postOrderTraversal = function (handler) {
- this._postOrderTraversalNode(this.root, handler);
- };
-
- BinarySearchTree.prototype._postOrderTraversalNode = function (
- node,
- handler,
- ) {
- if (node !== null) {
- // 1.处理左节点
- this._postOrderTraversalNode(node.left, handler);
- // 2.处理右节点
- this._postOrderTraversalNode(node.right, handler);
- // 3.处理经过的节点
- handler(node.key);
- }
- };
-
- BinarySearchTree.prototype.min = function () {
- var node = this.root;
- while (node.left !== null) {
- node = node.left;
- }
- return node.key;
- };
-
- BinarySearchTree.prototype.max = function () {
- var node = this.root;
- while (node.right !== null) {
- node = node.right;
- }
- return node.key;
- };
-
- BinarySearchTree.prototype.search = function (key) {
- return this._searchNode(this.root, key);
- };
-
- BinarySearchTree.prototype._searchNode = function (node, key) {
- // 这里使用while循环
- var node = this.root;
- while (node !== null) {
- if (key < node.key) {
- node = node.left;
- } else if (key > node.key) {
- node = node.right;
- } else {
- return true;
- }
- }
- return false;
-
- // 递归调用,占用空间,
- // if (node === null) return false;
- // if (node.key < key) {
- // // 查找右边的树
- // this._searchNode(node.right, key);
- // } else if (node.key > key) {
- // //查找左边的树
- // this._searchNode(node.left, key);
- // } else {
- // // 相等情况,说明找到
- // return true;
- // }
- };
-
- BinarySearchTree.prototype.remove = function (key) {
- var current = this.root; // current保存要删除的节点
- var parent = null; // 保存要删除节点的父节点
- var isLeftChild = false; // 用于判断要删除的节点是父节点的左节点还是右节点
-
- // 寻找要删除的节点
- while (current.key != key) {
- parent = current;
- if (key < current.key) {
- isLeftChild = true;
- current = current.left;
- } else {
- isLeftChild = false;
- current = current.right;
- }
- // 若没有找到,说明不需要删除,返回false
- if (current === null) return false;
- }
-
- // 找到了对应的节点,进行情况分析
- // 1.删除的是叶子结点
- if (current.left === null && current.right === null) {
- // 1.1 删除的是根节点
- if (current === this.root) {
- this.root = null;
- } else if (isLeftChild) {
- parent.left = null;
- } else {
- parent.right = null;
- }
- }
-
- // 2.删除的节点只有一个子节点
- else if (current.left === null) {
- if (current === this.root) {
- this.root = current.right;
- } else if (isLeftChild) {
- parent.left = current.right;
- } else {
- parent.right = current.right;
- }
- } else if (current.right === null) {
- if (current === this.root) {
- this.root = current.left;
- } else if (isLeftChild) {
- parent.left = current.left;
- } else {
- parent.right = current.left;
- }
- }
- // 3.有两个子节点(难点)
- else {
- /**
- * 规律:如果要删除的节点有两个子节点,甚至子节点还有子节点,
- * 这种情况下需要从要删除节点下面的子节点中找到一个合适的节点,来替换当前的节点
- * 若用 current 表示需要删除的节点,则合适的节点指的是:
- * - current 左子树中比 current 小一点点的节点,即 current 左子树中的最大值
- * - current 右子树中比 current 大一点点的节点,即 current 右子树中的最小值
- */
- var successor = this.getSuccessor(current);
- if (this.root === successor) {
- this.root = successor;
- } else if (isLeftChild) {
- parent.left = successor;
- } else {
- parent.right = successor;
- }
-
- successor.left = current.left;
- }
-
- return true;
- };
-
- // 获取后继的节点,即从要删除的节点的右边开始查找最小的值
- BinarySearchTree.prototype.getSuccessor = function (delNode) {
- var successor = delNode;
- var current = delNode.right;
- var successorParent = delNode;
-
- while (current !== null) {
- successorParent = successor;
- successor = current;
- current = current.left;
- }
-
- if (successor !== delNode.right) {
- successorParent.left = successor.right;
- successor.right = delNode.right;
- }
-
- return successor;
- };
-}
-
-// 测试代码
-var bst = new BinarySearchTree();
-
-bst.insert(11);
-bst.insert(7);
-bst.insert(15);
-bst.insert(5);
-bst.insert(3);
-bst.insert(9);
-bst.insert(8);
-bst.insert(10);
-bst.insert(13);
-bst.insert(12);
-bst.insert(14);
-bst.insert(20);
-bst.insert(18);
-bst.insert(25);
-bst.insert(6);
-
-// var resString = " ";
-// bst.preOrderTraversal(function (key) {
-// resString += key + " ";
-// });
-// console.log(resString); // ? 11 7 5 3 6 9 8 10 15 13 12 14 20 18 25
-
-// var resString = " ";
-// bst.midOrderTraversal(function (key) {
-// resString += key + " ";
-// });
-// console.log(resString); // ? 3 5 6 7 8 9 10 11 12 13 14 15 18 20 25
-
-// var resString = " ";
-// bst.postOrderTraversal(function (key) {
-// resString += key + " ";
-// });
-// console.log(resString); // ? 3 6 5 8 10 9 7 12 14 13 18 25 20 15 11
-// console.log(bst.max()); // ? 25
-// console.log(bst.min()); // ? 3
-
-// console.log(bst.remove(8));
-// console.log(bst.remove(7));
-// console.log(bst.remove(78));
-
-// var resString = " ";
-// bst.midOrderTraversal(function (key) {
-// resString += key + " ";
-// });
-// console.log(resString); // ?
-```
-
-## 三、平衡树
-
-二叉搜索树的缺陷:当插入的数据是有序的数据,就会造成二叉搜索树的深度过大。
-
-比如原二叉搜索树由 11 7 15 组成,如下图所示:
-
-
-
-
-
-当插入一组有序数据:6 5 4 3 2 就会变成深度过大的搜索二叉树,会严重影响二叉搜索树的性能。
-
-
-
-
-
-### **非平衡树**
-
-- 比较好的二叉搜索树,它的数据应该是**左右均匀分布**的
-- 但是插入**连续数据**后,二叉搜索树中的数据分布就变得**不均匀**了,我们称这种树为**非平衡树**
-- 对于一棵**平衡二叉树**来说,插入/查找等操作的效率是**O(logN)**
-- 而对于一棵**非平衡二叉树**来说,相当于编写了一个链表,查找效率变成了**O(N)**
-
-### **树的平衡性**
-
-为了能以**较快的时间 O(logN)**来操作一棵树,我们需要**保证树总是平衡**的
-
-- 起码大部分是平衡的,此时的时间复杂度也是接近 O(logN)的;
-- 这就要求树中**每个节点左边的子孙节点**的个数,应该尽可能地等于**右边的子孙节点**的个数
-
-### **常见的平衡树**
-
-- **AVL 树**:是最早的一种平衡树,它通过在每个节点多存储一个额外的数据来保持树的平衡。由于 AVL 树是平衡树,所以它的时间复杂度也是 O(logN)。但是它的整体效率不如红黑树,开发中比较少用。
-- **红黑树**:同样通过**一些特性**来保持树的平衡,时间复杂度也是 O(logN)。进行插入/删除等操作时,性能优于 AVL 树,所以平衡树的应用基本都是红黑树。
-
-## 四、关于深度优先和广度优先遍历
-
-实际开发中,我们直接操作二叉树的情况比较少,但是操作下面这种 tree 机构的情况比较多,而我们对于这种树,最常见的遍历方式就是深度优先遍历(DFS)和广度优先遍历(BFS),所以在这里我简单拓展一下这两种遍历方式
-
-```js
-const tree = {
- val: 'a',
- children: [
- {
- val: 'b',
- children: [
- {
- val: 'd',
- children: [],
- },
- {
- val: 'e',
- children: [],
- },
- ],
- },
- {
- val: 'c',
- children: [
- {
- val: 'f',
- children: [],
- },
- {
- val: 'g',
- children: [],
- },
- ],
- },
- ],
-};
-```
-
-### 1. 深度优先遍历(dfs)
-
-> 这个算法会尽可能深的搜索树的分支。当节点 v 的所在边都己被探寻过,搜索将回溯到发现节点 v 的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止
-
-```js
-/**
- * @param {*} root 根结点
- * 思路
- * 访问根节点
- * 对根节点的子节点诶个进行深度优先遍历 ==> 递归
- */
-const dfs = (root) => {
- console.log(root.val);
- root.children.forEach(dfs);
-};
-dfs(tree); // a,b,d,e,c,f,g
-```
-
-### 2. 广度优先遍历(bfs)
-
-> 又译作**宽度优先搜索**,或**横向优先搜索**,是一种[图形搜索算法](https://zh.wikipedia.org/wiki/搜索算法)。简单的说,BFS 是从[根节点]()开始,沿着树的宽度遍历树的[节点](https://zh.wikipedia.org/wiki/节点)。如果所有节点均被访问,则算法中止
-
-```js
-/**
- * @param {*} root 根节点
- * 思路:
- * 1.先将根节点放入队列中
- * 2.队头出队,并访问
- * 3.将出队的子节点加入队列
- * 4.重复23步,直到队列为空
- */
-const bfs = (root) => {
- let queue = [root];
- while (queue.length > 0) {
- const node = queue.shift();
- console.log(node.val);
- node.children.forEach((child) => {
- queue.push(child);
- });
- }
-};
-bfs(tree); // a,b,c,d,e,f,g
-```
-
-## 五、用迭代的方法实现树的三种遍历方式
-
-我们这里只讨论先序遍历方式如果使用迭代的方法实现,因为先、中、后序遍历只是顺序上的不一样,当我们理解先序遍历的迭代写法之后,可以举一反三,写出另外两种
-
-虽然递归的写法简单易懂,但是如果树的层级过深,很容易出现栈溢出的情况,通常情况下,递归都是可以用迭代的方式实现的,我们这里来考虑一下如何实现 🤔
-
-这里回顾一下先序遍历的访问顺序
-
-- 先访问当前节点
-- 再遍历左节点
-- 再遍历右节点
-
-我们知道访问顺序之后,可以使用**栈结构**来模仿**函数递归时整个调用流程**
-
-实现步骤:
-
-- 声明一个栈内存(这里用数组表示)
-- 将根节点放入栈中
-- 在栈内元素不为空的情况下,重复以下步骤
- - 取出栈顶元素(第一次取的时候,是根节点)
- - 访问取到的元素
- - 若取到的元素有右节点,将右节点入栈
- - 因为先序遍历访问顺序是根==> 左 ==> 右
- - 而栈的特性是先入后出的,所以这里先将右节点入栈,后将左节点入栈,节点出栈时的访问顺序就与先序遍历保存一致了
- - 若取到的元素有左节点,将左节点入栈
-
-### 代码实现
-
-```js
-//1.先序遍历 ==> 根 -> 左 -> 右
-BinarySearchTree.prototype.preOrderTraversal = function (handler) {
- // 迭代写法
- let stack = []; // 栈
- stack.push(this.root); // 先将root入栈
-
- while (stack.length !== 0) {
- let node = stack.pop(); // 1.节点出栈
- handler(node.key); // 2.处理节点 这里做打印即可
- // 3. 因为先序遍历是先打印左节点的值,根据栈先入后出的特性
- // 所以这里需要先让右节点入栈
- if (node.right !== null) {
- stack.push(node.right);
- }
- // 4.左节点入栈
- if (node.left !== null) {
- stack.push(node.left);
- }
- }
-
- // this._preOrderTraversalNode(this.root, handler); // 递归写法
-};
-```
-
-##### 测试代码
-
-```js
-var resString = ' ';
-bst.preOrderTraversal(function (key) {
- resString += key + ' ';
-});
-console.log(resString); // ? 11 7 5 3 6 9 8 10 15 13 12 14 20 18 25
-// 与递归写法输出顺序保持一致
-```
diff --git a/docs/data-structure/10-red_black_tree.md b/docs/data-structure/10-red_black_tree.md
deleted file mode 100644
index f81601b..0000000
--- a/docs/data-structure/10-red_black_tree.md
+++ /dev/null
@@ -1,371 +0,0 @@
----
-nav:
- title: 数据结构
- order: 1
-group:
- title: 常见数据结构
- order: 1
-order: 10
----
-
-# 红黑树(RedBlackTree)
-
-## 一、红黑树的介绍
-
-> **红黑树**(Red–black tree)是一种[自平衡二叉查找树](https://zh.wikipedia.org/wiki/自平衡二叉查找树),是在[计算机科学](https://zh.wikipedia.org/wiki/计算机科学)中用到的一种[数据结构](https://zh.wikipedia.org/wiki/数据结构),典型用途是实现[关联数组](https://zh.wikipedia.org/wiki/关联数组)。它在 1972 年由[鲁道夫·贝尔](https://zh.wikipedia.org/wiki/鲁道夫·贝尔)发明,被称为"**对称二叉 B 树**",它现代的名字源于 Leo J. Guibas 和[罗伯特·塞奇威克](https://zh.wikipedia.org/wiki/罗伯特·塞奇威克)于[1978 年](https://zh.wikipedia.org/wiki/1978年)写的一篇论文。
->
-> 红黑树的结构复杂,但它的操作有着良好的最坏情况[运行时间](https://zh.wikipedia.org/wiki/算法分析),并且在实践中高效:它可以在时间内完成查找、插入和删除,这里的是树中元素的数目
->
-> ----来自维基百科
-
-## 二、红黑树的五条规则
-
-红黑树除了符合二叉搜索树的基本规则外,还添加了以下特性:
-
-- **规则 1:节点是红色或黑色的**
-- **规则 2:根节点是黑色的**
-- **规则 3:每个叶子节点都是黑色的空节点(NIL 节点)**
-- **规则 4:每个红色节点的两个子节点都是黑色的(从每个叶子到根的所有路径上不可能有两个连续的红色节点)**
-- **规则 5:从任一节点到其每个叶子节点的所有路径都包含相同数目的黑色节点**
-
-
-
-
-
-### 红黑树的相对平衡
-
-前面 5 条规则的约束确保了以下红黑树的关键特性:
-
-- 从**根到叶子节点**的**最长路径**,不会超过**最短路径**的**两倍**
-- 结果就是这棵树**基本**是平衡的
-- 虽然没有做到绝对的平衡,但是可以保证在最坏的情况下,该树依然是高效的
-
-为什么可以做到**最长路径不超过最短路径的两倍**呢?
-
-- **性质 4**决定了路径上不能有两个相连的红色节点
-- 所以,最长路径一定是红色节点和黑色节点交替而成的
-- 由于根节点和叶子节点都是黑色的,最短路径可能都是黑色节点,并且最长路径中一定是黑色节点多于红色节点
-- **性质 5**决定了所有路径上都有相同数目的黑色节点
-- 这就表明了没有路径能多于其他任何路径两倍长
-
-## 三、红黑树的三种变化
-
-插入一个新节点时,有可能树不再平衡,可以通过三种方式的变换使树保持平衡:
-
-- **变色**
-- **左旋转**
-- **右旋转**
-
-### 3.1 变色
-
-为了重新符合红黑树的规则,需要把**红色**节点变为**黑色**,或者把**黑色**节点变为**红色**
-
-插入的**新节点**通常都是**红色节点**:
-
-- 当插入的节点为**红色**的时候,大多数情况**不违反**红黑树的任何规则
-- 而**插入黑色节点,**必然会导致一条路径上多了一个**黑色节点**,这是很难调整的
-- 红色节点虽然可能导致**红红相连**的情况,但是这种情况可以通过**颜色调换和旋转**来调整
-
-### 3.2 左旋转
-
-以节点 X 为根**逆时针**旋转二叉搜索树,使得父节点原来的位置被自己的右子节点替代,左子节点的位置被父节点替代
-
-
-
-
-
-**旋转过程详解:**
-
-如上图所示,左旋转之后:
-
-- 节点 X 取代了节点 a 原来的位置
-- 节点 Y 取代了节点 X 原来的位置
-- 节点 X 的**左子树** a 仍然是节点 X 的**左子树**(这里 X 的左子树只有一个节点,有多个节点时同样适用,以下同理)
-- 节点 Y 的**右子树** c 仍然是节点 Y 的**右子树**
-- 节点 Y 的**左子树** b 向**左平移**成为了节点 X 的**右子树**
-
-除此之外,二叉搜索树左旋转之后仍为二叉搜索树:
-
-
-
-
-
-### 3.3 右旋转
-
-以节点 X 为根**顺时针**旋转二叉搜索树,使得父节点原来的位置被自己的左子节点替代,右子节点的位置被父节点替代
-
-
-
-
-
-旋转过程详解:
-
-如上图所示,右旋转之后:
-
-- 节点 X 取代了节点 a 原来的位置
-- 节点 Y 取代了节点 X 原来的位置
-- 节点 X 的**右子树** a 仍然是节点 X 的**右子树**(这里 X 的右子树虽然只有一个节点,但是多个节点时同样适用,以下同理)
-- 节点 Y 的**左子树** b 仍然是节点 Y 的**左子树**
-- 节点 Y 的**右子树** c 向**右平移**成为了**节点 X**的**左子树**
-
-除此之外,二叉搜索树右旋转之后仍为二叉搜索树:
-
-
-
-
-
-## 四、红黑树的插入操作
-
-首先需要明确,在保证满足红黑树 5 条规则的情况下,新插入的节点必然是**红色节点**。
-
-为了方便说明,规定以下四个节点:新插入节点为**N**(Node),N 的父节点为**P**(Parent),P 的兄弟节点为**U**(Uncle),U 的父节点为**G**(Grandpa),如下图所示:
-
-
-
-
-
-### 情况 1
-
-当插入的新节点 N 位于树的根上时,没有父节点。
-
-这种情况下,只需要将**红色**节点**变为黑色**节点即可满足规则 2 。
-
-
-
-
-
-### 情况 2
-
-新节点 N 的父节点 P 为黑色节点,此时不需要任何变化。此时既满足规则 4 也满足规则 5。
-
-尽管新节点是红色的,但是新节点 N 有两个黑色节点 NIL,所以通向它的路径上黑色节点的个数依然相等,因此满足规则 5 。
-
-
-
-
-
-### 情况 3
-
-节点 P 为红色,节点 U 也为红色,此时节点 G 必为黑色,即**父红 叔红 祖黑**。在这种情况下需要:
-
-- 先将父节点 P 变为黑色
-- 再将叔叔节点 U 变为黑色
-- 最后将祖父节点 G 变为红色
-
-即变为**父黑叔黑祖红**,如下图所示:
-
-
-
-
-
-可能出现的问题:
-
-- N 的 **祖父节点 G** 的 **父节点** 也可能是 **红色**,这就违反了规则 4,此时可以通过**递归调整节点颜色**
-- 当递归**调整到根节点时**就需要**旋转**了,如下图**节点 A 和节点 B**所示,具体情况后面会介绍
-
-
-
-
-
-### 情况 4
-
-节点 P 是红色节点,节点 U 是黑色节点,并且节点 N 为节点 P 的**左子节点**,此时节点 G 一定是黑色节点,即**父红叔黑祖黑**。
-
-在这种情况下需要:
-
-- **先变色**:将父节点 P 变为黑色,将祖父节点 G 变为红色,即**父黑祖红**
-- **后旋转**:以**祖父节点 G 为根**进行**右旋转**
-
-
-
-
-
-### 情况 5
-
-节点 P 是红色节点,节点 U 是黑色节点,并且节点 N 为节点 P 的**右子节点**,此时节点 G 一定是黑色节点,即**父红叔黑祖黑**。
-
-在这种情况下需要:
-
-- 先以**节点 P 为根进行左旋转,** 旋转后如图 b 所示
-- 随后将**红色节点 P 和黑色节点 B**看成一个整体的**红色节点 N1**,将**新插入的红色节点 N** 看成 **红色节点 P1** 如图 c 所示。此时整体就转换为了情况 4。
-
-
-
-
-
-然后可以按照情况 4 进行处理:
-
-- 先变色:将 N1 节点的父节点 P1 变为黑色,将祖父节点 G 变为红色
-- 后旋转:以祖父节点 G 为根进行右旋转,旋转后如图 e 所示
-- 最后将节点 N1 和 P1 变换回来,完成节点 N 的插入,如图 f 所示
-
-
-
-
-
-## 五、实际插入案例
-
-在二叉树中依次插入节点:10,9,8,7,6,5,4,3,2,1 。
-
-如果直接采用普通的二叉搜索树,节点全部插入后是这样的:
-
-
-
-
-
-是一个严重的**不平衡树**,相当于一个链表,不能体现出二叉搜索树的高效率。而按照红黑树的五条规则插入节点就能最大程度保证搜索二叉树是一棵**平衡树**。
-
-以下为在红黑树中实际插入 10,9,9....1 过程的详解,**为了方便解释省略了部分红黑树的叶子节点(NIL)**
-
-### 插入 10
-
-符合**情况 1**:
-
-- 插入节点 10
-- 将节点 10 的颜色变为黑色
-
-
-
-
-
-### 插入 9
-
-符合**情况 2**:
-
-- 不需要任何变化
-
-
-
-
-
-### 插入 8
-
-我们快速判断属于情况 3 还是情况 4 的方法:
-
-从新插入的**节点 N**出发,按图示箭头经过的四个节点,若为**红红黑红** 三个红色节点则为情况 3,若为**红红黑黑**两个红色节点则为情况 4
-
-
-
-
-
-经过判断,我们插入 8 时符合**情况 4**,所以需要以下操作:
-
-- 父节点 9 变成黑,祖父节点 10 变为红
-- 以祖父节点为根进行右旋转
-
-
-
-
-
-### 插入 7
-
-符合**情况 3**:
-
-- 父节点 8 和叔节点 10 变为黑,祖父节点 9 变为红
-- 此时会出现问题:不符合规则 2,即根节点不为黑,此时可以把以 9 为根节点的二叉搜索树当作一个整体作为一个新插入的节点 N,而此时又符合情况 1,只需要把 9 变回黑色即可
-
-
-
-
-
-### 插入 6
-
-符合**情况 4**:
-
-- 父节点 7 变为黑,祖父节点 8 变为红
-- 以祖父节点 8 为根进行右旋转
-
-
-
-
-
-### 插入 5
-
-符合**情况 3**:
-
-- 父节点 6 和叔节点 8 变为黑,祖父节点 7 变为红
-
-
-
-
-
-### 插入 4
-
-符合**情况 4**:
-
-- 父节点 5 变为黑,祖父节点 6 变为红
-- 以祖父节点 6 为根进行右旋转
-
-
-
-
-
-### 插入 3
-
-**第一次变换**:符合**情况 3**:
-
-- 父节点 4 和叔节点 6 变为黑,祖父节点 5 变为红
-
-变换之后发现 5 和 7 为相连的两个红色节点,于是把以 5 为根的整个子树看成一个新插入的节点 N1,再进行第二次变换。
-
-
-
-
-
-**第二次变换**:符合**情况 4**:
-
-- 父节点 7 变为黑,祖父节点 9 变为红
-- 以祖父节点 9 为根进行右旋转
-
-
-
-
-
-最后复原 N1 得到变换后的红黑树:
-
-
-
-
-
-### 插入 2
-
-符合**情况 4**:
-
-- 父节点 3 变为黑,祖父节点 4 变为红
-- 以祖父节点 4 为根进行右旋转
-
-
-
-
-
-### 插入 1
-
-**第一次变换**:符合**情况 3**:
-
-- 父节点 2 和叔节点 4 变为黑,祖父节点 3 变为红
-
-变换之后发现 3 和 5 为相连的两个红色节点,于是把以 3 为根的整个子树看成一个新插入的节点 N1,再进行第二次变换
-
-
-
-
-
-**第二次变换**:符合**情况 3**:
-
-- **父节点 5 和叔节点 9 变为黑**,**祖父节点 7 变为红**
-
-变换之后发现根节点 7 为红色不符合规则 2,所以把以 7 为根节点的红黑树看成一个新插入的节点 N2,再进行第三次变换
-
-**第三次变换**:符合**情况 1**:
-
-- 直接将根节点 7 变为黑色即可
-
-
-
-
-
-由此,完成了 1~10 节点的插入,虽然没有遇到情况 5,不过情况 5 经过左旋转的操作便可转换为情况 4,原理一样。如下图所示,将这棵红黑树的叶子节点 NIL 补全之后,经检验满足红黑树的五条规则,并且基本属于**平衡树**,效率较高。
-
-
-
-
diff --git a/docs/data-structure/11_graph.md b/docs/data-structure/11_graph.md
deleted file mode 100644
index ffd06a7..0000000
--- a/docs/data-structure/11_graph.md
+++ /dev/null
@@ -1,613 +0,0 @@
----
-nav:
- title: 数据结构
- order: 1
-group:
- title: 常见数据结构
- order: 1
-order: 11
----
-
-# 图(Graph)
-
-## 一、图的介绍
-
-### 1. 什么是图?
-
-- **图结构**是一种与**树结构**有些相似的数据结构
-- **图论**是数学的一个分支,并且,在数学中,树是图的一种
-- 图论以图为研究对象,研究**顶点**和**边**组成的**图形**的数学理论和方法
-- 主要的研究目的为:**事物之间的联系**,**顶点**代表**事物**,**边**代表两个事物间的**关系**
-
-### 2.图的特点
-
-- **一组顶点**:通常用 **V** (Vertex)表示顶点的集合
-- 一组边:通常用 E(Edge)表示边的集合
- - 边是顶点和顶点之间的连线
- - 边可以是有向的,也可以是无向的。比如 A----B 表示无向,A ---> B 表示有向
-
-### 3. 图的常用术语:
-
-- **顶点:**表示图中的一个**节点**
-- **边:**表示**顶点和顶点**给之间的**连线**
-- **相邻顶点:**由一条边连接在一起的顶点称为**相邻顶点**
-- **度:**一个顶点的**度**是**相邻顶点的数量**
-- **路径:**
- - **简单路径:** 简单路径要求不包含重复的顶点
- - **回路:** 第一个顶点和最后一个顶点**相同**的路径称为回路
-- **无向图:** 图中的所有边都是**没有**方向的
-- **有向图:** 图中的所有边都是**有**方向的
-- **无权图:** 无权图中的边没有任何权重意义
-- **带权图:** 带权图中的边有一定的权重含义
-
-### 4. 图的表示
-
-#### 4.1 邻接矩阵
-
-表示图的常用方式为:**邻接矩阵**,如下图所示
-
-- 可以使用二维数组来表示邻接矩阵
-- 邻接矩阵让**每个节点和一个整数相关联**,该**整数作为数组的下标值**
-- 使用一个**二维数组**来表示顶点之间的**连接**
-
-
-
-
-
-邻接矩阵表示法示例,如上图所示:
-
-- 二维数组中的**0**表示**没有连线**,**1**表示**有连线**
- - 如:A[ 0 ] [ 3 ] = 1,表示 A 和 C 之间有连接
-- 邻接矩阵的对角线上的值都为 0,表示 A - A ,B - B,等**自回路都没有连接**(自己与自己之间没有连接)
-- 若为无向图,则邻接矩阵应为对角线上元素全为 0 的对称矩阵
-
-##### 邻接矩阵存在的问题:
-
-- 如果图是一个**稀疏图**,那么邻接矩阵中将存在**大量的 0**,造成**存储空间的浪费**
-
-#### 4.2 邻接表
-
-另外一种表示图的常用方式为:**邻接表**,如下图所示
-
-- 邻接表由图中**每个顶点**以及**和顶点相邻的顶点列表**组成
-- 这个列表可用多种方式存储,比如:**数组/链表/字典(哈希表)** 等都可以
-
-
-
-
-
-如上图所示:
-
-- 图中可清楚看到**A 与 B、C、D 相邻**,假如要表示这些与 A 顶点相邻的顶点(边),可以通过将它们作为 A 的值(value)存入到对应的**数组/链表/字典**中
-- 之后,通过键(key)A,可以十分方便地取出对应的数据
-
-##### 邻接表的问题:
-
-- 邻接表可以简单地得出**出度**,即**某一顶点指向其他顶点的个数**;
-- 但是,邻接表计算**入度**(指向某一顶点的其他顶点的个数称为该顶点的入度)十分困难,此时需要构造**逆邻接表**才能有效计算入度
-
-## 二、图结构的封装
-
-这里我们采用**邻接表**的方式进行封装,使用之前封装过的**字典结构**(也可以理解为 Map)来**存储临近表**
-
-### 2.1 图类的创建
-
-```js
-function Graph() {
- this.vertexes = []; // 存放顶点
- this.adList = new Dictionary(); // 使用字典结构存放 边 信息
-}
-```
-
-### 2.2 添加顶点和边
-
-- 我们需要创建一个数组对象 vertexes 存储图的顶点
-
-- 创建一个字典对象 edges,来存储图的边,其中 key 为顶点值,value 为存储 key 顶点**相邻顶点的数组**
-- 如下图所示
-
-
-
-
-
-```js
-// 1.添加顶点
-Graph.prototype.addVertex = function (val) {
- this.vertexes.push(val); // 添加顶点
- this.adList.set(val, []); // 初始化顶点对应的边
-};
-
-// 2.添加边
-Graph.prototype.addEdge = function (val1, val2) {
- // 因为边是相互存在的,所以需要存储关联两个顶点的信息
- // 这里实现的是无向图,所以不考虑方向的问题
- this.adList.get(val1).push(val2);
- this.adList.get(val2).push(val1);
-};
-```
-
-### 2.3 实现 toString()方法
-
-为图类 Graph 添加 toString 方法,实现以邻接表的形式输出图中各顶点
-
-```js
-// 3.toString方法
-Graph.prototype.toString = function () {
- var resString = '';
- for (var i = 0; i < this.vertexes.length; i++) {
- resString += this.vertexes[i] + '->';
- var adList = this.adList.get(this.vertexes[i]);
- for (var j = 0; j < adList.length; j++) {
- resString += adList[j] + ' ';
- }
- resString += '\n';
- }
- return resString;
-};
-```
-
-#### 测试代码
-
-```js
-// 测试代码
-let graph = new Graph();
-
-// 添加顶点
-let myVertexes = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'];
-for (let i = 0; i < myVertexes.length; i++) {
- graph.addVertex(myVertexes[i]);
-}
-
-// 添加边
-graph.addEdge('A', 'B');
-graph.addEdge('A', 'C');
-graph.addEdge('A', 'D');
-graph.addEdge('C', 'D');
-graph.addEdge('C', 'G');
-graph.addEdge('D', 'G');
-graph.addEdge('D', 'H');
-graph.addEdge('B', 'E');
-graph.addEdge('B', 'F');
-graph.addEdge('E', 'I');
-
-console.log(graph.toString());
-// A->B C D
-// B->A E F
-// C->A D G
-// D->A C G H
-// E->B I
-// F->B
-// G->C D
-// H->D
-// I->E
-```
-
-### 2.4 图的遍历方式
-
-##### 图的遍历思想:
-
-- 图的遍历思想与树的遍历思想一样,意味着需要将图中**所有的顶点**都访问一遍,并且不能有**重复的访问**(上面的 toString 方法会重复访问)
-
-##### 遍历图的两种算法:
-
-- 广度优先搜索(Breadth - First Search,简称**BFS**)
-- 深度优先搜索(Depth - First Search,简称**DFS**)
-- 两种遍历算法都需要指定**第一个被访问的顶点**
-
-为了记录顶点是否被访问过,这里使用**三种颜色**来表示它们的状态
-
-- **白色**:表示该顶点还没有被访问过
-- **灰色**:表示该顶点被访问过,但其相邻顶点并未完全被访问过
-- **黑色**:表示该顶点被访问过,且其所有相邻顶点都被访问过
-
-首先封装 initializeColor 方法将图中的所有顶点初始化为白色,代码实现如下:
-
-```js
-/**
- * 4.初始化顶点颜色
- * 白色表示该顶点还没有被访问.
- * 灰色表示该顶点被访问过, 但并未被探索过.
- * 黑色表示该顶点被访问过且被完全探索过.
- */
-Graph.prototype._initColors = function () {
- var colors = [];
- for (var i = 0; i < this.vertexes.length; i++) {
- colors[this.vertexes[i]] = 'white';
- }
- return colors;
-};
-```
-
-### 2.5 广度优先搜索(BFS)
-
-#### 思路:
-
-- 广度优先搜索算法会从指定的第一个顶点开始遍历图,先访问其所有的相邻顶点,就像一次访问图的一层
-- 也可以说是**先宽后深**地遍历图中的各个顶点
-
-
-
-
-
-#### **实现思路:**
-
-基于**队列**可以简单地实现广度优先搜索算法:
-
-- 首先创建一个队列 Q(尾部进,首部出)
-- 调用封装的 initializeColor 方法将所有顶点初始化为白色
-- 指定第一个顶点 A,将 A 标注为**灰色**(被访问过的节点),并将 A 放入队列 Q 中
-- 循环遍历队列中的元素,只要队列 Q 非空,就执行以下操作
- - 先将灰色的 A 从 Q 的首部取出
- - 取出 A 后,将 A 的所有未被访问过(白色)的相邻顶点依次从队列 Q 的尾部加入队列,并变为灰色。以此保证,灰色的相邻顶点不重复加入队列
- - A 的全部相邻节点加入 Q 后,A 变为黑色,在下一次循环中被移除 Q 外
-
-#### 代码实现:
-
-```js
-// 5.广度优先遍历
-Graph.prototype.bfs = function (initV, handler) {
- var colors = this._initColors();
- var queue = new Queue();
-
- // 将定点放入队列
- queue.enqueue(initV);
-
- while (!queue.isEmpty()) {
- var qVal = queue.dequeue(); // 拿到队头的顶点
- var qAdj = this.adList.get(qVal); // 拿到队头对应的边
- // 将队头设置正在探索中 灰色
- colors[qVal] = 'gray';
-
- // 将队头顶点相邻的边 全部拿出来遍历一遍,并加入到队列中
- for (var i = 0; i < qAdj.length; i++) {
- var vertexValue = qAdj[i]; // 取出相邻顶点
- // 如果这个顶点是白色,说明没有被访问过
- if (colors[vertexValue] === 'white') {
- // 正在访问
- colors[vertexValue] = 'gray';
- // 将相邻顶点入队
- queue.enqueue(vertexValue);
- }
- }
-
- // 代表该定点已经探索完毕,设置为黑色
- colors[qVal] = 'black';
-
- // 输出
- handler && handler(qVal);
- }
-};
-```
-
-##### 测试代码
-
-```js
-graph.bfs(graph.vertexes[0], function (value) {
- console.log(value); // A,B,C,D,E,F,G,H,I,
-});
-```
-
-#### 过程详解
-
-下为指定的第一个顶点为 A 时的遍历过程:
-
-- 如 a 图所示,将在字典 edges 中取出的与 A 相邻的且未被访问过的白色顶点 B、C、D 放入队列 que 中并变为灰色,随后将 A 变为黑色并移出队列
-- 接着,如图 b 所示,将在字典 edges 中取出的与 B 相邻的且未被访问过的白色顶点 E、F 放入队列 que 中并变为灰色,随后将 B 变为黑色并移出队列
-
-
-
-
-
-- 如 c 图所示,将在字典 edges 中取出的与 C 相邻的且未被访问过的白色顶点 G(A,D 也相邻不过已变为灰色,所以不加入队列)放入队列 que 中并变为灰色,随后将 C 变为黑色并移出队列
-- 接着,如图 d 所示,将在字典 edges 中取出的与 D 相邻的且未被访问过的白色顶点 H 放入队列 que 中并变为灰色,随后将 D 变为黑色并移出队列
-
-
-
-
-
-如此循环直到队列中元素为 0,即所有顶点都变黑并移出队列后才停止,此时图中顶点已被全部遍历
-
-为了更好的理解 BFS,这里提供一份简版 BFS,核心思路都是一样的
-
-#### 简版 BFS
-
-```js
-const graph = {
- 0: [1, 2],
- 1: [2],
- 2: [0, 3],
- 3: [3],
-};
-
-const bfs = (root) => {
- const visited = new Set(); // 用来存储,节点是否访问过
- visited.add(root);
- const q = [root]; //新建队列,根结点入队
-
- while (q.length) {
- let n = q.shift(); // 队列节点出队,拿到队头
- console.log(n); // 访问节点
- // 访问相邻节点,并入队
- graph[n]?.forEach((item) => {
- if (!visited.has(item)) {
- // 若没被访问过
- q.push(item); // 入队
- visited.add(item); // 表示已经访问过
- }
- });
- }
-};
-
-bfs(2); // 2 0 3 1
-```
-
-### 2.6 深度优先搜索(DFS)
-
-#### 思路:
-
-- 深度优先搜索算法将会从指定的第一个顶点开始遍历图,沿着一条路径遍历直到该路径的最后一个顶点都被访问过为止
-- 接着沿原来路径回退并探索下一条路径,即**先深后宽**地遍历图中的各个顶点
-
-
-
-
-
-#### 实现思路:
-
-- 可以使用**栈**结构来实现深度优先搜索算法
-- 深度优先搜索算法的遍历顺序与二叉搜索树中的先序遍历较为相似,同样可以使用**递归**来实现(递归的本质就是**函数栈**的调用)
-
-基于递归实现深度优先搜索算法:定义 dfs 方法用于调用递归方法 dfsVisit,定义 dfsVisit 方法用于递归访问图中的各个顶点。
-
-这里实现 dfs 时,实现一个辅助函数 dfsVisit,方便递归实现 DFS。
-
-在 dfs 方法中:
-
-- 首先,调用 initializeColor 方法将所有顶点初始化为白色
-- 然后,调用 dfsVisit 方法遍历图的顶点
-
-在 dfsVisit 方法中:
-
-- 首先,将传入的指定节点 v 标注为**灰色**
-- 接着,处理顶点 V
-- 然后,访问 V 的相邻顶点
-- 最后,将顶点 v 标注为黑色
-
-#### 代码实现:
-
-```js
-// 6.深度优先遍历
-Graph.prototype.dfs = function (initValue, handler) {
- var colors = this._initColors(); // 初始化顶点颜色
- this.dfsVisit(initValue, colors, handler); // 遍历
-};
-
-Graph.prototype.dfsVisit = function (v, colors, handler) {
- colors[v] = 'gray'; // 访问中
-
- handler && handler(v); // 访问该顶点
-
- var vList = this.adList.get(v); // 获取相邻顶点
- for (var i = 0; i < vList.length; i++) {
- if (colors[vList[i]] === 'white') {
- this.dfsVisit(vList[i], colors, handler); // 递归访问
- }
- }
-
- colors[v] = 'black'; // 访问结束
-};
-```
-
-##### 测试代码
-
-```js
-graph.dfs(graph.vertexes[0], function (value) {
- console.log(value); // A,B,E,I,F,C,D,G,H
-});
-```
-
-#### 过程详解
-
-这里主要解释一下代码中的第 3 步操作:访问指定顶点的相邻顶点。
-
-- 以指定顶点 A 为例,先从储存顶点及其对应相邻顶点的字典对象 edges 中取出由顶点 A 的相邻顶点组成的数组
-
-
-
-
-
-- **第一步**:A 顶点变为灰色,随后进入第一个 for 循环,遍历 A 白色的相邻顶点:B、C、D;在该 for 循环的第 1 次循环中(执行 B),B 顶点满足:colors == "white",触发递归,重新调用该方法
-- **第二步**:B 顶点变为灰色,随后进入第二个 for 循环,遍历 B 白色的相邻顶点:E、F;在该 for 循环的第 1 次循环中(执行 E),E 顶点满足:colors == "white",触发递归,重新调用该方法
-- **第三步**:E 顶点变为灰色,随后进入第三个 for 循环,遍历 E 白色的相邻顶点:I;在该 for 循环的第 1 次循环中(执行 I),I 顶点满足:colors == "white",触发递归,重新调用该方法
-- **第四步**:I 顶点变为灰色,随后进入第四个 for 循环,由于顶点 I 的相邻顶点 E 不满足:colors == "white",停止递归调用。过程如下图所示:
-
-
-
-
-
-- **第五步**:递归结束后一路向上返回,首先回到第三个 for 循环中继续执行其中的第 2、3...次循环,每次循环的执行过程与上面的同理,直到递归再次结束后,再返回到第二个 for 循环中继续执行其中的第 2、3...次循环....以此类推直到将图的所有顶点访问完为止。
-
-下图为遍历图中各顶点的完整过程:
-
-- **发现**表示访问了该顶点,状态变为**灰色**;
-- **探索**表示既访问了该顶点,也访问了该顶点的全部相邻顶点,状态变为**黑色**;
-- 由于在顶点变为灰色后就调用了处理函数 handler,所以 handler 方法的输出顺序为发现顶点的顺序即:A、B、E、I、F、C、D、G、H 。
-
-
-
-
-
-为了更好的理解 DFS,这里也提供一份简版 DFS
-
-#### 简版 DFS
-
-```js
-const graph = {
- 0: [1, 2],
- 1: [2],
- 2: [0, 3],
- 3: [3],
-};
-
-let set = new Set();
-const dfs = (n) => {
- console.log(n);
- set.add(n);
- graph[n]?.forEach((item) => {
- if (!set.has(item)) {
- dfs(item);
- }
- });
-};
-
-dfs(2); // 2 0 1 3
-```
-
-### 2.7 完整代码
-
-```js
-const Dictionary = require('./dict');
-const Queue = require('../03-队列结构/01-queue');
-
-function Graph() {
- this.vertexes = []; // 存放顶点
- this.adList = new Dictionary(); // 使用字典结构存放 边 信息
-
- // 1.添加顶点
- Graph.prototype.addVertex = function (val) {
- this.vertexes.push(val); // 添加顶点
- this.adList.set(val, []); // 初始化顶点对应的边
- };
-
- // 2.添加边
- Graph.prototype.addEdge = function (val1, val2) {
- // 因为边是相互存在的,所以需要存储关联两个顶点的信息
- // 这里实现的是无向图,所以不考虑方向的问题
- this.adList.get(val1).push(val2);
- this.adList.get(val2).push(val1);
- };
-
- // 3.toString方法
- Graph.prototype.toString = function () {
- var resString = '';
- for (var i = 0; i < this.vertexes.length; i++) {
- resString += this.vertexes[i] + '->';
- var adList = this.adList.get(this.vertexes[i]);
- for (var j = 0; j < adList.length; j++) {
- resString += adList[j] + ' ';
- }
- resString += '\n';
- }
- return resString;
- };
-
- /**
- * 4.初始化顶点颜色
- * 白色表示该顶点还没有被访问.
- * 灰色表示该顶点被访问过, 但并未被探索过.
- * 黑色表示该顶点被访问过且被完全探索过.
- */
- Graph.prototype._initColors = function () {
- var colors = [];
- for (var i = 0; i < this.vertexes.length; i++) {
- colors[this.vertexes[i]] = 'white';
- }
- return colors;
- };
-
- // 5.广度优先遍历
- Graph.prototype.bfs = function (initV, handler) {
- var colors = this._initColors();
- var queue = new Queue();
-
- // 将定点放入队列
- queue.enqueue(initV);
-
- while (!queue.isEmpty()) {
- var qVal = queue.dequeue(); // 拿到队头的顶点
- var qAdj = this.adList.get(qVal); // 拿到队头对应的边
- // 将队头设置正在探索中 灰色
- colors[qVal] = 'gray';
-
- // 将队头顶点相邻的边 全部拿出来遍历一遍,并加入到队列中
- for (var i = 0; i < qAdj.length; i++) {
- var vertexeValue = qAdj[i]; // 取出相邻顶点
- // 如果这个顶点是白色,说明没有被访问过
- if (colors[vertexeValue] === 'white') {
- // 正在访问
- colors[vertexeValue] = 'gray';
- // 将相邻顶点入队
- queue.enqueue(vertexeValue);
- }
- }
-
- // 代表该定点已经探索完毕,设置为黑色
- colors[qVal] = 'black';
-
- // 输出
- handler && handler(qVal);
- }
- };
-
- // 6.深度优先遍历
- Graph.prototype.dfs = function (initValue, handler) {
- var colors = this._initColors(); // 初始化顶点颜色
- this.dfsVisit(initValue, colors, handler); // 遍历
- };
-
- Graph.prototype.dfsVisit = function (v, colors, handler) {
- colors[v] = 'gray'; // 访问中
-
- handler && handler(v); // 访问该顶点
-
- var vList = this.adList.get(v); // 获取相邻顶点
- for (var i = 0; i < vList.length; i++) {
- if (colors[vList[i]] === 'white') {
- this.dfsVisit(vList[i], colors, handler); // 递归访问
- }
- }
-
- colors[v] = 'black'; // 访问结束
- };
-}
-
-// 测试代码
-let graph = new Graph();
-
-// 添加顶点
-let myVertexes = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'];
-for (let i = 0; i < myVertexes.length; i++) {
- graph.addVertex(myVertexes[i]);
-}
-
-// 添加边
-graph.addEdge('A', 'B');
-graph.addEdge('A', 'C');
-graph.addEdge('A', 'D');
-graph.addEdge('C', 'D');
-graph.addEdge('C', 'G');
-graph.addEdge('D', 'G');
-graph.addEdge('D', 'H');
-graph.addEdge('B', 'E');
-graph.addEdge('B', 'F');
-graph.addEdge('E', 'I');
-
-console.log(graph.toString());
-// A->B C D
-// B->A E F
-// C->A D G
-// D->A C G H
-// E->B I
-// F->B
-// G->C D
-// H->D
-// I->E
-
-graph.bfs(graph.vertexes[0], function (value) {
- console.log(value); // A,B,C,D,E,F,G,H,I,
-});
-
-graph.dfs(graph.vertexes[0], function (value) {
- console.log(value); // A,B,E,I,F,C,D,G,H
-});
-```
diff --git a/docs/data-structure/index.md b/docs/data-structure/index.md
deleted file mode 100644
index 8fc28b9..0000000
--- a/docs/data-structure/index.md
+++ /dev/null
@@ -1,77 +0,0 @@
----
-nav:
- title: 数据结构
- order: 1
-group:
- title: 介绍
- order: -1
----
-
-# 数据结构
-
-本系列文章是作者在 B 站学习完 [《数据结构与算法》](https://www.bilibili.com/video/BV1x7411L7Q7)后,为了进行总结和复习而整理的学习笔记,视频讲解的特别好,给大家安利一波~
-
-## 一、什么是数据结构?
-
-> 数据结构(data structure)是计算机中存储、组织数据的方式。通常情况下,精心选择的数据结构可以带来最优效率的算法。---中文维基百科
-
-一句话总结:数据结构就是在计算机中,**存储和组织数据的方式**。
-
-例如:图书馆中存放了很多书籍,怎样摆放图书既能放很多书,还方便取?
-
-其实我们主要思考两个问题
-
-- 新书怎么插入?
-- 怎么快速对找到指定的书?
-
-1. 如果新书随便摆放,那么在找指定的书时,图书馆那么大,肯定会累死
-2. 按照书名的拼音字母顺序排放
- 1. 新书的插入, 按照字母顺序找到位置,然后插入。
- 2. 书籍的查找:根据字母顺序进行查找
-3. 现实生活中,图书馆会先划分类别,然后在对应类别中,根据字母顺序插入,这样查找效率会更高
-
-### 结论
-
-- 解决问题方法的效率,根据数据的组织方式有关
-- 计算机中存储的数据量相对于图书馆的书籍来说数据量更大,更多
-- 以什么样的方式,来存储和组织我们的数据才能在使用数据时更加方便呢?
-- 这就是数据结构需要考虑的问题。
-
-### 常见的数据结构
-
-- [数组(Array)](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array)
-- [栈(Stack)](/data-structure/01_stack)
-- [队列(Queue)](/data-structure/02_queue)
-- [链表(Linked List)](/data-structure/03_linked_list)
-- [哈希表(Hash)](/data-structure/07_hash_table)
-- [树(Tree)](/data-structure/08_tree&binary_tree)
-- [图(Graph)](/data-structure/11_graph)
-- [堆(Heap)](https://zh.wikipedia.org/wiki/%E5%A0%86%E7%A9%8D)
-
-> 注意:数据结构与算法与语言无关,常见的编程语言都有**直接或间接**的使用上述常见的数据结构。
-
-## 二、什么是算法(Algorithm)?
-
-### 算法的定义
-
-- 一个有限指令集,每条指令的描述不依赖于语言
-- 接收一些输入(有些情况下不需要输入)
-- 产生输入
-- 一定在有限步骤之后终止
-
-算法通俗理解:解决问题的办法/步骤逻辑。数据结构的实现,离不开算法。
-
-## 案例
-
-假如杭州和上海之间有一条高架线,高架线长度是 1,000,000 米,有一天高架线中有一米出现了故障,请你想出一种算法,可以快速定位到处问题的地方。
-
-- 线性查找
- - 从上海的起点开始一米一米的排查,最终一定能找到出问题的线段。
- - 但是如果线段在另一头,我们需要排查 1,000,000 次,这是最坏的情况,平均需要 500,000 次。
-- 二分查找
- - 从中间位置开始排查,看一下问题出在杭州到中间位置,还是中间到上海的位置。
- - 查找对应的问题后,再从中间位置分开,重新锁定一般的路程。
- - 最坏的情况,需要多少次可以排查完呢? 最坏的情况是 20 次就可以找到出问题的地方。
- - 怎么计算出来的呢? log(1000000, 2),以 2 位底,1000000 的对数 ≈ 20。
-
-结论:你会发现,解决问题的办法有很多,但是好的算法对比于差的算法,效率天壤之别。
diff --git a/docs/guide/index.md b/docs/guide/index.md
deleted file mode 100644
index 3d3ccda..0000000
--- a/docs/guide/index.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-nav:
- title: 指南
- order: 2
----
-
-# 指南
-
-```md
----
-nav: JavaScript题解 #所属nav
-group:
- title: 基础算法 #所属分组 ==>基础算法
- order: 1 #组(基础算法)于其他组的顺序 [...,-1,0,1,...]
-order: 0 # group内顺序
----
-```
-
-:::info{title=题目跳转指引}
-若要新开窗口跳转题目,可以使用`command+click`(macOS)或`ctrl+click`(Linux / Windows)进行跳转
-:::
-
-
-
-
题目跳转指引
-
-
-
-
-
-
-
diff --git a/docs/index.md b/docs/index.md
deleted file mode 100644
index b7673d1..0000000
--- a/docs/index.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-title: 刷题记录
-description: 这是一个leetcode刷题记录📝,目前有300+道题js版本题解,后续会更新其他语言版本,欢迎PR👋
-keywords: [leetcode-js, 前端刷题, leetcode, 刷题记录]
-hero:
- title: 刷题记录
- description: 这是一个leetcode刷题记录📝,目前有300+道题js版本题解,后续会更新其他语言版本,欢迎PR👋
- actions:
- - text: 开始
- link: /js-logs
- - text: GitHub
- link: https://github.com/gaoxiaoduan/leetcode-js
-features:
- - title: 分类
- emoji: 🔖
- description: 题解针对刷题类型进行分类
- - title: 注释
- emoji: 🗒
- description: 大部分题都会增加完善的注释,便于理解&回顾
- - title: n版本解法
- emoji: 🪢
- description: 尝试不同方案的解法,便于总结刷题套路
----
diff --git a/docs/js-logs/BFS.md b/docs/js-logs/BFS.md
deleted file mode 100644
index 7437466..0000000
--- a/docs/js-logs/BFS.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-nav: JavaScript题解
-group:
- title: 基础算法
- order: 1
-order: 3
-toc: content
----
-
-# BFS
-
-BFS 的核心思想应该不难理解的,就是把一些问题抽象成图,从一个点开始,向四周开始扩散。一般来说,我们写 BFS 算法都是用「队列」这种数据结构,每次将一个节点周围的所有节点加入队列。
-
-BFS 相对 DFS 的最主要的区别是:BFS 找到的路径一定是最短的,但代价就是空间复杂度可能比 DFS 大很多
-
-
-
-
-
-
diff --git a/docs/js-logs/array.md b/docs/js-logs/array.md
deleted file mode 100644
index 198b164..0000000
--- a/docs/js-logs/array.md
+++ /dev/null
@@ -1,86 +0,0 @@
----
-nav: JavaScript题解
-group: 基础数据结构
-order: 0
-toc: content
----
-
-# [数组](https://leetcode.cn/tag/array/problemset/)
-
-数组是在程序设计中,把具有相同类型的若干元素按有序的形式组织起来的一种形式。
-
-作为线性表的实现方式之一,数组中的元素在内存中是**连续**存储的,且每个元素占相同大小的内存。
-
-## 双指针
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-## 前缀和
-
-
-
-
-
-
-
-
-
-## 差分数组
-
-
-
-
-
-## 二位数组的花式遍历技巧
-
-
-
-
-
-
-
-## 岛屿问题
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/js-logs/backtracking.md b/docs/js-logs/backtracking.md
deleted file mode 100644
index 50a57c6..0000000
--- a/docs/js-logs/backtracking.md
+++ /dev/null
@@ -1,52 +0,0 @@
----
-nav: JavaScript题解
-group:
- title: 进阶算法
- order: 2
-order: 1
-toc: content
----
-
-# 回溯算法
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/js-logs/binary-search.md b/docs/js-logs/binary-search.md
deleted file mode 100644
index 3437ec7..0000000
--- a/docs/js-logs/binary-search.md
+++ /dev/null
@@ -1,204 +0,0 @@
----
-nav: JavaScript题解
-group:
- title: 基础算法
- order: 1
-order: 0
-toc: content
----
-
-# 二分搜索
-
-## [704.二分查找](https://leetcode.cn/problems/binary-search/) easy
-
-```js
-/**
- * @param {number[]} nums
- * @param {number} target
- * @return {number}
- */
-var search = function (nums, target) {
- let left = 0,
- right = nums.length - 1;
- while (left <= right) {
- let mid = Math.floor(left + (right - left) / 2);
- if (nums[mid] === target) {
- return mid;
- } else if (nums[mid] > target) {
- right = mid - 1;
- } else if (nums[mid] < target) {
- left = mid + 1;
- }
- }
- return -1;
-};
-```
-
-## [35.搜索插入位置](https://leetcode.cn/problems/search-insert-position/) easy
-
-```js
-/**
- * @param {number[]} nums
- * @param {number} target
- * @return {number}
- */
-var searchInsert = function (nums, target) {
- let l = 0,
- r = nums.length - 1;
- while (l <= r) {
- const mid = Math.floor(l + (r - l) / 2);
- if (nums[mid] === target) {
- return mid;
- } else if (nums[mid] > target) {
- r = mid - 1;
- } else if (nums[mid] < target) {
- l = mid + 1;
- }
- }
- return l;
-};
-```
-
-## [34.在排序数组中查找元素的第一个和最后一个位置](https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/) medium
-
-跟[剑指 Offer 53 - I. 在排序数组中查找数字 I](/js-logs/sword-point-offer#剑指-offer-53---i-在排序数组中查找数字-i)相似
-
-```js
-/**
- * @param {number[]} nums
- * @param {number} target
- * @return {number[]}
- */
-var searchRange = function (nums, target) {
- if (nums.length === 0) return [-1, -1];
- return [leftSearch(nums, target), rightSearch(nums, target)];
-};
-
-var leftSearch = (nums, target) => {
- let left = 0,
- right = nums.length - 1;
- while (left <= right) {
- let mid = left + Math.floor((right - left) / 2);
- if (nums[mid] < target) {
- left = mid + 1;
- } else if (nums[mid] > target) {
- // 搜索区间变为 [left, mid-1]
- right = mid - 1;
- } else if (nums[mid] === target) {
- // 搜索区间变为 [left, mid-1]
- right = mid - 1; //注意
- }
- }
-
- // left 是的区间是[0,nums.length]
- // if (left === nums.length) return -1; // 越界
- return nums[left] === target ? left : -1;
-};
-
-var rightSearch = (nums, target) => {
- let left = 0,
- right = nums.length - 1;
-
- while (left <= right) {
- let mid = left + Math.floor((right - left) / 2);
- if (nums[mid] < target) {
- left = mid + 1;
- } else if (nums[mid] > target) {
- right = mid - 1;
- } else if (nums[mid] === target) {
- left = mid + 1; //注意
- }
- }
-
- // if (left - 1 < 0) return -1;// 防止越界
- // return nums[left - 1] === target ? right : -1;
- // 当while结束时,left-1=right;
- // if (right < 0) return -1;// 防止越界
- return nums[right] === target ? right : -1;
-};
-```
-
-## [154.寻找旋转排序数组中的最小值-ii](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array-ii/) hard
-
-二分法寻找最小值
-
-```js
-/**
- * @param {number[]} nums
- * @return {number}
- */
-// 二分法寻找最小值
-var findMin = function (nums) {
- let n = nums.length;
- if (n === 1) return nums[0];
- // 原:[0,1,2,2,2,2,3,4,5,6]
- // 后:[2,3,4,5,6,0,1,2,2,2]
- // [2,3,4,5,6,0,1,2,2,2]
- // l m > r ==> l=m+1;
- // [2,3,4,5,6,0,1,2,2,2]
- // l m = r ==> r=r-1;
- // [2,3,4,5,6,0,1,2,2,2]
- // l m < r ==> r=m;
- // [2,3,4,5,6,0,1,2,2,2]
- // l
- // m r = m;
- // 最后l=r;停止寻找
-
- let left = 0,
- right = n - 1;
- while (left < right) {
- // let mid = Math.floor((left + right) / 2);
- let mid = (left + right) >> 1;
- console.log(left, mid, right);
- if (nums[mid] > nums[right]) {
- left = mid + 1;
- } else if (nums[mid] < nums[right]) {
- right = mid;
- } else if (nums[mid] === nums[right]) {
- right = right - 1;
- }
- }
-
- return nums[right];
-};
-```
-
-## [278.第一个错误的版本](https://leetcode.cn/problems/first-bad-version/) easy
-
-```js
-/**
- * Definition for isBadVersion()
- *
- * @param {integer} version number
- * @return {boolean} whether the version is bad
- * isBadVersion = function(version) {
- * ...
- * };
- */
-
-/**
- * @param {function} isBadVersion()
- * @return {function}
- */
-var solution = function (isBadVersion) {
- /**
- * @param {integer} n Total versions
- * @return {integer} The first bad version
- */
- return function (n) {
- let l = 1,
- r = n;
- while (l < r) {
- const mid = Math.floor(l + (r - l) / 2);
- if (isBadVersion(mid)) {
- // 结果在[l,mid]
- r = mid;
- } else {
- l = mid + 1; // 结果在[mid+1,r]
- }
- }
- // 此时l=r,返回其中一个点即可
- return l;
- };
-};
-```
diff --git a/docs/js-logs/binary-tree.md b/docs/js-logs/binary-tree.md
deleted file mode 100644
index 93f9d8a..0000000
--- a/docs/js-logs/binary-tree.md
+++ /dev/null
@@ -1,142 +0,0 @@
----
-nav: JavaScript题解
-group: 基础数据结构
-order: 2
-toc: content
----
-
-# 二叉树
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/js-logs/bit-manipulation.md b/docs/js-logs/bit-manipulation.md
deleted file mode 100644
index 9d4cf1a..0000000
--- a/docs/js-logs/bit-manipulation.md
+++ /dev/null
@@ -1,185 +0,0 @@
----
-nav: JavaScript题解
-group:
- title: 基础算法
- order: 1
-order: 2
-toc: content
----
-
-# 位运算
-
-## [136.只出现一次的数字](https://leetcode.cn/problems/single-number/) easy
-
-- 思路
-- a^a = 0
-- a^0 = a
-- 所以全部异或一遍,剩下的就是那个出现一次的数字
-
-```js
-/**
- * @param {number[]} nums
- * @return {number}
- */
-var singleNumber = function (nums) {
- let n = 0;
- for (let i = 0; i < nums.length; i++) {
- n ^= nums[i];
- }
- return n;
-};
-```
-
-## [190.颠倒二进制位](https://leetcode.cn/problems/reverse-bits/) easy
-
-```js
-/**
- * @param {number} n - a positive integer
- * @return {number} - a positive integer
- */
-var reverseBits = function (n) {
- let res = 0; // 0: '0'
- // n一共长32,所以需要移动32次
- for (let i = 0; i < 32; i++) {
- // res:'00';
- res <<= 1; // 相当于res*2
- // 如果n的右边第一位是1,移入res
- // 如果是0不用管,res << 的时候会空出来0
- if (n & 1) {
- res += 1;
- }
- // 4:'100' >> '10'
- // 2:'10' >> '1'
- n >>= 1; // 相当于 n/2
- }
-
- return res >>> 0;
-};
-```
-
-## [191.位-1-的个数](https://leetcode.cn/problems/number-of-1-bits/) easy
-
-- n & (n-1) 消除数字 n 的二进制表示中的最后一个 1
-- 不断消除数字 n 中的 1,直到 n 变为 0。
-
-
-
-
图解
-
-
-```js
-/**
- * @param {number} n - a positive integer
- * @return {number}
- */
-var hammingWeight = function (n) {
- let res = 0;
- while (n !== 0) {
- n = n & (n - 1);
- res++;
- }
- return res;
-};
-```
-
-## [231. 2 的幂](https://leetcode.cn/problems/power-of-two/) easy
-
-- `n & (n-1)`可以消除二进制最后一个 1,变成 0
-
-```js
-/**
- * @param {number} n
- * @return {boolean}
- */
-var isPowerOfTwo = function (n) {
- if (n <= 0) return false;
- return (n & (n - 1)) === 0;
-};
-```
-
-## [268.丢失的数字](https://leetcode.cn/problems/missing-number/) easy
-
-- 思路
-- 因为异或满足交换律
-- a ^ b ^ a = b ^ (a ^ a);
-- 所以可以将数组内的元素跟[0,n]异或一下
-- 结果就是丢失的数字
-- 跟[剑指 Offer 53 - II. 0 ~ n-1 中缺失的数字](/js-logs/sword-point-offer#剑指-offer-53---ii-0n-1中缺失的数字)相同
-
-```js
-/**
- * @param {number[]} nums
- * @return {number}
- */
-var missingNumber = function (nums) {
- const n = nums.length;
- let res = 0;
- res ^= n;
- for (let i = 0; i < n; i++) {
- res ^= nums[i] ^ i;
- }
-
- return res;
-};
-```
-
-- 两个等差数列
-- `sum(nums) - sum([0,n])`就是缺的那个元素
-
-```js
-/**
- * @param {number[]} nums
- * @return {number}
- */
-var missingNumber1 = function (nums) {
- let sumNums = 0;
- let sum = 0;
- for (let i = 0; i < nums.length; i++) {
- sumNums += nums[i];
- sum += i + 1;
- }
- return sum - sumNums;
-};
-```
-
-## [389.找不同](https://leetcode.cn/problems/find-the-difference/) easy
-
-- 思路
-- 根据异或的交换律和结合律
-- a ^ b ^ a = b ^ (a ^ a)
-- 所以可以将字符做异或操作,最后的结果就是添加的字母
-- 注意:由于 js 字符串不支持直接异或,所以要转成对应的 unicode
-
-```js
-/**
- * @param {string} s
- * @param {string} t
- * @return {character}
- */
-var findTheDifference = function (s, t) {
- let res = 0;
- res ^= t[t.length - 1].charCodeAt();
- for (let i = 0; i < s.length; i++) {
- res ^= s[i].charCodeAt() ^ t[i].charCodeAt();
- }
- return String.fromCharCode(res);
-};
-```
-
-## [693.交替位二进制数](https://leetcode.cn/problems/binary-number-with-alternating-bits/) easy
-
-```js
-/**
- * @param {number} n
- * @return {boolean}
- */
-var hasAlternatingBits = function (n) {
- // n:000010101
- // m:000001010 n>>1
- // a:000011111
- //a+1:000100000
- // &:000000000
- const a = n ^ (n >> 1);
- return (a & (a + 1)) === 0;
-};
-```
diff --git a/docs/js-logs/dynamic-programming.md b/docs/js-logs/dynamic-programming.md
deleted file mode 100644
index ad2d599..0000000
--- a/docs/js-logs/dynamic-programming.md
+++ /dev/null
@@ -1,136 +0,0 @@
----
-nav: JavaScript题解
-group:
- title: 进阶算法
- order: 2
-order: 2
-toc: content
----
-
-# 动态规划
-
-## 股票买卖问题
-
-
-
-
-
-
-
-
-
-
-
-
-
-## 子序列类型
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/js-logs/greedy.md b/docs/js-logs/greedy.md
deleted file mode 100644
index ccac0f2..0000000
--- a/docs/js-logs/greedy.md
+++ /dev/null
@@ -1,276 +0,0 @@
----
-nav: JavaScript题解
-group:
- title: 进阶算法
- order: 2
-order: 3
-toc: content
----
-
-# 贪心算法
-
-## [55.跳跃游戏](https://leetcode.cn/problems/jump-game/) medium
-
-题目理解:
-求最远能跳多远的距离?若最远距离超出数组长度,表示可以到达最后一个下标
-反之不能到达
-
-- 这道题表面上不是求最值,但是可以改一改:
-- 请问通过题目中的跳跃规则,最多能跳多远?如果能够越过最后一格,返回 true,否则返回 false。
-
-```js
-/**
- * @param {number[]} nums
- * @return {boolean}
- */
-var canJump = function (nums) {
- let len = nums.length;
- let farthest = 0; // 最远距离
- for (let i = 0; i < len - 1; i++) {
- farthest = Math.max(farthest, i + nums[i]);
- if (farthest - i <= 0) {
- return false;
- }
- }
- return farthest >= len - 1;
-};
-```
-
-## [45.跳跃游戏 II](https://leetcode.cn/problems/jump-game-ii/) medium
-
-贪心算法
-时间复杂度 O(N)
-空间复杂度 O(1)
-
-
-
-
图解
-
-
-```js
-/**
- * @param {number[]} nums
- * @return {number}
- */
-var jump = function (nums) {
- let len = nums.length;
- let farthest = 0;
- let end = 0;
- let jump = 0;
- for (let i = 0; i < len - 1; i++) {
- farthest = Math.max(i + nums[i], farthest);
- if (end === i) {
- jump++;
- end = farthest;
- }
- }
- return jump;
-};
-```
-
-动态规划解法
-时间复杂度 O(N^2)
-空间复杂度 O(1)
-
-```js
-// 动态规划
-/**
- * @param {number[]} nums
- * @return {number}
- */
-var jump = function (nums) {
- let len = nums.length;
- let memo = Array.from({ length: len }).fill(len);
- //表示从p处跳到最后位置的最少步数
- const dp = (nums, p) => {
- // base case
- // 当 p 到达最后的位置,不用跳,返回0
- if (p >= len - 1) return 0;
- if (memo[p] !== len) return memo[p];
- let step = nums[p];
- for (let i = 1; i <= step; i++) {
- let subProblum = dp(nums, nums[i] + i);
- memo[p] = Math.min(memo[p], subProblum + 1);
- }
- return memo[p];
- };
-
- return dp(nums, 0);
-};
-```
-
-## [376.摆动序列](https://leetcode.cn/problems/wiggle-subsequence/) medium
-
-贪心算法
-[官方题解](https://leetcode.cn/problems/wiggle-subsequence/solution/bai-dong-xu-lie-by-leetcode-solution-yh2m/)
-
-```js
-/**
- * @param {number[]} nums
- * @return {number}
- */
-var wiggleMaxLength = function (nums) {
- const n = nums.length;
- if (n < 2) return n;
-
- let preDiff = nums[1] - nums[0];
- // base case
- // 若前两位数差为0,那么最长的摆动子序列就是1,否则就是前两位数字
- let res = preDiff !== 0 ? 2 : 1;
-
- for (let i = 2; i < n; i++) {
- const diff = nums[i] - nums[i - 1]; // 当前i与i-1的差
- //若diff与preDiff是【峰】【谷】的或是【谷】【峰】的,res+1
- if ((diff > 0 && preDiff <= 0) || (diff < 0 && preDiff >= 0)) {
- res++;
- preDiff = diff;
- }
- }
-
- return res;
-};
-```
-
-动态规划
-定义 up 数组 up[i]表示以前 i 个元素中的某一个为结尾的最长的「上升摆动序列」的长度
-定义 down 数组 down[i]表示以前 i 个元素中的某一个为结尾的最长的「下降摆动序列」的长度
-动态转移方程
-`(nums[i] <= nums[i-1]) up[i] = up[i-1];`
-`(nums[i] > nums[i-1]) up[i] = max(up[i-1],down[i-1]+1);`
-
-`(nums[i] >= nums[i-1]) down[i] = down[i-1];`
-`(nums[i] < nums[i-1]) down[i] = max(down[i-1],up[i-1]+1);`
-
-```js
-var wiggleMaxLength = function (nums) {
- const n = nums.length;
- if (n < 2) return n;
- const up = new Array(n).fill(0);
- const down = new Array(n).fill(0);
- up[0] = down[0] = 1;
-
- for (let i = 1; i < n; i++) {
- if (nums[i] > nums[i - 1]) {
- up[i] = Math.max(up[i - 1], down[i - 1] + 1);
- down[i] = down[i - 1];
- } else if (nums[i] < nums[i - 1]) {
- down[i] = Math.max(down[i - 1], up[i - 1] + 1);
- up[i] = up[i - 1];
- } else if (nums[i] === nums[i - 1]) {
- up[i] = up[i - 1];
- down[i] = down[i - 1];
- }
- }
-
- return Math.max(up[n - 1], down[n - 1]);
-};
-```
-
-## [435.无重叠区间](https://leetcode.cn/problems/non-overlapping-intervals/) medium
-
-时间复杂度 O(N)
-空间复杂度 O(1)
-思路笔记:-->利用贪心算法
-
-- 核心思路
-- 求出有多少不重复的区间,再用总数 - 不重复的区间数
-- 如何求出不重复区间数?
- - 跟据 end 进行升序排列
- - 找出跟 end 不重叠的区间,计数器++,改变 end 的值,继续遍历
-
-```js
-/**
- * @param {number[][]} intervals
- * @return {number}
- */
-var eraseOverlapIntervals = function (intervals) {
- // 如果为空,不需要改变
- if (!intervals.length) return 0;
- let endSortArr = intervals.sort((a, b) => a[1] - b[1]);
-
- // 计算有多少不重复的区间,至少为 开头的数量1
- let count = 1;
- let end_start = endSortArr[0][1];
-
- for (let item of endSortArr) {
- if (item[0] >= end_start) {
- count++;
- end_start = item[1];
- }
- }
-
- return endSortArr.length - count;
-};
-```
-
-## [452.用最少数量的箭引爆气球](https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-balloons/) medium
-
-时间复杂度 O(N)
-空间复杂度 O(1)
-
-- 思路
-- 其实题目最后要找的还是不重叠的区间数
-- 这里要注意的是, xstart ≤ x ≤ xend 就会射爆气球
-
-```js
-/**
- * @param {number[][]} points
- * @return {number}
- */
-var findMinArrowShots = function (points) {
- let endSortArr = points.sort((a, b) => a[1] - b[1]);
-
- let count = 1;
- let end_start = endSortArr[0][1];
- for (let item of endSortArr) {
- if (item[0] > end_start) {
- count++;
- end_start = item[1];
- }
- }
-
- return count;
-};
-```
-
-## [1024.视频拼接](https://leetcode.cn/problems/video-stitching/) medium
-
-```js
-/**
- * @param {number[][]} clips
- * @param {number} time
- * @return {number}
- */
-var videoStitching = function (clips, time) {
- if (time === 0) return 0;
- let clipsArr = clips.sort((a, b) => {
- if (a[0] === b[0]) {
- // 如果开头相同,将最长的片段放到最前面
- return b[1] - a[1];
- }
- return a[0] - b[0];
- });
-
- let res = 0;
- let curEnd = 0,
- nextEnd = 0;
- let i = 0,
- len = clipsArr.length;
-
- while (i < len && clipsArr[i][0] <= curEnd) {
- while (i < len && clipsArr[i][0] <= curEnd) {
- nextEnd = Math.max(nextEnd, clipsArr[i][1]);
- i++;
- }
-
- res++;
- curEnd = nextEnd;
- if (curEnd >= time) {
- return res;
- }
- }
-
- // 没找到,返回-1
- return -1;
-};
-```
diff --git a/docs/js-logs/heap.md b/docs/js-logs/heap.md
deleted file mode 100644
index e3dddcc..0000000
--- a/docs/js-logs/heap.md
+++ /dev/null
@@ -1,12 +0,0 @@
----
-nav: JavaScript题解
-group: 基础数据结构
-order: 5
-toc: content
----
-
-# 堆
-
-
-
-
diff --git a/docs/js-logs/index.md b/docs/js-logs/index.md
deleted file mode 100644
index c25b59b..0000000
--- a/docs/js-logs/index.md
+++ /dev/null
@@ -1,12 +0,0 @@
----
-nav:
- title: JavaScript题解
- order: 0
-group:
- title: 介绍
- order: -1
----
-
-# JavaScript 题解
-
-> 算法: 一个充实生活、训练思维的东东
diff --git a/docs/js-logs/linked-list.md b/docs/js-logs/linked-list.md
deleted file mode 100644
index 87ed298..0000000
--- a/docs/js-logs/linked-list.md
+++ /dev/null
@@ -1,530 +0,0 @@
----
-nav: JavaScript题解
-group: 基础数据结构
-order: 1
-toc: content
----
-
-# [链表](https://leetcode.cn/tag/linked-list/problemset/)
-
-链表(Linked List)是最简单的线性的、动态数据结构。理解它是理解树结构、图结构的基础。
-
-区别于数组,链表中的元素不是存储在内存中连续的一片区域,链表中的数据存储在每一个称之为「结点」复合区域里,在每一个结点除了存储数据以外,还保存了到下一个节点的指针(Pointer)。
-
-
-
-
Linked List
-
-由于不必按顺序存储,链表在插入数据的时候可以达到 O(1) 的复杂度,但是查找一个节点或者访问特定编号的节点则需要 O(n) 的时间。
-
-## 链表双指针
-
-
-
-
-
-### [21.合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) easy
-
-时间复杂度 O(M+N)
-空间复杂度 O(1)
-
-- 思路(双指针)
-- 两个链表值比较,取较小的值加入链表
-- 重复第一步,然后将另一个剩下的链表直接指向要返回的链表即可
-
-```js
-/**
- * @param {ListNode} list1
- * @param {ListNode} list2
- * @return {ListNode}
- */
-var mergeTwoLists = function (list1, list2) {
- // 虚拟头节点
- let dummy = new ListNode(),
- p = dummy;
- let p1 = list1,
- p2 = list2;
- while (p1 && p2) {
- if (p1.val > p2.val) {
- // 将较小的p2节点,放入dummy中
- p.next = p2;
- p2 = p2.next;
- } else {
- p.next = p1;
- p1 = p1.next;
- }
- // 指针p偏移
- p = p.next;
- }
- // 将剩下的节点,直接接到新链表到后面
- if (p1 !== null) {
- p.next = p1;
- }
- if (p2 !== null) {
- p.next = p2;
- }
- // 返回真实的节点
- return dummy.next;
-};
-```
-
-### [23.合并 k 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) hard
-
-时间复杂度 O(2N + log N)
-空间复杂度 O(N)
-
-- 思路
-- 跟[21 题](#21合并两个有序链表)类似,难点在于如何找出每个链表的最小值
-- 这里可以先取出链表中的所有值,放入数组中,然后对数字进行排序
-- 然后根据排序好的数组组成一个新的链表即可
-- 拓展:也可以使用最小堆找出链表里的最小值
-
-```js
-/**
- * @param {ListNode[]} lists
- * @return {ListNode}
- */
-var mergeKLists = function (lists) {
- let arr = new Array();
- for (let item of lists) {
- let p = item;
- while (p !== null) {
- arr.push(p.val);
- p = p.next;
- }
- }
- let res = new ListNode(0);
- let p = res;
- arr
- .sort((a, b) => a - b)
- .forEach((val) => {
- p.next = new ListNode(val);
- p = p.next;
- });
- return res.next;
-};
-```
-
-### [86.分隔链表](https://leetcode.cn/problems/partition-list/) medium
-
-时间复杂度 O(1)
-空间复杂度 O(N)
-
-- 思路
-- 使用指针 p 遍历链表
-- 使用两个新链表分别保存小于 x 的节点,和大于 x 的节点
-- 最后将两个链表合并返回即可
-- 注意:虚拟头节点的链接使用
-
-```js
-/**
- * @param {ListNode} head
- * @param {number} x
- * @return {ListNode}
- */
-var partition = function (head, x) {
- let dummy1 = new ListNode(),
- dummy2 = new ListNode();
- let p1 = dummy1,
- p2 = dummy2;
- let p = head;
- while (p !== null) {
- if (p.val >= x) {
- p2.next = new ListNode(p.val);
- p2 = p2.next;
- } else {
- p1.next = new ListNode(p.val);
- p1 = p1.next;
- }
- p = p.next;
- }
- p1.next = dummy2.next;
- return dummy1.next;
-};
-```
-
-### [141.环形链表](https://leetcode.cn/problems/linked-list-cycle/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(1)
-
-- 思路
-- 声明快慢两个指针进行赛跑
-- 如果有环,快慢指针肯定会重逢
-- 如果没有环,则不会重逢
-
-```js
-/**
- * @param {ListNode} head
- * @return {boolean}
- */
-var hasCycle = function (head) {
- let p1 = head,
- p2 = head;
- while (p1 && p2 && p2.next) {
- p1 = p1.next;
- p2 = p2.next.next;
- if (p1 === p2) return true;
- }
- return false;
-};
-```
-
-### [142.环形链表-ii](https://leetcode.cn/problems/linked-list-cycle-ii/) medium
-
-时间复杂度 O(N)
-空间复杂度 O(1)
-
-- 思路
-- 使用快慢指针找到相遇点
-- 然后将其中一个指针重置
-- 再将两个指针共同向前走,再次相遇的地方就是这个环的头
-
-```js
-/**
- * @param {ListNode} head
- * @return {ListNode}
- */
-var detectCycle = function (head) {
- let p1 = head,
- p2 = head;
- while (p2 && p2.next) {
- p1 = p1.next;
- p2 = p2.next.next;
- // 若p1===p2结束循环
- // 此时有两种情况
- // 1.p1,p2是相同节点,说明有环
- // 2.p1,p2都是null,说明没环
- if (p1 === p2) break;
- }
- if (p2 === null || p2.next === null) return null;
- p1 = head;
- while (p1 !== p2) {
- p1 = p1.next;
- p2 = p2.next;
- }
- return p1;
-};
-```
-
-### [160.相交链表](https://leetcode.cn/problems/intersection-of-two-linked-lists/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(1)
-
-- 思路
-- 难点在于,如何让指针【同时】指向相交的点
-- 指针 p1 指向 headA,p2 指向 headB,
-- 当 p1 遍历结束,让 p1 去遍历 headB,p2 也如此
-- 这样相当于把 headA 和 headB 拼接起来,当两个指针的值相等,说明找到了相同的起点
-
-```js
-/**
- * @param {ListNode} headA
- * @param {ListNode} headB
- * @return {ListNode}
- */
-var getIntersectionNode = function (headA, headB) {
- let p1 = headA,
- p2 = headB;
- while (p1 !== p2) {
- if (p1 === null) p1 = headB;
- else p1 = p1.next;
- if (p2 === null) p2 = headA;
- else p2 = p2.next;
- }
- return p1;
-};
-```
-
-### [876.链表的中间结点](https://leetcode.cn/problems/middle-of-the-linked-list/) easy
-
-时间复杂度 O(N/2)
-空间复杂度 O(1)
-
-- 思路(快慢指针)
-- 使用快慢指针
-- 慢指针走一步,快指针走两步
-- 这样当快指针走到头,慢指针刚好走一半
-- 这里让慢指针先走,如果链表长度是偶数,慢指针刚好指向第二个数
-
-```js
-/**
- * @param {ListNode} head
- * @return {ListNode}
- */
-var middleNode = function (head) {
- let fast = head,
- slow = head;
- while (fast !== null && fast.next !== null) {
- slow = slow.next;
- fast = fast.next.next;
- }
- return slow;
-};
-```
-
-### [977.有序数组的平方](https://leetcode.cn/problems/squares-of-a-sorted-array/) easy
-
-- 思路
-- 根据负数的平方是一个正数,且负数越小平方约大的特性
-- 若 0 的位置为分界点,那么负数平方后的顺序是 大->小->0
-- 正数的顺序是 0->小->大
-- 所以可以从两端分别设置两个指针,对比大小,将大的结果放到数组,指针移动
-- 相当于合并链表
-
-```js
-/**
- * @param {number[]} nums
- * @return {number[]}
- */
-var sortedSquares = function (nums) {
- const n = nums.length;
- let l = 0,
- r = n - 1;
-
- const res = new Array(n);
- let p = n - 1;
- while (l <= r) {
- if (Math.abs(nums[l]) > Math.abs(nums[r])) {
- res[p] = nums[l] * nums[l];
- l++;
- } else {
- res[p] = nums[r] * nums[r];
- r--;
- }
- p--;
- }
-
- return res;
-};
-```
-
-## 反转链表
-
-### [25.k-个一组翻转链表](https://leetcode.cn/problems/reverse-nodes-in-k-group/) hard
-
-时间复杂度 O(N)
-空间复杂度 O(logN)
-
-- 思路
-- 先知道如何反转单个链表,然后在这个函数上拓展出[a,b)区间的反转函数
-- 然后再分段去递归反转这个链表,若 a,b 的范围不足 k,则不需要反转
-- 将反转后的链表链接出来
-
-```js
-/**
- * @param {ListNode} head
- * @param {number} k
- * @return {ListNode}
- */
-var reverseKGroup = function (head, k) {
- if (head === null) return null;
- let a = head,
- b = head;
- for (let i = 0; i < k; i++) {
- // base case
- if (b === null) return head;
- b = b.next;
- }
- let newHead = reverse(a, b);
- a.next = reverseKGroup(b, k);
- return newHead;
-};
-
-// 以链表head到b的链表,翻转的是[head,b)区间,返回新的head
-var reverse = function (head, b) {
- let pre = null,
- cur = head,
- next = head;
- while (cur !== b) {
- next = cur.next;
- cur.next = pre;
- pre = cur;
- cur = next;
- }
- // 返回反转后的头节点
- return pre;
-};
-```
-
-### [206.反转链表](https://leetcode.cn/problems/reverse-linked-list/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(1)
-
-- 思路(迭代解法)
-- 链表太长不容易看出如何反转,所以可以看作两个最短链表反转
-- 短链表反转,只需要将 当前节点的 next 指回 给 上一个节点
-- 所以使用 p1 为头节点,p2 为后节点,双指针一直指回,然后让双指针共同前进即可
-- 因为 p1 最后会指向一个 null,p2 会指向 5
-- 所以最后返回 p2 链表
-
-```js
-/**
- * @param {ListNode} head
- * @return {ListNode}
- */
-var reverseList = function (head) {
- let p1 = head;
- let p2 = null;
- while (p1 !== null) {
- let temp = p1.next;
- p1.next = p2; // 反转
- p2 = p1;
- p1 = temp;
- }
- return p2;
-};
-
-/**
- * 递归解法
- * @param {*} head
- * @returns
- */
-// 函数定义:返回链表反转后的头节点
-var reverseList2 = function (head) {
- if (head === null || head.next === null) {
- return head;
- }
- let last = reverseList2(head.next);
- head.next.next = head;
- head.next = null;
- return last;
-};
-```
-
-### [剑指 Offer 24. 反转链表](https://leetcode.cn/problems/fan-zhuan-lian-biao-lcof/) easy
-
-本题[206 题](#206反转链表) 相同
-
-```js
-/**
- * @param {ListNode} head
- * @return {ListNode}
- */
-var reverseList = function (head) {
- if (head === null || head.next === null) {
- return head;
- }
- let last = reverseList(head.next);
- head.next.next = head;
- head.next = null;
- return last;
-};
-```
-
-### [92.反转链表-ii](<[http:xx](https://leetcode.cn/problems/reverse-linked-list-ii/)>) medium
-
-时间复杂度 O(N)
-空间复杂度 O(N)
-
-```js
-// 反转以head为起点的n个节点,返回新的头节点
-let successor = null; // 后继
-var reverseN = function (head, n) {
- if (n === 1) {
- successor = head.next; // 保存后继
- return head;
- }
- // 以head.next为起点的n-1个节点,返回新的头节点
- let last = reverseN(head.next, n - 1);
- head.next.next = head;
- head.next = successor;
- return last;
-};
-
-/**
- * @param {ListNode} head
- * @param {number} left
- * @param {number} right
- * @return {ListNode}
- */
-var reverseBetween = function (head, left, right) {
- if (left === 1) {
- // 当left为1时,可以看做反转前n个节点
- return reverseN(head, right);
- }
- // 前进到反转的起点 触发base case
- head.next = reverseBetween(head.next, left - 1, right - 1);
- return head;
-};
-```
-
-## 回文链表
-
-### [234.回文链表](https://leetcode.cn/problems/palindrome-linked-list/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(N)
-
-- 思路
-- 反转链表,判断两个链表的值是否完全想等
-- 利用函数递归的调用栈,可以拿到反转链表的值
-- 然后再后续遍历的位置进行判断,然后再将 left 指针向右偏移即可
-
-```js
-/**
- * @param {ListNode} head
- * @return {boolean}
- */
-var isPalindrome = function (head) {
- let left = head;
-
- var traverse = function (right) {
- if (right == null) return true;
- // 后序遍历位置,相当于反转了链表,因为上面的递归函数,让函数入栈了,出栈的第一个函数,就是链表最后一位
- // 这里相当于,让链表的首位进行判断
- let res = traverse(right.next); // 右指针左移
- res = res && right.val === left.val;
- left = left.next; // 左指针右移
- return res;
- };
-
- return traverse(head);
-};
-```
-
-### [剑指 Offer II 027. 回文链表](https://leetcode.cn/problems/aMhZSa/) easy
-
-与[234 题](#234回文链表)解法一样
-
-## [86.分隔链表](https://leetcode.cn/problems/partition-list/) medium
-
-时间复杂度 O(1)
-空间复杂度 O(N)
-
-- 思路
-- 使用指针 p 遍历链表
-- 使用两个新链表分别保存小于 x 的节点,和大于 x 的节点
-- 最后将两个链表合并返回即可
-- 注意:虚拟头节点的链接使用
-
-```js
-/**
- * @param {ListNode} head
- * @param {number} x
- * @return {ListNode}
- */
-var partition = function (head, x) {
- let newList1 = new ListNode(-1),
- newList2 = new ListNode(-1);
- let p1 = newList1,
- p2 = newList2;
- let p = head;
- while (p) {
- if (p.val >= x) {
- p2.next = new ListNode(p.val);
- p2 = p2.next;
- } else {
- p1.next = new ListNode(p.val);
- p1 = p1.next;
- }
- p = p.next;
- }
-
- // 将两个分好类的节点相连
- p1.next = newList2.next;
- return newList1.next;
-};
-```
diff --git a/docs/js-logs/math.md b/docs/js-logs/math.md
deleted file mode 100644
index 87a2388..0000000
--- a/docs/js-logs/math.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-nav: JavaScript题解
-group:
- title: TODO
- order: 3
-order: 2
-toc: content
----
-
-# 数学
-
-
-
-
-
-
diff --git a/docs/js-logs/n-sum.md b/docs/js-logs/n-sum.md
deleted file mode 100644
index 2a43984..0000000
--- a/docs/js-logs/n-sum.md
+++ /dev/null
@@ -1,195 +0,0 @@
----
-nav: JavaScript题解
-group:
- title: TODO
- order: 3
-order: 3
-toc: content
----
-
-# nSum
-
-## [1.两数之和](https://leetcode.cn/problems/two-sum/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(N)
-
-- 思路
-- 使用 map 存放当前元素和对应的位置
-- 每次循环先算出与之对应目标数,看看 map 中有没有存放,如果有,就返回 map 中存放的下标喝当前数字的下标
-- 如果 map 中没有找到对应树,就在 map 中保留一份信息,等着别的数来配对
-
-哈哈,跟相亲一样
-
-```js
-/**
- * @param {number[]} nums
- * @param {number} target
- * @return {number[]}
- */
-var twoSum = function (nums, target) {
- let map = new Map();
-
- for (let i = 0; i < nums.length; i++) {
- let item = nums[i];
- let diffNum = target - item;
-
- if (map.has(diffNum)) {
- return [map.get(diffNum), i];
- } else {
- map.set(item, i);
- }
- }
-};
-```
-
-泛化题:
-如果假设输入一个数组 nums 和一个目标和 target,请你返回 nums 中能够凑出 target 的两个元素的值,
-比如输入 nums = [5,3,1,6], target = 9,那么算法返回两个元素 [3,6]。
-nums 中可能有多对儿元素之和都等于 target,请你的算法返回`所有`和为 target 的元素对儿,其中`不能出现重复`。
-
-```js
-/**
- * @param {*} nums
- * @param {*} target
- * @returns
- */
-var twoSumTarget = function (nums, target) {
- nums.sort((a, b) => a - b);
- let lo = 0,
- hi = nums.length - 1;
- let res = [];
- while (lo < hi) {
- let left = nums[lo],
- right = nums[hi];
- let sum = left + right;
-
- if (sum === target) {
- res.push([left, right]);
- // 去除重复答案
- while (lo < hi && nums[lo] === left) lo++;
- while (lo < hi && nums[hi] === right) hi--;
- } else if (sum < target) {
- lo++;
- } else if (sum > target) {
- hi--;
- }
- }
-
- return res;
-};
-// test
-let res = twoSumTarget([1, 1, 1, 2, 2, 3, 3], 4);
-console.log('[ res ] >', res); // [ [ 1, 3 ], [ 2, 2 ] ]
-```
-
-## [15.三数之和](https://leetcode.cn/problems/3sum/) medium
-
-- 使用改造 twoSum 的解法
-- 先把根据当前 nums[i]找出 target 为`0-nums[i]`的数组
-- 然后再把 nums[i]加入找到的数组中
-- 注意:如果 nums[i]和 nums[i+1]如果相等,结果会重复,所以需要跳过相邻的
-
-```js
-// 使用改造twoSum的解法
-var twoSumTarget = function (nums, start, target) {
- let lo = start,
- hi = nums.length - 1;
- let res = [];
- while (lo < hi) {
- let left = nums[lo],
- right = nums[hi];
- let sum = left + right;
-
- if (sum === target) {
- res.push([left, right]);
- // 去除重复答案
- while (lo < hi && nums[lo] === left) lo++;
- while (lo < hi && nums[hi] === right) hi--;
- } else if (sum < target) {
- lo++;
- } else if (sum > target) {
- hi--;
- }
- }
-
- return res;
-};
-
-/**
- * @param {number[]} nums
- * @return {number[][]}
- */
-var threeSum = function (nums) {
- nums.sort((a, b) => a - b);
- const res = [];
- const len = nums.length;
- for (let i = 0; i < len; i++) {
- let twoSumRes = twoSumTarget(nums, i + 1, 0 - nums[i]);
-
- for (const item of twoSumRes) {
- item.push(nums[i]);
- res.push(item);
- }
-
- // 去除重复答案
- while (i < len - 1 && nums[i] === nums[i + 1]) i++;
- }
-
- return res;
-};
-```
-
-根据`twoSumTarget`构造`threeSumTarget`
-
-```js
-var threeSumTarget = function (nums, target) {
- nums.sort((a, b) => a - b);
- const res = [];
- const len = nums.length;
- for (let i = 0; i < len; i++) {
- let twoSumRes = twoSumTarget(nums, i + 1, target - nums[i]);
-
- for (const item of twoSumRes) {
- item.push(nums[i]);
- res.push(item);
- }
-
- // 去除重复答案
- while (i < len - 1 && nums[i] === nums[i + 1]) i++;
- }
-
- return res;
-};
-```
-
-## [18.四数之和](https://leetcode.cn/problems/4sum/) medium
-
-- 根据上面构造的`threeSumTarget`去解
-- 思路跟[15.三数之和](#15三数之和)相同
-- 这里就省略`threeSumTarget`了,可以直接使用上面构造好的
-
-```js
-/**
- * @param {number[]} nums
- * @param {number} target
- * @return {number[][]}
- */
-var fourSum = function (nums, target) {
- nums.sort((a, b) => a - b);
- const res = [];
- const len = nums.length;
- for (let i = 0; i < len; i++) {
- // threeSumTarget使用上面构造好的,此处省略
- let threeSumRes = threeSumTarget(nums, i + 1, target - nums[i]);
- for (const item of threeSumRes) {
- item.push(nums[i]);
- res.push(item);
- }
- // 去除重复答案
- while (i < len - 1 && nums[i] === nums[i + 1]) i++;
- }
-
- return res;
-};
-```
diff --git a/docs/js-logs/sliding-window.md b/docs/js-logs/sliding-window.md
deleted file mode 100644
index 1feabaf..0000000
--- a/docs/js-logs/sliding-window.md
+++ /dev/null
@@ -1,342 +0,0 @@
----
-nav: JavaScript题解
-group:
- title: 进阶算法
- order: 2
-order: 0
-toc: content
----
-
-# 滑动窗口
-
-## 单调队列解决滑动窗口问题
-
-
-
-
-
-
-
-## [567.字符串的排列](https://leetcode.cn/problems/permutation-in-string/) medium
-
-时间复杂度 O(N)
-空间复杂度 O(N)
-
-- 思路
-- 维护一个滑动窗口
-- 先初一个 need 和 window,Map 用于记录
-- 第一步先根据我们需要找的字符串,用 need 记录字符串出现的次数
-- 然后写出滑动窗口的框架
-- 再考虑情况,补充适当位置的代码
-
-```js
-// 滑动窗口的框架
-function slidingWindow(s, t) {
- let need = new Map, window = new Map();
- for (const c of s) {
- need.set(c, need.has(c) ? need.get(c) + 1 : 1)
- }
-
- let let = 0, right = 0;
- // valid 变量表示窗口中满足 need 条件的字符个数,
- // 如果 valid 和 need.size 的大小相同,则说明窗口已满足条件,已经完全覆盖了串
- let valid = 0;
- while (right < s.length) {
- // 将移入窗口的字符
- let c = s[right];
- // 右移窗口
- right += 1;
-
- // 进行窗口内数据的一系列更新
- // ...
-
- /*** debug 输出的位置 ***/
- console.log(left, right)
- /********************/
-
- // 判断左侧窗口是否要收缩
- while (window needs shrink) {
- // c2 是将移出窗口的字符
- let c2 = s[left];
- // 左移窗口
- left++;
- // 进行窗口内数据的一系列更新
- // ...
- }
- }
-}
-```
-
-题解
-
-```js
-/**
- * @param {string} s1
- * @param {string} s2
- * @return {boolean}
- */
-var checkInclusion = function (s1, s2) {
- let need = new Map(),
- window = new Map();
- for (const i of s1) {
- need.set(i, need.has(i) ? need.get(i) + 1 : 1);
- }
-
- let left = 0,
- right = 0;
- let valid = 0;
- while (right < s2.length) {
- // 将要进入窗口的字符
- let c1 = s2[right];
- right++; // 放大窗口
- // 更新数据
- if (need.has(c1)) {
- window.set(c1, window.has(c1) ? window.get(c1) + 1 : 1);
- if (window.get(c1) === need.get(c1)) {
- valid++;
- }
- }
-
- while (right - left >= s1.length) {
- // 符合要求,更新结果
- if (valid === need.size) {
- return true;
- }
- // 将要移出窗口等字符
- let c2 = s2[left];
- left++; // 缩小窗口
- // 更新数据
- if (need.has(c2)) {
- if (window.get(c2) === need.get(c2)) {
- valid--;
- }
- window.set(c2, window.get(c2) - 1);
- }
- }
- }
-
- return false;
-};
-```
-
-## [3.无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) medium
-
-时间复杂度 O(N) N 是 s 的个数
-空间复杂度 O(M) M 是 s 的不同元素的个数
-
-- 思路:
-- 维护一个滑动窗口
-- 1.在右指针滑动的过程中记录当前元素对应的位置
-- 2.若在右指针滑动过程中发现 map 中已经有当前元素,并且这个位置没有在左指针之后
-- 3.将左指针定位到当前元素位置的下一位
-- 4.然后右指针每次滑动,都求左右指针的最大长度
-- 这个长度就是最长的无重复子串
-
-```js
-var lengthOfLongestSubstring = function (s) {
- let map = new Map();
- let l = 0, // 左指针
- res = 0; // 最长的无重复子串的数量
-
- // r为右指针
- for (let r = 0; r < s.length; r++) {
- let c = s[r]; // 每个字符串
- // 2.
- if (map.has(c) && map.get(c) >= l) {
- // 3.
- l = map.get(c) + 1;
- }
- // 4.
- res = Math.max(res, r - l + 1);
-
- // 1.
- map.set(c, r); // 记录下每个字符串的位置
- }
-
- return res;
-};
-```
-
-滑动窗口框架解法
-
-```js
-var lengthOfLongestSubstring = function (s) {
- let window = new Map();
-
- let right = 0,
- left = 0;
- let res = 0;
- while (right < s.length) {
- let c1 = s[right];
- right++;
- // 更新数据
- window.set(c1, window.has(c1) ? window.get(c1) + 1 : 1);
- // 缩小窗口的条件
- while (window.get(c1) > 1) {
- let c2 = s[left];
- left++;
- // 更新数据
- window.set(c2, window.get(c2) - 1);
- }
- res = Math.max(res, right - left);
- }
- return res;
-};
-```
-
-## [9.回文数](https://leetcode.cn/problems/palindrome-number/) easy
-
-时间复杂度:O(N)
-空间复杂度:O(1)
-
-- 思路(双指针法)
-- 左右指针,向内滑动
-- 发现两个指针的值相等时,左指针++,右指针--,向内靠拢
-- 边界值情况:
-- 当输入 1 位,的时候,肯定是回文数,true
-- 判断相等时,注意值不能取空,否则会与 undefined 比较
-- 最后结束时,当头指针没有超过中位,说明不是回文数
-
-```js
-/**
- * @param {number} x
- * @return {boolean}
- */
-var isPalindrome = function (x) {
- const str = String(x);
- const len = str.length;
- if (len === 1) return true;
- let p1 = 0,
- p2 = len - 1;
-
- while (p1 < p2) {
- if (str[p1] !== str[p2]) return false;
- p1++;
- p2--;
- }
- return true;
-};
-```
-
-## [76.最小覆盖子串](https://leetcode.cn/problems/minimum-window-substring/) hard
-
-时间复杂度 O(N) N 代表 s 的长度
-空间复杂度 O(M)
-
-- 思路
-- 双指针维护一个滑动窗口
-- 先找出一个子串,然后将左指针向后移动一位,继续找子串
-- 移动过程中,记录 找到子串的长度,返回最小子串
-
-```js
-/**
- * @param {string} s
- * @param {string} t
- * @return {string}
- */
-var minWindow = function (s, t) {
- // need为统计t出现的次数
- let need = new Map(),
- window = new Map();
- for (let i of t) {
- need.set(i, need.has(i) ? need.get(i) + 1 : 1);
- }
- // valid为字符串满足的数量
- let valid = 0;
- let left = 0,
- right = 0;
- let res = '';
- while (right < s.length) {
- // c是将移入窗口的数据
- let c1 = s[right];
- // 放大窗口
- right += 1;
- // 数据更新操作
- if (need.has(c1)) {
- window.set(c1, window.has(c1) ? window.get(c1) + 1 : 1);
- if (window.get(c1) === need.get(c1)) {
- // 当window中的字符,已经满足need,valid++
- valid += 1;
- }
- }
-
- // 当valid满足need的size,说明已经找到符合条件的子串了,需要缩小窗口继续找最小
- while (valid === need.size) {
- // 更新结果
- let newStr = s.substring(left, right);
- if (!res || newStr.length < res.length) res = newStr;
-
- // c2是将移除窗口的数据
- let c2 = s[left];
- // 缩小窗口
- left += 1;
- // 更新数据
- if (need.has(c2)) {
- if (window.get(c2) === need.get(c2)) {
- valid -= 1;
- }
- window.set(c2, window.get(c2) - 1);
- }
- }
- }
- return res;
-};
-```
-
-## [438.找到字符串中所有字母异位词](https://leetcode.cn/problems/find-all-anagrams-in-a-string/) medium
-
-时间复杂度 O(M+N)
-空间复杂度 O(M)
-
-- 思路
-- 其实找异位词就是找覆盖子串
-- 可以参考[76.最小覆盖子串的解法](#76最小覆盖子串)
-
-```js
-/**
- * @param {string} s
- * @param {string} p
- * @return {number[]}
- */
-var findAnagrams = function (s, p) {
- let need = new Map(),
- window = new Map();
- for (let i of p) {
- need.set(i, need.has(i) ? need.get(i) + 1 : 1);
- }
-
- let left = 0,
- right = 0;
- let valid = 0;
- let res = [];
- while (right < s.length) {
- let c1 = s[right]; // 将要进入window的字符
- right++; // 放大窗口
- // 更新数据
- if (need.has(c1)) {
- window.set(c1, window.has(c1) ? window.get(c1) + 1 : 1);
- if (window.get(c1) === need.get(c1)) {
- valid++;
- }
- }
-
- while (right - left >= p.length) {
- if (valid === need.size) {
- res.push(left);
- }
-
- let c2 = s[left];
- left++;
- // 更新数据
- if (need.has(c2)) {
- if (window.get(c2) === need.get(c2)) {
- valid--;
- }
- window.set(c2, window.get(c2) - 1);
- }
- }
- }
-
- return res;
-};
-```
diff --git a/docs/js-logs/sort.md b/docs/js-logs/sort.md
deleted file mode 100644
index 6e38886..0000000
--- a/docs/js-logs/sort.md
+++ /dev/null
@@ -1,479 +0,0 @@
----
-nav: JavaScript题解
-group:
- title: 基础算法
- order: 1
-order: 1
-toc: content
----
-
-# 排序
-
-## [215.数组中的第 K 个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) medium
-
-快速搜索
-
-- 首先,针对已经排好序的数组,第 k 大,就是 nums\[len-k\]位置上的元素,后序称为 k'
-- 在快排分区时,其实已经为 p 找到自己在数组中正确对应的位置
-- 若 k' > p,说明要找的元素在 p 的右半部分,也就是 lo=p+1
-- 若 k' < p,说明要找的元素在 p 的左半部分,也就是 hi=p-1
-- 然后递归,直到 p 的位置刚好是 k',直接返回这个位置上的元素即可
-
-```js
-/**
- * @param {number[]} nums
- * @param {number} k
- * @return {number}
- */
-var findKthLargest = function (nums, k) {
- let lo = 0,
- hi = nums.length - 1,
- targetIndex = nums.length - k;
-
- while (lo <= hi) {
- const p = partition(nums, lo, hi);
- if (targetIndex > p) {
- lo = p + 1;
- } else if (targetIndex < p) {
- hi = p - 1;
- } else {
- return nums[p];
- }
- }
-
- return -1;
-};
-
-const partition = (nums, lo, hi) => {
- let p = nums[lo];
- let i = lo + 1,
- j = hi;
- while (i <= j) {
- while (i < hi && nums[i] <= p) {
- i++;
- }
- while (j > lo && nums[j] > p) {
- j--;
- }
- if (i >= j) {
- break;
- }
- swap(nums, i, j);
- }
- swap(nums, lo, j);
- return j;
-};
-
-const swap = (nums, i, j) => {
- const temp = nums[i];
- nums[i] = nums[j];
- nums[j] = temp;
-};
-```
-
-时间复杂度 O(N \* log K) N 是 nums 的次数 ,logK 是循环中使用 insert 和 pop 的复杂度
-空间复杂度 O(K) k 是 最小堆的长度
-
-- 思路
-- 使用最小堆结构的特性解决
-- 最小堆的跟是最小的元素
-- 在遍历过程中进行插入,此时根元素是最小值,且,其他节点都是比根大的值
-- 如果堆中元素个数超过 k,将最小元素踢出堆,即删除根,然后继续插入
-- 以上面步骤全部插入堆中后,根元素即第 K 大的元素
-
-```js
-// -----------------最小堆解法----------------------
-var findKthLargest = function (nums, k) {
- const heap = new MinHeap();
- nums.forEach((item) => {
- heap.insert(item);
- if (heap.size() > k) {
- heap.pop();
- }
- });
- return heap.peek();
-};
-
-class MinHeap {
- constructor() {
- this.heap = [];
- }
-
- getParentIndex(i) {
- return (i - 1) >> 1;
- }
-
- getLeftIndex(i) {
- return i * 2 + 1;
- }
-
- getRightIndex(i) {
- return i * 2 + 2;
- }
-
- swap(i, j) {
- let temp = this.heap[j];
- this.heap[j] = this.heap[i];
- this.heap[i] = temp;
- }
-
- shiftUp(index) {
- if (index === 0) return;
- let parentIndex = this.getParentIndex(index);
- if (this.heap[parentIndex] > this.heap[index]) {
- this.swap(parentIndex, index);
- this.shiftUp(parentIndex);
- }
- }
-
- shiftDown(index) {
- let leftIndex = this.getLeftIndex(index);
- let rightIndex = this.getRightIndex(index);
- if (this.heap[leftIndex] < this.heap[index]) {
- this.swap(leftIndex, index);
- this.shiftDown(leftIndex);
- }
- if (this.heap[rightIndex] < this.heap[index]) {
- this.swap(rightIndex, index);
- this.shiftDown(rightIndex);
- }
- }
-
- insert(val) {
- this.heap.push(val);
- this.shiftUp(this.heap.length - 1);
- }
-
- pop() {
- this.heap[0] = this.heap.pop();
- this.shiftDown(0);
- }
-
- size() {
- return this.heap.length;
- }
-
- peek() {
- return this.heap[0];
- }
-}
-```
-
-## [315.计算右侧小于当前元素的个数](https://leetcode.cn/problems/count-of-smaller-numbers-after-self/) hard
-
-- 技术点
-- 运用到快排局部有序的特征
-- 在合并数组最后 有序的时候,可以通过两个数组指针的位置,计算出 中间 小于插入元素的数量
-
-```js
-/**
- * @param {number[]} nums
- * @return {number[]}
- */
-var countSmaller = function (nums) {
- const len = nums.length;
- const counts = new Array(len).fill(0);
- const temp = new Array(len);
- const arr = new Array(len);
- for (let i = 0; i < len; i++) {
- arr[i] = {
- index: i,
- val: nums[i],
- };
- }
- const merge = (lo, mid, hi) => {
- for (let i = lo; i <= hi; i++) {
- temp[i] = arr[i];
- }
-
- let i = lo,
- j = mid + 1;
- for (let p = lo; p <= hi; p++) {
- if (i === mid + 1) {
- arr[p] = temp[j++];
- } else if (j === hi + 1) {
- arr[p] = temp[i++];
- counts[arr[p].index] += j - (mid + 1);
- } else if (temp[i].val > temp[j].val) {
- arr[p] = temp[j++];
- } else {
- arr[p] = temp[i++];
- counts[arr[p].index] += j - (mid + 1);
- }
- }
- };
-
- const sort = (lo, hi) => {
- if (lo === hi) return;
- let mid = Math.floor(lo + (hi - lo) / 2);
-
- sort(lo, mid);
- sort(mid + 1, hi);
- merge(lo, mid, hi);
- };
-
- sort(0, len - 1);
-
- return counts;
-};
-```
-
-## [327.区间和的个数](https://leetcode.cn/problems/count-of-range-sum/) hard
-
-- 使用数组的前缀和,然后对前缀和进行归并排序
-- 归并排序中,寻找符合条件的区间
-
-```js
-/**
- * @param {number[]} nums
- * @param {number} lower
- * @param {number} upper
- * @return {number}
- */
-var countRangeSum = function (nums, lower, upper) {
- const len = nums.length;
- let preSum = new Array(len + 1).fill(0);
- const temp = new Array(preSum.length);
- for (let i = 0; i < len; i++) {
- preSum[i + 1] = nums[i] + preSum[i];
- }
-
- let count = 0;
-
- const merge = (nums, lo, mid, hi) => {
- for (let i = lo; i <= hi; i++) {
- temp[i] = nums[i];
- }
-
- // // 这段代码会超时
- // for (let i = lo; i <= mid; i++) {
- // for (let j = mid + 1; j <= hi; j++) {
- // const diff = nums[j] - nums[i];
- // if (diff >= lower && diff <= upper) {
- // count++;
- // }
- // }
- // }
-
- let start = mid + 1;
- let end = mid + 1;
- for (let i = lo; i <= mid; i++) {
- while (start <= hi && nums[start] - nums[i] < lower) {
- start++;
- }
- while (end <= hi && nums[end] - nums[i] <= upper) {
- end++;
- }
- count += end - start;
- }
-
- let i = lo,
- j = mid + 1;
- for (let p = lo; p <= hi; p++) {
- if (i === mid + 1) {
- nums[p] = temp[j++];
- } else if (j === hi + 1) {
- nums[p] = temp[i++];
- } else if (temp[i] > temp[j]) {
- nums[p] = temp[j++];
- } else {
- nums[p] = temp[i++];
- }
- }
- };
-
- const sort = (nums, lo, hi) => {
- if (lo === hi) return;
- const mid = Math.floor(lo + (hi - lo) / 2);
- sort(nums, lo, mid);
- sort(nums, mid + 1, hi);
- merge(nums, lo, mid, hi);
- };
-
- sort(preSum, 0, preSum.length - 1);
-
- return count;
-};
-```
-
-## [493.翻转对](https://leetcode.cn/problems/reverse-pairs/) hard
-
-[leetcode 题解](https://leetcode.cn/problems/reverse-pairs/solution/shou-hua-tu-jie-yi-bu-yi-bu-jie-xi-gui-bing-pai-xu/)
-
-```js
-/**
- * @param {number[]} nums
- * @return {number}
- */
-var reversePairs = function (nums) {
- const len = nums.length;
- const temp = new Array(len);
- let count = 0;
-
- const merge = (lo, mid, hi) => {
- for (let i = lo; i <= hi; i++) {
- temp[i] = nums[i];
- }
-
- // ----左右数组有序之后----
- let start = lo,
- end = mid + 1;
-
- while (start <= mid && end <= hi) {
- if (nums[start] > 2 * nums[end]) {
- count += mid + 1 - start;
- end++;
- } else {
- start++;
- }
- }
-
- // ----合并之前----
- let i = lo,
- j = mid + 1;
- for (let p = lo; p <= hi; p++) {
- if (i === mid + 1) {
- nums[p] = temp[j++];
- } else if (j === hi + 1) {
- nums[p] = temp[i++];
- } else if (temp[i] > temp[j]) {
- nums[p] = temp[j++];
- } else {
- nums[p] = temp[i++];
- }
- }
- };
-
- const sort = (lo, hi) => {
- if (lo === hi) return;
- const mid = Math.floor(lo + (hi - lo) / 2);
- sort(lo, mid);
- sort(mid + 1, hi);
- merge(lo, mid, hi);
- };
- sort(0, len - 1);
- return count;
-};
-```
-
-## [912.排序数组](https://leetcode.cn/problems/sort-an-array/) medium
-
-[题解](https://mp.weixin.qq.com/s/8ZTMhvHJK_He48PpSt_AmQ)
-
-```js
-/**
- * @param {number[]} nums
- * @return {number[]}
- */
-var sortArray = function (nums) {
- const temp = new Array(nums.length);
-
- const merge = function (lo, mid, hi) {
- for (let i = lo; i <= hi; i++) {
- temp[i] = nums[i];
- }
-
- let i = lo,
- j = mid + 1;
-
- for (let p = lo; p <= hi; p++) {
- if (i === mid + 1) {
- nums[p] = temp[j++];
- } else if (j === hi + 1) {
- nums[p] = temp[i++];
- } else if (temp[j] < temp[i]) {
- nums[p] = temp[j++];
- } else {
- nums[p] = temp[i++];
- }
- }
- };
-
- const sort = (lo, hi) => {
- if (lo === hi) return;
- const mid = Math.floor(lo + (hi - lo) / 2);
-
- // [lo,mid]有序
- sort(lo, mid);
- // [mid+1,hi]有序
- sort(mid + 1, hi);
- // 合并两个有序数组
- merge(lo, mid, hi);
- };
-
- sort(0, nums.length - 1);
-
- return nums;
-};
-```
-
-归并排序--使用了 shift 方法,比较慢
-
-```js
-// 归并排序
-var sortArray = function (nums) {
- if (nums.length <= 1) return nums;
- let mid = Math.floor(nums.length / 2);
- let left = sortArray(nums.slice(0, mid));
- let right = sortArray(nums.slice(mid));
- return merge(left, right);
-};
-const merge = (left, right) => {
- let res = [];
- while (left.length && right.length) {
- res.push(left[0] < right[0] ? left.shift() : right.shift());
- }
- return res.concat(left, right);
-};
-```
-
-快速排序
-
-```js
-var sortArray = function (nums) {
- quickSort(nums, 0, nums.length - 1);
- return nums;
-};
-
-// 快速排序
-const quickSort = (nums, lo, hi) => {
- if (lo >= hi) return;
-
- // 对[lo,hi]根据p进行划分
- // nums[lo,p-1] <= nums[p] < nums[p,hi];
- const p = partition(nums, lo, hi);
-
- quickSort(nums, lo, p - 1);
- quickSort(nums, p + 1, hi);
-};
-
-// 对[lo,hi]进行区分
-const partition = (nums, lo, hi) => {
- let p = nums[lo];
- let i = lo + 1,
- j = hi;
- while (i <= j) {
- while (i < hi && nums[i] <= p) {
- i++;
- // 结束时,nums[i] > p
- }
- while (j > lo && nums[j] > p) {
- j--;
- // 结束时,nums[j] <= p;
- }
- // 此时 nums[i] <= p < nums[j]
- if (i >= j) {
- break;
- }
- swap(nums, i, j);
- }
- swap(nums, lo, j);
- return j;
-};
-
-const swap = (nums, i, j) => {
- const temp = nums[i];
- nums[i] = nums[j];
- nums[j] = temp;
-};
-```
diff --git a/docs/js-logs/stack.md b/docs/js-logs/stack.md
deleted file mode 100644
index 050e868..0000000
--- a/docs/js-logs/stack.md
+++ /dev/null
@@ -1,238 +0,0 @@
----
-nav: JavaScript题解
-group: 基础数据结构
-order: 4
-toc: content
----
-
-# [栈](https://leetcode.cn/tag/stack/problemset/)
-
-栈(Stack)又名堆栈,它是一种重要的数据结构。
-
-从数据结构角度看,栈也是线性表,其特殊性在于栈的基本操作是线性表操作的子集,它是操作受限的线性表,因此,可称为限定性的数据结构。限定它仅在表尾进行插入或删除操作。表尾称为栈顶,相应地,表头称为栈底。
-
-## [20.有效的括号](https://leetcode.cn/problems/valid-parentheses/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(N)
-
-- 思路:
-- 使用栈结构先进后出的特性
-- 先声明一个栈 stack 变量
-- 遍历整个字符串
-- 发现 ( 、 {、 \[ 就入栈
-- 发现 )、}、] 就和栈顶做比较,若栈顶存在对应的括号,将与之对应的括号出栈
-- 遍历结束后,若栈空,则说明所有括号都能找到相匹配的
-
-优化空间
-
-- 若字符串的长度为奇数、则括号不可能完全出栈、直接 return 即可
-
-```js
-/**
- * @param {string} s
- * @return {boolean}
- */
-var isValid = function (s) {
- if (s === 0) return false;
- if (s.length % 2 === 1) return false;
-
- let stack = [];
- let leftStr = '{[(';
-
- for (let i = 0; i < s.length; i++) {
- let c = s[i];
- // if (leftStr.indexOf(c) !== -1) {
- if (leftStr.includes(c)) {
- stack.push(c);
- } else {
- const top = stack[stack.length - 1];
- if (isMath(top, c)) {
- stack.pop();
- } else {
- return false;
- }
- }
- }
- return stack.length === 0;
-};
-
-const isMath = (left, right) => {
- if (left === '{' && right === '}') return true;
- if (left === '[' && right === ']') return true;
- if (left === '(' && right === ')') return true;
- return false;
-};
-```
-
-## [232.用栈实现队列](https://leetcode.cn/problems/implement-queue-using-stacks/) easy
-
-
-
-
图解
-
-
-```js
-var MyQueue = function () {
- this.stack1 = [];
- this.stack2 = [];
-};
-
-/**
- * @param {number} x
- * @return {void}
- */
-MyQueue.prototype.push = function (x) {
- this.stack1.push(x);
-};
-
-/**
- * @return {number}
- */
-MyQueue.prototype.pop = function () {
- this.peek(); // 先peek,保证stack2不为空
- return this.stack2.pop();
-};
-
-/**
- * @return {number}
- */
-MyQueue.prototype.peek = function () {
- // 当stack2为空时
- if (this.stack2.length === 0) {
- // 将stack1清空
- while (this.stack1.length) {
- const item = this.stack1.pop(); // stack1栈顶
- this.stack2.push(item); // 将stack1栈顶 入栈
- }
- }
- // 返回stack2的栈顶元素
- return this.stack2[this.stack2.length - 1];
-};
-
-/**
- * @return {boolean}
- */
-MyQueue.prototype.empty = function () {
- return this.stack1.length === 0 && this.stack2.length === 0;
-};
-
-/**
- * Your MyQueue object will be instantiated and called as such:
- * var obj = new MyQueue()
- * obj.push(x)
- * var param_2 = obj.pop()
- * var param_3 = obj.peek()
- * var param_4 = obj.empty()
- */
-```
-
-## [678.有效的括号字符串](https://leetcode.cn/problems/valid-parenthesis-string/) medium
-
-思路:
-
-- 使用两个栈,left 存放"(" 的位置,start 存放"\*"的位置
-- 遍历字符串,遇到(、\*时,记录位置
-- 遍历过程中遇到 )时,优先删除 left 中的(,当 left 为空时,删除 start 中的\*,若 start 也为空,说明不匹配,直接返回 false
-- 当 ")" 遍历结束,会出现两种情况
-- 1. left 中的数量比 start 多,说明不平衡,无法正确匹配,返回 false
-- 2. left 中 "(" 的位置,在 start 的右边,即 "\*("这种情况,也无法正确匹配,返回 false
-- 3. 判断完上面两种情况,剩下的情况也就是可以正确匹配的,即 start 中的数量比 left 多,start 中的\*都在 left 的右边,\*就可以匹配完所有的(,也就是有效的
-
-```js
-/**
- * @param {string} s
- * @return {boolean}
- */
-var checkValidString = function (s) {
- let left = [],
- start = [];
-
- for (let i = 0; i < s.length; i++) {
- const n = s[i];
- if (n === '(') {
- left.push(i);
- } else if (n === '*') {
- start.push(i);
- } else {
- if (left.length === 0) {
- if (start.length === 0) return false;
- start.pop();
- } else {
- left.pop();
- }
- }
- }
-
- if (left.length > start.length) return false;
- while (left.length && start.length) {
- if (left.pop() > start.pop()) return false;
- }
- return true;
-};
-```
-
-## [115.最小栈](https://leetcode.cn/problems/min-stack/) medium
-
-
-
-
图解115.最小栈
-
-
-```js
-var MinStack = function () {
- this.stack = [];
- this.minStack = []; // 保存入栈元素的对应的最小值
-};
-
-/**
- * @param {number} val
- * @return {void}
- */
-MinStack.prototype.push = function (val) {
- this.stack.push(val);
- // 维护minStack的栈顶元素最小
- if (
- this.minStack.length === 0 ||
- val <= this.minStack[this.minStack.length - 1]
- ) {
- this.minStack.push(val);
- } else {
- const minStackPeek = this.minStack[this.minStack.length - 1];
- this.minStack.push(minStackPeek);
- }
-};
-
-/**
- * @return {void}
- */
-MinStack.prototype.pop = function () {
- this.stack.pop();
- this.minStack.pop();
-};
-
-/**
- * @return {number}
- */
-MinStack.prototype.top = function () {
- return this.stack[this.stack.length - 1];
-};
-
-/**
- * @return {number}
- */
-MinStack.prototype.getMin = function () {
- return this.minStack[this.minStack.length - 1];
-};
-
-/**
- * Your MinStack object will be instantiated and called as such:
- * var obj = new MinStack()
- * obj.push(val)
- * obj.pop()
- * var param_3 = obj.top()
- * var param_4 = obj.getMin()
- */
-```
-
-
diff --git a/docs/js-logs/string.md b/docs/js-logs/string.md
deleted file mode 100644
index 6e8503a..0000000
--- a/docs/js-logs/string.md
+++ /dev/null
@@ -1,18 +0,0 @@
----
-nav: JavaScript题解
-group: 基础数据结构
-order: 3
-toc: content
----
-
-# 字符串
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/js-logs/sword-point-offer-II.md b/docs/js-logs/sword-point-offer-II.md
deleted file mode 100644
index 2e070b5..0000000
--- a/docs/js-logs/sword-point-offer-II.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-nav: JavaScript题解
-group:
- title: TODO
- order: 3
-order: 1
-toc: content
----
-
-# 剑指 Offer II
-
-
-
-
-
-
diff --git a/docs/js-logs/sword-point-offer.md b/docs/js-logs/sword-point-offer.md
deleted file mode 100644
index 853850b..0000000
--- a/docs/js-logs/sword-point-offer.md
+++ /dev/null
@@ -1,154 +0,0 @@
----
-nav: JavaScript题解
-group:
- title: TODO
- order: 3
-order: 0
-toc: content
----
-
-# 剑指 Offer
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs__blogs__browser.md.07a441c4.chunk.css b/docs__blogs__browser.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__blogs__browser.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__blogs__browser.md.426319db.async.js b/docs__blogs__browser.md.426319db.async.js
new file mode 100644
index 0000000..fe2c611
--- /dev/null
+++ b/docs__blogs__browser.md.426319db.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[227],{43331:function(_,u,i){i.r(u);var c=i(16878),r=i(84475),o=i(646),n=i(25778),s=i(1778),m=i(6749),B=i(48739),h=i(38039),d=i(5899),x=i(93236),e=i(62086);function j(){var t=(0,d.eL)(),l=t.texts;return(0,e.jsx)(d.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u6D4F\u89C8\u5668\u5BF9\u8C61",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6D4F\u89C8\u5668\u5BF9\u8C61",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6D4F\u89C8\u5668\u5BF9\u8C61"]}),(0,e.jsxs)("h2",{id:"\u4E00\u53C2\u8003\u8D44\u6599",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E00\u53C2\u8003\u8D44\u6599",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E00\u3001\u53C2\u8003\u8D44\u6599"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:(0,e.jsx)("a",{href:"https://segmentfault.com/a/1190000014212576",children:l[0].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("a",{href:"https://juejin.cn/post/6844903558576341000",children:l[1].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("a",{href:"https://www.ruanyifeng.com/blog/2009/09/find_element_s_position_using_javascript.html",children:l[2].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("a",{href:"https://juejin.cn/post/6961383795866435591",children:l[3].value})})]}),(0,e.jsxs)("h2",{id:"\u4E8C\u8BA4\u8BC6\u6D4F\u89C8\u5668\u8FD0\u884C\u6001\u4E0B\u7684-js",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E8C\u8BA4\u8BC6\u6D4F\u89C8\u5668\u8FD0\u884C\u6001\u4E0B\u7684-js",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E8C\u3001\u8BA4\u8BC6\u6D4F\u89C8\u5668\u8FD0\u884C\u6001\u4E0B\u7684 js"]}),(0,e.jsxs)("h3",{id:"1\u95EE\u662F\u5426\u4E86\u89E3\u6D4F\u89C8\u5668\u7684\u6267\u884C\u6001\u5206\u5C42\u8BBE\u8BA1",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1\u95EE\u662F\u5426\u4E86\u89E3\u6D4F\u89C8\u5668\u7684\u6267\u884C\u6001\u5206\u5C42\u8BBE\u8BA1",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.\u95EE\uFF1A\u662F\u5426\u4E86\u89E3\u6D4F\u89C8\u5668\u7684\u6267\u884C\u6001\uFF08\u5206\u5C42\u8BBE\u8BA1\uFF09\uFF1F"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[4].value}),(0,e.jsxs)("li",{children:[l[5].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[6].value}),(0,e.jsx)("li",{children:l[7].value})]})]}),(0,e.jsx)("li",{children:l[8].value})]}),(0,e.jsxs)("h3",{id:"2bom",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2bom",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.BOM"]}),(0,e.jsxs)("h4",{id:"1location",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1location",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.",(0,e.jsx)("a",{href:"https://developer.mozilla.org/zh-CN/docs/Web/API/Location",children:l[9].value})]}),(0,e.jsx)("blockquote",{children:(0,e.jsxs)("p",{children:[l[10].value,(0,e.jsx)("br",{}),l[11].value]})}),(0,e.jsx)(s.Z,{lang:"js",children:l[12].value}),(0,e.jsx)("p",{children:l[13].value}),(0,e.jsxs)("ol",{children:[(0,e.jsxs)("li",{children:[l[14].value,(0,e.jsxs)("ol",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[15].value}),l[16].value]}),(0,e.jsxs)("li",{children:[l[17].value,(0,e.jsx)("code",{children:l[18].value}),l[19].value]})]})]}),(0,e.jsxs)("li",{children:[l[20].value,(0,e.jsxs)("ol",{children:[(0,e.jsx)("li",{children:l[21].value}),(0,e.jsxs)("li",{children:[l[22].value,(0,e.jsx)("code",{children:l[23].value}),l[24].value,(0,e.jsx)("code",{children:l[25].value}),l[26].value]})]})]}),(0,e.jsxs)("li",{children:[l[27].value,(0,e.jsxs)("ol",{children:[(0,e.jsx)("li",{children:l[28].value}),(0,e.jsxs)("li",{children:[l[29].value,(0,e.jsx)("code",{children:l[30].value}),l[31].value]}),(0,e.jsxs)("li",{children:[l[32].value,(0,e.jsx)("code",{children:l[33].value}),l[34].value]})]})]})]}),(0,e.jsxs)("h5",{id:"\u62D3\u5C55\u65B9\u5411",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u62D3\u5C55\u65B9\u5411",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u62D3\u5C55\u65B9\u5411\uFF1A"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[35].value,(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[36].value})})]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[37].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[38].value}),(0,e.jsxs)("li",{children:[l[39].value,(0,e.jsx)("code",{children:l[40].value}),l[41].value,(0,e.jsx)("code",{children:l[42].value}),l[43].value]}),(0,e.jsxs)("li",{children:[l[44].value,(0,e.jsx)("code",{children:l[45].value}),l[46].value,(0,e.jsx)("code",{children:l[47].value}),l[48].value,(0,e.jsx)("code",{children:l[49].value}),l[50].value]}),(0,e.jsxs)("li",{children:[l[51].value,(0,e.jsx)("code",{children:l[52].value}),l[53].value,(0,e.jsx)("code",{children:l[54].value}),l[55].value]}),(0,e.jsxs)("li",{children:[l[56].value,(0,e.jsx)("code",{children:l[57].value}),l[58].value,(0,e.jsx)("code",{children:l[59].value}),l[60].value]})]})]}),(0,e.jsxs)("li",{children:[l[61].value,(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[62].value,(0,e.jsx)("code",{children:l[63].value}),l[64].value]}),(0,e.jsxs)("li",{children:[l[65].value,(0,e.jsx)("code",{children:l[66].value}),l[67].value]}),(0,e.jsx)("li",{children:l[68].value})]})]}),(0,e.jsxs)("li",{children:[l[69].value,(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[70].value,(0,e.jsx)("code",{children:l[71].value})]}),(0,e.jsxs)("li",{children:[l[72].value,(0,e.jsx)("code",{children:l[73].value})]})]})]})]}),(0,e.jsxs)("h4",{id:"2history",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2history",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.",(0,e.jsx)("a",{href:"https://developer.mozilla.org/zh-CN/docs/Web/API/History",children:l[74].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[75].value}),(0,e.jsx)("p",{children:l[76].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[77].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[78].value}),(0,e.jsx)("li",{children:l[79].value})]})]}),(0,e.jsxs)("li",{children:[l[80].value,(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[l[81].value,(0,e.jsx)("code",{children:l[82].value}),l[83].value,(0,e.jsx)("code",{children:l[84].value}),l[85].value]})})]})]}),(0,e.jsx)("p",{children:l[86].value}),(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[(0,e.jsx)("a",{href:"https://developer.mozilla.org/zh-CN/docs/Web/API/Window/popstate_event",children:l[87].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[88].value,(0,e.jsx)("code",{children:l[89].value}),l[90].value]}),(0,e.jsxs)("li",{children:[l[91].value,(0,e.jsx)("code",{children:l[92].value}),l[93].value,(0,e.jsx)("code",{children:l[94].value}),l[95].value,(0,e.jsx)("code",{children:l[96].value}),l[97].value]}),(0,e.jsxs)("li",{children:[l[98].value,(0,e.jsx)("code",{children:l[99].value}),l[100].value,(0,e.jsx)("code",{children:l[101].value})]}),(0,e.jsx)("li",{children:l[102].value})]})]})}),(0,e.jsx)("p",{children:l[103].value}),(0,e.jsx)(s.Z,{lang:"js",children:l[104].value}),(0,e.jsxs)("h4",{id:"3navigator",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#3navigator",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.",(0,e.jsx)("a",{href:"https://developer.mozilla.org/zh-CN/docs/Web/API/Navigator",children:l[105].value})]}),(0,e.jsx)("blockquote",{children:(0,e.jsx)("p",{children:l[106].value})}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[107].value,(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[108].value})})]}),(0,e.jsxs)("li",{children:[l[109].value,(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[110].value})})]}),(0,e.jsxs)("li",{children:[l[111].value,(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[112].value})})]}),(0,e.jsxs)("li",{children:[l[113].value,(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[l[114].value,(0,e.jsx)("a",{href:"https://developer.chrome.com/articles/serial/",children:l[115].value}),l[116].value]})})]}),(0,e.jsxs)("li",{children:[l[117].value,(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[l[118].value,(0,e.jsx)("br",{}),l[119].value]})})]})]}),(0,e.jsxs)("h4",{id:"4screen",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#4screen",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"4.",(0,e.jsx)("a",{href:"https://developer.mozilla.org/zh-CN/docs/Web/API/Screen",children:l[120].value})]}),(0,e.jsx)("blockquote",{children:(0,e.jsx)("p",{children:l[121].value})}),(0,e.jsx)("p",{children:l[122].value}),(0,e.jsxs)("h2",{id:"\u4E09\u6D4F\u89C8\u5668\u4E8B\u4EF6",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E09\u6D4F\u89C8\u5668\u4E8B\u4EF6",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E09\u3001\u6D4F\u89C8\u5668\u4E8B\u4EF6"]}),(0,e.jsx)("p",{children:l[123].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[124].value,(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[125].value})})]}),(0,e.jsx)("li",{children:l[126].value}),(0,e.jsxs)("li",{children:[l[127].value,(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[128].value})})]})]}),(0,e.jsx)("p",{children:(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202303131450559.png",alt:"\u6D4F\u89C8\u5668\u4E8B\u4EF6"})}),(0,e.jsxs)("h3",{id:"1addeventlistener-\u7B2C\u4E09\u4E2A\u53C2\u6570",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1addeventlistener-\u7B2C\u4E09\u4E2A\u53C2\u6570",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.addEventListener \u7B2C\u4E09\u4E2A\u53C2\u6570"]}),(0,e.jsx)(s.Z,{lang:"js",children:l[129].value}),(0,e.jsxs)("h3",{id:"2\u963B\u65AD\u4E8B\u4EF6\u4F20\u64AD",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2\u963B\u65AD\u4E8B\u4EF6\u4F20\u64AD",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.\u963B\u65AD\u4E8B\u4EF6\u4F20\u64AD"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[130].value,(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[131].value}),l[132].value]}),(0,e.jsx)("li",{children:l[133].value})]})]}),(0,e.jsxs)("li",{children:[l[134].value,(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[135].value,(0,e.jsx)("code",{children:l[136].value}),l[137].value,(0,e.jsx)("code",{children:l[138].value}),l[139].value]}),(0,e.jsxs)("li",{children:[l[140].value,(0,e.jsx)("code",{children:l[141].value}),l[142].value]}),(0,e.jsxs)("li",{children:[l[143].value,(0,e.jsx)("code",{children:l[144].value}),l[145].value,(0,e.jsx)("code",{children:l[146].value}),l[147].value]})]})]})]}),(0,e.jsxs)("h3",{id:"3\u963B\u6B62\u9ED8\u8BA4\u884C\u4E3A",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#3\u963B\u6B62\u9ED8\u8BA4\u884C\u4E3A",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.\u963B\u6B62\u9ED8\u8BA4\u884C\u4E3A"]}),(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[l[148].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[149].value}),(0,e.jsx)("li",{children:l[150].value})]})]})}),(0,e.jsxs)("h3",{id:"\u62D3\u5C55\u65B9\u5411-1",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u62D3\u5C55\u65B9\u5411-1",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u62D3\u5C55\u65B9\u5411"]}),(0,e.jsxs)("h4",{id:"\u6027\u80FD\u65B9\u5411",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6027\u80FD\u65B9\u5411",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6027\u80FD\u65B9\u5411"]}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[151].value})}),(0,e.jsx)(s.Z,{lang:"js",children:l[152].value}),(0,e.jsxs)("h4",{id:"\u517C\u5BB9\u6027\u65B9\u5411",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u517C\u5BB9\u6027\u65B9\u5411",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u517C\u5BB9\u6027\u65B9\u5411"]}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[153].value})}),(0,e.jsx)("p",{children:l[154].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[155].value,(0,e.jsx)("code",{children:l[156].value}),l[157].value,(0,e.jsx)("code",{children:l[158].value})]}),(0,e.jsxs)("li",{children:[l[159].value,(0,e.jsx)("code",{children:l[160].value}),l[161].value]}),(0,e.jsxs)("li",{children:[l[162].value,(0,e.jsx)("code",{children:l[163].value})]}),(0,e.jsxs)("li",{children:[l[164].value,(0,e.jsx)("code",{children:l[165].value})]})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[166].value}),(0,e.jsxs)("h2",{id:"\u56DB\u7F51\u7EDC\u8BF7\u6C42",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u56DB\u7F51\u7EDC\u8BF7\u6C42",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u56DB\u3001\u7F51\u7EDC\u8BF7\u6C42"]}),(0,e.jsxs)("h3",{id:"1xmlhttprequest",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1xmlhttprequest",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.XMLHttpRequest"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[167].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[168].value}),(0,e.jsx)("li",{children:l[169].value}),(0,e.jsx)("li",{children:l[170].value}),(0,e.jsx)("li",{children:l[171].value}),(0,e.jsxs)("li",{children:[l[172].value,(0,e.jsx)("code",{children:l[173].value}),l[174].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[175].value}),(0,e.jsx)("li",{children:l[176].value}),(0,e.jsx)("li",{children:l[177].value}),(0,e.jsx)("li",{children:l[178].value}),(0,e.jsx)("li",{children:l[179].value})]})]}),(0,e.jsxs)("li",{children:[l[180].value,(0,e.jsx)("code",{children:l[181].value}),l[182].value]}),(0,e.jsx)("li",{children:l[183].value})]})]}),(0,e.jsxs)("li",{children:[l[184].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[185].value}),(0,e.jsx)("li",{children:l[186].value}),(0,e.jsx)("li",{children:l[187].value}),(0,e.jsx)("li",{children:l[188].value}),(0,e.jsx)("li",{children:l[189].value}),(0,e.jsx)("li",{children:l[190].value})]})]})]}),(0,e.jsx)("p",{children:l[191].value}),(0,e.jsx)(s.Z,{lang:"js",children:l[192].value}),(0,e.jsxs)("h3",{id:"2fetch",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2fetch",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.fetch"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[193].value}),(0,e.jsxs)("li",{children:[l[194].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:(0,e.jsx)("code",{children:l[195].value})}),(0,e.jsx)("li",{children:l[196].value}),(0,e.jsx)("li",{children:l[197].value}),(0,e.jsx)("li",{children:l[198].value}),(0,e.jsx)("li",{children:l[199].value}),(0,e.jsx)("li",{children:l[200].value}),(0,e.jsx)("li",{children:l[201].value})]})]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[202].value}),(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[l[203].value,(0,e.jsx)("code",{children:l[204].value}),l[205].value]})})]}),(0,e.jsxs)("li",{children:[l[206].value,(0,e.jsx)("code",{children:l[207].value}),l[208].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:(0,e.jsx)("code",{children:l[209].value})}),(0,e.jsx)("li",{children:l[210].value}),(0,e.jsx)("li",{children:l[211].value}),(0,e.jsx)("li",{children:l[212].value})]})]}),(0,e.jsxs)("li",{children:[l[213].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[214].value}),(0,e.jsx)("li",{children:l[215].value}),(0,e.jsx)("li",{children:l[216].value}),(0,e.jsx)("li",{children:l[217].value})]})]}),(0,e.jsx)("li",{children:l[218].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[219].value}),(0,e.jsxs)("h3",{id:"3http-\u72B6\u6001\u7801\u548C-header",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#3http-\u72B6\u6001\u7801\u548C-header",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.Http \u72B6\u6001\u7801\u548C Header"]}),(0,e.jsxs)("h4",{id:"1\u72B6\u6001\u7801",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1\u72B6\u6001\u7801",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.\u72B6\u6001\u7801"]}),(0,e.jsx)("blockquote",{children:(0,e.jsx)("p",{children:l[220].value})}),(0,e.jsxs)("h5",{id:"123xx",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#123xx",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"[1|2|3]xx"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[221].value}),(0,e.jsx)("li",{children:l[222].value}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[223].value}),l[224].value]}),(0,e.jsx)("li",{children:l[225].value}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[226].value}),l[227].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[228].value}),(0,e.jsx)("li",{children:l[229].value})]})]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[230].value}),l[231].value]}),(0,e.jsxs)("li",{children:[l[232].value,(0,e.jsx)("br",{}),(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202303131648999.png",alt:"3xx"})]})]}),(0,e.jsxs)("h5",{id:"4xx",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#4xx",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"4xx"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[233].value}),(0,e.jsx)("li",{children:l[234].value}),(0,e.jsx)("li",{children:l[235].value}),(0,e.jsxs)("li",{children:[l[236].value,(0,e.jsx)("br",{}),(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202303131651517.png",alt:"4xx"})]})]}),(0,e.jsxs)("h5",{id:"5xx",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#5xx",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"5xx"]}),(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[l[237].value,(0,e.jsx)("br",{}),(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202303131651223.png",alt:"5xx"})]})}),(0,e.jsxs)("h4",{id:"2\u5B57\u6BB5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2\u5B57\u6BB5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.\u5B57\u6BB5"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[238].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[239].value}),(0,e.jsx)("li",{children:l[240].value})]})]}),(0,e.jsx)("li",{children:l[241].value}),(0,e.jsx)("li",{children:l[242].value}),(0,e.jsx)("li",{children:l[243].value}),(0,e.jsxs)("li",{children:[l[244].value,(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[l[245].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[246].value}),(0,e.jsx)("li",{children:l[247].value})]})]})})]}),(0,e.jsxs)("li",{children:[l[248].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[249].value}),(0,e.jsx)("li",{children:l[250].value})]})]}),(0,e.jsx)("li",{children:l[251].value}),(0,e.jsxs)("li",{children:[l[252].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[253].value}),(0,e.jsx)("li",{children:l[254].value}),(0,e.jsx)("li",{children:l[255].value}),(0,e.jsx)("li",{children:l[256].value})]})]}),(0,e.jsxs)("li",{children:[l[257].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[258].value}),(0,e.jsx)("li",{children:l[259].value}),(0,e.jsx)("li",{children:l[260].value})]})]})]}),(0,e.jsx)("p",{children:(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202303131700021.png",alt:"\u5B57\u6BB5"})}),(0,e.jsxs)("h3",{id:"4\u62D3\u5C55\u65B9\u5411",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#4\u62D3\u5C55\u65B9\u5411",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"4.\u62D3\u5C55\u65B9\u5411"]}),(0,e.jsxs)("h4",{id:"\u5982\u4F55\u5E94\u5BF9\u7F51\u7EDC\u4E0D\u7A33\u5B9A\u6CE2\u52A8\u7684\u60C5\u51B5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5982\u4F55\u5E94\u5BF9\u7F51\u7EDC\u4E0D\u7A33\u5B9A\u6CE2\u52A8\u7684\u60C5\u51B5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u5982\u4F55\u5E94\u5BF9\u7F51\u7EDC\u4E0D\u7A33\u5B9A\uFF08\u6CE2\u52A8\uFF09\u7684\u60C5\u51B5\uFF1F"]}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[261].value})}),(0,e.jsx)(s.Z,{lang:"js",children:l[262].value}),(0,e.jsxs)("h4",{id:"\u5982\u4F55\u5904\u7406\u5E76\u53D1\u8BF7\u6C42",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5982\u4F55\u5904\u7406\u5E76\u53D1\u8BF7\u6C42",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u5982\u4F55\u5904\u7406\u5E76\u53D1\u8BF7\u6C42\uFF1F"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[263].value,(0,e.jsx)("code",{children:l[264].value}),l[265].value,(0,e.jsx)("code",{children:l[266].value}),l[267].value,(0,e.jsx)("code",{children:l[268].value}),l[269].value]}),(0,e.jsxs)("li",{children:[l[270].value,(0,e.jsx)("code",{children:l[271].value})]}),(0,e.jsxs)("li",{children:[l[272].value,(0,e.jsx)("code",{children:l[273].value}),l[274].value,(0,e.jsx)("code",{children:l[275].value})]}),(0,e.jsxs)("li",{children:[l[276].value,(0,e.jsx)("code",{children:l[277].value}),l[278].value,(0,e.jsx)("code",{children:l[279].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[280].value,(0,e.jsx)("code",{children:l[281].value}),l[282].value]}),(0,e.jsxs)("li",{children:[l[283].value,(0,e.jsx)("code",{children:l[284].value}),l[285].value,(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[l[286].value,(0,e.jsx)("code",{children:l[287].value}),l[288].value]})})]})]})]})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[289].value})]})})})}u.default=j},48739:function(_,u,i){var c=i(93236),r=function(n){return(0,c.createElement)(n.children)};u.Z=r},38039:function(_,u,i){i.d(u,{Z:function(){return m}});var c=i(54306),r=i.n(c),o=i(93236),n=i(62086),s=function(h){var d,x,e,j=(h==null||(d=h.children)===null||d===void 0?void 0:d.filter(function(a){return a!=`
+ `}))||[],t=(0,o.useState)(0),l=r()(t,2),E=l[0],p=l[1],C=function(v){p(v)};return(0,n.jsxs)("div",{className:"tab-container",children:[(0,n.jsx)("ul",{className:"tab-list",children:j.map(function(a,v){return(0,n.jsx)("li",{className:E===v?"tab-item active":"tab-item",onClick:function(){return C(v)},children:a.props.label},a.props.label)})}),(0,n.jsx)("div",{className:"tab-content",children:(x=j[E])===null||x===void 0||(e=x.props)===null||e===void 0?void 0:e.children})]})},m=s}}]);
diff --git a/docs__blogs__index.md.07a441c4.chunk.css b/docs__blogs__index.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__blogs__index.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__blogs__index.md.142bc297.async.js b/docs__blogs__index.md.142bc297.async.js
new file mode 100644
index 0000000..8bfeb2e
--- /dev/null
+++ b/docs__blogs__index.md.142bc297.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[331],{78555:function(E,n,e){e.r(n);var l=e(16878),a=e(84475),v=e(646),d=e(25778),h=e(1778),T=e(6749),D=e(48739),i=e(38039),t=e(5899),u=e(93236),_=e(62086);function o(){var m=(0,t.eL)(),r=m.texts;return(0,_.jsx)(t.dY,{children:(0,_.jsx)(_.Fragment,{children:(0,_.jsxs)("div",{className:"markdown",children:[(0,_.jsxs)("h1",{id:"\u4ECB\u7ECD",children:[(0,_.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4ECB\u7ECD",children:(0,_.jsx)("span",{className:"icon icon-link"})}),"\u4ECB\u7ECD"]}),(0,_.jsx)("p",{children:r[0].value})]})})})}n.default=o},48739:function(E,n,e){var l=e(93236),a=function(d){return(0,l.createElement)(d.children)};n.Z=a},38039:function(E,n,e){e.d(n,{Z:function(){return T}});var l=e(54306),a=e.n(l),v=e(93236),d=e(62086),h=function(i){var t,u,_,o=(i==null||(t=i.children)===null||t===void 0?void 0:t.filter(function(s){return s!=`
+ `}))||[],m=(0,v.useState)(0),r=a()(m,2),j=r[0],M=r[1],P=function(c){M(c)};return(0,d.jsxs)("div",{className:"tab-container",children:[(0,d.jsx)("ul",{className:"tab-list",children:o.map(function(s,c){return(0,d.jsx)("li",{className:j===c?"tab-item active":"tab-item",onClick:function(){return P(c)},children:s.props.label},s.props.label)})}),(0,d.jsx)("div",{className:"tab-content",children:(u=o[j])===null||u===void 0||(_=u.props)===null||_===void 0?void 0:_.children})]})},T=h}}]);
diff --git a/docs__blogs__js_module.md.07a441c4.chunk.css b/docs__blogs__js_module.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__blogs__js_module.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__blogs__js_module.md.9d95ae0e.async.js b/docs__blogs__js_module.md.9d95ae0e.async.js
new file mode 100644
index 0000000..452dd52
--- /dev/null
+++ b/docs__blogs__js_module.md.9d95ae0e.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[593],{99636:function(_,d,s){s.r(d);var r=s(16878),c=s(84475),t=s(646),n=s(25778),i=s(1778),m=s(6749),g=s(48739),h=s(38039),a=s(5899),j=s(93236),e=s(62086);function x(){var o=(0,a.eL)(),l=o.texts;return(0,e.jsx)(a.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u524D\u7AEF\u6A21\u5757\u5316",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u524D\u7AEF\u6A21\u5757\u5316",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u524D\u7AEF\u6A21\u5757\u5316"]}),(0,e.jsxs)("h2",{id:"\u7701\u6D41chatgpt-\u603B\u7ED3",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u7701\u6D41chatgpt-\u603B\u7ED3",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u7701\u6D41\uFF1AchatGPT \u603B\u7ED3"]}),(0,e.jsxs)("blockquote",{children:[(0,e.jsx)("p",{children:l[0].value}),(0,e.jsx)("p",{children:l[1].value}),(0,e.jsx)("p",{children:l[2].value}),(0,e.jsx)("p",{children:l[3].value}),(0,e.jsx)("p",{children:l[4].value})]}),(0,e.jsxs)("h2",{id:"\u4E00\u53C2\u8003\u8D44\u6599",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E00\u53C2\u8003\u8D44\u6599",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E00\u3001\u53C2\u8003\u8D44\u6599"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:(0,e.jsx)("a",{href:"https://gist.github.com/jkrems/769a8cd8806f7f57903b641c74b5f08a",children:l[5].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("a",{href:"http://www.ruanyifeng.com/blog/2015/09/web-page-performance-in-depth.html",children:l[6].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("a",{href:"https://segmentfault.com/q/1010000000640869",children:l[7].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("a",{href:"https://juejin.cn/post/6844903927104667662",children:l[8].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("a",{href:"https://juejin.cn/post/6943233321765715976#heading-9",children:l[9].value})})]}),(0,e.jsxs)("h2",{id:"\u4E8C\u53D1\u5C55\u5386\u53F2",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E8C\u53D1\u5C55\u5386\u53F2",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E8C\u3001\u53D1\u5C55\u5386\u53F2"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[10].value}),(0,e.jsx)("li",{children:l[11].value}),(0,e.jsx)("li",{children:l[12].value}),(0,e.jsx)("li",{children:l[13].value})]}),(0,e.jsx)("p",{children:l[14].value}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[15].value})}),(0,e.jsxs)("h3",{id:"1\u65E0\u6A21\u5757\u5316",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1\u65E0\u6A21\u5757\u5316",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.\u65E0\u6A21\u5757\u5316"]}),(0,e.jsx)("p",{children:l[16].value}),(0,e.jsxs)("ol",{children:[(0,e.jsx)("li",{children:l[17].value}),(0,e.jsx)("li",{children:l[18].value}),(0,e.jsx)("li",{children:l[19].value})]}),(0,e.jsx)("p",{children:(0,e.jsx)("strong",{children:l[20].value})}),(0,e.jsx)(i.Z,{lang:"js",children:l[21].value}),(0,e.jsx)("p",{children:l[22].value}),(0,e.jsxs)("h4",{id:"\u5F15\u51FA\u7684\u95EE\u9898",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5F15\u51FA\u7684\u95EE\u9898",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u5F15\u51FA\u7684\u95EE\u9898:"]}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[23].value})}),(0,e.jsx)("p",{children:(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202303091712520.png",alt:"async & defer \u7684\u533A\u522B"})}),(0,e.jsxs)("p",{children:[l[24].value,(0,e.jsx)("br",{}),l[25].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[26].value}),(0,e.jsxs)("li",{children:[l[27].value,(0,e.jsx)("strong",{children:l[28].value}),l[29].value]}),(0,e.jsxs)("li",{children:[l[30].value,(0,e.jsx)("strong",{children:l[31].value}),l[32].value]}),(0,e.jsx)("li",{children:l[33].value}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[34].value}),l[35].value,(0,e.jsx)("code",{children:l[36].value}),l[37].value,(0,e.jsx)("code",{children:l[38].value}),l[39].value,(0,e.jsx)("code",{children:l[40].value}),l[41].value]})]}),(0,e.jsxs)("h4",{id:"\u6A2A\u5411\u62D3\u5C55",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6A2A\u5411\u62D3\u5C55",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6A2A\u5411\u62D3\u5C55"]}),(0,e.jsxs)("ol",{children:[(0,e.jsx)("li",{children:l[42].value}),(0,e.jsxs)("li",{children:[l[43].value,(0,e.jsxs)("ol",{children:[(0,e.jsx)("li",{children:(0,e.jsx)("strong",{children:l[44].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("strong",{children:l[45].value})}),(0,e.jsx)("li",{children:l[46].value})]})]}),(0,e.jsxs)("li",{children:[l[47].value,(0,e.jsx)("ol",{children:(0,e.jsx)("li",{children:l[48].value})})]})]}),(0,e.jsxs)("h3",{id:"2iife",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2iife",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.IIFE"]}),(0,e.jsxs)("p",{children:[l[49].value,(0,e.jsx)("br",{}),l[50].value,(0,e.jsx)("br",{}),l[51].value]}),(0,e.jsx)(i.Z,{lang:"js",children:l[52].value}),(0,e.jsxs)("h3",{id:"3commonjscjs",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#3commonjscjs",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.Commonjs(cjs)"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[53].value}),(0,e.jsxs)("li",{children:[l[54].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[55].value}),(0,e.jsx)("li",{children:l[56].value}),(0,e.jsx)("li",{children:l[57].value})]})]}),(0,e.jsxs)("li",{children:[l[58].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[59].value}),(0,e.jsx)("li",{children:l[60].value})]})]}),(0,e.jsxs)("li",{children:[l[61].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[62].value}),(0,e.jsx)("li",{children:l[63].value})]})]})]}),(0,e.jsx)(i.Z,{lang:"js",children:l[64].value}),(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[l[65].value,(0,e.jsx)("strong",{children:l[66].value}),l[67].value,(0,e.jsx)("strong",{children:l[68].value})]})}),(0,e.jsx)(i.Z,{lang:"js",children:l[69].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[70].value,(0,e.jsx)("strong",{children:l[71].value}),l[72].value,(0,e.jsx)("strong",{children:l[73].value}),l[74].value]}),(0,e.jsxs)("li",{children:[l[75].value,(0,e.jsx)("strong",{children:l[76].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[77].value}),(0,e.jsxs)("li",{children:[l[78].value,(0,e.jsx)("strong",{children:l[79].value}),l[80].value]})]})]})]}),(0,e.jsxs)("h3",{id:"4amd",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#4amd",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"4.AMD"]}),(0,e.jsxs)("p",{children:[l[81].value,(0,e.jsx)("br",{}),l[82].value]}),(0,e.jsxs)("p",{children:[l[83].value,(0,e.jsx)("a",{href:"https://requirejs.org/",children:l[84].value})]}),(0,e.jsx)("p",{children:l[85].value}),(0,e.jsx)(i.Z,{lang:"js",children:l[86].value}),(0,e.jsx)("p",{children:l[87].value}),(0,e.jsx)(i.Z,{lang:"js",children:l[88].value}),(0,e.jsx)("p",{children:l[89].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[90].value,(0,e.jsx)("strong",{children:l[91].value}),l[92].value,(0,e.jsx)("strong",{children:l[93].value}),l[94].value]}),(0,e.jsx)("li",{children:l[95].value})]}),(0,e.jsxs)("h4",{id:"\u5F15\u51FA\u7684\u95EE\u9898-1",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5F15\u51FA\u7684\u95EE\u9898-1",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u5F15\u51FA\u7684\u95EE\u9898\uFF1A"]}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[96].value})}),(0,e.jsx)(i.Z,{lang:"js",children:l[97].value}),(0,e.jsxs)("h3",{id:"5cmd",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#5cmd",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"5.CMD"]}),(0,e.jsxs)("p",{children:[l[98].value,(0,e.jsx)("strong",{children:l[99].value}),l[100].value,(0,e.jsx)("strong",{children:l[101].value}),(0,e.jsx)("br",{}),l[102].value,(0,e.jsx)("strong",{children:l[103].value}),l[104].value,(0,e.jsx)("br",{}),l[105].value]}),(0,e.jsxs)("p",{children:[l[106].value,(0,e.jsx)("a",{href:"https://seajs.github.io/seajs/docs/",children:l[107].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:l[108].value}),(0,e.jsx)("p",{children:l[109].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[110].value}),(0,e.jsx)("li",{children:l[111].value})]}),(0,e.jsxs)("h3",{id:"6umd",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#6umd",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"6.UMD"]}),(0,e.jsxs)("p",{children:[l[112].value,(0,e.jsx)("code",{children:l[113].value}),l[114].value,(0,e.jsx)("code",{children:l[115].value}),l[116].value,(0,e.jsx)("code",{children:l[117].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:l[118].value}),(0,e.jsxs)("h3",{id:"7esm",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#7esm",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"7.ESM"]}),(0,e.jsxs)("p",{children:[l[119].value,(0,e.jsx)("br",{}),l[120].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[121].value}),(0,e.jsx)("li",{children:l[122].value}),(0,e.jsxs)("li",{children:[l[123].value,(0,e.jsx)("code",{children:l[124].value}),l[125].value,(0,e.jsx)("code",{children:l[126].value})]}),(0,e.jsxs)("li",{children:[l[127].value,(0,e.jsx)("code",{children:l[128].value})]}),(0,e.jsxs)("li",{children:[l[129].value,(0,e.jsx)("code",{children:l[130].value}),l[131].value]})]})]})})})}d.default=x},48739:function(_,d,s){var r=s(93236),c=function(n){return(0,r.createElement)(n.children)};d.Z=c},38039:function(_,d,s){s.d(d,{Z:function(){return m}});var r=s(54306),c=s.n(r),t=s(93236),n=s(62086),i=function(h){var a,j,e,x=(h==null||(a=h.children)===null||a===void 0?void 0:a.filter(function(u){return u!=`
+ `}))||[],o=(0,t.useState)(0),l=c()(o,2),E=l[0],f=l[1],p=function(v){f(v)};return(0,n.jsxs)("div",{className:"tab-container",children:[(0,n.jsx)("ul",{className:"tab-list",children:x.map(function(u,v){return(0,n.jsx)("li",{className:E===v?"tab-item active":"tab-item",onClick:function(){return p(v)},children:u.props.label},u.props.label)})}),(0,n.jsx)("div",{className:"tab-content",children:(j=x[E])===null||j===void 0||(e=j.props)===null||e===void 0?void 0:e.children})]})},m=i}}]);
diff --git a/docs__blogs__performance.md.07a441c4.chunk.css b/docs__blogs__performance.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__blogs__performance.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__blogs__performance.md.5f99c559.async.js b/docs__blogs__performance.md.5f99c559.async.js
new file mode 100644
index 0000000..2f53930
--- /dev/null
+++ b/docs__blogs__performance.md.5f99c559.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[501],{80800:function(_,u,i){i.r(u);var c=i(16878),r=i(84475),t=i(646),n=i(25778),s=i(1778),o=i(6749),g=i(48739),h=i(38039),d=i(5899),x=i(93236),e=i(62086);function j(){var p=(0,d.eL)(),l=p.texts;return(0,e.jsx)(d.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u524D\u7AEF\u6027\u80FD\u6307\u6807\u4F18\u5316",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u524D\u7AEF\u6027\u80FD\u6307\u6807\u4F18\u5316",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u524D\u7AEF\u6027\u80FD\u6307\u6807&\u4F18\u5316"]}),(0,e.jsxs)("h2",{id:"\u53C2\u8003\u8D44\u6599",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u53C2\u8003\u8D44\u6599",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u53C2\u8003\u8D44\u6599"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:(0,e.jsx)("a",{href:"https://zhuanlan.zhihu.com/p/133906695",children:l[0].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("a",{href:"https://web.dev/vitals/",children:l[1].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("a",{href:"https://juejin.cn/post/6844903604596244493",children:l[2].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("a",{href:"https://blog.csdn.net/weixin_45792953/article/details/112168794",children:l[3].value})})]}),(0,e.jsxs)("h2",{id:"\u524D\u7F6E\u77E5\u8BC6",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u524D\u7F6E\u77E5\u8BC6",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u524D\u7F6E\u77E5\u8BC6"]}),(0,e.jsxs)("p",{children:[l[4].value,(0,e.jsx)("br",{}),(0,e.jsx)("strong",{children:l[5].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[6].value,(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[7].value})})]}),(0,e.jsxs)("li",{children:[l[8].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[9].value}),(0,e.jsx)("li",{children:l[10].value}),(0,e.jsx)("li",{children:l[11].value}),(0,e.jsx)("li",{children:l[12].value}),(0,e.jsx)("li",{children:l[13].value}),(0,e.jsx)("li",{children:l[14].value})]})]}),(0,e.jsxs)("li",{children:[l[15].value,(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[16].value,(0,e.jsx)("code",{children:l[17].value}),l[18].value,(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[l[19].value,(0,e.jsx)("code",{children:l[20].value}),l[21].value,(0,e.jsx)("code",{children:l[22].value}),l[23].value]})})]}),(0,e.jsxs)("li",{children:[l[24].value,(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[25].value})})]}),(0,e.jsxs)("li",{children:[l[26].value,(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[l[27].value,(0,e.jsx)("code",{children:l[28].value}),l[29].value]})})]}),(0,e.jsxs)("li",{children:[l[30].value,(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[l[31].value,(0,e.jsx)("code",{children:l[32].value}),l[33].value,(0,e.jsx)("code",{children:l[34].value}),l[35].value]})})]})]})]}),(0,e.jsxs)("li",{children:[l[36].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[37].value}),(0,e.jsx)("li",{children:l[38].value}),(0,e.jsx)("li",{children:l[39].value}),(0,e.jsx)("li",{children:l[40].value})]})]}),(0,e.jsxs)("li",{children:[l[41].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[42].value}),(0,e.jsx)("li",{children:l[43].value}),(0,e.jsx)("li",{children:l[44].value}),(0,e.jsx)("li",{children:l[45].value}),(0,e.jsx)("li",{children:l[46].value}),(0,e.jsxs)("li",{children:[l[47].value,(0,e.jsx)("code",{children:l[48].value}),l[49].value,(0,e.jsx)("code",{children:l[50].value}),l[51].value]}),(0,e.jsxs)("li",{children:[l[52].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[53].value}),(0,e.jsx)("li",{children:l[54].value})]})]})]})]}),(0,e.jsxs)("li",{children:[l[55].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[56].value}),(0,e.jsx)("li",{children:l[57].value}),(0,e.jsx)("li",{children:l[58].value}),(0,e.jsx)("li",{children:l[59].value}),(0,e.jsx)("li",{children:l[60].value})]})]})]}),(0,e.jsxs)("p",{children:[l[61].value,(0,e.jsx)("br",{}),(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202303141548343.png",alt:"\u56FE1.tcp\u4E09\u6B21\u63E1\u624B\u4E0E\u56DB\u6B21\u6325\u624B"})]}),(0,e.jsxs)("p",{children:[l[62].value,(0,e.jsx)("br",{}),(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202303141750038.png",alt:"\u56FE2.\u6D4F\u89C8\u5668\u89E3\u6790\u54CD\u5E94\u5185\u5BB9\u5E76\u6E32\u67D3\u9875\u9762"})]}),(0,e.jsxs)("h3",{id:"\u62D3\u5C55\u65B9\u5411",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u62D3\u5C55\u65B9\u5411",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u62D3\u5C55\u65B9\u5411"]}),(0,e.jsxs)("h4",{id:"tcp-\u4E0E-udp-\u7684\u533A\u522B",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#tcp-\u4E0E-udp-\u7684\u533A\u522B",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"TCP \u4E0E UDP \u7684\u533A\u522B\uFF1F"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[63].value,(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[64].value,(0,e.jsx)("code",{children:l[65].value}),l[66].value,(0,e.jsx)("code",{children:l[67].value}),l[68].value,(0,e.jsx)("code",{children:l[69].value}),l[70].value]}),(0,e.jsxs)("li",{children:[l[71].value,(0,e.jsx)("code",{children:l[72].value}),l[73].value]}),(0,e.jsxs)("li",{children:[l[74].value,(0,e.jsx)("code",{children:l[75].value}),l[76].value,(0,e.jsx)("code",{children:l[77].value}),l[78].value]}),(0,e.jsx)("li",{children:l[79].value})]})]}),(0,e.jsxs)("li",{children:[l[80].value,(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[81].value,(0,e.jsx)("code",{children:l[82].value}),l[83].value]}),(0,e.jsxs)("li",{children:[l[84].value,(0,e.jsx)("code",{children:l[85].value}),l[86].value,(0,e.jsx)("code",{children:l[87].value})]}),(0,e.jsxs)("li",{children:[l[88].value,(0,e.jsx)("code",{children:l[89].value}),l[90].value]}),(0,e.jsx)("li",{children:l[91].value}),(0,e.jsxs)("li",{children:[l[92].value,(0,e.jsx)("code",{children:l[93].value}),l[94].value]})]})]})]}),(0,e.jsxs)("h4",{id:"http101120-\u7684\u533A\u522B",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#http101120-\u7684\u533A\u522B",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"HTTP1.0\u30011.1\u30012.0 \u7684\u533A\u522B\uFF1F"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[95].value,(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[l[96].value,(0,e.jsx)("code",{children:l[97].value}),l[98].value,(0,e.jsx)("code",{children:l[99].value}),l[100].value]})})]}),(0,e.jsxs)("li",{children:[l[101].value,(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[102].value,(0,e.jsx)("code",{children:l[103].value}),l[104].value]}),(0,e.jsxs)("li",{children:[l[105].value,(0,e.jsx)("code",{children:l[106].value}),l[107].value]}),(0,e.jsxs)("li",{children:[l[108].value,(0,e.jsx)("code",{children:l[109].value}),l[110].value,(0,e.jsx)("code",{children:l[111].value})]})]})]}),(0,e.jsxs)("li",{children:[l[112].value,(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[113].value,(0,e.jsx)("code",{children:l[114].value}),l[115].value]}),(0,e.jsxs)("li",{children:[l[116].value,(0,e.jsx)("code",{children:l[117].value}),l[118].value,(0,e.jsx)("code",{children:l[119].value}),l[120].value]}),(0,e.jsx)("li",{children:l[121].value})]})]})]}),(0,e.jsxs)("h4",{id:"http11-\u957F\u8FDE\u63A5\u548C-20-\u591A\u8DEF\u590D\u7528\u7684\u533A\u522B",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#http11-\u957F\u8FDE\u63A5\u548C-20-\u591A\u8DEF\u590D\u7528\u7684\u533A\u522B",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"HTTP1.1 \u957F\u8FDE\u63A5\u548C 2.0 \u591A\u8DEF\u590D\u7528\u7684\u533A\u522B\uFF1F"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[122].value,(0,e.jsx)("code",{children:l[123].value}),l[124].value,(0,e.jsx)("code",{children:l[125].value}),l[126].value]}),(0,e.jsxs)("li",{children:[l[127].value,(0,e.jsx)("code",{children:l[128].value}),l[129].value,(0,e.jsx)("code",{children:l[130].value}),l[131].value]})]}),(0,e.jsxs)("h4",{id:"\u4E3A\u4EC0\u4E48-http11-\u4E0D\u80FD\u5B9E\u73B0\u591A\u8DEF\u590D\u7528",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E3A\u4EC0\u4E48-http11-\u4E0D\u80FD\u5B9E\u73B0\u591A\u8DEF\u590D\u7528",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E3A\u4EC0\u4E48 HTTP1.1 \u4E0D\u80FD\u5B9E\u73B0\u591A\u8DEF\u590D\u7528\uFF1F"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[132].value,(0,e.jsx)("code",{children:l[133].value}),l[134].value,(0,e.jsx)("code",{children:l[135].value}),l[136].value]}),(0,e.jsxs)("li",{children:[l[137].value,(0,e.jsx)("code",{children:l[138].value}),l[139].value,(0,e.jsx)("code",{children:l[140].value}),l[141].value,(0,e.jsx)("code",{children:l[142].value}),l[143].value]}),(0,e.jsxs)("li",{children:[l[144].value,(0,e.jsx)("code",{children:l[145].value})]}),(0,e.jsxs)("li",{children:[l[146].value,(0,e.jsx)("code",{children:l[147].value}),l[148].value]}),(0,e.jsxs)("li",{children:[l[149].value,(0,e.jsx)("code",{children:l[150].value}),l[151].value]}),(0,e.jsxs)("li",{children:[l[152].value,(0,e.jsx)("code",{children:l[153].value}),l[154].value]}),(0,e.jsxs)("li",{children:[l[155].value,(0,e.jsx)("code",{children:l[156].value}),l[157].value]})]}),(0,e.jsxs)("h4",{id:"\u4EC0\u4E48\u662F-cdncdn-\u56DE\u6E90",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4EC0\u4E48\u662F-cdncdn-\u56DE\u6E90",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4EC0\u4E48\u662F CDN\uFF1F\u3001CDN \u56DE\u6E90\uFF1F"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[158].value,(0,e.jsx)("code",{children:l[159].value}),l[160].value,(0,e.jsx)("code",{children:l[161].value}),l[162].value]}),(0,e.jsxs)("li",{children:[l[163].value,(0,e.jsx)("code",{children:l[164].value}),l[165].value]})]}),(0,e.jsxs)("h4",{id:"js-\u4E2D\u7684\u5783\u573E\u56DE\u6536\u673A\u5236gc",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#js-\u4E2D\u7684\u5783\u573E\u56DE\u6536\u673A\u5236gc",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"JS \u4E2D\u7684\u5783\u573E\u56DE\u6536\u673A\u5236\uFF08GC\uFF09"]}),(0,e.jsx)("p",{children:l[166].value}),(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[l[167].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[168].value}),(0,e.jsx)("li",{children:l[169].value}),(0,e.jsxs)("li",{children:[l[170].value,(0,e.jsx)("br",{}),l[171].value]})]})]})}),(0,e.jsx)(s.Z,{lang:"js",children:l[172].value}),(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[l[173].value,(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[174].value,(0,e.jsx)("code",{children:l[175].value}),l[176].value]}),(0,e.jsx)("li",{children:l[177].value})]})]})}),(0,e.jsx)("p",{children:l[178].value}),(0,e.jsx)(s.Z,{lang:"js",children:l[179].value}),(0,e.jsxs)("p",{children:[l[180].value,(0,e.jsx)("br",{}),l[181].value,(0,e.jsx)("br",{}),l[182].value]}),(0,e.jsxs)("h2",{id:"\u68C0\u6D4B\u5DE5\u5177",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u68C0\u6D4B\u5DE5\u5177",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u68C0\u6D4B\u5DE5\u5177"]}),(0,e.jsx)("p",{children:l[183].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[184].value,(0,e.jsx)("a",{href:"https://developer.mozilla.org/zh-CN/docs/Web/API/Performance_API",children:l[185].value})]}),(0,e.jsxs)("li",{children:[l[186].value,(0,e.jsx)("a",{href:"https://developer.mozilla.org/zh-CN/docs/Web/API/PerformanceObserver/observe",children:l[187].value})]}),(0,e.jsxs)("li",{children:[l[188].value,(0,e.jsx)("a",{href:"https://github.com/GoogleChrome/web-vitals",children:l[189].value})]}),(0,e.jsxs)("li",{children:[l[190].value,(0,e.jsx)("a",{href:"https://developer.chrome.com/docs/lighthouse/overview/",children:l[191].value})]})]}),(0,e.jsxs)("h3",{id:"1performance",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1performance",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.performance"]}),(0,e.jsxs)("p",{children:[l[192].value,(0,e.jsx)("a",{href:"https://developer.mozilla.org/en-US/docs/Web/API/Navigation_timing_API",children:l[193].value}),l[194].value,(0,e.jsx)("a",{href:"https://developer.mozilla.org/en-US/docs/Web/API/User_Timing_API",children:l[195].value}),l[196].value,(0,e.jsx)("a",{href:"https://developer.mozilla.org/en-US/docs/Web/API/Resource_Timing_API",children:l[197].value}),l[198].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[199].value}),(0,e.jsx)("li",{children:l[200].value}),(0,e.jsxs)("li",{children:[l[201].value,(0,e.jsx)("br",{}),l[202].value,(0,e.jsx)("br",{}),(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202303151130209.png",alt:"Navigation Timing API"})]})]}),(0,e.jsxs)(o.Z,{children:[(0,e.jsx)("thead",{children:(0,e.jsxs)("tr",{children:[(0,e.jsx)("th",{align:"center",children:l[203].value}),(0,e.jsx)("th",{align:"center",children:l[204].value})]})}),(0,e.jsxs)("tbody",{children:[(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{align:"center",children:l[205].value}),(0,e.jsx)("td",{align:"center",children:l[206].value})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{align:"center",children:l[207].value}),(0,e.jsx)("td",{align:"center",children:l[208].value})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{align:"center",children:l[209].value}),(0,e.jsx)("td",{align:"center",children:l[210].value})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{align:"center",children:l[211].value}),(0,e.jsx)("td",{align:"center",children:l[212].value})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{align:"center",children:l[213].value}),(0,e.jsx)("td",{align:"center",children:l[214].value})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{align:"center",children:l[215].value}),(0,e.jsx)("td",{align:"center",children:l[216].value})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{align:"center",children:l[217].value}),(0,e.jsx)("td",{align:"center",children:l[218].value})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{align:"center",children:l[219].value}),(0,e.jsx)("td",{align:"center",children:l[220].value})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{align:"center",children:l[221].value}),(0,e.jsx)("td",{align:"center",children:l[222].value})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{align:"center",children:l[223].value}),(0,e.jsx)("td",{align:"center",children:l[224].value})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{align:"center",children:l[225].value}),(0,e.jsx)("td",{align:"center",children:l[226].value})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{align:"center",children:l[227].value}),(0,e.jsx)("td",{align:"center",children:l[228].value})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{align:"center",children:l[229].value}),(0,e.jsx)("td",{align:"center",children:l[230].value})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{align:"center",children:l[231].value}),(0,e.jsx)("td",{align:"center",children:l[232].value})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{align:"center",children:l[233].value}),(0,e.jsx)("td",{align:"center",children:l[234].value})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{align:"center",children:l[235].value}),(0,e.jsx)("td",{align:"center",children:l[236].value})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{align:"center",children:l[237].value}),(0,e.jsx)("td",{align:"center",children:l[238].value})]})]})]}),(0,e.jsxs)("h3",{id:"2performanceobserver",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2performanceobserver",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.performanceObserver"]}),(0,e.jsxs)("p",{children:[l[239].value,(0,e.jsx)("code",{children:l[240].value}),l[241].value]}),(0,e.jsxs)("p",{children:[l[242].value,(0,e.jsx)("code",{children:l[243].value}),l[244].value]}),(0,e.jsx)(s.Z,{lang:"js",children:l[245].value}),(0,e.jsxs)("h3",{id:"3web-vitals",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#3web-vitals",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.web-vitals"]}),(0,e.jsx)("p",{children:l[246].value}),(0,e.jsx)(s.Z,{lang:"js",children:l[247].value}),(0,e.jsxs)("h3",{id:"4lighthouse",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#4lighthouse",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"4.Lighthouse"]}),(0,e.jsxs)("p",{children:[l[248].value,(0,e.jsx)("code",{children:l[249].value}),l[250].value,(0,e.jsx)("br",{}),l[251].value]}),(0,e.jsx)(s.Z,{lang:"js",children:l[252].value}),(0,e.jsxs)("h2",{id:"\u6027\u80FD\u6307\u6807",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6027\u80FD\u6307\u6807",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6027\u80FD\u6307\u6807"]}),(0,e.jsxs)("h3",{id:"1\u767D\u5C4F\u65F6\u95F4-fp",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1\u767D\u5C4F\u65F6\u95F4-fp",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.\u767D\u5C4F\u65F6\u95F4 FP"]}),(0,e.jsx)("p",{children:l[253].value}),(0,e.jsx)(s.Z,{lang:"js",children:l[254].value}),(0,e.jsxs)("h3",{id:"2\u9996\u6B21\u5185\u5BB9\u7ED8\u5236\u65F6\u95F4-fcp",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2\u9996\u6B21\u5185\u5BB9\u7ED8\u5236\u65F6\u95F4-fcp",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.\u9996\u6B21\u5185\u5BB9\u7ED8\u5236\u65F6\u95F4 FCP"]}),(0,e.jsx)("p",{children:l[255].value}),(0,e.jsx)("p",{children:l[256].value}),(0,e.jsx)(s.Z,{lang:"js",children:l[257].value}),(0,e.jsxs)("h3",{id:"3\u65F6\u95F4",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#3\u65F6\u95F4",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.\u2FB8\u2EDA\u65F6\u95F4"]}),(0,e.jsx)("p",{children:l[258].value}),(0,e.jsx)(s.Z,{lang:"js",children:l[259].value}),(0,e.jsxs)("h3",{id:"4\u6700\u5185\u5BB9\u7ED8\u5236-lcp",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#4\u6700\u5185\u5BB9\u7ED8\u5236-lcp",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"4.\u6700\u2F24\u5185\u5BB9\u7ED8\u5236 LCP"]}),(0,e.jsx)("p",{children:l[260].value}),(0,e.jsx)(s.Z,{lang:"js",children:l[261].value}),(0,e.jsxs)("h3",{id:"5\u6B21\u53EF\u4EA4\u4E92\u65F6\u95F4-tti",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#5\u6B21\u53EF\u4EA4\u4E92\u65F6\u95F4-tti",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"5.\u2FB8\u6B21\u53EF\u4EA4\u4E92\u65F6\u95F4 TTI"]}),(0,e.jsx)("p",{children:l[262].value}),(0,e.jsxs)("ol",{children:[(0,e.jsx)("li",{children:l[263].value}),(0,e.jsx)("li",{children:l[264].value}),(0,e.jsx)("li",{children:l[265].value})]}),(0,e.jsx)("p",{children:(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202303151150707.png",alt:"TTI"})}),(0,e.jsx)(s.Z,{lang:"js",children:l[266].value}),(0,e.jsxs)("h3",{id:"6\u6B21\u8F93\u5EF6\u8FDF-fid",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#6\u6B21\u8F93\u5EF6\u8FDF-fid",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"6.\u2FB8\u6B21\u8F93\u2F0A\u5EF6\u8FDF FID"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[267].value}),(0,e.jsx)("li",{children:l[268].value}),(0,e.jsx)("li",{children:l[269].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[270].value}),(0,e.jsxs)("h3",{id:"7\u7D2F\u8BA1\u4F4D\u79FB\u504F\u79FB-cls",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#7\u7D2F\u8BA1\u4F4D\u79FB\u504F\u79FB-cls",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"7.\u7D2F\u8BA1\u4F4D\u79FB\u504F\u79FB CLS"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[271].value}),(0,e.jsx)("li",{children:l[272].value}),(0,e.jsx)("li",{children:l[273].value}),(0,e.jsx)("li",{children:(0,e.jsx)("a",{href:"https://web.dev/cls/",children:(0,e.jsx)("code",{children:l[274].value})})}),(0,e.jsx)("li",{children:l[275].value}),(0,e.jsxs)("li",{children:[l[276].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[277].value}),(0,e.jsx)("li",{children:l[278].value}),(0,e.jsx)("li",{children:l[279].value}),(0,e.jsx)("li",{children:l[280].value}),(0,e.jsx)("li",{children:l[281].value})]})]})]}),(0,e.jsx)("p",{children:(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202303151155600.png",alt:"CLS"})}),(0,e.jsx)(s.Z,{lang:"js",children:l[282].value}),(0,e.jsxs)("h3",{id:"8\u8C37\u6B4C\u6807\u51C6",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#8\u8C37\u6B4C\u6807\u51C6",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"8.\u8C37\u6B4C\u6807\u51C6"]}),(0,e.jsx)("p",{children:(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202303151203127.png",alt:"\u6307\u6807"})}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[283].value}),(0,e.jsx)("li",{children:l[284].value}),(0,e.jsx)("li",{children:l[285].value})]}),(0,e.jsxs)("h3",{id:"9\u5982\u4F55\u4F7F\u7528",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#9\u5982\u4F55\u4F7F\u7528",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"9.\u5982\u4F55\u4F7F\u7528"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[286].value}),(0,e.jsxs)("li",{children:[l[287].value,(0,e.jsx)("code",{children:l[288].value})]}),(0,e.jsx)("li",{children:l[289].value})]}),(0,e.jsxs)("h2",{id:"\u4F18\u5316\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4F18\u5316\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4F18\u5316\u65B9\u6CD5"]}),(0,e.jsxs)("h3",{id:"1lcp",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1lcp",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.",(0,e.jsx)("a",{href:"https://web.dev/optimize-lcp/",children:l[290].value})]}),(0,e.jsx)("p",{children:l[291].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[292].value}),(0,e.jsx)("li",{children:l[293].value}),(0,e.jsx)("li",{children:l[294].value}),(0,e.jsx)("li",{children:l[295].value})]}),(0,e.jsx)("p",{children:l[296].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[297].value}),(0,e.jsx)("li",{children:l[298].value}),(0,e.jsx)("li",{children:l[299].value}),(0,e.jsx)("li",{children:l[300].value}),(0,e.jsx)("li",{children:l[301].value}),(0,e.jsx)("li",{children:l[302].value}),(0,e.jsx)("li",{children:l[303].value}),(0,e.jsx)("li",{children:l[304].value}),(0,e.jsx)("li",{children:l[305].value})]}),(0,e.jsxs)("h3",{id:"2fid",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2fid",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.",(0,e.jsx)("a",{href:"https://web.dev/optimize-fid/",children:l[306].value})]}),(0,e.jsx)("p",{children:l[307].value}),(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[l[308].value,(0,e.jsx)("code",{children:l[309].value}),l[310].value]})}),(0,e.jsx)("p",{children:l[311].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:(0,e.jsx)("code",{children:l[312].value})}),(0,e.jsxs)("li",{children:[l[313].value,(0,e.jsx)("code",{children:l[314].value}),l[315].value]}),(0,e.jsxs)("li",{children:[l[316].value,(0,e.jsx)("code",{children:l[317].value}),l[318].value]})]}),(0,e.jsxs)("h3",{id:"3cls",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#3cls",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.",(0,e.jsx)("a",{href:"https://web.dev/optimize-cls/",children:l[319].value})]}),(0,e.jsx)("p",{children:l[320].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[321].value}),(0,e.jsx)("li",{children:l[322].value}),(0,e.jsx)("li",{children:l[323].value}),(0,e.jsx)("li",{children:l[324].value}),(0,e.jsx)("li",{children:l[325].value})]}),(0,e.jsx)("p",{children:l[326].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[327].value}),(0,e.jsx)("li",{children:l[328].value}),(0,e.jsx)("li",{children:l[329].value}),(0,e.jsx)("li",{children:l[330].value}),(0,e.jsx)("li",{children:l[331].value})]}),(0,e.jsxs)("h2",{id:"\u5B9E\u6218",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5B9E\u6218",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u5B9E\u6218"]}),(0,e.jsx)("p",{children:l[332].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[333].value}),(0,e.jsx)("li",{children:l[334].value}),(0,e.jsx)("li",{children:l[335].value}),(0,e.jsx)("li",{children:l[336].value})]}),(0,e.jsxs)("h3",{id:"1\u6D4F\u89C8\u5668\u52A0\u8F7D\u4F18\u5316",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1\u6D4F\u89C8\u5668\u52A0\u8F7D\u4F18\u5316",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.\u6D4F\u89C8\u5668\u52A0\u8F7D\u4F18\u5316"]}),(0,e.jsxs)("h4",{id:"dns-\u9884\u89E3\u6790\u9884\u94FE\u63A5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#dns-\u9884\u89E3\u6790\u9884\u94FE\u63A5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"DNS \u9884\u89E3\u6790\u3001\u9884\u94FE\u63A5"]}),(0,e.jsx)(s.Z,{lang:"html",children:l[337].value}),(0,e.jsxs)("p",{children:[l[338].value,(0,e.jsx)("a",{href:"https://blog.csdn.net/weixin_45792953/article/details/112168794",children:l[339].value})]}),(0,e.jsxs)("h4",{id:"http-\u8BF7\u6C42\u9636\u6BB5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#http-\u8BF7\u6C42\u9636\u6BB5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"http \u8BF7\u6C42\u9636\u6BB5"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[340].value}),(0,e.jsx)("li",{children:l[341].value}),(0,e.jsx)("li",{children:l[342].value})]}),(0,e.jsxs)("h4",{id:"\u6D4F\u89C8\u5668\u6E32\u67D3\u9636\u6BB5\u4E0B\u8F7D-css-\u5E76\u89E3\u6790\u4E0B\u8F7D-js-\u6587\u4EF6\u5E76\u89E3\u6790\u4F1A\u5F71\u54CD\u9875\u9762\u9996\u5C4F\u6E32\u67D3",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6D4F\u89C8\u5668\u6E32\u67D3\u9636\u6BB5\u4E0B\u8F7D-css-\u5E76\u89E3\u6790\u4E0B\u8F7D-js-\u6587\u4EF6\u5E76\u89E3\u6790\u4F1A\u5F71\u54CD\u9875\u9762\u9996\u5C4F\u6E32\u67D3",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6D4F\u89C8\u5668\u6E32\u67D3\u9636\u6BB5\uFF1A\u4E0B\u8F7D css \u5E76\u89E3\u6790\u3001\u4E0B\u8F7D js \u6587\u4EF6\u5E76\u89E3\u6790\u4F1A\u5F71\u54CD\u9875\u9762\u9996\u5C4F\u6E32\u67D3"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[343].value}),(0,e.jsx)("li",{children:l[344].value}),(0,e.jsx)("li",{children:l[345].value}),(0,e.jsx)("li",{children:l[346].value}),(0,e.jsx)("li",{children:l[347].value}),(0,e.jsx)("li",{children:l[348].value})]}),(0,e.jsxs)("h3",{id:"2\u6280\u672F\u6846\u67B6",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2\u6280\u672F\u6846\u67B6",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.\u6280\u672F\u6846\u67B6"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[349].value}),(0,e.jsx)("li",{children:l[350].value}),(0,e.jsx)("li",{children:l[351].value}),(0,e.jsx)("li",{children:l[352].value})]}),(0,e.jsxs)("h3",{id:"3\u67B6\u6784\u4F18\u5316",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#3\u67B6\u6784\u4F18\u5316",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.\u67B6\u6784\u4F18\u5316"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[353].value}),(0,e.jsx)("li",{children:l[354].value}),(0,e.jsx)("li",{children:l[355].value}),(0,e.jsx)("li",{children:l[356].value})]}),(0,e.jsxs)("h3",{id:"4bigpipe-\u6846\u67B6",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#4bigpipe-\u6846\u67B6",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"4.bigpipe \u6846\u67B6"]}),(0,e.jsxs)("p",{children:[(0,e.jsx)("a",{href:"https://github.com/bigpipe/bigpipe",children:l[357].value}),l[358].value,(0,e.jsx)("br",{}),l[359].value,(0,e.jsx)("br",{}),l[360].value]})]})})})}u.default=j},48739:function(_,u,i){var c=i(93236),r=function(n){return(0,c.createElement)(n.children)};u.Z=r},38039:function(_,u,i){i.d(u,{Z:function(){return o}});var c=i(54306),r=i.n(c),t=i(93236),n=i(62086),s=function(h){var d,x,e,j=(h==null||(d=h.children)===null||d===void 0?void 0:d.filter(function(a){return a!=`
+ `}))||[],p=(0,t.useState)(0),l=r()(p,2),m=l[0],E=l[1],F=function(v){E(v)};return(0,n.jsxs)("div",{className:"tab-container",children:[(0,n.jsx)("ul",{className:"tab-list",children:j.map(function(a,v){return(0,n.jsx)("li",{className:m===v?"tab-item active":"tab-item",onClick:function(){return F(v)},children:a.props.label},a.props.label)})}),(0,n.jsx)("div",{className:"tab-content",children:(x=j[m])===null||x===void 0||(e=x.props)===null||e===void 0?void 0:e.children})]})},o=s}}]);
diff --git a/docs__blogs__promise.md.07a441c4.chunk.css b/docs__blogs__promise.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__blogs__promise.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__blogs__promise.md.b828343f.async.js b/docs__blogs__promise.md.b828343f.async.js
new file mode 100644
index 0000000..d05810f
--- /dev/null
+++ b/docs__blogs__promise.md.b828343f.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[186],{26191:function(_,i,s){s.r(i);var d=s(16878),c=s(84475),v=s(646),u=s(25778),n=s(1778),E=s(6749),B=s(48739),h=s(38039),a=s(5899),j=s(93236),e=s(62086);function x(){var o=(0,a.eL)(),l=o.texts;return(0,e.jsx)(a.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"promise-\u5206\u6790\u4E0E\u5B9E\u73B0",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#promise-\u5206\u6790\u4E0E\u5B9E\u73B0",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Promise \u5206\u6790\u4E0E\u5B9E\u73B0"]}),(0,e.jsxs)("h2",{id:"\u4E00\u53C2\u8003\u8D44\u6599",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E00\u53C2\u8003\u8D44\u6599",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E00\u3001\u53C2\u8003\u8D44\u6599"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:(0,e.jsx)("a",{href:"https://juejin.cn/post/6945319439772434469",children:l[0].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("a",{href:"https://promisesaplus.com/#notes",children:l[1].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("a",{href:"https://chromium.googlesource.com/v8/v8/+/3.29.45/src/promise.js",children:l[2].value})})]}),(0,e.jsxs)("h2",{id:"\u4E8C\u672F\u8BED",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E8C\u672F\u8BED",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E8C\u3001\u672F\u8BED"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[3].value}),l[4].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[5].value}),l[6].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[7].value}),l[8].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[9].value}),l[10].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[11].value}),l[12].value]})]}),(0,e.jsxs)("h2",{id:"\u4E09promise-states",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E09promise-states",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E09\u3001Promise States"]}),(0,e.jsxs)("p",{children:[l[13].value,(0,e.jsx)("strong",{children:l[14].value}),l[15].value,(0,e.jsx)("strong",{children:l[16].value}),l[17].value]}),(0,e.jsxs)("h3",{id:"1pending",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1pending",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.pending"]}),(0,e.jsxs)("p",{children:[l[18].value,(0,e.jsx)("br",{}),l[19].value,(0,e.jsx)("br",{}),l[20].value,(0,e.jsx)("br",{}),l[21].value]}),(0,e.jsxs)("h3",{id:"2fulfilled",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2fulfilled",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.fulfilled"]}),(0,e.jsxs)("p",{children:[l[22].value,(0,e.jsx)("br",{}),l[23].value,(0,e.jsx)("br",{}),l[24].value]}),(0,e.jsxs)("h3",{id:"3rejected",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#3rejected",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.rejected"]}),(0,e.jsxs)("p",{children:[l[25].value,(0,e.jsx)("br",{}),l[26].value,(0,e.jsx)("br",{}),l[27].value]}),(0,e.jsx)("p",{children:l[28].value}),(0,e.jsxs)("p",{children:[l[29].value,(0,e.jsx)("br",{}),l[30].value]}),(0,e.jsxs)("h2",{id:"\u56DBthen-\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u56DBthen-\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u56DB\u3001Then \u65B9\u6CD5"]}),(0,e.jsx)("p",{children:l[31].value}),(0,e.jsx)(n.Z,{lang:"js",children:l[32].value}),(0,e.jsxs)("h3",{id:"1\u53C2\u6570\u8981\u6C42",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1\u53C2\u6570\u8981\u6C42",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.\u53C2\u6570\u8981\u6C42"]}),(0,e.jsxs)("p",{children:[l[33].value,(0,e.jsx)("strong",{children:l[34].value}),l[35].value,(0,e.jsx)("br",{}),l[36].value,(0,e.jsx)("strong",{children:l[37].value}),l[38].value]}),(0,e.jsxs)("h3",{id:"2onfulfilled-\u7279\u6027",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2onfulfilled-\u7279\u6027",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.onFulfilled \u7279\u6027"]}),(0,e.jsxs)("p",{children:[l[39].value,(0,e.jsx)("br",{}),l[40].value,(0,e.jsx)("br",{}),l[41].value,(0,e.jsx)("strong",{children:l[42].value}),l[43].value]}),(0,e.jsxs)("h3",{id:"3onrejected-\u7279\u6027",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#3onrejected-\u7279\u6027",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.onRejected \u7279\u6027"]}),(0,e.jsxs)("p",{children:[l[44].value,(0,e.jsx)("br",{}),l[45].value,(0,e.jsx)("br",{}),l[46].value,(0,e.jsx)("strong",{children:l[47].value}),l[48].value]}),(0,e.jsxs)("h3",{id:"4onfulfilled-\u548C-onrejected-\u5E94\u8BE5\u662F\u5FAE\u4EFB\u52A1",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#4onfulfilled-\u548C-onrejected-\u5E94\u8BE5\u662F\u5FAE\u4EFB\u52A1",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"4.onFulfilled \u548C onRejected \u5E94\u8BE5\u662F",(0,e.jsx)("strong",{children:l[49].value})]}),(0,e.jsxs)("p",{children:[l[50].value,(0,e.jsx)("strong",{children:l[51].value}),l[52].value]}),(0,e.jsxs)("h3",{id:"5then-\u65B9\u6CD5\u53EF\u4EE5\u88AB\u8C03\u7528\u591A\u6B21",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#5then-\u65B9\u6CD5\u53EF\u4EE5\u88AB\u8C03\u7528\u591A\u6B21",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"5.then \u65B9\u6CD5\u53EF\u4EE5\u88AB",(0,e.jsx)("strong",{children:l[53].value})]}),(0,e.jsxs)("p",{children:[l[54].value,(0,e.jsx)("strong",{children:l[55].value}),l[56].value,(0,e.jsx)("strong",{children:l[57].value}),l[58].value,(0,e.jsx)("br",{}),l[59].value,(0,e.jsx)("strong",{children:l[60].value}),l[61].value,(0,e.jsx)("strong",{children:l[62].value}),l[63].value]}),(0,e.jsxs)("h3",{id:"6\u8FD4\u56DE\u503C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#6\u8FD4\u56DE\u503C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"6.\u8FD4\u56DE\u503C"]}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[64].value})}),(0,e.jsx)(n.Z,{lang:"js",children:l[65].value}),(0,e.jsxs)("p",{children:[l[66].value,(0,e.jsx)("strong",{children:l[67].value}),(0,e.jsx)("br",{}),l[68].value,(0,e.jsx)("strong",{children:l[69].value}),l[70].value,(0,e.jsx)("br",{}),l[71].value,(0,e.jsx)("br",{}),l[72].value]}),(0,e.jsxs)("h3",{id:"7resolvepromise",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#7resolvepromise",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"7.resolvePromise"]}),(0,e.jsx)(n.Z,{lang:"js",children:l[73].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[74].value,(0,e.jsx)("strong",{children:l[75].value}),l[76].value,(0,e.jsx)("strong",{children:l[77].value})]}),(0,e.jsxs)("li",{children:[l[78].value,(0,e.jsx)("strong",{children:l[79].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[80].value}),(0,e.jsx)("li",{children:l[81].value}),(0,e.jsx)("li",{children:l[82].value})]})]}),(0,e.jsxs)("li",{children:[l[83].value,(0,e.jsx)("strong",{children:l[84].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[85].value}),(0,e.jsxs)("li",{children:[l[86].value,(0,e.jsx)("strong",{children:l[87].value}),l[88].value]}),(0,e.jsxs)("li",{children:[l[89].value,(0,e.jsx)("strong",{children:l[90].value}),l[91].value]}),(0,e.jsx)("li",{children:l[92].value}),(0,e.jsx)("li",{children:l[93].value}),(0,e.jsx)("li",{children:l[94].value}),(0,e.jsx)("li",{children:l[95].value}),(0,e.jsx)("li",{children:l[96].value})]})]}),(0,e.jsx)("li",{children:l[97].value})]}),(0,e.jsxs)("h2",{id:"\u4E94\u5B9E\u73B0-promise",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E94\u5B9E\u73B0-promise",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E94\u3001\u5B9E\u73B0 promise"]}),(0,e.jsxs)("h3",{id:"1\u5B9A\u4E49\u5E76\u8BBE\u7F6E\u4E09\u79CD\u72B6\u6001\u4F20\u5165\u6267\u884C\u5668-exec",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1\u5B9A\u4E49\u5E76\u8BBE\u7F6E\u4E09\u79CD\u72B6\u6001\u4F20\u5165\u6267\u884C\u5668-exec",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.\u5B9A\u4E49\u5E76\u8BBE\u7F6E\u4E09\u79CD\u72B6\u6001\uFF0C\u4F20\u5165\u6267\u884C\u5668 exec"]}),(0,e.jsx)(n.Z,{lang:"js",children:l[98].value}),(0,e.jsxs)("h3",{id:"2\u4E3A-exec-\u6DFB\u52A0-reject-\u548C-resolve-\u65B9\u6CD5\u6267\u884C\u56DE\u8C03",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2\u4E3A-exec-\u6DFB\u52A0-reject-\u548C-resolve-\u65B9\u6CD5\u6267\u884C\u56DE\u8C03",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.\u4E3A exec \u6DFB\u52A0 reject \u548C resolve \u65B9\u6CD5\uFF0C\u6267\u884C\u56DE\u8C03"]}),(0,e.jsx)(n.Z,{lang:"js",children:l[99].value}),(0,e.jsxs)("h3",{id:"3\u7B80\u5355\u5B9E\u73B0-then-\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#3\u7B80\u5355\u5B9E\u73B0-then-\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.\u7B80\u5355\u5B9E\u73B0 then \u65B9\u6CD5"]}),(0,e.jsx)(n.Z,{lang:"js",children:l[100].value}),(0,e.jsx)("p",{children:l[101].value}),(0,e.jsx)(n.Z,{lang:"js",children:l[102].value}),(0,e.jsxs)("h3",{id:"4\u6DFB\u52A0-then-\u65B9\u6CD5\u7684\u5BF9\u5F02\u6B65\u7684\u5904\u7406",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#4\u6DFB\u52A0-then-\u65B9\u6CD5\u7684\u5BF9\u5F02\u6B65\u7684\u5904\u7406",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"4.\u6DFB\u52A0 then \u65B9\u6CD5\u7684\u5BF9\u5F02\u6B65\u7684\u5904\u7406"]}),(0,e.jsx)("blockquote",{children:(0,e.jsxs)("p",{children:[l[103].value,(0,e.jsx)("br",{}),l[104].value,(0,e.jsx)("br",{}),l[105].value,(0,e.jsx)("br",{}),l[106].value,(0,e.jsx)("br",{}),l[107].value]})}),(0,e.jsx)(n.Z,{lang:"js",children:l[108].value}),(0,e.jsxs)("h3",{id:"5\u5B8C\u5584-then-\u65B9\u6CD5-\u94FE\u5F0F\u8C03\u7528",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#5\u5B8C\u5584-then-\u65B9\u6CD5-\u94FE\u5F0F\u8C03\u7528",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"5.\u5B8C\u5584 then \u65B9\u6CD5-\uFF08\u94FE\u5F0F\u8C03\u7528\uFF09"]}),(0,e.jsxs)("ol",{children:[(0,e.jsx)("li",{children:l[109].value}),(0,e.jsxs)("li",{children:[l[110].value,(0,e.jsxs)("ol",{children:[(0,e.jsx)("li",{children:l[111].value}),(0,e.jsx)("li",{children:l[112].value})]})]}),(0,e.jsx)("li",{children:l[113].value})]}),(0,e.jsx)(n.Z,{lang:"js",children:l[114].value}),(0,e.jsx)("p",{children:l[115].value}),(0,e.jsx)(n.Z,{lang:"js",children:l[116].value}),(0,e.jsxs)("h3",{id:"6\u5B8C\u5584-resolvepromise-\u7684\u5904\u7406",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#6\u5B8C\u5584-resolvepromise-\u7684\u5904\u7406",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"6.\u5B8C\u5584 resolvePromise \u7684\u5904\u7406"]}),(0,e.jsx)("p",{children:l[117].value}),(0,e.jsx)(n.Z,{lang:"js",children:l[118].value}),(0,e.jsx)("hr",{}),(0,e.jsx)(n.Z,{lang:"js",children:l[119].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[120].value}),(0,e.jsxs)("li",{children:[l[121].value,(0,e.jsx)("strong",{children:l[122].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[123].value}),(0,e.jsx)("li",{children:l[124].value}),(0,e.jsxs)("li",{children:[l[125].value,(0,e.jsx)("strong",{children:l[126].value}),l[127].value]}),(0,e.jsxs)("li",{children:[l[128].value,(0,e.jsx)("strong",{children:l[129].value}),l[130].value,(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[131].value,(0,e.jsx)("strong",{children:l[132].value})]}),(0,e.jsxs)("li",{children:[l[133].value,(0,e.jsx)("strong",{children:l[134].value})]}),(0,e.jsxs)("li",{children:[l[135].value,(0,e.jsx)("strong",{children:l[136].value}),l[137].value]}),(0,e.jsx)("li",{children:l[138].value}),(0,e.jsx)("li",{children:l[139].value})]})]}),(0,e.jsx)("li",{children:l[140].value})]})]})]}),(0,e.jsx)(n.Z,{lang:"js",children:l[141].value}),(0,e.jsxs)("h3",{id:"7\u6DFB\u52A0-resolverejectcatch-\u9759\u6001\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#7\u6DFB\u52A0-resolverejectcatch-\u9759\u6001\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"7.\u6DFB\u52A0 resolve\u3001reject\u3001catch \u9759\u6001\u65B9\u6CD5"]}),(0,e.jsx)(n.Z,{lang:"js",children:l[142].value}),(0,e.jsxs)("h3",{id:"8\u5B9E\u73B0-raceallallsettled-\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#8\u5B9E\u73B0-raceallallsettled-\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"8.\u5B9E\u73B0 race\u3001all\u3001allSettled \u65B9\u6CD5"]}),(0,e.jsxs)("p",{children:[(0,e.jsx)("code",{children:l[143].value}),(0,e.jsx)("br",{}),l[144].value,(0,e.jsx)("br",{}),l[145].value,(0,e.jsx)("br",{}),l[146].value]}),(0,e.jsx)(n.Z,{lang:"js",children:l[147].value}),(0,e.jsxs)("h2",{id:"\u516D\u4F7F\u7528-promises-aplus-tests-\u8FDB\u884C\u6D4B\u8BD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u516D\u4F7F\u7528-promises-aplus-tests-\u8FDB\u884C\u6D4B\u8BD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u516D\u3001\u4F7F\u7528 promises-aplus-tests \u8FDB\u884C\u6D4B\u8BD5"]}),(0,e.jsx)(n.Z,{lang:"js",children:l[148].value}),(0,e.jsxs)("h2",{id:"\u4E03\u5B8C\u6574\u4EE3\u7801",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E03\u5B8C\u6574\u4EE3\u7801",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E03\u3001\u5B8C\u6574\u4EE3\u7801"]}),(0,e.jsx)(n.Z,{lang:"js",children:l[149].value})]})})})}i.default=x},48739:function(_,i,s){var d=s(93236),c=function(u){return(0,d.createElement)(u.children)};i.Z=c},38039:function(_,i,s){s.d(i,{Z:function(){return E}});var d=s(54306),c=s.n(d),v=s(93236),u=s(62086),n=function(h){var a,j,e,x=(h==null||(a=h.children)===null||a===void 0?void 0:a.filter(function(r){return r!=`
+ `}))||[],o=(0,v.useState)(0),l=c()(o,2),m=l[0],C=l[1],b=function(t){C(t)};return(0,u.jsxs)("div",{className:"tab-container",children:[(0,u.jsx)("ul",{className:"tab-list",children:x.map(function(r,t){return(0,u.jsx)("li",{className:m===t?"tab-item active":"tab-item",onClick:function(){return b(t)},children:r.props.label},r.props.label)})}),(0,u.jsx)("div",{className:"tab-content",children:(j=x[m])===null||j===void 0||(e=j.props)===null||e===void 0?void 0:e.children})]})},E=n}}]);
diff --git a/docs__data-structure__01_stack.md.07a441c4.chunk.css b/docs__data-structure__01_stack.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__data-structure__01_stack.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__data-structure__01_stack.md.766d119d.async.js b/docs__data-structure__01_stack.md.766d119d.async.js
new file mode 100644
index 0000000..45eaafb
--- /dev/null
+++ b/docs__data-structure__01_stack.md.766d119d.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[128],{31501:function(o,i,u){u.r(i);var c=u(16878),r=u(84475),j=u(646),s=u(25778),d=u(1778),E=u(6749),C=u(48739),h=u(38039),n=u(5899),t=u(93236),e=u(62086);function x(){var v=(0,n.eL)(),l=v.texts;return(0,e.jsx)(n.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u6808stack",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6808stack",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6808(stack)"]}),(0,e.jsxs)("h2",{id:"\u4E00\u4ECB\u7ECD",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E00\u4ECB\u7ECD",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E00\u3001\u4ECB\u7ECD"]}),(0,e.jsxs)("p",{children:[(0,e.jsx)("strong",{children:l[0].value}),l[1].value,(0,e.jsx)("strong",{children:l[2].value}),l[3].value,(0,e.jsx)("strong",{children:l[4].value}),l[5].value,(0,e.jsx)("strong",{children:l[6].value}),l[7].value,(0,e.jsx)("strong",{children:l[8].value}),l[9].value,(0,e.jsx)("strong",{children:l[10].value}),l[11].value]}),(0,e.jsx)("p",{children:l[12].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[13].value,(0,e.jsx)("code",{children:l[14].value}),l[15].value]}),(0,e.jsxs)("li",{children:[l[16].value,(0,e.jsx)("code",{children:l[17].value}),l[18].value,(0,e.jsx)("code",{children:l[19].value})]}),(0,e.jsxs)("li",{children:[l[20].value,(0,e.jsx)("code",{children:l[21].value}),l[22].value]}),(0,e.jsxs)("li",{children:[l[23].value,(0,e.jsx)("code",{children:l[24].value}),l[25].value]})]}),(0,e.jsx)("p",{children:l[26].value}),(0,e.jsxs)("div",{align:"center",children:[l[27].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201041556199.png",style:{maxWidth:"100%"}}),l[28].value,(0,e.jsx)("div",{align:"center",children:l[29].value})]}),(0,e.jsxs)("h2",{id:"\u4E8C\u7A0B\u5E8F\u4E2D\u7684\u6808",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E8C\u7A0B\u5E8F\u4E2D\u7684\u6808",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E8C\u3001\u7A0B\u5E8F\u4E2D\u7684\u6808"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[30].value}),l[31].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[32].value}),l[33].value,(0,e.jsx)("strong",{children:l[34].value}),l[35].value]})]}),(0,e.jsxs)("h2",{id:"\u4E09\u7EC3\u4E60",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E09\u7EC3\u4E60",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E09\u3001\u7EC3\u4E60"]}),(0,e.jsx)("p",{children:l[36].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[37].value}),(0,e.jsx)("li",{children:l[38].value}),(0,e.jsx)("li",{children:l[39].value}),(0,e.jsx)("li",{children:l[40].value})]}),(0,e.jsx)("p",{children:l[41].value}),(0,e.jsx)("p",{children:l[42].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[43].value}),(0,e.jsx)("li",{children:l[44].value}),(0,e.jsx)("li",{children:l[45].value}),(0,e.jsx)("li",{children:l[46].value})]}),(0,e.jsxs)("h2",{id:"\u56DB\u5B9E\u73B0\u6808\u7ED3\u6784",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u56DB\u5B9E\u73B0\u6808\u7ED3\u6784",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u56DB\u3001\u5B9E\u73B0\u6808\u7ED3\u6784"]}),(0,e.jsxs)("h3",{id:"\u6808\u5E38\u89C1\u7684\u64CD\u4F5C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6808\u5E38\u89C1\u7684\u64CD\u4F5C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6808\u5E38\u89C1\u7684\u64CD\u4F5C"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[47].value}),l[48].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[49].value}),l[50].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[51].value}),l[52].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[53].value}),l[54].value,(0,e.jsx)("code",{children:l[55].value}),l[56].value,(0,e.jsx)("code",{children:l[57].value}),l[58].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[59].value}),l[60].value,(0,e.jsx)("code",{children:l[61].value}),l[62].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[63].value}),l[64].value]})]}),(0,e.jsxs)("h3",{id:"\u4EE3\u7801\u5B9E\u73B0",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4EE3\u7801\u5B9E\u73B0",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4EE3\u7801\u5B9E\u73B0"]}),(0,e.jsx)(d.Z,{lang:"js",children:l[65].value}),(0,e.jsxs)("h3",{id:"\u6D4B\u8BD5\u4EE3\u7801",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6D4B\u8BD5\u4EE3\u7801",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(d.Z,{lang:"js",children:l[66].value}),(0,e.jsxs)("h2",{id:"\u4E94\u5E94\u7528",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E94\u5E94\u7528",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E94\u3001\u5E94\u7528"]}),(0,e.jsxs)("h3",{id:"1\u5229\u7528\u6808\u7ED3\u6784\u7684\u7279\u70B9\u5C01\u88C5\u5B9E\u73B0\u5341\u8FDB\u5236\u8F6C\u6362\u4E3A\u4E8C\u8FDB\u5236\u7684\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1\u5229\u7528\u6808\u7ED3\u6784\u7684\u7279\u70B9\u5C01\u88C5\u5B9E\u73B0\u5341\u8FDB\u5236\u8F6C\u6362\u4E3A\u4E8C\u8FDB\u5236\u7684\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.\u5229\u7528\u6808\u7ED3\u6784\u7684\u7279\u70B9\u5C01\u88C5\u5B9E\u73B0\u5341\u8FDB\u5236\u8F6C\u6362\u4E3A\u4E8C\u8FDB\u5236\u7684\u65B9\u6CD5"]}),(0,e.jsx)(d.Z,{lang:"js",children:l[67].value}),(0,e.jsxs)("h3",{id:"2\u6709\u6548\u7684\u62EC\u53F7",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2\u6709\u6548\u7684\u62EC\u53F7",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.",(0,e.jsx)(n.rU,{to:"/js-logs/stack#20%E6%9C%89%E6%95%88%E7%9A%84%E6%8B%AC%E5%8F%B7",children:l[68].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[69].value}),(0,e.jsx)("li",{children:l[70].value}),(0,e.jsx)("li",{children:l[71].value}),(0,e.jsx)("li",{children:l[72].value}),(0,e.jsx)("li",{children:l[73].value}),(0,e.jsx)("li",{children:l[74].value}),(0,e.jsx)("li",{children:l[75].value})]}),(0,e.jsx)(d.Z,{lang:"js",children:l[76].value})]})})})}i.default=x},48739:function(o,i,u){var c=u(93236),r=function(s){return(0,c.createElement)(s.children)};i.Z=r},38039:function(o,i,u){u.d(i,{Z:function(){return E}});var c=u(54306),r=u.n(c),j=u(93236),s=u(62086),d=function(h){var n,t,e,x=(h==null||(n=h.children)===null||n===void 0?void 0:n.filter(function(a){return a!=`
+ `}))||[],v=(0,j.useState)(0),l=r()(v,2),m=l[0],D=l[1],B=function(_){D(_)};return(0,s.jsxs)("div",{className:"tab-container",children:[(0,s.jsx)("ul",{className:"tab-list",children:x.map(function(a,_){return(0,s.jsx)("li",{className:m===_?"tab-item active":"tab-item",onClick:function(){return B(_)},children:a.props.label},a.props.label)})}),(0,s.jsx)("div",{className:"tab-content",children:(t=x[m])===null||t===void 0||(e=t.props)===null||e===void 0?void 0:e.children})]})},E=d}}]);
diff --git a/docs__data-structure__02_queue.md.07a441c4.chunk.css b/docs__data-structure__02_queue.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__data-structure__02_queue.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__data-structure__02_queue.md.0c6805a6.async.js b/docs__data-structure__02_queue.md.0c6805a6.async.js
new file mode 100644
index 0000000..cd4897c
--- /dev/null
+++ b/docs__data-structure__02_queue.md.0c6805a6.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[537],{90588:function(v,d,l){l.r(d);var c=l(16878),r=l(84475),j=l(646),s=l(25778),i=l(1778),E=l(6749),B=l(48739),h=l(38039),u=l(5899),t=l(93236),e=l(62086);function _(){var o=(0,u.eL)(),n=o.texts;return(0,e.jsx)(u.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u961F\u5217queue",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u961F\u5217queue",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u961F\u5217(queue)"]}),(0,e.jsxs)("h2",{id:"\u4E00\u4ECB\u7ECD",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E00\u4ECB\u7ECD",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E00\u3001\u4ECB\u7ECD"]}),(0,e.jsx)("p",{children:n[0].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:n[1].value}),(0,e.jsx)("li",{children:n[2].value})]}),(0,e.jsx)("p",{children:n[3].value}),(0,e.jsxs)("div",{align:"center",children:[n[4].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201051704353.png",style:{maxWidth:"100%"}}),n[5].value,(0,e.jsx)("div",{align:"center",children:n[6].value})]}),(0,e.jsx)("p",{children:n[7].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:n[8].value}),n[9].value]}),(0,e.jsx)("li",{children:n[10].value}),(0,e.jsx)("li",{children:n[11].value})]}),(0,e.jsx)("p",{children:n[12].value}),(0,e.jsxs)("div",{align:"center",children:[n[13].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201051706113.png",style:{maxWidth:"100%"}}),n[14].value,(0,e.jsx)("div",{align:"center",children:n[15].value})]}),(0,e.jsxs)("h2",{id:"\u4E8C\u7A0B\u5E8F\u4E2D\u7684\u961F\u5217",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E8C\u7A0B\u5E8F\u4E2D\u7684\u961F\u5217",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E8C\u3001\u7A0B\u5E8F\u4E2D\u7684\u961F\u5217"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:n[16].value}),(0,e.jsx)("li",{children:n[17].value})]}),(0,e.jsxs)("h2",{id:"\u4E09\u961F\u5217\u7684\u5B9E\u73B0",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E09\u961F\u5217\u7684\u5B9E\u73B0",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E09\u3001\u961F\u5217\u7684\u5B9E\u73B0"]}),(0,e.jsx)("p",{children:n[18].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:n[19].value}),(0,e.jsx)("li",{children:n[20].value})]}),(0,e.jsxs)("h3",{id:"\u961F\u5217\u5E38\u89C1\u7684\u64CD\u4F5C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u961F\u5217\u5E38\u89C1\u7684\u64CD\u4F5C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u961F\u5217\u5E38\u89C1\u7684\u64CD\u4F5C"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:n[21].value}),n[22].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:n[23].value}),n[24].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:n[25].value}),n[26].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:n[27].value}),n[28].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:n[29].value}),n[30].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:n[31].value}),n[32].value]})]}),(0,e.jsxs)("h3",{id:"\u4EE3\u7801\u5B9E\u73B0",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4EE3\u7801\u5B9E\u73B0",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4EE3\u7801\u5B9E\u73B0"]}),(0,e.jsxs)("h4",{id:"1\u666E\u901A\u961F\u5217",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1\u666E\u901A\u961F\u5217",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.\u666E\u901A\u961F\u5217"]}),(0,e.jsx)(i.Z,{lang:"js",children:n[33].value}),(0,e.jsxs)("h4",{id:"\u6D4B\u8BD5\u4EE3\u7801",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6D4B\u8BD5\u4EE3\u7801",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(i.Z,{lang:"js",children:n[34].value}),(0,e.jsxs)("h4",{id:"2\u4F18\u5148\u7EA7\u961F\u5217",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2\u4F18\u5148\u7EA7\u961F\u5217",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.\u4F18\u5148\u7EA7\u961F\u5217"]}),(0,e.jsxs)("blockquote",{children:[(0,e.jsx)("p",{children:n[35].value}),(0,e.jsxs)("p",{children:[n[36].value,(0,e.jsx)("code",{children:n[37].value}),n[38].value,(0,e.jsx)("code",{children:n[39].value}),n[40].value]})]}),(0,e.jsx)(i.Z,{lang:"js",children:n[41].value}),(0,e.jsxs)("h2",{id:"\u56DB\u5E94\u7528",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u56DB\u5E94\u7528",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u56DB\u3001\u5E94\u7528"]}),(0,e.jsxs)("h3",{id:"1\u51FB\u9F13\u4F20\u82B1",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1\u51FB\u9F13\u4F20\u82B1",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.\u51FB\u9F13\u4F20\u82B1"]}),(0,e.jsx)(i.Z,{lang:"js",children:n[42].value}),(0,e.jsxs)("h3",{id:"2\u6700\u8FD1\u7684\u8BF7\u6C42\u6B21\u6570",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2\u6700\u8FD1\u7684\u8BF7\u6C42\u6B21\u6570",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.",(0,e.jsx)("a",{href:"https://leetcode-cn.com/problems/number-of-recent-calls/",children:n[43].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:n[44].value})]})})})}d.default=_},48739:function(v,d,l){var c=l(93236),r=function(s){return(0,c.createElement)(s.children)};d.Z=r},38039:function(v,d,l){l.d(d,{Z:function(){return E}});var c=l(54306),r=l.n(c),j=l(93236),s=l(62086),i=function(h){var u,t,e,_=(h==null||(u=h.children)===null||u===void 0?void 0:u.filter(function(a){return a!=`
+ `}))||[],o=(0,j.useState)(0),n=r()(o,2),m=n[0],D=n[1],f=function(x){D(x)};return(0,s.jsxs)("div",{className:"tab-container",children:[(0,s.jsx)("ul",{className:"tab-list",children:_.map(function(a,x){return(0,s.jsx)("li",{className:m===x?"tab-item active":"tab-item",onClick:function(){return f(x)},children:a.props.label},a.props.label)})}),(0,s.jsx)("div",{className:"tab-content",children:(t=_[m])===null||t===void 0||(e=t.props)===null||e===void 0?void 0:e.children})]})},E=i}}]);
diff --git a/docs__data-structure__03_linked_list.md.07a441c4.chunk.css b/docs__data-structure__03_linked_list.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__data-structure__03_linked_list.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__data-structure__03_linked_list.md.5b47d90d.async.js b/docs__data-structure__03_linked_list.md.5b47d90d.async.js
new file mode 100644
index 0000000..0c9d180
--- /dev/null
+++ b/docs__data-structure__03_linked_list.md.5b47d90d.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[261],{13138:function(E,a,n){n.r(a);var r=n(16878),c=n(84475),v=n(646),s=n(25778),u=n(1778),_=n(6749),m=n(48739),h=n(38039),i=n(5899),x=n(93236),e=n(62086);function j(){var o=(0,i.eL)(),l=o.texts;return(0,e.jsx)(i.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u94FE\u8868linkedlist",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u94FE\u8868linkedlist",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u94FE\u8868(LinkedList)"]}),(0,e.jsxs)("h2",{id:"\u4E00\u4ECB\u7ECD",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E00\u4ECB\u7ECD",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E00\u3001\u4ECB\u7ECD"]}),(0,e.jsxs)("p",{children:[l[0].value,(0,e.jsx)("strong",{children:l[1].value}),l[2].value,(0,e.jsx)("strong",{children:l[3].value}),l[4].value,(0,e.jsx)("strong",{children:l[5].value}),l[6].value,(0,e.jsx)("strong",{children:l[7].value}),l[8].value]}),(0,e.jsxs)("p",{children:[l[9].value,(0,e.jsx)("strong",{children:l[10].value}),l[11].value,(0,e.jsx)("strong",{children:l[12].value}),l[13].value]}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[14].value})}),(0,e.jsxs)("div",{align:"center",children:[l[15].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201061345018.png",style:{maxWidth:"100%"}}),l[16].value,(0,e.jsx)("div",{align:"center",children:l[17].value})]}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[18].value})}),(0,e.jsxs)("div",{align:"center",children:[l[19].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201061347606.png",style:{maxWidth:"100%"}}),l[20].value,(0,e.jsx)("div",{align:"center",children:l[21].value})]}),(0,e.jsx)("p",{children:l[22].value}),(0,e.jsxs)("p",{children:[l[23].value,(0,e.jsx)("code",{children:l[24].value}),l[25].value]}),(0,e.jsxs)("p",{children:[l[26].value,(0,e.jsx)("code",{children:l[27].value}),l[28].value]}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[29].value})}),(0,e.jsxs)("div",{align:"center",children:[l[30].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201061345371.png",style:{maxWidth:"100%"}}),l[31].value,(0,e.jsx)("div",{align:"center",children:l[32].value})]}),(0,e.jsxs)("h3",{id:"\u6570\u7EC4\u7684\u4F18\u7F3A\u70B9",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6570\u7EC4\u7684\u4F18\u7F3A\u70B9",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6570\u7EC4\u7684\u4F18\u7F3A\u70B9"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[33].value,(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[34].value})})]}),(0,e.jsxs)("li",{children:[l[35].value,(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[36].value,(0,e.jsx)("strong",{children:l[37].value}),l[38].value]}),(0,e.jsxs)("li",{children:[l[39].value,(0,e.jsx)("strong",{children:l[40].value}),l[41].value,(0,e.jsx)("strong",{children:l[42].value}),l[43].value,(0,e.jsx)("strong",{children:l[44].value})]})]})]})]}),(0,e.jsx)("p",{children:l[45].value}),(0,e.jsxs)("h3",{id:"\u94FE\u8868\u7684\u4F18\u7F3A\u70B9",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u94FE\u8868\u7684\u4F18\u7F3A\u70B9",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u94FE\u8868\u7684\u4F18\u7F3A\u70B9"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[46].value,(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[47].value,(0,e.jsx)("strong",{children:l[48].value}),l[49].value,(0,e.jsx)("strong",{children:l[50].value}),l[51].value]}),(0,e.jsxs)("li",{children:[l[52].value,(0,e.jsx)("strong",{children:l[53].value}),l[54].value,(0,e.jsx)("strong",{children:l[55].value}),l[56].value]}),(0,e.jsxs)("li",{children:[l[57].value,(0,e.jsx)("strong",{children:l[58].value}),l[59].value,(0,e.jsx)("strong",{children:l[60].value}),l[61].value]})]})]}),(0,e.jsxs)("li",{children:[l[62].value,(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[63].value,(0,e.jsx)("strong",{children:l[64].value}),l[65].value]}),(0,e.jsx)("li",{children:l[66].value}),(0,e.jsxs)("li",{children:[l[67].value,(0,e.jsx)("strong",{children:l[68].value}),l[69].value,(0,e.jsx)("strong",{children:l[70].value}),l[71].value]}),(0,e.jsxs)("li",{children:[l[72].value,(0,e.jsx)("strong",{children:l[73].value})]})]})]})]}),(0,e.jsxs)("h2",{id:"\u4E8C\u94FE\u8868\u7684\u5B9E\u73B0",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E8C\u94FE\u8868\u7684\u5B9E\u73B0",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E8C\u3001\u94FE\u8868\u7684\u5B9E\u73B0"]}),(0,e.jsxs)("h3",{id:"\u94FE\u8868\u4E2D\u7684\u5E38\u89C1\u64CD\u4F5C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u94FE\u8868\u4E2D\u7684\u5E38\u89C1\u64CD\u4F5C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u94FE\u8868\u4E2D\u7684\u5E38\u89C1\u64CD\u4F5C"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[74].value}),l[75].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[76].value}),l[77].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[78].value}),l[79].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[80].value}),l[81].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[82].value}),l[83].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[84].value}),l[85].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[86].value}),l[87].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[88].value}),l[89].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[90].value}),l[91].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[92].value}),l[93].value]})]}),(0,e.jsxs)("h3",{id:"1\u9010\u6B65\u5C01\u88C5\u5355\u5411\u94FE\u8868",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1\u9010\u6B65\u5C01\u88C5\u5355\u5411\u94FE\u8868",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.\u9010\u6B65\u5C01\u88C5\u5355\u5411\u94FE\u8868"]}),(0,e.jsxs)("h4",{id:"11-\u5148\u521B\u5EFA\u5355\u5411\u94FE\u8868\u7C7B-linkedlist\u5E76\u6DFB\u52A0\u57FA\u672C\u5C5E\u6027\u518D\u5B9E\u73B0\u5355\u5411\u94FE\u8868\u7684\u5E38\u7528\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#11-\u5148\u521B\u5EFA\u5355\u5411\u94FE\u8868\u7C7B-linkedlist\u5E76\u6DFB\u52A0\u57FA\u672C\u5C5E\u6027\u518D\u5B9E\u73B0\u5355\u5411\u94FE\u8868\u7684\u5E38\u7528\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.1 \u5148\u521B\u5EFA\u5355\u5411\u94FE\u8868\u7C7B LinkedList\uFF0C\u5E76\u6DFB\u52A0\u57FA\u672C\u5C5E\u6027\uFF0C\u518D\u5B9E\u73B0\u5355\u5411\u94FE\u8868\u7684\u5E38\u7528\u65B9\u6CD5\uFF1A"]}),(0,e.jsx)(u.Z,{lang:"js",children:l[94].value}),(0,e.jsxs)("h4",{id:"12-\u5B9E\u73B0-append-\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#12-\u5B9E\u73B0-append-\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.2 \u5B9E\u73B0 append() \u65B9\u6CD5"]}),(0,e.jsx)(u.Z,{lang:"js",children:l[95].value}),(0,e.jsxs)("h5",{id:"append-\u8FC7\u7A0B\u8BE6\u89E3",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#append-\u8FC7\u7A0B\u8BE6\u89E3",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"append \u8FC7\u7A0B\u8BE6\u89E3"]}),(0,e.jsx)("ol",{children:(0,e.jsxs)("li",{children:[l[96].value,(0,e.jsx)("code",{children:l[97].value}),l[98].value]})}),(0,e.jsxs)("div",{align:"center",children:[l[99].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201061403803.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("ol",{start:"2",children:(0,e.jsxs)("li",{children:[l[100].value,(0,e.jsx)("code",{children:l[101].value}),l[102].value,(0,e.jsx)("code",{children:l[103].value}),l[104].value,(0,e.jsx)("code",{children:l[105].value}),l[106].value,(0,e.jsx)("code",{children:l[107].value}),l[108].value]})}),(0,e.jsxs)("div",{align:"center",children:[l[109].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201061403206.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h4",{id:"13-\u5B9E\u73B0-tostring-\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#13-\u5B9E\u73B0-tostring-\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.3 \u5B9E\u73B0 toString() \u65B9\u6CD5"]}),(0,e.jsx)(u.Z,{lang:"js",children:l[110].value}),(0,e.jsxs)("h5",{id:"\u6D4B\u8BD5\u4EE3\u7801",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6D4B\u8BD5\u4EE3\u7801",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(u.Z,{lang:"js",children:l[111].value}),(0,e.jsxs)("h4",{id:"14-\u5B9E\u73B0-insert\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#14-\u5B9E\u73B0-insert\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.4 \u5B9E\u73B0 insert()\u65B9\u6CD5"]}),(0,e.jsx)(u.Z,{lang:"js",children:l[112].value}),(0,e.jsxs)("h5",{id:"\u6D4B\u8BD5\u4EE3\u7801-1",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6D4B\u8BD5\u4EE3\u7801-1",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(u.Z,{lang:"js",children:l[113].value}),(0,e.jsxs)("h4",{id:"15-\u5B9E\u73B0-get\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#15-\u5B9E\u73B0-get\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.5 \u5B9E\u73B0 get()\u65B9\u6CD5"]}),(0,e.jsx)("blockquote",{children:(0,e.jsx)("p",{children:l[114].value})}),(0,e.jsx)(u.Z,{lang:"js",children:l[115].value}),(0,e.jsxs)("h5",{id:"\u6D4B\u8BD5\u4EE3\u7801-2",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6D4B\u8BD5\u4EE3\u7801-2",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(u.Z,{lang:"js",children:l[116].value}),(0,e.jsxs)("h4",{id:"16-\u5B9E\u73B0-indexof\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#16-\u5B9E\u73B0-indexof\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.6 \u5B9E\u73B0 indexOf()\u65B9\u6CD5"]}),(0,e.jsx)(u.Z,{lang:"js",children:l[117].value}),(0,e.jsxs)("h5",{id:"\u6D4B\u8BD5\u4EE3\u7801-3",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6D4B\u8BD5\u4EE3\u7801-3",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(u.Z,{lang:"js",children:l[118].value}),(0,e.jsxs)("h4",{id:"17-\u5B9E\u73B0-update\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#17-\u5B9E\u73B0-update\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.7 \u5B9E\u73B0 update()\u65B9\u6CD5"]}),(0,e.jsx)(u.Z,{lang:"js",children:l[119].value}),(0,e.jsxs)("h5",{id:"\u6D4B\u8BD5\u4EE3\u7801-4",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6D4B\u8BD5\u4EE3\u7801-4",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(u.Z,{lang:"js",children:l[120].value}),(0,e.jsxs)("h4",{id:"18-\u5B9E\u73B0-removeat\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#18-\u5B9E\u73B0-removeat\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.8 \u5B9E\u73B0 removeAt()\u65B9\u6CD5"]}),(0,e.jsx)(u.Z,{lang:"js",children:l[121].value}),(0,e.jsxs)("h5",{id:"\u6D4B\u8BD5\u4EE3\u7801-5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6D4B\u8BD5\u4EE3\u7801-5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(u.Z,{lang:"js",children:l[122].value}),(0,e.jsxs)("h4",{id:"19-\u5B9E\u73B0-remove\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#19-\u5B9E\u73B0-remove\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.9 \u5B9E\u73B0 remove()\u65B9\u6CD5"]}),(0,e.jsx)(u.Z,{lang:"js",children:l[123].value}),(0,e.jsxs)("h5",{id:"\u6D4B\u8BD5\u4EE3\u7801-6",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6D4B\u8BD5\u4EE3\u7801-6",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(u.Z,{lang:"js",children:l[124].value}),(0,e.jsxs)("h3",{id:"2\u5C01\u88C5\u5B8C\u7684\u5355\u5411\u94FE\u8868",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2\u5C01\u88C5\u5B8C\u7684\u5355\u5411\u94FE\u8868",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.\u5C01\u88C5\u5B8C\u7684\u5355\u5411\u94FE\u8868"]}),(0,e.jsx)("blockquote",{children:(0,e.jsx)("p",{children:l[125].value})}),(0,e.jsx)(u.Z,{lang:"js",children:l[126].value}),(0,e.jsxs)("h2",{id:"\u4E09\u5E94\u7528",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E09\u5E94\u7528",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E09\u3001\u5E94\u7528"]}),(0,e.jsxs)("h3",{id:"1\u5220\u9664\u94FE\u8868\u4E2D\u7684\u8282\u70B9",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1\u5220\u9664\u94FE\u8868\u4E2D\u7684\u8282\u70B9",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.",(0,e.jsx)("a",{href:"https://leetcode-cn.com/problems/delete-node-in-a-linked-list/",children:l[127].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[128].value}),(0,e.jsx)("li",{children:l[129].value}),(0,e.jsx)("li",{children:l[130].value}),(0,e.jsx)("li",{children:l[131].value}),(0,e.jsx)("li",{children:l[132].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[133].value}),(0,e.jsxs)("h3",{id:"2\u5220\u9664\u6392\u5E8F\u94FE\u8868\u4E2D\u7684\u91CD\u590D\u5143\u7D20",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2\u5220\u9664\u6392\u5E8F\u94FE\u8868\u4E2D\u7684\u91CD\u590D\u5143\u7D20",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.",(0,e.jsx)(i.rU,{to:"/js-logs/array#83%E5%88%A0%E9%99%A4%E6%8E%92%E5%BA%8F%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0",children:l[134].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[135].value}),(0,e.jsx)("li",{children:l[136].value}),(0,e.jsx)("li",{children:l[137].value}),(0,e.jsx)("li",{children:l[138].value})]}),(0,e.jsxs)("p",{children:[l[139].value,(0,e.jsx)("br",{}),l[140].value]}),(0,e.jsx)(u.Z,{lang:"js",children:l[141].value}),(0,e.jsxs)("h3",{id:"3\u53CD\u8F6C\u94FE\u8868",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#3\u53CD\u8F6C\u94FE\u8868",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.",(0,e.jsx)(i.rU,{to:"/js-logs/linked-list#%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8",children:l[142].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[143].value}),(0,e.jsx)("li",{children:l[144].value}),(0,e.jsx)("li",{children:l[145].value}),(0,e.jsx)("li",{children:l[146].value}),(0,e.jsx)("li",{children:l[147].value}),(0,e.jsx)("li",{children:l[148].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[149].value}),(0,e.jsxs)("h3",{id:"4-\u73AF\u5F62\u94FE\u8868",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#4-\u73AF\u5F62\u94FE\u8868",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"4. ",(0,e.jsx)(i.rU,{to:"/js-logs/linked-list#141%E7%8E%AF%E5%BD%A2%E9%93%BE%E8%A1%A8",children:l[150].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[151].value}),(0,e.jsx)("li",{children:l[152].value}),(0,e.jsx)("li",{children:l[153].value}),(0,e.jsx)("li",{children:l[154].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[155].value})]})})})}a.default=j},48739:function(E,a,n){var r=n(93236),c=function(s){return(0,r.createElement)(s.children)};a.Z=c},38039:function(E,a,n){n.d(a,{Z:function(){return _}});var r=n(54306),c=n.n(r),v=n(93236),s=n(62086),u=function(h){var i,x,e,j=(h==null||(i=h.children)===null||i===void 0?void 0:i.filter(function(d){return d!=`
+ `}))||[],o=(0,v.useState)(0),l=c()(o,2),B=l[0],g=l[1],D=function(t){g(t)};return(0,s.jsxs)("div",{className:"tab-container",children:[(0,s.jsx)("ul",{className:"tab-list",children:j.map(function(d,t){return(0,s.jsx)("li",{className:B===t?"tab-item active":"tab-item",onClick:function(){return D(t)},children:d.props.label},d.props.label)})}),(0,s.jsx)("div",{className:"tab-content",children:(x=j[B])===null||x===void 0||(e=x.props)===null||e===void 0?void 0:e.children})]})},_=u}}]);
diff --git a/docs__data-structure__04_doubly_linked_list.md.07a441c4.chunk.css b/docs__data-structure__04_doubly_linked_list.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__data-structure__04_doubly_linked_list.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__data-structure__04_doubly_linked_list.md.ce6e79a6.async.js b/docs__data-structure__04_doubly_linked_list.md.ce6e79a6.async.js
new file mode 100644
index 0000000..8b2e771
--- /dev/null
+++ b/docs__data-structure__04_doubly_linked_list.md.ce6e79a6.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[881],{71560:function(g,a,s){s.r(a);var r=s(16878),c=s(84475),v=s(646),n=s(25778),i=s(1778),m=s(6749),E=s(48739),h=s(38039),d=s(5899),x=s(93236),e=s(62086);function j(){var o=(0,d.eL)(),l=o.texts;return(0,e.jsx)(d.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u53CC\u5411\u94FE\u8868doublylinkedlist",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u53CC\u5411\u94FE\u8868doublylinkedlist",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u53CC\u5411\u94FE\u8868(DoublyLinkedList)"]}),(0,e.jsxs)("h2",{id:"\u4E00\u53CC\u5411\u94FE\u8868\u7684\u4ECB\u7ECD",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E00\u53CC\u5411\u94FE\u8868\u7684\u4ECB\u7ECD",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E00\u3001\u53CC\u5411\u94FE\u8868\u7684\u4ECB\u7ECD"]}),(0,e.jsxs)("p",{children:[l[0].value,(0,e.jsx)("strong",{children:l[1].value}),l[2].value,(0,e.jsx)("strong",{children:l[3].value}),l[4].value,(0,e.jsx)("strong",{children:l[5].value}),l[6].value,(0,e.jsx)("strong",{children:l[7].value})]}),(0,e.jsxs)("h3",{id:"\u5355\u5411\u94FE\u8868\u7684\u7279\u6027",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5355\u5411\u94FE\u8868\u7684\u7279\u6027",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u5355\u5411\u94FE\u8868\u7684\u7279\u6027"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[8].value}),(0,e.jsx)("li",{children:l[9].value}),(0,e.jsx)("li",{children:l[10].value}),(0,e.jsx)("li",{children:l[11].value})]}),(0,e.jsxs)("h3",{id:"\u53CC\u5411\u94FE\u8868\u7ED3\u6784",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u53CC\u5411\u94FE\u8868\u7ED3\u6784",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u53CC\u5411\u94FE\u8868\u7ED3\u6784"]}),(0,e.jsxs)("div",{align:"center",children:[l[12].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201071346452.png",style:{maxWidth:"100%"}}),l[13].value,(0,e.jsx)("div",{align:"center",children:l[14].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[15].value,(0,e.jsx)("strong",{children:l[16].value}),l[17].value,(0,e.jsx)("strong",{children:l[18].value}),l[19].value]}),(0,e.jsxs)("li",{children:[l[20].value,(0,e.jsx)("strong",{children:l[21].value}),l[22].value,(0,e.jsx)("strong",{children:l[23].value}),l[24].value,(0,e.jsx)("strong",{children:l[25].value}),l[26].value]}),(0,e.jsxs)("li",{children:[l[27].value,(0,e.jsx)("strong",{children:l[28].value})]}),(0,e.jsxs)("li",{children:[l[29].value,(0,e.jsx)("strong",{children:l[30].value})]})]}),(0,e.jsxs)("h3",{id:"\u53CC\u5411\u94FE\u8868\u7684\u7F3A\u70B9",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u53CC\u5411\u94FE\u8868\u7684\u7F3A\u70B9",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u53CC\u5411\u94FE\u8868\u7684\u7F3A\u70B9"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[31].value,(0,e.jsx)("strong",{children:l[32].value}),l[33].value]}),(0,e.jsxs)("li",{children:[l[34].value,(0,e.jsx)("strong",{children:l[35].value}),l[36].value]})]}),(0,e.jsxs)("h2",{id:"\u4E8C\u53CC\u5411\u94FE\u8868\u7684\u5C01\u88C5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E8C\u53CC\u5411\u94FE\u8868\u7684\u5C01\u88C5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E8C\u3001\u53CC\u5411\u94FE\u8868\u7684\u5C01\u88C5"]}),(0,e.jsxs)("h3",{id:"\u5E38\u89C1\u64CD\u4F5C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5E38\u89C1\u64CD\u4F5C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u5E38\u89C1\u64CD\u4F5C"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[37].value}),l[38].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[39].value}),l[40].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[41].value}),l[42].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[43].value}),l[44].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[45].value}),l[46].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[47].value}),l[48].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[49].value}),l[50].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[51].value}),l[52].value,(0,e.jsx)("code",{children:l[53].value}),l[54].value,(0,e.jsx)("code",{children:l[55].value})]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[56].value}),l[57].value,(0,e.jsx)("code",{children:l[58].value}),l[59].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[60].value}),l[61].value,(0,e.jsx)("code",{children:l[62].value}),l[63].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[64].value}),l[65].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[66].value}),l[67].value]})]}),(0,e.jsxs)("h3",{id:"1\u9010\u6B65\u5C01\u88C5\u53CC\u5411\u94FE\u8868",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1\u9010\u6B65\u5C01\u88C5\u53CC\u5411\u94FE\u8868",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.\u9010\u6B65\u5C01\u88C5\u53CC\u5411\u94FE\u8868"]}),(0,e.jsx)("blockquote",{children:(0,e.jsx)("p",{children:l[68].value})}),(0,e.jsxs)("h4",{id:"11-\u5148\u521B\u5EFA\u53CC\u5411\u94FE\u8868\u7C7B-doublylinkedlist",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#11-\u5148\u521B\u5EFA\u53CC\u5411\u94FE\u8868\u7C7B-doublylinkedlist",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.1 \u5148\u521B\u5EFA\u53CC\u5411\u94FE\u8868\u7C7B DoublyLinkedList"]}),(0,e.jsx)("p",{children:l[69].value}),(0,e.jsx)("p",{children:l[70].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[71].value,(0,e.jsx)("code",{children:l[72].value}),l[73].value]}),(0,e.jsxs)("li",{children:[l[74].value,(0,e.jsx)("code",{children:l[75].value}),l[76].value]})]}),(0,e.jsx)(i.Z,{lang:"js",children:l[77].value}),(0,e.jsxs)("h4",{id:"12-\u5B9E\u73B0-append\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#12-\u5B9E\u73B0-append\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.2 \u5B9E\u73B0 append()\u65B9\u6CD5"]}),(0,e.jsx)(i.Z,{lang:"js",children:l[78].value}),(0,e.jsxs)("h5",{id:"append\u65B9\u6CD5\u56FE\u89E3",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#append\u65B9\u6CD5\u56FE\u89E3",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"append()\u65B9\u6CD5\u56FE\u89E3"]}),(0,e.jsx)("p",{children:l[79].value}),(0,e.jsxs)("div",{align:"center",children:[l[80].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201071423034.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:l[81].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[82].value,(0,e.jsx)("code",{children:l[83].value}),l[84].value]}),(0,e.jsxs)("li",{children:[l[85].value,(0,e.jsx)("code",{children:l[86].value}),l[87].value]})]}),(0,e.jsx)("p",{children:l[88].value}),(0,e.jsxs)("div",{align:"center",children:[l[89].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201071423415.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[90].value,(0,e.jsx)("code",{children:l[91].value}),l[92].value]}),(0,e.jsxs)("li",{children:[l[93].value,(0,e.jsx)("strong",{children:l[94].value}),l[95].value]})]}),(0,e.jsx)("p",{children:l[96].value}),(0,e.jsxs)("div",{align:"center",children:[l[97].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201071424697.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h4",{id:"13-\u5B9E\u73B0-forwardstringbackwardstringtostring\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#13-\u5B9E\u73B0-forwardstringbackwardstringtostring\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.3 \u5B9E\u73B0 forwardString()\u3001backwardString()\u3001toString()\u65B9\u6CD5"]}),(0,e.jsx)("p",{children:l[98].value}),(0,e.jsx)(i.Z,{lang:"js",children:l[99].value}),(0,e.jsxs)("h5",{id:"\u6D4B\u8BD5\u4EE3\u7801",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6D4B\u8BD5\u4EE3\u7801",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(i.Z,{lang:"js",children:l[100].value}),(0,e.jsxs)("h4",{id:"14-\u5B9E\u73B0-insert\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#14-\u5B9E\u73B0-insert\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.4 \u5B9E\u73B0 insert()\u65B9\u6CD5"]}),(0,e.jsx)(i.Z,{lang:"js",children:l[101].value}),(0,e.jsxs)("h5",{id:"insert-\u65B9\u6CD5\u56FE\u89E3",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#insert-\u65B9\u6CD5\u56FE\u89E3",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"insert \u65B9\u6CD5\u56FE\u89E3"]}),(0,e.jsx)("p",{children:l[102].value}),(0,e.jsx)("ol",{children:(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[103].value}),l[104].value]})}),(0,e.jsx)(i.Z,{lang:"js",children:l[105].value}),(0,e.jsxs)("div",{align:"center",children:[l[106].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201071441105.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("ol",{start:"2",children:(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[107].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[108].value}),(0,e.jsx)("li",{children:l[109].value}),(0,e.jsx)("li",{children:l[110].value})]})]})}),(0,e.jsxs)("p",{children:[l[111].value,(0,e.jsx)("strong",{children:l[112].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:l[113].value}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[114].value})}),(0,e.jsxs)("div",{align:"center",children:[l[115].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201071445550.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[116].value,(0,e.jsx)("code",{children:l[117].value}),l[118].value]}),(0,e.jsxs)("li",{children:[l[119].value,(0,e.jsx)("code",{children:l[120].value}),l[121].value]}),(0,e.jsx)("li",{children:l[122].value})]}),(0,e.jsxs)("div",{align:"center",children:[l[123].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201071447394.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[l[124].value,(0,e.jsx)("code",{children:l[125].value}),l[126].value]})}),(0,e.jsxs)("div",{align:"center",children:[l[127].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201071452591.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("p",{children:[l[128].value,(0,e.jsx)("strong",{children:l[129].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:l[130].value}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[131].value})}),(0,e.jsxs)("div",{align:"center",children:[l[132].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201071456665.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[133].value,(0,e.jsx)("code",{children:l[134].value}),l[135].value]}),(0,e.jsxs)("li",{children:[l[136].value,(0,e.jsx)("code",{children:l[137].value}),l[138].value]})]}),(0,e.jsxs)("div",{align:"center",children:[l[139].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201071459466.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[l[140].value,(0,e.jsx)("code",{children:l[141].value}),l[142].value]})}),(0,e.jsxs)("div",{align:"center",children:[l[143].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201071502341.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("p",{children:[l[144].value,(0,e.jsx)("strong",{children:l[145].value})]}),(0,e.jsx)("blockquote",{children:(0,e.jsx)("p",{children:l[146].value})}),(0,e.jsx)(i.Z,{lang:"js",children:l[147].value}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[148].value})}),(0,e.jsxs)("div",{align:"center",children:[l[149].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201071506824.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[150].value})}),(0,e.jsxs)("div",{align:"center",children:[l[151].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201071510205.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[l[152].value,(0,e.jsx)("strong",{children:l[153].value}),l[154].value,(0,e.jsx)("strong",{children:l[155].value})]})}),(0,e.jsxs)("div",{align:"center",children:[l[156].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201071509203.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[157].value,(0,e.jsx)("code",{children:l[158].value}),l[159].value]}),(0,e.jsxs)("li",{children:[l[160].value,(0,e.jsx)("code",{children:l[161].value}),l[162].value]})]}),(0,e.jsxs)("div",{align:"center",children:[l[163].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201071513980.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[164].value,(0,e.jsx)("code",{children:l[165].value}),l[166].value]}),(0,e.jsxs)("li",{children:[l[167].value,(0,e.jsx)("code",{children:l[168].value}),l[169].value]})]}),(0,e.jsxs)("div",{align:"center",children:[l[170].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201071517599.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h5",{id:"\u6D4B\u8BD5\u4EE3\u7801-1",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6D4B\u8BD5\u4EE3\u7801-1",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(i.Z,{lang:"js",children:l[171].value}),(0,e.jsxs)("h4",{id:"15-\u5B9E\u73B0-get\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#15-\u5B9E\u73B0-get\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.5 \u5B9E\u73B0 get()\u65B9\u6CD5"]}),(0,e.jsx)(i.Z,{lang:"js",children:l[172].value}),(0,e.jsxs)("h5",{id:"\u6D4B\u8BD5\u4EE3\u7801-2",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6D4B\u8BD5\u4EE3\u7801-2",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(i.Z,{lang:"js",children:l[173].value}),(0,e.jsxs)("h4",{id:"16-\u5B9E\u73B0-indexof\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#16-\u5B9E\u73B0-indexof\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.6 \u5B9E\u73B0 indexOf()\u65B9\u6CD5"]}),(0,e.jsx)(i.Z,{lang:"js",children:l[174].value}),(0,e.jsxs)("h5",{id:"\u6D4B\u8BD5\u4EE3\u7801-3",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6D4B\u8BD5\u4EE3\u7801-3",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(i.Z,{lang:"js",children:l[175].value}),(0,e.jsxs)("h4",{id:"17-\u5B9E\u73B0-update\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#17-\u5B9E\u73B0-update\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.7 \u5B9E\u73B0 update()\u65B9\u6CD5"]}),(0,e.jsx)("p",{children:l[176].value}),(0,e.jsx)(i.Z,{lang:"js",children:l[177].value}),(0,e.jsxs)("h5",{id:"\u6D4B\u8BD5\u4EE3\u7801-4",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6D4B\u8BD5\u4EE3\u7801-4",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(i.Z,{lang:"js",children:l[178].value}),(0,e.jsxs)("h4",{id:"18-\u5B9E\u73B0-removeat\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#18-\u5B9E\u73B0-removeat\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.8 \u5B9E\u73B0 removeAt()\u65B9\u6CD5"]}),(0,e.jsx)(i.Z,{lang:"js",children:l[179].value}),(0,e.jsxs)("h5",{id:"removeat\u65B9\u6CD5\u56FE\u89E3",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#removeat\u65B9\u6CD5\u56FE\u89E3",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"removeAt()\u65B9\u6CD5\u56FE\u89E3"]}),(0,e.jsx)("p",{children:l[180].value}),(0,e.jsx)("p",{children:l[181].value}),(0,e.jsx)("p",{children:l[182].value}),(0,e.jsx)("ol",{children:(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[183].value}),l[184].value]})}),(0,e.jsxs)("div",{align:"center",children:[l[185].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201071549698.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("ol",{start:"2",children:(0,e.jsxs)("li",{children:[l[186].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[187].value}),(0,e.jsx)("li",{children:l[188].value}),(0,e.jsx)("li",{children:l[189].value})]})]})}),(0,e.jsx)("p",{children:l[190].value}),(0,e.jsx)(i.Z,{lang:"js",children:l[191].value}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[192].value})}),(0,e.jsxs)("div",{align:"center",children:[l[193].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201071553249.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[194].value,(0,e.jsx)("code",{children:l[195].value}),l[196].value]}),(0,e.jsxs)("li",{children:[l[197].value,(0,e.jsx)("code",{children:l[198].value}),l[199].value]}),(0,e.jsxs)("li",{children:[l[200].value,(0,e.jsx)("strong",{children:l[201].value}),l[202].value]})]}),(0,e.jsxs)("div",{align:"center",children:[l[203].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201071556860.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:l[204].value}),(0,e.jsx)(i.Z,{lang:"js",children:l[205].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[206].value,(0,e.jsx)("code",{children:l[207].value}),l[208].value]}),(0,e.jsxs)("li",{children:[l[209].value,(0,e.jsx)("code",{children:l[210].value}),l[211].value]}),(0,e.jsx)("li",{children:l[212].value})]}),(0,e.jsxs)("div",{align:"center",children:[l[213].value,(0,e.jsx)("p",{children:l[214].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:l[215].value}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[216].value})}),(0,e.jsxs)("div",{align:"center",children:[l[217].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201071611875.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[218].value,(0,e.jsx)("code",{children:l[219].value}),l[220].value]}),(0,e.jsxs)("li",{children:[l[221].value,(0,e.jsx)("code",{children:l[222].value}),l[223].value]}),(0,e.jsx)("li",{children:l[224].value})]}),(0,e.jsxs)("div",{align:"center",children:[l[225].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201071614897.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h5",{id:"\u6D4B\u8BD5\u4EE3\u7801-5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6D4B\u8BD5\u4EE3\u7801-5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(i.Z,{lang:"js",children:l[226].value}),(0,e.jsxs)("h4",{id:"19-\u5B9E\u73B0-remove\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#19-\u5B9E\u73B0-remove\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.9 \u5B9E\u73B0 remove()\u65B9\u6CD5"]}),(0,e.jsx)(i.Z,{lang:"js",children:l[227].value}),(0,e.jsxs)("h5",{id:"\u6D4B\u8BD5\u4EE3\u7801-6",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6D4B\u8BD5\u4EE3\u7801-6",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(i.Z,{lang:"js",children:l[228].value}),(0,e.jsxs)("h3",{id:"2\u5C01\u88C5\u5B8C\u7684\u53CC\u5411\u94FE\u8868",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2\u5C01\u88C5\u5B8C\u7684\u53CC\u5411\u94FE\u8868",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.\u5C01\u88C5\u5B8C\u7684\u53CC\u5411\u94FE\u8868"]}),(0,e.jsx)(i.Z,{lang:"js",children:l[229].value})]})})})}a.default=j},48739:function(g,a,s){var r=s(93236),c=function(n){return(0,r.createElement)(n.children)};a.Z=c},38039:function(g,a,s){s.d(a,{Z:function(){return m}});var r=s(54306),c=s.n(r),v=s(93236),n=s(62086),i=function(h){var d,x,e,j=(h==null||(d=h.children)===null||d===void 0?void 0:d.filter(function(u){return u!=`
+ `}))||[],o=(0,v.useState)(0),l=c()(o,2),_=l[0],p=l[1],B=function(t){p(t)};return(0,n.jsxs)("div",{className:"tab-container",children:[(0,n.jsx)("ul",{className:"tab-list",children:j.map(function(u,t){return(0,n.jsx)("li",{className:_===t?"tab-item active":"tab-item",onClick:function(){return B(t)},children:u.props.label},u.props.label)})}),(0,n.jsx)("div",{className:"tab-content",children:(x=j[_])===null||x===void 0||(e=x.props)===null||e===void 0?void 0:e.children})]})},m=i}}]);
diff --git a/docs__data-structure__05_set.md.07a441c4.chunk.css b/docs__data-structure__05_set.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__data-structure__05_set.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__data-structure__05_set.md.bc788602.async.js b/docs__data-structure__05_set.md.bc788602.async.js
new file mode 100644
index 0000000..7840588
--- /dev/null
+++ b/docs__data-structure__05_set.md.bc788602.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[351],{92227:function(v,l,u){u.r(l);var r=u(16878),c=u(84475),_=u(646),i=u(25778),s=u(1778),E=u(6749),B=u(48739),h=u(38039),a=u(5899),t=u(93236),e=u(62086);function x(){var o=(0,a.eL)(),n=o.texts;return(0,e.jsx)(a.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u96C6\u5408set",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u96C6\u5408set",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u96C6\u5408(set)"]}),(0,e.jsxs)("h2",{id:"\u4E00\u4ECB\u7ECD",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E00\u4ECB\u7ECD",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E00\u3001\u4ECB\u7ECD"]}),(0,e.jsxs)("p",{children:[n[0].value,(0,e.jsx)("strong",{children:n[1].value}),n[2].value,(0,e.jsx)("strong",{children:n[3].value}),n[4].value]}),(0,e.jsx)("p",{children:n[5].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[n[6].value,(0,e.jsx)("strong",{children:n[7].value}),n[8].value,(0,e.jsx)("strong",{children:n[9].value}),n[10].value]}),(0,e.jsxs)("li",{children:[n[11].value,(0,e.jsx)("strong",{children:n[12].value}),n[13].value,(0,e.jsx)("strong",{children:n[14].value}),n[15].value]})]}),(0,e.jsxs)("h2",{id:"\u4E8C\u96C6\u5408\u7684\u5B9E\u73B0",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E8C\u96C6\u5408\u7684\u5B9E\u73B0",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E8C\u3001\u96C6\u5408\u7684\u5B9E\u73B0"]}),(0,e.jsx)("p",{children:n[16].value}),(0,e.jsxs)("h3",{id:"\u96C6\u5408\u5E38\u89C1\u7684\u64CD\u4F5C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u96C6\u5408\u5E38\u89C1\u7684\u64CD\u4F5C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u96C6\u5408\u5E38\u89C1\u7684\u64CD\u4F5C"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:n[17].value}),n[18].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:n[19].value}),n[20].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:n[21].value}),n[22].value,(0,e.jsx)("code",{children:n[23].value}),n[24].value,(0,e.jsx)("code",{children:n[25].value})]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:n[26].value}),n[27].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:n[28].value}),n[29].value,(0,e.jsx)("code",{children:n[30].value}),n[31].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:n[32].value}),n[33].value]}),(0,e.jsx)("li",{children:n[34].value})]}),(0,e.jsxs)("h3",{id:"1set-\u7C7B\u7684\u4EE3\u7801\u5B9E\u73B0",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1set-\u7C7B\u7684\u4EE3\u7801\u5B9E\u73B0",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.Set \u7C7B\u7684\u4EE3\u7801\u5B9E\u73B0"]}),(0,e.jsx)(s.Z,{lang:"js",children:n[35].value}),(0,e.jsxs)("h4",{id:"\u6D4B\u8BD5\u4EE3\u7801",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6D4B\u8BD5\u4EE3\u7801",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(s.Z,{lang:"js",children:n[36].value}),(0,e.jsxs)("h3",{id:"2\u96C6\u5408\u95F4\u64CD\u4F5C\u7684\u5C01\u88C5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2\u96C6\u5408\u95F4\u64CD\u4F5C\u7684\u5C01\u88C5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.\u96C6\u5408\u95F4\u64CD\u4F5C\u7684\u5C01\u88C5"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:n[37].value}),(0,e.jsx)("li",{children:n[38].value}),(0,e.jsx)("li",{children:n[39].value}),(0,e.jsx)("li",{children:n[40].value})]}),(0,e.jsxs)("div",{align:"center",children:[n[41].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201091510184.png",style:{maxWidth:"100%"}}),n[42].value,(0,e.jsx)("div",{align:"center",children:n[43].value})]}),(0,e.jsxs)("h4",{id:"21-\u5E76\u96C6\u7684\u5B9E\u73B0",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#21-\u5E76\u96C6\u7684\u5B9E\u73B0",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.1 \u5E76\u96C6\u7684\u5B9E\u73B0"]}),(0,e.jsx)(s.Z,{lang:"js",children:n[44].value}),(0,e.jsxs)("h5",{id:"\u6D4B\u8BD5\u4EE3\u7801-1",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6D4B\u8BD5\u4EE3\u7801-1",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(s.Z,{lang:"js",children:n[45].value}),(0,e.jsxs)("h4",{id:"22-\u4EA4\u96C6\u7684\u5B9E\u73B0",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#22-\u4EA4\u96C6\u7684\u5B9E\u73B0",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.2 \u4EA4\u96C6\u7684\u5B9E\u73B0"]}),(0,e.jsx)(s.Z,{lang:"js",children:n[46].value}),(0,e.jsxs)("h5",{id:"\u6D4B\u8BD5\u4EE3\u7801-2",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6D4B\u8BD5\u4EE3\u7801-2",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(s.Z,{lang:"js",children:n[47].value}),(0,e.jsxs)("h4",{id:"23-\u5DEE\u96C6\u7684\u5B9E\u73B0",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#23-\u5DEE\u96C6\u7684\u5B9E\u73B0",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.3 \u5DEE\u96C6\u7684\u5B9E\u73B0"]}),(0,e.jsx)(s.Z,{lang:"js",children:n[48].value}),(0,e.jsxs)("h5",{id:"\u6D4B\u8BD5\u4EE3\u7801-3",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6D4B\u8BD5\u4EE3\u7801-3",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(s.Z,{lang:"js",children:n[49].value}),(0,e.jsxs)("h4",{id:"24-\u5224\u65AD\u5B50\u96C6\u7684\u5B9E\u73B0",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#24-\u5224\u65AD\u5B50\u96C6\u7684\u5B9E\u73B0",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.4 \u5224\u65AD\u5B50\u96C6\u7684\u5B9E\u73B0"]}),(0,e.jsx)(s.Z,{lang:"js",children:n[50].value}),(0,e.jsxs)("h5",{id:"\u6D4B\u8BD5\u4EE3\u7801-4",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6D4B\u8BD5\u4EE3\u7801-4",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(s.Z,{lang:"js",children:n[51].value}),(0,e.jsxs)("h3",{id:"3\u5B8C\u6574\u4EE3\u7801",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#3\u5B8C\u6574\u4EE3\u7801",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.\u5B8C\u6574\u4EE3\u7801"]}),(0,e.jsx)(s.Z,{lang:"js",children:n[52].value}),(0,e.jsxs)("h2",{id:"\u4E09\u5E94\u7528",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E09\u5E94\u7528",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E09\u3001\u5E94\u7528"]}),(0,e.jsxs)("h3",{id:"1\u4E24\u4E2A\u6570\u7EC4\u7684\u4EA4\u96C6",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1\u4E24\u4E2A\u6570\u7EC4\u7684\u4EA4\u96C6",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.",(0,e.jsx)("a",{href:"https://leetcode-cn.com/problems/intersection-of-two-arrays/",children:n[53].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:n[54].value})]})})})}l.default=x},48739:function(v,l,u){var r=u(93236),c=function(i){return(0,r.createElement)(i.children)};l.Z=c},38039:function(v,l,u){u.d(l,{Z:function(){return E}});var r=u(54306),c=u.n(r),_=u(93236),i=u(62086),s=function(h){var a,t,e,x=(h==null||(a=h.children)===null||a===void 0?void 0:a.filter(function(d){return d!=`
+ `}))||[],o=(0,_.useState)(0),n=c()(o,2),m=n[0],C=n[1],D=function(j){C(j)};return(0,i.jsxs)("div",{className:"tab-container",children:[(0,i.jsx)("ul",{className:"tab-list",children:x.map(function(d,j){return(0,i.jsx)("li",{className:m===j?"tab-item active":"tab-item",onClick:function(){return D(j)},children:d.props.label},d.props.label)})}),(0,i.jsx)("div",{className:"tab-content",children:(t=x[m])===null||t===void 0||(e=t.props)===null||e===void 0?void 0:e.children})]})},E=s}}]);
diff --git a/docs__data-structure__06_dictionary.md.07a441c4.chunk.css b/docs__data-structure__06_dictionary.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__data-structure__06_dictionary.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__data-structure__06_dictionary.md.e769bdec.async.js b/docs__data-structure__06_dictionary.md.e769bdec.async.js
new file mode 100644
index 0000000..46bca66
--- /dev/null
+++ b/docs__data-structure__06_dictionary.md.e769bdec.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[638],{14465:function(v,u,s){s.r(u);var c=s(16878),r=s(84475),x=s(646),i=s(25778),d=s(1778),E=s(6749),B=s(48739),_=s(38039),n=s(5899),h=s(93236),e=s(62086);function t(){var o=(0,n.eL)(),l=o.texts;return(0,e.jsx)(n.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u5B57\u5178dictionary",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5B57\u5178dictionary",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u5B57\u5178(Dictionary)"]}),(0,e.jsxs)("h2",{id:"\u4E00\u4ECB\u7ECD",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E00\u4ECB\u7ECD",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E00\u3001\u4ECB\u7ECD"]}),(0,e.jsxs)("p",{children:[l[0].value,(0,e.jsx)("strong",{children:l[1].value}),l[2].value,(0,e.jsxs)("strong",{children:[l[3].value,(0,e.jsx)("strong",{children:l[4].value}),l[5].value]}),l[6].value,(0,e.jsx)("strong",{children:l[7].value}),l[8].value]}),(0,e.jsxs)("p",{children:[l[9].value,(0,e.jsx)("code",{children:l[10].value}),l[11].value,(0,e.jsx)("code",{children:l[12].value}),l[13].value,(0,e.jsx)("code",{children:l[14].value}),l[15].value,(0,e.jsx)("code",{children:l[16].value}),l[17].value]}),(0,e.jsxs)("h2",{id:"\u4E8C\u5B57\u5178\u7684\u5B9E\u73B0",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E8C\u5B57\u5178\u7684\u5B9E\u73B0",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E8C\u3001\u5B57\u5178\u7684\u5B9E\u73B0"]}),(0,e.jsx)("blockquote",{children:(0,e.jsx)("p",{children:l[18].value})}),(0,e.jsxs)("h3",{id:"\u5B57\u5178\u5E38\u89C1\u7684\u64CD\u4F5C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5B57\u5178\u5E38\u89C1\u7684\u64CD\u4F5C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u5B57\u5178\u5E38\u89C1\u7684\u64CD\u4F5C"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[19].value}),l[20].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[21].value}),l[22].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[23].value}),l[24].value,(0,e.jsx)("code",{children:l[25].value}),l[26].value,(0,e.jsx)("code",{children:l[27].value})]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[28].value}),l[29].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[30].value}),l[31].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[32].value}),l[33].value,(0,e.jsx)("code",{children:l[34].value}),l[35].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[36].value}),l[37].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[38].value}),l[39].value]})]}),(0,e.jsxs)("h3",{id:"\u4EE3\u7801\u5B9E\u73B0",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4EE3\u7801\u5B9E\u73B0",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4EE3\u7801\u5B9E\u73B0"]}),(0,e.jsx)(d.Z,{lang:"js",children:l[40].value}),(0,e.jsxs)("h5",{id:"\u6D4B\u8BD5\u4EE3\u7801",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6D4B\u8BD5\u4EE3\u7801",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(d.Z,{lang:"js",children:l[41].value}),(0,e.jsxs)("h2",{id:"\u4E09\u5E94\u7528",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E09\u5E94\u7528",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E09\u3001\u5E94\u7528"]}),(0,e.jsxs)("h3",{id:"1\u4E24\u6570\u4E4B\u548C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1\u4E24\u6570\u4E4B\u548C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.",(0,e.jsx)(n.rU,{to:"/js-logs/n-sum#1%E4%B8%A4%E6%95%B0%E4%B9%8B%E5%92%8C",children:l[42].value})]}),(0,e.jsx)(d.Z,{lang:"js",children:l[43].value}),(0,e.jsxs)("h3",{id:"2\u65E0\u91CD\u590D\u5B57\u7B26\u7684\u6700\u957F\u5B50\u4E32",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2\u65E0\u91CD\u590D\u5B57\u7B26\u7684\u6700\u957F\u5B50\u4E32",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.",(0,e.jsx)(n.rU,{to:"/js-logs/sliding-window#3%E6%97%A0%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E4%B8%B2",children:l[44].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[45].value}),(0,e.jsx)("li",{children:l[46].value}),(0,e.jsx)("li",{children:l[47].value}),(0,e.jsx)("li",{children:l[48].value})]}),(0,e.jsxs)("p",{children:[l[49].value,(0,e.jsx)("br",{}),l[50].value]}),(0,e.jsx)(d.Z,{lang:"js",children:l[51].value}),(0,e.jsxs)("h3",{id:"3\u6709\u6548\u7684\u62EC\u53F7",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#3\u6709\u6548\u7684\u62EC\u53F7",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.",(0,e.jsx)(n.rU,{to:"/js-logs/stack#20%E6%9C%89%E6%95%88%E7%9A%84%E6%8B%AC%E5%8F%B7",children:l[52].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[53].value}),(0,e.jsx)("li",{children:l[54].value}),(0,e.jsx)("li",{children:l[55].value}),(0,e.jsx)("li",{children:l[56].value}),(0,e.jsx)("li",{children:l[57].value}),(0,e.jsx)("li",{children:l[58].value}),(0,e.jsx)("li",{children:l[59].value}),(0,e.jsx)("li",{children:l[60].value})]}),(0,e.jsx)(d.Z,{lang:"js",children:l[61].value})]})})})}u.default=t},48739:function(v,u,s){var c=s(93236),r=function(i){return(0,c.createElement)(i.children)};u.Z=r},38039:function(v,u,s){s.d(u,{Z:function(){return E}});var c=s(54306),r=s.n(c),x=s(93236),i=s(62086),d=function(_){var n,h,e,t=(_==null||(n=_.children)===null||n===void 0?void 0:n.filter(function(a){return a!=`
+ `}))||[],o=(0,x.useState)(0),l=r()(o,2),m=l[0],C=l[1],D=function(j){C(j)};return(0,i.jsxs)("div",{className:"tab-container",children:[(0,i.jsx)("ul",{className:"tab-list",children:t.map(function(a,j){return(0,i.jsx)("li",{className:m===j?"tab-item active":"tab-item",onClick:function(){return D(j)},children:a.props.label},a.props.label)})}),(0,i.jsx)("div",{className:"tab-content",children:(h=t[m])===null||h===void 0||(e=h.props)===null||e===void 0?void 0:e.children})]})},E=d}}]);
diff --git a/docs__data-structure__07_hash_table.md.07a441c4.chunk.css b/docs__data-structure__07_hash_table.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__data-structure__07_hash_table.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__data-structure__07_hash_table.md.0eedd5de.async.js b/docs__data-structure__07_hash_table.md.0eedd5de.async.js
new file mode 100644
index 0000000..54eca8d
--- /dev/null
+++ b/docs__data-structure__07_hash_table.md.0eedd5de.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[503],{80719:function(g,n,s){s.r(n);var r=s(16878),c=s(84475),t=s(646),u=s(25778),i=s(1778),_=s(6749),E=s(48739),h=s(38039),a=s(5899),x=s(93236),e=s(62086);function j(){var o=(0,a.eL)(),l=o.texts;return(0,e.jsx)(a.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u54C8\u5E0C\u8868hashtable",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u54C8\u5E0C\u8868hashtable",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u54C8\u5E0C\u8868(HashTable)"]}),(0,e.jsxs)("h2",{id:"\u4E00\u4ECB\u7ECD",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E00\u4ECB\u7ECD",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E00\u3001\u4ECB\u7ECD"]}),(0,e.jsx)("p",{children:l[0].value}),(0,e.jsxs)("p",{children:[l[1].value,(0,e.jsx)("strong",{children:l[2].value}),l[3].value,(0,e.jsx)("strong",{children:l[4].value}),l[5].value,(0,e.jsx)("strong",{children:l[6].value}),l[7].value,(0,e.jsx)("strong",{children:l[8].value}),l[9].value,(0,e.jsx)("strong",{children:l[10].value}),l[11].value]}),(0,e.jsxs)("h3",{id:"1-\u54C8\u5E0C\u8868\u7684\u4F18\u70B9",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1-\u54C8\u5E0C\u8868\u7684\u4F18\u70B9",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1. \u54C8\u5E0C\u8868\u7684\u4F18\u70B9"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[12].value,(0,e.jsx)("strong",{children:l[13].value}),l[14].value]}),(0,e.jsxs)("li",{children:[l[15].value,(0,e.jsx)("strong",{children:l[16].value}),l[17].value]}),(0,e.jsxs)("li",{children:[l[18].value,(0,e.jsx)("strong",{children:l[19].value}),l[20].value]})]}),(0,e.jsxs)("h3",{id:"2-\u54C8\u5E0C\u8868\u7684\u7F3A\u70B9",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2-\u54C8\u5E0C\u8868\u7684\u7F3A\u70B9",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2. \u54C8\u5E0C\u8868\u7684\u7F3A\u70B9"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[21].value,(0,e.jsx)("strong",{children:l[22].value}),l[23].value]}),(0,e.jsxs)("li",{children:[l[24].value,(0,e.jsx)("strong",{children:l[25].value}),l[26].value]})]}),(0,e.jsx)("p",{children:(0,e.jsx)("strong",{children:l[27].value})}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[28].value,(0,e.jsx)("strong",{children:l[29].value}),l[30].value,(0,e.jsx)("strong",{children:l[31].value}),l[32].value]}),(0,e.jsxs)("li",{children:[l[33].value,(0,e.jsx)("strong",{children:l[34].value}),l[35].value,(0,e.jsx)("strong",{children:l[36].value}),l[37].value,(0,e.jsx)("strong",{children:l[38].value}),l[39].value,(0,e.jsx)("strong",{children:l[40].value}),l[41].value,(0,e.jsx)("strong",{children:l[42].value}),l[43].value,(0,e.jsx)("strong",{children:l[44].value}),l[45].value]})]}),(0,e.jsxs)("p",{children:[l[46].value,(0,e.jsx)("strong",{children:l[47].value}),l[48].value]}),(0,e.jsxs)("h3",{id:"3-\u5173\u4E8E\u54C8\u5E0C\u8868\u7684\u4E00\u4E9B\u6982\u5FF5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#3-\u5173\u4E8E\u54C8\u5E0C\u8868\u7684\u4E00\u4E9B\u6982\u5FF5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3. \u5173\u4E8E\u54C8\u5E0C\u8868\u7684\u4E00\u4E9B\u6982\u5FF5"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:(0,e.jsxs)("p",{children:[(0,e.jsx)("strong",{children:l[49].value}),(0,e.jsx)("br",{}),l[50].value,(0,e.jsx)("strong",{children:l[51].value}),l[52].value,(0,e.jsx)("strong",{children:l[53].value}),l[54].value]})}),(0,e.jsx)("li",{children:(0,e.jsxs)("p",{children:[(0,e.jsx)("strong",{children:l[55].value}),(0,e.jsx)("br",{}),l[56].value]})}),(0,e.jsx)("li",{children:(0,e.jsxs)("p",{children:[(0,e.jsx)("strong",{children:l[57].value}),(0,e.jsx)("br",{}),l[58].value]})})]}),(0,e.jsxs)("h3",{id:"4-\u8BA4\u8BC6\u54C8\u5E0C\u5316",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#4-\u8BA4\u8BC6\u54C8\u5E0C\u5316",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"4. \u8BA4\u8BC6\u54C8\u5E0C\u5316"]}),(0,e.jsx)("p",{children:l[59].value}),(0,e.jsx)("p",{children:l[60].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:(0,e.jsxs)("p",{children:[l[61].value,(0,e.jsx)("br",{}),l[62].value,(0,e.jsx)("code",{children:l[63].value}),l[64].value,(0,e.jsx)("br",{}),l[65].value]})}),(0,e.jsx)("li",{children:(0,e.jsxs)("p",{children:[l[66].value,(0,e.jsx)("br",{}),l[67].value,(0,e.jsx)("code",{children:l[68].value}),l[69].value,(0,e.jsx)("code",{children:l[70].value}),l[71].value,(0,e.jsx)("br",{}),l[72].value]})})]}),(0,e.jsx)("p",{children:l[73].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[74].value}),(0,e.jsx)("li",{children:l[75].value})]}),(0,e.jsxs)("p",{children:[l[76].value,(0,e.jsx)("strong",{children:l[77].value}),l[78].value]}),(0,e.jsxs)("h3",{id:"5-\u89E3\u51B3\u54C8\u5E0C\u5316\u540E\u5730\u5740\u4ECD\u7136\u51B2\u7A81\u7684\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#5-\u89E3\u51B3\u54C8\u5E0C\u5316\u540E\u5730\u5740\u4ECD\u7136\u51B2\u7A81\u7684\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"5. \u89E3\u51B3\u54C8\u5E0C\u5316\u540E\u5730\u5740\u4ECD\u7136\u51B2\u7A81\u7684\u65B9\u6CD5"]}),(0,e.jsxs)("h4",{id:"51-\u62C9\u94FE\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#51-\u62C9\u94FE\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"5.1 \u62C9\u94FE\u6CD5"]}),(0,e.jsxs)("p",{children:[l[79].value,(0,e.jsx)("strong",{children:l[80].value}),l[81].value,(0,e.jsx)("strong",{children:l[82].value}),l[83].value,(0,e.jsx)("strong",{children:l[84].value}),l[85].value,(0,e.jsx)("strong",{children:l[86].value})]}),(0,e.jsxs)("div",{align:"center",children:[l[87].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201111603081.png",style:{maxWidth:"100%"}}),l[88].value,(0,e.jsx)("div",{align:"center",children:l[89].value})]}),(0,e.jsx)("p",{children:l[90].value}),(0,e.jsxs)("p",{children:[(0,e.jsx)("strong",{children:l[91].value}),l[92].value]}),(0,e.jsxs)("h4",{id:"52-\u5F00\u653E\u5730\u5740\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#52-\u5F00\u653E\u5730\u5740\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"5.2 \u5F00\u653E\u5730\u5740\u6CD5"]}),(0,e.jsx)("blockquote",{children:(0,e.jsx)("p",{children:l[93].value})}),(0,e.jsxs)("div",{align:"center",children:[l[94].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201111604130.png",style:{maxWidth:"100%"}}),l[95].value,(0,e.jsx)("div",{align:"center",children:l[96].value})]}),(0,e.jsx)("p",{children:l[97].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[98].value}),(0,e.jsx)("li",{children:l[99].value}),(0,e.jsx)("li",{children:l[100].value})]}),(0,e.jsxs)("h5",{id:"521-\u7EBF\u6027\u63A2\u6D4B",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#521-\u7EBF\u6027\u63A2\u6D4B",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"5.2.1 \u7EBF\u6027\u63A2\u6D4B"]}),(0,e.jsx)("p",{children:l[101].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:(0,e.jsxs)("p",{children:[l[102].value,(0,e.jsx)("br",{}),l[103].value]})}),(0,e.jsxs)("li",{children:[(0,e.jsx)("p",{children:l[104].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[105].value}),(0,e.jsx)("li",{children:l[106].value})]})]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("p",{children:l[107].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[108].value}),(0,e.jsx)("li",{children:l[109].value})]})]})]}),(0,e.jsx)("p",{children:(0,e.jsx)("strong",{children:l[110].value})}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[111].value,(0,e.jsx)("strong",{children:l[112].value}),l[113].value]}),(0,e.jsx)("li",{children:l[114].value}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[115].value}),l[116].value]}),(0,e.jsx)("li",{children:l[117].value})]}),(0,e.jsxs)("div",{align:"center",children:[l[118].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201111608755.png",style:{maxWidth:"100%"}}),l[119].value,(0,e.jsx)("div",{align:"center",children:l[120].value})]}),(0,e.jsx)("blockquote",{children:(0,e.jsx)("p",{children:l[121].value})}),(0,e.jsxs)("h5",{id:"522-\u4E8C\u6B21\u63A2\u6D4B",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#522-\u4E8C\u6B21\u63A2\u6D4B",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"5.2.2 \u4E8C\u6B21\u63A2\u6D4B"]}),(0,e.jsx)("p",{children:(0,e.jsx)("strong",{children:l[122].value})}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[123].value})}),(0,e.jsx)("p",{children:(0,e.jsx)("strong",{children:l[124].value})}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[125].value}),(0,e.jsx)("li",{children:l[126].value}),(0,e.jsxs)("li",{children:[l[127].value,(0,e.jsx)("strong",{children:l[128].value}),l[129].value]})]}),(0,e.jsx)("p",{children:(0,e.jsx)("strong",{children:l[130].value})}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[131].value})}),(0,e.jsxs)("h5",{id:"523-\u518D\u54C8\u5E0C\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#523-\u518D\u54C8\u5E0C\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"5.2.3 \u518D\u54C8\u5E0C\u6CD5"]}),(0,e.jsx)("p",{children:l[132].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[133].value}),(0,e.jsxs)("li",{children:[l[134].value,(0,e.jsx)("strong",{children:l[135].value}),l[136].value]}),(0,e.jsxs)("li",{children:[l[137].value,(0,e.jsx)("strong",{children:l[138].value})]}),(0,e.jsxs)("li",{children:[l[139].value,(0,e.jsx)("strong",{children:l[140].value}),l[141].value,(0,e.jsx)("strong",{children:l[142].value})]})]}),(0,e.jsx)("p",{children:l[143].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[144].value}),(0,e.jsx)("li",{children:l[145].value})]}),(0,e.jsx)("p",{children:(0,e.jsx)("strong",{children:l[146].value})}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[147].value}),(0,e.jsxs)("li",{children:[l[148].value,(0,e.jsx)("strong",{children:l[149].value}),l[150].value,(0,e.jsx)("strong",{children:l[151].value})]}),(0,e.jsx)("li",{children:l[152].value})]}),(0,e.jsx)("p",{children:(0,e.jsx)("strong",{children:l[153].value})}),(0,e.jsx)("p",{children:l[154].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[155].value}),(0,e.jsx)("li",{children:l[156].value}),(0,e.jsxs)("li",{children:[l[157].value,(0,e.jsx)("strong",{children:l[158].value}),l[159].value,(0,e.jsx)("em",{children:l[160].value})]})]}),(0,e.jsx)("p",{children:(0,e.jsx)("strong",{children:l[161].value})}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[162].value,(0,e.jsx)("strong",{children:l[163].value})]}),(0,e.jsx)("li",{children:l[164].value}),(0,e.jsx)("li",{children:l[165].value}),(0,e.jsx)("li",{children:l[166].value})]}),(0,e.jsx)("p",{children:(0,e.jsx)("strong",{children:l[167].value})}),(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[(0,e.jsx)("p",{children:l[168].value}),(0,e.jsx)("p",{children:l[169].value})]})}),(0,e.jsxs)("div",{align:"center",children:[l[170].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201111622405.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[(0,e.jsx)("p",{children:l[171].value}),(0,e.jsx)("p",{children:l[172].value})]})}),(0,e.jsxs)("div",{align:"center",children:[l[173].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201111623663.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[(0,e.jsx)("p",{children:l[174].value}),(0,e.jsx)("p",{children:l[175].value})]})}),(0,e.jsxs)("div",{align:"center",children:[l[176].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201111624244.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h3",{id:"6-\u54C8\u5E0C\u51FD\u6570",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#6-\u54C8\u5E0C\u51FD\u6570",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"6. \u54C8\u5E0C\u51FD\u6570"]}),(0,e.jsx)("p",{children:l[177].value}),(0,e.jsx)("p",{children:l[178].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[179].value}),(0,e.jsx)("li",{children:l[180].value})]}),(0,e.jsxs)("h4",{id:"\u5FEB\u901F\u8BA1\u7B97",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5FEB\u901F\u8BA1\u7B97",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u5FEB\u901F\u8BA1\u7B97"]}),(0,e.jsx)("p",{children:l[181].value}),(0,e.jsxs)("div",{align:"center",children:[l[182].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201111628215.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:l[183].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[184].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[185].value}),(0,e.jsx)("li",{children:l[186].value})]})]}),(0,e.jsxs)("li",{children:[l[187].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[188].value}),(0,e.jsx)("li",{children:l[189].value})]})]})]}),(0,e.jsx)("p",{children:l[190].value}),(0,e.jsxs)("h4",{id:"\u5747\u5300\u5206\u5E03",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5747\u5300\u5206\u5E03",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u5747\u5300\u5206\u5E03"]}),(0,e.jsx)("p",{children:l[191].value}),(0,e.jsxs)("p",{children:[(0,e.jsx)("strong",{children:l[192].value}),l[193].value,(0,e.jsx)("strong",{children:l[194].value}),l[195].value,(0,e.jsx)("strong",{children:l[196].value}),l[197].value]}),(0,e.jsxs)("h2",{id:"\u4E8C\u54C8\u5E0C\u8868\u7684\u5C01\u88C5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E8C\u54C8\u5E0C\u8868\u7684\u5C01\u88C5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E8C\u3001\u54C8\u5E0C\u8868\u7684\u5C01\u88C5"]}),(0,e.jsxs)("h3",{id:"1-\u5B9E\u73B0\u4E00\u4E2A\u54C8\u5E0C\u51FD\u6570",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1-\u5B9E\u73B0\u4E00\u4E2A\u54C8\u5E0C\u51FD\u6570",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1. \u5B9E\u73B0\u4E00\u4E2A\u54C8\u5E0C\u51FD\u6570"]}),(0,e.jsx)(i.Z,{lang:"js",children:l[198].value}),(0,e.jsxs)("h4",{id:"\u6D4B\u8BD5\u4EE3\u7801",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6D4B\u8BD5\u4EE3\u7801",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(i.Z,{lang:"js",children:l[199].value}),(0,e.jsxs)("h3",{id:"2-\u54C8\u5E0C\u8868\u5E38\u89C1\u64CD\u4F5C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2-\u54C8\u5E0C\u8868\u5E38\u89C1\u64CD\u4F5C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2. \u54C8\u5E0C\u8868\u5E38\u89C1\u64CD\u4F5C"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[200].value}),l[201].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[202].value}),l[203].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[204].value}),l[205].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[206].value}),l[207].value,(0,e.jsx)("code",{children:l[208].value}),l[209].value,(0,e.jsx)("code",{children:l[210].value}),l[211].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[212].value}),l[213].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[214].value}),l[215].value]})]}),(0,e.jsxs)("h3",{id:"3-\u521B\u5EFA\u54C8\u5E0C\u8868\u7C7B",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#3-\u521B\u5EFA\u54C8\u5E0C\u8868\u7C7B",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3. \u521B\u5EFA\u54C8\u5E0C\u8868\u7C7B"]}),(0,e.jsx)("p",{children:l[216].value}),(0,e.jsxs)("div",{align:"center",children:[l[217].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201111640956.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h4",{id:"31-\u521B\u5EFA\u54C8\u5E0C\u8868\u7C7B",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#31-\u521B\u5EFA\u54C8\u5E0C\u8868\u7C7B",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.1 \u521B\u5EFA\u54C8\u5E0C\u8868\u7C7B"]}),(0,e.jsx)(i.Z,{lang:"js",children:l[218].value}),(0,e.jsxs)("h4",{id:"32-\u5B9E\u73B0-put\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#32-\u5B9E\u73B0-put\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.2 \u5B9E\u73B0 put()\u65B9\u6CD5"]}),(0,e.jsxs)("p",{children:[l[219].value,(0,e.jsx)("code",{children:l[220].value}),l[221].value]}),(0,e.jsxs)("div",{align:"center",children:[l[222].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201111642881.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:l[223].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[224].value}),(0,e.jsx)("li",{children:l[225].value}),(0,e.jsx)("li",{children:l[226].value}),(0,e.jsx)("li",{children:l[227].value})]}),(0,e.jsx)("p",{children:(0,e.jsx)("strong",{children:l[228].value})}),(0,e.jsx)(i.Z,{lang:"js",children:l[229].value}),(0,e.jsx)("p",{children:l[230].value}),(0,e.jsxs)("h4",{id:"33-\u5B9E\u73B0-get\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#33-\u5B9E\u73B0-get\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.3 \u5B9E\u73B0 get()\u65B9\u6CD5"]}),(0,e.jsx)("p",{children:l[231].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[232].value,(0,e.jsx)("code",{children:l[233].value}),l[234].value,(0,e.jsx)("code",{children:l[235].value}),l[236].value]}),(0,e.jsxs)("li",{children:[l[237].value,(0,e.jsx)("code",{children:l[238].value}),l[239].value]}),(0,e.jsxs)("li",{children:[l[240].value,(0,e.jsx)("code",{children:l[241].value}),l[242].value,(0,e.jsx)("code",{children:l[243].value}),l[244].value,(0,e.jsx)("code",{children:l[245].value}),l[246].value,(0,e.jsx)("code",{children:l[247].value}),l[248].value]}),(0,e.jsxs)("li",{children:[l[249].value,(0,e.jsx)("code",{children:l[250].value}),l[251].value,(0,e.jsx)("code",{children:l[252].value}),l[253].value,(0,e.jsx)("code",{children:l[254].value}),l[255].value,(0,e.jsx)("code",{children:l[256].value}),l[257].value]}),(0,e.jsxs)("li",{children:[l[258].value,(0,e.jsx)("code",{children:l[259].value}),l[260].value,(0,e.jsx)("code",{children:l[261].value}),l[262].value,(0,e.jsx)("code",{children:l[263].value}),l[264].value]})]}),(0,e.jsx)("p",{children:(0,e.jsx)("strong",{children:l[265].value})}),(0,e.jsx)(i.Z,{lang:"js",children:l[266].value}),(0,e.jsx)("p",{children:(0,e.jsx)("strong",{children:l[267].value})}),(0,e.jsx)(i.Z,{lang:"js",children:l[268].value}),(0,e.jsxs)("h4",{id:"34-\u5B9E\u73B0-remove\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#34-\u5B9E\u73B0-remove\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.4 \u5B9E\u73B0 remove()\u65B9\u6CD5"]}),(0,e.jsx)("p",{children:l[269].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[270].value,(0,e.jsx)("code",{children:l[271].value}),l[272].value,(0,e.jsx)("code",{children:l[273].value}),l[274].value]}),(0,e.jsxs)("li",{children:[l[275].value,(0,e.jsx)("code",{children:l[276].value}),l[277].value]}),(0,e.jsxs)("li",{children:[l[278].value,(0,e.jsx)("code",{children:l[279].value}),l[280].value,(0,e.jsx)("code",{children:l[281].value}),l[282].value,(0,e.jsx)("code",{children:l[283].value}),l[284].value,(0,e.jsx)("code",{children:l[285].value}),l[286].value]}),(0,e.jsxs)("li",{children:[l[287].value,(0,e.jsx)("code",{children:l[288].value}),l[289].value]}),(0,e.jsxs)("li",{children:[l[290].value,(0,e.jsx)("code",{children:l[291].value}),l[292].value]})]}),(0,e.jsx)(i.Z,{lang:"js",children:l[293].value}),(0,e.jsxs)("h4",{id:"35-\u5B9E\u73B0-isempty\u65B9\u6CD5\u548C-size\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#35-\u5B9E\u73B0-isempty\u65B9\u6CD5\u548C-size\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.5 \u5B9E\u73B0 isEmpty()\u65B9\u6CD5\u548C size()\u65B9\u6CD5"]}),(0,e.jsx)(i.Z,{lang:"js",children:l[294].value}),(0,e.jsxs)("h4",{id:"36-\u54C8\u5E0C\u8868\u7684\u6269\u5BB9\u548C\u538B\u7F29",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#36-\u54C8\u5E0C\u8868\u7684\u6269\u5BB9\u548C\u538B\u7F29",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.6 \u54C8\u5E0C\u8868\u7684\u6269\u5BB9\u548C\u538B\u7F29"]}),(0,e.jsx)("p",{children:l[295].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[296].value}),(0,e.jsxs)("li",{children:[l[297].value,(0,e.jsx)("code",{children:l[298].value}),l[299].value,(0,e.jsx)("code",{children:l[300].value}),l[301].value]})]}),(0,e.jsx)("p",{children:l[302].value}),(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[l[303].value,(0,e.jsx)("code",{children:l[304].value}),l[305].value]})}),(0,e.jsx)("p",{children:l[306].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[307].value}),(0,e.jsx)("li",{children:l[308].value})]}),(0,e.jsx)("p",{children:l[309].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[310].value,(0,e.jsx)("code",{children:l[311].value}),l[312].value]}),(0,e.jsxs)("li",{children:[l[313].value,(0,e.jsx)("code",{children:l[314].value}),l[315].value]}),(0,e.jsxs)("li",{children:[l[316].value,(0,e.jsx)("code",{children:l[317].value}),l[318].value]})]}),(0,e.jsxs)("div",{align:"center",children:[l[319].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201111656776.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h4",{id:"37-\u5B9E\u73B0-resize\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#37-\u5B9E\u73B0-resize\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.7 \u5B9E\u73B0 resize()\u65B9\u6CD5"]}),(0,e.jsxs)("p",{children:[l[320].value,(0,e.jsx)("code",{children:l[321].value}),l[322].value]}),(0,e.jsx)("p",{children:l[323].value}),(0,e.jsx)(i.Z,{lang:"js",children:l[324].value}),(0,e.jsxs)("p",{children:[l[325].value,(0,e.jsx)("code",{children:l[326].value}),l[327].value]}),(0,e.jsx)(i.Z,{lang:"js",children:l[328].value}),(0,e.jsxs)("p",{children:[l[329].value,(0,e.jsx)("code",{children:l[330].value}),l[331].value]}),(0,e.jsx)(i.Z,{lang:"js",children:l[332].value}),(0,e.jsx)("p",{children:l[333].value}),(0,e.jsx)(i.Z,{lang:"js",children:l[334].value}),(0,e.jsxs)("h2",{id:"\u4E09\u5B8C\u6574\u5B9E\u73B0",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E09\u5B8C\u6574\u5B9E\u73B0",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E09\u3001\u5B8C\u6574\u5B9E\u73B0"]}),(0,e.jsx)(i.Z,{lang:"js",children:l[335].value})]})})})}n.default=j},48739:function(g,n,s){var r=s(93236),c=function(u){return(0,r.createElement)(u.children)};n.Z=c},38039:function(g,n,s){s.d(n,{Z:function(){return _}});var r=s(54306),c=s.n(r),t=s(93236),u=s(62086),i=function(h){var a,x,e,j=(h==null||(a=h.children)===null||a===void 0?void 0:a.filter(function(d){return d!=`
+ `}))||[],o=(0,t.useState)(0),l=c()(o,2),C=l[0],m=l[1],p=function(v){m(v)};return(0,u.jsxs)("div",{className:"tab-container",children:[(0,u.jsx)("ul",{className:"tab-list",children:j.map(function(d,v){return(0,u.jsx)("li",{className:C===v?"tab-item active":"tab-item",onClick:function(){return p(v)},children:d.props.label},d.props.label)})}),(0,u.jsx)("div",{className:"tab-content",children:(x=j[C])===null||x===void 0||(e=x.props)===null||e===void 0?void 0:e.children})]})},_=i}}]);
diff --git a/docs__data-structure__08_tree&binary_tree.md.07a441c4.chunk.css b/docs__data-structure__08_tree&binary_tree.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__data-structure__08_tree&binary_tree.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__data-structure__08_tree&binary_tree.md.93f22bef.async.js b/docs__data-structure__08_tree&binary_tree.md.93f22bef.async.js
new file mode 100644
index 0000000..418275d
--- /dev/null
+++ b/docs__data-structure__08_tree&binary_tree.md.93f22bef.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[500],{15105:function(m,i,l){l.r(i);var r=l(16878),d=l(84475),v=l(646),s=l(25778),g=l(1778),c=l(6749),E=l(48739),h=l(38039),u=l(5899),t=l(93236),e=l(62086);function x(){var o=(0,u.eL)(),n=o.texts;return(0,e.jsx)(u.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u6811tree\u548C\u4E8C\u53C9\u6811binarytree",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6811tree\u548C\u4E8C\u53C9\u6811binarytree",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6811(Tree)\u548C\u4E8C\u53C9\u6811(BinaryTree)"]}),(0,e.jsxs)("h2",{id:"\u4E00\u6811\u7ED3\u6784\u7684\u4ECB\u7ECD",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E00\u6811\u7ED3\u6784\u7684\u4ECB\u7ECD",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E00\u3001\u6811\u7ED3\u6784\u7684\u4ECB\u7ECD"]}),(0,e.jsx)("p",{children:n[0].value}),(0,e.jsxs)("div",{align:"center",children:[n[1].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202210092100999.jpg",style:{maxWidth:"100%"}}),n[2].value,(0,e.jsx)("div",{align:"center",children:n[3].value})]}),(0,e.jsxs)("h3",{id:"11-\u6811\u7684\u7279\u70B9",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#11-\u6811\u7684\u7279\u70B9",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.1 \u6811\u7684\u7279\u70B9\uFF1A"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[n[4].value,(0,e.jsx)("strong",{children:n[5].value}),n[6].value,(0,e.jsx)("strong",{children:n[7].value})]}),(0,e.jsxs)("li",{children:[n[8].value,(0,e.jsx)("strong",{children:n[9].value}),n[10].value]}),(0,e.jsxs)("li",{children:[n[11].value,(0,e.jsx)("strong",{children:n[12].value})]})]}),(0,e.jsxs)("p",{children:[n[13].value,(0,e.jsx)("code",{children:n[14].value}),n[15].value]}),(0,e.jsxs)("div",{align:"center",children:[n[16].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201121415790.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h3",{id:"12-\u6811\u7ED3\u6784-\u5BF9\u6BD4\u4E8E\u6570\u7EC4\u94FE\u8868\u54C8\u5E0C\u8868-\u6709\u54EA\u4E9B\u4F18\u52BF\u5462",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#12-\u6811\u7ED3\u6784-\u5BF9\u6BD4\u4E8E\u6570\u7EC4\u94FE\u8868\u54C8\u5E0C\u8868-\u6709\u54EA\u4E9B\u4F18\u52BF\u5462",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.2 \u6811\u7ED3\u6784 \u5BF9\u6BD4\u4E8E\u6570\u7EC4/\u94FE\u8868/\u54C8\u5E0C\u8868 \u6709\u54EA\u4E9B",(0,e.jsx)("strong",{children:n[17].value}),"\u5462\uFF1F"]}),(0,e.jsx)("p",{children:(0,e.jsx)("strong",{children:n[18].value})}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[n[19].value,(0,e.jsx)("strong",{children:n[20].value}),n[21].value]}),(0,e.jsxs)("li",{children:[n[22].value,(0,e.jsx)("strong",{children:n[23].value}),n[24].value,(0,e.jsx)("strong",{children:n[25].value}),n[26].value,(0,e.jsx)("strong",{children:n[27].value}),n[28].value]})]}),(0,e.jsx)("p",{children:(0,e.jsx)("strong",{children:n[29].value})}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:n[30].value}),(0,e.jsxs)("li",{children:[n[31].value,(0,e.jsx)("strong",{children:n[32].value}),n[33].value]})]}),(0,e.jsx)("p",{children:(0,e.jsx)("strong",{children:n[34].value})}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:n[35].value}),(0,e.jsxs)("li",{children:[n[36].value,(0,e.jsx)("strong",{children:n[37].value}),n[38].value,(0,e.jsx)("strong",{children:n[39].value}),n[40].value,(0,e.jsx)("strong",{children:n[41].value}),n[42].value]})]}),(0,e.jsx)("p",{children:(0,e.jsx)("strong",{children:n[43].value})}),(0,e.jsx)("p",{children:n[44].value}),(0,e.jsxs)("p",{children:[n[45].value,(0,e.jsx)("strong",{children:n[46].value})]}),(0,e.jsxs)("h2",{id:"\u4E8C\u8BA4\u8BC6\u6811\u7ED3\u6784",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E8C\u8BA4\u8BC6\u6811\u7ED3\u6784",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E8C\u3001\u8BA4\u8BC6\u6811\u7ED3\u6784"]}),(0,e.jsx)("blockquote",{children:(0,e.jsxs)("p",{children:[(0,e.jsx)("strong",{children:n[47].value}),n[48].value,(0,e.jsx)("strong",{children:n[49].value}),n[50].value,(0,e.jsx)("strong",{children:n[51].value}),n[52].value]})}),(0,e.jsx)("p",{children:n[53].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[n[54].value,(0,e.jsx)("strong",{children:n[55].value}),n[56].value,(0,e.jsx)("strong",{children:n[57].value}),n[58].value]}),(0,e.jsxs)("li",{children:[n[59].value,(0,e.jsx)("strong",{children:n[60].value}),n[61].value]})]}),(0,e.jsxs)("h3",{id:"21-\u6811\u7684\u5E38\u7528\u672F\u8BED",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#21-\u6811\u7684\u5E38\u7528\u672F\u8BED",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.1 \u6811\u7684\u5E38\u7528\u672F\u8BED\uFF1A"]}),(0,e.jsxs)("div",{align:"center",children:[n[62].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201121419732.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:n[63].value}),n[64].value,(0,e.jsx)("strong",{children:n[65].value}),n[66].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:n[67].value}),n[68].value,(0,e.jsx)("strong",{children:n[69].value}),n[70].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:n[71].value}),n[72].value,(0,e.jsx)("strong",{children:n[73].value}),n[74].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:n[75].value}),n[76].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:n[77].value}),n[78].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:n[79].value}),n[80].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:n[81].value}),n[82].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:n[83].value}),n[84].value,(0,e.jsx)("strong",{children:n[85].value}),n[86].value,(0,e.jsx)("strong",{children:n[87].value}),n[88].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:n[89].value}),n[90].value,(0,e.jsx)("strong",{children:n[91].value}),n[92].value]})]}),(0,e.jsxs)("h3",{id:"22-\u6570\u7ED3\u6784\u7684\u8868\u793A\u65B9\u5F0F",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#22-\u6570\u7ED3\u6784\u7684\u8868\u793A\u65B9\u5F0F",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.2 \u6570\u7ED3\u6784\u7684\u8868\u793A\u65B9\u5F0F"]}),(0,e.jsxs)("h4",{id:"221-\u5E38\u89C1\u7684\u8868\u793A\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#221-\u5E38\u89C1\u7684\u8868\u793A\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.2.1 \u5E38\u89C1\u7684\u8868\u793A\u65B9\u6CD5"]}),(0,e.jsxs)("div",{align:"center",children:[n[93].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201121421789.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("p",{children:[n[94].value,(0,e.jsx)("strong",{children:n[95].value}),n[96].value]}),(0,e.jsx)("p",{children:n[97].value}),(0,e.jsx)("p",{children:n[98].value}),(0,e.jsxs)("p",{children:[n[99].value,(0,e.jsx)("strong",{children:n[100].value}),n[101].value,(0,e.jsx)("strong",{children:n[102].value})]}),(0,e.jsxs)("h4",{id:"222-\u513F\u5B50-\u5144\u5F1F\u8868\u793A\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#222-\u513F\u5B50-\u5144\u5F1F\u8868\u793A\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.2.2 ",(0,e.jsx)("strong",{children:n[103].value})]}),(0,e.jsxs)("div",{align:"center",children:[n[104].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201121424041.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:n[105].value}),(0,e.jsx)(g.Z,{lang:"js",children:n[106].value}),(0,e.jsx)("p",{children:n[107].value}),(0,e.jsxs)("h4",{id:"223-\u5C06\u513F\u5B50-\u5144\u5F1F\u8868\u793A\u6CD5-\u9009\u62E9",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#223-\u5C06\u513F\u5B50-\u5144\u5F1F\u8868\u793A\u6CD5-\u9009\u62E9",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.2.3 \u5C06\u513F\u5B50-\u5144\u5F1F\u8868\u793A\u6CD5 \u9009\u62E9"]}),(0,e.jsxs)("p",{children:[n[108].value,(0,e.jsx)("strong",{children:n[109].value}),n[110].value]}),(0,e.jsxs)("div",{align:"center",children:[n[111].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201121425221.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:n[112].value}),(0,e.jsx)("p",{children:(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201121428140.png",alt:"image-20200229235549522"})}),(0,e.jsxs)("p",{children:[n[113].value,(0,e.jsx)("strong",{children:n[114].value}),n[115].value,(0,e.jsx)("strong",{children:n[116].value}),n[117].value]}),(0,e.jsx)("p",{children:n[118].value}),(0,e.jsx)("p",{children:n[119].value}),(0,e.jsxs)("h2",{id:"\u4E09\u4E8C\u53C9\u6811\u7684\u4ECB\u7ECD",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E09\u4E8C\u53C9\u6811\u7684\u4ECB\u7ECD",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E09\u3001\u4E8C\u53C9\u6811\u7684\u4ECB\u7ECD"]}),(0,e.jsxs)("h4",{id:"31-\u4EC0\u4E48\u662F\u4E8C\u53C9\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#31-\u4EC0\u4E48\u662F\u4E8C\u53C9\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.1 \u4EC0\u4E48\u662F\u4E8C\u53C9\u6811\uFF1F"]}),(0,e.jsxs)("div",{align:"center",children:[n[120].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201121444180.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("p",{children:[n[121].value,(0,e.jsx)("strong",{children:n[122].value}),n[123].value,(0,e.jsx)("strong",{children:n[124].value})]}),(0,e.jsxs)("p",{children:[n[125].value,(0,e.jsx)("strong",{children:n[126].value}),n[127].value]}),(0,e.jsxs)("h4",{id:"32-\u4E8C\u53C9\u6811\u7684\u7EC4\u6210",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#32-\u4E8C\u53C9\u6811\u7684\u7EC4\u6210",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.2 \u4E8C\u53C9\u6811\u7684\u7EC4\u6210\uFF1A"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:n[128].value}),(0,e.jsxs)("li",{children:[n[129].value,(0,e.jsx)("strong",{children:n[130].value}),n[131].value,(0,e.jsx)("strong",{children:n[132].value}),n[133].value]})]}),(0,e.jsxs)("h4",{id:"33-\u4E8C\u53C9\u6811\u7684\u4E94\u79CD\u5F62\u6001",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#33-\u4E8C\u53C9\u6811\u7684\u4E94\u79CD\u5F62\u6001",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.3 \u4E8C\u53C9\u6811\u7684\u4E94\u79CD\u5F62\u6001"]}),(0,e.jsxs)("div",{align:"center",children:[n[134].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201121433729.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("p",{children:[n[135].value,(0,e.jsx)("strong",{children:n[136].value}),n[137].value,(0,e.jsx)("strong",{children:n[138].value}),n[139].value,(0,e.jsx)("strong",{children:n[140].value}),n[141].value,(0,e.jsx)("strong",{children:n[142].value}),n[143].value,(0,e.jsx)("strong",{children:n[144].value})]}),(0,e.jsxs)("h4",{id:"34-\u4E8C\u53C9\u6811\u7684\u7279\u6027",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#34-\u4E8C\u53C9\u6811\u7684\u7279\u6027",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.4 \u4E8C\u53C9\u6811\u7684\u7279\u6027"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[n[145].value,(0,e.jsx)("strong",{children:n[146].value})]}),(0,e.jsxs)("li",{children:[n[147].value,(0,e.jsx)("strong",{children:n[148].value})]}),(0,e.jsxs)("li",{children:[n[149].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:n[150].value}),(0,e.jsx)("li",{children:n[151].value}),(0,e.jsx)("li",{children:n[152].value})]})]})]}),(0,e.jsxs)("div",{align:"center",children:[n[153].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201121443735.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h4",{id:"35-\u7279\u6B8A\u7684\u4E8C\u53C9\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#35-\u7279\u6B8A\u7684\u4E8C\u53C9\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.5 \u7279\u6B8A\u7684\u4E8C\u53C9\u6811"]}),(0,e.jsxs)("h5",{id:"351-\u5B8C\u7F8E\u4E8C\u53C9\u6811-\u6EE1\u4E8C\u53C9\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#351-\u5B8C\u7F8E\u4E8C\u53C9\u6811-\u6EE1\u4E8C\u53C9\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.5.1 \u5B8C\u7F8E\u4E8C\u53C9\u6811 \uFF5C\u6EE1\u4E8C\u53C9\u6811"]}),(0,e.jsx)("p",{children:n[154].value}),(0,e.jsxs)("div",{align:"center",children:[n[155].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201121447071.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h5",{id:"352-\u5B8C\u5168\u4E8C\u53C9\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#352-\u5B8C\u5168\u4E8C\u53C9\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.5.2 \u5B8C\u5168\u4E8C\u53C9\u6811"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[n[156].value,(0,e.jsx)("strong",{children:n[157].value}),n[158].value,(0,e.jsx)("strong",{children:n[159].value})]}),(0,e.jsxs)("li",{children:[n[160].value,(0,e.jsx)("strong",{children:n[161].value}),n[162].value,(0,e.jsx)("strong",{children:n[163].value})]}),(0,e.jsx)("li",{children:(0,e.jsx)("strong",{children:n[164].value})})]}),(0,e.jsxs)("div",{align:"center",children:[n[165].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201121448180.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("p",{children:[n[166].value,(0,e.jsx)("strong",{children:n[167].value}),n[168].value,(0,e.jsx)("strong",{children:n[169].value}),n[170].value]}),(0,e.jsxs)("h4",{id:"36-\u4E8C\u53C9\u6811\u7684\u6570\u636E\u5B58\u50A8",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#36-\u4E8C\u53C9\u6811\u7684\u6570\u636E\u5B58\u50A8",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.6 \u4E8C\u53C9\u6811\u7684\u6570\u636E\u5B58\u50A8"]}),(0,e.jsxs)("p",{children:[n[171].value,(0,e.jsx)("strong",{children:n[172].value}),n[173].value]}),(0,e.jsxs)("h5",{id:"361-\u4F7F\u7528\u6570\u7EC4\u5B58\u50A8\u6570\u636E",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#361-\u4F7F\u7528\u6570\u7EC4\u5B58\u50A8\u6570\u636E",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.6.1 \u4F7F\u7528\u6570\u7EC4\u5B58\u50A8\u6570\u636E"]}),(0,e.jsxs)("p",{children:[(0,e.jsx)("strong",{children:n[174].value}),n[175].value]}),(0,e.jsxs)("div",{align:"center",children:[n[176].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201121451383.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)(c.Z,{children:[(0,e.jsx)("thead",{children:(0,e.jsxs)("tr",{children:[(0,e.jsx)("th",{align:"center",children:n[177].value}),(0,e.jsx)("th",{align:"center",children:n[178].value}),(0,e.jsx)("th",{align:"center",children:n[179].value}),(0,e.jsx)("th",{align:"center",children:n[180].value}),(0,e.jsx)("th",{align:"center",children:n[181].value}),(0,e.jsx)("th",{align:"center",children:n[182].value}),(0,e.jsx)("th",{align:"center",children:n[183].value}),(0,e.jsx)("th",{align:"center",children:n[184].value}),(0,e.jsx)("th",{align:"center",children:n[185].value})]})}),(0,e.jsx)("tbody",{children:(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{align:"center",children:(0,e.jsx)("strong",{children:n[186].value})}),(0,e.jsx)("td",{align:"center",children:(0,e.jsx)("strong",{children:n[187].value})}),(0,e.jsx)("td",{align:"center",children:(0,e.jsx)("strong",{children:n[188].value})}),(0,e.jsx)("td",{align:"center",children:(0,e.jsx)("strong",{children:n[189].value})}),(0,e.jsx)("td",{align:"center",children:(0,e.jsx)("strong",{children:n[190].value})}),(0,e.jsx)("td",{align:"center",children:(0,e.jsx)("strong",{children:n[191].value})}),(0,e.jsx)("td",{align:"center",children:(0,e.jsx)("strong",{children:n[192].value})}),(0,e.jsx)("td",{align:"center",children:(0,e.jsx)("strong",{children:n[193].value})}),(0,e.jsx)("td",{align:"center",children:(0,e.jsx)("strong",{children:n[194].value})})]})})]}),(0,e.jsx)("p",{children:n[195].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:(0,e.jsxs)("p",{children:[(0,e.jsx)("strong",{children:n[196].value}),n[197].value,(0,e.jsx)("strong",{children:n[198].value})]})}),(0,e.jsx)("li",{children:(0,e.jsxs)("p",{children:[n[199].value,(0,e.jsx)("em",{children:n[200].value}),n[201].value]})})]}),(0,e.jsxs)("p",{children:[(0,e.jsx)("strong",{children:n[202].value}),n[203].value,(0,e.jsx)("strong",{children:n[204].value}),n[205].value,(0,e.jsx)("strong",{children:n[206].value})]}),(0,e.jsxs)("div",{align:"center",children:[n[207].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201121456912.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)(c.Z,{children:[(0,e.jsx)("thead",{children:(0,e.jsxs)("tr",{children:[(0,e.jsx)("th",{align:"center",children:n[208].value}),(0,e.jsx)("th",{align:"center",children:n[209].value}),(0,e.jsx)("th",{align:"center",children:n[210].value}),(0,e.jsx)("th",{align:"center",children:n[211].value}),(0,e.jsx)("th",{align:"center",children:n[212].value}),(0,e.jsx)("th",{align:"center",children:n[213].value}),(0,e.jsx)("th",{align:"center",children:n[214].value}),(0,e.jsx)("th",{align:"center",children:n[215].value}),(0,e.jsx)("th",{align:"center",children:n[216].value}),(0,e.jsx)("th",{align:"center",children:n[217].value}),(0,e.jsx)("th",{align:"center",children:n[218].value}),(0,e.jsx)("th",{align:"center",children:n[219].value}),(0,e.jsx)("th",{align:"center",children:n[220].value}),(0,e.jsx)("th",{align:"center",children:n[221].value})]})}),(0,e.jsx)("tbody",{children:(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{align:"center",children:(0,e.jsx)("strong",{children:n[222].value})}),(0,e.jsx)("td",{align:"center",children:(0,e.jsx)("strong",{children:n[223].value})}),(0,e.jsx)("td",{align:"center",children:(0,e.jsx)("strong",{children:n[224].value})}),(0,e.jsx)("td",{align:"center",children:(0,e.jsx)("strong",{children:n[225].value})}),(0,e.jsx)("td",{align:"center",children:(0,e.jsx)("strong",{children:n[226].value})}),(0,e.jsx)("td",{align:"center",children:(0,e.jsx)("strong",{children:n[227].value})}),(0,e.jsx)("td",{align:"center",children:(0,e.jsx)("strong",{children:n[228].value})}),(0,e.jsx)("td",{align:"center",children:(0,e.jsx)("strong",{children:n[229].value})}),(0,e.jsx)("td",{align:"center",children:(0,e.jsx)("strong",{children:n[230].value})}),(0,e.jsx)("td",{align:"center",children:(0,e.jsx)("strong",{children:n[231].value})}),(0,e.jsx)("td",{align:"center",children:(0,e.jsx)("strong",{children:n[232].value})}),(0,e.jsx)("td",{align:"center",children:(0,e.jsx)("strong",{children:n[233].value})}),(0,e.jsx)("td",{align:"center",children:(0,e.jsx)("strong",{children:n[234].value})}),(0,e.jsx)("td",{align:"center",children:(0,e.jsx)("strong",{children:n[235].value})})]})})]}),(0,e.jsxs)("p",{children:[n[236].value,(0,e.jsx)("strong",{children:n[237].value}),n[238].value]}),(0,e.jsxs)("h5",{id:"362-\u4F7F\u7528\u94FE\u8868\u5B58\u50A8\u6570\u636E",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#362-\u4F7F\u7528\u94FE\u8868\u5B58\u50A8\u6570\u636E",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.6.2 \u4F7F\u7528\u94FE\u8868\u5B58\u50A8\u6570\u636E"]}),(0,e.jsx)("p",{children:n[239].value}),(0,e.jsxs)("div",{align:"center",children:[n[240].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201121458243.png",style:{maxWidth:"100%"}})]})]})})})}i.default=x},48739:function(m,i,l){var r=l(93236),d=function(s){return(0,r.createElement)(s.children)};i.Z=d},38039:function(m,i,l){l.d(i,{Z:function(){return c}});var r=l(54306),d=l.n(r),v=l(93236),s=l(62086),g=function(h){var u,t,e,x=(h==null||(u=h.children)===null||u===void 0?void 0:u.filter(function(a){return a!=`
+ `}))||[],o=(0,v.useState)(0),n=d()(o,2),_=n[0],C=n[1],p=function(j){C(j)};return(0,s.jsxs)("div",{className:"tab-container",children:[(0,s.jsx)("ul",{className:"tab-list",children:x.map(function(a,j){return(0,s.jsx)("li",{className:_===j?"tab-item active":"tab-item",onClick:function(){return p(j)},children:a.props.label},a.props.label)})}),(0,s.jsx)("div",{className:"tab-content",children:(t=x[_])===null||t===void 0||(e=t.props)===null||e===void 0?void 0:e.children})]})},c=g}}]);
diff --git a/docs__data-structure__09_binary_search_tree.md.07a441c4.chunk.css b/docs__data-structure__09_binary_search_tree.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__data-structure__09_binary_search_tree.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__data-structure__09_binary_search_tree.md.e768f1eb.async.js b/docs__data-structure__09_binary_search_tree.md.e768f1eb.async.js
new file mode 100644
index 0000000..e3c2049
--- /dev/null
+++ b/docs__data-structure__09_binary_search_tree.md.e768f1eb.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[28],{15943:function(g,n,u){u.r(n);var r=u(16878),c=u(84475),t=u(646),i=u(25778),s=u(1778),E=u(6749),p=u(48739),h=u(38039),a=u(5899),x=u(93236),e=u(62086);function j(){var o=(0,a.eL)(),l=o.texts;return(0,e.jsx)(a.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u4E8C\u53C9\u641C\u7D22\u6811binarysearchtree",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E8C\u53C9\u641C\u7D22\u6811binarysearchtree",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E8C\u53C9\u641C\u7D22\u6811(BinarySearchTree)"]}),(0,e.jsxs)("h2",{id:"\u4E00\u5BF9\u4E8C\u53C9\u641C\u7D22\u6811\u7684\u4ECB\u7ECD",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E00\u5BF9\u4E8C\u53C9\u641C\u7D22\u6811\u7684\u4ECB\u7ECD",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E00\u3001\u5BF9\u4E8C\u53C9\u641C\u7D22\u6811\u7684\u4ECB\u7ECD"]}),(0,e.jsx)("blockquote",{children:(0,e.jsx)("p",{children:l[0].value})}),(0,e.jsxs)("h3",{id:"1-\u4E8C\u53C9\u641C\u7D22\u6811\u7684\u7279\u6027",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1-\u4E8C\u53C9\u641C\u7D22\u6811\u7684\u7279\u6027",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1. \u4E8C\u53C9\u641C\u7D22\u6811\u7684\u7279\u6027"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[1].value}),(0,e.jsx)("li",{children:l[2].value}),(0,e.jsx)("li",{children:l[3].value})]}),(0,e.jsxs)("div",{align:"center",children:[l[4].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201131503306.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:l[5].value}),(0,e.jsx)("p",{children:l[6].value}),(0,e.jsxs)("p",{children:[(0,e.jsx)("strong",{children:l[7].value}),l[8].value,(0,e.jsx)("strong",{children:l[9].value}),l[10].value,(0,e.jsx)("strong",{children:l[11].value}),l[12].value,(0,e.jsx)("strong",{children:l[13].value}),l[14].value]}),(0,e.jsxs)("h3",{id:"2-\u4E8C\u53C9\u641C\u7D22\u6811\u5E94\u7528\u4E3E\u4F8B",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2-\u4E8C\u53C9\u641C\u7D22\u6811\u5E94\u7528\u4E3E\u4F8B",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2. \u4E8C\u53C9\u641C\u7D22\u6811\u5E94\u7528\u4E3E\u4F8B"]}),(0,e.jsxs)("div",{align:"center",children:[l[15].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201131507591.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:l[16].value}),(0,e.jsx)("p",{children:l[17].value}),(0,e.jsxs)("div",{align:"center",children:[l[18].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201131508329.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[19].value}),(0,e.jsx)("li",{children:l[20].value}),(0,e.jsx)("li",{children:l[21].value}),(0,e.jsx)("li",{children:l[22].value}),(0,e.jsxs)("li",{children:[l[23].value,(0,e.jsx)("strong",{children:l[24].value})]})]}),(0,e.jsx)("p",{children:l[25].value}),(0,e.jsxs)("div",{align:"center",children:[l[26].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201131510135.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:l[27].value}),(0,e.jsxs)("p",{children:[l[28].value,(0,e.jsx)("strong",{children:l[29].value}),l[30].value]}),(0,e.jsxs)("h3",{id:"3-\u4E8C\u53C9\u641C\u7D22\u6811\u7684\u57FA\u672C\u5C5E\u6027",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#3-\u4E8C\u53C9\u641C\u7D22\u6811\u7684\u57FA\u672C\u5C5E\u6027",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3. \u4E8C\u53C9\u641C\u7D22\u6811\u7684\u57FA\u672C\u5C5E\u6027"]}),(0,e.jsxs)("div",{align:"center",children:[l[31].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201131512016.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("p",{children:[l[32].value,(0,e.jsx)("strong",{children:l[33].value}),l[34].value,(0,e.jsx)("strong",{children:l[35].value}),l[36].value,(0,e.jsx)("strong",{children:l[37].value}),l[38].value,(0,e.jsx)("strong",{children:l[39].value}),l[40].value]}),(0,e.jsx)("p",{children:l[41].value}),(0,e.jsx)(s.Z,{lang:"js",children:l[42].value}),(0,e.jsxs)("h2",{id:"\u4E8C\u5BF9\u4E8C\u53C9\u641C\u7D22\u6811\u7684\u5C01\u88C5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E8C\u5BF9\u4E8C\u53C9\u641C\u7D22\u6811\u7684\u5C01\u88C5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E8C\u3001\u5BF9\u4E8C\u53C9\u641C\u7D22\u6811\u7684\u5C01\u88C5"]}),(0,e.jsxs)("h3",{id:"\u4E8C\u53C9\u641C\u7D22\u6811\u7684\u5E38\u89C1\u64CD\u4F5C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E8C\u53C9\u641C\u7D22\u6811\u7684\u5E38\u89C1\u64CD\u4F5C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E8C\u53C9\u641C\u7D22\u6811\u7684\u5E38\u89C1\u64CD\u4F5C\uFF1A"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[43].value}),l[44].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[45].value}),l[46].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[47].value}),l[48].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[49].value}),l[50].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[51].value}),l[52].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[53].value}),l[54].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[55].value}),l[56].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[57].value}),l[58].value]})]}),(0,e.jsxs)("h3",{id:"1-\u5B9E\u73B0-insert\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1-\u5B9E\u73B0-insert\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1. \u5B9E\u73B0 insert()\u65B9\u6CD5"]}),(0,e.jsx)(s.Z,{lang:"js",children:l[59].value}),(0,e.jsxs)("h4",{id:"11-_insertnode-\u65B9\u6CD5\u7684\u5B9E\u73B0",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#11-_insertnode-\u65B9\u6CD5\u7684\u5B9E\u73B0",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.1 _insertNode \u65B9\u6CD5\u7684\u5B9E\u73B0"]}),(0,e.jsx)("p",{children:l[60].value}),(0,e.jsxs)("p",{children:[l[61].value,(0,e.jsx)("strong",{children:l[62].value}),l[63].value]}),(0,e.jsx)(s.Z,{lang:"js",children:l[64].value}),(0,e.jsx)("p",{children:l[65].value}),(0,e.jsxs)("h5",{id:"111-newnodekey--nodekey-\u65F6",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#111-newnodekey--nodekey-\u65F6",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.1.1 newNode.key < node.key \u65F6"]}),(0,e.jsx)("p",{children:l[66].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[67].value}),(0,e.jsxs)("li",{children:[l[68].value,(0,e.jsx)("strong",{children:l[69].value}),l[70].value]})]}),(0,e.jsxs)("div",{align:"center",children:[l[71].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201131535930.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h5",{id:"112-newnodekey--nodekey-\u65F6",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#112-newnodekey--nodekey-\u65F6",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1.1.2 newNode.key > node.key \u65F6"]}),(0,e.jsx)("p",{children:l[72].value}),(0,e.jsxs)("div",{align:"center",children:[l[73].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201131537859.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h4",{id:"\u6D4B\u8BD5\u4EE3\u7801",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6D4B\u8BD5\u4EE3\u7801",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(s.Z,{lang:"js",children:l[74].value}),(0,e.jsx)("p",{children:l[75].value}),(0,e.jsxs)("div",{align:"center",children:[l[76].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201131544171.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h3",{id:"2-\u5BF9\u4E8C\u53C9\u641C\u7D22\u6811\u7684\u904D\u5386",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2-\u5BF9\u4E8C\u53C9\u641C\u7D22\u6811\u7684\u904D\u5386",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2. \u5BF9\u4E8C\u53C9\u641C\u7D22\u6811\u7684\u904D\u5386"]}),(0,e.jsxs)("p",{children:[l[77].value,(0,e.jsx)("strong",{children:l[78].value}),l[79].value,(0,e.jsx)("strong",{children:l[80].value}),l[81].value]}),(0,e.jsx)("p",{children:l[82].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[83].value}),(0,e.jsx)("li",{children:l[84].value}),(0,e.jsx)("li",{children:l[85].value})]}),(0,e.jsx)("p",{children:l[86].value}),(0,e.jsxs)("div",{align:"center",children:[l[87].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201131753364.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h4",{id:"21-\u5148\u5E8F\u904D\u5386",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#21-\u5148\u5E8F\u904D\u5386",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.1 \u5148\u5E8F\u904D\u5386"]}),(0,e.jsx)("p",{children:l[88].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[89].value}),(0,e.jsx)("li",{children:l[90].value}),(0,e.jsx)("li",{children:l[91].value})]}),(0,e.jsx)("p",{children:l[92].value}),(0,e.jsxs)("div",{align:"center",children:[l[93].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201131549026.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:l[94].value}),(0,e.jsxs)("h5",{id:"211-\u4EE3\u7801\u5B9E\u73B0",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#211-\u4EE3\u7801\u5B9E\u73B0",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.1.1 \u4EE3\u7801\u5B9E\u73B0"]}),(0,e.jsx)(s.Z,{lang:"js",children:l[95].value}),(0,e.jsxs)("h5",{id:"212-\u8FC7\u7A0B\u8BE6\u89E3",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#212-\u8FC7\u7A0B\u8BE6\u89E3",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.1.2 \u8FC7\u7A0B\u8BE6\u89E3"]}),(0,e.jsx)("p",{children:l[96].value}),(0,e.jsxs)("div",{align:"center",children:[l[97].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201131557898.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:l[98].value}),(0,e.jsx)("blockquote",{children:(0,e.jsx)("p",{children:l[99].value})}),(0,e.jsxs)("div",{align:"center",children:[l[100].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201131558339.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:l[101].value}),(0,e.jsx)("p",{children:l[102].value}),(0,e.jsx)("p",{children:l[103].value}),(0,e.jsx)("p",{children:l[104].value}),(0,e.jsx)("p",{children:l[105].value}),(0,e.jsx)("p",{children:l[106].value}),(0,e.jsxs)("div",{align:"center",children:[l[107].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201131600207.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h5",{id:"213-\u6D4B\u8BD5\u4EE3\u7801",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#213-\u6D4B\u8BD5\u4EE3\u7801",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.1.3 \u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(s.Z,{lang:"js",children:l[108].value}),(0,e.jsxs)("h4",{id:"22-\u4E2D\u5E8F\u904D\u5386",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#22-\u4E2D\u5E8F\u904D\u5386",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.2 \u4E2D\u5E8F\u904D\u5386"]}),(0,e.jsx)("p",{children:l[109].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[110].value}),(0,e.jsx)("li",{children:l[111].value}),(0,e.jsx)("li",{children:l[112].value})]}),(0,e.jsxs)("h5",{id:"221-\u4EE3\u7801\u5B9E\u73B0",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#221-\u4EE3\u7801\u5B9E\u73B0",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.2.1 \u4EE3\u7801\u5B9E\u73B0"]}),(0,e.jsx)(s.Z,{lang:"js",children:l[113].value}),(0,e.jsxs)("h5",{id:"222-\u8FC7\u7A0B\u8BE6\u89E3",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#222-\u8FC7\u7A0B\u8BE6\u89E3",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.2.2 \u8FC7\u7A0B\u8BE6\u89E3"]}),(0,e.jsx)("p",{children:l[114].value}),(0,e.jsxs)("div",{align:"center",children:[l[115].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201131605249.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:l[116].value}),(0,e.jsx)("p",{children:l[117].value}),(0,e.jsxs)("h5",{id:"223-\u6D4B\u8BD5\u4EE3\u7801",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#223-\u6D4B\u8BD5\u4EE3\u7801",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.2.3 \u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(s.Z,{lang:"js",children:l[118].value}),(0,e.jsxs)("h4",{id:"23-\u540E\u5E8F\u904D\u5386",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#23-\u540E\u5E8F\u904D\u5386",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.3 \u540E\u5E8F\u904D\u5386"]}),(0,e.jsx)("p",{children:l[119].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[120].value}),(0,e.jsx)("li",{children:l[121].value}),(0,e.jsx)("li",{children:l[122].value})]}),(0,e.jsxs)("h5",{id:"231-\u4EE3\u7801\u5B9E\u73B0",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#231-\u4EE3\u7801\u5B9E\u73B0",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.3.1 \u4EE3\u7801\u5B9E\u73B0"]}),(0,e.jsx)(s.Z,{lang:"js",children:l[123].value}),(0,e.jsxs)("h5",{id:"232-\u8FC7\u7A0B\u8BE6\u89E3",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#232-\u8FC7\u7A0B\u8BE6\u89E3",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.3.2 \u8FC7\u7A0B\u8BE6\u89E3"]}),(0,e.jsx)("p",{children:l[124].value}),(0,e.jsxs)("div",{align:"center",children:[l[125].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201131609129.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:l[126].value}),(0,e.jsx)("p",{children:l[127].value}),(0,e.jsxs)("h5",{id:"233-\u6D4B\u8BD5\u4EE3\u7801",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#233-\u6D4B\u8BD5\u4EE3\u7801",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.3.3 \u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(s.Z,{lang:"js",children:l[128].value}),(0,e.jsxs)("h3",{id:"3-\u5BF9\u4E8C\u53C9\u641C\u7D22\u6811\u7684\u641C\u7D22",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#3-\u5BF9\u4E8C\u53C9\u641C\u7D22\u6811\u7684\u641C\u7D22",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3. \u5BF9\u4E8C\u53C9\u641C\u7D22\u6811\u7684\u641C\u7D22"]}),(0,e.jsxs)("h4",{id:"31-\u641C\u7D22\u6700\u5927\u503C\u6700\u5C0F\u503C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#31-\u641C\u7D22\u6700\u5927\u503C\u6700\u5C0F\u503C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.1 \u641C\u7D22\u6700\u5927\u503C&\u6700\u5C0F\u503C"]}),(0,e.jsx)("p",{children:l[129].value}),(0,e.jsxs)("div",{align:"center",children:[l[130].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201131612601.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h5",{id:"\u4EE3\u7801\u5B9E\u73B0",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4EE3\u7801\u5B9E\u73B0",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4EE3\u7801\u5B9E\u73B0"]}),(0,e.jsx)(s.Z,{lang:"js",children:l[131].value}),(0,e.jsxs)("h4",{id:"32-\u5B9E\u73B0-search",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#32-\u5B9E\u73B0-search",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.2 \u5B9E\u73B0 search()"]}),(0,e.jsx)("p",{children:l[132].value}),(0,e.jsxs)("p",{children:[l[133].value,(0,e.jsx)("strong",{children:l[134].value}),l[135].value,(0,e.jsx)("strong",{children:l[136].value}),l[137].value]}),(0,e.jsxs)("h5",{id:"321-\u4EE3\u7801\u5B9E\u73B0",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#321-\u4EE3\u7801\u5B9E\u73B0",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.2.1 \u4EE3\u7801\u5B9E\u73B0"]}),(0,e.jsx)(s.Z,{lang:"js",children:l[138].value}),(0,e.jsxs)("h5",{id:"322-\u6D4B\u8BD5\u4EE3\u7801",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#322-\u6D4B\u8BD5\u4EE3\u7801",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.2.2 \u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(s.Z,{lang:"js",children:l[139].value}),(0,e.jsxs)("h3",{id:"4-\u5B9E\u73B0-remove\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#4-\u5B9E\u73B0-remove\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"4. \u5B9E\u73B0 remove()\u65B9\u6CD5"]}),(0,e.jsx)("blockquote",{children:(0,e.jsx)("p",{children:l[140].value})}),(0,e.jsx)("p",{children:l[141].value}),(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[l[142].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[143].value}),(0,e.jsxs)("li",{children:[l[144].value,(0,e.jsx)("strong",{children:l[145].value}),l[146].value,(0,e.jsx)("strong",{children:l[147].value}),l[148].value,(0,e.jsx)("strong",{children:l[149].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[150].value}),(0,e.jsxs)("li",{children:[l[151].value,(0,e.jsx)("strong",{children:l[152].value}),l[153].value]}),(0,e.jsxs)("li",{children:[l[154].value,(0,e.jsx)("strong",{children:l[155].value})]}),(0,e.jsxs)("li",{children:[l[156].value,(0,e.jsx)("strong",{children:l[157].value})]})]})]})]})]})}),(0,e.jsxs)("h4",{id:"41-\u5BFB\u627E\u8981\u5220\u9664\u7684\u8282\u70B9",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#41-\u5BFB\u627E\u8981\u5220\u9664\u7684\u8282\u70B9",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"4.1 \u5BFB\u627E\u8981\u5220\u9664\u7684\u8282\u70B9"]}),(0,e.jsx)(s.Z,{lang:"js",children:l[158].value}),(0,e.jsxs)("h4",{id:"42-\u627E\u5230\u4E86\u8981\u5220\u9664\u7684\u8282\u70B9",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#42-\u627E\u5230\u4E86\u8981\u5220\u9664\u7684\u8282\u70B9",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"4.2 \u627E\u5230\u4E86\u8981\u5220\u9664\u7684\u8282\u70B9"]}),(0,e.jsx)("p",{children:l[159].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[160].value,(0,e.jsx)("strong",{children:l[161].value}),l[162].value]}),(0,e.jsxs)("li",{children:[l[163].value,(0,e.jsx)("strong",{children:l[164].value})]}),(0,e.jsxs)("li",{children:[l[165].value,(0,e.jsx)("strong",{children:l[166].value})]})]}),(0,e.jsxs)("h5",{id:"421-\u8981\u5220\u9664\u7684\u662F\u53F6\u5B50\u8282\u70B9",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#421-\u8981\u5220\u9664\u7684\u662F\u53F6\u5B50\u8282\u70B9",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"4.2.1 \u8981\u5220\u9664\u7684\u662F\u53F6\u5B50\u8282\u70B9"]}),(0,e.jsx)(s.Z,{lang:"js",children:l[167].value}),(0,e.jsxs)("h6",{id:"\u60C5\u51B5\u5206\u6790",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u60C5\u51B5\u5206\u6790",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u60C5\u51B5\u5206\u6790\uFF1A"]}),(0,e.jsxs)("p",{children:[l[168].value,(0,e.jsx)("strong",{children:l[169].value}),l[170].value,(0,e.jsx)("strong",{children:l[171].value}),l[172].value]}),(0,e.jsxs)("div",{align:"center",children:[l[173].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201131647042.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:l[174].value}),(0,e.jsxs)("div",{align:"center",children:[l[175].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201131647427.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("p",{children:[l[176].value,(0,e.jsx)("code",{children:l[177].value}),l[178].value]}),(0,e.jsxs)("p",{children:[l[179].value,(0,e.jsx)("code",{children:l[180].value}),l[181].value]}),(0,e.jsxs)("h5",{id:"422-\u8981\u5220\u9664\u7684\u8282\u70B9\u53EA\u6709\u4E00\u4E2A\u5B50\u8282\u70B9",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#422-\u8981\u5220\u9664\u7684\u8282\u70B9\u53EA\u6709\u4E00\u4E2A\u5B50\u8282\u70B9",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"4.2.2 \u8981\u5220\u9664\u7684\u8282\u70B9\u53EA\u6709\u4E00\u4E2A\u5B50\u8282\u70B9"]}),(0,e.jsx)(s.Z,{lang:"js",children:l[182].value}),(0,e.jsxs)("h6",{id:"\u60C5\u51B5\u5206\u6790-1",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u60C5\u51B5\u5206\u6790-1",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u60C5\u51B5\u5206\u6790\uFF1A"]}),(0,e.jsxs)("p",{children:[l[183].value,(0,e.jsx)("code",{children:l[184].value}),l[185].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[186].value,(0,e.jsx)("code",{children:l[187].value}),l[188].value,(0,e.jsx)("code",{children:l[189].value}),l[190].value]}),(0,e.jsxs)("li",{children:[l[191].value,(0,e.jsx)("code",{children:l[192].value}),l[193].value,(0,e.jsx)("code",{children:l[194].value}),l[195].value]}),(0,e.jsxs)("li",{children:[l[196].value,(0,e.jsx)("code",{children:l[197].value}),l[198].value,(0,e.jsx)("code",{children:l[199].value}),l[200].value]})]}),(0,e.jsxs)("div",{align:"center",children:[l[201].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201131654976.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("p",{children:[l[202].value,(0,e.jsx)("code",{children:l[203].value}),l[204].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[205].value,(0,e.jsx)("code",{children:l[206].value}),l[207].value,(0,e.jsx)("code",{children:l[208].value}),l[209].value]}),(0,e.jsxs)("li",{children:[l[210].value,(0,e.jsx)("code",{children:l[211].value}),l[212].value,(0,e.jsx)("code",{children:l[213].value}),l[214].value]}),(0,e.jsxs)("li",{children:[l[215].value,(0,e.jsx)("code",{children:l[216].value}),l[217].value,(0,e.jsx)("code",{children:l[218].value}),l[219].value]})]}),(0,e.jsxs)("div",{align:"center",children:[l[220].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201131659344.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h5",{id:"423-\u8981\u5220\u9664\u7684\u8282\u70B9\u6709\u4E24\u4E2A\u5B50\u8282\u70B9",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#423-\u8981\u5220\u9664\u7684\u8282\u70B9\u6709\u4E24\u4E2A\u5B50\u8282\u70B9",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"4.2.3 \u8981\u5220\u9664\u7684\u8282\u70B9\uFF0C\u6709",(0,e.jsx)("strong",{children:l[221].value})]}),(0,e.jsx)("blockquote",{children:(0,e.jsxs)("p",{children:[l[222].value,(0,e.jsx)("strong",{children:l[223].value}),l[224].value]})}),(0,e.jsxs)("div",{align:"center",children:[l[225].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201131708222.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:(0,e.jsx)("strong",{children:l[226].value})}),(0,e.jsx)("p",{children:l[227].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[228].value}),(0,e.jsx)("li",{children:l[229].value})]}),(0,e.jsxs)("div",{align:"center",children:[l[230].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201131708640.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:(0,e.jsx)("strong",{children:l[231].value})}),(0,e.jsx)("p",{children:l[232].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[233].value}),(0,e.jsx)("li",{children:l[234].value})]}),(0,e.jsxs)("div",{align:"center",children:[l[235].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201131708537.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:(0,e.jsx)("strong",{children:l[236].value})}),(0,e.jsx)("p",{children:l[237].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[238].value}),(0,e.jsx)("li",{children:l[239].value})]}),(0,e.jsxs)("div",{align:"center",children:[l[240].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201131709293.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:l[241].value}),(0,e.jsxs)("p",{children:[(0,e.jsxs)("strong",{children:[l[242].value,(0,e.jsx)("strong",{children:l[243].value}),l[244].value]}),l[245].value]}),(0,e.jsx)("p",{children:l[246].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[247].value,(0,e.jsx)("strong",{children:l[248].value}),l[249].value,(0,e.jsx)("strong",{children:l[250].value}),l[251].value,(0,e.jsx)("strong",{children:l[252].value})]}),(0,e.jsxs)("li",{children:[l[253].value,(0,e.jsx)("strong",{children:l[254].value}),l[255].value,(0,e.jsx)("strong",{children:l[256].value}),l[257].value,(0,e.jsx)("strong",{children:l[258].value})]})]}),(0,e.jsx)("p",{children:(0,e.jsx)("strong",{children:l[259].value})}),(0,e.jsx)("p",{children:l[260].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[261].value,(0,e.jsx)("strong",{children:l[262].value}),l[263].value]}),(0,e.jsxs)("li",{children:[l[264].value,(0,e.jsx)("strong",{children:l[265].value}),l[266].value]})]}),(0,e.jsxs)("div",{align:"center",children:[l[267].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201131712004.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:(0,e.jsx)("strong",{children:l[268].value})}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[269].value,(0,e.jsx)("strong",{children:l[270].value}),l[271].value,(0,e.jsx)("strong",{children:l[272].value}),l[273].value,(0,e.jsx)("strong",{children:l[274].value}),l[275].value,(0,e.jsx)("strong",{children:l[276].value}),l[277].value]}),(0,e.jsxs)("li",{children:[l[278].value,(0,e.jsx)("strong",{children:l[279].value}),l[280].value,(0,e.jsx)("strong",{children:l[281].value}),l[282].value,(0,e.jsx)("strong",{children:l[283].value}),l[284].value,(0,e.jsx)("strong",{children:l[285].value}),l[286].value]})]}),(0,e.jsx)("p",{children:l[287].value}),(0,e.jsx)(s.Z,{lang:"js",children:l[288].value}),(0,e.jsxs)("h6",{id:"\u4EE3\u7801\u5B9E\u73B0-1",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4EE3\u7801\u5B9E\u73B0-1",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4EE3\u7801\u5B9E\u73B0"]}),(0,e.jsx)(s.Z,{lang:"js",children:l[289].value}),(0,e.jsxs)("h5",{id:"424-\u5B8C\u6574\u7684-remove-\u4EE3\u7801",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#424-\u5B8C\u6574\u7684-remove-\u4EE3\u7801",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"4.2.4 \u5B8C\u6574\u7684 remove \u4EE3\u7801"]}),(0,e.jsx)(s.Z,{lang:"js",children:l[290].value}),(0,e.jsxs)("h4",{id:"5-\u5B8C\u6574\u7684\u4E8C\u53C9\u641C\u7D22\u6811\u4EE3\u7801",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#5-\u5B8C\u6574\u7684\u4E8C\u53C9\u641C\u7D22\u6811\u4EE3\u7801",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"5. \u5B8C\u6574\u7684\u4E8C\u53C9\u641C\u7D22\u6811\u4EE3\u7801"]}),(0,e.jsx)(s.Z,{lang:"js",children:l[291].value}),(0,e.jsxs)("h2",{id:"\u4E09\u5E73\u8861\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E09\u5E73\u8861\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E09\u3001\u5E73\u8861\u6811"]}),(0,e.jsx)("p",{children:l[292].value}),(0,e.jsx)("p",{children:l[293].value}),(0,e.jsxs)("div",{align:"center",children:[l[294].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201131728245.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:l[295].value}),(0,e.jsxs)("div",{align:"center",children:[l[296].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201131728220.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h3",{id:"\u975E\u5E73\u8861\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u975E\u5E73\u8861\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("strong",{children:l[297].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[298].value,(0,e.jsx)("strong",{children:l[299].value}),l[300].value]}),(0,e.jsxs)("li",{children:[l[301].value,(0,e.jsx)("strong",{children:l[302].value}),l[303].value,(0,e.jsx)("strong",{children:l[304].value}),l[305].value,(0,e.jsx)("strong",{children:l[306].value})]}),(0,e.jsxs)("li",{children:[l[307].value,(0,e.jsx)("strong",{children:l[308].value}),l[309].value,(0,e.jsx)("strong",{children:l[310].value})]}),(0,e.jsxs)("li",{children:[l[311].value,(0,e.jsx)("strong",{children:l[312].value}),l[313].value,(0,e.jsx)("strong",{children:l[314].value})]})]}),(0,e.jsxs)("h3",{id:"\u6811\u7684\u5E73\u8861\u6027",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6811\u7684\u5E73\u8861\u6027",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("strong",{children:l[315].value})]}),(0,e.jsxs)("p",{children:[l[316].value,(0,e.jsxs)("strong",{children:[l[317].value,(0,e.jsx)("strong",{children:l[318].value}),l[319].value]}),l[320].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[321].value}),(0,e.jsxs)("li",{children:[l[322].value,(0,e.jsx)("strong",{children:l[323].value}),l[324].value,(0,e.jsx)("strong",{children:l[325].value}),l[326].value]})]}),(0,e.jsxs)("h3",{id:"\u5E38\u89C1\u7684\u5E73\u8861\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5E38\u89C1\u7684\u5E73\u8861\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("strong",{children:l[327].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[328].value}),l[329].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[330].value}),l[331].value,(0,e.jsx)("strong",{children:l[332].value}),l[333].value]})]}),(0,e.jsxs)("h2",{id:"\u56DB\u5173\u4E8E\u6DF1\u5EA6\u4F18\u5148\u548C\u5E7F\u5EA6\u4F18\u5148\u904D\u5386",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u56DB\u5173\u4E8E\u6DF1\u5EA6\u4F18\u5148\u548C\u5E7F\u5EA6\u4F18\u5148\u904D\u5386",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u56DB\u3001\u5173\u4E8E\u6DF1\u5EA6\u4F18\u5148\u548C\u5E7F\u5EA6\u4F18\u5148\u904D\u5386"]}),(0,e.jsx)("p",{children:l[334].value}),(0,e.jsx)(s.Z,{lang:"js",children:l[335].value}),(0,e.jsxs)("h3",{id:"1-\u6DF1\u5EA6\u4F18\u5148\u904D\u5386dfs",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1-\u6DF1\u5EA6\u4F18\u5148\u904D\u5386dfs",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1. \u6DF1\u5EA6\u4F18\u5148\u904D\u5386(dfs)"]}),(0,e.jsx)("blockquote",{children:(0,e.jsx)("p",{children:l[336].value})}),(0,e.jsx)(s.Z,{lang:"js",children:l[337].value}),(0,e.jsxs)("h3",{id:"2-\u5E7F\u5EA6\u4F18\u5148\u904D\u5386bfs",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2-\u5E7F\u5EA6\u4F18\u5148\u904D\u5386bfs",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2. \u5E7F\u5EA6\u4F18\u5148\u904D\u5386(bfs)"]}),(0,e.jsx)("blockquote",{children:(0,e.jsxs)("p",{children:[l[338].value,(0,e.jsx)("strong",{children:l[339].value}),l[340].value,(0,e.jsx)("strong",{children:l[341].value}),l[342].value,(0,e.jsx)("a",{href:"https://zh.wikipedia.org/wiki/%E6%90%9C%E7%B4%A2%E7%AE%97%E6%B3%95",children:l[343].value}),l[344].value,(0,e.jsx)("a",{href:"https://zh.wikipedia.org/wiki/%E6%A0%91_(%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84)#%E6%9C%AF%E8%AF%AD",children:l[345].value}),l[346].value,(0,e.jsx)("a",{href:"https://zh.wikipedia.org/wiki/%E8%8A%82%E7%82%B9",children:l[347].value}),l[348].value]})}),(0,e.jsx)(s.Z,{lang:"js",children:l[349].value}),(0,e.jsxs)("h2",{id:"\u4E94\u7528\u8FED\u4EE3\u7684\u65B9\u6CD5\u5B9E\u73B0\u6811\u7684\u4E09\u79CD\u904D\u5386\u65B9\u5F0F",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E94\u7528\u8FED\u4EE3\u7684\u65B9\u6CD5\u5B9E\u73B0\u6811\u7684\u4E09\u79CD\u904D\u5386\u65B9\u5F0F",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E94\u3001\u7528\u8FED\u4EE3\u7684\u65B9\u6CD5\u5B9E\u73B0\u6811\u7684\u4E09\u79CD\u904D\u5386\u65B9\u5F0F"]}),(0,e.jsx)("p",{children:l[350].value}),(0,e.jsx)("p",{children:l[351].value}),(0,e.jsx)("p",{children:l[352].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[353].value}),(0,e.jsx)("li",{children:l[354].value}),(0,e.jsx)("li",{children:l[355].value})]}),(0,e.jsxs)("p",{children:[l[356].value,(0,e.jsx)("strong",{children:l[357].value}),l[358].value,(0,e.jsx)("strong",{children:l[359].value})]}),(0,e.jsx)("p",{children:l[360].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[361].value}),(0,e.jsx)("li",{children:l[362].value}),(0,e.jsxs)("li",{children:[l[363].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[364].value}),(0,e.jsx)("li",{children:l[365].value}),(0,e.jsxs)("li",{children:[l[366].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[367].value}),(0,e.jsx)("li",{children:l[368].value})]})]}),(0,e.jsx)("li",{children:l[369].value})]})]})]}),(0,e.jsxs)("h3",{id:"\u4EE3\u7801\u5B9E\u73B0-2",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4EE3\u7801\u5B9E\u73B0-2",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4EE3\u7801\u5B9E\u73B0"]}),(0,e.jsx)(s.Z,{lang:"js",children:l[370].value}),(0,e.jsxs)("h5",{id:"\u6D4B\u8BD5\u4EE3\u7801-1",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6D4B\u8BD5\u4EE3\u7801-1",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(s.Z,{lang:"js",children:l[371].value})]})})})}n.default=j},48739:function(g,n,u){var r=u(93236),c=function(i){return(0,r.createElement)(i.children)};n.Z=c},38039:function(g,n,u){u.d(n,{Z:function(){return E}});var r=u(54306),c=u.n(r),t=u(93236),i=u(62086),s=function(h){var a,x,e,j=(h==null||(a=h.children)===null||a===void 0?void 0:a.filter(function(d){return d!=`
+ `}))||[],o=(0,t.useState)(0),l=c()(o,2),m=l[0],B=l[1],C=function(v){B(v)};return(0,i.jsxs)("div",{className:"tab-container",children:[(0,i.jsx)("ul",{className:"tab-list",children:j.map(function(d,v){return(0,i.jsx)("li",{className:m===v?"tab-item active":"tab-item",onClick:function(){return C(v)},children:d.props.label},d.props.label)})}),(0,i.jsx)("div",{className:"tab-content",children:(x=j[m])===null||x===void 0||(e=x.props)===null||e===void 0?void 0:e.children})]})},E=s}}]);
diff --git a/docs__data-structure__10-red_black_tree.md.07a441c4.chunk.css b/docs__data-structure__10-red_black_tree.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__data-structure__10-red_black_tree.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__data-structure__10-red_black_tree.md.c537dd06.async.js b/docs__data-structure__10-red_black_tree.md.c537dd06.async.js
new file mode 100644
index 0000000..ac00c6a
--- /dev/null
+++ b/docs__data-structure__10-red_black_tree.md.c537dd06.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[405],{29497:function(g,n,s){s.r(n);var r=s(16878),u=s(84475),v=s(646),i=s(25778),o=s(1778),m=s(6749),_=s(48739),c=s(38039),a=s(5899),h=s(93236),e=s(62086);function x(){var j=(0,a.eL)(),l=j.texts;return(0,e.jsx)(a.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u7EA2\u9ED1\u6811redblacktree",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u7EA2\u9ED1\u6811redblacktree",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u7EA2\u9ED1\u6811(RedBlackTree)"]}),(0,e.jsxs)("h2",{id:"\u4E00\u7EA2\u9ED1\u6811\u7684\u4ECB\u7ECD",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E00\u7EA2\u9ED1\u6811\u7684\u4ECB\u7ECD",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E00\u3001\u7EA2\u9ED1\u6811\u7684\u4ECB\u7ECD"]}),(0,e.jsxs)("blockquote",{children:[(0,e.jsxs)("p",{children:[(0,e.jsx)("strong",{children:l[0].value}),l[1].value,(0,e.jsx)("a",{href:"https://zh.wikipedia.org/wiki/%E8%87%AA%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%9F%A5%E6%89%BE%E6%A0%91",children:l[2].value}),l[3].value,(0,e.jsx)("a",{href:"https://zh.wikipedia.org/wiki/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%A6",children:l[4].value}),l[5].value,(0,e.jsx)("a",{href:"https://zh.wikipedia.org/wiki/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84",children:l[6].value}),l[7].value,(0,e.jsx)("a",{href:"https://zh.wikipedia.org/wiki/%E5%85%B3%E8%81%94%E6%95%B0%E7%BB%84",children:l[8].value}),l[9].value,(0,e.jsx)("a",{href:"https://zh.wikipedia.org/wiki/%E9%B2%81%E9%81%93%E5%A4%AB%C2%B7%E8%B4%9D%E5%B0%94",children:l[10].value}),l[11].value,(0,e.jsx)("strong",{children:l[12].value}),l[13].value,(0,e.jsx)("a",{href:"https://zh.wikipedia.org/wiki/%E7%BD%97%E4%BC%AF%E7%89%B9%C2%B7%E5%A1%9E%E5%A5%87%E5%A8%81%E5%85%8B",children:l[14].value}),l[15].value,(0,e.jsx)("a",{href:"https://zh.wikipedia.org/wiki/1978%E5%B9%B4",children:l[16].value}),l[17].value]}),(0,e.jsxs)("p",{children:[l[18].value,(0,e.jsx)("a",{href:"https://zh.wikipedia.org/wiki/%E7%AE%97%E6%B3%95%E5%88%86%E6%9E%90",children:l[19].value}),l[20].value,(0,e.jsx)("img",{src:"https://wikimedia.org/api/rest_v1/media/math/render/svg/67697a0b44080bbf967c00d60bf4aac79f9ce385",alt:"{\\displaystyle {\\text{O}}(\\log n)}"}),l[21].value,(0,e.jsx)("img",{src:"https://wikimedia.org/api/rest_v1/media/math/render/svg/a601995d55609f2d9f5e233e36fbe9ea26011b3b",alt:"n"}),l[22].value]}),(0,e.jsx)("p",{children:l[23].value})]}),(0,e.jsxs)("h2",{id:"\u4E8C\u7EA2\u9ED1\u6811\u7684\u4E94\u6761\u89C4\u5219",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E8C\u7EA2\u9ED1\u6811\u7684\u4E94\u6761\u89C4\u5219",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E8C\u3001\u7EA2\u9ED1\u6811\u7684\u4E94\u6761\u89C4\u5219"]}),(0,e.jsx)("p",{children:l[24].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:(0,e.jsx)("strong",{children:l[25].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("strong",{children:l[26].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("strong",{children:l[27].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("strong",{children:l[28].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("strong",{children:l[29].value})})]}),(0,e.jsxs)("div",{align:"center",children:[l[30].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201141413757.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h3",{id:"\u7EA2\u9ED1\u6811\u7684\u76F8\u5BF9\u5E73\u8861",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u7EA2\u9ED1\u6811\u7684\u76F8\u5BF9\u5E73\u8861",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u7EA2\u9ED1\u6811\u7684\u76F8\u5BF9\u5E73\u8861"]}),(0,e.jsx)("p",{children:l[31].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[32].value,(0,e.jsx)("strong",{children:l[33].value}),l[34].value,(0,e.jsx)("strong",{children:l[35].value}),l[36].value,(0,e.jsx)("strong",{children:l[37].value}),l[38].value,(0,e.jsx)("strong",{children:l[39].value})]}),(0,e.jsxs)("li",{children:[l[40].value,(0,e.jsx)("strong",{children:l[41].value}),l[42].value]}),(0,e.jsx)("li",{children:l[43].value})]}),(0,e.jsxs)("p",{children:[l[44].value,(0,e.jsx)("strong",{children:l[45].value}),l[46].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[47].value}),l[48].value]}),(0,e.jsx)("li",{children:l[49].value}),(0,e.jsx)("li",{children:l[50].value}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[51].value}),l[52].value]}),(0,e.jsx)("li",{children:l[53].value})]}),(0,e.jsxs)("h2",{id:"\u4E09\u7EA2\u9ED1\u6811\u7684\u4E09\u79CD\u53D8\u5316",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E09\u7EA2\u9ED1\u6811\u7684\u4E09\u79CD\u53D8\u5316",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E09\u3001\u7EA2\u9ED1\u6811\u7684\u4E09\u79CD\u53D8\u5316"]}),(0,e.jsx)("p",{children:l[54].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:(0,e.jsx)("strong",{children:l[55].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("strong",{children:l[56].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("strong",{children:l[57].value})})]}),(0,e.jsxs)("h3",{id:"31-\u53D8\u8272",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#31-\u53D8\u8272",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.1 \u53D8\u8272"]}),(0,e.jsxs)("p",{children:[l[58].value,(0,e.jsx)("strong",{children:l[59].value}),l[60].value,(0,e.jsx)("strong",{children:l[61].value}),l[62].value,(0,e.jsx)("strong",{children:l[63].value}),l[64].value,(0,e.jsx)("strong",{children:l[65].value})]}),(0,e.jsxs)("p",{children:[l[66].value,(0,e.jsx)("strong",{children:l[67].value}),l[68].value,(0,e.jsx)("strong",{children:l[69].value}),l[70].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[71].value,(0,e.jsx)("strong",{children:l[72].value}),l[73].value,(0,e.jsx)("strong",{children:l[74].value}),l[75].value]}),(0,e.jsxs)("li",{children:[l[76].value,(0,e.jsxs)("strong",{children:[l[77].value,(0,e.jsx)("strong",{children:l[78].value}),l[79].value]}),l[80].value]}),(0,e.jsxs)("li",{children:[l[81].value,(0,e.jsx)("strong",{children:l[82].value}),l[83].value,(0,e.jsx)("strong",{children:l[84].value}),l[85].value]})]}),(0,e.jsxs)("h3",{id:"32-\u5DE6\u65CB\u8F6C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#32-\u5DE6\u65CB\u8F6C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.2 \u5DE6\u65CB\u8F6C"]}),(0,e.jsxs)("p",{children:[l[86].value,(0,e.jsx)("strong",{children:l[87].value}),l[88].value]}),(0,e.jsxs)("div",{align:"center",children:[l[89].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201141419854.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:(0,e.jsx)("strong",{children:l[90].value})}),(0,e.jsx)("p",{children:l[91].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[92].value}),(0,e.jsx)("li",{children:l[93].value}),(0,e.jsxs)("li",{children:[l[94].value,(0,e.jsx)("strong",{children:l[95].value}),l[96].value,(0,e.jsx)("strong",{children:l[97].value}),l[98].value]}),(0,e.jsxs)("li",{children:[l[99].value,(0,e.jsx)("strong",{children:l[100].value}),l[101].value,(0,e.jsx)("strong",{children:l[102].value})]}),(0,e.jsxs)("li",{children:[l[103].value,(0,e.jsx)("strong",{children:l[104].value}),l[105].value,(0,e.jsx)("strong",{children:l[106].value}),l[107].value,(0,e.jsx)("strong",{children:l[108].value})]})]}),(0,e.jsx)("p",{children:l[109].value}),(0,e.jsxs)("div",{align:"center",children:[l[110].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201141420560.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h3",{id:"33-\u53F3\u65CB\u8F6C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#33-\u53F3\u65CB\u8F6C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3.3 \u53F3\u65CB\u8F6C"]}),(0,e.jsxs)("p",{children:[l[111].value,(0,e.jsx)("strong",{children:l[112].value}),l[113].value]}),(0,e.jsxs)("div",{align:"center",children:[l[114].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201141420707.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:l[115].value}),(0,e.jsx)("p",{children:l[116].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[117].value}),(0,e.jsx)("li",{children:l[118].value}),(0,e.jsxs)("li",{children:[l[119].value,(0,e.jsx)("strong",{children:l[120].value}),l[121].value,(0,e.jsx)("strong",{children:l[122].value}),l[123].value]}),(0,e.jsxs)("li",{children:[l[124].value,(0,e.jsx)("strong",{children:l[125].value}),l[126].value,(0,e.jsx)("strong",{children:l[127].value})]}),(0,e.jsxs)("li",{children:[l[128].value,(0,e.jsx)("strong",{children:l[129].value}),l[130].value,(0,e.jsx)("strong",{children:l[131].value}),l[132].value,(0,e.jsx)("strong",{children:l[133].value}),l[134].value,(0,e.jsx)("strong",{children:l[135].value})]})]}),(0,e.jsx)("p",{children:l[136].value}),(0,e.jsxs)("div",{align:"center",children:[l[137].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201141422134.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h2",{id:"\u56DB\u7EA2\u9ED1\u6811\u7684\u63D2\u5165\u64CD\u4F5C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u56DB\u7EA2\u9ED1\u6811\u7684\u63D2\u5165\u64CD\u4F5C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u56DB\u3001\u7EA2\u9ED1\u6811\u7684\u63D2\u5165\u64CD\u4F5C"]}),(0,e.jsxs)("p",{children:[l[138].value,(0,e.jsx)("strong",{children:l[139].value}),l[140].value]}),(0,e.jsxs)("p",{children:[l[141].value,(0,e.jsx)("strong",{children:l[142].value}),l[143].value,(0,e.jsx)("strong",{children:l[144].value}),l[145].value,(0,e.jsx)("strong",{children:l[146].value}),l[147].value,(0,e.jsx)("strong",{children:l[148].value}),l[149].value]}),(0,e.jsxs)("div",{align:"center",children:[l[150].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201141423233.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h3",{id:"\u60C5\u51B5-1",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u60C5\u51B5-1",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u60C5\u51B5 1"]}),(0,e.jsx)("p",{children:l[151].value}),(0,e.jsxs)("p",{children:[l[152].value,(0,e.jsx)("strong",{children:l[153].value}),l[154].value,(0,e.jsx)("strong",{children:l[155].value}),l[156].value]}),(0,e.jsxs)("div",{align:"center",children:[l[157].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201141424707.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h3",{id:"\u60C5\u51B5-2",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u60C5\u51B5-2",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u60C5\u51B5 2"]}),(0,e.jsx)("p",{children:l[158].value}),(0,e.jsx)("p",{children:l[159].value}),(0,e.jsxs)("div",{align:"center",children:[l[160].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201141427609.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h3",{id:"\u60C5\u51B5-3",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u60C5\u51B5-3",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u60C5\u51B5 3"]}),(0,e.jsxs)("p",{children:[l[161].value,(0,e.jsx)("strong",{children:l[162].value}),l[163].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[164].value}),(0,e.jsx)("li",{children:l[165].value}),(0,e.jsx)("li",{children:l[166].value})]}),(0,e.jsxs)("p",{children:[l[167].value,(0,e.jsx)("strong",{children:l[168].value}),l[169].value]}),(0,e.jsxs)("div",{align:"center",children:[l[170].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201141430398.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:l[171].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[172].value,(0,e.jsx)("strong",{children:l[173].value}),l[174].value,(0,e.jsx)("strong",{children:l[175].value}),l[176].value,(0,e.jsx)("strong",{children:l[177].value}),l[178].value,(0,e.jsx)("strong",{children:l[179].value})]}),(0,e.jsxs)("li",{children:[l[180].value,(0,e.jsx)("strong",{children:l[181].value}),l[182].value,(0,e.jsx)("strong",{children:l[183].value}),l[184].value,(0,e.jsx)("strong",{children:l[185].value}),l[186].value]})]}),(0,e.jsxs)("div",{align:"center",children:[l[187].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201141430174.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h3",{id:"\u60C5\u51B5-4",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u60C5\u51B5-4",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u60C5\u51B5 4"]}),(0,e.jsxs)("p",{children:[l[188].value,(0,e.jsx)("strong",{children:l[189].value}),l[190].value,(0,e.jsx)("strong",{children:l[191].value}),l[192].value]}),(0,e.jsx)("p",{children:l[193].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[194].value}),l[195].value,(0,e.jsx)("strong",{children:l[196].value})]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[197].value}),l[198].value,(0,e.jsx)("strong",{children:l[199].value}),l[200].value,(0,e.jsx)("strong",{children:l[201].value})]})]}),(0,e.jsxs)("div",{align:"center",children:[l[202].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201141432836.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h3",{id:"\u60C5\u51B5-5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u60C5\u51B5-5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u60C5\u51B5 5"]}),(0,e.jsxs)("p",{children:[l[203].value,(0,e.jsx)("strong",{children:l[204].value}),l[205].value,(0,e.jsx)("strong",{children:l[206].value}),l[207].value]}),(0,e.jsx)("p",{children:l[208].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[209].value,(0,e.jsx)("strong",{children:l[210].value}),l[211].value]}),(0,e.jsxs)("li",{children:[l[212].value,(0,e.jsx)("strong",{children:l[213].value}),l[214].value,(0,e.jsx)("strong",{children:l[215].value}),l[216].value,(0,e.jsx)("strong",{children:l[217].value}),l[218].value,(0,e.jsx)("strong",{children:l[219].value}),l[220].value]})]}),(0,e.jsxs)("div",{align:"center",children:[l[221].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201141435146.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:l[222].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[223].value}),(0,e.jsx)("li",{children:l[224].value}),(0,e.jsx)("li",{children:l[225].value})]}),(0,e.jsxs)("div",{align:"center",children:[l[226].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201141441596.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h2",{id:"\u4E94\u5B9E\u9645\u63D2\u5165\u6848\u4F8B",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E94\u5B9E\u9645\u63D2\u5165\u6848\u4F8B",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E94\u3001\u5B9E\u9645\u63D2\u5165\u6848\u4F8B"]}),(0,e.jsx)("p",{children:l[227].value}),(0,e.jsx)("p",{children:l[228].value}),(0,e.jsxs)("div",{align:"center",children:[l[229].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201141442070.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("p",{children:[l[230].value,(0,e.jsx)("strong",{children:l[231].value}),l[232].value,(0,e.jsx)("strong",{children:l[233].value}),l[234].value]}),(0,e.jsxs)("p",{children:[l[235].value,(0,e.jsx)("strong",{children:l[236].value})]}),(0,e.jsxs)("h3",{id:"\u63D2\u5165-10",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u63D2\u5165-10",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u63D2\u5165 10"]}),(0,e.jsxs)("p",{children:[l[237].value,(0,e.jsx)("strong",{children:l[238].value}),l[239].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[240].value}),(0,e.jsx)("li",{children:l[241].value})]}),(0,e.jsxs)("div",{align:"center",children:[l[242].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201141444461.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h3",{id:"\u63D2\u5165-9",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u63D2\u5165-9",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u63D2\u5165 9"]}),(0,e.jsxs)("p",{children:[l[243].value,(0,e.jsx)("strong",{children:l[244].value}),l[245].value]}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[246].value})}),(0,e.jsxs)("div",{align:"center",children:[l[247].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201141445259.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h3",{id:"\u63D2\u5165-8",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u63D2\u5165-8",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u63D2\u5165 8"]}),(0,e.jsx)("p",{children:l[248].value}),(0,e.jsxs)("p",{children:[l[249].value,(0,e.jsx)("strong",{children:l[250].value}),l[251].value,(0,e.jsx)("strong",{children:l[252].value}),l[253].value,(0,e.jsx)("strong",{children:l[254].value}),l[255].value]}),(0,e.jsxs)("div",{align:"center",children:[l[256].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201141447088.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("p",{children:[l[257].value,(0,e.jsx)("strong",{children:l[258].value}),l[259].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[260].value}),(0,e.jsx)("li",{children:l[261].value})]}),(0,e.jsxs)("div",{align:"center",children:[l[262].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201141449351.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h3",{id:"\u63D2\u5165-7",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u63D2\u5165-7",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u63D2\u5165 7"]}),(0,e.jsxs)("p",{children:[l[263].value,(0,e.jsx)("strong",{children:l[264].value}),l[265].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[266].value}),(0,e.jsx)("li",{children:l[267].value})]}),(0,e.jsxs)("div",{align:"center",children:[l[268].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201141449135.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h3",{id:"\u63D2\u5165-6",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u63D2\u5165-6",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u63D2\u5165 6"]}),(0,e.jsxs)("p",{children:[l[269].value,(0,e.jsx)("strong",{children:l[270].value}),l[271].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[272].value}),(0,e.jsx)("li",{children:l[273].value})]}),(0,e.jsxs)("div",{align:"center",children:[l[274].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201141450244.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h3",{id:"\u63D2\u5165-5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u63D2\u5165-5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u63D2\u5165 5"]}),(0,e.jsxs)("p",{children:[l[275].value,(0,e.jsx)("strong",{children:l[276].value}),l[277].value]}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[278].value})}),(0,e.jsxs)("div",{align:"center",children:[l[279].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201141451601.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h3",{id:"\u63D2\u5165-4",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u63D2\u5165-4",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u63D2\u5165 4"]}),(0,e.jsxs)("p",{children:[l[280].value,(0,e.jsx)("strong",{children:l[281].value}),l[282].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[283].value}),(0,e.jsx)("li",{children:l[284].value})]}),(0,e.jsxs)("div",{align:"center",children:[l[285].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201141451896.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h3",{id:"\u63D2\u5165-3",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u63D2\u5165-3",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u63D2\u5165 3"]}),(0,e.jsxs)("p",{children:[(0,e.jsx)("strong",{children:l[286].value}),l[287].value,(0,e.jsx)("strong",{children:l[288].value}),l[289].value]}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[290].value})}),(0,e.jsx)("p",{children:l[291].value}),(0,e.jsxs)("div",{align:"center",children:[l[292].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201141452123.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("p",{children:[(0,e.jsx)("strong",{children:l[293].value}),l[294].value,(0,e.jsx)("strong",{children:l[295].value}),l[296].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[297].value}),(0,e.jsx)("li",{children:l[298].value})]}),(0,e.jsxs)("div",{align:"center",children:[l[299].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201141452539.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:l[300].value}),(0,e.jsxs)("div",{align:"center",children:[l[301].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201141452629.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h3",{id:"\u63D2\u5165-2",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u63D2\u5165-2",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u63D2\u5165 2"]}),(0,e.jsxs)("p",{children:[l[302].value,(0,e.jsx)("strong",{children:l[303].value}),l[304].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[305].value}),(0,e.jsx)("li",{children:l[306].value})]}),(0,e.jsxs)("div",{align:"center",children:[l[307].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201141453449.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h3",{id:"\u63D2\u5165-1",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u63D2\u5165-1",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u63D2\u5165 1"]}),(0,e.jsxs)("p",{children:[(0,e.jsx)("strong",{children:l[308].value}),l[309].value,(0,e.jsx)("strong",{children:l[310].value}),l[311].value]}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[312].value})}),(0,e.jsx)("p",{children:l[313].value}),(0,e.jsxs)("div",{align:"center",children:[l[314].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201141453166.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("p",{children:[(0,e.jsx)("strong",{children:l[315].value}),l[316].value,(0,e.jsx)("strong",{children:l[317].value}),l[318].value]}),(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[319].value}),l[320].value,(0,e.jsx)("strong",{children:l[321].value})]})}),(0,e.jsx)("p",{children:l[322].value}),(0,e.jsxs)("p",{children:[(0,e.jsx)("strong",{children:l[323].value}),l[324].value,(0,e.jsx)("strong",{children:l[325].value}),l[326].value]}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[327].value})}),(0,e.jsxs)("div",{align:"center",children:[l[328].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201141456103.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("p",{children:[l[329].value,(0,e.jsx)("strong",{children:l[330].value}),l[331].value]}),(0,e.jsxs)("div",{align:"center",children:[l[332].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201141456809.png",style:{maxWidth:"100%"}})]})]})})})}n.default=x},48739:function(g,n,s){var r=s(93236),u=function(i){return(0,r.createElement)(i.children)};n.Z=u},38039:function(g,n,s){s.d(n,{Z:function(){return m}});var r=s(54306),u=s.n(r),v=s(93236),i=s(62086),o=function(c){var a,h,e,x=(c==null||(a=c.children)===null||a===void 0?void 0:a.filter(function(d){return d!=`
+ `}))||[],j=(0,v.useState)(0),l=u()(j,2),p=l[0],E=l[1],D=function(t){E(t)};return(0,i.jsxs)("div",{className:"tab-container",children:[(0,i.jsx)("ul",{className:"tab-list",children:x.map(function(d,t){return(0,i.jsx)("li",{className:p===t?"tab-item active":"tab-item",onClick:function(){return D(t)},children:d.props.label},d.props.label)})}),(0,i.jsx)("div",{className:"tab-content",children:(h=x[p])===null||h===void 0||(e=h.props)===null||e===void 0?void 0:e.children})]})},m=o}}]);
diff --git a/docs__data-structure__11_graph.md.07a441c4.chunk.css b/docs__data-structure__11_graph.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__data-structure__11_graph.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__data-structure__11_graph.md.10c14c79.async.js b/docs__data-structure__11_graph.md.10c14c79.async.js
new file mode 100644
index 0000000..dd27d79
--- /dev/null
+++ b/docs__data-structure__11_graph.md.10c14c79.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[200],{98801:function(g,u,s){s.r(u);var r=s(16878),c=s(84475),v=s(646),i=s(25778),n=s(1778),E=s(6749),m=s(48739),h=s(38039),a=s(5899),x=s(93236),e=s(62086);function j(){var o=(0,a.eL)(),l=o.texts;return(0,e.jsx)(a.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u56FEgraph",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u56FEgraph",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u56FE(Graph)"]}),(0,e.jsxs)("h2",{id:"\u4E00\u56FE\u7684\u4ECB\u7ECD",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E00\u56FE\u7684\u4ECB\u7ECD",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E00\u3001\u56FE\u7684\u4ECB\u7ECD"]}),(0,e.jsxs)("h3",{id:"1-\u4EC0\u4E48\u662F\u56FE",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1-\u4EC0\u4E48\u662F\u56FE",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1. \u4EC0\u4E48\u662F\u56FE\uFF1F"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[0].value}),l[1].value,(0,e.jsx)("strong",{children:l[2].value}),l[3].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[4].value}),l[5].value]}),(0,e.jsxs)("li",{children:[l[6].value,(0,e.jsx)("strong",{children:l[7].value}),l[8].value,(0,e.jsx)("strong",{children:l[9].value}),l[10].value,(0,e.jsx)("strong",{children:l[11].value}),l[12].value]}),(0,e.jsxs)("li",{children:[l[13].value,(0,e.jsx)("strong",{children:l[14].value}),l[15].value,(0,e.jsx)("strong",{children:l[16].value}),l[17].value,(0,e.jsx)("strong",{children:l[18].value}),l[19].value,(0,e.jsx)("strong",{children:l[20].value}),l[21].value,(0,e.jsx)("strong",{children:l[22].value})]})]}),(0,e.jsxs)("h3",{id:"2\u56FE\u7684\u7279\u70B9",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2\u56FE\u7684\u7279\u70B9",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.\u56FE\u7684\u7279\u70B9"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[23].value}),l[24].value,(0,e.jsx)("strong",{children:l[25].value}),l[26].value]}),(0,e.jsxs)("li",{children:[l[27].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[28].value}),(0,e.jsx)("li",{children:l[29].value})]})]})]}),(0,e.jsxs)("h3",{id:"3-\u56FE\u7684\u5E38\u7528\u672F\u8BED",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#3-\u56FE\u7684\u5E38\u7528\u672F\u8BED",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3. \u56FE\u7684\u5E38\u7528\u672F\u8BED\uFF1A"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:(0,e.jsxs)("strong",{children:[l[30].value,(0,e.jsx)("strong",{children:l[31].value}),l[32].value]})}),(0,e.jsxs)("li",{children:[(0,e.jsxs)("strong",{children:[l[33].value,(0,e.jsx)("strong",{children:l[34].value}),l[35].value]}),l[36].value,(0,e.jsx)("strong",{children:l[37].value})]}),(0,e.jsx)("li",{children:(0,e.jsxs)("strong",{children:[l[38].value,(0,e.jsx)("strong",{children:l[39].value}),l[40].value]})}),(0,e.jsxs)("li",{children:[(0,e.jsxs)("strong",{children:[l[41].value,(0,e.jsx)("strong",{children:l[42].value}),l[43].value]}),l[44].value,(0,e.jsx)("strong",{children:l[45].value})]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[46].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[47].value}),l[48].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[49].value}),l[50].value,(0,e.jsx)("strong",{children:l[51].value}),l[52].value]})]})]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[53].value}),l[54].value,(0,e.jsx)("strong",{children:l[55].value}),l[56].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[57].value}),l[58].value,(0,e.jsx)("strong",{children:l[59].value}),l[60].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[61].value}),l[62].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[63].value}),l[64].value]})]}),(0,e.jsxs)("h3",{id:"4-\u56FE\u7684\u8868\u793A",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#4-\u56FE\u7684\u8868\u793A",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"4. \u56FE\u7684\u8868\u793A"]}),(0,e.jsxs)("h4",{id:"41-\u90BB\u63A5\u77E9\u9635",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#41-\u90BB\u63A5\u77E9\u9635",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"4.1 \u90BB\u63A5\u77E9\u9635"]}),(0,e.jsxs)("p",{children:[l[65].value,(0,e.jsx)("strong",{children:l[66].value}),l[67].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[68].value}),(0,e.jsxs)("li",{children:[l[69].value,(0,e.jsx)("strong",{children:l[70].value}),l[71].value,(0,e.jsx)("strong",{children:l[72].value})]}),(0,e.jsxs)("li",{children:[l[73].value,(0,e.jsx)("strong",{children:l[74].value}),l[75].value,(0,e.jsx)("strong",{children:l[76].value})]})]}),(0,e.jsxs)("div",{align:"center",children:[l[77].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201171341874.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:l[78].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[79].value,(0,e.jsx)("strong",{children:l[80].value}),l[81].value,(0,e.jsx)("strong",{children:l[82].value}),l[83].value,(0,e.jsx)("strong",{children:l[84].value}),l[85].value,(0,e.jsx)("strong",{children:l[86].value}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[87].value})})]}),(0,e.jsxs)("li",{children:[l[88].value,(0,e.jsx)("strong",{children:l[89].value}),l[90].value]}),(0,e.jsx)("li",{children:l[91].value})]}),(0,e.jsxs)("h5",{id:"\u90BB\u63A5\u77E9\u9635\u5B58\u5728\u7684\u95EE\u9898",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u90BB\u63A5\u77E9\u9635\u5B58\u5728\u7684\u95EE\u9898",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u90BB\u63A5\u77E9\u9635\u5B58\u5728\u7684\u95EE\u9898\uFF1A"]}),(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[l[92].value,(0,e.jsx)("strong",{children:l[93].value}),l[94].value,(0,e.jsx)("strong",{children:l[95].value}),l[96].value,(0,e.jsx)("strong",{children:l[97].value})]})}),(0,e.jsxs)("h4",{id:"42-\u90BB\u63A5\u8868",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#42-\u90BB\u63A5\u8868",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"4.2 \u90BB\u63A5\u8868"]}),(0,e.jsxs)("p",{children:[l[98].value,(0,e.jsx)("strong",{children:l[99].value}),l[100].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[101].value,(0,e.jsx)("strong",{children:l[102].value}),l[103].value,(0,e.jsx)("strong",{children:l[104].value}),l[105].value]}),(0,e.jsxs)("li",{children:[l[106].value,(0,e.jsx)("strong",{children:l[107].value}),l[108].value]})]}),(0,e.jsxs)("div",{align:"center",children:[l[109].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201171345893.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:l[110].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[111].value,(0,e.jsx)("strong",{children:l[112].value}),l[113].value,(0,e.jsx)("strong",{children:l[114].value}),l[115].value]}),(0,e.jsx)("li",{children:l[116].value})]}),(0,e.jsxs)("h5",{id:"\u90BB\u63A5\u8868\u7684\u95EE\u9898",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u90BB\u63A5\u8868\u7684\u95EE\u9898",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u90BB\u63A5\u8868\u7684\u95EE\u9898\uFF1A"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[117].value,(0,e.jsx)("strong",{children:l[118].value}),l[119].value,(0,e.jsx)("strong",{children:l[120].value}),l[121].value]}),(0,e.jsxs)("li",{children:[l[122].value,(0,e.jsx)("strong",{children:l[123].value}),l[124].value,(0,e.jsx)("strong",{children:l[125].value}),l[126].value]})]}),(0,e.jsxs)("h2",{id:"\u4E8C\u56FE\u7ED3\u6784\u7684\u5C01\u88C5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E8C\u56FE\u7ED3\u6784\u7684\u5C01\u88C5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E8C\u3001\u56FE\u7ED3\u6784\u7684\u5C01\u88C5"]}),(0,e.jsxs)("p",{children:[l[127].value,(0,e.jsx)("strong",{children:l[128].value}),l[129].value,(0,e.jsx)("strong",{children:l[130].value}),l[131].value,(0,e.jsx)("strong",{children:l[132].value})]}),(0,e.jsxs)("h3",{id:"21-\u56FE\u7C7B\u7684\u521B\u5EFA",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#21-\u56FE\u7C7B\u7684\u521B\u5EFA",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.1 \u56FE\u7C7B\u7684\u521B\u5EFA"]}),(0,e.jsx)(n.Z,{lang:"js",children:l[133].value}),(0,e.jsxs)("h3",{id:"22-\u6DFB\u52A0\u9876\u70B9\u548C\u8FB9",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#22-\u6DFB\u52A0\u9876\u70B9\u548C\u8FB9",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.2 \u6DFB\u52A0\u9876\u70B9\u548C\u8FB9"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:(0,e.jsx)("p",{children:l[134].value})}),(0,e.jsx)("li",{children:(0,e.jsxs)("p",{children:[l[135].value,(0,e.jsx)("strong",{children:l[136].value})]})}),(0,e.jsx)("li",{children:(0,e.jsx)("p",{children:l[137].value})})]}),(0,e.jsxs)("div",{align:"center",children:[l[138].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201171357972.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)(n.Z,{lang:"js",children:l[139].value}),(0,e.jsxs)("h3",{id:"23-\u5B9E\u73B0-tostring\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#23-\u5B9E\u73B0-tostring\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.3 \u5B9E\u73B0 toString()\u65B9\u6CD5"]}),(0,e.jsx)("p",{children:l[140].value}),(0,e.jsx)(n.Z,{lang:"js",children:l[141].value}),(0,e.jsxs)("h4",{id:"\u6D4B\u8BD5\u4EE3\u7801",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6D4B\u8BD5\u4EE3\u7801",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(n.Z,{lang:"js",children:l[142].value}),(0,e.jsxs)("h3",{id:"24-\u56FE\u7684\u904D\u5386\u65B9\u5F0F",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#24-\u56FE\u7684\u904D\u5386\u65B9\u5F0F",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.4 \u56FE\u7684\u904D\u5386\u65B9\u5F0F"]}),(0,e.jsxs)("h5",{id:"\u56FE\u7684\u904D\u5386\u601D\u60F3",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u56FE\u7684\u904D\u5386\u601D\u60F3",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u56FE\u7684\u904D\u5386\u601D\u60F3\uFF1A"]}),(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[l[143].value,(0,e.jsx)("strong",{children:l[144].value}),l[145].value,(0,e.jsx)("strong",{children:l[146].value}),l[147].value]})}),(0,e.jsxs)("h5",{id:"\u904D\u5386\u56FE\u7684\u4E24\u79CD\u7B97\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u904D\u5386\u56FE\u7684\u4E24\u79CD\u7B97\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u904D\u5386\u56FE\u7684\u4E24\u79CD\u7B97\u6CD5\uFF1A"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[148].value,(0,e.jsx)("strong",{children:l[149].value}),l[150].value]}),(0,e.jsxs)("li",{children:[l[151].value,(0,e.jsx)("strong",{children:l[152].value}),l[153].value]}),(0,e.jsxs)("li",{children:[l[154].value,(0,e.jsx)("strong",{children:l[155].value})]})]}),(0,e.jsxs)("p",{children:[l[156].value,(0,e.jsx)("strong",{children:l[157].value}),l[158].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[159].value}),l[160].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[161].value}),l[162].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[163].value}),l[164].value]})]}),(0,e.jsx)("p",{children:l[165].value}),(0,e.jsx)(n.Z,{lang:"js",children:l[166].value}),(0,e.jsxs)("h3",{id:"25-\u5E7F\u5EA6\u4F18\u5148\u641C\u7D22bfs",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#25-\u5E7F\u5EA6\u4F18\u5148\u641C\u7D22bfs",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.5 \u5E7F\u5EA6\u4F18\u5148\u641C\u7D22(BFS)"]}),(0,e.jsxs)("h4",{id:"\u601D\u8DEF",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u601D\u8DEF",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u601D\u8DEF\uFF1A"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[167].value}),(0,e.jsxs)("li",{children:[l[168].value,(0,e.jsx)("strong",{children:l[169].value}),l[170].value]})]}),(0,e.jsxs)("div",{align:"center",children:[l[171].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201171410836.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h4",{id:"\u5B9E\u73B0\u601D\u8DEF",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5B9E\u73B0\u601D\u8DEF",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("strong",{children:l[172].value})]}),(0,e.jsxs)("p",{children:[l[173].value,(0,e.jsx)("strong",{children:l[174].value}),l[175].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[176].value}),(0,e.jsx)("li",{children:l[177].value}),(0,e.jsxs)("li",{children:[l[178].value,(0,e.jsx)("strong",{children:l[179].value}),l[180].value]}),(0,e.jsxs)("li",{children:[l[181].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[182].value}),(0,e.jsx)("li",{children:l[183].value}),(0,e.jsx)("li",{children:l[184].value})]})]})]}),(0,e.jsxs)("h4",{id:"\u4EE3\u7801\u5B9E\u73B0",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4EE3\u7801\u5B9E\u73B0",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4EE3\u7801\u5B9E\u73B0\uFF1A"]}),(0,e.jsx)(n.Z,{lang:"js",children:l[185].value}),(0,e.jsxs)("h5",{id:"\u6D4B\u8BD5\u4EE3\u7801-1",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6D4B\u8BD5\u4EE3\u7801-1",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(n.Z,{lang:"js",children:l[186].value}),(0,e.jsxs)("h4",{id:"\u8FC7\u7A0B\u8BE6\u89E3",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u8FC7\u7A0B\u8BE6\u89E3",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u8FC7\u7A0B\u8BE6\u89E3"]}),(0,e.jsx)("p",{children:l[187].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[188].value}),(0,e.jsx)("li",{children:l[189].value})]}),(0,e.jsxs)("div",{align:"center",children:[l[190].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201171430137.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[191].value}),(0,e.jsx)("li",{children:l[192].value})]}),(0,e.jsxs)("div",{align:"center",children:[l[193].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201171430755.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:l[194].value}),(0,e.jsx)("p",{children:l[195].value}),(0,e.jsxs)("h4",{id:"\u7B80\u7248-bfs",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u7B80\u7248-bfs",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u7B80\u7248 BFS"]}),(0,e.jsx)(n.Z,{lang:"js",children:l[196].value}),(0,e.jsxs)("h3",{id:"26-\u6DF1\u5EA6\u4F18\u5148\u641C\u7D22dfs",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#26-\u6DF1\u5EA6\u4F18\u5148\u641C\u7D22dfs",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.6 \u6DF1\u5EA6\u4F18\u5148\u641C\u7D22(DFS)"]}),(0,e.jsxs)("h4",{id:"\u601D\u8DEF-1",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u601D\u8DEF-1",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u601D\u8DEF\uFF1A"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[197].value}),(0,e.jsxs)("li",{children:[l[198].value,(0,e.jsx)("strong",{children:l[199].value}),l[200].value]})]}),(0,e.jsxs)("div",{align:"center",children:[l[201].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201171434796.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("h4",{id:"\u5B9E\u73B0\u601D\u8DEF-1",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5B9E\u73B0\u601D\u8DEF-1",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u5B9E\u73B0\u601D\u8DEF\uFF1A"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[202].value,(0,e.jsx)("strong",{children:l[203].value}),l[204].value]}),(0,e.jsxs)("li",{children:[l[205].value,(0,e.jsx)("strong",{children:l[206].value}),l[207].value,(0,e.jsx)("strong",{children:l[208].value}),l[209].value]})]}),(0,e.jsx)("p",{children:l[210].value}),(0,e.jsx)("p",{children:l[211].value}),(0,e.jsx)("p",{children:l[212].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[213].value}),(0,e.jsx)("li",{children:l[214].value})]}),(0,e.jsx)("p",{children:l[215].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[216].value,(0,e.jsx)("strong",{children:l[217].value})]}),(0,e.jsx)("li",{children:l[218].value}),(0,e.jsx)("li",{children:l[219].value}),(0,e.jsx)("li",{children:l[220].value})]}),(0,e.jsxs)("h4",{id:"\u4EE3\u7801\u5B9E\u73B0-1",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4EE3\u7801\u5B9E\u73B0-1",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4EE3\u7801\u5B9E\u73B0\uFF1A"]}),(0,e.jsx)(n.Z,{lang:"js",children:l[221].value}),(0,e.jsxs)("h5",{id:"\u6D4B\u8BD5\u4EE3\u7801-2",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6D4B\u8BD5\u4EE3\u7801-2",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6D4B\u8BD5\u4EE3\u7801"]}),(0,e.jsx)(n.Z,{lang:"js",children:l[222].value}),(0,e.jsxs)("h4",{id:"\u8FC7\u7A0B\u8BE6\u89E3-1",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u8FC7\u7A0B\u8BE6\u89E3-1",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u8FC7\u7A0B\u8BE6\u89E3"]}),(0,e.jsx)("p",{children:l[223].value}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[224].value})}),(0,e.jsxs)("div",{align:"center",children:[l[225].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201171440889.png",style:{maxWidth:"100%"}})]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[226].value}),l[227].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[228].value}),l[229].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[230].value}),l[231].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[232].value}),l[233].value]})]}),(0,e.jsxs)("div",{align:"center",children:[l[234].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201171441364.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[235].value}),l[236].value]})}),(0,e.jsx)("p",{children:l[237].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[238].value}),l[239].value,(0,e.jsx)("strong",{children:l[240].value}),l[241].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("strong",{children:l[242].value}),l[243].value,(0,e.jsx)("strong",{children:l[244].value}),l[245].value]}),(0,e.jsx)("li",{children:l[246].value})]}),(0,e.jsxs)("div",{align:"center",children:[l[247].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202201171441521.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:l[248].value}),(0,e.jsxs)("h4",{id:"\u7B80\u7248-dfs",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u7B80\u7248-dfs",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u7B80\u7248 DFS"]}),(0,e.jsx)(n.Z,{lang:"js",children:l[249].value}),(0,e.jsxs)("h3",{id:"27-\u5B8C\u6574\u4EE3\u7801",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#27-\u5B8C\u6574\u4EE3\u7801",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2.7 \u5B8C\u6574\u4EE3\u7801"]}),(0,e.jsx)(n.Z,{lang:"js",children:l[250].value})]})})})}u.default=j},48739:function(g,u,s){var r=s(93236),c=function(i){return(0,r.createElement)(i.children)};u.Z=c},38039:function(g,u,s){s.d(u,{Z:function(){return E}});var r=s(54306),c=s.n(r),v=s(93236),i=s(62086),n=function(h){var a,x,e,j=(h==null||(a=h.children)===null||a===void 0?void 0:a.filter(function(d){return d!=`
+ `}))||[],o=(0,v.useState)(0),l=c()(o,2),_=l[0],B=l[1],p=function(t){B(t)};return(0,i.jsxs)("div",{className:"tab-container",children:[(0,i.jsx)("ul",{className:"tab-list",children:j.map(function(d,t){return(0,i.jsx)("li",{className:_===t?"tab-item active":"tab-item",onClick:function(){return p(t)},children:d.props.label},d.props.label)})}),(0,i.jsx)("div",{className:"tab-content",children:(x=j[_])===null||x===void 0||(e=x.props)===null||e===void 0?void 0:e.children})]})},E=n}}]);
diff --git a/docs__data-structure__index.md.07a441c4.chunk.css b/docs__data-structure__index.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__data-structure__index.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__data-structure__index.md.6f6036b8.async.js b/docs__data-structure__index.md.6f6036b8.async.js
new file mode 100644
index 0000000..b3dbb38
--- /dev/null
+++ b/docs__data-structure__index.md.6f6036b8.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[74],{43657:function(o,d,i){i.r(d);var a=i(16878),r=i(84475),x=i(646),n=i(25778),v=i(1778),E=i(6749),D=i(48739),c=i(38039),s=i(5899),t=i(93236),e=i(62086);function _(){var j=(0,s.eL)(),l=j.texts;return(0,e.jsx)(s.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u6570\u636E\u7ED3\u6784",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6570\u636E\u7ED3\u6784",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6570\u636E\u7ED3\u6784"]}),(0,e.jsxs)("p",{children:[l[0].value,(0,e.jsx)("a",{href:"https://www.bilibili.com/video/BV1x7411L7Q7",children:l[1].value}),l[2].value]}),(0,e.jsxs)("h2",{id:"\u4E00\u4EC0\u4E48\u662F\u6570\u636E\u7ED3\u6784",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E00\u4EC0\u4E48\u662F\u6570\u636E\u7ED3\u6784",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E00\u3001\u4EC0\u4E48\u662F\u6570\u636E\u7ED3\u6784\uFF1F"]}),(0,e.jsx)("blockquote",{children:(0,e.jsx)("p",{children:l[3].value})}),(0,e.jsxs)("p",{children:[l[4].value,(0,e.jsx)("strong",{children:l[5].value}),l[6].value]}),(0,e.jsx)("p",{children:l[7].value}),(0,e.jsx)("p",{children:l[8].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[9].value}),(0,e.jsx)("li",{children:l[10].value})]}),(0,e.jsxs)("ol",{children:[(0,e.jsx)("li",{children:l[11].value}),(0,e.jsxs)("li",{children:[l[12].value,(0,e.jsxs)("ol",{children:[(0,e.jsx)("li",{children:l[13].value}),(0,e.jsx)("li",{children:l[14].value})]})]}),(0,e.jsx)("li",{children:l[15].value})]}),(0,e.jsxs)("h3",{id:"\u7ED3\u8BBA",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u7ED3\u8BBA",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u7ED3\u8BBA"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[16].value}),(0,e.jsx)("li",{children:l[17].value}),(0,e.jsx)("li",{children:l[18].value}),(0,e.jsx)("li",{children:l[19].value})]}),(0,e.jsxs)("h3",{id:"\u5E38\u89C1\u7684\u6570\u636E\u7ED3\u6784",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5E38\u89C1\u7684\u6570\u636E\u7ED3\u6784",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u5E38\u89C1\u7684\u6570\u636E\u7ED3\u6784"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:(0,e.jsx)("a",{href:"https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array",children:l[20].value})}),(0,e.jsx)("li",{children:(0,e.jsx)(s.rU,{to:"/data-structure/01_stack",children:l[21].value})}),(0,e.jsx)("li",{children:(0,e.jsx)(s.rU,{to:"/data-structure/02_queue",children:l[22].value})}),(0,e.jsx)("li",{children:(0,e.jsx)(s.rU,{to:"/data-structure/03_linked_list",children:l[23].value})}),(0,e.jsx)("li",{children:(0,e.jsx)(s.rU,{to:"/data-structure/07_hash_table",children:l[24].value})}),(0,e.jsx)("li",{children:(0,e.jsx)(s.rU,{to:"/data-structure/08_tree&binary_tree",children:l[25].value})}),(0,e.jsx)("li",{children:(0,e.jsx)(s.rU,{to:"/data-structure/11_graph",children:l[26].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("a",{href:"https://zh.wikipedia.org/wiki/%E5%A0%86%E7%A9%8D",children:l[27].value})})]}),(0,e.jsx)("blockquote",{children:(0,e.jsxs)("p",{children:[l[28].value,(0,e.jsx)("strong",{children:l[29].value}),l[30].value]})}),(0,e.jsxs)("h2",{id:"\u4E8C\u4EC0\u4E48\u662F\u7B97\u6CD5algorithm",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E8C\u4EC0\u4E48\u662F\u7B97\u6CD5algorithm",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E8C\u3001\u4EC0\u4E48\u662F\u7B97\u6CD5\uFF08Algorithm\uFF09\uFF1F"]}),(0,e.jsxs)("h3",{id:"\u7B97\u6CD5\u7684\u5B9A\u4E49",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u7B97\u6CD5\u7684\u5B9A\u4E49",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u7B97\u6CD5\u7684\u5B9A\u4E49"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[31].value}),(0,e.jsx)("li",{children:l[32].value}),(0,e.jsx)("li",{children:l[33].value}),(0,e.jsx)("li",{children:l[34].value})]}),(0,e.jsx)("p",{children:l[35].value}),(0,e.jsxs)("h2",{id:"\u6848\u4F8B",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6848\u4F8B",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6848\u4F8B"]}),(0,e.jsx)("p",{children:l[36].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[37].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[38].value}),(0,e.jsx)("li",{children:l[39].value})]})]}),(0,e.jsxs)("li",{children:[l[40].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[41].value}),(0,e.jsx)("li",{children:l[42].value}),(0,e.jsx)("li",{children:l[43].value}),(0,e.jsx)("li",{children:l[44].value})]})]})]}),(0,e.jsx)("p",{children:l[45].value})]})})})}d.default=_},48739:function(o,d,i){var a=i(93236),r=function(n){return(0,a.createElement)(n.children)};d.Z=r},38039:function(o,d,i){i.d(d,{Z:function(){return E}});var a=i(54306),r=i.n(a),x=i(93236),n=i(62086),v=function(c){var s,t,e,_=(c==null||(s=c.children)===null||s===void 0?void 0:s.filter(function(u){return u!=`
+ `}))||[],j=(0,x.useState)(0),l=r()(j,2),m=l[0],b=l[1],C=function(h){b(h)};return(0,n.jsxs)("div",{className:"tab-container",children:[(0,n.jsx)("ul",{className:"tab-list",children:_.map(function(u,h){return(0,n.jsx)("li",{className:m===h?"tab-item active":"tab-item",onClick:function(){return C(h)},children:u.props.label},u.props.label)})}),(0,n.jsx)("div",{className:"tab-content",children:(t=_[m])===null||t===void 0||(e=t.props)===null||e===void 0?void 0:e.children})]})},E=v}}]);
diff --git a/docs__guide__index.md.07a441c4.chunk.css b/docs__guide__index.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__guide__index.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__guide__index.md.fbc13f19.async.js b/docs__guide__index.md.fbc13f19.async.js
new file mode 100644
index 0000000..32d25ac
--- /dev/null
+++ b/docs__guide__index.md.fbc13f19.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[825],{35263:function(E,s,e){e.r(s);var i=e(16878),a=e(84475),u=e(646),n=e(25778),m=e(1778),j=e(6749),T=e(48739),r=e(38039),t=e(5899),c=e(93236),_=e(62086);function o(){var h=(0,t.eL)(),d=h.texts;return(0,_.jsx)(t.dY,{children:(0,_.jsxs)(_.Fragment,{children:[(0,_.jsxs)("div",{className:"markdown",children:[(0,_.jsxs)("h1",{id:"\u6307\u5357",children:[(0,_.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6307\u5357",children:(0,_.jsx)("span",{className:"icon icon-link"})}),"\u6307\u5357"]}),(0,_.jsx)(m.Z,{lang:"md",children:d[0].value})]}),(0,_.jsx)(u.Z,{type:"info",title:"\u9898\u76EE\u8DF3\u8F6C\u6307\u5F15",children:(0,_.jsxs)("p",{children:[d[1].value,(0,_.jsx)("code",{children:d[2].value}),d[3].value,(0,_.jsx)("code",{children:d[4].value}),d[5].value]})}),(0,_.jsx)("div",{className:"markdown",children:(0,_.jsxs)("div",{align:"center",children:[d[6].value,(0,_.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202211251043567.png",style:{maxWidth:"100%"}}),d[7].value,(0,_.jsx)("div",{align:"center",children:d[8].value})]})})]})})}s.default=o},48739:function(E,s,e){var i=e(93236),a=function(n){return(0,i.createElement)(n.children)};s.Z=a},38039:function(E,s,e){e.d(s,{Z:function(){return j}});var i=e(54306),a=e.n(i),u=e(93236),n=e(62086),m=function(r){var t,c,_,o=(r==null||(t=r.children)===null||t===void 0?void 0:t.filter(function(l){return l!=`
+ `}))||[],h=(0,u.useState)(0),d=a()(h,2),x=d[0],D=d[1],M=function(v){D(v)};return(0,n.jsxs)("div",{className:"tab-container",children:[(0,n.jsx)("ul",{className:"tab-list",children:o.map(function(l,v){return(0,n.jsx)("li",{className:x===v?"tab-item active":"tab-item",onClick:function(){return M(v)},children:l.props.label},l.props.label)})}),(0,n.jsx)("div",{className:"tab-content",children:(c=o[x])===null||c===void 0||(_=c.props)===null||_===void 0?void 0:_.children})]})},j=m}}]);
diff --git a/docs__index.md.07a441c4.chunk.css b/docs__index.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__index.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__index.md.71b9ef31.async.js b/docs__index.md.71b9ef31.async.js
new file mode 100644
index 0000000..7dc3f5a
--- /dev/null
+++ b/docs__index.md.71b9ef31.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[935],{15984:function(E,t,e){e.r(t);var l=e(16878),a=e(84475),v=e(646),_=e(25778),T=e(1778),h=e(6749),P=e(48739),i=e(38039),n=e(5899),u=e(93236),d=e(62086);function o(){var c=(0,n.eL)(),m=c.texts;return(0,d.jsx)(n.dY,{children:(0,d.jsx)(d.Fragment,{})})}t.default=o},48739:function(E,t,e){var l=e(93236),a=function(_){return(0,l.createElement)(_.children)};t.Z=a},38039:function(E,t,e){e.d(t,{Z:function(){return h}});var l=e(54306),a=e.n(l),v=e(93236),_=e(62086),T=function(i){var n,u,d,o=(i==null||(n=i.children)===null||n===void 0?void 0:n.filter(function(s){return s!=`
+ `}))||[],c=(0,v.useState)(0),m=a()(c,2),M=m[0],D=m[1],O=function(r){D(r)};return(0,_.jsxs)("div",{className:"tab-container",children:[(0,_.jsx)("ul",{className:"tab-list",children:o.map(function(s,r){return(0,_.jsx)("li",{className:M===r?"tab-item active":"tab-item",onClick:function(){return O(r)},children:s.props.label},s.props.label)})}),(0,_.jsx)("div",{className:"tab-content",children:(u=o[M])===null||u===void 0||(d=u.props)===null||d===void 0?void 0:d.children})]})},h=T}}]);
diff --git a/docs__js-logs__BFS.md.07a441c4.chunk.css b/docs__js-logs__BFS.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__js-logs__BFS.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__js-logs__BFS.md.1516c54f.async.js b/docs__js-logs__BFS.md.1516c54f.async.js
new file mode 100644
index 0000000..42183ed
--- /dev/null
+++ b/docs__js-logs__BFS.md.1516c54f.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[790],{648:function(x,i,s){s.r(i);var c=s(16878),d=s(84475),o=s(646),n=s(25778),a=s(1778),m=s(6749),f=s(48739),_=s(38039),u=s(5899),t=s(93236),e=s(62086);function h(){var j=(0,u.eL)(),l=j.texts;return(0,e.jsx)(u.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"bfs",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#bfs",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"BFS"]}),(0,e.jsx)("p",{children:l[0].value}),(0,e.jsx)("p",{children:l[1].value}),(0,e.jsxs)("h2",{id:"111\u4E8C\u53C9\u6811\u7684\u6700\u5C0F\u6DF1\u5EA6",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#111\u4E8C\u53C9\u6811\u7684\u6700\u5C0F\u6DF1\u5EA6",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/minimum-depth-of-binary-tree/",children:l[2].value})," ",(0,e.jsx)(d.Z,{type:"success",children:l[3].value})]}),(0,e.jsxs)("p",{children:[l[4].value,(0,e.jsx)("br",{}),l[5].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[6].value}),(0,e.jsx)("li",{children:l[7].value}),(0,e.jsx)("li",{children:l[8].value})]}),(0,e.jsx)(a.Z,{lang:"js",children:l[9].value}),(0,e.jsx)(a.Z,{lang:"js",children:l[10].value}),(0,e.jsxs)("h2",{id:"752\u6253\u5F00\u8F6C\u76D8\u9501",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#752\u6253\u5F00\u8F6C\u76D8\u9501",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/open-the-lock/",children:l[11].value})," ",(0,e.jsx)(d.Z,{type:"warning",children:l[12].value})]}),(0,e.jsxs)("p",{children:[l[13].value,(0,e.jsx)("br",{}),l[14].value]}),(0,e.jsx)("p",{children:l[15].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[16].value}),(0,e.jsx)("li",{children:l[17].value}),(0,e.jsxs)("li",{children:[l[18].value,(0,e.jsx)("code",{children:l[19].value}),l[20].value,(0,e.jsx)("code",{children:l[21].value}),l[22].value]}),(0,e.jsxs)("li",{children:[l[23].value,(0,e.jsx)("code",{children:l[24].value}),l[25].value,(0,e.jsx)("code",{children:l[26].value})]}),(0,e.jsx)("li",{children:l[27].value}),(0,e.jsxs)("li",{children:[l[28].value,(0,e.jsx)("code",{children:l[29].value}),l[30].value,(0,e.jsx)("code",{children:l[31].value}),l[32].value]})]}),(0,e.jsx)(a.Z,{lang:"js",children:l[33].value}),(0,e.jsxs)("h2",{id:"773\u6ED1\u52A8\u8C1C\u9898",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#773\u6ED1\u52A8\u8C1C\u9898",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/sliding-puzzle/",children:l[34].value})," ",(0,e.jsx)(d.Z,{type:"error",children:l[35].value})]}),(0,e.jsxs)("p",{children:[l[36].value,(0,e.jsx)("br",{}),l[37].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[38].value}),(0,e.jsx)("li",{children:l[39].value}),(0,e.jsxs)("li",{children:[l[40].value,(0,e.jsx)("code",{children:l[41].value})]}),(0,e.jsxs)("li",{children:[l[42].value,(0,e.jsx)("code",{children:l[43].value}),l[44].value,(0,e.jsx)("code",{children:l[45].value})]}),(0,e.jsx)("li",{children:l[46].value}),(0,e.jsxs)("li",{children:[l[47].value,(0,e.jsx)("code",{children:l[48].value})]}),(0,e.jsxs)("li",{children:[l[49].value,(0,e.jsx)("a",{href:"https://leetcode.cn/problems/open-the-lock/",children:l[50].value}),l[51].value]})]}),(0,e.jsx)(a.Z,{lang:"js",children:l[52].value})]})})})}i.default=h},48739:function(x,i,s){var c=s(93236),d=function(n){return(0,c.createElement)(n.children)};i.Z=d},38039:function(x,i,s){s.d(i,{Z:function(){return m}});var c=s(54306),d=s.n(c),o=s(93236),n=s(62086),a=function(_){var u,t,e,h=(_==null||(u=_.children)===null||u===void 0?void 0:u.filter(function(r){return r!=`
+ `}))||[],j=(0,o.useState)(0),l=d()(j,2),E=l[0],C=l[1],b=function(v){C(v)};return(0,n.jsxs)("div",{className:"tab-container",children:[(0,n.jsx)("ul",{className:"tab-list",children:h.map(function(r,v){return(0,n.jsx)("li",{className:E===v?"tab-item active":"tab-item",onClick:function(){return b(v)},children:r.props.label},r.props.label)})}),(0,n.jsx)("div",{className:"tab-content",children:(t=h[E])===null||t===void 0||(e=t.props)===null||e===void 0?void 0:e.children})]})},m=a}}]);
diff --git a/docs__js-logs__array.md.07a441c4.chunk.css b/docs__js-logs__array.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__js-logs__array.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__js-logs__array.md.0a762dc6.async.js b/docs__js-logs__array.md.0a762dc6.async.js
new file mode 100644
index 0000000..7936405
--- /dev/null
+++ b/docs__js-logs__array.md.0a762dc6.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[842],{73062:function(p,r,u){u.r(r);var h=u(16878),i=u(84475),o=u(646),a=u(25778),s=u(1778),m=u(6749),x=u(48739),d=u(38039),n=u(5899),j=u(93236),e=u(62086);function v(){var E=(0,n.eL)(),l=E.texts;return(0,e.jsx)(n.dY,{children:(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u6570\u7EC4",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6570\u7EC4",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/tag/array/problemset/",children:l[0].value})]}),(0,e.jsx)("p",{children:l[1].value}),(0,e.jsxs)("p",{children:[l[2].value,(0,e.jsx)("strong",{children:l[3].value}),l[4].value]}),(0,e.jsxs)("h2",{id:"\u53CC\u6307\u9488",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u53CC\u6307\u9488",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u53CC\u6307\u9488"]}),(0,e.jsxs)("h3",{id:"5\u6700\u957F\u56DE\u6587\u5B50\u4E32",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#5\u6700\u957F\u56DE\u6587\u5B50\u4E32",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/longest-palindromic-substring/",children:l[5].value})," ",(0,e.jsx)(i.Z,{type:"warning",children:l[6].value})]}),(0,e.jsxs)("p",{children:[l[7].value,(0,e.jsx)("br",{}),l[8].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[9].value}),(0,e.jsx)("li",{children:l[10].value}),(0,e.jsx)("li",{children:l[11].value}),(0,e.jsx)("li",{children:l[12].value}),(0,e.jsx)("li",{children:l[13].value}),(0,e.jsx)("li",{children:l[14].value}),(0,e.jsx)("li",{children:l[15].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[16].value}),(0,e.jsxs)("h3",{id:"26\u5220\u9664\u6709\u5E8F\u6570\u7EC4\u4E2D\u7684\u91CD\u590D\u9879",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#26\u5220\u9664\u6709\u5E8F\u6570\u7EC4\u4E2D\u7684\u91CD\u590D\u9879",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/remove-duplicates-from-sorted-array/",children:l[17].value})," ",(0,e.jsx)(i.Z,{type:"success",children:l[18].value})]}),(0,e.jsxs)("p",{children:[l[19].value,(0,e.jsx)("br",{}),l[20].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[21].value}),(0,e.jsx)("li",{children:l[22].value}),(0,e.jsx)("li",{children:l[23].value}),(0,e.jsx)("li",{children:l[24].value}),(0,e.jsx)("li",{children:l[25].value}),(0,e.jsx)("li",{children:l[26].value})]})]}),(0,e.jsxs)(d.Z,{children:[l[27].value,(0,e.jsxs)(x.Z,{value:"javascript",label:"javascript",children:[(0,e.jsx)(s.Z,{lang:"js",children:l[28].value}),l[29].value]}),l[30].value,(0,e.jsxs)(x.Z,{value:"java",label:"java",children:[(0,e.jsx)(s.Z,{lang:"java",children:l[31].value}),l[32].value]}),l[33].value,(0,e.jsxs)(x.Z,{value:"rust",label:"rust",children:[(0,e.jsx)(s.Z,{lang:"rust",children:l[34].value}),l[35].value]})]}),(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h3",{id:"27\u79FB\u9664\u5143\u7D20",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#27\u79FB\u9664\u5143\u7D20",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/remove-element/",children:l[36].value})," ",(0,e.jsx)(i.Z,{type:"success",children:l[37].value})]}),(0,e.jsxs)("p",{children:[l[38].value,(0,e.jsx)("br",{}),l[39].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[40].value}),(0,e.jsx)("li",{children:l[41].value}),(0,e.jsx)("li",{children:l[42].value}),(0,e.jsx)("li",{children:l[43].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[44].value}),(0,e.jsxs)("h3",{id:"83\u5220\u9664\u6392\u5E8F\u94FE\u8868\u4E2D\u7684\u91CD\u590D\u5143\u7D20",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#83\u5220\u9664\u6392\u5E8F\u94FE\u8868\u4E2D\u7684\u91CD\u590D\u5143\u7D20",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/remove-duplicates-from-sorted-list/",children:l[45].value})," ",(0,e.jsx)(i.Z,{type:"success",children:l[46].value})]}),(0,e.jsxs)("p",{children:[l[47].value,(0,e.jsx)("br",{}),l[48].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[49].value}),(0,e.jsxs)("li",{children:[l[50].value,(0,e.jsx)(n.rU,{to:"#26%E5%88%A0%E9%99%A4%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E9%87%8D%E5%A4%8D%E9%A1%B9",children:l[51].value}),l[52].value]}),(0,e.jsx)("li",{children:l[53].value}),(0,e.jsx)("li",{children:l[54].value}),(0,e.jsx)("li",{children:l[55].value}),(0,e.jsx)("li",{children:l[56].value}),(0,e.jsx)("li",{children:l[57].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[58].value}),(0,e.jsxs)("h3",{id:"167\u4E24\u6570\u4E4B\u548C-ii-\u8F93\u5165\u6709\u5E8F\u6570\u7EC4",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#167\u4E24\u6570\u4E4B\u548C-ii-\u8F93\u5165\u6709\u5E8F\u6570\u7EC4",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/",children:l[59].value})," ",(0,e.jsx)(i.Z,{type:"warning",children:l[60].value})]}),(0,e.jsxs)("p",{children:[l[61].value,(0,e.jsx)("br",{}),l[62].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[63].value}),(0,e.jsx)("li",{children:l[64].value}),(0,e.jsx)("li",{children:l[65].value}),(0,e.jsx)("li",{children:l[66].value}),(0,e.jsx)("li",{children:l[67].value}),(0,e.jsx)("li",{children:l[68].value}),(0,e.jsxs)("li",{children:[l[69].value,(0,e.jsx)("strong",{children:l[70].value}),l[71].value]})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[72].value}),(0,e.jsxs)("h3",{id:"283\u79FB\u52A8\u96F6",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#283\u79FB\u52A8\u96F6",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/move-zeroes/",children:l[73].value})," ",(0,e.jsx)(i.Z,{type:"success",children:l[74].value})]}),(0,e.jsxs)("p",{children:[l[75].value,(0,e.jsx)("br",{}),l[76].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[77].value}),(0,e.jsx)("li",{children:l[78].value}),(0,e.jsx)("li",{children:l[79].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[80].value}),(0,e.jsxs)("h3",{id:"344\u53CD\u8F6C\u5B57\u7B26\u4E32",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#344\u53CD\u8F6C\u5B57\u7B26\u4E32",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/reverse-string/",children:l[81].value})," ",(0,e.jsx)(i.Z,{type:"success",children:l[82].value})]}),(0,e.jsxs)("p",{children:[l[83].value,(0,e.jsx)("br",{}),l[84].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[85].value}),(0,e.jsx)("li",{children:l[86].value}),(0,e.jsx)("li",{children:l[87].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[88].value}),(0,e.jsxs)("h3",{id:"557\u53CD\u8F6C\u5B57\u7B26\u4E32\u4E2D\u7684\u5355\u8BCD-iii",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#557\u53CD\u8F6C\u5B57\u7B26\u4E32\u4E2D\u7684\u5355\u8BCD-iii",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/reverse-words-in-a-string-iii/",children:l[89].value})," ",(0,e.jsx)(i.Z,{type:"success",children:l[90].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[91].value}),(0,e.jsx)("li",{children:l[92].value}),(0,e.jsxs)("li",{children:[l[93].value,(0,e.jsx)(n.rU,{to:"#344%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2",children:l[94].value}),l[95].value]}),(0,e.jsx)("li",{children:l[96].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[97].value}),(0,e.jsxs)("h2",{id:"\u524D\u7F00\u548C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u524D\u7F00\u548C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u524D\u7F00\u548C"]}),(0,e.jsxs)("h3",{id:"303\u533A\u57DF\u548C\u68C0\u7D22-\u6570\u7EC4\u4E0D\u53EF\u53D8",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#303\u533A\u57DF\u548C\u68C0\u7D22-\u6570\u7EC4\u4E0D\u53EF\u53D8",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/range-sum-query-immutable/",children:l[98].value})," ",(0,e.jsx)(i.Z,{type:"success",children:l[99].value})]}),(0,e.jsxs)("div",{align:"center",children:[l[100].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202211221048704.png",style:{maxWidth:"100%"}}),l[101].value,(0,e.jsx)("div",{align:"center",children:l[102].value})]}),(0,e.jsxs)("p",{children:[l[103].value,(0,e.jsx)("br",{}),l[104].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[105].value}),(0,e.jsx)("li",{children:l[106].value}),(0,e.jsx)("li",{children:l[107].value}),(0,e.jsx)("li",{children:l[108].value}),(0,e.jsx)("li",{children:l[109].value}),(0,e.jsx)("li",{children:l[110].value}),(0,e.jsx)("li",{children:l[111].value}),(0,e.jsx)("li",{children:l[112].value}),(0,e.jsx)("li",{children:l[113].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[114].value}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[115].value})}),(0,e.jsx)(s.Z,{lang:"js",children:l[116].value}),(0,e.jsxs)("h3",{id:"304\u4E8C\u7EF4\u533A\u57DF\u548C\u68C0\u7D22-\u77E9\u9635\u4E0D\u53EF\u53D8",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#304\u4E8C\u7EF4\u533A\u57DF\u548C\u68C0\u7D22-\u77E9\u9635\u4E0D\u53EF\u53D8",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/range-sum-query-2d-immutable/",children:l[117].value})," ",(0,e.jsx)(i.Z,{type:"warning",children:l[118].value})]}),(0,e.jsxs)("p",{children:[l[119].value,(0,e.jsx)("br",{}),l[120].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[121].value}),(0,e.jsx)("li",{children:l[122].value}),(0,e.jsx)("li",{children:l[123].value})]}),(0,e.jsxs)("div",{align:"center",children:[l[124].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202211221049678.png",style:{maxWidth:"100%"}}),l[125].value,(0,e.jsx)("div",{align:"center",children:l[126].value})]}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[127].value})}),(0,e.jsx)(s.Z,{lang:"js",children:l[128].value}),(0,e.jsxs)("h3",{id:"1314\u77E9\u9635\u533A\u57DF\u548C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1314\u77E9\u9635\u533A\u57DF\u548C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/matrix-block-sum/",children:l[129].value})," ",(0,e.jsx)(i.Z,{type:"warning",children:l[130].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[131].value}),(0,e.jsx)("li",{children:l[132].value}),(0,e.jsxs)("li",{children:[l[133].value,(0,e.jsx)(n.rU,{to:"#304%E4%BA%8C%E7%BB%B4%E5%8C%BA%E5%9F%9F%E5%92%8C%E6%A3%80%E7%B4%A2-%E7%9F%A9%E9%98%B5%E4%B8%8D%E5%8F%AF%E5%8F%98",children:l[134].value}),l[135].value]}),(0,e.jsx)("li",{children:l[136].value})]}),(0,e.jsxs)("div",{align:"center",children:[l[137].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202211192009568.png",style:{maxWidth:"100%"}}),l[138].value,(0,e.jsx)("div",{align:"center",children:l[139].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[140].value}),(0,e.jsxs)("h3",{id:"238\u9664\u81EA\u8EAB\u4EE5\u5916\u6570\u7EC4\u7684\u4E58\u79EF",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#238\u9664\u81EA\u8EAB\u4EE5\u5916\u6570\u7EC4\u7684\u4E58\u79EF",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/product-of-array-except-self/",children:l[141].value})," ",(0,e.jsx)(i.Z,{type:"warning",children:l[142].value})]}),(0,e.jsxs)("p",{children:[l[143].value,(0,e.jsx)("br",{}),l[144].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[145].value}),(0,e.jsx)("li",{children:l[146].value}),(0,e.jsxs)("li",{children:[l[147].value,(0,e.jsx)("code",{children:l[148].value})]}),(0,e.jsxs)("li",{children:[l[149].value,(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[l[150].value,(0,e.jsx)("code",{children:l[151].value})]})})]}),(0,e.jsxs)("li",{children:[l[152].value,(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[l[153].value,(0,e.jsx)("code",{children:l[154].value})]})})]}),(0,e.jsx)("li",{children:l[155].value}),(0,e.jsxs)("li",{children:[l[156].value,(0,e.jsx)(n.rU,{to:"/js-logs/sword-point-offer#%E5%89%91%E6%8C%87-offer-66-%E6%9E%84%E5%BB%BA%E4%B9%98%E7%A7%AF%E6%95%B0%E7%BB%84",children:l[157].value}),l[158].value]})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[159].value}),(0,e.jsxs)("h2",{id:"\u5DEE\u5206\u6570\u7EC4",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5DEE\u5206\u6570\u7EC4",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u5DEE\u5206\u6570\u7EC4"]}),(0,e.jsxs)("h3",{id:"1109\u822A\u73ED\u9884\u8BA2\u7EDF\u8BA1",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1109\u822A\u73ED\u9884\u8BA2\u7EDF\u8BA1",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/corporate-flight-bookings/",children:l[160].value})," ",(0,e.jsx)(i.Z,{type:"warning",children:l[161].value})]}),(0,e.jsxs)("p",{children:[l[162].value,(0,e.jsx)("br",{}),l[163].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[164].value}),(0,e.jsx)("li",{children:l[165].value}),(0,e.jsx)("li",{children:l[166].value}),(0,e.jsx)("li",{children:l[167].value}),(0,e.jsx)("li",{children:l[168].value}),(0,e.jsx)("li",{children:(0,e.jsx)("ol",{children:(0,e.jsx)("li",{children:l[169].value})})}),(0,e.jsx)("li",{children:(0,e.jsx)("ol",{start:"2",children:(0,e.jsx)("li",{children:l[170].value})})}),(0,e.jsx)("li",{children:(0,e.jsx)("ol",{start:"3",children:(0,e.jsx)("li",{children:l[171].value})})}),(0,e.jsx)("li",{children:l[172].value}),(0,e.jsx)("li",{children:l[173].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[174].value}),(0,e.jsxs)("h3",{id:"1094\u62FC\u8F66",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1094\u62FC\u8F66",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/car-pooling/",children:l[175].value})," ",(0,e.jsx)(i.Z,{type:"warning",children:l[176].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[177].value}),(0,e.jsxs)("h2",{id:"\u4E8C\u4F4D\u6570\u7EC4\u7684\u82B1\u5F0F\u904D\u5386\u6280\u5DE7",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E8C\u4F4D\u6570\u7EC4\u7684\u82B1\u5F0F\u904D\u5386\u6280\u5DE7",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E8C\u4F4D\u6570\u7EC4\u7684\u82B1\u5F0F\u904D\u5386\u6280\u5DE7"]}),(0,e.jsxs)("h3",{id:"48\u65CB\u8F6C\u56FE\u50CF",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#48\u65CB\u8F6C\u56FE\u50CF",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/rotate-image/",children:l[178].value})," ",(0,e.jsx)(i.Z,{type:"warning",children:l[179].value})]}),(0,e.jsxs)("p",{children:[l[180].value,(0,e.jsx)("br",{}),l[181].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[182].value}),(0,e.jsx)("li",{children:l[183].value}),(0,e.jsx)("li",{children:l[184].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[185].value}),(0,e.jsxs)("h3",{id:"54\u87BA\u65CB\u77E9\u9635",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#54\u87BA\u65CB\u77E9\u9635",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/spiral-matrix/",children:l[186].value})," ",(0,e.jsx)(i.Z,{type:"warning",children:l[187].value})]}),(0,e.jsxs)("p",{children:[l[188].value,(0,e.jsx)("br",{}),l[189].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[190].value}),(0,e.jsx)("li",{children:l[191].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[192].value}),(0,e.jsxs)("h3",{id:"59\u87BA\u65CB\u77E9\u9635-ii",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#59\u87BA\u65CB\u77E9\u9635-ii",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/spiral-matrix-ii/",children:l[193].value})," ",(0,e.jsx)(i.Z,{type:"warning",children:l[194].value})]}),(0,e.jsxs)("p",{children:[l[195].value,(0,e.jsx)("br",{}),l[196].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[197].value}),(0,e.jsxs)("li",{children:[l[198].value,(0,e.jsx)(n.rU,{to:"/js-logs/array#54%E8%9E%BA%E6%97%8B%E7%9F%A9%E9%98%B5",children:l[199].value}),l[200].value]}),(0,e.jsx)("li",{children:l[201].value}),(0,e.jsx)("li",{children:l[202].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[203].value}),(0,e.jsxs)("h2",{id:"\u5C9B\u5C7F\u95EE\u9898",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5C9B\u5C7F\u95EE\u9898",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u5C9B\u5C7F\u95EE\u9898"]}),(0,e.jsxs)("h3",{id:"200\u5C9B\u5C7F\u6570\u91CF",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#200\u5C9B\u5C7F\u6570\u91CF",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/number-of-islands/",children:l[204].value})," ",(0,e.jsx)(i.Z,{type:"warning",children:l[205].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[206].value}),(0,e.jsx)("li",{children:l[207].value}),(0,e.jsx)("li",{children:l[208].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[209].value}),(0,e.jsxs)("h3",{id:"1254\u7EDF\u8BA1\u5C01\u95ED\u5C9B\u5C7F\u7684\u6570\u76EE",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1254\u7EDF\u8BA1\u5C01\u95ED\u5C9B\u5C7F\u7684\u6570\u76EE",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/number-of-closed-islands/",children:l[210].value})," ",(0,e.jsx)(i.Z,{type:"warning",children:l[211].value})]}),(0,e.jsxs)("p",{children:[l[212].value,(0,e.jsx)("br",{}),l[213].value,(0,e.jsx)("br",{}),l[214].value]}),(0,e.jsx)(s.Z,{lang:"js",children:l[215].value}),(0,e.jsxs)("h3",{id:"1020\u98DE\u5730\u7684\u6570\u91CF",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1020\u98DE\u5730\u7684\u6570\u91CF",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/number-of-enclaves/",children:l[216].value})," ",(0,e.jsx)(i.Z,{type:"warning",children:l[217].value})]}),(0,e.jsxs)("p",{children:[l[218].value,(0,e.jsx)("br",{}),l[219].value,(0,e.jsx)("br",{}),l[220].value]}),(0,e.jsx)(s.Z,{lang:"js",children:l[221].value}),(0,e.jsxs)("h3",{id:"695\u5C9B\u5C7F\u7684\u6700\u5927\u9762\u79EF",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#695\u5C9B\u5C7F\u7684\u6700\u5927\u9762\u79EF",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/max-area-of-island/",children:l[222].value})," ",(0,e.jsx)(i.Z,{type:"warning",children:l[223].value})]}),(0,e.jsxs)("p",{children:[l[224].value,(0,e.jsx)("br",{}),l[225].value]}),(0,e.jsx)(s.Z,{lang:"js",children:l[226].value}),(0,e.jsxs)("h3",{id:"1905\u7EDF\u8BA1\u5B50\u5C9B\u5C7F",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1905\u7EDF\u8BA1\u5B50\u5C9B\u5C7F",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/count-sub-islands/",children:l[227].value})," ",(0,e.jsx)(i.Z,{type:"warning",children:l[228].value})]}),(0,e.jsxs)("p",{children:[l[229].value,(0,e.jsx)("br",{}),l[230].value]}),(0,e.jsxs)("p",{children:[l[231].value,(0,e.jsx)("br",{}),l[232].value]}),(0,e.jsx)(s.Z,{lang:"js",children:l[233].value}),(0,e.jsxs)("h3",{id:"694\u4E0D\u540C\u5C9B\u5C7F\u7684\u6570\u91CF",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#694\u4E0D\u540C\u5C9B\u5C7F\u7684\u6570\u91CF",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/number-of-distinct-islands/",children:l[234].value})," ",(0,e.jsx)(i.Z,{type:"warning",children:l[235].value})]}),(0,e.jsxs)("p",{children:[l[236].value,(0,e.jsx)("code",{children:l[237].value})]}),(0,e.jsxs)("div",{align:"center",children:[l[238].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202210271615238.png",style:{maxWidth:"100%"}})]}),(0,e.jsx)("p",{children:l[239].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[240].value}),(0,e.jsx)("li",{children:l[241].value}),(0,e.jsx)("li",{children:l[242].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[243].value}),(0,e.jsxs)("h2",{id:"88\u5408\u5E76\u4E24\u4E2A\u6709\u5E8F\u6570\u7EC4",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#88\u5408\u5E76\u4E24\u4E2A\u6709\u5E8F\u6570\u7EC4",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/merge-sorted-array/",children:l[244].value})," ",(0,e.jsx)(i.Z,{type:"success",children:l[245].value})]}),(0,e.jsx)("p",{children:l[246].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[247].value}),(0,e.jsx)("li",{children:l[248].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[249].value}),(0,e.jsxs)("h2",{id:"189\u8F6E\u8F6C\u6570\u7EC4",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#189\u8F6E\u8F6C\u6570\u7EC4",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/rotate-array/",children:l[250].value})," ",(0,e.jsx)(i.Z,{type:"warning",children:l[251].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[252].value}),(0,e.jsxs)("h2",{id:"54201-\u77E9\u9635",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#54201-\u77E9\u9635",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/01-matrix/",children:l[253].value})," ",(0,e.jsx)(i.Z,{type:"warning",children:l[254].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[255].value}),(0,e.jsx)("li",{children:l[256].value}),(0,e.jsx)("li",{children:l[257].value}),(0,e.jsx)("li",{children:l[258].value}),(0,e.jsx)("li",{children:l[259].value}),(0,e.jsx)("li",{children:l[260].value}),(0,e.jsx)("li",{children:l[261].value}),(0,e.jsx)("li",{children:l[262].value}),(0,e.jsx)("li",{children:l[263].value}),(0,e.jsx)("li",{children:l[264].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[265].value}),(0,e.jsxs)("h2",{id:"994\u8150\u70C2\u7684\u6A58\u5B50",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#994\u8150\u70C2\u7684\u6A58\u5B50",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/rotting-oranges/",children:l[266].value})," ",(0,e.jsx)(i.Z,{type:"warning",children:l[267].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[268].value,(0,e.jsx)(n.rU,{to:"#54201-%E7%9F%A9%E9%98%B5",children:l[269].value}),l[270].value]}),(0,e.jsx)("li",{children:l[271].value}),(0,e.jsx)("li",{children:l[272].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[273].value}),(0,e.jsxs)("h2",{id:"1034\u8FB9\u754C\u7740\u8272",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1034\u8FB9\u754C\u7740\u8272",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/coloring-a-border/",children:l[274].value})," ",(0,e.jsx)(i.Z,{type:"warning",children:l[275].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[276].value}),(0,e.jsxs)("h2",{id:"442\u6570\u7EC4\u4E2D\u91CD\u590D\u7684\u6570\u636E",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#442\u6570\u7EC4\u4E2D\u91CD\u590D\u7684\u6570\u636E",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/find-all-duplicates-in-an-array/",children:l[277].value})," ",(0,e.jsx)(i.Z,{type:"warning",children:l[278].value})]}),(0,e.jsxs)("p",{children:[l[279].value,(0,e.jsx)("br",{}),l[280].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[281].value}),(0,e.jsx)("li",{children:l[282].value}),(0,e.jsx)("li",{children:l[283].value}),(0,e.jsx)("li",{children:l[284].value}),(0,e.jsxs)("li",{children:[l[285].value,(0,e.jsx)(n.rU,{to:"/js-logs/sword-point-offer#%E5%89%91%E6%8C%87-offer-03-%E6%95%B0%E7%BB%84%E4%B8%AD%E9%87%8D%E5%A4%8D%E7%9A%84%E6%95%B0%E5%AD%97",children:l[286].value}),l[287].value]})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[288].value}),(0,e.jsxs)("h2",{id:"240\u641C\u7D22\u4E8C\u7EF4\u77E9\u9635-ii",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#240\u641C\u7D22\u4E8C\u7EF4\u77E9\u9635-ii",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/search-a-2d-matrix-ii/",children:l[289].value})," ",(0,e.jsx)(i.Z,{type:"warning",children:l[290].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[291].value}),(0,e.jsx)("li",{children:l[292].value}),(0,e.jsx)("li",{children:l[293].value}),(0,e.jsx)("li",{children:l[294].value}),(0,e.jsx)("li",{children:l[295].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[296].value}),(0,e.jsxs)("h2",{id:"169\u591A\u6570\u5143\u7D20",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#169\u591A\u6570\u5143\u7D20",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/majority-element/",children:l[297].value})," ",(0,e.jsx)(i.Z,{type:"success",children:l[298].value})]}),(0,e.jsxs)("p",{children:[l[299].value,(0,e.jsx)("br",{}),l[300].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[301].value}),(0,e.jsx)("li",{children:l[302].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[303].value}),(0,e.jsxs)("h2",{id:"448\u627E\u5230\u6240\u6709\u6570\u7EC4\u4E2D\u6D88\u5931\u7684\u6570\u5B57",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#448\u627E\u5230\u6240\u6709\u6570\u7EC4\u4E2D\u6D88\u5931\u7684\u6570\u5B57",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/find-all-numbers-disappeared-in-an-array/",children:l[304].value})," ",(0,e.jsx)(i.Z,{type:"success",children:l[305].value})]}),(0,e.jsx)("p",{children:l[306].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[307].value}),(0,e.jsx)("li",{children:l[308].value}),(0,e.jsx)("li",{children:l[309].value}),(0,e.jsx)("li",{children:l[310].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[311].value}),(0,e.jsxs)("p",{children:[l[312].value,(0,e.jsx)("br",{}),l[313].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[314].value}),(0,e.jsx)("li",{children:l[315].value}),(0,e.jsx)("li",{children:l[316].value}),(0,e.jsx)("li",{children:l[317].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[318].value})]})]})})}r.default=v},48739:function(p,r,u){var h=u(93236),i=function(a){return(0,h.createElement)(a.children)};r.Z=i},38039:function(p,r,u){u.d(r,{Z:function(){return m}});var h=u(54306),i=u.n(h),o=u(93236),a=u(62086),s=function(d){var n,j,e,v=(d==null||(n=d.children)===null||n===void 0?void 0:n.filter(function(c){return c!=`
+ `}))||[],E=(0,o.useState)(0),l=i()(E,2),C=l[0],_=l[1],b=function(t){_(t)};return(0,a.jsxs)("div",{className:"tab-container",children:[(0,a.jsx)("ul",{className:"tab-list",children:v.map(function(c,t){return(0,a.jsx)("li",{className:C===t?"tab-item active":"tab-item",onClick:function(){return b(t)},children:c.props.label},c.props.label)})}),(0,a.jsx)("div",{className:"tab-content",children:(j=v[C])===null||j===void 0||(e=j.props)===null||e===void 0?void 0:e.children})]})},m=s}}]);
diff --git a/docs__js-logs__backtracking.md.0793f691.async.js b/docs__js-logs__backtracking.md.0793f691.async.js
new file mode 100644
index 0000000..b6ab483
--- /dev/null
+++ b/docs__js-logs__backtracking.md.0793f691.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[611],{3616:function(_,a,u){u.r(a);var c=u(16878),l=u(84475),o=u(646),s=u(25778),i=u(1778),m=u(6749),f=u(48739),h=u(38039),d=u(5899),t=u(93236),e=u(62086);function j(){var v=(0,d.eL)(),n=v.texts;return(0,e.jsx)(d.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u56DE\u6EAF\u7B97\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u56DE\u6EAF\u7B97\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u56DE\u6EAF\u7B97\u6CD5"]}),(0,e.jsxs)("h2",{id:"17\u7535\u8BDD\u53F7\u7801\u7684\u5B57\u6BCD\u7EC4\u5408",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#17\u7535\u8BDD\u53F7\u7801\u7684\u5B57\u6BCD\u7EC4\u5408",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/letter-combinations-of-a-phone-number/",children:n[0].value})," ",(0,e.jsx)(l.Z,{type:"warning",children:n[1].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:n[2].value}),(0,e.jsxs)("h2",{id:"39\u7EC4\u5408\u603B\u548C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#39\u7EC4\u5408\u603B\u548C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/combination-sum/",children:n[3].value})," ",(0,e.jsx)(l.Z,{type:"warning",children:n[4].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:n[5].value}),(0,e.jsxs)("h2",{id:"40\u7EC4\u5408\u603B\u548C-ii",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#40\u7EC4\u5408\u603B\u548C-ii",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/combination-sum-ii/",children:n[6].value})," ",(0,e.jsx)(l.Z,{type:"warning",children:n[7].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:n[8].value}),(0,e.jsxs)("h2",{id:"46\u5168\u6392\u5217",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#46\u5168\u6392\u5217",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/permutations/",children:n[9].value})," ",(0,e.jsx)(l.Z,{type:"warning",children:n[10].value})]}),(0,e.jsxs)("p",{children:[n[11].value,(0,e.jsx)("br",{}),n[12].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:n[13].value}),(0,e.jsx)("li",{children:n[14].value}),(0,e.jsx)("li",{children:n[15].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:n[16].value}),(0,e.jsxs)("h2",{id:"47\u5168\u6392\u5217-ii",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#47\u5168\u6392\u5217-ii",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/permutations-ii/",children:n[17].value})," ",(0,e.jsx)(l.Z,{type:"warning",children:n[18].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:n[19].value}),(0,e.jsxs)("h2",{id:"51n-\u7687\u540E",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#51n-\u7687\u540E",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/n-queens/",children:n[20].value})," ",(0,e.jsx)(l.Z,{type:"error",children:n[21].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:n[22].value}),(0,e.jsxs)("h2",{id:"77\u7EC4\u5408",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#77\u7EC4\u5408",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/combinations/",children:n[23].value})," ",(0,e.jsx)(l.Z,{type:"warning",children:n[24].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:n[25].value}),(0,e.jsx)("li",{children:n[26].value}),(0,e.jsx)("li",{children:n[27].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:n[28].value}),(0,e.jsxs)("h2",{id:"78\u5B50\u96C6",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#78\u5B50\u96C6",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/subsets/",children:n[29].value})," ",(0,e.jsx)(l.Z,{type:"warning",children:n[30].value})]}),(0,e.jsxs)("p",{children:[n[31].value,(0,e.jsx)("br",{}),n[32].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:n[33].value}),(0,e.jsx)("li",{children:n[34].value}),(0,e.jsx)("li",{children:n[35].value}),(0,e.jsx)("li",{children:n[36].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:n[37].value}),(0,e.jsxs)("h2",{id:"79\u5355\u8BCD\u641C\u7D22",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#79\u5355\u8BCD\u641C\u7D22",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/word-search/",children:n[38].value})," ",(0,e.jsx)(l.Z,{type:"warning",children:n[39].value})]}),(0,e.jsx)("p",{children:(0,e.jsx)("a",{href:"https://leetcode.cn/problems/word-search/solution/shou-hua-tu-jie-79-dan-ci-sou-suo-dfs-si-lu-de-cha/",children:n[40].value})}),(0,e.jsx)(i.Z,{lang:"js",children:n[41].value}),(0,e.jsxs)("h2",{id:"90\u5B50\u96C6-ii",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#90\u5B50\u96C6-ii",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/subsets-ii/",children:n[42].value})," ",(0,e.jsx)(l.Z,{type:"warning",children:n[43].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:n[44].value}),(0,e.jsx)("li",{children:n[45].value}),(0,e.jsx)("li",{children:n[46].value}),(0,e.jsx)("li",{children:n[47].value}),(0,e.jsx)("li",{children:n[48].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:n[49].value}),(0,e.jsxs)("h2",{id:"216\u7EC4\u5408\u603B\u548C-iii",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#216\u7EC4\u5408\u603B\u548C-iii",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/combination-sum-iii/",children:n[50].value})," ",(0,e.jsx)(l.Z,{type:"warning",children:n[51].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:n[52].value}),(0,e.jsxs)("h2",{id:"491\u9012\u589E\u5B50\u5E8F\u5217",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#491\u9012\u589E\u5B50\u5E8F\u5217",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/increasing-subsequences/",children:n[53].value})," ",(0,e.jsx)(l.Z,{type:"warning",children:n[54].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:n[55].value}),(0,e.jsx)("li",{children:n[56].value}),(0,e.jsx)("li",{children:n[57].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:n[58].value}),(0,e.jsxs)("h2",{id:"733\u56FE\u50CF\u6E32\u67D3",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#733\u56FE\u50CF\u6E32\u67D3",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/flood-fill/",children:n[59].value})," ",(0,e.jsx)(l.Z,{type:"success",children:n[60].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:n[61].value}),(0,e.jsxs)("h2",{id:"784\u5B57\u6BCD\u5927\u5C0F\u5199\u5168\u6392\u5217",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#784\u5B57\u6BCD\u5927\u5C0F\u5199\u5168\u6392\u5217",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/letter-case-permutation/",children:n[62].value})," ",(0,e.jsx)(l.Z,{type:"warning",children:n[63].value})]}),(0,e.jsx)("p",{children:n[64].value}),(0,e.jsxs)("div",{align:"center",children:[n[65].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202211161127762.png",style:{maxWidth:"100%"}}),n[66].value,(0,e.jsx)("div",{align:"center",children:n[67].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:n[68].value}),(0,e.jsx)("p",{children:n[69].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:n[70].value}),(0,e.jsx)("li",{children:n[71].value}),(0,e.jsx)("li",{children:n[72].value}),(0,e.jsx)("li",{children:n[73].value}),(0,e.jsx)("li",{children:n[74].value}),(0,e.jsx)("li",{children:n[75].value}),(0,e.jsx)("li",{children:n[76].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:n[77].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-38-\u5B57\u7B26\u4E32\u7684\u6392\u5217",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-38-\u5B57\u7B26\u4E32\u7684\u6392\u5217",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/zi-fu-chuan-de-pai-lie-lcof/",children:n[78].value})," ",(0,e.jsx)(l.Z,{type:"warning",children:n[79].value})]}),(0,e.jsx)("p",{children:n[80].value}),(0,e.jsx)(i.Z,{lang:"js",children:n[81].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-ii-079-\u6240\u6709\u5B50\u96C6",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-ii-079-\u6240\u6709\u5B50\u96C6",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/TVdhkn/",children:n[82].value})," ",(0,e.jsx)(l.Z,{type:"warning",children:n[83].value})]}),(0,e.jsx)("p",{children:(0,e.jsx)("a",{href:"https://leetcode-cn.com/problems/subsets/",children:n[84].value})}),(0,e.jsx)(i.Z,{lang:"js",children:n[85].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-ii-080-\u542B\u6709-k-\u4E2A\u5143\u7D20\u7684\u7EC4\u5408",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-ii-080-\u542B\u6709-k-\u4E2A\u5143\u7D20\u7684\u7EC4\u5408",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/uUsW3B/",children:n[86].value})," ",(0,e.jsx)(l.Z,{type:"warning",children:n[87].value})]}),(0,e.jsx)("p",{children:(0,e.jsx)("a",{href:"https://leetcode-cn.com/problems/combinations/",children:n[88].value})}),(0,e.jsx)(i.Z,{lang:"js",children:n[89].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-ii-081-\u5141\u8BB8\u91CD\u590D\u9009\u62E9\u5143\u7D20\u7684\u7EC4\u5408",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-ii-081-\u5141\u8BB8\u91CD\u590D\u9009\u62E9\u5143\u7D20\u7684\u7EC4\u5408",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/Ygoe9J/",children:n[90].value})," ",(0,e.jsx)(l.Z,{type:"warning",children:n[91].value})]}),(0,e.jsx)("p",{children:(0,e.jsx)("a",{href:"https://leetcode-cn.com/problems/combination-sum/",children:n[92].value})}),(0,e.jsx)(i.Z,{lang:"js",children:n[93].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-ii-082-\u542B\u6709\u91CD\u590D\u5143\u7D20\u96C6\u5408\u7684\u7EC4\u5408",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-ii-082-\u542B\u6709\u91CD\u590D\u5143\u7D20\u96C6\u5408\u7684\u7EC4\u5408",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/4sjJUc/",children:n[94].value})," ",(0,e.jsx)(l.Z,{type:"warning",children:n[95].value})]}),(0,e.jsx)("p",{children:(0,e.jsx)("a",{href:"https://leetcode-cn.com/problems/combination-sum-ii/",children:n[96].value})}),(0,e.jsx)(i.Z,{lang:"js",children:n[97].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-ii-083-\u6CA1\u6709\u91CD\u590D\u5143\u7D20\u96C6\u5408\u7684\u5168\u6392\u5217",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-ii-083-\u6CA1\u6709\u91CD\u590D\u5143\u7D20\u96C6\u5408\u7684\u5168\u6392\u5217",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/VvJkup/",children:n[98].value})," ",(0,e.jsx)(l.Z,{type:"warning",children:n[99].value})]}),(0,e.jsx)("p",{children:(0,e.jsx)("a",{href:"https://leetcode-cn.com/problems/permutations/",children:n[100].value})}),(0,e.jsx)(i.Z,{lang:"js",children:n[101].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-ii-084-\u542B\u6709\u91CD\u590D\u5143\u7D20\u96C6\u5408\u7684\u5168\u6392\u5217",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-ii-084-\u542B\u6709\u91CD\u590D\u5143\u7D20\u96C6\u5408\u7684\u5168\u6392\u5217",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/7p8L0Z/",children:n[102].value})," ",(0,e.jsx)(l.Z,{type:"warning",children:n[103].value})]}),(0,e.jsx)("p",{children:(0,e.jsx)("a",{href:"https://leetcode-cn.com/problems/permutations-ii/",children:n[104].value})}),(0,e.jsx)(i.Z,{lang:"js",children:n[105].value})]})})})}a.default=j},48739:function(_,a,u){var c=u(93236),l=function(s){return(0,c.createElement)(s.children)};a.Z=l},38039:function(_,a,u){u.d(a,{Z:function(){return m}});var c=u(54306),l=u.n(c),o=u(93236),s=u(62086),i=function(h){var d,t,e,j=(h==null||(d=h.children)===null||d===void 0?void 0:d.filter(function(r){return r!=`
+ `}))||[],v=(0,o.useState)(0),n=l()(v,2),p=n[0],b=n[1],C=function(x){b(x)};return(0,s.jsxs)("div",{className:"tab-container",children:[(0,s.jsx)("ul",{className:"tab-list",children:j.map(function(r,x){return(0,s.jsx)("li",{className:p===x?"tab-item active":"tab-item",onClick:function(){return C(x)},children:r.props.label},r.props.label)})}),(0,s.jsx)("div",{className:"tab-content",children:(t=j[p])===null||t===void 0||(e=t.props)===null||e===void 0?void 0:e.children})]})},m=i}}]);
diff --git a/docs__js-logs__backtracking.md.07a441c4.chunk.css b/docs__js-logs__backtracking.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__js-logs__backtracking.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__js-logs__binary-search.md.07a441c4.chunk.css b/docs__js-logs__binary-search.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__js-logs__binary-search.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__js-logs__binary-search.md.4d09ec0e.async.js b/docs__js-logs__binary-search.md.4d09ec0e.async.js
new file mode 100644
index 0000000..f4b229e
--- /dev/null
+++ b/docs__js-logs__binary-search.md.4d09ec0e.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[161],{71144:function(j,l,s){s.r(l);var r=s(16878),n=s(84475),h=s(646),d=s(25778),i=s(1778),x=s(6749),C=s(48739),_=s(38039),a=s(5899),c=s(93236),e=s(62086);function o(){var v=(0,a.eL)(),u=v.texts;return(0,e.jsx)(a.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u4E8C\u5206\u641C\u7D22",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E8C\u5206\u641C\u7D22",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E8C\u5206\u641C\u7D22"]}),(0,e.jsxs)("h2",{id:"704\u4E8C\u5206\u67E5\u627E",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#704\u4E8C\u5206\u67E5\u627E",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/binary-search/",children:u[0].value})," ",(0,e.jsx)(n.Z,{type:"success",children:u[1].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:u[2].value}),(0,e.jsxs)("h2",{id:"35\u641C\u7D22\u63D2\u5165\u4F4D\u7F6E",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#35\u641C\u7D22\u63D2\u5165\u4F4D\u7F6E",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/search-insert-position/",children:u[3].value})," ",(0,e.jsx)(n.Z,{type:"success",children:u[4].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:u[5].value}),(0,e.jsxs)("h2",{id:"34\u5728\u6392\u5E8F\u6570\u7EC4\u4E2D\u67E5\u627E\u5143\u7D20\u7684\u7B2C\u4E00\u4E2A\u548C\u6700\u540E\u4E00\u4E2A\u4F4D\u7F6E",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#34\u5728\u6392\u5E8F\u6570\u7EC4\u4E2D\u67E5\u627E\u5143\u7D20\u7684\u7B2C\u4E00\u4E2A\u548C\u6700\u540E\u4E00\u4E2A\u4F4D\u7F6E",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/",children:u[6].value})," ",(0,e.jsx)(n.Z,{type:"warning",children:u[7].value})]}),(0,e.jsxs)("p",{children:[u[8].value,(0,e.jsx)(a.rU,{to:"/js-logs/sword-point-offer#%E5%89%91%E6%8C%87-offer-53---i-%E5%9C%A8%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E6%9F%A5%E6%89%BE%E6%95%B0%E5%AD%97-i",children:u[9].value}),u[10].value]}),(0,e.jsx)(i.Z,{lang:"js",children:u[11].value}),(0,e.jsxs)("h2",{id:"154\u5BFB\u627E\u65CB\u8F6C\u6392\u5E8F\u6570\u7EC4\u4E2D\u7684\u6700\u5C0F\u503C-ii",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#154\u5BFB\u627E\u65CB\u8F6C\u6392\u5E8F\u6570\u7EC4\u4E2D\u7684\u6700\u5C0F\u503C-ii",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array-ii/",children:u[12].value})," ",(0,e.jsx)(n.Z,{type:"error",children:u[13].value})]}),(0,e.jsx)("p",{children:u[14].value}),(0,e.jsx)(i.Z,{lang:"js",children:u[15].value}),(0,e.jsxs)("h2",{id:"278\u7B2C\u4E00\u4E2A\u9519\u8BEF\u7684\u7248\u672C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#278\u7B2C\u4E00\u4E2A\u9519\u8BEF\u7684\u7248\u672C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/first-bad-version/",children:u[16].value})," ",(0,e.jsx)(n.Z,{type:"success",children:u[17].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:u[18].value})]})})})}l.default=o},48739:function(j,l,s){var r=s(93236),n=function(d){return(0,r.createElement)(d.children)};l.Z=n},38039:function(j,l,s){s.d(l,{Z:function(){return x}});var r=s(54306),n=s.n(r),h=s(93236),d=s(62086),i=function(_){var a,c,e,o=(_==null||(a=_.children)===null||a===void 0?void 0:a.filter(function(t){return t!=`
+ `}))||[],v=(0,h.useState)(0),u=n()(v,2),m=u[0],D=u[1],f=function(E){D(E)};return(0,d.jsxs)("div",{className:"tab-container",children:[(0,d.jsx)("ul",{className:"tab-list",children:o.map(function(t,E){return(0,d.jsx)("li",{className:m===E?"tab-item active":"tab-item",onClick:function(){return f(E)},children:t.props.label},t.props.label)})}),(0,d.jsx)("div",{className:"tab-content",children:(c=o[m])===null||c===void 0||(e=c.props)===null||e===void 0?void 0:e.children})]})},x=i}}]);
diff --git a/docs__js-logs__binary-tree.md.07a441c4.chunk.css b/docs__js-logs__binary-tree.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__js-logs__binary-tree.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__js-logs__binary-tree.md.259211ff.async.js b/docs__js-logs__binary-tree.md.259211ff.async.js
new file mode 100644
index 0000000..f879c81
--- /dev/null
+++ b/docs__js-logs__binary-tree.md.259211ff.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[377],{73653:function(C,r,i){i.r(r);var c=i(16878),s=i(84475),v=i(646),n=i(25778),l=i(1778),E=i(6749),b=i(48739),h=i(38039),a=i(5899),j=i(93236),e=i(62086);function x(){var o=(0,a.eL)(),u=o.texts;return(0,e.jsx)(a.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u4E8C\u53C9\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4E8C\u53C9\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4E8C\u53C9\u6811"]}),(0,e.jsxs)("h2",{id:"95\u4E0D\u540C\u7684\u4E8C\u53C9\u641C\u7D22\u6811-ii",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#95\u4E0D\u540C\u7684\u4E8C\u53C9\u641C\u7D22\u6811-ii",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/unique-binary-search-trees-ii/",children:u[0].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[1].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[2].value}),(0,e.jsx)("li",{children:u[3].value}),(0,e.jsx)("li",{children:u[4].value}),(0,e.jsx)("li",{children:u[5].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[6].value}),(0,e.jsxs)("h2",{id:"96\u4E0D\u540C\u7684\u4E8C\u53C9\u641C\u7D22\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#96\u4E0D\u540C\u7684\u4E8C\u53C9\u641C\u7D22\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/unique-binary-search-trees/",children:u[7].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[8].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[9].value}),(0,e.jsx)("li",{children:u[10].value}),(0,e.jsx)("li",{children:u[11].value}),(0,e.jsx)("li",{children:u[12].value}),(0,e.jsx)("li",{children:u[13].value}),(0,e.jsx)("li",{children:u[14].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[15].value}),(0,e.jsxs)("h2",{id:"98\u9A8C\u8BC1\u4E8C\u53C9\u641C\u7D22\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#98\u9A8C\u8BC1\u4E8C\u53C9\u641C\u7D22\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/validate-binary-search-tree/",children:u[16].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[17].value})]}),(0,e.jsxs)("p",{children:[u[18].value,(0,e.jsx)("br",{}),u[19].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[20].value}),(0,e.jsx)("li",{children:u[21].value}),(0,e.jsx)("li",{children:u[22].value}),(0,e.jsx)("li",{children:u[23].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[24].value}),(0,e.jsxs)("h2",{id:"100-\u76F8\u540C\u7684\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#100-\u76F8\u540C\u7684\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/same-tree/",children:u[25].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[26].value})]}),(0,e.jsxs)("p",{children:[u[27].value,(0,e.jsx)("br",{}),u[28].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[29].value}),(0,e.jsx)("li",{children:u[30].value}),(0,e.jsx)("li",{children:u[31].value}),(0,e.jsx)("li",{children:u[32].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[33].value}),(0,e.jsxs)("h2",{id:"101-\u5BF9\u79F0\u4E8C\u53C9\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#101-\u5BF9\u79F0\u4E8C\u53C9\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/symmetric-tree/",children:u[34].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[35].value})]}),(0,e.jsxs)("p",{children:[u[36].value,(0,e.jsx)("br",{}),u[37].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[38].value}),(0,e.jsx)("li",{children:u[39].value}),(0,e.jsx)("li",{children:u[40].value}),(0,e.jsx)("li",{children:u[41].value}),(0,e.jsx)("li",{children:u[42].value}),(0,e.jsx)("li",{children:u[43].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[44].value}),(0,e.jsxs)("h2",{id:"102\u4E8C\u53C9\u6811\u7684\u5C42\u5E8F\u904D\u5386",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#102\u4E8C\u53C9\u6811\u7684\u5C42\u5E8F\u904D\u5386",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/binary-tree-level-order-traversal/",children:u[45].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[46].value})]}),(0,e.jsxs)("p",{children:[u[47].value,(0,e.jsx)("br",{}),u[48].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[49].value}),(0,e.jsx)("li",{children:u[50].value}),(0,e.jsx)("li",{children:u[51].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[52].value}),(0,e.jsxs)("h2",{id:"103\u4E8C\u53C9\u6811\u7684\u952F\u9F7F\u5F62\u5C42\u5E8F\u904D\u5386",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#103\u4E8C\u53C9\u6811\u7684\u952F\u9F7F\u5F62\u5C42\u5E8F\u904D\u5386",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/binary-tree-zigzag-level-order-traversal/",children:u[53].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[54].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[55].value}),(0,e.jsx)("li",{children:u[56].value}),(0,e.jsx)("li",{children:u[57].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[58].value}),(0,e.jsxs)("h2",{id:"104\u4E8C\u53C9\u6811\u7684\u6700\u5927\u6DF1\u5EA6",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#104\u4E8C\u53C9\u6811\u7684\u6700\u5927\u6DF1\u5EA6",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/maximum-depth-of-binary-tree/",children:u[59].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[60].value})]}),(0,e.jsxs)("p",{children:[u[61].value,(0,e.jsx)("br",{}),u[62].value,(0,e.jsx)("br",{}),u[63].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[64].value}),(0,e.jsx)("li",{children:u[65].value}),(0,e.jsx)("li",{children:u[66].value}),(0,e.jsx)("li",{children:u[67].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[68].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[69].value}),(0,e.jsx)("li",{children:u[70].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[71].value}),(0,e.jsxs)("h2",{id:"105\u4ECE\u524D\u5E8F\u4E0E\u4E2D\u5E8F\u904D\u5386\u5E8F\u5217\u6784\u9020\u4E8C\u53C9\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#105\u4ECE\u524D\u5E8F\u4E0E\u4E2D\u5E8F\u904D\u5386\u5E8F\u5217\u6784\u9020\u4E8C\u53C9\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/",children:u[72].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[73].value})]}),(0,e.jsxs)("p",{children:[u[74].value,(0,e.jsx)("br",{}),u[75].value]}),(0,e.jsx)("p",{children:u[76].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[77].value}),(0,e.jsx)("li",{children:u[78].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[79].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[80].value}),(0,e.jsx)("li",{children:u[81].value}),(0,e.jsx)("li",{children:u[82].value}),(0,e.jsx)("li",{children:u[83].value}),(0,e.jsx)("li",{children:u[84].value}),(0,e.jsx)("li",{children:u[85].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[86].value}),(0,e.jsxs)("h2",{id:"106\u4ECE\u4E2D\u5E8F\u4E0E\u540E\u5E8F\u904D\u5386\u5E8F\u5217\u6784\u9020\u4E8C\u53C9\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#106\u4ECE\u4E2D\u5E8F\u4E0E\u540E\u5E8F\u904D\u5386\u5E8F\u5217\u6784\u9020\u4E8C\u53C9\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/",children:u[87].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[88].value})]}),(0,e.jsxs)("p",{children:[u[89].value,(0,e.jsx)("br",{}),u[90].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[91].value}),(0,e.jsx)("li",{children:u[92].value}),(0,e.jsx)("li",{children:u[93].value}),(0,e.jsx)("li",{children:u[94].value}),(0,e.jsx)("li",{children:u[95].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[96].value}),(0,e.jsxs)("h2",{id:"107\u4E8C\u53C9\u6811\u7684\u5C42\u5E8F\u904D\u5386-ii",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#107\u4E8C\u53C9\u6811\u7684\u5C42\u5E8F\u904D\u5386-ii",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/binary-tree-level-order-traversal-ii/",children:u[97].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[98].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[99].value}),(0,e.jsxs)("h2",{id:"108\u5C06\u6709\u5E8F\u6570\u7EC4\u8F6C\u6362\u4E3A\u4E8C\u53C9\u641C\u7D22\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#108\u5C06\u6709\u5E8F\u6570\u7EC4\u8F6C\u6362\u4E3A\u4E8C\u53C9\u641C\u7D22\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/",children:u[100].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[101].value})]}),(0,e.jsxs)("p",{children:[u[102].value,(0,e.jsx)("br",{}),u[103].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[104].value}),(0,e.jsx)("li",{children:u[105].value}),(0,e.jsx)("li",{children:u[106].value}),(0,e.jsx)("li",{children:u[107].value}),(0,e.jsx)("li",{children:u[108].value}),(0,e.jsx)("li",{children:u[109].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[110].value}),(0,e.jsxs)("h2",{id:"109\u6709\u5E8F\u94FE\u8868\u8F6C\u6362\u4E8C\u53C9\u641C\u7D22\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#109\u6709\u5E8F\u94FE\u8868\u8F6C\u6362\u4E8C\u53C9\u641C\u7D22\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/convert-sorted-list-to-binary-search-tree/",children:u[111].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[112].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[113].value}),(0,e.jsx)("li",{children:u[114].value}),(0,e.jsx)("li",{children:u[115].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[116].value}),(0,e.jsxs)("h2",{id:"110\u5E73\u8861\u4E8C\u53C9\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#110\u5E73\u8861\u4E8C\u53C9\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/balanced-binary-tree/",children:u[117].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[118].value})]}),(0,e.jsxs)("p",{children:[u[119].value,(0,e.jsx)("br",{}),u[120].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[121].value}),(0,e.jsx)("li",{children:u[122].value}),(0,e.jsx)("li",{children:u[123].value}),(0,e.jsx)("li",{children:u[124].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[125].value}),(0,e.jsxs)("h2",{id:"111\u4E8C\u53C9\u6811\u7684\u6700\u5C0F\u6DF1\u5EA6",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#111\u4E8C\u53C9\u6811\u7684\u6700\u5C0F\u6DF1\u5EA6",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/minimum-depth-of-binary-tree/",children:u[126].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[127].value})]}),(0,e.jsxs)("p",{children:[u[128].value,(0,e.jsx)("br",{}),u[129].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[130].value}),(0,e.jsx)("li",{children:u[131].value}),(0,e.jsx)("li",{children:u[132].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[133].value}),(0,e.jsx)(l.Z,{lang:"js",children:u[134].value}),(0,e.jsxs)("h2",{id:"112\u8DEF\u5F84\u603B\u548C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#112\u8DEF\u5F84\u603B\u548C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/path-sum/",children:u[135].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[136].value})]}),(0,e.jsxs)("p",{children:[u[137].value,(0,e.jsx)("br",{}),u[138].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[139].value}),(0,e.jsx)("li",{children:u[140].value}),(0,e.jsx)("li",{children:u[141].value}),(0,e.jsx)("li",{children:u[142].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[143].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[144].value}),(0,e.jsx)("li",{children:u[145].value}),(0,e.jsx)("li",{children:u[146].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[147].value}),(0,e.jsxs)("h2",{id:"113\u8DEF\u5F84\u603B\u548C-ii",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#113\u8DEF\u5F84\u603B\u548C-ii",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/path-sum-ii/",children:u[148].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[149].value})]}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:u[150].value})}),(0,e.jsx)(l.Z,{lang:"js",children:u[151].value}),(0,e.jsxs)("h2",{id:"114\u4E8C\u53C9\u6811\u5C55\u5F00\u4E3A\u94FE\u8868",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#114\u4E8C\u53C9\u6811\u5C55\u5F00\u4E3A\u94FE\u8868",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/flatten-binary-tree-to-linked-list/",children:u[152].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[153].value})]}),(0,e.jsxs)("p",{children:[u[154].value,(0,e.jsx)("br",{}),u[155].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[156].value}),(0,e.jsx)("li",{children:u[157].value}),(0,e.jsx)("li",{children:u[158].value}),(0,e.jsx)("li",{children:u[159].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[160].value}),(0,e.jsxs)("h2",{id:"116\u586B\u5145\u6BCF\u4E2A\u8282\u70B9\u7684\u4E0B\u4E00\u4E2A\u53F3\u4FA7\u8282\u70B9\u6307\u9488",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#116\u586B\u5145\u6BCF\u4E2A\u8282\u70B9\u7684\u4E0B\u4E00\u4E2A\u53F3\u4FA7\u8282\u70B9\u6307\u9488",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/populating-next-right-pointers-in-each-node/",children:u[161].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[162].value})]}),(0,e.jsxs)("p",{children:[u[163].value,(0,e.jsx)("br",{}),u[164].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[165].value}),(0,e.jsx)("li",{children:u[166].value}),(0,e.jsx)("li",{children:u[167].value}),(0,e.jsx)("li",{children:u[168].value}),(0,e.jsx)("li",{children:u[169].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[170].value}),(0,e.jsxs)("h2",{id:"117\u586B\u5145\u6BCF\u4E2A\u8282\u70B9\u7684\u4E0B\u4E00\u4E2A\u53F3\u4FA7\u8282\u70B9\u6307\u9488-ii",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#117\u586B\u5145\u6BCF\u4E2A\u8282\u70B9\u7684\u4E0B\u4E00\u4E2A\u53F3\u4FA7\u8282\u70B9\u6307\u9488-ii",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/populating-next-right-pointers-in-each-node-ii/",children:u[171].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[172].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[173].value}),(0,e.jsx)("li",{children:u[174].value}),(0,e.jsx)("li",{children:u[175].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[176].value}),(0,e.jsxs)("h2",{id:"124\u4E8C\u53C9\u6811\u4E2D\u7684\u6700\u5927\u8DEF\u5F84\u548C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#124\u4E8C\u53C9\u6811\u4E2D\u7684\u6700\u5927\u8DEF\u5F84\u548C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/binary-tree-maximum-path-sum/",children:u[177].value})," ",(0,e.jsx)(s.Z,{type:"error",children:u[178].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[179].value}),(0,e.jsx)("li",{children:u[180].value}),(0,e.jsx)("li",{children:u[181].value}),(0,e.jsx)("li",{children:u[182].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[183].value}),(0,e.jsxs)("h2",{id:"129\u6C42\u6839\u8282\u70B9\u5230\u53F6\u8282\u70B9\u6570\u5B57\u4E4B\u548C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#129\u6C42\u6839\u8282\u70B9\u5230\u53F6\u8282\u70B9\u6570\u5B57\u4E4B\u548C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/sum-root-to-leaf-numbers/",children:u[184].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[185].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[186].value}),(0,e.jsx)("li",{children:u[187].value}),(0,e.jsx)("li",{children:u[188].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[189].value}),(0,e.jsxs)("h2",{id:"144\u4E8C\u53C9\u6811\u7684\u524D\u5E8F\u904D\u5386",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#144\u4E8C\u53C9\u6811\u7684\u524D\u5E8F\u904D\u5386",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/binary-tree-preorder-traversal/",children:u[190].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[191].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[192].value}),(0,e.jsxs)("h2",{id:"145\u4E8C\u53C9\u6811\u7684\u540E\u5E8F\u904D\u5386",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#145\u4E8C\u53C9\u6811\u7684\u540E\u5E8F\u904D\u5386",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/binary-tree-postorder-traversal/",children:u[193].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[194].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[195].value}),(0,e.jsxs)("h2",{id:"173\u4E8C\u53C9\u641C\u7D22\u6811\u8FED\u4EE3\u5668",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#173\u4E8C\u53C9\u641C\u7D22\u6811\u8FED\u4EE3\u5668",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/binary-search-tree-iterator/",children:u[196].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[197].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[198].value}),(0,e.jsx)("li",{children:u[199].value}),(0,e.jsx)("li",{children:u[200].value}),(0,e.jsx)("li",{children:u[201].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[202].value}),(0,e.jsxs)("h2",{id:"199\u4E8C\u53C9\u6811\u7684\u53F3\u89C6\u56FE",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#199\u4E8C\u53C9\u6811\u7684\u53F3\u89C6\u56FE",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/binary-tree-right-side-view/",children:u[203].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[204].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[205].value}),(0,e.jsx)("li",{children:u[206].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[207].value}),(0,e.jsxs)("h2",{id:"222\u5B8C\u5168\u4E8C\u53C9\u6811\u7684\u8282\u70B9\u4E2A\u6570",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#222\u5B8C\u5168\u4E8C\u53C9\u6811\u7684\u8282\u70B9\u4E2A\u6570",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/count-complete-tree-nodes/",children:u[208].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[209].value})]}),(0,e.jsxs)("p",{children:[u[210].value,(0,e.jsx)("br",{}),u[211].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[212].value}),(0,e.jsx)("li",{children:u[213].value}),(0,e.jsx)("li",{children:u[214].value}),(0,e.jsx)("li",{children:u[215].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[216].value}),(0,e.jsxs)("h2",{id:"226\u7FFB\u8F6C\u4E8C\u53C9\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#226\u7FFB\u8F6C\u4E8C\u53C9\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/invert-binary-tree/",children:u[217].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[218].value})]}),(0,e.jsxs)("p",{children:[u[219].value,(0,e.jsx)("br",{}),u[220].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[221].value}),(0,e.jsx)("li",{children:u[222].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[223].value}),(0,e.jsx)("p",{children:u[224].value}),(0,e.jsx)(l.Z,{lang:"js",children:u[225].value}),(0,e.jsxs)("h2",{id:"230\u4E8C\u53C9\u641C\u7D22\u6811\u4E2D\u7B2Ck\u5C0F\u7684\u5143\u7D20",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#230\u4E8C\u53C9\u641C\u7D22\u6811\u4E2D\u7B2Ck\u5C0F\u7684\u5143\u7D20",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/kth-smallest-element-in-a-bst/",children:u[226].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[227].value})]}),(0,e.jsxs)("p",{children:[u[228].value,(0,e.jsx)("br",{}),u[229].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[230].value}),(0,e.jsx)("li",{children:u[231].value}),(0,e.jsx)("li",{children:u[232].value}),(0,e.jsx)("li",{children:u[233].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[234].value}),(0,e.jsxs)("h2",{id:"235-\u4E8C\u53C9\u641C\u7D22\u6811\u7684\u6700\u8FD1\u516C\u5171\u7956\u5148",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#235-\u4E8C\u53C9\u641C\u7D22\u6811\u7684\u6700\u8FD1\u516C\u5171\u7956\u5148",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/",children:u[235].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[236].value})]}),(0,e.jsxs)("p",{children:[u[237].value,(0,e.jsx)("br",{}),u[238].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[239].value}),(0,e.jsxs)("li",{children:[u[240].value,(0,e.jsx)("code",{children:u[241].value}),u[242].value]}),(0,e.jsx)("li",{children:u[243].value}),(0,e.jsx)("li",{children:u[244].value}),(0,e.jsx)("li",{children:u[245].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[246].value}),(0,e.jsxs)("h2",{id:"236-\u4E8C\u53C9\u6811\u7684\u6700\u8FD1\u516C\u5171\u7956\u5148",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#236-\u4E8C\u53C9\u6811\u7684\u6700\u8FD1\u516C\u5171\u7956\u5148",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/",children:u[247].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[248].value})]}),(0,e.jsxs)("p",{children:[u[249].value,(0,e.jsx)("br",{}),u[250].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[251].value}),(0,e.jsxs)("li",{children:[u[252].value,(0,e.jsx)("code",{children:u[253].value})]}),(0,e.jsxs)("li",{children:[u[254].value,(0,e.jsx)("code",{children:u[255].value}),u[256].value]}),(0,e.jsx)("li",{children:u[257].value}),(0,e.jsxs)("li",{children:[u[258].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[259].value}),(0,e.jsxs)("li",{children:[u[260].value,(0,e.jsx)("div",{}),u[261].value]}),(0,e.jsxs)("li",{children:[u[262].value,(0,e.jsx)("div",{}),u[263].value]}),(0,e.jsx)("li",{children:u[264].value})]})]})]}),(0,e.jsxs)("p",{children:[u[265].value,(0,e.jsx)("a",{href:"https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/solution/236-er-cha-shu-de-zui-jin-gong-gong-zu-xian-hou-xu/",children:u[266].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[267].value}),(0,e.jsxs)("h2",{id:"257\u4E8C\u53C9\u6811\u7684\u6240\u6709\u8DEF\u5F84",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#257\u4E8C\u53C9\u6811\u7684\u6240\u6709\u8DEF\u5F84",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/binary-tree-paths/",children:u[268].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[269].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[270].value}),(0,e.jsxs)("h2",{id:"297\u4E8C\u53C9\u6811\u7684\u5E8F\u5217\u5316\u4E0E\u53CD\u5E8F\u5217\u5316",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#297\u4E8C\u53C9\u6811\u7684\u5E8F\u5217\u5316\u4E0E\u53CD\u5E8F\u5217\u5316",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/serialize-and-deserialize-binary-tree/",children:u[271].value})," ",(0,e.jsx)(s.Z,{type:"error",children:u[272].value})]}),(0,e.jsxs)("p",{children:[u[273].value,(0,e.jsx)("br",{}),u[274].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[275].value}),(0,e.jsx)("li",{children:u[276].value}),(0,e.jsx)("li",{children:u[277].value}),(0,e.jsx)("li",{children:u[278].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[279].value}),(0,e.jsxs)("h2",{id:"331\u9A8C\u8BC1\u4E8C\u53C9\u6811\u7684\u524D\u5E8F\u5E8F\u5217\u5316",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#331\u9A8C\u8BC1\u4E8C\u53C9\u6811\u7684\u524D\u5E8F\u5E8F\u5217\u5316",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/verify-preorder-serialization-of-a-binary-tree/",children:u[280].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[281].value})]}),(0,e.jsx)("p",{children:u[282].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[283].value}),(0,e.jsx)("li",{children:u[284].value}),(0,e.jsx)("li",{children:u[285].value}),(0,e.jsx)("li",{children:u[286].value}),(0,e.jsx)("li",{children:u[287].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[288].value}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:u[289].value})}),(0,e.jsx)(l.Z,{lang:"js",children:u[290].value}),(0,e.jsxs)("h2",{id:"404\u5DE6\u53F6\u5B50\u4E4B\u548C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#404\u5DE6\u53F6\u5B50\u4E4B\u548C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/sum-of-left-leaves/",children:u[291].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[292].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[293].value}),(0,e.jsx)("li",{children:u[294].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[295].value}),(0,e.jsxs)("h2",{id:"449\u5E8F\u5217\u5316\u548C\u53CD\u5E8F\u5217\u5316\u4E8C\u53C9\u641C\u7D22\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#449\u5E8F\u5217\u5316\u548C\u53CD\u5E8F\u5217\u5316\u4E8C\u53C9\u641C\u7D22\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/serialize-and-deserialize-bst/",children:u[296].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[297].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[298].value}),(0,e.jsxs)("h2",{id:"450\u5220\u9664\u4E8C\u53C9\u641C\u7D22\u6811\u4E2D\u7684\u8282\u70B9",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#450\u5220\u9664\u4E8C\u53C9\u641C\u7D22\u6811\u4E2D\u7684\u8282\u70B9",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/delete-node-in-a-bst/",children:u[299].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[300].value})]}),(0,e.jsxs)("p",{children:[u[301].value,(0,e.jsx)("br",{}),u[302].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[303].value}),(0,e.jsx)("li",{children:u[304].value}),(0,e.jsx)("li",{children:u[305].value}),(0,e.jsx)("li",{children:(0,e.jsx)("ol",{children:(0,e.jsx)("li",{children:u[306].value})})}),(0,e.jsx)("li",{children:(0,e.jsx)("ol",{start:"2",children:(0,e.jsx)("li",{children:u[307].value})})}),(0,e.jsx)("li",{children:(0,e.jsx)("ol",{start:"3",children:(0,e.jsx)("li",{children:u[308].value})})})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[309].value}),(0,e.jsxs)("h2",{id:"501\u4E8C\u53C9\u641C\u7D22\u6811\u4E2D\u7684\u4F17\u6570",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#501\u4E8C\u53C9\u641C\u7D22\u6811\u4E2D\u7684\u4F17\u6570",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/find-mode-in-binary-search-tree/",children:u[310].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[311].value})]}),(0,e.jsxs)("p",{children:[u[312].value,(0,e.jsx)("br",{}),u[313].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[314].value}),(0,e.jsx)("li",{children:u[315].value}),(0,e.jsx)("li",{children:u[316].value}),(0,e.jsx)("li",{children:u[317].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[318].value}),(0,e.jsxs)("h2",{id:"508\u51FA\u73B0\u6B21\u6570\u6700\u591A\u7684\u5B50\u6811\u5143\u7D20\u548C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#508\u51FA\u73B0\u6B21\u6570\u6700\u591A\u7684\u5B50\u6811\u5143\u7D20\u548C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/most-frequent-subtree-sum/",children:u[319].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[320].value})]}),(0,e.jsx)("p",{children:u[321].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[322].value}),(0,e.jsx)("li",{children:u[323].value}),(0,e.jsx)("li",{children:u[324].value}),(0,e.jsx)("li",{children:u[325].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[326].value}),(0,e.jsxs)("h2",{id:"513\u627E\u6811\u5DE6\u4E0B\u89D2\u7684\u503C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#513\u627E\u6811\u5DE6\u4E0B\u89D2\u7684\u503C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/find-bottom-left-tree-value/",children:u[327].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[328].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[329].value}),(0,e.jsx)("li",{children:u[330].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[331].value}),(0,e.jsxs)("h2",{id:"515\u5728\u6BCF\u4E2A\u6811\u884C\u4E2D\u627E\u6700\u5927\u503C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#515\u5728\u6BCF\u4E2A\u6811\u884C\u4E2D\u627E\u6700\u5927\u503C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/find-largest-value-in-each-tree-row/",children:u[332].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[333].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[334].value}),(0,e.jsx)("li",{children:u[335].value}),(0,e.jsx)("li",{children:u[336].value}),(0,e.jsx)("li",{children:u[337].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[338].value}),(0,e.jsxs)("h2",{id:"530\u4E8C\u53C9\u641C\u7D22\u6811\u7684\u6700\u5C0F\u7EDD\u5BF9\u5DEE",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#530\u4E8C\u53C9\u641C\u7D22\u6811\u7684\u6700\u5C0F\u7EDD\u5BF9\u5DEE",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/minimum-absolute-difference-in-bst/",children:u[339].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[340].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[341].value}),(0,e.jsx)("li",{children:u[342].value}),(0,e.jsx)("li",{children:u[343].value}),(0,e.jsx)("li",{children:u[344].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[345].value}),(0,e.jsxs)("h2",{id:"538\u628A\u4E8C\u53C9\u641C\u7D22\u6811\u8F6C\u6362\u4E3A\u7D2F\u52A0\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#538\u628A\u4E8C\u53C9\u641C\u7D22\u6811\u8F6C\u6362\u4E3A\u7D2F\u52A0\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/convert-bst-to-greater-tree/",children:u[346].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[347].value})]}),(0,e.jsxs)("p",{children:[u[348].value,(0,e.jsx)("br",{}),u[349].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[350].value}),(0,e.jsx)("li",{children:u[351].value}),(0,e.jsx)("li",{children:u[352].value}),(0,e.jsx)("li",{children:u[353].value}),(0,e.jsx)("li",{children:u[354].value}),(0,e.jsx)("li",{children:u[355].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[356].value}),(0,e.jsxs)("h2",{id:"543\u4E8C\u53C9\u6811\u7684\u76F4\u5F84",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#543\u4E8C\u53C9\u6811\u7684\u76F4\u5F84",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/diameter-of-binary-tree/",children:u[357].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[358].value})]}),(0,e.jsxs)("p",{children:[u[359].value,(0,e.jsx)("br",{}),u[360].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[361].value}),(0,e.jsx)("li",{children:u[362].value}),(0,e.jsx)("li",{children:u[363].value}),(0,e.jsx)("li",{children:u[364].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[365].value}),(0,e.jsxs)("h2",{id:"563\u4E8C\u53C9\u6811\u7684\u5761\u5EA6",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#563\u4E8C\u53C9\u6811\u7684\u5761\u5EA6",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/binary-tree-tilt/",children:u[366].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[367].value})]}),(0,e.jsx)("p",{children:u[368].value}),(0,e.jsx)(l.Z,{lang:"js",children:u[369].value}),(0,e.jsxs)("h2",{id:"606\u6839\u636E\u4E8C\u53C9\u6811\u521B\u5EFA\u5B57\u7B26\u4E32",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#606\u6839\u636E\u4E8C\u53C9\u6811\u521B\u5EFA\u5B57\u7B26\u4E32",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/construct-string-from-binary-tree/",children:u[370].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[371].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[372].value}),(0,e.jsxs)("h2",{id:"617\u5408\u5E76\u4E8C\u53C9\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#617\u5408\u5E76\u4E8C\u53C9\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/merge-two-binary-trees/",children:u[373].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[374].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[375].value}),(0,e.jsxs)("h2",{id:"623\u5728\u4E8C\u53C9\u6811\u4E2D\u589E\u52A0\u4E00\u884C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#623\u5728\u4E8C\u53C9\u6811\u4E2D\u589E\u52A0\u4E00\u884C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/add-one-row-to-tree/",children:u[376].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[377].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[378].value}),(0,e.jsxs)("h2",{id:"637\u4E8C\u53C9\u6811\u7684\u5C42\u5E73\u5747\u503C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#637\u4E8C\u53C9\u6811\u7684\u5C42\u5E73\u5747\u503C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/average-of-levels-in-binary-tree/",children:u[379].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[380].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[381].value}),(0,e.jsxs)("h2",{id:"652\u5BFB\u627E\u91CD\u590D\u7684\u5B50\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#652\u5BFB\u627E\u91CD\u590D\u7684\u5B50\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/find-duplicate-subtrees/",children:u[382].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[383].value})]}),(0,e.jsxs)("p",{children:[u[384].value,(0,e.jsx)("br",{}),u[385].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[386].value}),(0,e.jsx)("li",{children:u[387].value}),(0,e.jsx)("li",{children:u[388].value}),(0,e.jsx)("li",{children:u[389].value}),(0,e.jsx)("li",{children:u[390].value}),(0,e.jsx)("li",{children:u[391].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[392].value}),(0,e.jsxs)("h2",{id:"653\u4E24\u6570\u4E4B\u548C-iv-\u8F93\u5165-bst",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#653\u4E24\u6570\u4E4B\u548C-iv-\u8F93\u5165-bst",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/two-sum-iv-input-is-a-bst/",children:u[393].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[394].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[395].value}),(0,e.jsxs)("h2",{id:"654\u6700\u5927\u4E8C\u53C9\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#654\u6700\u5927\u4E8C\u53C9\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/maximum-binary-tree/",children:u[396].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[397].value})]}),(0,e.jsxs)("p",{children:[u[398].value,(0,e.jsx)("br",{}),u[399].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[400].value}),(0,e.jsx)("li",{children:u[401].value}),(0,e.jsx)("li",{children:u[402].value}),(0,e.jsx)("li",{children:u[403].value}),(0,e.jsx)("li",{children:u[404].value}),(0,e.jsx)("li",{children:u[405].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[406].value}),(0,e.jsxs)("h2",{id:"662\u4E8C\u53C9\u6811\u6700\u5927\u5BBD\u5EA6",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#662\u4E8C\u53C9\u6811\u6700\u5927\u5BBD\u5EA6",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/maximum-width-of-binary-tree/",children:u[407].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[408].value})]}),(0,e.jsx)("p",{children:u[409].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[410].value}),(0,e.jsx)("li",{children:u[411].value}),(0,e.jsx)("li",{children:u[412].value}),(0,e.jsx)("li",{children:u[413].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[414].value}),(0,e.jsxs)("h2",{id:"669\u4FEE\u526A\u4E8C\u53C9\u641C\u7D22\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#669\u4FEE\u526A\u4E8C\u53C9\u641C\u7D22\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/trim-a-binary-search-tree/",children:u[415].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[416].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[417].value}),(0,e.jsxs)("h2",{id:"671\u4E8C\u53C9\u6811\u4E2D\u7B2C\u4E8C\u5C0F\u7684\u8282\u70B9",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#671\u4E8C\u53C9\u6811\u4E2D\u7B2C\u4E8C\u5C0F\u7684\u8282\u70B9",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/second-minimum-node-in-a-binary-tree/",children:u[418].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[419].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[420].value}),(0,e.jsx)("li",{children:u[421].value}),(0,e.jsx)("li",{children:u[422].value}),(0,e.jsx)("li",{children:u[423].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[424].value}),(0,e.jsxs)("h2",{id:"700\u4E8C\u53C9\u641C\u7D22\u6811\u4E2D\u7684\u641C\u7D22",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#700\u4E8C\u53C9\u641C\u7D22\u6811\u4E2D\u7684\u641C\u7D22",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/search-in-a-binary-search-tree/",children:u[425].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[426].value})]}),(0,e.jsxs)("p",{children:[u[427].value,(0,e.jsx)("br",{}),u[428].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[429].value}),(0,e.jsx)("li",{children:u[430].value}),(0,e.jsx)("li",{children:u[431].value}),(0,e.jsx)("li",{children:u[432].value}),(0,e.jsx)("li",{children:u[433].value}),(0,e.jsx)("li",{children:u[434].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[435].value}),(0,e.jsxs)("h2",{id:"701\u4E8C\u53C9\u641C\u7D22\u6811\u4E2D\u7684\u63D2\u5165\u64CD\u4F5C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#701\u4E8C\u53C9\u641C\u7D22\u6811\u4E2D\u7684\u63D2\u5165\u64CD\u4F5C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/insert-into-a-binary-search-tree/",children:u[436].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[437].value})]}),(0,e.jsxs)("p",{children:[u[438].value,(0,e.jsx)("br",{}),u[439].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[440].value}),(0,e.jsx)("li",{children:u[441].value}),(0,e.jsx)("li",{children:u[442].value}),(0,e.jsx)("li",{children:u[443].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[444].value}),(0,e.jsxs)("h2",{id:"783\u4E8C\u53C9\u641C\u7D22\u6811\u8282\u70B9\u6700\u5C0F\u8DDD\u79BB",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#783\u4E8C\u53C9\u641C\u7D22\u6811\u8282\u70B9\u6700\u5C0F\u8DDD\u79BB",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/minimum-distance-between-bst-nodes/",children:u[445].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[446].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[447].value}),(0,e.jsxs)("h2",{id:"814\u4E8C\u53C9\u6811\u526A\u679D",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#814\u4E8C\u53C9\u6811\u526A\u679D",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/binary-tree-pruning/",children:u[448].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[449].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[450].value}),(0,e.jsxs)("h2",{id:"865\u5177\u6709\u6240\u6709\u6700\u6DF1\u8282\u70B9\u7684\u6700\u5C0F\u5B50\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#865\u5177\u6709\u6240\u6709\u6700\u6DF1\u8282\u70B9\u7684\u6700\u5C0F\u5B50\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/smallest-subtree-with-all-the-deepest-nodes/",children:u[451].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[452].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[453].value}),(0,e.jsx)("li",{children:u[454].value}),(0,e.jsx)("li",{children:u[455].value}),(0,e.jsx)("li",{children:u[456].value}),(0,e.jsx)("li",{children:u[457].value}),(0,e.jsx)("li",{children:u[458].value}),(0,e.jsx)("li",{children:u[459].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[460].value}),(0,e.jsxs)("h2",{id:"872\u53F6\u5B50\u76F8\u4F3C\u7684\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#872\u53F6\u5B50\u76F8\u4F3C\u7684\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/leaf-similar-trees/",children:u[461].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[462].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[463].value}),(0,e.jsxs)("h2",{id:"889\u6839\u636E\u524D\u5E8F\u548C\u540E\u5E8F\u904D\u5386\u6784\u9020\u4E8C\u53C9\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#889\u6839\u636E\u524D\u5E8F\u548C\u540E\u5E8F\u904D\u5386\u6784\u9020\u4E8C\u53C9\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-postorder-traversal/",children:u[464].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[465].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[466].value}),(0,e.jsxs)("h2",{id:"1022\u4ECE\u6839\u5230\u53F6\u7684\u4E8C\u8FDB\u5236\u6570\u4E4B\u548C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1022\u4ECE\u6839\u5230\u53F6\u7684\u4E8C\u8FDB\u5236\u6570\u4E4B\u548C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/sum-of-root-to-leaf-binary-numbers/",children:u[467].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[468].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[469].value}),(0,e.jsxs)("h2",{id:"1038\u4ECE\u4E8C\u53C9\u641C\u7D22\u6811\u5230\u66F4\u5927\u548C\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1038\u4ECE\u4E8C\u53C9\u641C\u7D22\u6811\u5230\u66F4\u5927\u548C\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/binary-search-tree-to-greater-sum-tree/",children:u[470].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[471].value})]}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:u[472].value})}),(0,e.jsx)(l.Z,{lang:"js",children:u[473].value}),(0,e.jsxs)("h2",{id:"2562\u9762\u8BD5\u9898-0406-\u540E\u7EE7\u8005",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2562\u9762\u8BD5\u9898-0406-\u540E\u7EE7\u8005",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/successor-lcci/",children:u[474].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[475].value})]}),(0,e.jsxs)("p",{children:[u[476].value,(0,e.jsx)("br",{}),u[477].value,(0,e.jsx)("br",{}),u[478].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[479].value}),(0,e.jsx)("li",{children:u[480].value}),(0,e.jsx)("li",{children:u[481].value}),(0,e.jsx)("li",{children:u[482].value}),(0,e.jsx)("li",{children:u[483].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[484].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-27-\u4E8C\u53C9\u6811\u7684\u955C\u50CF",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-27-\u4E8C\u53C9\u6811\u7684\u955C\u50CF",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/er-cha-shu-de-jing-xiang-lcof/",children:u[485].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[486].value})]}),(0,e.jsxs)("p",{children:[u[487].value,(0,e.jsx)("br",{}),u[488].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[489].value}),(0,e.jsx)("li",{children:u[490].value}),(0,e.jsxs)("li",{children:[u[491].value,(0,e.jsx)(a.rU,{to:"/js-logs/binary-tree#226%E7%BF%BB%E8%BD%AC%E4%BA%8C%E5%8F%89%E6%A0%91",children:u[492].value}),u[493].value]})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[494].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-55---i-\u4E8C\u53C9\u6811\u7684\u6DF1\u5EA6",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-55---i-\u4E8C\u53C9\u6811\u7684\u6DF1\u5EA6",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/er-cha-shu-de-shen-du-lcof/",children:u[495].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[496].value})]}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:u[497].value})}),(0,e.jsx)(l.Z,{lang:"js",children:u[498].value})]})})})}r.default=x},48739:function(C,r,i){var c=i(93236),s=function(n){return(0,c.createElement)(n.children)};r.Z=s},38039:function(C,r,i){i.d(r,{Z:function(){return E}});var c=i(54306),s=i.n(c),v=i(93236),n=i(62086),l=function(h){var a,j,e,x=(h==null||(a=h.children)===null||a===void 0?void 0:a.filter(function(d){return d!=`
+ `}))||[],o=(0,v.useState)(0),u=s()(o,2),p=u[0],m=u[1],f=function(t){m(t)};return(0,n.jsxs)("div",{className:"tab-container",children:[(0,n.jsx)("ul",{className:"tab-list",children:x.map(function(d,t){return(0,n.jsx)("li",{className:p===t?"tab-item active":"tab-item",onClick:function(){return f(t)},children:d.props.label},d.props.label)})}),(0,n.jsx)("div",{className:"tab-content",children:(j=x[p])===null||j===void 0||(e=j.props)===null||e===void 0?void 0:e.children})]})},E=l}}]);
diff --git a/docs__js-logs__bit-manipulation.md.07a441c4.chunk.css b/docs__js-logs__bit-manipulation.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__js-logs__bit-manipulation.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__js-logs__bit-manipulation.md.5ff1c01a.async.js b/docs__js-logs__bit-manipulation.md.5ff1c01a.async.js
new file mode 100644
index 0000000..4ef0614
--- /dev/null
+++ b/docs__js-logs__bit-manipulation.md.5ff1c01a.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[546],{74411:function(v,a,s){s.r(a);var c=s(16878),n=s(84475),x=s(646),d=s(25778),i=s(1778),m=s(6749),f=s(48739),t=s(38039),u=s(5899),h=s(93236),e=s(62086);function _(){var o=(0,u.eL)(),l=o.texts;return(0,e.jsx)(u.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u4F4D\u8FD0\u7B97",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u4F4D\u8FD0\u7B97",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u4F4D\u8FD0\u7B97"]}),(0,e.jsxs)("h2",{id:"136\u53EA\u51FA\u73B0\u4E00\u6B21\u7684\u6570\u5B57",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#136\u53EA\u51FA\u73B0\u4E00\u6B21\u7684\u6570\u5B57",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/single-number/",children:l[0].value})," ",(0,e.jsx)(n.Z,{type:"success",children:l[1].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[2].value}),(0,e.jsx)("li",{children:l[3].value}),(0,e.jsx)("li",{children:l[4].value}),(0,e.jsx)("li",{children:l[5].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:l[6].value}),(0,e.jsxs)("h2",{id:"190\u98A0\u5012\u4E8C\u8FDB\u5236\u4F4D",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#190\u98A0\u5012\u4E8C\u8FDB\u5236\u4F4D",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/reverse-bits/",children:l[7].value})," ",(0,e.jsx)(n.Z,{type:"success",children:l[8].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:l[9].value}),(0,e.jsxs)("h2",{id:"191\u4F4D-1-\u7684\u4E2A\u6570",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#191\u4F4D-1-\u7684\u4E2A\u6570",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/number-of-1-bits/",children:l[10].value})," ",(0,e.jsx)(n.Z,{type:"success",children:l[11].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[12].value}),(0,e.jsx)("li",{children:l[13].value})]}),(0,e.jsxs)("div",{align:"center",children:[l[14].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202210251640239.png",style:{maxWidth:"100%"}}),l[15].value,(0,e.jsx)("div",{align:"center",children:l[16].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:l[17].value}),(0,e.jsxs)("h2",{id:"231-2-\u7684\u5E42",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#231-2-\u7684\u5E42",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/power-of-two/",children:l[18].value})," ",(0,e.jsx)(n.Z,{type:"success",children:l[19].value})]}),(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[20].value}),l[21].value]})}),(0,e.jsx)(i.Z,{lang:"js",children:l[22].value}),(0,e.jsxs)("h2",{id:"268\u4E22\u5931\u7684\u6570\u5B57",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#268\u4E22\u5931\u7684\u6570\u5B57",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/missing-number/",children:l[23].value})," ",(0,e.jsx)(n.Z,{type:"success",children:l[24].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[25].value}),(0,e.jsx)("li",{children:l[26].value}),(0,e.jsx)("li",{children:l[27].value}),(0,e.jsx)("li",{children:l[28].value}),(0,e.jsx)("li",{children:l[29].value}),(0,e.jsxs)("li",{children:[l[30].value,(0,e.jsx)(u.rU,{to:"/js-logs/sword-point-offer#%E5%89%91%E6%8C%87-offer-53---ii-0n-1%E4%B8%AD%E7%BC%BA%E5%A4%B1%E7%9A%84%E6%95%B0%E5%AD%97",children:l[31].value}),l[32].value]})]}),(0,e.jsx)(i.Z,{lang:"js",children:l[33].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[34].value}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[35].value}),l[36].value]})]}),(0,e.jsx)(i.Z,{lang:"js",children:l[37].value}),(0,e.jsxs)("h2",{id:"389\u627E\u4E0D\u540C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#389\u627E\u4E0D\u540C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/find-the-difference/",children:l[38].value})," ",(0,e.jsx)(n.Z,{type:"success",children:l[39].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[40].value}),(0,e.jsx)("li",{children:l[41].value}),(0,e.jsx)("li",{children:l[42].value}),(0,e.jsx)("li",{children:l[43].value}),(0,e.jsx)("li",{children:l[44].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:l[45].value}),(0,e.jsxs)("h2",{id:"693\u4EA4\u66FF\u4F4D\u4E8C\u8FDB\u5236\u6570",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#693\u4EA4\u66FF\u4F4D\u4E8C\u8FDB\u5236\u6570",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/binary-number-with-alternating-bits/",children:l[46].value})," ",(0,e.jsx)(n.Z,{type:"success",children:l[47].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:l[48].value})]})})})}a.default=_},48739:function(v,a,s){var c=s(93236),n=function(d){return(0,c.createElement)(d.children)};a.Z=n},38039:function(v,a,s){s.d(a,{Z:function(){return m}});var c=s(54306),n=s.n(c),x=s(93236),d=s(62086),i=function(t){var u,h,e,_=(t==null||(u=t.children)===null||u===void 0?void 0:u.filter(function(r){return r!=`
+ `}))||[],o=(0,x.useState)(0),l=n()(o,2),E=l[0],D=l[1],b=function(j){D(j)};return(0,d.jsxs)("div",{className:"tab-container",children:[(0,d.jsx)("ul",{className:"tab-list",children:_.map(function(r,j){return(0,d.jsx)("li",{className:E===j?"tab-item active":"tab-item",onClick:function(){return b(j)},children:r.props.label},r.props.label)})}),(0,d.jsx)("div",{className:"tab-content",children:(h=_[E])===null||h===void 0||(e=h.props)===null||e===void 0?void 0:e.children})]})},m=i}}]);
diff --git a/docs__js-logs__dynamic-programming.md.07a441c4.chunk.css b/docs__js-logs__dynamic-programming.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__js-logs__dynamic-programming.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__js-logs__dynamic-programming.md.38464053.async.js b/docs__js-logs__dynamic-programming.md.38464053.async.js
new file mode 100644
index 0000000..55de78c
--- /dev/null
+++ b/docs__js-logs__dynamic-programming.md.38464053.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[90],{64215:function(p,r,i){i.r(r);var c=i(16878),s=i(84475),v=i(646),n=i(25778),u=i(1778),m=i(6749),E=i(48739),h=i(38039),a=i(5899),j=i(93236),e=i(62086);function x(){var o=(0,a.eL)(),l=o.texts;return(0,e.jsx)(a.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u52A8\u6001\u89C4\u5212",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u52A8\u6001\u89C4\u5212",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u52A8\u6001\u89C4\u5212"]}),(0,e.jsxs)("h2",{id:"\u80A1\u7968\u4E70\u5356\u95EE\u9898",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u80A1\u7968\u4E70\u5356\u95EE\u9898",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u80A1\u7968\u4E70\u5356\u95EE\u9898"]}),(0,e.jsxs)("h3",{id:"121\u4E70\u5356\u80A1\u7968\u7684\u6700\u4F73\u65F6\u673A",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#121\u4E70\u5356\u80A1\u7968\u7684\u6700\u4F73\u65F6\u673A",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/",children:l[0].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[1].value})]}),(0,e.jsx)("p",{children:l[2].value}),(0,e.jsx)(u.Z,{children:l[3].value}),(0,e.jsx)("p",{children:(0,e.jsx)("a",{href:"https://labuladong.github.io/algo/3/28/96/",children:l[4].value})}),(0,e.jsx)(u.Z,{lang:"js",children:l[5].value}),(0,e.jsx)("p",{children:l[6].value}),(0,e.jsx)(u.Z,{lang:"js",children:l[7].value}),(0,e.jsxs)("h3",{id:"122\u4E70\u5356\u80A1\u7968\u7684\u6700\u4F73\u65F6\u673A-ii",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#122\u4E70\u5356\u80A1\u7968\u7684\u6700\u4F73\u65F6\u673A-ii",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/",children:l[8].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[9].value})]}),(0,e.jsx)("p",{children:l[10].value}),(0,e.jsx)(u.Z,{children:l[11].value}),(0,e.jsx)(u.Z,{lang:"js",children:l[12].value}),(0,e.jsx)("p",{children:l[13].value}),(0,e.jsx)(u.Z,{lang:"js",children:l[14].value}),(0,e.jsxs)("h3",{id:"309\u6700\u4F73\u4E70\u5356\u80A1\u7968\u65F6\u673A\u542B\u51B7\u51BB\u671F",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#309\u6700\u4F73\u4E70\u5356\u80A1\u7968\u65F6\u673A\u542B\u51B7\u51BB\u671F",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/",children:l[15].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[16].value})]}),(0,e.jsxs)("p",{children:[l[17].value,(0,e.jsx)("br",{}),l[18].value]}),(0,e.jsx)(u.Z,{children:l[19].value}),(0,e.jsx)(u.Z,{children:l[20].value}),(0,e.jsx)(u.Z,{lang:"js",children:l[21].value}),(0,e.jsx)("p",{children:l[22].value}),(0,e.jsx)(u.Z,{lang:"js",children:l[23].value}),(0,e.jsxs)("h3",{id:"714\u4E70\u5356\u80A1\u7968\u7684\u6700\u4F73\u65F6\u673A\u542B\u624B\u7EED\u8D39",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#714\u4E70\u5356\u80A1\u7968\u7684\u6700\u4F73\u65F6\u673A\u542B\u624B\u7EED\u8D39",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/",children:l[24].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[25].value})]}),(0,e.jsx)("p",{children:l[26].value}),(0,e.jsx)(u.Z,{children:l[27].value}),(0,e.jsx)(u.Z,{lang:"js",children:l[28].value}),(0,e.jsx)("p",{children:l[29].value}),(0,e.jsx)(u.Z,{lang:"js",children:l[30].value}),(0,e.jsxs)("h3",{id:"123\u4E70\u5356\u80A1\u7968\u7684\u6700\u4F73\u65F6\u673A-iii",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#123\u4E70\u5356\u80A1\u7968\u7684\u6700\u4F73\u65F6\u673A-iii",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/",children:l[31].value})," ",(0,e.jsx)(s.Z,{type:"error",children:l[32].value})]}),(0,e.jsxs)("p",{children:[l[33].value,(0,e.jsx)("br",{}),(0,e.jsx)("code",{children:l[34].value}),(0,e.jsx)("br",{}),(0,e.jsx)("code",{children:l[35].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[36].value}),(0,e.jsxs)("h3",{id:"188\u4E70\u5356\u80A1\u7968\u7684\u6700\u4F73\u65F6\u673A-iv",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#188\u4E70\u5356\u80A1\u7968\u7684\u6700\u4F73\u65F6\u673A-iv",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iv/",children:l[37].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[38].value})]}),(0,e.jsxs)("p",{children:[l[39].value,(0,e.jsx)("code",{children:l[40].value}),l[41].value]}),(0,e.jsx)(u.Z,{lang:"js",children:l[42].value}),(0,e.jsxs)("h2",{id:"\u5B50\u5E8F\u5217\u7C7B\u578B",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5B50\u5E8F\u5217\u7C7B\u578B",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u5B50\u5E8F\u5217\u7C7B\u578B"]}),(0,e.jsxs)("h3",{id:"5\u6700\u957F\u56DE\u6587\u5B50\u4E32",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#5\u6700\u957F\u56DE\u6587\u5B50\u4E32",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/longest-palindromic-substring/",children:l[43].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[44].value})]}),(0,e.jsxs)("p",{children:[l[45].value,(0,e.jsx)("br",{}),l[46].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[47].value}),(0,e.jsx)("li",{children:l[48].value}),(0,e.jsx)("li",{children:l[49].value}),(0,e.jsx)("li",{children:l[50].value}),(0,e.jsx)("li",{children:l[51].value}),(0,e.jsx)("li",{children:l[52].value}),(0,e.jsx)("li",{children:l[53].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[54].value}),(0,e.jsxs)("h3",{id:"72\u7F16\u8F91\u8DDD\u79BB",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#72\u7F16\u8F91\u8DDD\u79BB",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/edit-distance/",children:l[55].value})," ",(0,e.jsx)(s.Z,{type:"error",children:l[56].value})]}),(0,e.jsx)("p",{children:l[57].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[58].value}),(0,e.jsx)("li",{children:l[59].value}),(0,e.jsx)("li",{children:l[60].value}),(0,e.jsx)("li",{children:l[61].value}),(0,e.jsx)("li",{children:l[62].value}),(0,e.jsx)("li",{children:l[63].value}),(0,e.jsx)("li",{children:l[64].value}),(0,e.jsx)("li",{children:l[65].value}),(0,e.jsx)("li",{children:l[66].value}),(0,e.jsx)("li",{children:l[67].value}),(0,e.jsx)("li",{children:l[68].value}),(0,e.jsx)("li",{children:l[69].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[70].value}),(0,e.jsx)("p",{children:l[71].value}),(0,e.jsx)(u.Z,{lang:"js",children:l[72].value}),(0,e.jsxs)("h3",{id:"300\u6700\u957F\u9012\u589E\u5B50\u5E8F\u5217",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#300\u6700\u957F\u9012\u589E\u5B50\u5E8F\u5217",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/longest-increasing-subsequence/",children:l[73].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[74].value})]}),(0,e.jsx)("p",{children:l[75].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[76].value}),(0,e.jsx)("li",{children:l[77].value}),(0,e.jsx)("li",{children:l[78].value}),(0,e.jsx)("li",{children:l[79].value}),(0,e.jsx)("li",{children:l[80].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[81].value}),(0,e.jsxs)("p",{children:[l[82].value,(0,e.jsx)("br",{}),l[83].value]}),(0,e.jsx)(u.Z,{lang:"js",children:l[84].value}),(0,e.jsxs)("h3",{id:"516\u6700\u957F\u56DE\u6587\u5B50\u5E8F\u5217",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#516\u6700\u957F\u56DE\u6587\u5B50\u5E8F\u5217",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/longest-palindromic-subsequence/",children:l[85].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[86].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[87].value}),(0,e.jsxs)("li",{children:[l[88].value,(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[89].value})})]}),(0,e.jsx)("li",{children:l[90].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[91].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[92].value,(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[93].value})})]}),(0,e.jsxs)("li",{children:[l[94].value,(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[95].value,(0,e.jsx)("code",{children:l[96].value}),l[97].value]}),(0,e.jsx)("li",{children:l[98].value}),(0,e.jsx)("li",{children:l[99].value})]})]})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[100].value}),(0,e.jsxs)("h3",{id:"1143\u6700\u957F\u516C\u5171\u5B50\u5E8F\u5217",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1143\u6700\u957F\u516C\u5171\u5B50\u5E8F\u5217",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/longest-common-subsequence/",children:l[101].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[102].value})]}),(0,e.jsxs)("p",{children:[l[103].value,(0,e.jsx)("br",{}),l[104].value]}),(0,e.jsx)("p",{children:l[105].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[106].value,(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[107].value})})]}),(0,e.jsxs)("li",{children:[l[108].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[109].value}),(0,e.jsx)("li",{children:l[110].value}),(0,e.jsx)("li",{children:l[111].value}),(0,e.jsx)("li",{children:l[112].value}),(0,e.jsx)("li",{children:l[113].value}),(0,e.jsx)("li",{children:l[114].value}),(0,e.jsx)("li",{children:l[115].value})]})]}),(0,e.jsxs)("li",{children:[l[116].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[117].value}),(0,e.jsx)("li",{children:l[118].value}),(0,e.jsx)("li",{children:l[119].value})]})]})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[120].value}),(0,e.jsx)("p",{children:l[121].value}),(0,e.jsx)(u.Z,{lang:"js",children:l[122].value}),(0,e.jsxs)("h3",{id:"1425\u5E26\u9650\u5236\u7684\u5B50\u5E8F\u5217\u548C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1425\u5E26\u9650\u5236\u7684\u5B50\u5E8F\u5217\u548C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/constrained-subsequence-sum/",children:l[123].value})," ",(0,e.jsx)(s.Z,{type:"error",children:l[124].value})]}),(0,e.jsxs)("p",{children:[l[125].value,(0,e.jsx)("br",{}),l[126].value]}),(0,e.jsx)(u.Z,{lang:"js",children:l[127].value}),(0,e.jsxs)("h2",{id:"10\u6B63\u5219\u8868\u8FBE\u5F0F\u5339\u914D",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#10\u6B63\u5219\u8868\u8FBE\u5F0F\u5339\u914D",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/regular-expression-matching/",children:l[128].value})," ",(0,e.jsx)(s.Z,{type:"error",children:l[129].value})]}),(0,e.jsxs)("p",{children:[l[130].value,(0,e.jsx)("br",{}),l[131].value]}),(0,e.jsx)(u.Z,{lang:"js",children:l[132].value}),(0,e.jsxs)("h2",{id:"42\u63A5\u96E8\u6C34",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#42\u63A5\u96E8\u6C34",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/trapping-rain-water/",children:l[133].value})," ",(0,e.jsx)(s.Z,{type:"error",children:l[134].value})]}),(0,e.jsx)("p",{children:l[135].value}),(0,e.jsx)(u.Z,{children:l[136].value}),(0,e.jsx)(u.Z,{lang:"js",children:l[137].value}),(0,e.jsxs)("h2",{id:"45\u8DF3\u8DC3\u6E38\u620F-ii",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#45\u8DF3\u8DC3\u6E38\u620F-ii",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/jump-game-ii/",children:l[138].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[139].value})]}),(0,e.jsxs)("p",{children:[l[140].value,(0,e.jsx)("br",{}),l[141].value,(0,e.jsx)("br",{}),l[142].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[143].value}),(0,e.jsx)("li",{children:l[144].value}),(0,e.jsx)("li",{children:l[145].value}),(0,e.jsx)("li",{children:l[146].value}),(0,e.jsx)("li",{children:l[147].value}),(0,e.jsx)("li",{children:l[148].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[149].value}),(0,e.jsx)("p",{children:l[150].value}),(0,e.jsx)(u.Z,{lang:"js",children:l[151].value}),(0,e.jsxs)("h2",{id:"53\u6700\u5927\u5B50\u6570\u7EC4\u548C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#53\u6700\u5927\u5B50\u6570\u7EC4\u548C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/maximum-subarray/",children:l[152].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[153].value})]}),(0,e.jsxs)("p",{children:[l[154].value,(0,e.jsx)("br",{}),l[155].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[156].value}),(0,e.jsx)("li",{children:l[157].value}),(0,e.jsx)("li",{children:l[158].value}),(0,e.jsx)("li",{children:l[159].value}),(0,e.jsx)("li",{children:l[160].value}),(0,e.jsx)("li",{children:l[161].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[162].value}),(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[l[163].value,(0,e.jsx)(a.rU,{to:"/js-logs/sword-point-offer#%E5%89%91%E6%8C%87-offer-42-%E8%BF%9E%E7%BB%AD%E5%AD%90%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E5%92%8C",children:l[164].value}),l[165].value]})}),(0,e.jsx)(u.Z,{lang:"js",children:l[166].value}),(0,e.jsxs)("p",{children:[l[167].value,(0,e.jsx)("br",{}),l[168].value]}),(0,e.jsx)(u.Z,{lang:"js",children:l[169].value}),(0,e.jsxs)("h2",{id:"55\u8DF3\u8DC3\u6E38\u620F",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#55\u8DF3\u8DC3\u6E38\u620F",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/jump-game/",children:l[170].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[171].value})]}),(0,e.jsxs)("p",{children:[l[172].value,(0,e.jsx)("br",{}),l[173].value]}),(0,e.jsx)(u.Z,{lang:"js",children:l[174].value}),(0,e.jsxs)("h2",{id:"62\u4E0D\u540C\u8DEF\u5F84",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#62\u4E0D\u540C\u8DEF\u5F84",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/unique-paths/",children:l[175].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[176].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[177].value}),(0,e.jsxs)("h2",{id:"63\u4E0D\u540C\u8DEF\u5F84-ii",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#63\u4E0D\u540C\u8DEF\u5F84-ii",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/unique-paths-ii/",children:l[178].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[179].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[180].value}),(0,e.jsxs)("h2",{id:"64\u6700\u5C0F\u8DEF\u5F84\u548C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#64\u6700\u5C0F\u8DEF\u5F84\u548C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/minimum-path-sum/",children:l[181].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[182].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[183].value}),(0,e.jsx)("li",{children:l[184].value}),(0,e.jsx)("li",{children:l[185].value}),(0,e.jsx)("li",{children:l[186].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[187].value}),(0,e.jsx)("p",{children:l[188].value}),(0,e.jsx)(u.Z,{lang:"js",children:l[189].value}),(0,e.jsxs)("h2",{id:"91\u89E3\u7801\u65B9\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#91\u89E3\u7801\u65B9\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/decode-ways/",children:l[190].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[191].value})]}),(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[l[192].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[193].value}),(0,e.jsxs)("li",{children:[l[194].value,(0,e.jsx)("br",{}),l[195].value]})]})]})}),(0,e.jsx)(u.Z,{children:l[196].value}),(0,e.jsx)("p",{children:l[197].value}),(0,e.jsx)(u.Z,{lang:"js",children:l[198].value}),(0,e.jsxs)("h2",{id:"97\u4EA4\u9519\u5B57\u7B26\u4E32",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#97\u4EA4\u9519\u5B57\u7B26\u4E32",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/interleaving-string/",children:l[199].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[200].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[201].value}),(0,e.jsxs)("h2",{id:"115\u4E0D\u540C\u7684\u5B50\u5E8F\u5217",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#115\u4E0D\u540C\u7684\u5B50\u5E8F\u5217",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/distinct-subsequences/",children:l[202].value})," ",(0,e.jsx)(s.Z,{type:"error",children:l[203].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[204].value}),(0,e.jsx)("li",{children:l[205].value}),(0,e.jsxs)("li",{children:[l[206].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[207].value}),(0,e.jsx)("li",{children:l[208].value})]})]}),(0,e.jsx)("li",{children:l[209].value})]}),(0,e.jsx)("p",{children:l[210].value}),(0,e.jsx)(u.Z,{children:l[211].value}),(0,e.jsx)(u.Z,{lang:"js",children:l[212].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[213].value}),(0,e.jsx)("li",{children:l[214].value}),(0,e.jsx)("li",{children:l[215].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[216].value}),(0,e.jsxs)("h2",{id:"118\u6768\u8F89\u4E09\u89D2",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#118\u6768\u8F89\u4E09\u89D2",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/pascals-triangle/",children:l[217].value})," ",(0,e.jsx)(s.Z,{type:"success",children:l[218].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[219].value}),(0,e.jsx)("p",{children:l[220].value}),(0,e.jsx)(u.Z,{lang:"js",children:l[221].value}),(0,e.jsxs)("h2",{id:"119\u6768\u8F89\u4E09\u89D2-ii",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#119\u6768\u8F89\u4E09\u89D2-ii",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/pascals-triangle-ii/",children:l[222].value})," ",(0,e.jsx)(s.Z,{type:"success",children:l[223].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[224].value}),(0,e.jsx)(u.Z,{lang:"js",children:l[225].value}),(0,e.jsxs)("h2",{id:"120\u4E09\u89D2\u5F62\u6700\u5C0F\u8DEF\u5F84\u548C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#120\u4E09\u89D2\u5F62\u6700\u5C0F\u8DEF\u5F84\u548C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/triangle/",children:l[226].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[227].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[228].value}),(0,e.jsxs)("h2",{id:"139\u5355\u8BCD\u62C6\u5206",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#139\u5355\u8BCD\u62C6\u5206",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/word-break/",children:l[229].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[230].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[231].value}),(0,e.jsxs)("h2",{id:"152\u4E58\u79EF\u6700\u5927\u5B50\u6570\u7EC4",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#152\u4E58\u79EF\u6700\u5927\u5B50\u6570\u7EC4",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/maximum-product-subarray/",children:l[232].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[233].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[234].value}),(0,e.jsxs)("h2",{id:"174\u5730\u4E0B\u57CE\u6E38\u620F",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#174\u5730\u4E0B\u57CE\u6E38\u620F",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/dungeon-game/",children:l[235].value})," ",(0,e.jsx)(s.Z,{type:"error",children:l[236].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[237].value}),(0,e.jsxs)("h2",{id:"198\u6253\u5BB6\u52AB\u820D",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#198\u6253\u5BB6\u52AB\u820D",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/house-robber/",children:l[238].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[239].value})]}),(0,e.jsxs)("p",{children:[l[240].value,(0,e.jsx)("br",{}),l[241].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[242].value}),(0,e.jsx)("li",{children:l[243].value}),(0,e.jsx)("li",{children:l[244].value}),(0,e.jsx)("li",{children:l[245].value}),(0,e.jsx)("li",{children:l[246].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[247].value}),(0,e.jsx)("p",{children:l[248].value}),(0,e.jsx)(u.Z,{lang:"js",children:l[249].value}),(0,e.jsxs)("h2",{id:"213\u6253\u5BB6\u52AB\u820D-ii",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#213\u6253\u5BB6\u52AB\u820D-ii",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/house-robber-ii/",children:l[250].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[251].value})]}),(0,e.jsx)("p",{children:l[252].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[253].value}),(0,e.jsx)("li",{children:l[254].value}),(0,e.jsxs)("li",{children:[l[255].value,(0,e.jsx)("br",{}),l[256].value]})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[257].value}),(0,e.jsxs)("h2",{id:"221\u6700\u5927\u6B63\u65B9\u5F62",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#221\u6700\u5927\u6B63\u65B9\u5F62",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/maximal-square/",children:l[258].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[259].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[260].value}),(0,e.jsxs)("h2",{id:"264\u4E11\u6570-ii",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#264\u4E11\u6570-ii",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/ugly-number-ii/",children:l[261].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[262].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[263].value}),(0,e.jsxs)("h2",{id:"279\u5B8C\u5168\u5E73\u65B9\u6570",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#279\u5B8C\u5168\u5E73\u65B9\u6570",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/perfect-squares/",children:l[264].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[265].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[266].value}),(0,e.jsxs)("h2",{id:"312\u6233\u6C14\u7403",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#312\u6233\u6C14\u7403",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/burst-balloons/",children:l[267].value})," ",(0,e.jsx)(s.Z,{type:"error",children:l[268].value})]}),(0,e.jsxs)("p",{children:[l[269].value,(0,e.jsx)("br",{}),l[270].value]}),(0,e.jsx)("p",{children:(0,e.jsx)("a",{href:"https://mp.weixin.qq.com/s/I0yo0XZamm-jMpG-_B3G8g",children:l[271].value})}),(0,e.jsx)(u.Z,{lang:"js",children:l[272].value}),(0,e.jsxs)("h2",{id:"322\u96F6\u94B1\u5151\u6362",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#322\u96F6\u94B1\u5151\u6362",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/coin-change/",children:l[273].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[274].value})]}),(0,e.jsxs)("p",{children:[l[275].value,(0,e.jsx)("br",{}),l[276].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[277].value}),(0,e.jsx)("li",{children:l[278].value}),(0,e.jsx)("li",{children:l[279].value}),(0,e.jsx)("li",{children:l[280].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[281].value}),(0,e.jsxs)("h2",{id:"343\u6574\u6570\u62C6\u5206",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#343\u6574\u6570\u62C6\u5206",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/integer-break/",children:l[282].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[283].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[284].value}),(0,e.jsx)("li",{children:l[285].value}),(0,e.jsx)("li",{children:l[286].value}),(0,e.jsx)("li",{children:l[287].value}),(0,e.jsx)("li",{children:l[288].value}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[289].value}),l[290].value]})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[291].value}),(0,e.jsx)("p",{children:l[292].value}),(0,e.jsx)(u.Z,{lang:"js",children:l[293].value}),(0,e.jsxs)("h2",{id:"376\u6446\u52A8\u5E8F\u5217",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#376\u6446\u52A8\u5E8F\u5217",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/wiggle-subsequence/",children:l[294].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[295].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:(0,e.jsx)("p",{children:l[296].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("p",{children:l[297].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("p",{children:l[298].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("p",{children:l[299].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("p",{children:(0,e.jsx)("code",{children:l[300].value})})}),(0,e.jsx)("li",{children:(0,e.jsx)("p",{children:(0,e.jsx)("code",{children:l[301].value})})}),(0,e.jsx)("li",{children:(0,e.jsx)("p",{children:(0,e.jsx)("code",{children:l[302].value})})}),(0,e.jsx)("li",{children:(0,e.jsx)("p",{children:(0,e.jsx)("code",{children:l[303].value})})})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[304].value}),(0,e.jsxs)("h2",{id:"377\u7EC4\u5408\u603B\u548C-\u2173",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#377\u7EC4\u5408\u603B\u548C-\u2173",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/combination-sum-iv/",children:l[305].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[306].value})]}),(0,e.jsx)("p",{children:(0,e.jsx)("a",{href:"https://leetcode.cn/problems/combination-sum-iv/solution/zu-he-zong-he-iv-by-leetcode-solution-q8zv/",children:l[307].value})}),(0,e.jsx)(u.Z,{lang:"js",children:l[308].value}),(0,e.jsxs)("h2",{id:"413\u7B49\u5DEE\u6570\u5217\u5212\u5206",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#413\u7B49\u5DEE\u6570\u5217\u5212\u5206",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/arithmetic-slices/",children:l[309].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[310].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:(0,e.jsx)("p",{children:l[311].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("p",{children:l[312].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("p",{children:l[313].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("p",{children:l[314].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("p",{children:l[315].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("p",{children:l[316].value})}),(0,e.jsx)("li",{children:(0,e.jsxs)("p",{children:[l[317].value,(0,e.jsx)("code",{children:l[318].value}),l[319].value]})}),(0,e.jsx)("li",{children:(0,e.jsx)("p",{children:l[320].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("p",{children:l[321].value})}),(0,e.jsx)("li",{children:(0,e.jsx)("p",{children:l[322].value})})]}),(0,e.jsx)("p",{children:(0,e.jsx)("a",{href:"https://leetcode.cn/problems/arithmetic-slices/solution/by-xu-haobooo-hndq/",children:l[323].value})}),(0,e.jsx)(u.Z,{lang:"js",children:l[324].value}),(0,e.jsxs)("h2",{id:"416\u5206\u5272\u7B49\u548C\u5B50\u96C6",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#416\u5206\u5272\u7B49\u548C\u5B50\u96C6",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/partition-equal-subset-sum/",children:l[325].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[326].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[327].value}),(0,e.jsxs)("h2",{id:"494\u76EE\u6807\u548C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#494\u76EE\u6807\u548C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/target-sum/",children:l[328].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[329].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[330].value}),(0,e.jsxs)("h2",{id:"509\u6590\u6CE2\u90A3\u5951\u6570",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#509\u6590\u6CE2\u90A3\u5951\u6570",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/fibonacci-number/",children:l[331].value})," ",(0,e.jsx)(s.Z,{type:"success",children:l[332].value})]}),(0,e.jsx)("p",{children:l[333].value}),(0,e.jsx)(u.Z,{lang:"js",children:l[334].value}),(0,e.jsx)("p",{children:l[335].value}),(0,e.jsx)(u.Z,{lang:"js",children:l[336].value}),(0,e.jsxs)("h2",{id:"518\u96F6\u94B1\u5151\u6362-ii",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#518\u96F6\u94B1\u5151\u6362-ii",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/coin-change-ii/",children:l[337].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[338].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[339].value}),(0,e.jsx)(u.Z,{lang:"js",children:l[340].value}),(0,e.jsxs)("h2",{id:"740\u5220\u9664\u5E76\u83B7\u5F97\u70B9\u6570",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#740\u5220\u9664\u5E76\u83B7\u5F97\u70B9\u6570",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/delete-and-earn/",children:l[341].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[342].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[343].value}),(0,e.jsxs)("li",{children:[l[344].value,(0,e.jsx)("code",{children:l[345].value}),l[346].value,(0,e.jsx)("code",{children:l[347].value}),l[348].value]}),(0,e.jsx)("li",{children:l[349].value}),(0,e.jsx)("li",{children:l[350].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[351].value}),(0,e.jsxs)("h2",{id:"746\u4F7F\u7528\u6700\u5C0F\u82B1\u8D39\u722C\u697C\u68AF",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#746\u4F7F\u7528\u6700\u5C0F\u82B1\u8D39\u722C\u697C\u68AF",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/min-cost-climbing-stairs/",children:l[352].value})," ",(0,e.jsx)(s.Z,{type:"success",children:l[353].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[354].value}),(0,e.jsx)("li",{children:l[355].value}),(0,e.jsx)("li",{children:l[356].value}),(0,e.jsx)("li",{children:l[357].value}),(0,e.jsx)("li",{children:l[358].value}),(0,e.jsx)("li",{children:l[359].value}),(0,e.jsx)("li",{children:l[360].value}),(0,e.jsx)("li",{children:l[361].value}),(0,e.jsx)("li",{children:l[362].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[363].value}),(0,e.jsxs)("h2",{id:"877\u77F3\u5B50\u6E38\u620F",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#877\u77F3\u5B50\u6E38\u620F",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/stone-game/",children:l[364].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[365].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[366].value}),(0,e.jsxs)("h2",{id:"887\u9E21\u86CB\u6389\u843D",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#887\u9E21\u86CB\u6389\u843D",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/super-egg-drop/",children:l[367].value})," ",(0,e.jsx)(s.Z,{type:"error",children:l[368].value})]}),(0,e.jsxs)("p",{children:[l[369].value,(0,e.jsx)("br",{}),l[370].value,(0,e.jsx)("br",{}),l[371].value]}),(0,e.jsx)(u.Z,{lang:"js",children:l[372].value}),(0,e.jsxs)("p",{children:[l[373].value,(0,e.jsx)("br",{}),l[374].value,(0,e.jsx)("br",{}),l[375].value]}),(0,e.jsx)(u.Z,{lang:"js",children:l[376].value}),(0,e.jsxs)("h2",{id:"918\u73AF\u5F62\u5B50\u6570\u7EC4\u7684\u6700\u5927\u548C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#918\u73AF\u5F62\u5B50\u6570\u7EC4\u7684\u6700\u5927\u548C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/maximum-sum-circular-subarray/",children:l[377].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[378].value})]}),(0,e.jsx)("p",{children:(0,e.jsx)("a",{href:"https://leetcode.cn/problems/maximum-sum-circular-subarray/solution/wo-hua-yi-bian-jiu-kan-dong-de-ti-jie-ni-892u/",children:l[379].value})}),(0,e.jsx)(u.Z,{lang:"js",children:l[380].value}),(0,e.jsxs)("h2",{id:"931\u4E0B\u964D\u8DEF\u5F84\u6700\u5C0F\u548C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#931\u4E0B\u964D\u8DEF\u5F84\u6700\u5C0F\u548C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/minimum-falling-path-sum/",children:l[381].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[382].value})]}),(0,e.jsxs)("p",{children:[l[383].value,(0,e.jsx)("br",{}),l[384].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[385].value}),(0,e.jsx)("li",{children:l[386].value}),(0,e.jsx)("li",{children:l[387].value}),(0,e.jsx)("li",{children:l[388].value}),(0,e.jsxs)("li",{children:[l[389].value,(0,e.jsx)("code",{children:l[390].value})]})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[391].value}),(0,e.jsxs)("h2",{id:"1014\u6700\u4F73\u89C2\u5149\u7EC4\u5408",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1014\u6700\u4F73\u89C2\u5149\u7EC4\u5408",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/best-sightseeing-pair/",children:l[392].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[393].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[394].value}),l[395].value]}),(0,e.jsx)("li",{children:(0,e.jsx)("code",{children:l[396].value})}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:l[397].value}),l[398].value,(0,e.jsx)("code",{children:l[399].value}),l[400].value]})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[401].value}),(0,e.jsxs)("h2",{id:"1137\u7B2C-n-\u4E2A\u6CF0\u6CE2\u90A3\u5951\u6570",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1137\u7B2C-n-\u4E2A\u6CF0\u6CE2\u90A3\u5951\u6570",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/n-th-tribonacci-number/",children:l[402].value})," ",(0,e.jsx)(s.Z,{type:"error",children:l[403].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[404].value}),(0,e.jsxs)("h2",{id:"1277\u7EDF\u8BA1\u5168\u4E3A-1-\u7684\u6B63\u65B9\u5F62\u5B50\u77E9\u9635",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1277\u7EDF\u8BA1\u5168\u4E3A-1-\u7684\u6B63\u65B9\u5F62\u5B50\u77E9\u9635",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/count-square-submatrices-with-all-ones/",children:l[405].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[406].value})]}),(0,e.jsxs)("p",{children:[l[407].value,(0,e.jsx)("a",{href:"https://leetcode.cn/problems/maximal-square/",children:l[408].value})]}),(0,e.jsxs)("div",{align:"center",children:[l[409].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202210131221045.png",style:{maxWidth:"100%"}}),l[410].value,(0,e.jsx)("div",{align:"center",children:l[411].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[412].value}),(0,e.jsxs)("h2",{id:"1567\u4E58\u79EF\u4E3A\u6B63\u6570\u7684\u6700\u957F\u5B50\u6570\u7EC4\u957F\u5EA6",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1567\u4E58\u79EF\u4E3A\u6B63\u6570\u7684\u6700\u957F\u5B50\u6570\u7EC4\u957F\u5EA6",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/maximum-length-of-subarray-with-positive-product/",children:l[413].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[414].value})]}),(0,e.jsx)("p",{children:l[415].value}),(0,e.jsx)(u.Z,{lang:"js",children:l[416].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-10--ii-\u9752\u86D9\u8DF3\u53F0\u9636\u95EE\u9898",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-10--ii-\u9752\u86D9\u8DF3\u53F0\u9636\u95EE\u9898",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/",children:l[417].value})," ",(0,e.jsx)(s.Z,{type:"success",children:l[418].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[419].value}),(0,e.jsx)("li",{children:l[420].value}),(0,e.jsxs)("li",{children:[l[421].value,(0,e.jsx)("code",{children:l[422].value})]}),(0,e.jsxs)("li",{children:[l[423].value,(0,e.jsx)("a",{href:"https://leetcode-cn.com/problems/climbing-stairs/",children:l[424].value}),l[425].value]})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[426].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-ii-091-\u7C89\u5237\u623F\u5B50",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-ii-091-\u7C89\u5237\u623F\u5B50",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/JEj789/",children:l[427].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[428].value})]}),(0,e.jsxs)("p",{children:[l[429].value,(0,e.jsx)("a",{href:"https://leetcode-cn.com/problems/paint-house/",children:l[430].value}),l[431].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[432].value}),(0,e.jsxs)("li",{children:[l[433].value,(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[434].value})})]}),(0,e.jsxs)("li",{children:[l[435].value,(0,e.jsx)("code",{children:l[436].value}),l[437].value]}),(0,e.jsx)("li",{children:l[438].value})]}),(0,e.jsx)(u.Z,{children:l[439].value}),(0,e.jsx)(u.Z,{lang:"js",children:l[440].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-ii-097-\u5B50\u5E8F\u5217\u7684\u6570\u76EE",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-ii-097-\u5B50\u5E8F\u5217\u7684\u6570\u76EE",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/21dk04/",children:l[441].value})," ",(0,e.jsx)(s.Z,{type:"error",children:l[442].value})]}),(0,e.jsxs)("p",{children:[l[443].value,(0,e.jsx)("a",{href:"https://leetcode-cn.com/problems/distinct-subsequences/",children:l[444].value}),l[445].value]}),(0,e.jsx)(u.Z,{lang:"js",children:l[446].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-ii-098-\u8DEF\u5F84\u7684\u6570\u76EE",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-ii-098-\u8DEF\u5F84\u7684\u6570\u76EE",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/2AoeFn/",children:l[447].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[448].value})]}),(0,e.jsxs)("p",{children:[l[449].value,(0,e.jsx)("a",{href:"https://leetcode-cn.com/problems/unique-paths/",children:l[450].value}),l[451].value]}),(0,e.jsx)(u.Z,{lang:"js",children:l[452].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-ii-103-\u6700\u5C11\u7684\u786C\u5E01\u6570\u76EE",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-ii-103-\u6700\u5C11\u7684\u786C\u5E01\u6570\u76EE",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/gaM7Ch/",children:l[453].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[454].value})]}),(0,e.jsxs)("p",{children:[l[455].value,(0,e.jsx)("a",{href:"https://leetcode-cn.com/problems/coin-change/",children:l[456].value}),l[457].value]}),(0,e.jsx)(u.Z,{lang:"js",children:l[458].value}),(0,e.jsxs)("h2",{id:"338\u6BD4\u7279\u4F4D\u8BA1\u6570",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#338\u6BD4\u7279\u4F4D\u8BA1\u6570",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/counting-bits/",children:l[459].value})," ",(0,e.jsx)(s.Z,{type:"success",children:l[460].value})]}),(0,e.jsxs)("p",{children:[l[461].value,(0,e.jsx)("br",{}),l[462].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[463].value}),(0,e.jsx)("li",{children:l[464].value}),(0,e.jsx)("li",{children:l[465].value}),(0,e.jsxs)("li",{children:[l[466].value,(0,e.jsx)("code",{children:l[467].value})]})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[468].value}),(0,e.jsxs)("p",{children:[l[469].value,(0,e.jsx)("br",{}),l[470].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[471].value}),(0,e.jsx)("li",{children:l[472].value}),(0,e.jsxs)("li",{children:[l[473].value,(0,e.jsx)("code",{children:l[474].value}),l[475].value]})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[476].value})]})})})}r.default=x},48739:function(p,r,i){var c=i(93236),s=function(n){return(0,c.createElement)(n.children)};r.Z=s},38039:function(p,r,i){i.d(r,{Z:function(){return m}});var c=i(54306),s=i.n(c),v=i(93236),n=i(62086),u=function(h){var a,j,e,x=(h==null||(a=h.children)===null||a===void 0?void 0:a.filter(function(d){return d!=`
+ `}))||[],o=(0,v.useState)(0),l=s()(o,2),b=l[0],g=l[1],f=function(t){g(t)};return(0,n.jsxs)("div",{className:"tab-container",children:[(0,n.jsx)("ul",{className:"tab-list",children:x.map(function(d,t){return(0,n.jsx)("li",{className:b===t?"tab-item active":"tab-item",onClick:function(){return f(t)},children:d.props.label},d.props.label)})}),(0,n.jsx)("div",{className:"tab-content",children:(j=x[b])===null||j===void 0||(e=j.props)===null||e===void 0?void 0:e.children})]})},m=u}}]);
diff --git a/docs__js-logs__greedy.md.07a441c4.chunk.css b/docs__js-logs__greedy.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__js-logs__greedy.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__js-logs__greedy.md.cad4e611.async.js b/docs__js-logs__greedy.md.cad4e611.async.js
new file mode 100644
index 0000000..88a1038
--- /dev/null
+++ b/docs__js-logs__greedy.md.cad4e611.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[678],{65990:function(o,d,s){s.r(d);var c=s(16878),n=s(84475),x=s(646),a=s(25778),i=s(1778),m=s(6749),E=s(48739),t=s(38039),u=s(5899),_=s(93236),e=s(62086);function h(){var v=(0,u.eL)(),l=v.texts;return(0,e.jsx)(u.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u8D2A\u5FC3\u7B97\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u8D2A\u5FC3\u7B97\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u8D2A\u5FC3\u7B97\u6CD5"]}),(0,e.jsxs)("h2",{id:"55\u8DF3\u8DC3\u6E38\u620F",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#55\u8DF3\u8DC3\u6E38\u620F",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/jump-game/",children:l[0].value})," ",(0,e.jsx)(n.Z,{type:"warning",children:l[1].value})]}),(0,e.jsxs)("p",{children:[l[2].value,(0,e.jsx)("br",{}),l[3].value,(0,e.jsx)("br",{}),l[4].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[5].value}),(0,e.jsx)("li",{children:l[6].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:l[7].value}),(0,e.jsxs)("h2",{id:"45\u8DF3\u8DC3\u6E38\u620F-ii",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#45\u8DF3\u8DC3\u6E38\u620F-ii",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/jump-game-ii/",children:l[8].value})," ",(0,e.jsx)(n.Z,{type:"warning",children:l[9].value})]}),(0,e.jsxs)("p",{children:[l[10].value,(0,e.jsx)("br",{}),l[11].value,(0,e.jsx)("br",{}),l[12].value]}),(0,e.jsxs)("div",{align:"center",children:[l[13].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202211221118714.png",style:{maxWidth:"100%"}}),l[14].value,(0,e.jsx)("div",{align:"center",children:l[15].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:l[16].value}),(0,e.jsxs)("p",{children:[l[17].value,(0,e.jsx)("br",{}),l[18].value,(0,e.jsx)("br",{}),l[19].value]}),(0,e.jsx)(i.Z,{lang:"js",children:l[20].value}),(0,e.jsxs)("h2",{id:"376\u6446\u52A8\u5E8F\u5217",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#376\u6446\u52A8\u5E8F\u5217",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/wiggle-subsequence/",children:l[21].value})," ",(0,e.jsx)(n.Z,{type:"warning",children:l[22].value})]}),(0,e.jsxs)("p",{children:[l[23].value,(0,e.jsx)("br",{}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/wiggle-subsequence/solution/bai-dong-xu-lie-by-leetcode-solution-yh2m/",children:l[24].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:l[25].value}),(0,e.jsxs)("p",{children:[l[26].value,(0,e.jsx)("br",{}),l[27].value,(0,e.jsx)("br",{}),l[28].value,(0,e.jsx)("br",{}),l[29].value,(0,e.jsx)("br",{}),(0,e.jsx)("code",{children:l[30].value}),(0,e.jsx)("br",{}),(0,e.jsx)("code",{children:l[31].value})]}),(0,e.jsxs)("p",{children:[(0,e.jsx)("code",{children:l[32].value}),(0,e.jsx)("br",{}),(0,e.jsx)("code",{children:l[33].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:l[34].value}),(0,e.jsxs)("h2",{id:"435\u65E0\u91CD\u53E0\u533A\u95F4",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#435\u65E0\u91CD\u53E0\u533A\u95F4",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/non-overlapping-intervals/",children:l[35].value})," ",(0,e.jsx)(n.Z,{type:"warning",children:l[36].value})]}),(0,e.jsxs)("p",{children:[l[37].value,(0,e.jsx)("br",{}),l[38].value,(0,e.jsx)("br",{}),l[39].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[40].value}),(0,e.jsx)("li",{children:l[41].value}),(0,e.jsxs)("li",{children:[l[42].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[43].value}),(0,e.jsx)("li",{children:l[44].value})]})]})]}),(0,e.jsx)(i.Z,{lang:"js",children:l[45].value}),(0,e.jsxs)("h2",{id:"452\u7528\u6700\u5C11\u6570\u91CF\u7684\u7BAD\u5F15\u7206\u6C14\u7403",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#452\u7528\u6700\u5C11\u6570\u91CF\u7684\u7BAD\u5F15\u7206\u6C14\u7403",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-balloons/",children:l[46].value})," ",(0,e.jsx)(n.Z,{type:"warning",children:l[47].value})]}),(0,e.jsxs)("p",{children:[l[48].value,(0,e.jsx)("br",{}),l[49].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[50].value}),(0,e.jsx)("li",{children:l[51].value}),(0,e.jsx)("li",{children:l[52].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:l[53].value}),(0,e.jsxs)("h2",{id:"1024\u89C6\u9891\u62FC\u63A5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1024\u89C6\u9891\u62FC\u63A5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/video-stitching/",children:l[54].value})," ",(0,e.jsx)(n.Z,{type:"warning",children:l[55].value})]}),(0,e.jsx)(i.Z,{lang:"js",children:l[56].value})]})})})}d.default=h},48739:function(o,d,s){var c=s(93236),n=function(a){return(0,c.createElement)(a.children)};d.Z=n},38039:function(o,d,s){s.d(d,{Z:function(){return m}});var c=s(54306),n=s.n(c),x=s(93236),a=s(62086),i=function(t){var u,_,e,h=(t==null||(u=t.children)===null||u===void 0?void 0:u.filter(function(r){return r!=`
+ `}))||[],v=(0,x.useState)(0),l=n()(v,2),b=l[0],g=l[1],C=function(j){g(j)};return(0,a.jsxs)("div",{className:"tab-container",children:[(0,a.jsx)("ul",{className:"tab-list",children:h.map(function(r,j){return(0,a.jsx)("li",{className:b===j?"tab-item active":"tab-item",onClick:function(){return C(j)},children:r.props.label},r.props.label)})}),(0,a.jsx)("div",{className:"tab-content",children:(_=h[b])===null||_===void 0||(e=_.props)===null||e===void 0?void 0:e.children})]})},m=i}}]);
diff --git a/docs__js-logs__heap.md.07a441c4.chunk.css b/docs__js-logs__heap.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__js-logs__heap.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__js-logs__heap.md.28f06dd4.async.js b/docs__js-logs__heap.md.28f06dd4.async.js
new file mode 100644
index 0000000..acaa606
--- /dev/null
+++ b/docs__js-logs__heap.md.28f06dd4.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[442],{7392:function(x,i,s){s.r(i);var r=s(16878),a=s(84475),v=s(646),d=s(25778),u=s(1778),E=s(6749),D=s(48739),t=s(38039),n=s(5899),c=s(93236),e=s(62086);function o(){var j=(0,n.eL)(),l=j.texts;return(0,e.jsx)(n.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u5806",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5806",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u5806"]}),(0,e.jsxs)("h2",{id:"703-\u6570\u636E\u6D41\u4E2D\u7684\u7B2C-k-\u5927\u5143\u7D20",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#703-\u6570\u636E\u6D41\u4E2D\u7684\u7B2C-k-\u5927\u5143\u7D20",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/kth-largest-element-in-a-stream/",children:l[0].value})," ",(0,e.jsx)(a.Z,{type:"success",children:l[1].value})]}),(0,e.jsx)("p",{children:l[2].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[3].value,(0,e.jsx)("code",{children:l[4].value})]}),(0,e.jsxs)("li",{children:[l[5].value,(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[6].value,(0,e.jsx)("code",{children:l[7].value})]}),(0,e.jsxs)("li",{children:[l[8].value,(0,e.jsx)("code",{children:l[9].value})]})]})]})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[10].value}),(0,e.jsxs)("h2",{id:"295-\u6570\u636E\u6D41\u7684\u4E2D\u4F4D\u6570",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#295-\u6570\u636E\u6D41\u7684\u4E2D\u4F4D\u6570",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/find-median-from-data-stream/",children:l[11].value})," ",(0,e.jsx)(a.Z,{type:"error",children:l[12].value})]}),(0,e.jsxs)("p",{children:[l[13].value,(0,e.jsx)("br",{}),l[14].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[15].value}),(0,e.jsx)("li",{children:l[16].value}),(0,e.jsx)("li",{children:l[17].value}),(0,e.jsx)("li",{children:l[18].value}),(0,e.jsxs)("li",{children:[l[19].value,(0,e.jsx)("code",{children:l[20].value}),l[21].value,(0,e.jsx)("code",{children:l[22].value})]})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[23].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[24].value,(0,e.jsx)("strong",{children:l[25].value}),l[26].value]}),(0,e.jsx)("li",{children:l[27].value}),(0,e.jsx)("li",{children:l[28].value}),(0,e.jsx)("li",{children:l[29].value}),(0,e.jsx)("li",{children:l[30].value}),(0,e.jsxs)("li",{children:[l[31].value,(0,e.jsx)(n.rU,{to:"/js-logs/sword-point-offer#%E5%89%91%E6%8C%87-offer-41-%E6%95%B0%E6%8D%AE%E6%B5%81%E4%B8%AD%E7%9A%84%E4%B8%AD%E4%BD%8D%E6%95%B0",children:l[32].value}),l[33].value]})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[34].value})]})})})}i.default=o},48739:function(x,i,s){var r=s(93236),a=function(d){return(0,r.createElement)(d.children)};i.Z=a},38039:function(x,i,s){s.d(i,{Z:function(){return E}});var r=s(54306),a=s.n(r),v=s(93236),d=s(62086),u=function(t){var n,c,e,o=(t==null||(n=t.children)===null||n===void 0?void 0:n.filter(function(_){return _!=`
+ `}))||[],j=(0,v.useState)(0),l=a()(j,2),m=l[0],f=l[1],T=function(h){f(h)};return(0,d.jsxs)("div",{className:"tab-container",children:[(0,d.jsx)("ul",{className:"tab-list",children:o.map(function(_,h){return(0,d.jsx)("li",{className:m===h?"tab-item active":"tab-item",onClick:function(){return T(h)},children:_.props.label},_.props.label)})}),(0,d.jsx)("div",{className:"tab-content",children:(c=o[m])===null||c===void 0||(e=c.props)===null||e===void 0?void 0:e.children})]})},E=u}}]);
diff --git a/docs__js-logs__index.md.07a441c4.chunk.css b/docs__js-logs__index.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__js-logs__index.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__js-logs__index.md.bbf1ec8a.async.js b/docs__js-logs__index.md.bbf1ec8a.async.js
new file mode 100644
index 0000000..20f13d5
--- /dev/null
+++ b/docs__js-logs__index.md.bbf1ec8a.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[340],{92057:function(E,n,e){e.r(n);var a=e(16878),i=e(84475),v=e(646),d=e(25778),h=e(1778),j=e(6749),M=e(48739),l=e(38039),t=e(5899),u=e(93236),_=e(62086);function r(){var m=(0,t.eL)(),o=m.texts;return(0,_.jsx)(t.dY,{children:(0,_.jsx)(_.Fragment,{children:(0,_.jsxs)("div",{className:"markdown",children:[(0,_.jsxs)("h1",{id:"javascript-\u9898\u89E3",children:[(0,_.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#javascript-\u9898\u89E3",children:(0,_.jsx)("span",{className:"icon icon-link"})}),"JavaScript \u9898\u89E3"]}),(0,_.jsx)("blockquote",{children:(0,_.jsx)("p",{children:o[0].value})})]})})})}n.default=r},48739:function(E,n,e){var a=e(93236),i=function(d){return(0,a.createElement)(d.children)};n.Z=i},38039:function(E,n,e){e.d(n,{Z:function(){return j}});var a=e(54306),i=e.n(a),v=e(93236),d=e(62086),h=function(l){var t,u,_,r=(l==null||(t=l.children)===null||t===void 0?void 0:t.filter(function(s){return s!=`
+ `}))||[],m=(0,v.useState)(0),o=i()(m,2),T=o[0],P=o[1],x=function(c){P(c)};return(0,d.jsxs)("div",{className:"tab-container",children:[(0,d.jsx)("ul",{className:"tab-list",children:r.map(function(s,c){return(0,d.jsx)("li",{className:T===c?"tab-item active":"tab-item",onClick:function(){return x(c)},children:s.props.label},s.props.label)})}),(0,d.jsx)("div",{className:"tab-content",children:(u=r[T])===null||u===void 0||(_=u.props)===null||_===void 0?void 0:_.children})]})},j=h}}]);
diff --git a/docs__js-logs__linked-list.md.07a441c4.chunk.css b/docs__js-logs__linked-list.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__js-logs__linked-list.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__js-logs__linked-list.md.e100bb62.async.js b/docs__js-logs__linked-list.md.e100bb62.async.js
new file mode 100644
index 0000000..3208b30
--- /dev/null
+++ b/docs__js-logs__linked-list.md.e100bb62.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[533],{3832:function(E,d,i){i.r(d);var c=i(16878),s=i(84475),v=i(646),a=i(25778),u=i(1778),_=i(6749),m=i(48739),h=i(38039),n=i(5899),j=i(93236),e=i(62086);function x(){var o=(0,n.eL)(),l=o.texts;return(0,e.jsx)(n.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u94FE\u8868",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u94FE\u8868",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/tag/linked-list/problemset/",children:l[0].value})]}),(0,e.jsx)("p",{children:l[1].value}),(0,e.jsx)("p",{children:l[2].value}),(0,e.jsxs)("div",{align:"center",children:[l[3].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202211201342939.png",style:{maxWidth:"100%"}}),l[4].value,(0,e.jsx)("div",{align:"center",children:l[5].value})]}),l[6].value,(0,e.jsxs)("h2",{id:"\u94FE\u8868\u53CC\u6307\u9488",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u94FE\u8868\u53CC\u6307\u9488",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u94FE\u8868\u53CC\u6307\u9488"]}),(0,e.jsxs)("h3",{id:"\u5251\u6307-offer-22-\u94FE\u8868\u4E2D\u5012\u6570\u7B2C-k-\u4E2A\u8282\u70B9",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-22-\u94FE\u8868\u4E2D\u5012\u6570\u7B2C-k-\u4E2A\u8282\u70B9",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/",children:l[7].value})," ",(0,e.jsx)(s.Z,{type:"success",children:l[8].value})]}),(0,e.jsxs)("p",{children:[l[9].value,(0,e.jsx)("br",{}),l[10].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[11].value}),(0,e.jsx)("li",{children:l[12].value}),(0,e.jsx)("li",{children:l[13].value}),(0,e.jsx)("li",{children:l[14].value}),(0,e.jsx)("li",{children:l[15].value}),(0,e.jsx)("li",{children:l[16].value}),(0,e.jsx)("li",{children:l[17].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[18].value}),(0,e.jsxs)("h3",{id:"19\u5220\u9664\u94FE\u8868\u7684\u5012\u6570\u7B2C-n-\u4E2A\u7ED3\u70B9",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#19\u5220\u9664\u94FE\u8868\u7684\u5012\u6570\u7B2C-n-\u4E2A\u7ED3\u70B9",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/remove-nth-node-from-end-of-list/",children:l[19].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[20].value})]}),(0,e.jsxs)("p",{children:[l[21].value,(0,e.jsx)("br",{}),l[22].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[23].value}),(0,e.jsxs)("li",{children:[l[24].value,(0,e.jsx)(n.rU,{to:"/js-logs/linked-list#%E5%89%91%E6%8C%87-offer-22-%E9%93%BE%E8%A1%A8%E4%B8%AD%E5%80%92%E6%95%B0%E7%AC%AC-k-%E4%B8%AA%E8%8A%82%E7%82%B9",children:l[25].value}),l[26].value]}),(0,e.jsx)("li",{children:l[27].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[28].value}),(0,e.jsxs)("p",{children:[l[29].value,(0,e.jsx)("br",{}),l[30].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[31].value}),(0,e.jsxs)("li",{children:[l[32].value,(0,e.jsx)("code",{children:l[33].value}),l[34].value]}),(0,e.jsx)("li",{children:l[35].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[36].value}),(0,e.jsxs)("h3",{id:"21\u5408\u5E76\u4E24\u4E2A\u6709\u5E8F\u94FE\u8868",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#21\u5408\u5E76\u4E24\u4E2A\u6709\u5E8F\u94FE\u8868",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/merge-two-sorted-lists/",children:l[37].value})," ",(0,e.jsx)(s.Z,{type:"success",children:l[38].value})]}),(0,e.jsxs)("p",{children:[l[39].value,(0,e.jsx)("br",{}),l[40].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[41].value}),(0,e.jsx)("li",{children:l[42].value}),(0,e.jsx)("li",{children:l[43].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[44].value}),(0,e.jsxs)("h3",{id:"23\u5408\u5E76-k-\u4E2A\u5347\u5E8F\u94FE\u8868",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#23\u5408\u5E76-k-\u4E2A\u5347\u5E8F\u94FE\u8868",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/merge-k-sorted-lists/",children:l[45].value})," ",(0,e.jsx)(s.Z,{type:"error",children:l[46].value})]}),(0,e.jsxs)("p",{children:[l[47].value,(0,e.jsx)("br",{}),l[48].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[49].value}),(0,e.jsxs)("li",{children:[l[50].value,(0,e.jsx)(n.rU,{to:"#21%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E6%9C%89%E5%BA%8F%E9%93%BE%E8%A1%A8",children:l[51].value}),l[52].value]}),(0,e.jsx)("li",{children:l[53].value}),(0,e.jsx)("li",{children:l[54].value}),(0,e.jsx)("li",{children:l[55].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[56].value}),(0,e.jsxs)("h3",{id:"86\u5206\u9694\u94FE\u8868",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#86\u5206\u9694\u94FE\u8868",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/partition-list/",children:l[57].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[58].value})]}),(0,e.jsxs)("p",{children:[l[59].value,(0,e.jsx)("br",{}),l[60].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[61].value}),(0,e.jsx)("li",{children:l[62].value}),(0,e.jsx)("li",{children:l[63].value}),(0,e.jsx)("li",{children:l[64].value}),(0,e.jsx)("li",{children:l[65].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[66].value}),(0,e.jsxs)("h3",{id:"141\u73AF\u5F62\u94FE\u8868",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#141\u73AF\u5F62\u94FE\u8868",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/linked-list-cycle/",children:l[67].value})," ",(0,e.jsx)(s.Z,{type:"success",children:l[68].value})]}),(0,e.jsxs)("p",{children:[l[69].value,(0,e.jsx)("br",{}),l[70].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[71].value}),(0,e.jsx)("li",{children:l[72].value}),(0,e.jsx)("li",{children:l[73].value}),(0,e.jsx)("li",{children:l[74].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[75].value}),(0,e.jsxs)("h3",{id:"142\u73AF\u5F62\u94FE\u8868-ii",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#142\u73AF\u5F62\u94FE\u8868-ii",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/linked-list-cycle-ii/",children:l[76].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[77].value})]}),(0,e.jsxs)("p",{children:[l[78].value,(0,e.jsx)("br",{}),l[79].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[80].value}),(0,e.jsx)("li",{children:l[81].value}),(0,e.jsx)("li",{children:l[82].value}),(0,e.jsx)("li",{children:l[83].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[84].value}),(0,e.jsxs)("h3",{id:"160\u76F8\u4EA4\u94FE\u8868",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#160\u76F8\u4EA4\u94FE\u8868",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/intersection-of-two-linked-lists/",children:l[85].value})," ",(0,e.jsx)(s.Z,{type:"success",children:l[86].value})]}),(0,e.jsxs)("p",{children:[l[87].value,(0,e.jsx)("br",{}),l[88].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[89].value}),(0,e.jsx)("li",{children:l[90].value}),(0,e.jsx)("li",{children:l[91].value}),(0,e.jsx)("li",{children:l[92].value}),(0,e.jsx)("li",{children:l[93].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[94].value}),(0,e.jsxs)("h3",{id:"876\u94FE\u8868\u7684\u4E2D\u95F4\u7ED3\u70B9",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#876\u94FE\u8868\u7684\u4E2D\u95F4\u7ED3\u70B9",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/middle-of-the-linked-list/",children:l[95].value})," ",(0,e.jsx)(s.Z,{type:"success",children:l[96].value})]}),(0,e.jsxs)("p",{children:[l[97].value,(0,e.jsx)("br",{}),l[98].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[99].value}),(0,e.jsx)("li",{children:l[100].value}),(0,e.jsx)("li",{children:l[101].value}),(0,e.jsx)("li",{children:l[102].value}),(0,e.jsx)("li",{children:l[103].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[104].value}),(0,e.jsxs)("h3",{id:"977\u6709\u5E8F\u6570\u7EC4\u7684\u5E73\u65B9",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#977\u6709\u5E8F\u6570\u7EC4\u7684\u5E73\u65B9",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/squares-of-a-sorted-array/",children:l[105].value})," ",(0,e.jsx)(s.Z,{type:"success",children:l[106].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[107].value}),(0,e.jsx)("li",{children:l[108].value}),(0,e.jsx)("li",{children:l[109].value}),(0,e.jsx)("li",{children:l[110].value}),(0,e.jsx)("li",{children:l[111].value}),(0,e.jsx)("li",{children:l[112].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[113].value}),(0,e.jsxs)("h2",{id:"\u53CD\u8F6C\u94FE\u8868",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u53CD\u8F6C\u94FE\u8868",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u53CD\u8F6C\u94FE\u8868"]}),(0,e.jsxs)("h3",{id:"25k-\u4E2A\u4E00\u7EC4\u7FFB\u8F6C\u94FE\u8868",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#25k-\u4E2A\u4E00\u7EC4\u7FFB\u8F6C\u94FE\u8868",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/reverse-nodes-in-k-group/",children:l[114].value})," ",(0,e.jsx)(s.Z,{type:"error",children:l[115].value})]}),(0,e.jsxs)("p",{children:[l[116].value,(0,e.jsx)("br",{}),l[117].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[118].value}),(0,e.jsx)("li",{children:l[119].value}),(0,e.jsx)("li",{children:l[120].value}),(0,e.jsx)("li",{children:l[121].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[122].value}),(0,e.jsxs)("h3",{id:"206\u53CD\u8F6C\u94FE\u8868",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#206\u53CD\u8F6C\u94FE\u8868",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/reverse-linked-list/",children:l[123].value})," ",(0,e.jsx)(s.Z,{type:"success",children:l[124].value})]}),(0,e.jsxs)("p",{children:[l[125].value,(0,e.jsx)("br",{}),l[126].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[127].value}),(0,e.jsx)("li",{children:l[128].value}),(0,e.jsx)("li",{children:l[129].value}),(0,e.jsx)("li",{children:l[130].value}),(0,e.jsx)("li",{children:l[131].value}),(0,e.jsx)("li",{children:l[132].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[133].value}),(0,e.jsxs)("h3",{id:"\u5251\u6307-offer-24-\u53CD\u8F6C\u94FE\u8868",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-24-\u53CD\u8F6C\u94FE\u8868",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/fan-zhuan-lian-biao-lcof/",children:l[134].value})," ",(0,e.jsx)(s.Z,{type:"success",children:l[135].value})]}),(0,e.jsxs)("p",{children:[l[136].value,(0,e.jsx)(n.rU,{to:"#206%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8",children:l[137].value}),l[138].value]}),(0,e.jsx)(u.Z,{lang:"js",children:l[139].value}),(0,e.jsxs)("h3",{id:"92\u53CD\u8F6C\u94FE\u8868-ii",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#92\u53CD\u8F6C\u94FE\u8868-ii",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)(n.rU,{to:"/js-logs/%5Bhttp:xx%5D(https://leetcode.cn/problems/reverse-linked-list-ii/)",children:l[140].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[141].value})]}),(0,e.jsxs)("p",{children:[l[142].value,(0,e.jsx)("br",{}),l[143].value]}),(0,e.jsx)(u.Z,{lang:"js",children:l[144].value}),(0,e.jsxs)("h2",{id:"\u56DE\u6587\u94FE\u8868",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u56DE\u6587\u94FE\u8868",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u56DE\u6587\u94FE\u8868"]}),(0,e.jsxs)("h3",{id:"234\u56DE\u6587\u94FE\u8868",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#234\u56DE\u6587\u94FE\u8868",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/palindrome-linked-list/",children:l[145].value})," ",(0,e.jsx)(s.Z,{type:"success",children:l[146].value})]}),(0,e.jsxs)("p",{children:[l[147].value,(0,e.jsx)("br",{}),l[148].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[149].value}),(0,e.jsx)("li",{children:l[150].value}),(0,e.jsx)("li",{children:l[151].value}),(0,e.jsx)("li",{children:l[152].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[153].value}),(0,e.jsxs)("h3",{id:"\u5251\u6307-offer-ii-027-\u56DE\u6587\u94FE\u8868",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-ii-027-\u56DE\u6587\u94FE\u8868",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/aMhZSa/",children:l[154].value})," ",(0,e.jsx)(s.Z,{type:"success",children:l[155].value})]}),(0,e.jsxs)("p",{children:[l[156].value,(0,e.jsx)(n.rU,{to:"#234%E5%9B%9E%E6%96%87%E9%93%BE%E8%A1%A8",children:l[157].value}),l[158].value]}),(0,e.jsxs)("h2",{id:"86\u5206\u9694\u94FE\u8868-1",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#86\u5206\u9694\u94FE\u8868-1",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/partition-list/",children:l[159].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:l[160].value})]}),(0,e.jsxs)("p",{children:[l[161].value,(0,e.jsx)("br",{}),l[162].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[163].value}),(0,e.jsx)("li",{children:l[164].value}),(0,e.jsx)("li",{children:l[165].value}),(0,e.jsx)("li",{children:l[166].value}),(0,e.jsx)("li",{children:l[167].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:l[168].value})]})})})}d.default=x},48739:function(E,d,i){var c=i(93236),s=function(a){return(0,c.createElement)(a.children)};d.Z=s},38039:function(E,d,i){i.d(d,{Z:function(){return _}});var c=i(54306),s=i.n(c),v=i(93236),a=i(62086),u=function(h){var n,j,e,x=(h==null||(n=h.children)===null||n===void 0?void 0:n.filter(function(r){return r!=`
+ `}))||[],o=(0,v.useState)(0),l=s()(o,2),p=l[0],f=l[1],F=function(t){f(t)};return(0,a.jsxs)("div",{className:"tab-container",children:[(0,a.jsx)("ul",{className:"tab-list",children:x.map(function(r,t){return(0,a.jsx)("li",{className:p===t?"tab-item active":"tab-item",onClick:function(){return F(t)},children:r.props.label},r.props.label)})}),(0,a.jsx)("div",{className:"tab-content",children:(j=x[p])===null||j===void 0||(e=j.props)===null||e===void 0?void 0:e.children})]})},_=u}}]);
diff --git a/docs__js-logs__math.md.07a441c4.chunk.css b/docs__js-logs__math.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__js-logs__math.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__js-logs__math.md.8fbdd597.async.js b/docs__js-logs__math.md.8fbdd597.async.js
new file mode 100644
index 0000000..7fcecd8
--- /dev/null
+++ b/docs__js-logs__math.md.8fbdd597.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[905],{85746:function(x,a,n){n.r(a);var r=n(16878),d=n(84475),v=n(646),i=n(25778),t=n(1778),j=n(6749),f=n(48739),u=n(38039),l=n(5899),c=n(93236),e=n(62086);function o(){var m=(0,l.eL)(),s=m.texts;return(0,e.jsx)(l.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u6570\u5B66",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6570\u5B66",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6570\u5B66"]}),(0,e.jsxs)("h2",{id:"50pow-x-n",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#50pow-x-n",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/powx-n/",children:s[0].value})," ",(0,e.jsx)(d.Z,{type:"warning",children:s[1].value})]}),(0,e.jsx)(t.Z,{lang:"js",children:s[2].value}),(0,e.jsxs)("h2",{id:"233\u6570\u5B57-1-\u7684\u4E2A\u6570",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#233\u6570\u5B57-1-\u7684\u4E2A\u6570",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/number-of-digit-one/",children:s[3].value})," ",(0,e.jsx)(d.Z,{type:"error",children:s[4].value})]}),(0,e.jsx)("p",{children:(0,e.jsx)("a",{href:"https://leetcode.cn/problems/1nzheng-shu-zhong-1chu-xian-de-ci-shu-lcof/solution/1n-zheng-shu-zhong-1-chu-xian-de-ci-shu-umaj8/",children:s[5].value})}),(0,e.jsxs)("div",{align:"center",children:[s[6].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202212201053637.png",style:{maxWidth:"100%"}}),s[7].value,(0,e.jsx)("div",{align:"center",children:s[8].value})]}),(0,e.jsxs)("p",{children:[s[9].value,(0,e.jsx)(l.rU,{to:"/js-logs/sword-point-offer#%E5%89%91%E6%8C%87-offer-43-1n-%E6%95%B4%E6%95%B0%E4%B8%AD-1-%E5%87%BA%E7%8E%B0%E7%9A%84%E6%AC%A1%E6%95%B0",children:s[10].value}),s[11].value]}),(0,e.jsx)(t.Z,{lang:"js",children:s[12].value}),(0,e.jsxs)("h2",{id:"400\u7B2C-n-\u4F4D\u6570\u5B57",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#400\u7B2C-n-\u4F4D\u6570\u5B57",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/nth-digit/",children:s[13].value})," ",(0,e.jsx)(d.Z,{type:"warning",children:s[14].value})]}),(0,e.jsx)(t.Z,{lang:"js",children:s[15].value})]})})})}a.default=o},48739:function(x,a,n){var r=n(93236),d=function(i){return(0,r.createElement)(i.children)};a.Z=d},38039:function(x,a,n){n.d(a,{Z:function(){return j}});var r=n(54306),d=n.n(r),v=n(93236),i=n(62086),t=function(u){var l,c,e,o=(u==null||(l=u.children)===null||l===void 0?void 0:l.filter(function(_){return _!=`
+ `}))||[],m=(0,v.useState)(0),s=d()(m,2),E=s[0],g=s[1],T=function(h){g(h)};return(0,i.jsxs)("div",{className:"tab-container",children:[(0,i.jsx)("ul",{className:"tab-list",children:o.map(function(_,h){return(0,i.jsx)("li",{className:E===h?"tab-item active":"tab-item",onClick:function(){return T(h)},children:_.props.label},_.props.label)})}),(0,i.jsx)("div",{className:"tab-content",children:(c=o[E])===null||c===void 0||(e=c.props)===null||e===void 0?void 0:e.children})]})},j=t}}]);
diff --git a/docs__js-logs__n-sum.md.07a441c4.chunk.css b/docs__js-logs__n-sum.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__js-logs__n-sum.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__js-logs__n-sum.md.9b937819.async.js b/docs__js-logs__n-sum.md.9b937819.async.js
new file mode 100644
index 0000000..dd67573
--- /dev/null
+++ b/docs__js-logs__n-sum.md.9b937819.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[607],{93285:function(x,u,s){s.r(u);var r=s(16878),n=s(84475),o=s(646),d=s(25778),a=s(1778),m=s(6749),b=s(48739),t=s(38039),i=s(5899),c=s(93236),e=s(62086);function v(){var j=(0,i.eL)(),l=j.texts;return(0,e.jsx)(i.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"nsum",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#nsum",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"nSum"]}),(0,e.jsxs)("h2",{id:"1\u4E24\u6570\u4E4B\u548C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1\u4E24\u6570\u4E4B\u548C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/two-sum/",children:l[0].value})," ",(0,e.jsx)(n.Z,{type:"success",children:l[1].value})]}),(0,e.jsxs)("p",{children:[l[2].value,(0,e.jsx)("br",{}),l[3].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[4].value}),(0,e.jsx)("li",{children:l[5].value}),(0,e.jsx)("li",{children:l[6].value}),(0,e.jsx)("li",{children:l[7].value})]}),(0,e.jsx)("p",{children:l[8].value}),(0,e.jsx)(a.Z,{lang:"js",children:l[9].value}),(0,e.jsxs)("p",{children:[l[10].value,(0,e.jsx)("br",{}),l[11].value,(0,e.jsx)("br",{}),l[12].value,(0,e.jsx)("br",{}),l[13].value,(0,e.jsx)("code",{children:l[14].value}),l[15].value,(0,e.jsx)("code",{children:l[16].value}),l[17].value]}),(0,e.jsx)(a.Z,{lang:"js",children:l[18].value}),(0,e.jsxs)("h2",{id:"15\u4E09\u6570\u4E4B\u548C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#15\u4E09\u6570\u4E4B\u548C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/3sum/",children:l[19].value})," ",(0,e.jsx)(n.Z,{type:"warning",children:l[20].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[21].value}),(0,e.jsxs)("li",{children:[l[22].value,(0,e.jsx)("code",{children:l[23].value}),l[24].value]}),(0,e.jsx)("li",{children:l[25].value}),(0,e.jsx)("li",{children:l[26].value})]}),(0,e.jsx)(a.Z,{lang:"js",children:l[27].value}),(0,e.jsxs)("p",{children:[l[28].value,(0,e.jsx)("code",{children:l[29].value}),l[30].value,(0,e.jsx)("code",{children:l[31].value})]}),(0,e.jsx)(a.Z,{lang:"js",children:l[32].value}),(0,e.jsxs)("h2",{id:"18\u56DB\u6570\u4E4B\u548C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#18\u56DB\u6570\u4E4B\u548C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/4sum/",children:l[33].value})," ",(0,e.jsx)(n.Z,{type:"warning",children:l[34].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[l[35].value,(0,e.jsx)("code",{children:l[36].value}),l[37].value]}),(0,e.jsxs)("li",{children:[l[38].value,(0,e.jsx)(i.rU,{to:"#15%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C",children:l[39].value}),l[40].value]}),(0,e.jsxs)("li",{children:[l[41].value,(0,e.jsx)("code",{children:l[42].value}),l[43].value]})]}),(0,e.jsx)(a.Z,{lang:"js",children:l[44].value})]})})})}u.default=v},48739:function(x,u,s){var r=s(93236),n=function(d){return(0,r.createElement)(d.children)};u.Z=n},38039:function(x,u,s){s.d(u,{Z:function(){return m}});var r=s(54306),n=s.n(r),o=s(93236),d=s(62086),a=function(t){var i,c,e,v=(t==null||(i=t.children)===null||i===void 0?void 0:i.filter(function(_){return _!=`
+ `}))||[],j=(0,o.useState)(0),l=n()(j,2),E=l[0],f=l[1],T=function(h){f(h)};return(0,d.jsxs)("div",{className:"tab-container",children:[(0,d.jsx)("ul",{className:"tab-list",children:v.map(function(_,h){return(0,d.jsx)("li",{className:E===h?"tab-item active":"tab-item",onClick:function(){return T(h)},children:_.props.label},_.props.label)})}),(0,d.jsx)("div",{className:"tab-content",children:(c=v[E])===null||c===void 0||(e=c.props)===null||e===void 0?void 0:e.children})]})},m=a}}]);
diff --git a/docs__js-logs__sliding-window.md.07a441c4.chunk.css b/docs__js-logs__sliding-window.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__js-logs__sliding-window.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__js-logs__sliding-window.md.895d1938.async.js b/docs__js-logs__sliding-window.md.895d1938.async.js
new file mode 100644
index 0000000..9a926c7
--- /dev/null
+++ b/docs__js-logs__sliding-window.md.895d1938.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[870],{68959:function(o,a,u){u.r(a);var c=u(16878),i=u(84475),v=u(646),d=u(25778),s=u(1778),E=u(6749),D=u(48739),h=u(38039),n=u(5899),j=u(93236),e=u(62086);function t(){var _=(0,n.eL)(),l=_.texts;return(0,e.jsx)(n.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u6ED1\u52A8\u7A97\u53E3",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6ED1\u52A8\u7A97\u53E3",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6ED1\u52A8\u7A97\u53E3"]}),(0,e.jsxs)("h2",{id:"\u5355\u8C03\u961F\u5217\u89E3\u51B3\u6ED1\u52A8\u7A97\u53E3\u95EE\u9898",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5355\u8C03\u961F\u5217\u89E3\u51B3\u6ED1\u52A8\u7A97\u53E3\u95EE\u9898",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u5355\u8C03\u961F\u5217\u89E3\u51B3\u6ED1\u52A8\u7A97\u53E3\u95EE\u9898"]}),(0,e.jsxs)("h3",{id:"239\u6ED1\u52A8\u7A97\u53E3\u6700\u5927\u503C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#239\u6ED1\u52A8\u7A97\u53E3\u6700\u5927\u503C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/sliding-window-maximum/",children:l[0].value})," ",(0,e.jsx)(i.Z,{type:"error",children:l[1].value})]}),(0,e.jsxs)("p",{children:[l[2].value,(0,e.jsx)("br",{}),l[3].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[4].value}),(0,e.jsx)("li",{children:l[5].value}),(0,e.jsx)("li",{children:l[6].value}),(0,e.jsx)("li",{children:l[7].value}),(0,e.jsx)("li",{children:l[8].value}),(0,e.jsx)("li",{children:l[9].value}),(0,e.jsxs)("li",{children:[l[10].value,(0,e.jsx)("code",{children:l[11].value}),l[12].value]}),(0,e.jsx)("li",{children:l[13].value}),(0,e.jsx)("li",{children:l[14].value}),(0,e.jsx)("li",{children:l[15].value}),(0,e.jsx)("li",{children:l[16].value}),(0,e.jsx)("li",{children:l[17].value}),(0,e.jsx)("li",{children:l[18].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[19].value}),(0,e.jsxs)("h3",{id:"\u5251\u6307-offer59-i\u6ED1\u52A8\u7A97\u53E3\u7684\u6700\u5927\u503C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer59-i\u6ED1\u52A8\u7A97\u53E3\u7684\u6700\u5927\u503C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/hua-dong-chuang-kou-de-zui-da-zhi-lcof/",children:l[20].value})," ",(0,e.jsx)(i.Z,{type:"error",children:l[21].value})]}),(0,e.jsxs)("p",{children:[l[22].value,(0,e.jsx)("br",{}),l[23].value]}),(0,e.jsxs)("p",{children:[l[24].value,(0,e.jsx)(n.rU,{to:"/js-logs/sliding-window#239%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E6%9C%80%E5%A4%A7%E5%80%BC",children:l[25].value}),l[26].value]}),(0,e.jsx)(s.Z,{lang:"js",children:l[27].value}),(0,e.jsxs)("h3",{id:"\u9762\u8BD5\u9898-59-ii\u961F\u5217\u7684\u6700\u5927\u503C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u9762\u8BD5\u9898-59-ii\u961F\u5217\u7684\u6700\u5927\u503C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/dui-lie-de-zui-da-zhi-lcof/",children:l[28].value})," ",(0,e.jsx)(i.Z,{type:"warning",children:l[29].value})]}),(0,e.jsxs)("p",{children:[l[30].value,(0,e.jsx)("br",{}),l[31].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[32].value}),(0,e.jsxs)("li",{children:[l[33].value,(0,e.jsx)(n.rU,{to:"/js-logs/sliding-window#239%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E6%9C%80%E5%A4%A7%E5%80%BC",children:l[34].value}),l[35].value]}),(0,e.jsxs)("li",{children:[l[36].value,(0,e.jsx)("code",{children:l[37].value}),l[38].value]}),(0,e.jsx)("li",{children:l[39].value}),(0,e.jsx)("li",{children:l[40].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[41].value}),(0,e.jsxs)("h2",{id:"567\u5B57\u7B26\u4E32\u7684\u6392\u5217",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#567\u5B57\u7B26\u4E32\u7684\u6392\u5217",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/permutation-in-string/",children:l[42].value})," ",(0,e.jsx)(i.Z,{type:"warning",children:l[43].value})]}),(0,e.jsxs)("p",{children:[l[44].value,(0,e.jsx)("br",{}),l[45].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[46].value}),(0,e.jsx)("li",{children:l[47].value}),(0,e.jsx)("li",{children:l[48].value}),(0,e.jsx)("li",{children:l[49].value}),(0,e.jsx)("li",{children:l[50].value}),(0,e.jsx)("li",{children:l[51].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[52].value}),(0,e.jsx)("p",{children:l[53].value}),(0,e.jsx)(s.Z,{lang:"js",children:l[54].value}),(0,e.jsxs)("h2",{id:"3\u65E0\u91CD\u590D\u5B57\u7B26\u7684\u6700\u957F\u5B50\u4E32",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#3\u65E0\u91CD\u590D\u5B57\u7B26\u7684\u6700\u957F\u5B50\u4E32",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/longest-substring-without-repeating-characters/",children:l[55].value})," ",(0,e.jsx)(i.Z,{type:"warning",children:l[56].value})]}),(0,e.jsxs)("p",{children:[l[57].value,(0,e.jsx)("br",{}),l[58].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[59].value}),(0,e.jsx)("li",{children:l[60].value}),(0,e.jsx)("li",{children:l[61].value}),(0,e.jsx)("li",{children:l[62].value}),(0,e.jsx)("li",{children:l[63].value}),(0,e.jsx)("li",{children:l[64].value}),(0,e.jsx)("li",{children:l[65].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[66].value}),(0,e.jsx)("p",{children:l[67].value}),(0,e.jsx)(s.Z,{lang:"js",children:l[68].value}),(0,e.jsxs)("h2",{id:"9\u56DE\u6587\u6570",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#9\u56DE\u6587\u6570",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/palindrome-number/",children:l[69].value})," ",(0,e.jsx)(i.Z,{type:"success",children:l[70].value})]}),(0,e.jsxs)("p",{children:[l[71].value,(0,e.jsx)("br",{}),l[72].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[73].value}),(0,e.jsx)("li",{children:l[74].value}),(0,e.jsx)("li",{children:l[75].value}),(0,e.jsx)("li",{children:l[76].value}),(0,e.jsx)("li",{children:l[77].value}),(0,e.jsx)("li",{children:l[78].value}),(0,e.jsx)("li",{children:l[79].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[80].value}),(0,e.jsxs)("h2",{id:"76\u6700\u5C0F\u8986\u76D6\u5B50\u4E32",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#76\u6700\u5C0F\u8986\u76D6\u5B50\u4E32",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/minimum-window-substring/",children:l[81].value})," ",(0,e.jsx)(i.Z,{type:"error",children:l[82].value})]}),(0,e.jsxs)("p",{children:[l[83].value,(0,e.jsx)("br",{}),l[84].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[85].value}),(0,e.jsx)("li",{children:l[86].value}),(0,e.jsx)("li",{children:l[87].value}),(0,e.jsx)("li",{children:l[88].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[89].value}),(0,e.jsxs)("h2",{id:"438\u627E\u5230\u5B57\u7B26\u4E32\u4E2D\u6240\u6709\u5B57\u6BCD\u5F02\u4F4D\u8BCD",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#438\u627E\u5230\u5B57\u7B26\u4E32\u4E2D\u6240\u6709\u5B57\u6BCD\u5F02\u4F4D\u8BCD",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/find-all-anagrams-in-a-string/",children:l[90].value})," ",(0,e.jsx)(i.Z,{type:"warning",children:l[91].value})]}),(0,e.jsxs)("p",{children:[l[92].value,(0,e.jsx)("br",{}),l[93].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[94].value}),(0,e.jsx)("li",{children:l[95].value}),(0,e.jsxs)("li",{children:[l[96].value,(0,e.jsx)(n.rU,{to:"#76%E6%9C%80%E5%B0%8F%E8%A6%86%E7%9B%96%E5%AD%90%E4%B8%B2",children:l[97].value})]})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[98].value})]})})})}a.default=t},48739:function(o,a,u){var c=u(93236),i=function(d){return(0,c.createElement)(d.children)};a.Z=i},38039:function(o,a,u){u.d(a,{Z:function(){return E}});var c=u(54306),i=u.n(c),v=u(93236),d=u(62086),s=function(h){var n,j,e,t=(h==null||(n=h.children)===null||n===void 0?void 0:n.filter(function(r){return r!=`
+ `}))||[],_=(0,v.useState)(0),l=i()(_,2),m=l[0],B=l[1],A=function(x){B(x)};return(0,d.jsxs)("div",{className:"tab-container",children:[(0,d.jsx)("ul",{className:"tab-list",children:t.map(function(r,x){return(0,d.jsx)("li",{className:m===x?"tab-item active":"tab-item",onClick:function(){return A(x)},children:r.props.label},r.props.label)})}),(0,d.jsx)("div",{className:"tab-content",children:(j=t[m])===null||j===void 0||(e=j.props)===null||e===void 0?void 0:e.children})]})},E=s}}]);
diff --git a/docs__js-logs__sort.md.07a441c4.chunk.css b/docs__js-logs__sort.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__js-logs__sort.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__js-logs__sort.md.9e2d08de.async.js b/docs__js-logs__sort.md.9e2d08de.async.js
new file mode 100644
index 0000000..a63b88a
--- /dev/null
+++ b/docs__js-logs__sort.md.9e2d08de.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[430],{38431:function(x,d,n){n.r(d);var t=n(16878),i=n(84475),o=n(646),u=n(25778),s=n(1778),m=n(6749),f=n(48739),c=n(38039),a=n(5899),_=n(93236),e=n(62086);function h(){var v=(0,a.eL)(),l=v.texts;return(0,e.jsx)(a.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u6392\u5E8F",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6392\u5E8F",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u6392\u5E8F"]}),(0,e.jsxs)("h2",{id:"215\u6570\u7EC4\u4E2D\u7684\u7B2C-k-\u4E2A\u6700\u5927\u5143\u7D20",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#215\u6570\u7EC4\u4E2D\u7684\u7B2C-k-\u4E2A\u6700\u5927\u5143\u7D20",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/kth-largest-element-in-an-array/",children:l[0].value})," ",(0,e.jsx)(i.Z,{type:"warning",children:l[1].value})]}),(0,e.jsx)("p",{children:l[2].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[3].value}),(0,e.jsx)("li",{children:l[4].value}),(0,e.jsx)("li",{children:l[5].value}),(0,e.jsx)("li",{children:l[6].value}),(0,e.jsx)("li",{children:l[7].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[8].value}),(0,e.jsxs)("p",{children:[l[9].value,(0,e.jsx)("br",{}),l[10].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[11].value}),(0,e.jsx)("li",{children:l[12].value}),(0,e.jsx)("li",{children:l[13].value}),(0,e.jsx)("li",{children:l[14].value}),(0,e.jsx)("li",{children:l[15].value}),(0,e.jsx)("li",{children:l[16].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[17].value}),(0,e.jsxs)("h2",{id:"315\u8BA1\u7B97\u53F3\u4FA7\u5C0F\u4E8E\u5F53\u524D\u5143\u7D20\u7684\u4E2A\u6570",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#315\u8BA1\u7B97\u53F3\u4FA7\u5C0F\u4E8E\u5F53\u524D\u5143\u7D20\u7684\u4E2A\u6570",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/count-of-smaller-numbers-after-self/",children:l[18].value})," ",(0,e.jsx)(i.Z,{type:"error",children:l[19].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[20].value}),(0,e.jsx)("li",{children:l[21].value}),(0,e.jsx)("li",{children:l[22].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[23].value}),(0,e.jsxs)("h2",{id:"327\u533A\u95F4\u548C\u7684\u4E2A\u6570",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#327\u533A\u95F4\u548C\u7684\u4E2A\u6570",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/count-of-range-sum/",children:l[24].value})," ",(0,e.jsx)(i.Z,{type:"error",children:l[25].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[26].value}),(0,e.jsx)("li",{children:l[27].value})]}),(0,e.jsx)(s.Z,{lang:"js",children:l[28].value}),(0,e.jsxs)("h2",{id:"493\u7FFB\u8F6C\u5BF9",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#493\u7FFB\u8F6C\u5BF9",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/reverse-pairs/",children:l[29].value})," ",(0,e.jsx)(i.Z,{type:"error",children:l[30].value})]}),(0,e.jsx)("p",{children:(0,e.jsx)("a",{href:"https://leetcode.cn/problems/reverse-pairs/solution/shou-hua-tu-jie-yi-bu-yi-bu-jie-xi-gui-bing-pai-xu/",children:l[31].value})}),(0,e.jsx)(s.Z,{lang:"js",children:l[32].value}),(0,e.jsxs)("h2",{id:"912\u6392\u5E8F\u6570\u7EC4",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#912\u6392\u5E8F\u6570\u7EC4",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/sort-an-array/",children:l[33].value})," ",(0,e.jsx)(i.Z,{type:"warning",children:l[34].value})]}),(0,e.jsx)("p",{children:(0,e.jsx)("a",{href:"https://mp.weixin.qq.com/s/8ZTMhvHJK_He48PpSt_AmQ",children:l[35].value})}),(0,e.jsx)(s.Z,{lang:"js",children:l[36].value}),(0,e.jsx)("p",{children:l[37].value}),(0,e.jsx)(s.Z,{lang:"js",children:l[38].value}),(0,e.jsx)("p",{children:l[39].value}),(0,e.jsx)(s.Z,{lang:"js",children:l[40].value})]})})})}d.default=h},48739:function(x,d,n){var t=n(93236),i=function(u){return(0,t.createElement)(u.children)};d.Z=i},38039:function(x,d,n){n.d(d,{Z:function(){return m}});var t=n(54306),i=n.n(t),o=n(93236),u=n(62086),s=function(c){var a,_,e,h=(c==null||(a=c.children)===null||a===void 0?void 0:a.filter(function(r){return r!=`
+ `}))||[],v=(0,o.useState)(0),l=i()(v,2),E=l[0],b=l[1],C=function(j){b(j)};return(0,u.jsxs)("div",{className:"tab-container",children:[(0,u.jsx)("ul",{className:"tab-list",children:h.map(function(r,j){return(0,u.jsx)("li",{className:E===j?"tab-item active":"tab-item",onClick:function(){return C(j)},children:r.props.label},r.props.label)})}),(0,u.jsx)("div",{className:"tab-content",children:(_=h[E])===null||_===void 0||(e=_.props)===null||e===void 0?void 0:e.children})]})},m=s}}]);
diff --git a/docs__js-logs__stack.md.07a441c4.chunk.css b/docs__js-logs__stack.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__js-logs__stack.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__js-logs__stack.md.d0cc9620.async.js b/docs__js-logs__stack.md.d0cc9620.async.js
new file mode 100644
index 0000000..1340162
--- /dev/null
+++ b/docs__js-logs__stack.md.d0cc9620.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[126],{13425:function(o,a,s){s.r(a);var c=s(16878),n=s(84475),v=s(646),i=s(25778),d=s(1778),m=s(6749),g=s(48739),t=s(38039),u=s(5899),_=s(93236),e=s(62086);function h(){var x=(0,u.eL)(),l=x.texts;return(0,e.jsx)(u.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u6808",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u6808",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/tag/stack/problemset/",children:l[0].value})]}),(0,e.jsx)("p",{children:l[1].value}),(0,e.jsx)("p",{children:l[2].value}),(0,e.jsxs)("h2",{id:"20\u6709\u6548\u7684\u62EC\u53F7",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#20\u6709\u6548\u7684\u62EC\u53F7",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/valid-parentheses/",children:l[3].value})," ",(0,e.jsx)(n.Z,{type:"success",children:l[4].value})]}),(0,e.jsxs)("p",{children:[l[5].value,(0,e.jsx)("br",{}),l[6].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[7].value}),(0,e.jsx)("li",{children:l[8].value}),(0,e.jsx)("li",{children:l[9].value}),(0,e.jsx)("li",{children:l[10].value}),(0,e.jsx)("li",{children:l[11].value}),(0,e.jsx)("li",{children:l[12].value}),(0,e.jsx)("li",{children:l[13].value})]}),(0,e.jsx)("p",{children:l[14].value}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:l[15].value})}),(0,e.jsx)(d.Z,{lang:"js",children:l[16].value}),(0,e.jsxs)("h2",{id:"232\u7528\u6808\u5B9E\u73B0\u961F\u5217",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#232\u7528\u6808\u5B9E\u73B0\u961F\u5217",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/implement-queue-using-stacks/",children:l[17].value})," ",(0,e.jsx)(n.Z,{type:"success",children:l[18].value})]}),(0,e.jsxs)("div",{align:"center",children:[l[19].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202210251429165.png",style:{maxWidth:"100%"}}),l[20].value,(0,e.jsx)("div",{align:"center",children:l[21].value})]}),(0,e.jsx)(d.Z,{lang:"js",children:l[22].value}),(0,e.jsxs)("h2",{id:"678\u6709\u6548\u7684\u62EC\u53F7\u5B57\u7B26\u4E32",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#678\u6709\u6548\u7684\u62EC\u53F7\u5B57\u7B26\u4E32",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/valid-parenthesis-string/",children:l[23].value})," ",(0,e.jsx)(n.Z,{type:"warning",children:l[24].value})]}),(0,e.jsx)("p",{children:l[25].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[26].value}),(0,e.jsx)("li",{children:l[27].value}),(0,e.jsx)("li",{children:l[28].value}),(0,e.jsx)("li",{children:l[29].value}),(0,e.jsx)("li",{children:(0,e.jsx)("ol",{children:(0,e.jsx)("li",{children:l[30].value})})}),(0,e.jsx)("li",{children:(0,e.jsx)("ol",{start:"2",children:(0,e.jsx)("li",{children:l[31].value})})}),(0,e.jsx)("li",{children:(0,e.jsx)("ol",{start:"3",children:(0,e.jsx)("li",{children:l[32].value})})})]}),(0,e.jsx)(d.Z,{lang:"js",children:l[33].value}),(0,e.jsxs)("h2",{id:"115\u6700\u5C0F\u6808",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#115\u6700\u5C0F\u6808",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/min-stack/",children:l[34].value})," ",(0,e.jsx)(n.Z,{type:"warning",children:l[35].value})]}),(0,e.jsxs)("div",{align:"center",children:[l[36].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202211211040878.png",style:{maxWidth:"100%"}}),l[37].value,(0,e.jsx)("div",{align:"center",children:l[38].value})]}),(0,e.jsx)(d.Z,{lang:"js",children:l[39].value}),(0,e.jsxs)("h2",{id:"946\u9A8C\u8BC1\u6808\u5E8F\u5217",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#946\u9A8C\u8BC1\u6808\u5E8F\u5217",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/validate-stack-sequences/",children:l[40].value})," ",(0,e.jsx)(n.Z,{type:"warning",children:l[41].value})]}),(0,e.jsxs)("p",{children:[l[42].value,(0,e.jsx)("br",{}),l[43].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[44].value}),(0,e.jsx)("li",{children:l[45].value}),(0,e.jsx)("li",{children:l[46].value}),(0,e.jsx)("li",{children:l[47].value})]}),(0,e.jsx)(d.Z,{lang:"js",children:l[48].value})]})})})}a.default=h},48739:function(o,a,s){var c=s(93236),n=function(i){return(0,c.createElement)(i.children)};a.Z=n},38039:function(o,a,s){s.d(a,{Z:function(){return m}});var c=s(54306),n=s.n(c),v=s(93236),i=s(62086),d=function(t){var u,_,e,h=(t==null||(u=t.children)===null||u===void 0?void 0:u.filter(function(r){return r!=`
+ `}))||[],x=(0,v.useState)(0),l=n()(x,2),E=l[0],f=l[1],p=function(j){f(j)};return(0,i.jsxs)("div",{className:"tab-container",children:[(0,i.jsx)("ul",{className:"tab-list",children:h.map(function(r,j){return(0,i.jsx)("li",{className:E===j?"tab-item active":"tab-item",onClick:function(){return p(j)},children:r.props.label},r.props.label)})}),(0,i.jsx)("div",{className:"tab-content",children:(_=h[E])===null||_===void 0||(e=_.props)===null||e===void 0?void 0:e.children})]})},m=d}}]);
diff --git a/docs__js-logs__string.md.07a441c4.chunk.css b/docs__js-logs__string.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__js-logs__string.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__js-logs__string.md.965d5f26.async.js b/docs__js-logs__string.md.965d5f26.async.js
new file mode 100644
index 0000000..de1fbd9
--- /dev/null
+++ b/docs__js-logs__string.md.965d5f26.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[363],{33841:function(o,d,s){s.r(d);var c=s(16878),i=s(84475),v=s(646),u=s(25778),n=s(1778),m=s(6749),B=s(48739),t=s(38039),a=s(5899),_=s(93236),e=s(62086);function h(){var x=(0,a.eL)(),l=x.texts;return(0,e.jsx)(a.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u5B57\u7B26\u4E32",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5B57\u7B26\u4E32",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u5B57\u7B26\u4E32"]}),(0,e.jsxs)("h2",{id:"8\u5B57\u7B26\u4E32\u8F6C\u6362\u6574\u6570-atoi",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#8\u5B57\u7B26\u4E32\u8F6C\u6362\u6574\u6570-atoi",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/string-to-integer-atoi/",children:l[0].value})," ",(0,e.jsx)(i.Z,{type:"warning",children:l[1].value})]}),(0,e.jsxs)("p",{children:[l[2].value,(0,e.jsx)("br",{}),l[3].value,(0,e.jsx)("br",{}),l[4].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[5].value}),(0,e.jsx)("li",{children:l[6].value}),(0,e.jsx)("li",{children:l[7].value}),(0,e.jsx)("li",{children:l[8].value}),(0,e.jsx)("li",{children:l[9].value}),(0,e.jsx)("li",{children:l[10].value})]}),(0,e.jsx)(n.Z,{lang:"js",children:l[11].value}),(0,e.jsx)("p",{children:l[12].value}),(0,e.jsx)(n.Z,{lang:"js",children:l[13].value}),(0,e.jsx)("p",{children:l[14].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[15].value}),(0,e.jsx)("li",{children:l[16].value}),(0,e.jsx)("li",{children:l[17].value}),(0,e.jsx)("li",{children:l[18].value})]}),(0,e.jsx)(n.Z,{lang:"js",children:l[19].value}),(0,e.jsxs)("h2",{id:"392\u5224\u65AD\u5B50\u5E8F\u5217",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#392\u5224\u65AD\u5B50\u5E8F\u5217",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/is-subsequence/",children:l[20].value})," ",(0,e.jsx)(i.Z,{type:"success",children:l[21].value})]}),(0,e.jsx)("p",{children:l[22].value}),(0,e.jsx)(n.Z,{lang:"js",children:l[23].value}),(0,e.jsxs)("h2",{id:"387\u5B57\u7B26\u4E32\u4E2D\u7684\u7B2C\u4E00\u4E2A\u552F\u4E00\u5B57\u7B26",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#387\u5B57\u7B26\u4E32\u4E2D\u7684\u7B2C\u4E00\u4E2A\u552F\u4E00\u5B57\u7B26",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/first-unique-character-in-a-string/",children:l[24].value})," ",(0,e.jsx)(i.Z,{type:"success",children:l[25].value})]}),(0,e.jsxs)("p",{children:[l[26].value,(0,e.jsx)("br",{}),l[27].value,(0,e.jsx)("a",{href:"https://leetcode.cn/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/",children:l[28].value}),l[29].value]}),(0,e.jsx)(n.Z,{lang:"js",children:l[30].value}),(0,e.jsxs)("h2",{id:"151\u53CD\u8F6C\u5B57\u7B26\u4E32\u4E2D\u7684\u5355\u8BCD",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#151\u53CD\u8F6C\u5B57\u7B26\u4E32\u4E2D\u7684\u5355\u8BCD",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/reverse-words-in-a-string/",children:l[31].value})," ",(0,e.jsx)(i.Z,{type:"warning",children:l[32].value})]}),(0,e.jsxs)("p",{children:[l[33].value,(0,e.jsx)("br",{}),l[34].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[35].value}),(0,e.jsx)("li",{children:l[36].value})]}),(0,e.jsx)(n.Z,{lang:"js",children:l[37].value}),(0,e.jsx)("p",{children:l[38].value}),(0,e.jsxs)("div",{align:"center",children:[l[39].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202212021125507.png",style:{maxWidth:"100%"}}),l[40].value,(0,e.jsx)("div",{align:"center",children:l[41].value})]}),(0,e.jsx)(n.Z,{lang:"js",children:l[42].value}),(0,e.jsxs)("h2",{id:"13-\u7F57\u9A6C\u6570\u5B57\u8F6C\u6574\u6570",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#13-\u7F57\u9A6C\u6570\u5B57\u8F6C\u6574\u6570",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/roman-to-integer/",children:l[43].value})," ",(0,e.jsx)(i.Z,{type:"success",children:l[44].value})]}),(0,e.jsxs)("p",{children:[l[45].value,(0,e.jsx)("br",{}),l[46].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:l[47].value}),(0,e.jsx)("li",{children:l[48].value}),(0,e.jsx)("li",{children:l[49].value}),(0,e.jsx)("li",{children:l[50].value}),(0,e.jsx)("li",{children:l[51].value})]}),(0,e.jsx)(n.Z,{lang:"js",children:l[52].value})]})})})}d.default=h},48739:function(o,d,s){var c=s(93236),i=function(u){return(0,c.createElement)(u.children)};d.Z=i},38039:function(o,d,s){s.d(d,{Z:function(){return m}});var c=s(54306),i=s.n(c),v=s(93236),u=s(62086),n=function(t){var a,_,e,h=(t==null||(a=t.children)===null||a===void 0?void 0:a.filter(function(r){return r!=`
+ `}))||[],x=(0,v.useState)(0),l=i()(x,2),E=l[0],f=l[1],b=function(j){f(j)};return(0,u.jsxs)("div",{className:"tab-container",children:[(0,u.jsx)("ul",{className:"tab-list",children:h.map(function(r,j){return(0,u.jsx)("li",{className:E===j?"tab-item active":"tab-item",onClick:function(){return b(j)},children:r.props.label},r.props.label)})}),(0,u.jsx)("div",{className:"tab-content",children:(_=h[E])===null||_===void 0||(e=_.props)===null||e===void 0?void 0:e.children})]})},m=n}}]);
diff --git a/docs__js-logs__sword-point-offer-II.md.07a441c4.chunk.css b/docs__js-logs__sword-point-offer-II.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__js-logs__sword-point-offer-II.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__js-logs__sword-point-offer-II.md.1a7dcd35.async.js b/docs__js-logs__sword-point-offer-II.md.1a7dcd35.async.js
new file mode 100644
index 0000000..72589ef
--- /dev/null
+++ b/docs__js-logs__sword-point-offer-II.md.1a7dcd35.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[536],{38602:function(x,d,l){l.r(d);var t=l(16878),i=l(84475),v=l(646),n=l(25778),u=l(1778),m=l(6749),f=l(48739),r=l(38039),_=l(5899),c=l(93236),e=l(62086);function o(){var j=(0,_.eL)(),s=j.texts;return(0,e.jsx)(_.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u5251\u6307-offer-ii",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-ii",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u5251\u6307 Offer II"]}),(0,e.jsxs)("h2",{id:"001\u6574\u6570\u9664\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#001\u6574\u6570\u9664\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/xoh6Oh/",children:s[0].value})," ",(0,e.jsx)(i.Z,{type:"success",children:s[1].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:s[2].value}),(0,e.jsx)("li",{children:(0,e.jsx)("a",{href:"https://leetcode.cn/problems/xoh6Oh/solution/wei-yun-suan-kuai-su-xiang-jian-fa-by-ch-fv8h/",children:s[3].value})})]}),(0,e.jsx)(u.Z,{lang:"js",children:s[4].value}),(0,e.jsxs)("h2",{id:"002\u4E8C\u8FDB\u5236\u52A0\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#002\u4E8C\u8FDB\u5236\u52A0\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/JFETK5/",children:s[5].value})," ",(0,e.jsx)(i.Z,{type:"success",children:s[6].value})]}),(0,e.jsxs)("p",{children:[s[7].value,(0,e.jsx)("br",{}),s[8].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:s[9].value}),(0,e.jsx)("li",{children:s[10].value}),(0,e.jsxs)("li",{children:[s[11].value,(0,e.jsx)("code",{children:s[12].value}),s[13].value]}),(0,e.jsxs)("li",{children:[s[14].value,(0,e.jsx)("code",{children:s[15].value}),s[16].value,(0,e.jsx)("code",{children:s[17].value})]}),(0,e.jsx)("li",{children:s[18].value}),(0,e.jsx)("li",{children:s[19].value})]}),(0,e.jsx)(u.Z,{lang:"js",children:s[20].value})]})})})}d.default=o},48739:function(x,d,l){var t=l(93236),i=function(n){return(0,t.createElement)(n.children)};d.Z=i},38039:function(x,d,l){l.d(d,{Z:function(){return m}});var t=l(54306),i=l.n(t),v=l(93236),n=l(62086),u=function(r){var _,c,e,o=(r==null||(_=r.children)===null||_===void 0?void 0:_.filter(function(a){return a!=`
+ `}))||[],j=(0,v.useState)(0),s=i()(j,2),E=s[0],D=s[1],T=function(h){D(h)};return(0,n.jsxs)("div",{className:"tab-container",children:[(0,n.jsx)("ul",{className:"tab-list",children:o.map(function(a,h){return(0,n.jsx)("li",{className:E===h?"tab-item active":"tab-item",onClick:function(){return T(h)},children:a.props.label},a.props.label)})}),(0,n.jsx)("div",{className:"tab-content",children:(c=o[E])===null||c===void 0||(e=c.props)===null||e===void 0?void 0:e.children})]})},m=u}}]);
diff --git a/docs__js-logs__sword-point-offer.md.07a441c4.chunk.css b/docs__js-logs__sword-point-offer.md.07a441c4.chunk.css
new file mode 100644
index 0000000..db0d643
--- /dev/null
+++ b/docs__js-logs__sword-point-offer.md.07a441c4.chunk.css
@@ -0,0 +1 @@
+.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content[data-right-folded]:after{right:0;background-image:linear-gradient(to left,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-right-folded]:after{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.dumi-default-table-content>table>thead>tr>th,.dumi-default-table-content>table>tr>th{white-space:nowrap}.dumi-default-badge{display:inline-block;margin-inline-start:2px;padding:1px 8px;font-size:12px;font-weight:400;line-height:20px;border-radius:4px;vertical-align:top}.dumi-default-badge:not([type]),.dumi-default-badge[type=info]{color:#1677ff;background:#e2eeff}[data-prefers-color=dark] .dumi-default-badge:not([type]),[data-prefers-color=dark] .dumi-default-badge[type=info]{color:#1677ff;background:#002962}.dumi-default-badge[type=warning]{color:#d59200;background:#ffefcb}[data-prefers-color=dark] .dumi-default-badge[type=warning]{color:#d59200;background:#231800}.dumi-default-badge[type=success]{color:#208a41;background:#cbf3d7}[data-prefers-color=dark] .dumi-default-badge[type=success]{color:#208a41;background:#092712}.dumi-default-badge[type=error]{color:#ce1f31;background:#fbe2e5}[data-prefers-color=dark] .dumi-default-badge[type=error]{color:#ce1f31;background:#3c090e}.tab-container{width:100%;margin:0 auto}.tab-container .tab-list{list-style-type:none;display:flex;padding:0;margin:0;line-height:36px;border:1px solid #ddd;border-radius:10px 10px 0 0;border-bottom:none}.tab-container .tab-list .tab-item{cursor:pointer;margin:0 12px;border-bottom:none;color:#2a2e3673}.tab-container .tab-list .tab-item.active{color:#2a2e36e0;border-bottom:2px solid #007bff}.tab-container .tab-content{padding:10px;border:1px solid #ddd;border-radius:0 0 10px 10px;border-top:none}[data-prefers-color=dark] .tab-container .tab-list{border-color:#2a353c}[data-prefers-color=dark] .tab-container .tab-list .tab-item{color:#ffffff73}[data-prefers-color=dark] .tab-container .tab-list .tab-item.active{color:#ffffffe0;border-bottom:2px solid #007bff}[data-prefers-color=dark] .tab-content{border-color:#2a353c}
diff --git a/docs__js-logs__sword-point-offer.md.5c33a2a9.async.js b/docs__js-logs__sword-point-offer.md.5c33a2a9.async.js
new file mode 100644
index 0000000..8c0aa63
--- /dev/null
+++ b/docs__js-logs__sword-point-offer.md.5c33a2a9.async.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[516],{83731:function(E,r,n){n.r(r);var d=n(16878),s=n(84475),v=n(646),a=n(25778),l=n(1778),f=n(6749),B=n(48739),h=n(38039),i=n(5899),j=n(93236),e=n(62086);function x(){var t=(0,i.eL)(),u=t.texts;return(0,e.jsx)(i.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"\u5251\u6307-offer",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"\u5251\u6307 Offer"]}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-09-\u7528\u4E24\u4E2A\u6808\u5B9E\u73B0\u961F\u5217",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-09-\u7528\u4E24\u4E2A\u6808\u5B9E\u73B0\u961F\u5217",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/",children:u[0].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[1].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[2].value}),(0,e.jsxs)("li",{children:[u[3].value,(0,e.jsx)("code",{children:u[4].value}),u[5].value,(0,e.jsx)("code",{children:u[6].value}),u[7].value]}),(0,e.jsxs)("li",{children:[u[8].value,(0,e.jsx)(i.rU,{to:"/js-logs/stack#232%E7%94%A8%E6%A0%88%E5%AE%9E%E7%8E%B0%E9%98%9F%E5%88%97",children:u[9].value}),u[10].value]})]}),(0,e.jsxs)("div",{align:"center",children:[u[11].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202210251429165.png",style:{maxWidth:"100%"}}),u[12].value,(0,e.jsx)("div",{align:"center",children:u[13].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[14].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-30-\u5305\u542B-min-\u51FD\u6570\u7684\u6808",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-30-\u5305\u542B-min-\u51FD\u6570\u7684\u6808",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/bao-han-minhan-shu-de-zhan-lcof/",children:u[15].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[16].value})]}),(0,e.jsxs)("p",{children:[u[17].value,(0,e.jsx)(i.rU,{to:"/js-logs/stack#115%E6%9C%80%E5%B0%8F%E6%A0%88",children:u[18].value}),u[19].value]}),(0,e.jsx)(l.Z,{lang:"js",children:u[20].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-06-\u4ECE\u5C3E\u5230\u5934\u6253\u5370\u94FE\u8868",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-06-\u4ECE\u5C3E\u5230\u5934\u6253\u5370\u94FE\u8868",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/",children:u[21].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[22].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[23].value}),(0,e.jsx)("li",{children:u[24].value}),(0,e.jsx)("li",{children:u[25].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[26].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-24-\u53CD\u8F6C\u94FE\u8868",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-24-\u53CD\u8F6C\u94FE\u8868",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/fan-zhuan-lian-biao-lcof/",children:u[27].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[28].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[29].value}),(0,e.jsx)("li",{children:u[30].value}),(0,e.jsxs)("li",{children:[u[31].value,(0,e.jsx)(i.rU,{to:"/js-logs/linked-list#206%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8",children:u[32].value}),u[33].value]})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[34].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-35-\u590D\u6742\u94FE\u8868\u7684\u590D\u5236",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-35-\u590D\u6742\u94FE\u8868\u7684\u590D\u5236",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/fu-za-lian-biao-de-fu-zhi-lcof/",children:u[35].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[36].value})]}),(0,e.jsxs)("p",{children:[u[37].value,(0,e.jsx)("br",{}),u[38].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[39].value}),(0,e.jsx)("li",{children:u[40].value}),(0,e.jsx)("li",{children:u[41].value}),(0,e.jsx)("li",{children:u[42].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[43].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-05-\u66FF\u6362\u7A7A\u683C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-05-\u66FF\u6362\u7A7A\u683C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/ti-huan-kong-ge-lcof/",children:u[44].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[45].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[46].value}),(0,e.jsx)("li",{children:u[47].value}),(0,e.jsx)("li",{children:u[48].value}),(0,e.jsx)("li",{children:u[49].value}),(0,e.jsx)("li",{children:u[50].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[51].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-58---ii-\u5DE6\u65CB\u8F6C\u5B57\u7B26\u4E32",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-58---ii-\u5DE6\u65CB\u8F6C\u5B57\u7B26\u4E32",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/",children:u[52].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[53].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[54].value}),(0,e.jsx)("li",{children:u[55].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[56].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-03-\u6570\u7EC4\u4E2D\u91CD\u590D\u7684\u6570\u5B57",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-03-\u6570\u7EC4\u4E2D\u91CD\u590D\u7684\u6570\u5B57",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/",children:u[57].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[58].value})]}),(0,e.jsxs)("p",{children:[u[59].value,(0,e.jsx)("br",{}),u[60].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[61].value}),(0,e.jsx)("li",{children:u[62].value}),(0,e.jsx)("li",{children:u[63].value}),(0,e.jsx)("li",{children:u[64].value}),(0,e.jsxs)("li",{children:[u[65].value,(0,e.jsx)(i.rU,{to:"/js-logs/array#442%E6%95%B0%E7%BB%84%E4%B8%AD%E9%87%8D%E5%A4%8D%E7%9A%84%E6%95%B0%E6%8D%AE",children:u[66].value}),u[67].value]})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[68].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-53---i-\u5728\u6392\u5E8F\u6570\u7EC4\u4E2D\u67E5\u627E\u6570\u5B57-i",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-53---i-\u5728\u6392\u5E8F\u6570\u7EC4\u4E2D\u67E5\u627E\u6570\u5B57-i",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/",children:u[69].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[70].value})]}),(0,e.jsxs)("p",{children:[u[71].value,(0,e.jsx)("br",{}),u[72].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[73].value}),(0,e.jsxs)("li",{children:[u[74].value,(0,e.jsx)(i.rU,{to:"/js-logs/binary-search#34%E5%9C%A8%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E6%9F%A5%E6%89%BE%E5%85%83%E7%B4%A0%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%92%8C%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E4%BD%8D%E7%BD%AE",children:u[75].value}),u[76].value]}),(0,e.jsx)("li",{children:u[77].value}),(0,e.jsx)("li",{children:u[78].value}),(0,e.jsx)("li",{children:u[79].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[80].value}),(0,e.jsxs)("p",{children:[u[81].value,(0,e.jsx)("br",{}),u[82].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[83].value}),(0,e.jsx)("li",{children:u[84].value}),(0,e.jsx)("li",{children:u[85].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[86].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-53---ii-0--n-1-\u4E2D\u7F3A\u5931\u7684\u6570\u5B57",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-53---ii-0--n-1-\u4E2D\u7F3A\u5931\u7684\u6570\u5B57",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/que-shi-de-shu-zi-lcof/",children:u[87].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[88].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[89].value}),(0,e.jsx)("li",{children:u[90].value}),(0,e.jsx)("li",{children:u[91].value}),(0,e.jsx)("li",{children:u[92].value}),(0,e.jsx)("li",{children:u[93].value}),(0,e.jsxs)("li",{children:[u[94].value,(0,e.jsx)(i.rU,{to:"/js-logs/bit-manipulation#268%E4%B8%A2%E5%A4%B1%E7%9A%84%E6%95%B0%E5%AD%97",children:u[95].value}),u[96].value]})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[97].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[98].value}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:u[99].value}),u[100].value]})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[101].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-04-\u4E8C\u7EF4\u6570\u7EC4\u4E2D\u7684\u67E5\u627E",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-04-\u4E8C\u7EF4\u6570\u7EC4\u4E2D\u7684\u67E5\u627E",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/",children:u[102].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[103].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[104].value}),(0,e.jsx)("li",{children:u[105].value}),(0,e.jsx)("li",{children:(0,e.jsx)("a",{href:"https://leetcode.cn/problems/search-a-2d-matrix-ii/",children:u[106].value})})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[107].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-11-\u65CB\u8F6C\u6570\u7EC4\u7684\u6700\u5C0F\u6570\u5B57",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-11-\u65CB\u8F6C\u6570\u7EC4\u7684\u6700\u5C0F\u6570\u5B57",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/",children:u[108].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[109].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[u[110].value,(0,e.jsx)("a",{href:"https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array-ii/",children:u[111].value})]}),(0,e.jsx)("li",{children:(0,e.jsx)("a",{href:"https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array-ii/solution/154-find-minimum-in-rotated-sorted-array-ii-by-jyd/",children:u[112].value})})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[113].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-50-\u7B2C\u4E00\u4E2A\u53EA\u51FA\u73B0\u4E00\u6B21\u7684\u5B57\u7B26",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-50-\u7B2C\u4E00\u4E2A\u53EA\u51FA\u73B0\u4E00\u6B21\u7684\u5B57\u7B26",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/",children:u[114].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[115].value})]}),(0,e.jsxs)("p",{children:[u[116].value,(0,e.jsx)("br",{}),u[117].value,(0,e.jsx)("a",{href:"https://leetcode.cn/problems/first-unique-character-in-a-string/",children:u[118].value}),u[119].value]}),(0,e.jsx)(l.Z,{lang:"js",children:u[120].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-32---i-\u4ECE\u4E0A\u5230\u4E0B\u6253\u5370\u4E8C\u53C9\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-32---i-\u4ECE\u4E0A\u5230\u4E0B\u6253\u5370\u4E8C\u53C9\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/",children:u[121].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[122].value})]}),(0,e.jsx)("p",{children:u[123].value}),(0,e.jsx)(l.Z,{lang:"js",children:u[124].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-32---ii-\u4ECE\u4E0A\u5230\u4E0B\u6253\u5370\u4E8C\u53C9\u6811-ii",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-32---ii-\u4ECE\u4E0A\u5230\u4E0B\u6253\u5370\u4E8C\u53C9\u6811-ii",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof/",children:u[125].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[126].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[127].value}),(0,e.jsx)("li",{children:u[128].value}),(0,e.jsx)("li",{children:u[129].value}),(0,e.jsx)("li",{children:u[130].value}),(0,e.jsxs)("li",{children:[u[131].value,(0,e.jsx)(i.rU,{to:"/js-logs/binary-tree#102%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86",children:u[132].value}),u[133].value]})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[134].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-32---iii\u4ECE\u4E0A\u5230\u4E0B\u6253\u5370\u4E8C\u53C9\u6811iii",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-32---iii\u4ECE\u4E0A\u5230\u4E0B\u6253\u5370\u4E8C\u53C9\u6811iii",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/",children:u[135].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[136].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[137].value}),(0,e.jsxs)("li",{children:[u[138].value,(0,e.jsx)(i.rU,{to:"/js-logs/sword-point-offer#%E5%89%91%E6%8C%87-offer-32---ii-%E4%BB%8E%E4%B8%8A%E5%88%B0%E4%B8%8B%E6%89%93%E5%8D%B0%E4%BA%8C%E5%8F%89%E6%A0%91-ii",children:u[139].value}),u[140].value]}),(0,e.jsx)("li",{children:u[141].value}),(0,e.jsx)("li",{children:u[142].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[143].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-26-\u6811\u7684\u5B50\u7ED3\u6784",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-26-\u6811\u7684\u5B50\u7ED3\u6784",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/shu-de-zi-jie-gou-lcof/",children:u[144].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[145].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[146].value}),(0,e.jsx)("li",{children:u[147].value}),(0,e.jsx)("li",{children:(0,e.jsx)("code",{children:u[148].value})}),(0,e.jsx)("li",{children:u[149].value}),(0,e.jsx)("li",{children:u[150].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[151].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-27-\u4E8C\u53C9\u6811\u7684\u955C\u50CF",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-27-\u4E8C\u53C9\u6811\u7684\u955C\u50CF",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/er-cha-shu-de-jing-xiang-lcof/",children:u[152].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[153].value})]}),(0,e.jsxs)("p",{children:[u[154].value,(0,e.jsx)("br",{}),u[155].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[156].value}),(0,e.jsx)("li",{children:u[157].value}),(0,e.jsxs)("li",{children:[u[158].value,(0,e.jsx)(i.rU,{to:"/js-logs/binary-tree#226%E7%BF%BB%E8%BD%AC%E4%BA%8C%E5%8F%89%E6%A0%91",children:u[159].value}),u[160].value]})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[161].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-28-\u5BF9\u79F0\u7684\u4E8C\u53C9\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-28-\u5BF9\u79F0\u7684\u4E8C\u53C9\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/dui-cheng-de-er-cha-shu-lcof/",children:u[162].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[163].value})]}),(0,e.jsxs)("p",{children:[u[164].value,(0,e.jsx)("br",{}),u[165].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[166].value}),(0,e.jsx)("li",{children:u[167].value}),(0,e.jsx)("li",{children:u[168].value}),(0,e.jsxs)("li",{children:[u[169].value,(0,e.jsx)(i.rU,{to:"/js-logs/binary-tree#101-%E5%AF%B9%E7%A7%B0%E4%BA%8C%E5%8F%89%E6%A0%91",children:u[170].value}),u[171].value]}),(0,e.jsxs)("li",{children:[u[172].value,(0,e.jsx)(i.rU,{to:"/js-logs/binary-tree#100-%E7%9B%B8%E5%90%8C%E7%9A%84%E6%A0%91",children:u[173].value}),u[174].value]})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[175].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-10--i-\u6590\u6CE2\u90A3\u5951\u6570\u5217",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-10--i-\u6590\u6CE2\u90A3\u5951\u6570\u5217",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/fei-bo-na-qi-shu-lie-lcof/",children:u[176].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[177].value})]}),(0,e.jsxs)("p",{children:[u[178].value,(0,e.jsx)("br",{}),u[179].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[180].value}),(0,e.jsx)("li",{children:u[181].value}),(0,e.jsxs)("li",{children:[u[182].value,(0,e.jsx)("code",{children:u[183].value})]}),(0,e.jsx)("li",{children:u[184].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[185].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-10--ii-\u9752\u86D9\u8DF3\u53F0\u9636\u95EE\u9898",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-10--ii-\u9752\u86D9\u8DF3\u53F0\u9636\u95EE\u9898",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/",children:u[186].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[187].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[188].value}),(0,e.jsx)("li",{children:u[189].value}),(0,e.jsxs)("li",{children:[u[190].value,(0,e.jsx)("code",{children:u[191].value})]}),(0,e.jsxs)("li",{children:[u[192].value,(0,e.jsx)("a",{href:"https://leetcode-cn.com/problems/climbing-stairs/",children:u[193].value}),u[194].value]})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[195].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-63-\u80A1\u7968\u7684\u6700\u5927\u5229\u6DA6",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-63-\u80A1\u7968\u7684\u6700\u5927\u5229\u6DA6",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/gu-piao-de-zui-da-li-run-lcof/",children:u[196].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[197].value})]}),(0,e.jsxs)("p",{children:[u[198].value,(0,e.jsx)(i.rU,{to:"/js-logs/dynamic-programming#121%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA",children:u[199].value}),u[200].value,(0,e.jsx)("br",{}),u[201].value]}),(0,e.jsx)(l.Z,{lang:"js",children:u[202].value}),(0,e.jsx)("p",{children:u[203].value}),(0,e.jsx)(l.Z,{lang:"js",children:u[204].value}),(0,e.jsxs)("p",{children:[u[205].value,(0,e.jsx)("code",{children:u[206].value}),u[207].value]}),(0,e.jsx)("p",{children:u[208].value}),(0,e.jsx)(l.Z,{lang:"js",children:u[209].value}),(0,e.jsx)("p",{children:u[210].value}),(0,e.jsx)(l.Z,{lang:"js",children:u[211].value}),(0,e.jsx)(l.Z,{lang:"js",children:u[212].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-42-\u8FDE\u7EED\u5B50\u6570\u7EC4\u7684\u6700\u5927\u548C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-42-\u8FDE\u7EED\u5B50\u6570\u7EC4\u7684\u6700\u5927\u548C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/",children:u[213].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[214].value})]}),(0,e.jsxs)("p",{children:[u[215].value,(0,e.jsx)("br",{}),u[216].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[217].value}),(0,e.jsx)("li",{children:u[218].value}),(0,e.jsx)("li",{children:u[219].value}),(0,e.jsx)("li",{children:u[220].value}),(0,e.jsx)("li",{children:u[221].value}),(0,e.jsx)("li",{children:u[222].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[223].value}),(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[u[224].value,(0,e.jsx)(i.rU,{to:"/js-logs/dynamic-programming#53%E6%9C%80%E5%A4%A7%E5%AD%90%E6%95%B0%E7%BB%84%E5%92%8C",children:u[225].value}),u[226].value]})}),(0,e.jsx)(l.Z,{lang:"js",children:u[227].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-47-\u793C\u7269\u7684\u6700\u5927\u4EF7\u503C",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-47-\u793C\u7269\u7684\u6700\u5927\u4EF7\u503C",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/li-wu-de-zui-da-jie-zhi-lcof/",children:u[228].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[229].value})]}),(0,e.jsxs)("p",{children:[u[230].value,(0,e.jsx)("br",{}),u[231].value,(0,e.jsx)(i.rU,{to:"/js-logs/dynamic-programming#64%E6%9C%80%E5%B0%8F%E8%B7%AF%E5%BE%84%E5%92%8C",children:u[232].value}),u[233].value,(0,e.jsx)("br",{}),u[234].value]}),(0,e.jsx)(l.Z,{lang:"js",children:u[235].value}),(0,e.jsx)("p",{children:u[236].value}),(0,e.jsx)(l.Z,{lang:"js",children:u[237].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-46-\u628A\u6570\u5B57\u7FFB\u8BD1\u6210\u5B57\u7B26\u4E32",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-46-\u628A\u6570\u5B57\u7FFB\u8BD1\u6210\u5B57\u7B26\u4E32",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/",children:u[238].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[239].value})]}),(0,e.jsxs)("p",{children:[u[240].value,(0,e.jsx)("br",{}),u[241].value,(0,e.jsx)(i.rU,{to:"/js-logs/dynamic-programming#91%E8%A7%A3%E7%A0%81%E6%96%B9%E6%B3%95",children:u[242].value}),u[243].value,(0,e.jsx)("br",{}),u[244].value,(0,e.jsx)("code",{children:u[245].value}),u[246].value,(0,e.jsx)("code",{children:u[247].value}),u[248].value,(0,e.jsx)("code",{children:u[249].value}),u[250].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[251].value}),(0,e.jsx)("li",{children:u[252].value}),(0,e.jsx)("li",{children:u[253].value}),(0,e.jsx)("li",{children:u[254].value}),(0,e.jsx)("li",{children:u[255].value}),(0,e.jsxs)("li",{children:[u[256].value,(0,e.jsx)("code",{children:u[257].value}),u[258].value]}),(0,e.jsxs)("li",{children:[u[259].value,(0,e.jsx)("code",{children:u[260].value})]})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[261].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-48-\u6700\u957F\u4E0D\u542B\u91CD\u590D\u5B57\u7B26\u7684\u5B50\u5B57\u7B26\u4E32",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-48-\u6700\u957F\u4E0D\u542B\u91CD\u590D\u5B57\u7B26\u7684\u5B50\u5B57\u7B26\u4E32",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof/",children:u[262].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[263].value})]}),(0,e.jsxs)("p",{children:[u[264].value,(0,e.jsx)("br",{}),u[265].value,(0,e.jsx)(i.rU,{to:"/js-logs/sliding-window#3%E6%97%A0%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E4%B8%B2",children:u[266].value}),u[267].value]}),(0,e.jsx)(l.Z,{lang:"js",children:u[268].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-18-\u5220\u9664\u94FE\u8868\u7684\u8282\u70B9",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-18-\u5220\u9664\u94FE\u8868\u7684\u8282\u70B9",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/shan-chu-lian-biao-de-jie-dian-lcof/",children:u[269].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[270].value})]}),(0,e.jsxs)("p",{children:[u[271].value,(0,e.jsx)("br",{}),u[272].value]}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:u[273].value})}),(0,e.jsx)(l.Z,{lang:"js",children:u[274].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[275].value}),(0,e.jsx)("li",{children:u[276].value}),(0,e.jsxs)("li",{children:[u[277].value,(0,e.jsx)("code",{children:u[278].value}),u[279].value]})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[280].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-25-\u5408\u5E76\u4E24\u4E2A\u6392\u5E8F\u7684\u94FE\u8868",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-25-\u5408\u5E76\u4E24\u4E2A\u6392\u5E8F\u7684\u94FE\u8868",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/",children:u[281].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[282].value})]}),(0,e.jsxs)("p",{children:[u[283].value,(0,e.jsx)("br",{}),u[284].value]}),(0,e.jsx)("p",{children:u[285].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[286].value}),(0,e.jsx)("li",{children:u[287].value}),(0,e.jsxs)("li",{children:[u[288].value,(0,e.jsx)(i.rU,{to:"/js-logs/linked-list#21%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E6%9C%89%E5%BA%8F%E9%93%BE%E8%A1%A8",children:u[289].value}),u[290].value]})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[291].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-52-\u4E24\u4E2A\u94FE\u8868\u7684\u7B2C\u4E00\u4E2A\u516C\u5171\u8282\u70B9",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-52-\u4E24\u4E2A\u94FE\u8868\u7684\u7B2C\u4E00\u4E2A\u516C\u5171\u8282\u70B9",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/",children:u[292].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[293].value})]}),(0,e.jsxs)("p",{children:[u[294].value,(0,e.jsx)("br",{}),u[295].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[296].value}),(0,e.jsxs)("li",{children:[u[297].value,(0,e.jsx)(i.rU,{to:"/js-logs/linked-list#160%E7%9B%B8%E4%BA%A4%E9%93%BE%E8%A1%A8",children:u[298].value}),u[299].value]})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[300].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-21-\u8C03\u6574\u6570\u7EC4\u987A\u5E8F\u4F7F\u5947\u6570\u4F4D\u4E8E\u5076\u6570\u524D\u9762",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-21-\u8C03\u6574\u6570\u7EC4\u987A\u5E8F\u4F7F\u5947\u6570\u4F4D\u4E8E\u5076\u6570\u524D\u9762",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/",children:u[301].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[302].value})]}),(0,e.jsxs)("p",{children:[u[303].value,(0,e.jsx)("br",{}),u[304].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[305].value}),(0,e.jsxs)("li",{children:[u[306].value,(0,e.jsx)("code",{children:u[307].value}),u[308].value]}),(0,e.jsx)("li",{children:u[309].value}),(0,e.jsx)("li",{children:u[310].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[311].value}),(0,e.jsxs)("p",{children:[u[312].value,(0,e.jsx)("br",{}),u[313].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[314].value}),(0,e.jsx)("li",{children:u[315].value}),(0,e.jsx)("li",{children:u[316].value}),(0,e.jsx)("li",{children:u[317].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[318].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-57-\u548C\u4E3As\u7684\u4E24\u4E2A\u6570\u5B57",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-57-\u548C\u4E3As\u7684\u4E24\u4E2A\u6570\u5B57",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/he-wei-sde-liang-ge-shu-zi-lcof/",children:u[319].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[320].value})]}),(0,e.jsxs)("p",{children:[u[321].value,(0,e.jsx)("br",{}),u[322].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[323].value}),(0,e.jsx)("li",{children:u[324].value}),(0,e.jsx)("li",{children:u[325].value}),(0,e.jsx)("li",{children:u[326].value}),(0,e.jsx)("li",{children:u[327].value}),(0,e.jsx)("li",{children:u[328].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[329].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-58---i-\u7FFB\u8F6C\u5355\u8BCD\u987A\u5E8F",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-58---i-\u7FFB\u8F6C\u5355\u8BCD\u987A\u5E8F",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/fan-zhuan-dan-ci-shun-xu-lcof/",children:u[330].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[331].value})]}),(0,e.jsxs)("p",{children:[u[332].value,(0,e.jsx)("br",{}),u[333].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[334].value}),(0,e.jsx)("li",{children:u[335].value}),(0,e.jsx)("li",{children:u[336].value}),(0,e.jsxs)("li",{children:[u[337].value,(0,e.jsx)(i.rU,{to:"/js-logs/string#151%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%8D%95%E8%AF%8D",children:u[338].value}),u[339].value]})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[340].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-12-\u77E9\u9635\u4E2D\u7684\u8DEF\u5F84",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-12-\u77E9\u9635\u4E2D\u7684\u8DEF\u5F84",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/ju-zhen-zhong-de-lu-jing-lcof/",children:u[341].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[342].value})]}),(0,e.jsxs)("p",{children:[u[343].value,(0,e.jsx)("br",{}),u[344].value,(0,e.jsx)(i.rU,{to:"/js-logs/backtracking#79%E5%8D%95%E8%AF%8D%E6%90%9C%E7%B4%A2",children:u[345].value}),u[346].value]}),(0,e.jsx)(l.Z,{lang:"js",children:u[347].value}),(0,e.jsxs)("h2",{id:"\u9762\u8BD5\u989813-\u673A\u5668\u4EBA\u7684\u8FD0\u52A8\u8303\u56F4",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u9762\u8BD5\u989813-\u673A\u5668\u4EBA\u7684\u8FD0\u52A8\u8303\u56F4",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/",children:u[348].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[349].value})]}),(0,e.jsxs)("p",{children:[u[350].value,(0,e.jsx)("br",{}),u[351].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[352].value}),(0,e.jsx)("li",{children:u[353].value}),(0,e.jsx)("li",{children:u[354].value}),(0,e.jsx)("li",{children:u[355].value}),(0,e.jsx)("li",{children:u[356].value}),(0,e.jsxs)("li",{children:[u[357].value,(0,e.jsx)("code",{children:u[358].value}),u[359].value]})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[360].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-34-\u4E8C\u53C9\u6811\u4E2D\u548C\u4E3A\u67D0\u4E00\u503C\u7684\u8DEF\u5F84",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-34-\u4E8C\u53C9\u6811\u4E2D\u548C\u4E3A\u67D0\u4E00\u503C\u7684\u8DEF\u5F84",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/er-cha-shu-zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof/",children:u[361].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[362].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[363].value}),(0,e.jsx)("li",{children:u[364].value}),(0,e.jsx)("li",{children:u[365].value}),(0,e.jsx)("li",{children:u[366].value}),(0,e.jsxs)("li",{children:[u[367].value,(0,e.jsx)(i.rU,{to:"/js-logs/binary-tree#113%E8%B7%AF%E5%BE%84%E6%80%BB%E5%92%8C-ii",children:u[368].value}),u[369].value]})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[370].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-36-\u4E8C\u53C9\u641C\u7D22\u6811\u4E0E\u53CC\u5411\u94FE\u8868",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-36-\u4E8C\u53C9\u641C\u7D22\u6811\u4E0E\u53CC\u5411\u94FE\u8868",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof/",children:u[371].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[372].value})]}),(0,e.jsxs)("p",{children:[u[373].value,(0,e.jsx)("br",{}),u[374].value]}),(0,e.jsxs)("div",{align:"center",children:[u[375].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202212041222174.png",style:{maxWidth:"100%"}}),u[376].value,(0,e.jsx)("div",{align:"center",children:u[377].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[378].value}),(0,e.jsx)("li",{children:u[379].value}),(0,e.jsx)("li",{children:u[380].value}),(0,e.jsxs)("li",{children:[u[381].value,(0,e.jsx)("code",{children:u[382].value}),u[383].value]}),(0,e.jsx)("li",{children:u[384].value}),(0,e.jsx)("li",{children:u[385].value}),(0,e.jsx)("li",{children:u[386].value}),(0,e.jsxs)("li",{children:[u[387].value,(0,e.jsx)("a",{href:"https://leetcode-cn.com/problems/convert-binary-search-tree-to-sorted-doubly-linked-list/",children:u[388].value}),u[389].value]})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[390].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-54-\u4E8C\u53C9\u641C\u7D22\u6811\u7684\u7B2Ck\u5927\u8282\u70B9",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-54-\u4E8C\u53C9\u641C\u7D22\u6811\u7684\u7B2Ck\u5927\u8282\u70B9",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/",children:u[391].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[392].value})]}),(0,e.jsxs)("p",{children:[u[393].value,(0,e.jsx)("br",{}),u[394].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[395].value}),(0,e.jsxs)("li",{children:[u[396].value,(0,e.jsx)(i.rU,{to:"/js-logs/binary-tree#230%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%AD%E7%AC%ACk%E5%B0%8F%E7%9A%84%E5%85%83%E7%B4%A0",children:u[397].value}),u[398].value]}),(0,e.jsx)("li",{children:u[399].value}),(0,e.jsx)("li",{children:u[400].value}),(0,e.jsx)("li",{children:u[401].value}),(0,e.jsx)("li",{children:u[402].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[403].value}),(0,e.jsxs)("h2",{id:"\u9762\u8BD5\u989845-\u628A\u6570\u7EC4\u6392\u6210\u6700\u5C0F\u7684\u6570",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u9762\u8BD5\u989845-\u628A\u6570\u7EC4\u6392\u6210\u6700\u5C0F\u7684\u6570",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/",children:u[404].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[405].value})]}),(0,e.jsxs)("p",{children:[u[406].value,(0,e.jsx)("br",{}),u[407].value]}),(0,e.jsx)(l.Z,{lang:"js",children:u[408].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[409].value}),(0,e.jsx)("li",{children:u[410].value}),(0,e.jsx)("li",{children:u[411].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[412].value}),(0,e.jsxs)("h2",{id:"\u9762\u8BD5\u989861-\u6251\u514B\u724C\u4E2D\u7684\u987A\u5B50",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u9762\u8BD5\u989861-\u6251\u514B\u724C\u4E2D\u7684\u987A\u5B50",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/bu-ke-pai-zhong-de-shun-zi-lcof/",children:u[413].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[414].value})]}),(0,e.jsxs)("p",{children:[u[415].value,(0,e.jsx)("br",{}),u[416].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[417].value}),(0,e.jsx)("li",{children:u[418].value}),(0,e.jsx)("li",{children:u[419].value}),(0,e.jsx)("li",{children:u[420].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[421].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-40-\u6700\u5C0F\u7684k\u4E2A\u6570",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-40-\u6700\u5C0F\u7684k\u4E2A\u6570",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/zui-xiao-de-kge-shu-lcof/",children:u[422].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[423].value})]}),(0,e.jsxs)("p",{children:[u[424].value,(0,e.jsx)("br",{}),u[425].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[426].value}),(0,e.jsx)("li",{children:u[427].value}),(0,e.jsx)("li",{children:u[428].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[429].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[430].value}),(0,e.jsx)("li",{children:u[431].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[432].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-41-\u6570\u636E\u6D41\u4E2D\u7684\u4E2D\u4F4D\u6570",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-41-\u6570\u636E\u6D41\u4E2D\u7684\u4E2D\u4F4D\u6570",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/shu-ju-liu-zhong-de-zhong-wei-shu-lcof/",children:u[433].value})," ",(0,e.jsx)(s.Z,{type:"error",children:u[434].value})]}),(0,e.jsxs)("p",{children:[u[435].value,(0,e.jsx)("br",{}),u[436].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[437].value}),(0,e.jsx)("li",{children:u[438].value}),(0,e.jsx)("li",{children:u[439].value}),(0,e.jsx)("li",{children:u[440].value}),(0,e.jsxs)("li",{children:[u[441].value,(0,e.jsx)("code",{children:u[442].value}),u[443].value,(0,e.jsx)("code",{children:u[444].value})]})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[445].value}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[u[446].value,(0,e.jsx)("strong",{children:u[447].value}),u[448].value]}),(0,e.jsx)("li",{children:u[449].value}),(0,e.jsx)("li",{children:u[450].value}),(0,e.jsx)("li",{children:u[451].value}),(0,e.jsx)("li",{children:u[452].value}),(0,e.jsxs)("li",{children:[u[453].value,(0,e.jsx)(i.rU,{to:"/js-logs/heap#295-%E6%95%B0%E6%8D%AE%E6%B5%81%E7%9A%84%E4%B8%AD%E4%BD%8D%E6%95%B0",children:u[454].value}),u[455].value]})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[456].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-55---i-\u4E8C\u53C9\u6811\u7684\u6DF1\u5EA6",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-55---i-\u4E8C\u53C9\u6811\u7684\u6DF1\u5EA6",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/er-cha-shu-de-shen-du-lcof/",children:u[457].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[458].value})]}),(0,e.jsxs)("p",{children:[u[459].value,(0,e.jsx)("br",{}),u[460].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[461].value}),(0,e.jsx)("li",{children:u[462].value}),(0,e.jsx)("li",{children:u[463].value}),(0,e.jsx)("li",{children:u[464].value}),(0,e.jsxs)("li",{children:[u[465].value,(0,e.jsx)(i.rU,{to:"/js-logs/binary-tree#104%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%A4%A7%E6%B7%B1%E5%BA%A6",children:u[466].value}),u[467].value]})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[468].value}),(0,e.jsx)("p",{children:u[469].value}),(0,e.jsx)(l.Z,{lang:"js",children:u[470].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-55---ii-\u5E73\u8861\u4E8C\u53C9\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-55---ii-\u5E73\u8861\u4E8C\u53C9\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/ping-heng-er-cha-shu-lcof/",children:u[471].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[472].value})]}),(0,e.jsxs)("p",{children:[u[473].value,(0,e.jsx)("br",{}),u[474].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[475].value}),(0,e.jsx)("li",{children:u[476].value}),(0,e.jsx)("li",{children:u[477].value}),(0,e.jsx)("li",{children:u[478].value}),(0,e.jsxs)("li",{children:[u[479].value,(0,e.jsx)(i.rU,{to:"/js-logs/binary-tree#110%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%A0%91",children:u[480].value}),u[481].value]}),(0,e.jsxs)("li",{children:[u[482].value,(0,e.jsx)(i.rU,{to:"/js-logs/sword-point-offer#%E5%89%91%E6%8C%87-offer-55---i-%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%B7%B1%E5%BA%A6",children:u[483].value}),u[484].value]})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[485].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-64-\u6C4212n",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-64-\u6C4212n",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/qiu-12n-lcof/",children:u[486].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[487].value})]}),(0,e.jsxs)("p",{children:[u[488].value,(0,e.jsx)("br",{}),u[489].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[490].value}),(0,e.jsx)("li",{children:u[491].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[492].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-68---i-\u4E8C\u53C9\u641C\u7D22\u6811\u7684\u6700\u8FD1\u516C\u5171\u7956\u5148",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-68---i-\u4E8C\u53C9\u641C\u7D22\u6811\u7684\u6700\u8FD1\u516C\u5171\u7956\u5148",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof/",children:u[493].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[494].value})]}),(0,e.jsxs)("p",{children:[u[495].value,(0,e.jsx)("br",{}),u[496].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[497].value}),(0,e.jsxs)("li",{children:[u[498].value,(0,e.jsx)("code",{children:u[499].value}),u[500].value]}),(0,e.jsx)("li",{children:u[501].value}),(0,e.jsx)("li",{children:u[502].value}),(0,e.jsx)("li",{children:u[503].value}),(0,e.jsxs)("li",{children:[u[504].value,(0,e.jsx)(i.rU,{to:"/js-logs/binary-tree#235-%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B1%E7%A5%96%E5%85%88",children:u[505].value}),u[506].value]})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[507].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-68---ii-\u4E8C\u53C9\u6811\u7684\u6700\u8FD1\u516C\u5171\u7956\u5148",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-68---ii-\u4E8C\u53C9\u6811\u7684\u6700\u8FD1\u516C\u5171\u7956\u5148",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof/",children:u[508].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[509].value})]}),(0,e.jsxs)("p",{children:[u[510].value,(0,e.jsx)("br",{}),u[511].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[512].value}),(0,e.jsxs)("li",{children:[u[513].value,(0,e.jsx)("code",{children:u[514].value})]}),(0,e.jsxs)("li",{children:[u[515].value,(0,e.jsx)("code",{children:u[516].value}),u[517].value]}),(0,e.jsx)("li",{children:u[518].value}),(0,e.jsxs)("li",{children:[u[519].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[520].value}),(0,e.jsxs)("li",{children:[u[521].value,(0,e.jsx)("div",{}),u[522].value]}),(0,e.jsxs)("li",{children:[u[523].value,(0,e.jsx)("div",{}),u[524].value]}),(0,e.jsx)("li",{children:u[525].value})]})]})]}),(0,e.jsxs)("p",{children:[u[526].value,(0,e.jsx)(i.rU,{to:"/js-logs/binary-tree#236-%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B1%E7%A5%96%E5%85%88",children:u[527].value}),u[528].value]}),(0,e.jsx)(l.Z,{lang:"js",children:u[529].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-07-\u91CD\u5EFA\u4E8C\u53C9\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-07-\u91CD\u5EFA\u4E8C\u53C9\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/zhong-jian-er-cha-shu-lcof/",children:u[530].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[531].value})]}),(0,e.jsxs)("p",{children:[u[532].value,(0,e.jsx)(i.rU,{to:"/js-logs/binary-tree#105%E4%BB%8E%E5%89%8D%E5%BA%8F%E4%B8%8E%E4%B8%AD%E5%BA%8F%E9%81%8D%E5%8E%86%E5%BA%8F%E5%88%97%E6%9E%84%E9%80%A0%E4%BA%8C%E5%8F%89%E6%A0%91",children:u[533].value}),u[534].value]}),(0,e.jsx)(l.Z,{lang:"js",children:u[535].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-16-\u6570\u503C\u7684\u6574\u6570\u6B21\u65B9",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-16-\u6570\u503C\u7684\u6574\u6570\u6B21\u65B9",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/",children:u[536].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[537].value})]}),(0,e.jsxs)("p",{children:[u[538].value,(0,e.jsx)(i.rU,{to:"/js-logs/math#50pow-x-n",children:u[539].value}),u[540].value]}),(0,e.jsx)(l.Z,{lang:"js",children:u[541].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-33-\u4E8C\u53C9\u641C\u7D22\u6811\u7684\u540E\u5E8F\u904D\u5386\u5E8F\u5217",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-33-\u4E8C\u53C9\u641C\u7D22\u6811\u7684\u540E\u5E8F\u904D\u5386\u5E8F\u5217",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/",children:u[542].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[543].value})]}),(0,e.jsxs)("p",{children:[u[544].value,(0,e.jsx)("br",{}),u[545].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[546].value}),(0,e.jsxs)("li",{children:[u[547].value,(0,e.jsx)("code",{children:u[548].value})]}),(0,e.jsx)("li",{children:u[549].value}),(0,e.jsx)("li",{children:u[550].value}),(0,e.jsxs)("li",{children:[u[551].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[552].value}),(0,e.jsx)("li",{children:u[553].value}),(0,e.jsx)("li",{children:u[554].value}),(0,e.jsx)("li",{children:u[555].value}),(0,e.jsx)("li",{children:u[556].value}),(0,e.jsx)("li",{children:u[557].value}),(0,e.jsx)("li",{children:u[558].value}),(0,e.jsx)("li",{children:(0,e.jsx)("code",{children:u[559].value})})]})]})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[560].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-15-\u4E8C\u8FDB\u5236\u4E2D1\u7684\u4E2A\u6570",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-15-\u4E8C\u8FDB\u5236\u4E2D1\u7684\u4E2A\u6570",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/er-jin-zhi-zhong-1de-ge-shu-lcof/",children:u[561].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[562].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[563].value}),(0,e.jsx)("li",{children:u[564].value}),(0,e.jsx)("li",{children:u[565].value}),(0,e.jsxs)("li",{children:[u[566].value,(0,e.jsx)(i.rU,{to:"/js-logs/bit-manipulation#191%E4%BD%8D-1-%E7%9A%84%E4%B8%AA%E6%95%B0",children:u[567].value}),u[568].value]})]}),(0,e.jsxs)("div",{align:"center",children:[u[569].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202210251640239.png",style:{maxWidth:"100%"}}),u[570].value,(0,e.jsx)("div",{align:"center",children:u[571].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[572].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-65-\u4E0D\u7528\u52A0\u51CF\u4E58\u9664\u505A\u52A0\u6CD5",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-65-\u4E0D\u7528\u52A0\u51CF\u4E58\u9664\u505A\u52A0\u6CD5",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof/",children:u[573].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[574].value})]}),(0,e.jsxs)("p",{children:[u[575].value,(0,e.jsx)("br",{}),u[576].value]}),(0,e.jsx)(l.Z,{lang:"js",children:u[577].value}),(0,e.jsxs)("p",{children:[u[578].value,(0,e.jsx)("br",{}),u[579].value,(0,e.jsx)("br",{}),u[580].value,(0,e.jsx)("br",{}),u[581].value,(0,e.jsx)("br",{}),u[582].value]}),(0,e.jsx)(l.Z,{lang:"js",children:u[583].value}),(0,e.jsx)("p",{children:u[584].value}),(0,e.jsx)(l.Z,{lang:"js",children:u[585].value}),(0,e.jsx)("p",{children:u[586].value}),(0,e.jsx)(l.Z,{lang:"js",children:u[587].value}),(0,e.jsx)("p",{children:u[588].value}),(0,e.jsx)(l.Z,{lang:"js",children:u[589].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-56---i-\u6570\u7EC4\u4E2D\u6570\u5B57\u51FA\u73B0\u7684\u6B21\u6570",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-56---i-\u6570\u7EC4\u4E2D\u6570\u5B57\u51FA\u73B0\u7684\u6B21\u6570",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof/",children:u[590].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[591].value})]}),(0,e.jsxs)("p",{children:[u[592].value,(0,e.jsx)("br",{}),u[593].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[594].value}),(0,e.jsx)("li",{children:u[595].value}),(0,e.jsx)("li",{children:u[596].value}),(0,e.jsxs)("li",{children:[u[597].value,(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[u[598].value,(0,e.jsx)("code",{children:u[599].value}),u[600].value]})})]}),(0,e.jsx)("li",{children:u[601].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[602].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-56---ii-\u6570\u7EC4\u4E2D\u6570\u5B57\u51FA\u73B0\u7684\u6B21\u6570-ii",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-56---ii-\u6570\u7EC4\u4E2D\u6570\u5B57\u51FA\u73B0\u7684\u6B21\u6570-ii",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-ii-lcof/",children:u[603].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[604].value})]}),(0,e.jsxs)("p",{children:[u[605].value,(0,e.jsx)("br",{}),u[606].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[607].value}),(0,e.jsx)("li",{children:u[608].value}),(0,e.jsx)("li",{children:u[609].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[610].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-39-\u6570\u7EC4\u4E2D\u51FA\u73B0\u6B21\u6570\u8D85\u8FC7\u4E00\u534A\u7684\u6570\u5B57",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-39-\u6570\u7EC4\u4E2D\u51FA\u73B0\u6B21\u6570\u8D85\u8FC7\u4E00\u534A\u7684\u6570\u5B57",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/solution/",children:u[611].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[612].value})]}),(0,e.jsxs)("p",{children:[u[613].value,(0,e.jsx)("br",{}),u[614].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[615].value}),(0,e.jsx)("li",{children:u[616].value}),(0,e.jsxs)("li",{children:[u[617].value,(0,e.jsx)(i.rU,{to:"/js-logs/array#169%E5%A4%9A%E6%95%B0%E5%85%83%E7%B4%A0",children:u[618].value}),u[619].value]})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[620].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-66-\u6784\u5EFA\u4E58\u79EF\u6570\u7EC4",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-66-\u6784\u5EFA\u4E58\u79EF\u6570\u7EC4",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/gou-jian-cheng-ji-shu-zu-lcof/",children:u[621].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[622].value})]}),(0,e.jsxs)("p",{children:[u[623].value,(0,e.jsx)("br",{}),u[624].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[625].value}),(0,e.jsx)("li",{children:u[626].value}),(0,e.jsxs)("li",{children:[u[627].value,(0,e.jsx)("code",{children:u[628].value})]}),(0,e.jsxs)("li",{children:[u[629].value,(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[u[630].value,(0,e.jsx)("code",{children:u[631].value})]})})]}),(0,e.jsxs)("li",{children:[u[632].value,(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[u[633].value,(0,e.jsx)("code",{children:u[634].value})]})})]}),(0,e.jsx)("li",{children:u[635].value}),(0,e.jsxs)("li",{children:[u[636].value,(0,e.jsx)(i.rU,{to:"/js-logs/array#238%E9%99%A4%E8%87%AA%E8%BA%AB%E4%BB%A5%E5%A4%96%E6%95%B0%E7%BB%84%E7%9A%84%E4%B9%98%E7%A7%AF",children:u[637].value}),u[638].value]})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[639].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-14--i-\u526A\u7EF3\u5B50",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-14--i-\u526A\u7EF3\u5B50",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/jian-sheng-zi-lcof/",children:u[640].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[641].value})]}),(0,e.jsxs)("p",{children:[u[642].value,(0,e.jsx)(i.rU,{to:"/js-logs/dynamic-programming#343%E6%95%B4%E6%95%B0%E6%8B%86%E5%88%86",children:u[643].value}),u[644].value]}),(0,e.jsx)(l.Z,{lang:"js",children:u[645].value}),(0,e.jsx)("p",{children:u[646].value}),(0,e.jsx)(l.Z,{lang:"js",children:u[647].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-57---ii-\u548C\u4E3A-s-\u7684\u8FDE\u7EED\u6B63\u6570\u5E8F\u5217",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-57---ii-\u548C\u4E3A-s-\u7684\u8FDE\u7EED\u6B63\u6570\u5E8F\u5217",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/",children:u[648].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[649].value})]}),(0,e.jsxs)("p",{children:[u[650].value,(0,e.jsx)("br",{}),u[651].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[652].value}),(0,e.jsx)("li",{children:u[653].value}),(0,e.jsxs)("li",{children:[u[654].value,(0,e.jsx)("code",{children:u[655].value})]}),(0,e.jsx)("li",{children:u[656].value}),(0,e.jsxs)("li",{children:[u[657].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[658].value}),(0,e.jsx)("li",{children:u[659].value}),(0,e.jsx)("li",{children:u[660].value}),(0,e.jsxs)("li",{children:[u[661].value,(0,e.jsx)("code",{children:u[662].value}),u[663].value]}),(0,e.jsxs)("li",{children:[u[664].value,(0,e.jsx)("code",{children:u[665].value}),u[666].value]}),(0,e.jsxs)("li",{children:[u[667].value,(0,e.jsx)("code",{children:u[668].value}),u[669].value]})]})]})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[670].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-62-\u5706\u5708\u4E2D\u6700\u540E\u5269\u4E0B\u7684\u6570\u5B57",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-62-\u5706\u5708\u4E2D\u6700\u540E\u5269\u4E0B\u7684\u6570\u5B57",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/",children:u[671].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[672].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[673].value}),(0,e.jsx)("li",{children:(0,e.jsx)("a",{href:"https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/solution/jian-zhi-offer-62-yuan-quan-zhong-zui-ho-dcow/",children:u[674].value})}),(0,e.jsxs)("li",{children:[u[675].value,(0,e.jsx)("code",{children:u[676].value})]})]}),(0,e.jsx)("p",{children:u[677].value}),(0,e.jsx)(l.Z,{lang:"js",children:u[678].value}),(0,e.jsx)("p",{children:u[679].value}),(0,e.jsx)(l.Z,{lang:"js",children:u[680].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-29-\u987A\u65F6\u9488\u6253\u5370\u77E9\u9635",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-29-\u987A\u65F6\u9488\u6253\u5370\u77E9\u9635",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/shun-shi-zhen-da-yin-ju-zhen-lcof/",children:u[681].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[682].value})]}),(0,e.jsxs)("p",{children:[u[683].value,(0,e.jsx)("br",{}),u[684].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[685].value}),(0,e.jsx)("li",{children:u[686].value}),(0,e.jsxs)("li",{children:[u[687].value,(0,e.jsx)(i.rU,{to:"/js-logs/array#54%E8%9E%BA%E6%97%8B%E7%9F%A9%E9%98%B5",children:u[688].value}),u[689].value]})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[690].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-31-\u6808\u7684\u538B\u5165\u5F39\u51FA\u5E8F\u5217",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-31-\u6808\u7684\u538B\u5165\u5F39\u51FA\u5E8F\u5217",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/zhan-de-ya-ru-dan-chu-xu-lie-lcof/",children:u[691].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[692].value})]}),(0,e.jsxs)("p",{children:[u[693].value,(0,e.jsx)("br",{}),u[694].value]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[695].value}),(0,e.jsx)("li",{children:u[696].value}),(0,e.jsx)("li",{children:u[697].value}),(0,e.jsx)("li",{children:u[698].value}),(0,e.jsxs)("li",{children:[u[699].value,(0,e.jsx)(i.rU,{to:"/js-logs/stack#946%E9%AA%8C%E8%AF%81%E6%A0%88%E5%BA%8F%E5%88%97",children:u[700].value}),u[701].value]})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[702].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-20-\u8868\u793A\u6570\u503C\u7684\u5B57\u7B26\u4E32",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-20-\u8868\u793A\u6570\u503C\u7684\u5B57\u7B26\u4E32",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/biao-shi-shu-zhi-de-zi-fu-chuan-lcof/",children:u[703].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[704].value})]}),(0,e.jsxs)("p",{children:[u[705].value,(0,e.jsx)("br",{}),u[706].value]}),(0,e.jsx)(l.Z,{lang:"js",children:u[707].value}),(0,e.jsxs)("h2",{id:"\u9762\u8BD5\u9898-67-\u628A\u5B57\u7B26\u4E32\u8F6C\u6362\u6210\u6574\u6570",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u9762\u8BD5\u9898-67-\u628A\u5B57\u7B26\u4E32\u8F6C\u6362\u6210\u6574\u6570",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof/",children:u[708].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[709].value})]}),(0,e.jsxs)("p",{children:[u[710].value,(0,e.jsx)("br",{}),u[711].value,(0,e.jsx)(i.rU,{to:"/js-logs/string#8%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%BD%AC%E6%8D%A2%E6%95%B4%E6%95%B0-atoi",children:u[712].value}),u[713].value]}),(0,e.jsx)(l.Z,{lang:"js",children:u[714].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-37-\u5E8F\u5217\u5316\u4E8C\u53C9\u6811",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-37-\u5E8F\u5217\u5316\u4E8C\u53C9\u6811",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/xu-lie-hua-er-cha-shu-lcof/",children:u[715].value})," ",(0,e.jsx)(s.Z,{type:"error",children:u[716].value})]}),(0,e.jsxs)("p",{children:[u[717].value,(0,e.jsx)(i.rU,{to:"/js-logs/binary-tree#297%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%BA%8F%E5%88%97%E5%8C%96%E4%B8%8E%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96",children:u[718].value}),u[719].value]}),(0,e.jsx)(l.Z,{lang:"js",children:u[720].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-03-\u6570\u7EC4\u4E2D\u91CD\u590D\u7684\u6570\u5B57-1",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-03-\u6570\u7EC4\u4E2D\u91CD\u590D\u7684\u6570\u5B57-1",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/zheng-ze-biao-da-shi-pi-pei-lcof/",children:u[721].value})," ",(0,e.jsx)(s.Z,{type:"error",children:u[722].value})]}),(0,e.jsx)("ul",{children:(0,e.jsxs)("li",{children:[u[723].value,(0,e.jsx)(i.rU,{to:"/js-logs/dynamic-programming#10%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%8C%B9%E9%85%8D",children:u[724].value}),u[725].value]})}),(0,e.jsx)(l.Z,{lang:"js",children:u[726].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-49-\u4E11\u6570",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-49-\u4E11\u6570",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/chou-shu-lcof/",children:u[727].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[728].value})]}),(0,e.jsxs)("p",{children:[u[729].value,(0,e.jsx)(i.rU,{to:"/js-logs/dynamic-programming#264%E4%B8%91%E6%95%B0-ii",children:u[730].value}),u[731].value]}),(0,e.jsx)(l.Z,{lang:"js",children:u[732].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-60-n-\u4E2A\u9AB0\u5B50\u7684\u70B9\u6570",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-60-n-\u4E2A\u9AB0\u5B50\u7684\u70B9\u6570",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/nge-tou-zi-de-dian-shu-lcof/",children:u[733].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[734].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:u[735].value}),(0,e.jsx)("li",{children:u[736].value}),(0,e.jsx)("li",{children:u[737].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[738].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-17-\u6253\u5370\u4ECE1\u5230\u6700\u5927\u7684n\u4F4D\u6570",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-17-\u6253\u5370\u4ECE1\u5230\u6700\u5927\u7684n\u4F4D\u6570",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof/",children:u[739].value})," ",(0,e.jsx)(s.Z,{type:"success",children:u[740].value})]}),(0,e.jsx)(l.Z,{lang:"js",children:u[741].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-51-\u6570\u7EC4\u4E2D\u7684\u9006\u5E8F\u5BF9",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-51-\u6570\u7EC4\u4E2D\u7684\u9006\u5E8F\u5BF9",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/shu-zu-zhong-de-ni-xu-dui-lcof/",children:u[742].value})," ",(0,e.jsx)(s.Z,{type:"error",children:u[743].value})]}),(0,e.jsxs)("p",{children:[u[744].value,(0,e.jsx)(i.rU,{to:"/leetcode-js/js-logs/sort#493%E7%BF%BB%E8%BD%AC%E5%AF%B9",children:u[745].value}),u[746].value]}),(0,e.jsx)(l.Z,{lang:"js",children:u[747].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-14--ii-\u526A\u7EF3\u5B50-ii",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-14--ii-\u526A\u7EF3\u5B50-ii",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/jian-sheng-zi-ii-lcof/",children:u[748].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[749].value})]}),(0,e.jsxs)("p",{children:[u[750].value,(0,e.jsx)(i.rU,{to:"/js-logs/dynamic-programming#343%E6%95%B4%E6%95%B0%E6%8B%86%E5%88%86",children:u[751].value}),u[752].value]}),(0,e.jsx)(l.Z,{lang:"js",children:u[753].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-43-1--n-\u6574\u6570\u4E2D-1-\u51FA\u73B0\u7684\u6B21\u6570",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-43-1--n-\u6574\u6570\u4E2D-1-\u51FA\u73B0\u7684\u6B21\u6570",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/1nzheng-shu-zhong-1chu-xian-de-ci-shu-lcof/",children:u[754].value})," ",(0,e.jsx)(s.Z,{type:"error",children:u[755].value})]}),(0,e.jsx)("p",{children:(0,e.jsx)("a",{href:"https://leetcode.cn/problems/1nzheng-shu-zhong-1chu-xian-de-ci-shu-lcof/solution/1n-zheng-shu-zhong-1-chu-xian-de-ci-shu-umaj8/",children:u[756].value})}),(0,e.jsxs)("div",{align:"center",children:[u[757].value,(0,e.jsx)("img",{src:"https://cdn.jsdelivr.net/gh/gaoxiaoduan/picGoImg@main/images/202212201053637.png",style:{maxWidth:"100%"}}),u[758].value,(0,e.jsx)("div",{align:"center",children:u[759].value})]}),(0,e.jsxs)("p",{children:[u[760].value,(0,e.jsx)(i.rU,{to:"/js-logs/math#233-%E6%95%B0%E5%AD%97-1-%E7%9A%84%E4%B8%AA%E6%95%B0",children:u[761].value}),u[762].value]}),(0,e.jsx)(l.Z,{lang:"js",children:u[763].value}),(0,e.jsxs)("h2",{id:"\u5251\u6307-offer-44-\u6570\u5B57\u5E8F\u5217\u4E2D\u67D0\u4E00\u4F4D\u7684\u6570\u5B57",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#\u5251\u6307-offer-44-\u6570\u5B57\u5E8F\u5217\u4E2D\u67D0\u4E00\u4F4D\u7684\u6570\u5B57",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("a",{href:"https://leetcode.cn/problems/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof/",children:u[764].value})," ",(0,e.jsx)(s.Z,{type:"warning",children:u[765].value})]}),(0,e.jsxs)("p",{children:[u[766].value,(0,e.jsx)(i.rU,{to:"/js-logs/dynamic-programming#264%E4%B8%91%E6%95%B0-ii",children:u[767].value}),u[768].value]}),(0,e.jsx)(l.Z,{lang:"js",children:u[769].value})]})})})}r.default=x},48739:function(E,r,n){var d=n(93236),s=function(a){return(0,d.createElement)(a.children)};r.Z=s},38039:function(E,r,n){n.d(r,{Z:function(){return f}});var d=n(54306),s=n.n(d),v=n(93236),a=n(62086),l=function(h){var i,j,e,x=(h==null||(i=h.children)===null||i===void 0?void 0:i.filter(function(c){return c!=`
+ `}))||[],t=(0,v.useState)(0),u=s()(t,2),p=u[0],g=u[1],A=function(o){g(o)};return(0,a.jsxs)("div",{className:"tab-container",children:[(0,a.jsx)("ul",{className:"tab-list",children:x.map(function(c,o){return(0,a.jsx)("li",{className:p===o?"tab-item active":"tab-item",onClick:function(){return A(o)},children:c.props.label},c.props.label)})}),(0,a.jsx)("div",{className:"tab-content",children:(j=x[p])===null||j===void 0||(e=j.props)===null||e===void 0?void 0:e.children})]})},f=l}}]);
diff --git a/dumi__tmp-production__dumi__theme__ContextWrapper.4fbdeb0e.async.js b/dumi__tmp-production__dumi__theme__ContextWrapper.4fbdeb0e.async.js
new file mode 100644
index 0000000..dd15487
--- /dev/null
+++ b/dumi__tmp-production__dumi__theme__ContextWrapper.4fbdeb0e.async.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[923],{77998:function(M,o,e){e.r(o),e.d(o,{default:function(){return v}});var a=e(54306),u=e.n(a),_=e(93236),t=e(5899),c=e(13036),n=e(96481),m=e(90237),i=e(62086),E={};function v(){var D=(0,t.pC)(),f=(0,_.useState)(!0),s=u()(f,2),p=s[0],d=s[1],r=(0,_.useRef)(t.m8.location.pathname);return(0,_.useEffect)(function(){return t.m8.listen(function(l){l.location.pathname!==r.current&&(r.current=l.location.pathname,d(!0),document.documentElement.scrollTo(0,0))})},[]),(0,i.jsx)(c.D.Provider,{value:{pkg:{name:"leetcode-record",description:"This is a leetcode brush record",version:"0.0.1",license:"MIT",authors:["1961018000@qq.com"]},entryExports:E,demos:n.DE,components:n.wx,locales:m.k,loading:p,setLoading:d,themeConfig:{footer:" \u{1F4AB} keep awake \u{1F4AB}",prefersColor:{default:"light",switch:!0},name:"leetcode-js",logo:"/leetcode-js/logo.png"}},children:D})}}}]);
diff --git "a/example/BFS/752.\346\211\223\345\274\200\350\275\254\347\233\230\351\224\201.md" "b/example/BFS/752.\346\211\223\345\274\200\350\275\254\347\233\230\351\224\201.md"
deleted file mode 100644
index 7509cc2..0000000
--- "a/example/BFS/752.\346\211\223\345\274\200\350\275\254\347\233\230\351\224\201.md"
+++ /dev/null
@@ -1,79 +0,0 @@
-## [752.打开转盘锁](https://leetcode.cn/problems/open-the-lock/) medium
-
-时间复杂度 O(N)
-空间复杂度 O(N)
-
-思路
-
-- 先想出应该如何找到结果,不考虑 target 和 deadends,如何穷举所有密码组合?
-- 从'0000'开始每次转一次锁,四个位置分别可以前后转动,共有 8 种结果,'1000','9000', '0100','0900'....,然后再次转动,每个结果又有 8 种结果,这样下去就形成了二叉树
-- 我们要求解的是`最少的次数`,所以可以看作是`求二叉树到某个节点的深度`,使用 BFS 求解
-- 先分别封装,向上拨动一次的函数`addOne`,向下拨动一次的函数`minusOne`
-- 再使用 BFS 进行求解
-- 为了防止求解过程中 路径重复,使用`visited`进行去重,而在 BFS 过程中遇到`deadends`跳过即可
-
-```js
-// 将字符串s[j]向上拨动一次
-var addOne = function (s, j) {
- const charts = s.split('');
- if (charts[j] === '9') {
- charts[j] = '0';
- } else {
- charts[j] = Number(charts[j]) + 1;
- }
- return charts.join('');
-};
-
-// 将字符串s[j]向下拨动一次
-var minusOne = function (s, j) {
- const charts = s.split('');
- if (charts[j] === '0') {
- charts[j] = '9';
- } else {
- charts[j] = Number(charts[j]) - 1;
- }
- return charts.join('');
-};
-
-/**
- * @param {string[]} deadends
- * @param {string} target
- * @return {number}
- */
-var openLock = function (deadends, target) {
- const q = ['0000'];
- const visited = new Set();
- visited.add('0000');
-
- let deep = 0;
-
- while (q.length !== 0) {
- const len = q.length;
- for (let i = 0; i < len; i++) {
- const current = q.shift();
-
- // 终止条件
- if (deadends.indexOf(current) !== -1) continue;
- if (current === target) return deep;
-
- for (let j = 0; j < 4; j++) {
- const upStr = addOne(current, j);
- if (!visited.has(upStr)) {
- q.push(upStr);
- visited.add(upStr);
- }
-
- const downStr = minusOne(current, j);
- if (!visited.has(downStr)) {
- q.push(downStr);
- visited.add(downStr);
- }
- }
- }
-
- deep++;
- }
- // 若循环结束还没有找到密码,返回-1;
- return -1;
-};
-```
diff --git "a/example/BFS/773.\346\273\221\345\212\250\350\260\234\351\242\230.md" "b/example/BFS/773.\346\273\221\345\212\250\350\260\234\351\242\230.md"
deleted file mode 100644
index 4a5ce93..0000000
--- "a/example/BFS/773.\346\273\221\345\212\250\350\260\234\351\242\230.md"
+++ /dev/null
@@ -1,72 +0,0 @@
-## [773.滑动谜题](https://leetcode.cn/problems/sliding-puzzle/) hard
-
-时间复杂度 O((mn)!⋅mn)
-空间复杂度 O((mn)!⋅mn)
-
-- 思路
-- 求最少,可以用 BFS 穷举
-- 先抽象成一颗树,每次可以将 0 与相邻交换,然后下次再进行相邻交换,直到遇到`target`
-- 题目给的是一个 2x3 的数组,需要压缩成一个字符串,对应寻找的`target`就是`'123450'`
-- 如何压缩数组成字符串呢?
-- 需要先找出数组中每个位置对应的相邻位置,因为这里是 2x3 所以可以直接穷举出来`neighbor`
-- 然后就转换成了 BFS 解法,与[752.打开转盘锁](https://leetcode.cn/problems/open-the-lock/)相似
-
-```js
-/**
- * @param {number[][]} board
- * @return {number}
- */
-var slidingPuzzle = function (board) {
- // 把board压缩成字符串,对应的相邻位置
- const neighbor = [
- [1, 3],
- [0, 4, 2],
- [1, 5],
- [0, 4],
- [3, 1, 5],
- [4, 2],
- ];
- let target = '123450'; // 要找到的结果
- let str = ''; // 压缩成字符串
- for (let i = 0; i < 2; i++) {
- for (let j = 0; j < 3; j++) {
- str += board[i][j];
- }
- }
-
- const q = [str];
- const visited = new Set();
- visited.add(str);
-
- let step = 0;
- while (q.length !== 0) {
- const len = q.length;
- for (let i = 0; i < len; i++) {
- const current = q.shift();
-
- if (current === target) return step;
-
- // 先找到'0'所在的位置
- let idx = current.slice('').indexOf('0');
- // '0' 与相邻位置分别交换
- for (let move of neighbor[idx]) {
- const new_board_str = swap(current, idx, move);
- if (!visited.has(new_board_str)) {
- q.push(new_board_str);
- visited.add(new_board_str);
- }
- }
- }
- step++;
- }
- return -1;
-};
-
-function swap(str, i, j) {
- const charts = str.split('');
- let temp = charts[i];
- charts[i] = charts[j];
- charts[j] = temp;
- return charts.join('');
-}
-```
diff --git "a/example/nSum/1.\344\270\244\346\225\260\344\271\213\345\222\214.js" "b/example/nSum/1.\344\270\244\346\225\260\344\271\213\345\222\214.js"
deleted file mode 100644
index 1b2a11d..0000000
--- "a/example/nSum/1.\344\270\244\346\225\260\344\271\213\345\222\214.js"
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * @lc app=leetcode.cn id=1 lang=javascript
- *
- * [1] 两数之和
- */
-
-// @lc code=start
-/**
- * @param {number[]} nums
- * @param {number} target
- * @return {number[]}
- */
-var twoSum = function (nums, target) {
- let map = new Map();
-
- for (let i = 0; i < nums.length; i++) {
- let item = nums[i];
- let diffNum = target - item;
-
- if (map.has(diffNum)) {
- return [map.get(diffNum), i];
- } else {
- map.set(item, i);
- }
- }
-};
-
-// @lc code=end
-
-// --------------------------------------------------------------
-/**
- * 泛化题:
- * 如果假设输入一个数组 nums 和一个目标和 target,请你返回 nums 中能够凑出 target 的两个元素的值,
- * 比如输入 nums = [5,3,1,6], target = 9,那么算法返回两个元素 [3,6]。
- * nums 中可能有多对儿元素之和都等于 target,请你的算法返回所有和为 target 的元素对儿,其中不能出现重复。
- * @param {*} nums
- * @param {*} target
- * @returns
- */
-var twoSumTarget = function (nums, target) {
- nums.sort((a, b) => a - b);
- let lo = 0,
- hi = nums.length - 1;
- let res = [];
- while (lo < hi) {
- let left = nums[lo],
- right = nums[hi];
- let sum = left + right;
-
- if (sum === target) {
- res.push([left, right]);
- // 去除重复答案
- while (lo < hi && nums[lo] === left) lo++;
- while (lo < hi && nums[hi] === right) hi--;
- } else if (sum < target) {
- lo++;
- } else if (sum > target) {
- hi--;
- }
- }
-
- return res;
-};
-// test
-let res = twoSumTarget([1, 1, 1, 2, 2, 3, 3], 4);
-console.log("[ res ] >", res); // [ [ 1, 3 ], [ 2, 2 ] ]
diff --git "a/example/nSum/15.\344\270\211\346\225\260\344\271\213\345\222\214.js" "b/example/nSum/15.\344\270\211\346\225\260\344\271\213\345\222\214.js"
deleted file mode 100644
index e480dff..0000000
--- "a/example/nSum/15.\344\270\211\346\225\260\344\271\213\345\222\214.js"
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * @lc app=leetcode.cn id=15 lang=javascript
- *
- * [15] 三数之和
- */
-
-// @lc code=start
-
-// 使用改造twoSum的解法
-var twoSumTarget = function (nums, start, target) {
- let lo = start,
- hi = nums.length - 1;
- let res = [];
- while (lo < hi) {
- let left = nums[lo],
- right = nums[hi];
- let sum = left + right;
-
- if (sum === target) {
- res.push([left, right]);
- // 去除重复答案
- while (lo < hi && nums[lo] === left) lo++;
- while (lo < hi && nums[hi] === right) hi--;
- } else if (sum < target) {
- lo++;
- } else if (sum > target) {
- hi--;
- }
- }
-
- return res;
-};
-
-/**
- * @param {number[]} nums
- * @return {number[][]}
- */
-var threeSum = function (nums) {
- nums.sort((a, b) => a - b);
- const res = [];
- const len = nums.length;
- for (let i = 0; i < len; i++) {
- let twoSumRes = twoSumTarget(nums, i + 1, 0 - nums[i]);
-
- for (const item of twoSumRes) {
- item.push(nums[i]);
- res.push(item);
- }
-
- // 去除重复答案
- while (i < len - 1 && nums[i] === nums[i + 1]) i++;
- }
-
- return res;
-};
-// @lc code=end
-
-// --------------------------------------------------------------
-var threeSumTarget = function (nums, target) {
- nums.sort((a, b) => a - b);
- const res = [];
- const len = nums.length;
- for (let i = 0; i < len; i++) {
- let twoSumRes = twoSumTarget(nums, i + 1, target - nums[i]);
-
- for (const item of twoSumRes) {
- item.push(nums[i]);
- res.push(item);
- }
-
- // 去除重复答案
- while (i < len - 1 && nums[i] === nums[i + 1]) i++;
- }
-
- return res;
-};
diff --git "a/example/nSum/18.\345\233\233\346\225\260\344\271\213\345\222\214.js" "b/example/nSum/18.\345\233\233\346\225\260\344\271\213\345\222\214.js"
deleted file mode 100644
index 297ba23..0000000
--- "a/example/nSum/18.\345\233\233\346\225\260\344\271\213\345\222\214.js"
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * @lc app=leetcode.cn id=18 lang=javascript
- *
- * [18] 四数之和
- */
-
-// @lc code=start
-
-var threeSumTarget = function (nums, start, target) {
- nums.sort((a, b) => a - b);
- const res = [];
- const len = nums.length;
- for (let i = start; i < len; i++) {
- let twoSumRes = twoSumTarget(nums, i + 1, target - nums[i]);
-
- for (const item of twoSumRes) {
- item.push(nums[i]);
- res.push(item);
- }
-
- // 去除重复答案
- while (i < len - 1 && nums[i] === nums[i + 1]) i++;
- }
-
- return res;
-};
-
-var twoSumTarget = function (nums, start, target) {
- let lo = start,
- hi = nums.length - 1;
- let res = [];
- while (lo < hi) {
- let left = nums[lo],
- right = nums[hi];
- let sum = left + right;
-
- if (sum === target) {
- res.push([left, right]);
- // 去除重复答案
- while (lo < hi && nums[lo] === left) lo++;
- while (lo < hi && nums[hi] === right) hi--;
- } else if (sum < target) {
- lo++;
- } else if (sum > target) {
- hi--;
- }
- }
-
- return res;
-};
-
-/**
- * @param {number[]} nums
- * @param {number} target
- * @return {number[][]}
- */
-var fourSum = function (nums, target) {
- nums.sort((a, b) => a - b);
- const res = [];
- const len = nums.length;
- for (let i = 0; i < len; i++) {
- let threeSumRes = threeSumTarget(nums, i + 1, target - nums[i]);
- for (const item of threeSumRes) {
- item.push(nums[i]);
- res.push(item);
- }
- // 去除重复答案
- while (i < len - 1 && nums[i] === nums[i + 1]) i++;
- }
-
- return res;
-};
-// @lc code=end
diff --git "a/example/\344\272\214\345\210\206\346\220\234\347\264\242/154.\345\257\273\346\211\276\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\345\260\217\345\200\274-ii.js" "b/example/\344\272\214\345\210\206\346\220\234\347\264\242/154.\345\257\273\346\211\276\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\345\260\217\345\200\274-ii.js"
deleted file mode 100644
index 8e80e2d..0000000
--- "a/example/\344\272\214\345\210\206\346\220\234\347\264\242/154.\345\257\273\346\211\276\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\345\260\217\345\200\274-ii.js"
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * @lc app=leetcode.cn id=154 lang=javascript
- *
- * [154] 寻找旋转排序数组中的最小值 II
- */
-
-// @lc code=start
-/**
- * @param {number[]} nums
- * @return {number}
- */
-// 二分法寻找最小值
-var findMin = function (nums) {
- let n = nums.length;
- if (n === 1) return nums[0];
- // 原:[0,1,2,2,2,2,3,4,5,6]
- // 后:[2,3,4,5,6,0,1,2,2,2]
- // [2,3,4,5,6,0,1,2,2,2]
- // l m > r ==> l=m+1;
- // [2,3,4,5,6,0,1,2,2,2]
- // l m = r ==> r=r-1;
- // [2,3,4,5,6,0,1,2,2,2]
- // l m < r ==> r=m;
- // [2,3,4,5,6,0,1,2,2,2]
- // l
- // m r = m;
- // 最后l=r;停止寻找
-
- let left = 0,
- right = n - 1;
- while (left < right) {
- // let mid = Math.floor((left + right) / 2);
- let mid = (left + right) >> 1;
- console.log(left, mid, right);
- if (nums[mid] > nums[right]) {
- left = mid + 1;
- } else if (nums[mid] < nums[right]) {
- right = mid;
- } else if (nums[mid] === nums[right]) {
- right = right - 1;
- }
- }
-
- return nums[right];
-};
-// @lc code=end
diff --git "a/example/\344\272\214\345\210\206\346\220\234\347\264\242/278.\347\254\254\344\270\200\344\270\252\351\224\231\350\257\257\347\232\204\347\211\210\346\234\254.js" "b/example/\344\272\214\345\210\206\346\220\234\347\264\242/278.\347\254\254\344\270\200\344\270\252\351\224\231\350\257\257\347\232\204\347\211\210\346\234\254.js"
deleted file mode 100644
index 887cc90..0000000
--- "a/example/\344\272\214\345\210\206\346\220\234\347\264\242/278.\347\254\254\344\270\200\344\270\252\351\224\231\350\257\257\347\232\204\347\211\210\346\234\254.js"
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * @lc app=leetcode.cn id=278 lang=javascript
- *
- * [278] 第一个错误的版本
- */
-
-// @lc code=start
-/**
- * Definition for isBadVersion()
- *
- * @param {integer} version number
- * @return {boolean} whether the version is bad
- * isBadVersion = function(version) {
- * ...
- * };
- */
-
-/**
- * @param {function} isBadVersion()
- * @return {function}
- */
-var solution = function (isBadVersion) {
- /**
- * @param {integer} n Total versions
- * @return {integer} The first bad version
- */
- return function (n) {
- let l = 1, r = n;
- while (l < r) {
- const mid = Math.floor(l + (r - l) / 2)
- if (isBadVersion(mid)) { // 结果在[l,mid]
- r = mid;
- } else {
- l = mid + 1; // 结果在[mid+1,r]
- }
- }
- // 此时l=r,返回其中一个点即可
- return l;
- };
-};
-// @lc code=end
-
diff --git "a/example/\344\272\214\345\210\206\346\220\234\347\264\242/34.\345\234\250\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\346\237\245\346\211\276\345\205\203\347\264\240\347\232\204\347\254\254\344\270\200\344\270\252\345\222\214\346\234\200\345\220\216\344\270\200\344\270\252\344\275\215\347\275\256.js" "b/example/\344\272\214\345\210\206\346\220\234\347\264\242/34.\345\234\250\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\346\237\245\346\211\276\345\205\203\347\264\240\347\232\204\347\254\254\344\270\200\344\270\252\345\222\214\346\234\200\345\220\216\344\270\200\344\270\252\344\275\215\347\275\256.js"
deleted file mode 100644
index 00faeaa..0000000
--- "a/example/\344\272\214\345\210\206\346\220\234\347\264\242/34.\345\234\250\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\346\237\245\346\211\276\345\205\203\347\264\240\347\232\204\347\254\254\344\270\200\344\270\252\345\222\214\346\234\200\345\220\216\344\270\200\344\270\252\344\275\215\347\275\256.js"
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * @lc app=leetcode.cn id=34 lang=javascript
- *
- * [34] 在排序数组中查找元素的第一个和最后一个位置
- */
-
-// @lc code=start
-/**
- * @param {number[]} nums
- * @param {number} target
- * @return {number[]}
- */
-var searchRange = function (nums, target) {
- if (nums.length === 0) return [-1, -1];
- return [leftSearch(nums, target), rightSearch(nums, target)];
-};
-
-var leftSearch = (nums, target) => {
- let left = 0,
- right = nums.length - 1;
- while (left <= right) {
- let mid = left + Math.floor((right - left) / 2);
- if (nums[mid] < target) {
- left = mid + 1;
- } else if (nums[mid] > target) {
- // 搜索区间变为 [left, mid-1]
- right = mid - 1;
- } else if (nums[mid] === target) {
- // 搜索区间变为 [left, mid-1]
- right = mid - 1; //注意
- }
- }
-
- // left 是的区间是[0,nums.length]
- // if (left === nums.length) return -1; // 越界
- return nums[left] === target ? left : -1;
-};
-
-var rightSearch = (nums, target) => {
- let left = 0,
- right = nums.length - 1;
-
- while (left <= right) {
- let mid = left + Math.floor((right - left) / 2);
- if (nums[mid] < target) {
- left = mid + 1;
- } else if (nums[mid] > target) {
- right = mid - 1;
- } else if (nums[mid] === target) {
- left = mid + 1; //注意
- }
- }
-
- // if (left - 1 < 0) return -1;// 防止越界
- // return nums[left - 1] === target ? right : -1;
- // 当while结束时,left-1=right;
- // if (right < 0) return -1;// 防止越界
- return nums[right] === target ? right : -1;
-};
-// @lc code=end
diff --git "a/example/\344\272\214\345\210\206\346\220\234\347\264\242/35.\346\220\234\347\264\242\346\217\222\345\205\245\344\275\215\347\275\256.js" "b/example/\344\272\214\345\210\206\346\220\234\347\264\242/35.\346\220\234\347\264\242\346\217\222\345\205\245\344\275\215\347\275\256.js"
deleted file mode 100644
index 93e3101..0000000
--- "a/example/\344\272\214\345\210\206\346\220\234\347\264\242/35.\346\220\234\347\264\242\346\217\222\345\205\245\344\275\215\347\275\256.js"
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * @lc app=leetcode.cn id=35 lang=javascript
- *
- * [35] 搜索插入位置
- */
-
-// @lc code=start
-/**
- * @param {number[]} nums
- * @param {number} target
- * @return {number}
- */
-var searchInsert = function (nums, target) {
- let l = 0, r = nums.length - 1;
- while (l <= r) {
- const mid = Math.floor(l + (r - l) / 2);
- if (nums[mid] === target) {
- return mid;
- } else if (nums[mid] > target) {
- r = mid - 1;
- } else if (nums[mid] < target) {
- l = mid + 1;
- }
- }
- return l;
-};
-// @lc code=end
-
diff --git "a/example/\344\272\214\345\210\206\346\220\234\347\264\242/704.\344\272\214\345\210\206\346\237\245\346\211\276.js" "b/example/\344\272\214\345\210\206\346\220\234\347\264\242/704.\344\272\214\345\210\206\346\237\245\346\211\276.js"
deleted file mode 100644
index 3d103c2..0000000
--- "a/example/\344\272\214\345\210\206\346\220\234\347\264\242/704.\344\272\214\345\210\206\346\237\245\346\211\276.js"
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * @lc app=leetcode.cn id=704 lang=javascript
- *
- * [704] 二分查找
- */
-
-// @lc code=start
-/**
- * @param {number[]} nums
- * @param {number} target
- * @return {number}
- */
-var search = function (nums, target) {
- let left = 0,
- right = nums.length - 1;
- while (left <= right) {
- let mid = Math.floor(left + (right - left) / 2);
- if (nums[mid] === target) {
- return mid;
- } else if (nums[mid] > target) {
- right = mid - 1;
- } else if (nums[mid] < target) {
- left = mid + 1;
- }
- }
- return -1;
-};
-// @lc code=end
diff --git "a/example/\344\272\214\345\217\211\346\240\221/100.\347\233\270\345\220\214\347\232\204\346\240\221.md" "b/example/\344\272\214\345\217\211\346\240\221/100.\347\233\270\345\220\214\347\232\204\346\240\221.md"
deleted file mode 100644
index f227839..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/100.\347\233\270\345\220\214\347\232\204\346\240\221.md"
+++ /dev/null
@@ -1,25 +0,0 @@
-## [100. 相同的树](https://leetcode.cn/problems/same-tree/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(H) 树的高度,递归深度
-
-- 思路
-- 分:获取左子树和右子树
-- 解:递归的判断 左子树的与左节点 跟 右子树的右节点,且:左子树的右节点 跟 右子树的左节点相等
-- 合:若符合上述条件,则是一棵镜象的树
-
-```js
-/**
- * @param {TreeNode} p
- * @param {TreeNode} q
- * @return {boolean}
- */
-var isSameTree = function (p, q) {
- if (p === null && q === null) return true;
- if (p === null || q === null) return false;
- if (p.val !== q.val) return false;
-
- // 走到这里说明p.val === q.val
- return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/101.\345\257\271\347\247\260\344\272\214\345\217\211\346\240\221.md" "b/example/\344\272\214\345\217\211\346\240\221/101.\345\257\271\347\247\260\344\272\214\345\217\211\346\240\221.md"
deleted file mode 100644
index fe2b07f..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/101.\345\257\271\347\247\260\344\272\214\345\217\211\346\240\221.md"
+++ /dev/null
@@ -1,31 +0,0 @@
-## [101. 对称二叉树](https://leetcode.cn/problems/symmetric-tree/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(H) 树的高度,递归深度
-
-- 思路
-- 分:获取左子树和右子树
-- 解:递归的判断两个树的左子树是否相等,右子树是否相等
-- 合:将上述结构合并,判断val是否相等,如果根节点也相等,那么树就相等
-- 与100题相比,这个是判断子树是否对称
-- 也可以使用层序遍历,把每一层的节点求出,然后左右指针进行 向内比较,判断每一层是否对称
-
-```js
-/**
- * @param {TreeNode} root
- * @return {boolean}
- */
-var isSymmetric = function (root) {
- if (root === null) return true;
- // 检查子树是否对称
- const check = (leftRoot, rightRoot) => {
- if (leftRoot === null || rightRoot === null) return leftRoot === rightRoot;
- if (leftRoot.val !== rightRoot.val) return false;
-
- // 走到这里说明leftRoot.val === rightRoot.val,然后判断对称子树是否相等
- return check(leftRoot.right, rightRoot.left) && check(leftRoot.left, rightRoot.right);
- }
-
- return check(root.left, root.right);
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/102.\344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206.md" "b/example/\344\272\214\345\217\211\346\240\221/102.\344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206.md"
deleted file mode 100644
index 3abc905..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/102.\344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206.md"
+++ /dev/null
@@ -1,36 +0,0 @@
-## [102.二叉树的层序遍历](https://leetcode.cn/problems/binary-tree-level-order-traversal/) medium
-
-时间复杂度 O(N)
-空间复杂度 O(N)
-- 思路
-- 层级 + 广度优先遍历
-- 返回值用数组存放
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number[][]}
- */
-var levelOrder = function (root) {
- if (!root) return [];
- const q = [root];
- const res = [];
- let level = 0;
-
- while (q.length) {
- for (let i = 0, len = q.length; i < len; i++) {
- const node = q.shift();
- if (!res[level]) {
- res[level] = [node.val];
- } else {
- res[level].push(node.val);
- }
-
- node.left && q.push(node.left);
- node.right && q.push(node.right);
- }
- level += 1;
- }
- return res;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/1022.\344\273\216\346\240\271\345\210\260\345\217\266\347\232\204\344\272\214\350\277\233\345\210\266\346\225\260\344\271\213\345\222\214.md" "b/example/\344\272\214\345\217\211\346\240\221/1022.\344\273\216\346\240\271\345\210\260\345\217\266\347\232\204\344\272\214\350\277\233\345\210\266\346\225\260\344\271\213\345\222\214.md"
deleted file mode 100644
index 27452ab..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/1022.\344\273\216\346\240\271\345\210\260\345\217\266\347\232\204\344\272\214\350\277\233\345\210\266\346\225\260\344\271\213\345\222\214.md"
+++ /dev/null
@@ -1,28 +0,0 @@
-## [1022.从根到叶的二进制数之和](https://leetcode.cn/problems/sum-of-root-to-leaf-binary-numbers/) easy
-
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number}
- */
-var sumRootToLeaf = function (root) {
- let dept = [];
-
- const traverse = (root, s) => {
- if (root === null) return;
- s += root.val;
- if (root.left === null && root.right === null) {
- dept.push(s);
- }
- traverse(root.left, s);
- traverse(root.right, s);
- s -= root.val;
- };
-
- traverse(root, "");
-
- const res = dept.reduce((pre, cur) => parseInt(pre) + parseInt(cur, 2), "0");
- return res;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/103.\344\272\214\345\217\211\346\240\221\347\232\204\351\224\257\351\275\277\345\275\242\345\261\202\345\272\217\351\201\215\345\216\206.md" "b/example/\344\272\214\345\217\211\346\240\221/103.\344\272\214\345\217\211\346\240\221\347\232\204\351\224\257\351\275\277\345\275\242\345\261\202\345\272\217\351\201\215\345\216\206.md"
deleted file mode 100644
index 60c10da..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/103.\344\272\214\345\217\211\346\240\221\347\232\204\351\224\257\351\275\277\345\275\242\345\261\202\345\272\217\351\201\215\345\216\206.md"
+++ /dev/null
@@ -1,35 +0,0 @@
-## [103.二叉树的锯齿形层序遍历](https://leetcode.cn/problems/binary-tree-zigzag-level-order-traversal/) medium
-
-- 跟102.层序遍历思路差不多
-- 在层序遍历的基础上加一个标识flag,
-- 根据flag,判断当前层级遍历结果是push还是unshift进数组,改变结果推入顺序
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number[][]}
- */
-var zigzagLevelOrder = function (root) {
- if (!root) return [];
- const q = [root];
- const res = [];
- let isLeft = true; // true 表示 --> 从左向右
- while (q.length) {
- let levelResult = []; // 当前层级遍历结果
- for (let i = 0, len = q.length; i < len; i++) {
- const node = q.shift();
- if (isLeft) {
- levelResult.push(node.val);
- } else {
- levelResult.unshift(node.val);
- }
-
- node.left && q.push(node.left);
- node.right && q.push(node.right);
- }
- isLeft = !isLeft;
- res.push(levelResult);
- }
- return res;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/1038.\344\273\216\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\345\210\260\346\233\264\345\244\247\345\222\214\346\240\221.md" "b/example/\344\272\214\345\217\211\346\240\221/1038.\344\273\216\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\345\210\260\346\233\264\345\244\247\345\222\214\346\240\221.md"
deleted file mode 100644
index ba923b6..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/1038.\344\273\216\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\345\210\260\346\233\264\345\244\247\345\222\214\346\240\221.md"
+++ /dev/null
@@ -1,22 +0,0 @@
-## [1038.从二叉搜索树到更大和树](https://leetcode.cn/problems/binary-search-tree-to-greater-sum-tree/) medium
-
-- 与538同题
-
-```js
-/**
- * @param {TreeNode} root
- * @return {TreeNode}
- */
-var bstToGst = function (root) {
- let sum = 0;
- const traverse = (root) => {
- if (root === null) return;
- traverse(root.right);
- sum += root.val;
- root.val = sum;
- traverse(root.left);
- };
- traverse(root);
- return root;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/104.\344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\345\244\247\346\267\261\345\272\246.md" "b/example/\344\272\214\345\217\211\346\240\221/104.\344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\345\244\247\346\267\261\345\272\246.md"
deleted file mode 100644
index 2aa4d08..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/104.\344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\345\244\247\346\267\261\345\272\246.md"
+++ /dev/null
@@ -1,53 +0,0 @@
-## [104.二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(N)
- 看似是O(1) 然而在函数递归调用的时候有函数调用栈的空间,所以最坏情况下是O(N)
-
-- 思路
-- 遍历二叉树
-- 遍历时,为每个节点标记层级
-- 记录最大值并返回,可以 只比较叶子节点的层级,做优化提升
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number}
- */
-// 遍历解法:对应回溯算法
-var maxDepth = function (root) {
- let res = 0;
- let deep = 0; // 当前深度
- const traverse = (root) => {
- if (root === null) { // 到达根节点
- res = Math.max(res, deep); // 更新结果
- return;
- }
- deep++;
- traverse(root.left);
- traverse(root.right);
- deep--;
- };
- traverse(root);
- return res;
-};
-```
-
-- 分解子问题解法:对应动态规划解法
-- 定义:maxDepth函数返回输入节点的最大深度
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number}
- */
-var maxDepth = function (root) {
- // base case
- if (root === null) {
- return 0;
- }
- let leftDepth = maxDepth(root.left); // 获取左子树的最大深度
- let rightDepth = maxDepth(root.right); // 获取右子树的最大深度
- return Math.max(leftDepth, rightDepth) + 1; // 取左右子树中的最大深度 + 当前节点,即返回当前节点的最大深度
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/105.\344\273\216\345\211\215\345\272\217\344\270\216\344\270\255\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227\346\236\204\351\200\240\344\272\214\345\217\211\346\240\221.md" "b/example/\344\272\214\345\217\211\346\240\221/105.\344\273\216\345\211\215\345\272\217\344\270\216\344\270\255\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227\346\236\204\351\200\240\344\272\214\345\217\211\346\240\221.md"
deleted file mode 100644
index 24b198a..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/105.\344\273\216\345\211\215\345\272\217\344\270\216\344\270\255\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227\346\236\204\351\200\240\344\272\214\345\217\211\346\240\221.md"
+++ /dev/null
@@ -1,64 +0,0 @@
-## [105.从前序与中序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/) medium
-
-时间复杂度 O(N)
-空间复杂度 O(N)
-
-思路
-- 构建二叉树的第一步就是找到根节点,然后找出左右的根,递归构建出左右子树
-- 根据前序遍历的特点,前序遍历的第一个元素就是根节点,剩下就是如何构建左右子树
-```js
-root.left = build(preorder, ??? , ???, inorder, inStart, rootIndex - 1);
-root.right = build(preorder, ??? , ??? , inorder, rootIndex + 1, inEnd);
-```
-- 中序遍历,根结点位置之前的就是左子树,之后的就是右子树,所以根据根节点所在位置,很容易写出中序遍历结构,左右子树的范围
-- 难点在于 ??? 的位置如果划分(也就是前序遍历,左右子树的范围)
-- 可以从中序遍历入手,可以从根结点到开始的位置,知道左子树的长度
-- 在前序遍历中,左子树的位置范围就是 (preStart+1 , preStart + leftSize)
-- 右子树的位置范围就是(preStart + leftSize +1 , preEnd)
-- 最后找出base case 跳出递归的条件,preStart > preEnd 就返回null
-
-```js
-/**
- * @param {number[]} preorder
- * @param {number[]} inorder
- * @return {TreeNode}
- */
-var buildTree = function (preorder, inorder) {
- return build(
- preorder,
- 0,
- preorder.length - 1,
- inorder,
- 0,
- inorder.length - 1
- );
-};
-
-const build = (preorder, preStart, preEnd, inorder, inoStart, inoEnd) => {
- if (preStart > preEnd) return null;
- const rootVal = preorder[preStart];
- const inoRootIndex = inorder.indexOf(rootVal);
-
- const leftSize = inoRootIndex - inoStart;
-
- const root = new TreeNode(rootVal);
-
- root.left = build(
- preorder,
- preStart + 1,
- preStart + leftSize,
- inorder,
- inoStart,
- inoRootIndex - 1
- );
- root.right = build(
- preorder,
- preStart + leftSize + 1,
- preEnd,
- inorder,
- inoRootIndex + 1,
- inoEnd
- );
- return root;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/106.\344\273\216\344\270\255\345\272\217\344\270\216\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227\346\236\204\351\200\240\344\272\214\345\217\211\346\240\221.md" "b/example/\344\272\214\345\217\211\346\240\221/106.\344\273\216\344\270\255\345\272\217\344\270\216\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227\346\236\204\351\200\240\344\272\214\345\217\211\346\240\221.md"
deleted file mode 100644
index 26e8739..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/106.\344\273\216\344\270\255\345\272\217\344\270\216\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227\346\236\204\351\200\240\344\272\214\345\217\211\346\240\221.md"
+++ /dev/null
@@ -1,66 +0,0 @@
-## [106.从中序与后序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/) medium
-
-时间复杂度 O(N)
-空间复杂度 O(N)
-
-- 思路
-- 跟105很像
-- 先根据后序遍历的最后一位是根节点的特点,找出根
-- 然后找出跟节点在中序遍历的位置,根据根的位置,求出左子树的长度
-- 递归的构建左右子树
-
-```js
-/**
- * @param {number[]} inorder
- * @param {number[]} postorder
- * @return {TreeNode}
- */
-//中序 [9, 3, 15, 20, 7]
-// ^ ^ ^ ^
-// | | | |
-// l root ---r---
-
-//后序 [9, 15, 7, 20, 3]
-// ^ ^ ^
-// | | |
-// ---r--- root
-
-var buildTree = function (inorder, postorder) {
- return build(
- inorder,
- 0,
- inorder.length - 1,
- postorder,
- 0,
- postorder.length - 1
- );
-};
-
-const build = (inorder, inStart, inEnd, postorder, poStart, poEnd) => {
- if (inStart > inEnd) return null;
- let rootVal = postorder[poEnd];
- let rootIndex = inorder.indexOf(rootVal);
-
- const leftSize = rootIndex - inStart;
- const root = new TreeNode(rootVal);
-
- root.left = build(
- inorder,
- inStart,
- rootIndex - 1,
- postorder,
- poStart,
- poStart + leftSize - 1
- );
- root.right = build(
- inorder,
- rootIndex + 1,
- inEnd,
- postorder,
- poStart + leftSize,
- poEnd - 1
- );
-
- return root;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/107.\344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206-ii.md" "b/example/\344\272\214\345\217\211\346\240\221/107.\344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206-ii.md"
deleted file mode 100644
index a10b8b6..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/107.\344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206-ii.md"
+++ /dev/null
@@ -1,26 +0,0 @@
-## [107.二叉树的层序遍历-ii](https://leetcode.cn/problems/binary-tree-level-order-traversal-ii/) medium
-
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number[][]}
- */
-var levelOrderBottom = function (root) {
- if (!root) return [];
- const q = [root];
- const res = [];
-
- while (q.length) {
- let levelRes = [];
- for (let i = 0, len = q.length; i < len; i++) {
- const node = q.shift();
- levelRes.push(node.val);
- node.left && q.push(node.left);
- node.right && q.push(node.right);
- }
- res.unshift(levelRes);
- }
- return res;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/108.\345\260\206\346\234\211\345\272\217\346\225\260\347\273\204\350\275\254\346\215\242\344\270\272\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" "b/example/\344\272\214\345\217\211\346\240\221/108.\345\260\206\346\234\211\345\272\217\346\225\260\347\273\204\350\275\254\346\215\242\344\270\272\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md"
deleted file mode 100644
index 5a16925..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/108.\345\260\206\346\234\211\345\272\217\346\225\260\347\273\204\350\275\254\346\215\242\344\270\272\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md"
+++ /dev/null
@@ -1,30 +0,0 @@
-## [108.将有序数组转换为二叉搜索树](https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(N)
-
-- 思路
-- 对于二叉搜索树(BST)来说,数组按照升序排列就是中序遍历 的结果
-- 所以,数组中间的数就是根节点,左区间是左子树,右区间是右子树
-- 而对于左右区间来说,中间也是左右子树 的 根节点
-- 当left > right时,区间为空null
-- 递归找出所有区间的根和左右子树,返回根节点即可
-
-```js
-/**
- * @param {number[]} nums
- * @return {TreeNode}
- */
-var sortedArrayToBST = function (nums) {
- const build = (nums, left, right) => {
- if (left > right) return null; //空区间返回null
- let mid = Math.floor((left + right) / 2);
- let root = new TreeNode(nums[mid]);
- root.left = build(nums, left, mid - 1);
- root.right = build(nums, mid + 1, right);
- return root;
- };
-
- return build(nums, 0, nums.length - 1);
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/109.\346\234\211\345\272\217\351\223\276\350\241\250\350\275\254\346\215\242\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" "b/example/\344\272\214\345\217\211\346\240\221/109.\346\234\211\345\272\217\351\223\276\350\241\250\350\275\254\346\215\242\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md"
deleted file mode 100644
index 3658d27..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/109.\346\234\211\345\272\217\351\223\276\350\241\250\350\275\254\346\215\242\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md"
+++ /dev/null
@@ -1,51 +0,0 @@
-## [109.有序链表转换二叉搜索树](https://leetcode.cn/problems/convert-sorted-list-to-binary-search-tree/) medium
-
-- 思路
-- 可以讲链表转换成数组,然后根据108题的函数,转换成BST
-- 找出链表的中心节点,然后跟108题一样构建bst
-
-```js
-/**
- * Definition for singly-linked list.
- * function ListNode(val, next) {
- * this.val = (val===undefined ? 0 : val)
- * this.next = (next===undefined ? null : next)
- * }
- */
-/**
- * Definition for a binary tree node.
- * function TreeNode(val, left, right) {
- * this.val = (val===undefined ? 0 : val)
- * this.left = (left===undefined ? null : left)
- * this.right = (right===undefined ? null : right)
- * }
- */
-/**
- * @param {ListNode} head
- * @return {TreeNode}
- */
-var sortedListToBST = function (head) {
- return build(head, null);
-};
-
-// [begin,end)内的链表,构建为BST
-const build = (begin, end) => {
- if (begin === end) return null;
-
- const mid = getMid(begin, end);
- let root = new TreeNode(mid.val);
- root.left = build(begin, mid);
- root.right = build(mid.next, end);
- return root;
-};
-
-const getMid = (begin, end) => {
- let mid = begin,
- fast = begin;
- while (fast !== end && fast.next !== end) {
- mid = mid.next;
- fast = fast.next.next;
- }
- return mid;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/110.\345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" "b/example/\344\272\214\345\217\211\346\240\221/110.\345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md"
deleted file mode 100644
index f3e16ec..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/110.\345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md"
+++ /dev/null
@@ -1,34 +0,0 @@
-## [110.平衡二叉树](https://leetcode.cn/problems/balanced-binary-tree/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(1)
-
-- 思路
-- 为了判断是否平衡,拍脑袋的想法是计算每个节点的最大高度,但是每个节点都算一遍最大深度,时间复杂度比较高
-- 所以,最好过来想,只计算一次最大深度,在计算过程中判断二叉树是否平衡
-- 对于每个节点,先算出来左右子树的最大深度,然后在后序遍历的位置,然后根据 左右子树的最大高度 判断平衡性
-
-```js
-/**
- * @param {TreeNode} root
- * @return {boolean}
- */
-var isBalanced = function (root) {
- let res = true;
-
- const traverse = (root) => {
- if (root === null) return 0;
- if (!res) return; // res 已经为false了,可以停止遍历了
-
- const leftMaxDepth = traverse(root.left);
- const rightMaxDepth = traverse(root.right);
- if (Math.abs(leftMaxDepth - rightMaxDepth) > 1) {
- res = false;
- }
- return Math.max(leftMaxDepth, rightMaxDepth) + 1;
- };
-
- traverse(root);
- return res;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/111.\344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\345\260\217\346\267\261\345\272\246.md" "b/example/\344\272\214\345\217\211\346\240\221/111.\344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\345\260\217\346\267\261\345\272\246.md"
deleted file mode 100644
index d3ceef2..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/111.\344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\345\260\217\346\267\261\345\272\246.md"
+++ /dev/null
@@ -1,59 +0,0 @@
-## [111.二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(N)
-
-- DFS 会经过所有的节点
-- 而 BFS 求最小的深度,只需要找到离 root 节点最近的根结点
-- 返回该根节点所在的层数即可,所以无需遍历所有节点,时间复杂度低,但是空间复杂度高一点
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number}
- */
-/**
- * DFS会经过所有的节点
- * 而BFS求最小的深度,只需要找到离root节点最近的根结点
- * 返回该根节点所在的层数即可,所以无需遍历所有节点,时间复杂度低,但是空间复杂度高一点
- */
-// BFS解法
-var minDepth = function (root) {
- if (root === null) return 0;
- const q = [root]; // 队列
- let deep = 1; // 初始深度为1
- while (q.length) {
- const len = q.length;
- for (let i = 0; i < len; i++) {
- const cur = q.shift();
- // 当走到第一个叶子结点,返回deep
- if (cur.left === null && cur.right === null) return deep;
- if (cur.left !== null) q.push(cur.left);
- if (cur.right !== null) q.push(cur.right);
- }
- deep++;
- }
- return deep;
-};
-```
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number}
- */
-// DFS解法
-var minDepthDFS = function (root) {
- let res = Infinity;
- const traverse = (root, deep) => {
- if (root === null) return;
- if (root.left === null && root.right === null) {
- res = Math.min(deep, res);
- }
- traverse(root.left, deep + 1);
- traverse(root.right, deep + 1);
- };
- traverse(root, 1);
- return res === Infinity ? [] : res;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/112.\350\267\257\345\276\204\346\200\273\345\222\214.md" "b/example/\344\272\214\345\217\211\346\240\221/112.\350\267\257\345\276\204\346\200\273\345\222\214.md"
deleted file mode 100644
index 050bd3b..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/112.\350\267\257\345\276\204\346\200\273\345\222\214.md"
+++ /dev/null
@@ -1,55 +0,0 @@
-## [112.路径总和](https://leetcode.cn/problems/path-sum/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(lonN) 函数调用堆栈
-- 思路
-- 最初想法是判断左孩子比右孩子小,但是这样的话,没办法保证保证根节点比右孩子小,比左孩子大 这一问题
-- 所以将根结点也考虑进去,max.val > root.val > min.val
-- 所以使用辅助函数,限定左子树的最大值是 root.val,右子树的最小值是 root.val
-
-```js
-/**
- * @param {TreeNode} root
- * @param {number} targetSum
- * @return {boolean}
- */
-// 常规思路,遍历二叉树,在遍历过程中积累路径和,
-// 当遍历到叶子结点的时候,判断路径和是否与targetSum相等
-var hasPathSum = function (root, targetSum) {
- if (root === null) return false;
- let curSum = 0; //当前和
- let found = false; // 判断是否找
- const traverse = (root) => {
- if (root === null) return;
-
- curSum += root.val;
- if (root.left === root.right) {
- if (curSum === targetSum) found = true;
- }
- traverse(root.left);
- traverse(root.right);
- curSum -= root.val;
- };
- traverse(root);
- return found;
-};
-
-
-```
-
-- 动态规划解法
-- 拆分子问题,用小问题推到出大问题
-- 输入一个根结点,该根结点的路径和是否能凑到targetSum
-
-```js
-var hasPathSum = function (root, targetSum) {
- if (root === null) return false;
- if (root.left === root.right && root.val === targetSum) {
- return true;
- }
- return (
- hasPathSum(root.left, targetSum - root.val) ||
- hasPathSum(root.right, targetSum - root.val)
- );
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/113.\350\267\257\345\276\204\346\200\273\345\222\214-ii.md" "b/example/\344\272\214\345\217\211\346\240\221/113.\350\267\257\345\276\204\346\200\273\345\222\214-ii.md"
deleted file mode 100644
index 0dbfc95..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/113.\350\267\257\345\276\204\346\200\273\345\222\214-ii.md"
+++ /dev/null
@@ -1,41 +0,0 @@
-## [113.路径总和-ii](https://leetcode.cn/problems/path-sum-ii/) medium
-
-- 112是求结果,这道题是求所有的路径结果
-
-```js
-/**
- * @param {TreeNode} root
- * @param {number} targetSum
- * @return {number[][]}
- */
-// 需要维护一个path,遍历时经过的路径
-var pathSum = function (root, targetSum) {
- if (!root) return [];
- let res = [];
- let path = [];
- const traverse = (root, targetSum, path) => {
- if (root === null) return;
-
- let remain = targetSum - root.val;
- if (root.left === null && root.right === null) {
- if (remain === 0) {
- path.push(root.val);
- res.push([...path]);
- path.pop();
- }
- return;
- }
-
- path.push(root.val); //进入的时候给path添加值
- traverse(root.left, remain, path);
- path.pop(); // 退出的时候,删除path
-
- path.push(root.val);
- traverse(root.right, remain, path);
- path.pop();
- };
-
- traverse(root, targetSum, path);
- return res;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/114.\344\272\214\345\217\211\346\240\221\345\261\225\345\274\200\344\270\272\351\223\276\350\241\250.md" "b/example/\344\272\214\345\217\211\346\240\221/114.\344\272\214\345\217\211\346\240\221\345\261\225\345\274\200\344\270\272\351\223\276\350\241\250.md"
deleted file mode 100644
index 86f111c..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/114.\344\272\214\345\217\211\346\240\221\345\261\225\345\274\200\344\270\272\351\223\276\350\241\250.md"
+++ /dev/null
@@ -1,35 +0,0 @@
-## [114.二叉树展开为链表](https://leetcode.cn/problems/flatten-binary-tree-to-linked-list/) medium
-
-时间复杂度 O(N)
-空间复杂度 O(1)
-- 思路
-- 分解子问题解法
-- 将 root 的左子树和右子树拉平
-- 将 root 的左子树替换成root的右子树,然后把原来的右子树,接到现在右子树的尾部
-
-```js
-/**
- * @param {TreeNode} root
- * @return {void} Do not return anything, modify root in-place instead.
- */
-var flatten = function (root) {
- if (root === null) return;
- flatten(root.left);
- flatten(root.right);
- // 后序遍历位置
- let left = root.left;
- let right = root.right;
-
- // 1.先将左子树清空
- root.left = null;
- // 2.将原来左子树,替换到原来右子树的位置
- root.right = left;
-
- // 3.将原来的右子树接到现在右子树的后面
- let p = root;
- while (p.right !== null) {
- p = p.right;
- }
- p.right = right;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/116.\345\241\253\345\205\205\346\257\217\344\270\252\350\212\202\347\202\271\347\232\204\344\270\213\344\270\200\344\270\252\345\217\263\344\276\247\350\212\202\347\202\271\346\214\207\351\222\210.md" "b/example/\344\272\214\345\217\211\346\240\221/116.\345\241\253\345\205\205\346\257\217\344\270\252\350\212\202\347\202\271\347\232\204\344\270\213\344\270\200\344\270\252\345\217\263\344\276\247\350\212\202\347\202\271\346\214\207\351\222\210.md"
deleted file mode 100644
index a0ad9cb..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/116.\345\241\253\345\205\205\346\257\217\344\270\252\350\212\202\347\202\271\347\232\204\344\270\213\344\270\200\344\270\252\345\217\263\344\276\247\350\212\202\347\202\271\346\214\207\351\222\210.md"
+++ /dev/null
@@ -1,34 +0,0 @@
-## [116.填充每个节点的下一个右侧节点指针](https://leetcode.cn/problems/populating-next-right-pointers-in-each-node/) medium
-
-时间复杂度 O(N)
-空间复杂度 O(logN)
-- 思路
-- 最初想法,是直接将root.left.next = root.right,但是这样的话,跨节点的树就没办法连接
-- 例如:5的next没办法跟6连接到一起
-- 所以使用一个辅助函数,将两个相邻节点进行连接,从而实现跨节点相连
-- 将节点之间的空隙看成一颗树,然后去遍历这颗树
-
-```js
-/**
- * @param {Node} root
- * @return {Node}
- */
-// 也可以使用117题的层序遍历方法
-// 这里是完全二叉树,使用递归更方便
-var connect = function (root) {
- if (root === null) return null;
- traverse(root.left, root.right);
- return root;
-};
-
-const traverse = (node1, node2) => {
- if (node1 === null || node2 === null) return;
-
- node1.next = node2;
-
- traverse(node1.left, node1.right);
- traverse(node2.left, node2.right);
-
- traverse(node1.right, node2.left); // 重点:跨树向连节点
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/117.\345\241\253\345\205\205\346\257\217\344\270\252\350\212\202\347\202\271\347\232\204\344\270\213\344\270\200\344\270\252\345\217\263\344\276\247\350\212\202\347\202\271\346\214\207\351\222\210-ii.md" "b/example/\344\272\214\345\217\211\346\240\221/117.\345\241\253\345\205\205\346\257\217\344\270\252\350\212\202\347\202\271\347\232\204\344\270\213\344\270\200\344\270\252\345\217\263\344\276\247\350\212\202\347\202\271\346\214\207\351\222\210-ii.md"
deleted file mode 100644
index ea4c4a7..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/117.\345\241\253\345\205\205\346\257\217\344\270\252\350\212\202\347\202\271\347\232\204\344\270\213\344\270\200\344\270\252\345\217\263\344\276\247\350\212\202\347\202\271\346\214\207\351\222\210-ii.md"
+++ /dev/null
@@ -1,29 +0,0 @@
-## [117.填充每个节点的下一个右侧节点指针-ii](https://leetcode.cn/problems/populating-next-right-pointers-in-each-node-ii/) medium
-
-- 层序遍历
-- 使用pur记录当前层的上一个遍历的结果
-- 然后在该层遍历时,进行连接
-
-```js
-/**
- * @param {Node} root
- * @return {Node}
- */
-var connect = function (root) {
- if (root === null) return null;
- const q = [root];
- while (q.length) {
- let pur = null; // 当前层
- for (let i = 0, len = q.length; i < len; i++) {
- const node = q.shift();
- if (pur) {
- pur.next = node;
- }
- pur = node;
- node.left && q.push(node.left);
- node.right && q.push(node.right);
- }
- }
- return root;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/124.\344\272\214\345\217\211\346\240\221\344\270\255\347\232\204\346\234\200\345\244\247\350\267\257\345\276\204\345\222\214.md" "b/example/\344\272\214\345\217\211\346\240\221/124.\344\272\214\345\217\211\346\240\221\344\270\255\347\232\204\346\234\200\345\244\247\350\267\257\345\276\204\345\222\214.md"
deleted file mode 100644
index ffadf05..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/124.\344\272\214\345\217\211\346\240\221\344\270\255\347\232\204\346\234\200\345\244\247\350\267\257\345\276\204\345\222\214.md"
+++ /dev/null
@@ -1,31 +0,0 @@
-## [124.二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) hard
-
-- 求二叉树最大路径和
-- 相当于从根节点出发,求左子树最大和,与右子树最大和,再加上跟节点就是最大路径和
-- 所以这里需要求单边最大的和,在求单边最大和的过程中,计算左右子树最大和+根节点和
-- 最大的和就是最大路径和
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number}
- */
-var maxPathSum = function (root) {
- if (root === null) return 0;
- let res = -Infinity;
-
- const onSideMax = (root) => {
- if (root === null) return 0;
-
- let leftMax = Math.max(0, onSideMax(root.left));
- let rightMax = Math.max(0, onSideMax(root.right));
-
- let sum = leftMax + rightMax + root.val;
- res = Math.max(res, sum);
- return Math.max(leftMax, rightMax) + root.val;
- };
-
- onSideMax(root);
- return res;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/129.\346\261\202\346\240\271\350\212\202\347\202\271\345\210\260\345\217\266\350\212\202\347\202\271\346\225\260\345\255\227\344\271\213\345\222\214.md" "b/example/\344\272\214\345\217\211\346\240\221/129.\346\261\202\346\240\271\350\212\202\347\202\271\345\210\260\345\217\266\350\212\202\347\202\271\346\225\260\345\255\227\344\271\213\345\222\214.md"
deleted file mode 100644
index 45c2be9..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/129.\346\261\202\346\240\271\350\212\202\347\202\271\345\210\260\345\217\266\350\212\202\347\202\271\346\225\260\345\255\227\344\271\213\345\222\214.md"
+++ /dev/null
@@ -1,30 +0,0 @@
-## [129.求根节点到叶节点数字之和](https://leetcode.cn/problems/sum-root-to-leaf-numbers/) medium
-
-- 前序遍历
-- 在遍历过程中记录path,在后序遍历位置,删除path中的元素
-- 然后在遍历到叶子结点的时候,将path转化为数字,然后累加
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number}
- */
-var sumNumbers = function (root) {
- let res = 0;
- let path = [];
-
- const traverse = (root) => {
- if (root === null) return;
- path.push(root.val);
- if (root.left === null && root.right === null) {
- res += path.reduce((a, b) => a * 10 + b);
- }
- root.left && traverse(root.left);
- root.right && traverse(root.right);
- path.pop();
- };
-
- traverse(root);
- return res;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/144.\344\272\214\345\217\211\346\240\221\347\232\204\345\211\215\345\272\217\351\201\215\345\216\206.md" "b/example/\344\272\214\345\217\211\346\240\221/144.\344\272\214\345\217\211\346\240\221\347\232\204\345\211\215\345\272\217\351\201\215\345\216\206.md"
deleted file mode 100644
index fe33db9..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/144.\344\272\214\345\217\211\346\240\221\347\232\204\345\211\215\345\272\217\351\201\215\345\216\206.md"
+++ /dev/null
@@ -1,20 +0,0 @@
-## [144.二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) easy
-
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number[]}
- */
-var preorderTraversal = function (root) {
- let res = [];
- const traversal = (root) => {
- if (root === null) return;
- res.push(root.val);
- traversal(root.left);
- traversal(root.right);
- };
- traversal(root);
- return res;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/145.\344\272\214\345\217\211\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206.md" "b/example/\344\272\214\345\217\211\346\240\221/145.\344\272\214\345\217\211\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206.md"
deleted file mode 100644
index 509096d..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/145.\344\272\214\345\217\211\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206.md"
+++ /dev/null
@@ -1,20 +0,0 @@
-## [145.二叉树的后序遍历](https://leetcode.cn/problems/binary-tree-postorder-traversal/) easy
-
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number[]}
- */
-var postorderTraversal = function (root) {
- let res = [];
- const traversal = (root) => {
- if (root === null) return;
- traversal(root.left);
- traversal(root.right);
- res.push(root.val);
- };
- traversal(root);
- return res;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/173.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\277\255\344\273\243\345\231\250.md" "b/example/\344\272\214\345\217\211\346\240\221/173.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\277\255\344\273\243\345\231\250.md"
deleted file mode 100644
index c22e1ef..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/173.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\277\255\344\273\243\345\231\250.md"
+++ /dev/null
@@ -1,48 +0,0 @@
-## [173.二叉搜索树迭代器](https://leetcode.cn/problems/binary-search-tree-iterator/) medium
-
-- 使用栈模拟中序遍历时,函数调用的过程
-- 中序遍历时,先访问左子树,
-- 当访问到左子树叶子结点,向上访问节点,然后访问该节点的右节点的左子树叶,
-- 然后循环该过程
-
-```js
-// 思路:使用栈模拟中序遍历的递归过程
-/**
- * @param {TreeNode} root
- */
-var BSTIterator = function (root) {
- this.traverseLeft(root);
-};
-
-BSTIterator.prototype.stack = [];
-BSTIterator.prototype.traverseLeft = function (node) {
- while (node !== null) {
- this.stack.push(node);
- node = node.left;
- }
-};
-
-/**
- * @return {number}
- */
-BSTIterator.prototype.next = function () {
- let curNode = this.stack.pop();
- this.traverseLeft(curNode.right);
- return curNode.val;
-};
-
-/**
- * @return {boolean}
- */
-BSTIterator.prototype.hasNext = function () {
- return this.stack.length !== 0;
-};
-
-/**
- * Your BSTIterator object will be instantiated and called as such:
- * var obj = new BSTIterator(root)
- * var param_1 = obj.next()
- * var param_2 = obj.hasNext()
- */
-// @lc code=end
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/199.\344\272\214\345\217\211\346\240\221\347\232\204\345\217\263\350\247\206\345\233\276.md" "b/example/\344\272\214\345\217\211\346\240\221/199.\344\272\214\345\217\211\346\240\221\347\232\204\345\217\263\350\247\206\345\233\276.md"
deleted file mode 100644
index 1321510..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/199.\344\272\214\345\217\211\346\240\221\347\232\204\345\217\263\350\247\206\345\233\276.md"
+++ /dev/null
@@ -1,27 +0,0 @@
-## [199.二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) medium
-
-- 层序遍历时,每层的最后一个节点就是右视图的节点
-- 为了提高效率,从右向左层序遍历,每层第一个节点就是右视图的节点
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number[]}
- */
-var rightSideView = function (root) {
- const res = [];
- if (root === null) return res;
- const q = [root];
-
- while (q.length) {
- const rightView = q[0];
- for (let i = 0, len = q.length; i < len; i++) {
- let curNode = q.shift();
- curNode.right && q.push(curNode.right);
- curNode.left && q.push(curNode.left);
- }
- res.push(rightView.val);
- }
- return res;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/222.\345\256\214\345\205\250\344\272\214\345\217\211\346\240\221\347\232\204\350\212\202\347\202\271\344\270\252\346\225\260.md" "b/example/\344\272\214\345\217\211\346\240\221/222.\345\256\214\345\205\250\344\272\214\345\217\211\346\240\221\347\232\204\350\212\202\347\202\271\344\270\252\346\225\260.md"
deleted file mode 100644
index 4d72466..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/222.\345\256\214\345\205\250\344\272\214\345\217\211\346\240\221\347\232\204\350\212\202\347\202\271\344\270\252\346\225\260.md"
+++ /dev/null
@@ -1,40 +0,0 @@
-## [222.完全二叉树的节点个数](https://leetcode.cn/problems/count-complete-tree-nodes/) medium
-
-时间复杂度 O(logN * logN)
-空间复杂度 O(logN)
-
-- 思路
-- 最初是遍历所有的树,在遍历过程中计算
-- 然后完全二叉树在每次增加节点的时候,另一边会出现满二叉树的子树
-- 然后利用这个特性,去计算满二叉树的节点,另一半子树用普通递归遍历计算即可
-
-```js
-// 利用完全二叉树的节点是 2^树高度 - 1
-// 时间复杂度O(logN*logN)
-// 每次都有一个hl===hr的情况,必有一边的时间复杂度是LogN
-// 另一边while循环的时间复杂度是LogN
-/**
- * @param {TreeNode} root
- * @return {number}
- */
-var countNodes = function (root) {
- if (root === null) return 0;
- let l = root,
- r = root;
- let hr = 0,
- hl = 0;
- while (l !== null) {
- l = l.left;
- hl++;
- }
- while (r !== null) {
- r = r.right;
- hr++;
- }
- if (hl === hr) {
- return Math.pow(2, hl) - 1;
- } else {
- return 1 + countNodes(root.left) + countNodes(root.right);
- }
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/226.\347\277\273\350\275\254\344\272\214\345\217\211\346\240\221.md" "b/example/\344\272\214\345\217\211\346\240\221/226.\347\277\273\350\275\254\344\272\214\345\217\211\346\240\221.md"
deleted file mode 100644
index 6f2a4e9..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/226.\347\277\273\350\275\254\344\272\214\345\217\211\346\240\221.md"
+++ /dev/null
@@ -1,42 +0,0 @@
-## [226.翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(H) h是树的高度,最坏情况下是O(N)
-
-- 思路
-- 我们发现只要把二叉树上的每一个节点的左右子节点进行交换,最后的结果就是完全翻转之后的二叉树
-
-```js
-/**
- * @param {TreeNode} root
- * @return {TreeNode}
- */
-var invertTree = function (root) {
- const traverse = (root) => {
- if (root === null) return;
- // 交换当前树的左右子树
- let temp = root.left;
- root.left = root.right;
- root.right = temp;
-
- traverse(root.left);
- traverse(root.right);
- };
- traverse(root);
- return root;
-};
-```
-
-分解问题方式
-
-```js
-var invertTree = function (root) {
- if (root === null) return null;
- let left = invertTree1(root.left);
- let right = invertTree1(root.right);
- // 交换树
- root.left = right;
- root.right = left;
- return root;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/230.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\254\254k\345\260\217\347\232\204\345\205\203\347\264\240.md" "b/example/\344\272\214\345\217\211\346\240\221/230.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\254\254k\345\260\217\347\232\204\345\205\203\347\264\240.md"
deleted file mode 100644
index 8254c92..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/230.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\254\254k\345\260\217\347\232\204\345\205\203\347\264\240.md"
+++ /dev/null
@@ -1,37 +0,0 @@
-## [230.二叉搜索树中第k小的元素](https://leetcode.cn/problems/kth-smallest-element-in-a-bst/) medium
-
-时间复杂度 O(N)
-空间复杂度 O(logN)
-
-- 思路
-- 利用BST中序遍历的结构是升序的这一特性
-- 在中序遍历的位置,也就是第k次循环就是第k大的元素
-- 所以记录第几次循环,到目标k次的时候,返回对应值,结束循环即可
-
-```js
-/**
- * @param {TreeNode} root
- * @param {number} k
- * @return {number}
- */
-// 利用二叉搜索树中序遍历有序的特性
-var kthSmallest = function (root, k) {
- // const res = [];
- let kVal,
- n = 0;
- const traverse = (root) => {
- if (root === null) return;
- traverse(root.left);
- // res.push(root.val);
- n++;
- if (n === k) {
- kVal = root.val;
- return;
- }
- traverse(root.right);
- };
- traverse(root);
- // return res[k - 1];
- return kVal;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/235.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" "b/example/\344\272\214\345\217\211\346\240\221/235.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md"
deleted file mode 100644
index 975c8f2..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/235.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md"
+++ /dev/null
@@ -1,45 +0,0 @@
-## [235. 二叉搜索树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/) medium
-
-时间复杂度 O(N)
-空间复杂度 O(N) 递归:函数调用堆栈
-
-- 思路
-- 运用二叉搜索树,`左小 右大`的特性
-- 如果 p,q 都小于 root,说明 lca 在左子树
-- 如果 p,q 都大于 root,说明 lca 在右子树
-- 如果 p <= root,q >= root,说明 root 就是 lca
-
-```js
-/**
- * @param {TreeNode} root
- * @param {TreeNode} p
- * @param {TreeNode} q
- * @return {TreeNode}
- */
-var lowestCommonAncestor = function (root, p, q) {
- // 如果p,q 都小于root,说明lca在左子树
- // 如果p,q 都大于root,说明lca在右子树
- // 如果p <= root,q >= root,说明root就是lca
- if (root === null) return null;
-
- // 1. 保证 p < q
- if (p.val > q.val) {
- return lowestCommonAncestor(root, q, p);
- }
-
- // 2.说明root就是lca
- if (p.val <= root.val && q.val >= root.val) {
- return root;
- }
-
- if (q.val < root.val) {
- // 说明lca在左子树
- return lowestCommonAncestor(root.left, p, q);
- }
-
- if (p.val > root.val) {
- // 说明lca在右子树
- return lowestCommonAncestor(root.right, p, q);
- }
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/236.\344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" "b/example/\344\272\214\345\217\211\346\240\221/236.\344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md"
deleted file mode 100644
index e6e83fc..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/236.\344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md"
+++ /dev/null
@@ -1,45 +0,0 @@
-## [236. 二叉树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/) medium
-
-时间复杂度 O(N) N 为二叉树节点个数,最坏情况下, 要遍历所有节点
-空间复杂度 O(N) 最坏情况下递归深度为 N
-
-- 思路
-- 首先明确 base,当递归到 底部节点,返回`null`
-- 定义递归函数,返回一个树中 找到的 `p或q节点` (在前序位置找)
-- 分情况讨论
-- 三种情况(在后序位置判断)
- - 情况 1: p 和 q 分别在不同的子树中,left 和 right 都有值,说明 root 就是 ans
- - 情况 2:p 和 q 在树中没有被找到,说明没有公共祖先,返回 null
- - 情况 3:p 和 q 在同一颗树下,那么这个时候 left 和 right 肯定有一侧是找不到,返回 null 的,那么返回另一侧最先找到的节点即可
- - 情况 2 也可以省略不写,这种情况包含在情况 3 的三元判断中了
-
-推荐题解:https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/solution/236-er-cha-shu-de-zui-jin-gong-gong-zu-xian-hou-xu/
-
-```js
-/**
- * @param {TreeNode} root
- * @param {TreeNode} p
- * @param {TreeNode} q
- * @return {TreeNode}
- */
-var lowestCommonAncestor = function (root, p, q) {
- // base case
- if (root === null) return null;
- // 前序遍历位置
- // 在向下递归的过程中(分叉),若发现p或q,那么就返回找到的节点
- if (root === q || root === p) return root;
- const left = lowestCommonAncestor(root.left, p, q);
- const right = lowestCommonAncestor(root.right, p, q);
-
- // 后序遍历
- // 1.发现left和right都有值,那么说明root是ans
- if (left !== null && right !== null) return root;
-
- // 2.发现left和right都没有值,那么说明没有ans,返回null
- // 包含在了最下面的元判断中,可以省略
- // if (left === null && right === null) return null;
-
- // 3.若只有一边有值,说明在同一边,返回另一边最近找到的作为ans
- return left === null ? right : left;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/2562.\351\235\242\350\257\225\351\242\23004.06.\345\220\216\347\273\247\350\200\205.md" "b/example/\344\272\214\345\217\211\346\240\221/2562.\351\235\242\350\257\225\351\242\23004.06.\345\220\216\347\273\247\350\200\205.md"
deleted file mode 100644
index d28a3d3..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/2562.\351\235\242\350\257\225\351\242\23004.06.\345\220\216\347\273\247\350\200\205.md"
+++ /dev/null
@@ -1,47 +0,0 @@
-## [2562.面试题 04.06. 后继者](https://leetcode.cn/problems/successor-lcci/) medium
-
-中序遍历
-时间复杂度O(N)
-空间复杂度O(1)
-
-- 思路:
-- 中序遍历BST
-- 遍历过程中保留上一个节点prev和当前节点cur
-- 若遍历过程中发现上一个节点prev,就是要找的节点p,那么当前节点cur就是该BST的后继
-- 若p是最后一个节点,那么需要返回null
-
-```js
-/**
- * Definition for a binary tree node.
- * function TreeNode(val) {
- * this.val = val;
- * this.left = this.right = null;
- * }
- */
-
-/**
- * @param {TreeNode} root
- * @param {TreeNode} p
- * @return {TreeNode}
- */
-var inorderSuccessor = function (root, p) {
- let prev = null;
- let cur = root;
- let stack = [];
- while (stack.length || cur) {
- while (cur) {
- stack.push(cur);
- cur = cur.left;
- }
-
- cur = stack.pop();
- if (prev === p) {
- // 若prev是p,则返回cur
- return cur;
- }
- prev = cur;
- cur = cur.right;
- }
- return null;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/257.\344\272\214\345\217\211\346\240\221\347\232\204\346\211\200\346\234\211\350\267\257\345\276\204.md" "b/example/\344\272\214\345\217\211\346\240\221/257.\344\272\214\345\217\211\346\240\221\347\232\204\346\211\200\346\234\211\350\267\257\345\276\204.md"
deleted file mode 100644
index 8605b2a..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/257.\344\272\214\345\217\211\346\240\221\347\232\204\346\211\200\346\234\211\350\267\257\345\276\204.md"
+++ /dev/null
@@ -1,26 +0,0 @@
-## [257.二叉树的所有路径](https://leetcode.cn/problems/binary-tree-paths/) easy
-
-
-```js
-/**
- * @param {TreeNode} root
- * @return {string[]}
- */
-var binaryTreePaths = function (root) {
- let path = [];
- let res = [];
- const traverse = (root) => {
- if (root === null) return;
-
- path.push(root.val);
- if (root.left === null && root.right === null) {
- res.push(path.join("->"));
- }
- root.left && traverse(root.left);
- root.right && traverse(root.right);
- path.pop();
- };
- traverse(root);
- return res;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/297.\344\272\214\345\217\211\346\240\221\347\232\204\345\272\217\345\210\227\345\214\226\344\270\216\345\217\215\345\272\217\345\210\227\345\214\226.md" "b/example/\344\272\214\345\217\211\346\240\221/297.\344\272\214\345\217\211\346\240\221\347\232\204\345\272\217\345\210\227\345\214\226\344\270\216\345\217\215\345\272\217\345\210\227\345\214\226.md"
deleted file mode 100644
index 65eaa3d..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/297.\344\272\214\345\217\211\346\240\221\347\232\204\345\272\217\345\210\227\345\214\226\344\270\216\345\217\215\345\272\217\345\210\227\345\214\226.md"
+++ /dev/null
@@ -1,71 +0,0 @@
-## [297.二叉树的序列化与反序列化](https://leetcode.cn/problems/serialize-and-deserialize-binary-tree/) hard
-
-时间复杂度 O(2N)
-空间复杂度 O(N + logN)
-
-- 思路
-- 先将tree打平成字符串
-- 然后根据字符串,构建左子树和右子树,进行还原
-- 注意点,这里使用前序遍历,其实中序和后序遍历也可以,不过在还原的时候,前序遍历更容易获取root节点。
-
-```js
-/**
- * Definition for a binary tree node.
- * function TreeNode(val) {
- * this.val = val;
- * this.left = this.right = null;
- * }
- */
-
-/**
- * Encodes a tree to a single string.
- *
- * @param {TreeNode} root
- * @return {string}
- */
-var serialize = function (root) {
- let res = [];
- const traverse = (root) => {
- if (root === null) return res.push("Null");
- res.push(root.val);
- traverse(root.left);
- traverse(root.right);
- };
- traverse(root);
- return res.toString();
-};
-
-/**
- * Decodes your encoded data to tree.
- *
- * @param {string} data
- * @return {TreeNode}
- */
-var deserialize = function (data) {
- const nodes = data.split(",");
- let p = 0;
- const deTraverse = (nodes) => {
- // if (nodes[0] === "Null") {
- // nodes.shift();
- if (nodes[p] === "Null") {
- p++;
- return null;
- }
- // const root = new TreeNode(parseInt(nodes[0]));
- // nodes.shift();
- const root = new TreeNode(parseInt(nodes[p]));
- p++;
-
- root.left = deTraverse(nodes);
- root.right = deTraverse(nodes);
- return root;
- };
-
- return deTraverse(nodes);
-};
-
-/**
- * Your functions will be called as such:
- * deserialize(serialize(root));
- */
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/331.\351\252\214\350\257\201\344\272\214\345\217\211\346\240\221\347\232\204\345\211\215\345\272\217\345\272\217\345\210\227\345\214\226.md" "b/example/\344\272\214\345\217\211\346\240\221/331.\351\252\214\350\257\201\344\272\214\345\217\211\346\240\221\347\232\204\345\211\215\345\272\217\345\272\217\345\210\227\345\214\226.md"
deleted file mode 100644
index 49bc0f8..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/331.\351\252\214\350\257\201\344\272\214\345\217\211\346\240\221\347\232\204\345\211\215\345\272\217\345\272\217\345\210\227\345\214\226.md"
+++ /dev/null
@@ -1,52 +0,0 @@
-## [331.验证二叉树的前序序列化](https://leetcode.cn/problems/verify-preorder-serialization-of-a-binary-tree/) medium
-
-根据节点与边的关系
-
-- 思路
-- 空节点消耗一条边
-- 非空节点消耗一条边,生成两条边
-- 最后判断是否有空闲边
-- 注意:初始化边应该为1
-
-```js
-/**
- * @param {string} preorder
- * @return {boolean}
- */
-var isValidSerialization = function (preorder) {
- let edge = 1; // 一条指向根节点的虚拟边
- for (const i of preorder.split(",")) {
- if (i === "#") {
- edge--; // 空节点消耗一条边
- if (edge < 0) return false;
- } else {
- edge--; // 节点消耗一条边
- if (edge < 0) return false;
- edge += 2; // 生成两条边
- }
- }
- return edge === 0; // 最后不应该有空闲边
-};
-```
-
-- 反序列化解法
-
-```js
-var isValidSerialization = function (preorder) {
- const nodes = [];
- for (const i of preorder.split(",")) {
- nodes.push(i);
- }
- // 参考https://leetcode.cn/submissions/detail/252764742/ 反序列化过程
- const traverse = (nodes) => {
- if (nodes.length === 0) return false;
- // 前序遍历位置
- let firstNode = nodes.shift();
- if (firstNode === "#") return true;
- // 前序遍历位置结束
- return traverse(nodes) && traverse(nodes);
- };
- // nodes.length === 0保证遍历全部
- return traverse(nodes) && nodes.length === 0;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/404.\345\267\246\345\217\266\345\255\220\344\271\213\345\222\214.md" "b/example/\344\272\214\345\217\211\346\240\221/404.\345\267\246\345\217\266\345\255\220\344\271\213\345\222\214.md"
deleted file mode 100644
index 4c38444..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/404.\345\267\246\345\217\266\345\255\220\344\271\213\345\222\214.md"
+++ /dev/null
@@ -1,28 +0,0 @@
-## [404.左叶子之和](https://leetcode.cn/problems/sum-of-left-leaves/) easy
-
-- 遍历二叉树
-- 遍历过程中找到左叶子,累加即可
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number}
- */
-var sumOfLeftLeaves = function (root) {
- let sum = 0;
- const traverse = (root) => {
- if (root === null) return;
- if (
- root.left !== null &&
- root.left.left === null &&
- root.left.right === null
- ) {
- sum += root.left.val;
- }
- traverse(root.left);
- traverse(root.right);
- };
- traverse(root);
- return sum;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/449.\345\272\217\345\210\227\345\214\226\345\222\214\345\217\215\345\272\217\345\210\227\345\214\226\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" "b/example/\344\272\214\345\217\211\346\240\221/449.\345\272\217\345\210\227\345\214\226\345\222\214\345\217\215\345\272\217\345\210\227\345\214\226\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md"
deleted file mode 100644
index c9525c1..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/449.\345\272\217\345\210\227\345\214\226\345\222\214\345\217\215\345\272\217\345\210\227\345\214\226\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md"
+++ /dev/null
@@ -1,49 +0,0 @@
-## [449.序列化和反序列化二叉搜索树](https://leetcode.cn/problems/serialize-and-deserialize-bst/) medium
-
-
-```js
-/**
- * Encodes a tree to a single string.
- *
- * @param {TreeNode} root
- * @return {string}
- */
-var serialize = function (root) {
- let tree = [];
- const traverseTree = (root) => {
- if (root === null) return;
- tree.push(root.val);
- traverseTree(root.left);
- traverseTree(root.right);
- };
- traverseTree(root);
- return tree.toString();
-};
-
-/**
- * Decodes your encoded data to tree.
- *
- * @param {string} data
- * @return {TreeNode}
- */
-var deserialize = function (data) {
- if (data.length === 0) return null;
- const nodes = data.split(",");
- const deserializeTree = (nodes, min, max) => {
- if (nodes.length === 0) return null;
- let rootVal = parseInt(nodes[0]);
- if (rootVal < min || rootVal > max) return null;
- nodes.shift();
- const root = new TreeNode(rootVal);
- root.left = deserializeTree(nodes, min, rootVal);
- root.right = deserializeTree(nodes, rootVal, max);
- return root;
- };
- return deserializeTree(nodes, -Infinity, Infinity);
-};
-
-/**
- * Your functions will be called as such:
- * deserialize(serialize(root));
- */
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/450.\345\210\240\351\231\244\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\350\212\202\347\202\271.md" "b/example/\344\272\214\345\217\211\346\240\221/450.\345\210\240\351\231\244\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\350\212\202\347\202\271.md"
deleted file mode 100644
index 41efef8..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/450.\345\210\240\351\231\244\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\350\212\202\347\202\271.md"
+++ /dev/null
@@ -1,48 +0,0 @@
-## [450.删除二叉搜索树中的节点](https://leetcode.cn/problems/delete-node-in-a-bst/) medium
-
-时间复杂度 O(N)
-空间复杂度 O(logN)
-
-- 思路
-- 先找到需要删除的节点
-- 然后分情况判断应该如何删除当前节点
-- 1. 当前节点是一个叶子节点(没有左右子树),直接删除当前节点即可,也就是返回null
-- 2. 当前节点只有一个子树(左或右 子树),直接删除当前节点,将仅有的子树代替当前节点的位置即可
-- 3. 当前节点两个子树都存在,可以获取右子树中的最小值(最左边的值),替换当前节点的位置,并删除 右子树的最小值
-
-```js
-/**
- * @param {TreeNode} root
- * @param {number} key
- * @return {TreeNode}
- */
-var deleteNode = function (root, key) {
- if (root === null) return null;
- if (root.val === key) {
- // 1.root为叶子节点
- if (root.left === null && root.right === null) return null;
- // 2.root只有一个叶子节点
- if (root.left === null && root.right !== null) return root.right;
- if (root.right === null && root.left !== null) return root.left;
- // 3.root有两个叶子节点
- // 此时要找左子树中最大节点(右子树最小节点)来替换当前节点
- // if(root.right !== null && root.left !== null) {}
- let minNode = getMin(root.right);
- root.val = minNode.val; // 替换当前节点的val
- // 删除右子树中的最小节点
- root.right = deleteNode(root.right, minNode.val);
- } else if (root.val < key) {
- root.right = deleteNode(root.right, key);
- } else if (root.val > key) {
- root.left = deleteNode(root.left, key);
- }
- return root;
-};
-
-const getMin = (root) => {
- while (root.left !== null) {
- root = root.left;
- }
- return root;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/501.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\344\274\227\346\225\260.md" "b/example/\344\272\214\345\217\211\346\240\221/501.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\344\274\227\346\225\260.md"
deleted file mode 100644
index e66c85f..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/501.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\344\274\227\346\225\260.md"
+++ /dev/null
@@ -1,35 +0,0 @@
-## [501.二叉搜索树中的众数](https://leetcode.cn/problems/find-mode-in-binary-search-tree/) easy
-
-时间复杂度O(N)
-空间复杂度O(N)
-
-- 思路
-- 遍历二叉树,统计各个数字出现的次数(中序遍历是有序的,可以放在中序遍历位置统计)
-- 然后找出最大的出现次数
-- 最后遍历map,将出现次数最大的key,放进res中返回
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number[]}
- */
-var findMode = function (root) {
- const map = new Map();
- const traverse = (root) => {
- if (root === null) return;
-
- traverse(root.left);
- let v = root.val;
- map.set(v, map.has(v) ? map.get(v) + 1 : 1);
- traverse(root.right);
- };
- traverse(root);
-
- let max = Math.max(...map.values());
- let res = [];
- for (let [k, v] of map) {
- if (v === max) res.push(k);
- }
- return res;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/508.\345\207\272\347\216\260\346\254\241\346\225\260\346\234\200\345\244\232\347\232\204\345\255\220\346\240\221\345\205\203\347\264\240\345\222\214.md" "b/example/\344\272\214\345\217\211\346\240\221/508.\345\207\272\347\216\260\346\254\241\346\225\260\346\234\200\345\244\232\347\232\204\345\255\220\346\240\221\345\205\203\347\264\240\345\222\214.md"
deleted file mode 100644
index c132c20..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/508.\345\207\272\347\216\260\346\254\241\346\225\260\346\234\200\345\244\232\347\232\204\345\255\220\346\240\221\345\205\203\347\264\240\345\222\214.md"
+++ /dev/null
@@ -1,33 +0,0 @@
-## [508.出现次数最多的子树元素和](https://leetcode.cn/problems/most-frequent-subtree-sum/) medium
-
-思路跟501题类似
-- 统计子树的元素和 出现的次数,存在map中
-- 需要统计和,在后序遍历更方便统计
-- 然后找出最大出现次数maxCount
-- 最后根基maxCount,找出对应的value,存入数组并返回
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number[]}
- */
-var findFrequentTreeSum = function (root) {
- const map = new Map();
- const traverse = (root) => {
- if (root === null) return 0;
- const leftSum = traverse(root.left);
- const rightSum = traverse(root.right);
- const sum = leftSum + rightSum + root.val;
- map.set(sum, map.has(sum) ? map.get(sum) + 1 : 1);
- return sum;
- };
- traverse(root);
-
- let res = [];
- const max = Math.max(...map.values());
- for (const [k, v] of map) {
- if (v === max) res.push(k);
- }
- return res;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/513.\346\211\276\346\240\221\345\267\246\344\270\213\350\247\222\347\232\204\345\200\274.md" "b/example/\344\272\214\345\217\211\346\240\221/513.\346\211\276\346\240\221\345\267\246\344\270\213\350\247\222\347\232\204\345\200\274.md"
deleted file mode 100644
index 23c3aae..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/513.\346\211\276\346\240\221\345\267\246\344\270\213\350\247\222\347\232\204\345\200\274.md"
+++ /dev/null
@@ -1,30 +0,0 @@
-## [513.找树左下角的值](https://leetcode.cn/problems/find-bottom-left-tree-value/) medium
-
-- 有点像二叉树的最大深度那一道题
-- 当第一次到达最大深度时候,那颗树就是左下角的树
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number}
- */
-var findBottomLeftValue = function (root) {
- let res = 0;
- let level = 0,
- maxLevel = 0;
-
- const traverse = (root) => {
- if (root === null) return;
- level++;
- if (level > maxLevel) {
- maxLevel = level;
- res = root.val;
- }
- traverse(root.left);
- traverse(root.right);
- level--;
- };
- traverse(root);
- return res;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/515.\345\234\250\346\257\217\344\270\252\346\240\221\350\241\214\344\270\255\346\211\276\346\234\200\345\244\247\345\200\274.md" "b/example/\344\272\214\345\217\211\346\240\221/515.\345\234\250\346\257\217\344\270\252\346\240\221\350\241\214\344\270\255\346\211\276\346\234\200\345\244\247\345\200\274.md"
deleted file mode 100644
index 3509fcc..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/515.\345\234\250\346\257\217\344\270\252\346\240\221\350\241\214\344\270\255\346\211\276\346\234\200\345\244\247\345\200\274.md"
+++ /dev/null
@@ -1,31 +0,0 @@
-## [515.在每个树行中找最大值](https://leetcode.cn/problems/find-largest-value-in-each-tree-row/) medium
-
-- 思路
-- 层序遍历
-- 遍历过程中,保留每层的值
-- 该层结束后,将该层最大的值,放入res中返回
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number[]}
- */
-var largestValues = function (root) {
- let res = [];
- if (root === null) return res;
- const q = [root];
-
- while (q.length) {
- const level = [];
- for (let i = 0, len = q.length; i < len; i++) {
- const node = q.shift();
- level.push(node.val);
- node.left && q.push(node.left);
- node.right && q.push(node.right);
- }
- res.push(Math.max(...level));
- }
-
- return res;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/530.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\345\260\217\347\273\235\345\257\271\345\267\256.md" "b/example/\344\272\214\345\217\211\346\240\221/530.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\345\260\217\347\273\235\345\257\271\345\267\256.md"
deleted file mode 100644
index 20fea67..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/530.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\345\260\217\347\273\235\345\257\271\345\267\256.md"
+++ /dev/null
@@ -1,28 +0,0 @@
-## [530.二叉搜索树的最小绝对差](https://leetcode.cn/problems/minimum-absolute-difference-in-bst/) easy
-
-- 思路
-- 中序遍历是有序的
-- 在中序遍历过程中,计算最小的差
-- 需要保留上一个节点
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number}
- */
-var getMinimumDifference = function (root) {
- let min = Infinity;
- let prev = null;
- const traverse = (root) => {
- if (root === null) return;
- traverse(root.left);
- if (prev !== null) {
- min = Math.min(min, Math.abs(prev.val - root.val));
- }
- prev = root;
- traverse(root.right);
- };
- traverse(root);
- return min;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/538.\346\212\212\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\275\254\346\215\242\344\270\272\347\264\257\345\212\240\346\240\221.md" "b/example/\344\272\214\345\217\211\346\240\221/538.\346\212\212\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\275\254\346\215\242\344\270\272\347\264\257\345\212\240\346\240\221.md"
deleted file mode 100644
index a4a000d..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/538.\346\212\212\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\275\254\346\215\242\344\270\272\347\264\257\345\212\240\346\240\221.md"
+++ /dev/null
@@ -1,31 +0,0 @@
-## [538.把二叉搜索树转换为累加树](https://leetcode.cn/problems/convert-bst-to-greater-tree/) medium
-
-时间复杂度 O(N)
-空间复杂度 O(1)
-
-- 思路
-- 第一眼看上去,需要将当前节点的右子树(和根)累加
-- 如果打平来看,就是将比当前节点大的值进行累加
-- 普通的中序遍历是升序的,不能直接拿到比当前节点大的值
-- 所以先将结果成为倒叙的,先遍历root.right
-- 然后累加前面访问的结果,再将累加结果赋值给当前root,即可
-
-```js
-/**
- * @param {TreeNode} root
- * @return {TreeNode}
- */
-// 从右向左中序遍历,将累计赋值到节点的值
-var convertBST = function (root) {
- let sum = 0;
- const traverse = (root) => {
- if (root === null) return;
- traverse(root.right);
- sum += root.val;
- root.val = sum;
- traverse(root.left);
- };
- traverse(root);
- return root;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/543.\344\272\214\345\217\211\346\240\221\347\232\204\347\233\264\345\276\204.md" "b/example/\344\272\214\345\217\211\346\240\221/543.\344\272\214\345\217\211\346\240\221\347\232\204\347\233\264\345\276\204.md"
deleted file mode 100644
index 33f086e..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/543.\344\272\214\345\217\211\346\240\221\347\232\204\347\233\264\345\276\204.md"
+++ /dev/null
@@ -1,29 +0,0 @@
-## [543.二叉树的直径](https://leetcode.cn/problems/diameter-of-binary-tree/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(K) K为二叉树的高度
-
-- 思路:
-- 求直径,就是左右子树最大深度的和
-- 有子树问题,遍历一遍不能解决问题,给函数明确返回值,在后序遍历位置做文章
-- 分别求出左右子树的最大深度,在后序遍历位置,拿到左右子树 的最大深度后,比较最大的和即可
-
-```js
-var diameterOfBinaryTree = function (root) {
- let diameterMax = 0; // 最大直径
- // 最大直径其实就是一个节点的左右子树最大深度的和
- // 定义maxDeep返回输入节点的最大深度
- const maxDeep = (root) => {
- if (root === null) {
- return 0;
- }
- let left = maxDeep(root.left);
- let right = maxDeep(root.right);
- diameterMax = Math.max(diameterMax, left + right);
- return 1 + Math.max(left, right);
- };
-
- maxDeep(root);
- return diameterMax;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/563.\344\272\214\345\217\211\346\240\221\347\232\204\345\235\241\345\272\246.md" "b/example/\344\272\214\345\217\211\346\240\221/563.\344\272\214\345\217\211\346\240\221\347\232\204\345\235\241\345\272\246.md"
deleted file mode 100644
index 2d8128a..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/563.\344\272\214\345\217\211\346\240\221\347\232\204\345\235\241\345\272\246.md"
+++ /dev/null
@@ -1,22 +0,0 @@
-## [563.二叉树的坡度](https://leetcode.cn/problems/binary-tree-tilt/) easy
-
-后序遍历位置计算各个节点abs的和
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number}
- */
-var findTilt = function (root) {
- let sum = 0;
- const traverse = (root) => {
- if (root === null) return 0;
- const leftAbs = traverse(root.left);
- const rightAbs = traverse(root.right);
- sum += Math.abs(leftAbs - rightAbs);
- return leftAbs + rightAbs + root.val;
- };
- traverse(root);
- return sum;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/606.\346\240\271\346\215\256\344\272\214\345\217\211\346\240\221\345\210\233\345\273\272\345\255\227\347\254\246\344\270\262.md" "b/example/\344\272\214\345\217\211\346\240\221/606.\346\240\271\346\215\256\344\272\214\345\217\211\346\240\221\345\210\233\345\273\272\345\255\227\347\254\246\344\270\262.md"
deleted file mode 100644
index 938559a..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/606.\346\240\271\346\215\256\344\272\214\345\217\211\346\240\221\345\210\233\345\273\272\345\255\227\347\254\246\344\270\262.md"
+++ /dev/null
@@ -1,23 +0,0 @@
-## [606.根据二叉树创建字符串](https://leetcode.cn/problems/construct-string-from-binary-tree/) easy
-
-
-```js
-/**
- * @param {TreeNode} root
- * @return {string}
- */
-var tree2str = function (root) {
- if (root === null) return "";
- if (root.left === null && root.right === null) return root.val + "";
- let leftStr = tree2str(root.left);
- let rightStr = tree2str(root.right);
- // 当左边有值,右边没值时
- if (root.left !== null && root.right === null) {
- return `${root.val}(${leftStr})`;
- }
- if (root.left === null && root.right !== null) {
- return `${root.val}()(${rightStr})`;
- }
- return `${root.val}(${leftStr})(${rightStr})`;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/617.\345\220\210\345\271\266\344\272\214\345\217\211\346\240\221.md" "b/example/\344\272\214\345\217\211\346\240\221/617.\345\220\210\345\271\266\344\272\214\345\217\211\346\240\221.md"
deleted file mode 100644
index 7c5c313..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/617.\345\220\210\345\271\266\344\272\214\345\217\211\346\240\221.md"
+++ /dev/null
@@ -1,21 +0,0 @@
-## [617.合并二叉树](https://leetcode.cn/problems/merge-two-binary-trees/) easy
-
-
-```js
-/**
- * @param {TreeNode} root1
- * @param {TreeNode} root2
- * @return {TreeNode}
- */
-var mergeTrees = function (root1, root2) {
- const traverse = (root1, root2) => {
- if (root1 === null) return root2;
- if (root2 === null) return root1;
- root1.val += root2.val;
- root1.left = traverse(root1.left, root2.left);
- root1.right = traverse(root1.right, root2.right);
- return root1;
- };
- return traverse(root1, root2);
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/623.\345\234\250\344\272\214\345\217\211\346\240\221\344\270\255\345\242\236\345\212\240\344\270\200\350\241\214.md" "b/example/\344\272\214\345\217\211\346\240\221/623.\345\234\250\344\272\214\345\217\211\346\240\221\344\270\255\345\242\236\345\212\240\344\270\200\350\241\214.md"
deleted file mode 100644
index 8e45db0..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/623.\345\234\250\344\272\214\345\217\211\346\240\221\344\270\255\345\242\236\345\212\240\344\270\200\350\241\214.md"
+++ /dev/null
@@ -1,37 +0,0 @@
-## [623.在二叉树中增加一行](https://leetcode.cn/problems/add-one-row-to-tree/) medium
-
-```js
-/**
- * @param {TreeNode} root
- * @param {number} val
- * @param {number} depth
- * @return {TreeNode}
- */
-var addOneRow = function (root, val, depth) {
- if (depth === 1) {
- let newTree = new TreeNode(val);
- newTree.left = root;
- return newTree;
- }
-
- let curLevel = 0;
- const traverse = (root) => {
- if (root === null) return;
- curLevel++;
- if (curLevel === depth - 1) {
- let leftTree = new TreeNode(val);
- let rightTree = new TreeNode(val);
- leftTree.left = root.left;
- rightTree.right = root.right;
- root.left = leftTree;
- root.right = rightTree;
- }
- traverse(root.left);
- traverse(root.right);
- curLevel--;
- };
- traverse(root);
-
- return root;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/637.\344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\271\263\345\235\207\345\200\274.md" "b/example/\344\272\214\345\217\211\346\240\221/637.\344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\271\263\345\235\207\345\200\274.md"
deleted file mode 100644
index 97bc3f0..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/637.\344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\271\263\345\235\207\345\200\274.md"
+++ /dev/null
@@ -1,25 +0,0 @@
-## [637.二叉树的层平均值](https://leetcode.cn/problems/average-of-levels-in-binary-tree/) easy
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number[]}
- */
-var averageOfLevels = function (root) {
- const res = [];
- if (root === null) return res;
- const q = [root];
- while (q.length) {
- const levelAve = [];
- for (let i = 0, len = q.length; i < len; i++) {
- const node = q.shift();
- levelAve.push(node.val);
- node.left && q.push(node.left);
- node.right && q.push(node.right);
- }
- let average = levelAve.reduce((a, b) => (a += b), 0) / levelAve.length;
- res.push(average);
- }
- return res;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/652.\345\257\273\346\211\276\351\207\215\345\244\215\347\232\204\345\255\220\346\240\221.md" "b/example/\344\272\214\345\217\211\346\240\221/652.\345\257\273\346\211\276\351\207\215\345\244\215\347\232\204\345\255\220\346\240\221.md"
deleted file mode 100644
index 8033fd3..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/652.\345\257\273\346\211\276\351\207\215\345\244\215\347\232\204\345\255\220\346\240\221.md"
+++ /dev/null
@@ -1,38 +0,0 @@
-## [652.寻找重复的子树](https://leetcode.cn/problems/find-duplicate-subtrees/) medium
-
-时间复杂度 O(N)
-空间复杂度 O(N + logN)
-
-- 思路
-- 以我为根的这棵二叉树(子树)长啥样?
-- 以其他节点为根的子树都长啥样?
-- 所以需要在后序遍历的位置,记录当前节点的树长啥样
-- 使用map记录当前节点的树出现的次数
-- 如果已经存在,就加入结果集中
-
-```js
-/**
- * @param {TreeNode} root
- * @return {TreeNode[]}
- */
-var findDuplicateSubtrees = function (root) {
- const map = new Map();
- const res = [];
-
- const traverse = (root) => {
- if (root === null) return;
- const leftVal = traverse(root.left);
- const rightVal = traverse(root.right);
- const subTree = leftVal + "," + rightVal + "," + root.val;
- const count = map.get(subTree) || 0;
- if (count === 1) {
- res.push(root);
- }
- map.set(subTree, count + 1);
- return subTree;
- };
-
- traverse(root);
- return res;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/653.\344\270\244\346\225\260\344\271\213\345\222\214-iv-\350\276\223\345\205\245-bst.md" "b/example/\344\272\214\345\217\211\346\240\221/653.\344\270\244\346\225\260\344\271\213\345\222\214-iv-\350\276\223\345\205\245-bst.md"
deleted file mode 100644
index a0c5dbc..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/653.\344\270\244\346\225\260\344\271\213\345\222\214-iv-\350\276\223\345\205\245-bst.md"
+++ /dev/null
@@ -1,26 +0,0 @@
-## [653.两数之和-iv-输入-bst](https://leetcode.cn/problems/two-sum-iv-input-is-a-bst/) easy
-
-```js
-/**
- * @param {TreeNode} root
- * @param {number} k
- * @return {boolean}
- */
-var findTarget = function (root, k) {
- let map = new Map();
- let isFound = false;
-
- const traverse = (root) => {
- if (root === null) return;
- if (map.has(k - root.val)) {
- return (isFound = true);
- } else {
- map.set(root.val, "666xxx");
- }
- traverse(root.left);
- traverse(root.right);
- };
- traverse(root);
- return isFound;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/654.\346\234\200\345\244\247\344\272\214\345\217\211\346\240\221.md" "b/example/\344\272\214\345\217\211\346\240\221/654.\346\234\200\345\244\247\344\272\214\345\217\211\346\240\221.md"
deleted file mode 100644
index 863fdfb..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/654.\346\234\200\345\244\247\344\272\214\345\217\211\346\240\221.md"
+++ /dev/null
@@ -1,40 +0,0 @@
-## [654.最大二叉树](https://leetcode.cn/problems/maximum-binary-tree/) medium
-
-时间复杂度 O(N)
-空间复杂度 O(N)
-
-- 思路
-- 其实题目定义已经把思路讲的很清楚了
-- 找出一定范围数组内的最大值做为根
-- 然后找出数组左侧范围内的最大值作为根的左子树,右侧同理
-- 不断缩小范围,递归的构造出左右子树
-- 注意base case ,然后返回最初的那个root即可
-
-
-```js
-// 对数组分区,找数组的最大值,然后先构建根节点,再构建左右节点
-/**
- * @param {number[]} nums
- * @return {TreeNode}
- */
-var constructMaximumBinaryTree = function (nums) {
- return build(nums, 0, nums.length - 1);
-};
-
-const build = (nums, lo, hi) => {
- if (lo > hi) return null;
- let max = -Infinity,
- index = 0;
- for (let i = lo; i <= hi; i++) {
- if (nums[i] > max) {
- max = nums[i];
- index = i;
- }
- }
-
- const root = new TreeNode(max);
- root.left = build(nums, lo, index - 1);
- root.right = build(nums, index + 1, hi);
- return root;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/662.\344\272\214\345\217\211\346\240\221\346\234\200\345\244\247\345\256\275\345\272\246.md" "b/example/\344\272\214\345\217\211\346\240\221/662.\344\272\214\345\217\211\346\240\221\346\234\200\345\244\247\345\256\275\345\272\246.md"
deleted file mode 100644
index a44ffcf..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/662.\344\272\214\345\217\211\346\240\221\346\234\200\345\244\247\345\256\275\345\272\246.md"
+++ /dev/null
@@ -1,38 +0,0 @@
-## [662.二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) medium
-
-时间复杂度O(N)
-
-- 思路
-- 主要思路是给每个节点打上数字tag,标记每个节点的位置
-- 在前序遍历的位置,根据标记的位置,计算当层节点与右节点的差
-- 标记位置根据完全二叉树的特性,根结点是x,左节点是2x,右节点是2x+1
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number}
- */
-/**
- * 根据完全二叉树特性,若根为x,左节点为2x,右节点为2x+1,
- * 然后根据标记的节点,获取节点,判断当前层节点与,当前层左节点的最大宽度
- */
-var widthOfBinaryTree = function (root) {
- if (root === null) return 0;
- let leftArr = [];
- let maxWidth = 1;
- const traverse = (root, id, depth) => {
- if (root === null) return;
- if (leftArr.length === depth - 1) {
- leftArr.push(id);
- } else {
- maxWidth = Math.max(maxWidth, id - leftArr[depth - 1] + 1);
- }
- // (id * 2) % 100000000007 取模,为了防止溢出
- traverse(root.left, (id * 2) % 100000000007, depth + 1);
- traverse(root.right, ((id * 2) % 100000000007) + 1, depth + 1);
- };
- traverse(root, 1, 1);
-
- return maxWidth;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/669.\344\277\256\345\211\252\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" "b/example/\344\272\214\345\217\211\346\240\221/669.\344\277\256\345\211\252\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md"
deleted file mode 100644
index 8c76cb7..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/669.\344\277\256\345\211\252\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md"
+++ /dev/null
@@ -1,23 +0,0 @@
-## [669.修剪二叉搜索树](https://leetcode.cn/problems/trim-a-binary-search-tree/) medium
-
-
-```js
-/**
- * @param {TreeNode} root
- * @param {number} low
- * @param {number} high
- * @return {TreeNode}
- */
-var trimBST = function (root, low, high) {
- if (root === null) return null;
- if (root.val < low) {
- return trimBST(root.right, low, high);
- }
- if (root.val > high) {
- return trimBST(root.left, low, high);
- }
- root.left = trimBST(root.left, low, high);
- root.right = trimBST(root.right, low, high);
- return root;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/671.\344\272\214\345\217\211\346\240\221\344\270\255\347\254\254\344\272\214\345\260\217\347\232\204\350\212\202\347\202\271.md" "b/example/\344\272\214\345\217\211\346\240\221/671.\344\272\214\345\217\211\346\240\221\344\270\255\347\254\254\344\272\214\345\260\217\347\232\204\350\212\202\347\202\271.md"
deleted file mode 100644
index 86b9620..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/671.\344\272\214\345\217\211\346\240\221\344\270\255\347\254\254\344\272\214\345\260\217\347\232\204\350\212\202\347\202\271.md"
+++ /dev/null
@@ -1,29 +0,0 @@
-## [671.二叉树中第二小的节点](https://leetcode.cn/problems/second-minimum-node-in-a-binary-tree/) easy
-
-- 思路
-- 根节点肯定第一小的元素
-- 若左右子树不想等,那么第二小的值在 顺着最小值的那颗树中
-- 若左右相等,要分别求出左右子树中第二小的值,然后比较,最小的那个值就是整颗树第二小的
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number}
- */
-var findSecondMinimumValue = function (root) {
- if (root.left === null && root.right === null) return -1;
- let left = root.left.val,
- right = root.right.val;
- if (root.val === root.left.val) {
- left = findSecondMinimumValue(root.left);
- }
- if (root.val === root.right.val) {
- right = findSecondMinimumValue(root.right);
- }
-
- if (left === -1) return right;
- if (right === -1) return left;
-
- return Math.min(left, right);
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/700.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\346\220\234\347\264\242.md" "b/example/\344\272\214\345\217\211\346\240\221/700.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\346\220\234\347\264\242.md"
deleted file mode 100644
index fa8e49e..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/700.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\346\220\234\347\264\242.md"
+++ /dev/null
@@ -1,31 +0,0 @@
-## [700.二叉搜索树中的搜索](https://leetcode.cn/problems/search-in-a-binary-search-tree/) easy
-
-时间复杂度 O(logN)
-空间复杂度 O(1)
-
-- 思路
-- 最初想到的是,遍历整个BST,找到目标节点返回即可
-- 但是这样需要遍历整个树,时间复杂度为O(N)
-- 为了降低时间复杂度,可以利用BST左小右大的特点
-- 根据每次寻找的值,来缩小搜索范围,降低时间复杂度
-- 其实以后遇到这种有序的结构体,都可以考虑用二分发做优化
-
-```js
-/**
- * @param {TreeNode} root
- * @param {number} val
- * @return {TreeNode}
- */
-// 利用左小右大的特性优化搜索
-var searchBST = function (root, val) {
- if (root === null) return null;
- if (root.val < val) {
- return searchBST(root.right, val);
- }
- if (root.val > val) {
- return searchBST(root.left, val);
- }
-
- return root;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/701.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\346\217\222\345\205\245\346\223\215\344\275\234.md" "b/example/\344\272\214\345\217\211\346\240\221/701.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\346\217\222\345\205\245\346\223\215\344\275\234.md"
deleted file mode 100644
index d040734..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/701.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\346\217\222\345\205\245\346\223\215\344\275\234.md"
+++ /dev/null
@@ -1,32 +0,0 @@
-## [701.二叉搜索树中的插入操作](https://leetcode.cn/problems/insert-into-a-binary-search-tree/) medium
-
-时间复杂度 O(logN)
-空间复杂度 O(logN)
-
-- 思路
-- 题目保证了,新值和原始二叉搜索树中的任意节点值都不同
-- 所以,只需要寻找合适的插入位置即可
-- 先在二分查找出val插入的合适位置,在空位子上插入新元素即可
-
-```js
-/**
- * @param {TreeNode} root
- * @param {number} val
- * @return {TreeNode}
- */
-var insertIntoBST = function (root, val) {
- // 找到合适的插入位置了,插入即可
- if (root === null) return new TreeNode(val);
-
- // 说明val比root.val大,要插入的值在右边
- if (root.val < val) {
- root.right = insertIntoBST(root.right, val);
- }
-
- if (root.val > val) {
- root.left = insertIntoBST(root.left, val);
- }
-
- return root;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/783.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\212\202\347\202\271\346\234\200\345\260\217\350\267\235\347\246\273.md" "b/example/\344\272\214\345\217\211\346\240\221/783.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\212\202\347\202\271\346\234\200\345\260\217\350\267\235\347\246\273.md"
deleted file mode 100644
index 16b934c..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/783.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\212\202\347\202\271\346\234\200\345\260\217\350\267\235\347\246\273.md"
+++ /dev/null
@@ -1,26 +0,0 @@
-## [783.二叉搜索树节点最小距离](https://leetcode.cn/problems/minimum-distance-between-bst-nodes/) easy
-
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number}
- */
-var minDiffInBST = function (root) {
- let min = Infinity;
- let prev = null;
- const traverse = (root) => {
- if (root === null) return;
-
- traverse(root.left);
- if (prev !== null) {
- min = Math.min(min, Math.abs(prev.val - root.val));
- }
- prev = root;
- traverse(root.right);
- };
- traverse(root);
-
- return min;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/814.\344\272\214\345\217\211\346\240\221\345\211\252\346\236\235.md" "b/example/\344\272\214\345\217\211\346\240\221/814.\344\272\214\345\217\211\346\240\221\345\211\252\346\236\235.md"
deleted file mode 100644
index 7f55084..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/814.\344\272\214\345\217\211\346\240\221\345\211\252\346\236\235.md"
+++ /dev/null
@@ -1,19 +0,0 @@
-## [814.二叉树剪枝](https://leetcode.cn/problems/binary-tree-pruning/) medium
-
-
-```js
-/**
- * @param {TreeNode} root
- * @return {TreeNode}
- */
-var pruneTree = function (root) {
- if (root === null) return null;
- root.left = pruneTree(root.left);
- root.right = pruneTree(root.right);
- if (root.val === 0 && root.left === null && root.right === null) {
- // 返回null,相当于裁剪掉了这个节点
- return null;
- }
- return root;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/865.\345\205\267\346\234\211\346\211\200\346\234\211\346\234\200\346\267\261\350\212\202\347\202\271\347\232\204\346\234\200\345\260\217\345\255\220\346\240\221.md" "b/example/\344\272\214\345\217\211\346\240\221/865.\345\205\267\346\234\211\346\211\200\346\234\211\346\234\200\346\267\261\350\212\202\347\202\271\347\232\204\346\234\200\345\260\217\345\255\220\346\240\221.md"
deleted file mode 100644
index 4c8ca71..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/865.\345\205\267\346\234\211\346\211\200\346\234\211\346\234\200\346\267\261\350\212\202\347\202\271\347\232\204\346\234\200\345\260\217\345\255\220\346\240\221.md"
+++ /dev/null
@@ -1,33 +0,0 @@
-## [865.具有所有最深节点的最小子树](https://leetcode.cn/problems/smallest-subtree-with-all-the-deepest-nodes/) medium
-
-- 思路
-- 这道题需要用到分解问题
-- 这道题其实就是求 【最深】 的叶子节点的【最近公共祖先】
-- 求最深叶子节点的公共祖先需要知道哪些信息?
-- 要知道左右子树的最大深度
-- 如果左右子树一样深,那么当前节点就是最近的公共祖先
-- 如果左右子树不一样深,那么最深的叶子结点的最近公共祖先就在左右子树中
-
-```js
-class Result {
- constructor(node, depth) {
- this.node = node;
- this.depth = depth;
- }
-}
-/**
- * @param {TreeNode} root
- * @return {TreeNode}
- */
-var subtreeWithAllDeepest = function (root) {
- const traverse = (root) => {
- if (root === null) return new Result(null, 0);
- const left = traverse(root.left);
- const right = traverse(root.right);
- if (left.depth > right.depth) return new Result(left.node, left.depth + 1);
- if (left.depth < right.depth) return new Result(right.node, right.depth + 1);
- return new Result(root, left.depth + 1);
- };
- return traverse(root).node;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/872.\345\217\266\345\255\220\347\233\270\344\274\274\347\232\204\346\240\221.md" "b/example/\344\272\214\345\217\211\346\240\221/872.\345\217\266\345\255\220\347\233\270\344\274\274\347\232\204\346\240\221.md"
deleted file mode 100644
index 6420d36..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/872.\345\217\266\345\255\220\347\233\270\344\274\274\347\232\204\346\240\221.md"
+++ /dev/null
@@ -1,32 +0,0 @@
-## [872.叶子相似的树](https://leetcode.cn/problems/leaf-similar-trees/) easy
-
-```js
-/**
- * @param {TreeNode} root1
- * @param {TreeNode} root2
- * @return {boolean}
- */
-var leafSimilar = function (root1, root2) {
- const nums1 = [];
- const nums2 = [];
- traverse(root1, nums1);
- traverse(root2, nums2);
- let res = true;
- let len = nums1.length > nums2.length ? nums1.length : nums2.length;
- for (let i = 0; i < len; i++) {
- if (nums1[i] !== nums2[i]) {
- return (res = false);
- }
- }
- return res;
- // 也可以使用字符串比较
- // return nums1.join("-") === nums2.join("-");
-};
-
-const traverse = (root, nums) => {
- if (root === null) return;
- if (root.left === null && root.right === null) nums.push(root.val);
- traverse(root.left, nums);
- traverse(root.right, nums);
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/889.\346\240\271\346\215\256\345\211\215\345\272\217\345\222\214\345\220\216\345\272\217\351\201\215\345\216\206\346\236\204\351\200\240\344\272\214\345\217\211\346\240\221.md" "b/example/\344\272\214\345\217\211\346\240\221/889.\346\240\271\346\215\256\345\211\215\345\272\217\345\222\214\345\220\216\345\272\217\351\201\215\345\216\206\346\236\204\351\200\240\344\272\214\345\217\211\346\240\221.md"
deleted file mode 100644
index 83ff466..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/889.\346\240\271\346\215\256\345\211\215\345\272\217\345\222\214\345\220\216\345\272\217\351\201\215\345\216\206\346\236\204\351\200\240\344\272\214\345\217\211\346\240\221.md"
+++ /dev/null
@@ -1,32 +0,0 @@
-## [889.根据前序和后序遍历构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-postorder-traversal/) medium
-
-```js
-/**
- * @param {number[]} preorder
- * @param {number[]} postorder
- * @return {TreeNode}
- */
-// [ 1, 2, 4, 5, 3, 6, 7] ==> preorder
-// ^ ^ ^
-// | | |
-// 根 左---左结束
-
-// [ 4, 5, 2, 6, 7, 3, 1] ==> postorder
-// ^ ^ ^
-// | len | |
-// 左结束---左 根
-var constructFromPrePost = function (preorder, postorder) {
- const build = (preorder, preStr, preEnd, postorder, postStr, postEnd) => {
- if (preStr > preEnd) return null;// 边界判断
- if (preStr === preEnd) return new TreeNode(preorder[preStr]); // [1]
- // 根结点
- let root = new TreeNode(preorder[preStr]);
- let leftIndex = postorder.indexOf(preorder[preStr + 1]);
- let leftSize = leftIndex - postStr + 1;
- root.left = build(preorder, preStr + 1, preStr + leftSize, postorder, postStr, leftIndex);
- root.right = build(preorder, preStr + leftSize + 1, preEnd, postorder, leftIndex + 1, postEnd - 1);
- return root;
- }
- return build(preorder, 0, preorder.length - 1, postorder, 0, preorder.length - 1);
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/95.\344\270\215\345\220\214\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221-ii.md" "b/example/\344\272\214\345\217\211\346\240\221/95.\344\270\215\345\220\214\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221-ii.md"
deleted file mode 100644
index 68c99aa..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/95.\344\270\215\345\220\214\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221-ii.md"
+++ /dev/null
@@ -1,46 +0,0 @@
-## [95.不同的二叉搜索树-ii](https://leetcode.cn/problems/unique-binary-search-trees-ii/) medium
-
-- 96题的基础上构建
-- 1.穷举所有root节点
-- 2.递归构建左右子树BST
-- 3.将左右子树BST添加到root上
-
-```js
-/**
- * @param {number} n
- * @return {TreeNode[]}
- */
-var generateTrees = function (n) {
- if (n === 0) return [];
-
- // 定义build返回[lo,hi]区间内,所有BST的集合
- const build = (lo, hi) => {
- let res = [];
- // base case
- if (lo > hi) {
- res.push(null);
- return res;
- }
- // 1.枚举可行的根节点
- for (let i = lo; i <= hi; i++) {
- // 2. 获取所有可行的左右子树集合
- let leftTreeArr = build(lo, i - 1);
- let rightTreeArr = build(i + 1, hi);
- // 3.分别从左右子树中选一课树,拼接到根结点上
- // 这里相当于 96题中的 左右子树集合相乘
- for (const left of leftTreeArr) {
- for (const right of rightTreeArr) {
- let root = new TreeNode(i);
- root.left = left;
- root.right = right;
- res.push(root);
- }
- }
- }
-
- return res;
- };
-
- return build(1, n);
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/96.\344\270\215\345\220\214\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" "b/example/\344\272\214\345\217\211\346\240\221/96.\344\270\215\345\220\214\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md"
deleted file mode 100644
index 26e195b..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/96.\344\270\215\345\220\214\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md"
+++ /dev/null
@@ -1,39 +0,0 @@
-## [96.不同的二叉搜索树](https://leetcode.cn/problems/unique-binary-search-trees/) medium
-
-- 思路:
-- 一个BST的数量,为根结点左右两边的数量的乘积
-- 所以让每个树都为一次根节点
-- 然后求出该根节点的BST数量
-- 累加每个根节点的BST数量
-- 最后使用备忘录优化时间复杂度
-
-```js
-/**
- * @param {number} n
- * @return {number}
- */
-var numTrees = function (n) {
- let memo = Array.from({ length: n + 1 }).map((_) =>
- Array.from({ length: n + 1 }).fill(0)
- );
-
- // 定义count返回[lo,hi]的BST数量
- const count = (lo, hi) => {
- // base case lo>hi时,为null,也是一种BST,返回1
- if (lo > hi) return 1;
-
- if (memo[lo][hi] !== 0) return memo[lo][hi];
-
- let res = 0;
- for (let i = lo; i <= hi; i++) {
- let left = count(lo, i - 1);
- let right = count(i + 1, hi);
- res += left * right;
- }
- memo[lo][hi] = res;
- return res;
- };
-
- return count(1, n);
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/98.\351\252\214\350\257\201\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" "b/example/\344\272\214\345\217\211\346\240\221/98.\351\252\214\350\257\201\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md"
deleted file mode 100644
index deef3a6..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/98.\351\252\214\350\257\201\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md"
+++ /dev/null
@@ -1,24 +0,0 @@
-## [98.验证二叉搜索树](https://leetcode.cn/problems/validate-binary-search-tree/) medium
-
-时间复杂度 O(N)
-空间复杂度 O(lonN) 函数调用堆栈
-- 思路
-- 最初想法是判断左孩子比右孩子小,但是这样的话,没办法保证保证根节点比右孩子小,比左孩子大 这一问题
-- 所以将根结点也考虑进去,max.val > root.val > min.val
-- 所以使用辅助函数,限定左子树的最大值是 root.val,右子树的最小值是 root.val
-
-```js
-/**
- * @param {TreeNode} root
- * @return {boolean}
- */
-var isValidBST = function (root) {
- const isBST = (node, min, max) => {
- if (node === null) return true;
- if (min !== null && node.val <= min.val) return false;
- if (max !== null && node.val >= max.val) return false;
- return isBST(node.left, min, node) && isBST(node.right, node, max);
- };
- return isBST(root, null, null);
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/\345\211\221\346\214\207Offer27.\344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" "b/example/\344\272\214\345\217\211\346\240\221/\345\211\221\346\214\207Offer27.\344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md"
deleted file mode 100644
index d475a6e..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/\345\211\221\346\214\207Offer27.\344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md"
+++ /dev/null
@@ -1,24 +0,0 @@
-## [剑指 Offer 27. 二叉树的镜像](https://leetcode.cn/problems/er-cha-shu-de-jing-xiang-lcof/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(H) h是树的高度,最坏情况下是O(N)
-- 思路
-- 我们发现只要把二叉树上的每一个节点的左右子节点进行交换,最后的结果就是完全翻转之后的二叉树
-- 与[226题](/js-logs/binary-tree#226翻转二叉树)解法一样
-
-```js
-/**
- * @param {TreeNode} root
- * @return {TreeNode}
- */
-// 定义函数:返回当前节点翻转过后的节点
-var mirrorTree = function (root) {
- if (root === null) return null;
-
- let leftRoot = mirrorTree(root.left);
- let rightRoot = mirrorTree(root.right);
- root.left = rightRoot;
- root.right = leftRoot;
- return root;
-};
-```
diff --git "a/example/\344\272\214\345\217\211\346\240\221/\345\211\221\346\214\207Offer55-I.\344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" "b/example/\344\272\214\345\217\211\346\240\221/\345\211\221\346\214\207Offer55-I.\344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md"
deleted file mode 100644
index 7c2d094..0000000
--- "a/example/\344\272\214\345\217\211\346\240\221/\345\211\221\346\214\207Offer55-I.\344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md"
+++ /dev/null
@@ -1,17 +0,0 @@
-## [剑指 Offer 55 - I. 二叉树的深度](https://leetcode.cn/problems/er-cha-shu-de-shen-du-lcof/) easy
-
-- 本题与主站 104 题相同
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number}
- */
-// 定义函数返回节点的最大深度
-var maxDepth = function (root) {
- if (root === null) return 0;
- let leftDepth = maxDepth(root.left);
- let rightDepth = maxDepth(root.right);
- return Math.max(leftDepth, rightDepth) + 1;
-};
-```
diff --git "a/example/\344\275\215\350\277\220\347\256\227/136. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.js" "b/example/\344\275\215\350\277\220\347\256\227/136. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.js"
deleted file mode 100644
index dc6f502..0000000
--- "a/example/\344\275\215\350\277\220\347\256\227/136. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.js"
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * @param {number[]} nums
- * @return {number}
- */
-// - 思路
-// - a^a = 0
-// - a^0 = a
-// - 所以全部异或一遍,剩下的就是那个出现一次的数字
-var singleNumber = function (nums) {
- let n = 0;
- for (let i = 0; i < nums.length; i++) {
- n ^= nums[i];
- }
- return n;
-};
\ No newline at end of file
diff --git "a/example/\344\275\215\350\277\220\347\256\227/190.\351\242\240\345\200\222\344\272\214\350\277\233\345\210\266\344\275\215.js" "b/example/\344\275\215\350\277\220\347\256\227/190.\351\242\240\345\200\222\344\272\214\350\277\233\345\210\266\344\275\215.js"
deleted file mode 100644
index 858e079..0000000
--- "a/example/\344\275\215\350\277\220\347\256\227/190.\351\242\240\345\200\222\344\272\214\350\277\233\345\210\266\344\275\215.js"
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * @param {number} n - a positive integer
- * @return {number} - a positive integer
- */
-var reverseBits = function (n) {
- let res = 0; // 0: '0'
- // n一共长32,所以需要移动32次
- for (let i = 0; i < 32; i++) {
- // res:'00';
- res <<= 1; // 相当于res*2
- // 如果n的右边第一位是1,移入res
- // 如果是0不用管,res << 的时候会空出来0
- if (n & 1) {
- res += 1;
- }
- // 4:'100' >> '10'
- // 2:'10' >> '1'
- n >>= 1; // 相当于 n/2
- }
-
- return res >>> 0;
-};
\ No newline at end of file
diff --git "a/example/\344\275\215\350\277\220\347\256\227/191.\344\275\215-1-\347\232\204\344\270\252\346\225\260.js" "b/example/\344\275\215\350\277\220\347\256\227/191.\344\275\215-1-\347\232\204\344\270\252\346\225\260.js"
deleted file mode 100644
index fe5a9a2..0000000
--- "a/example/\344\275\215\350\277\220\347\256\227/191.\344\275\215-1-\347\232\204\344\270\252\346\225\260.js"
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * @lc app=leetcode.cn id=191 lang=javascript
- *
- * [191] 位1的个数
- */
-
-// @lc code=start
-/**
- * @param {number} n - a positive integer
- * @return {number}
- */
-// n & (n-1) 消除数字 n 的二进制表示中的最后一个 1
-// 不断消除数字 n 中的 1,直到 n 变为 0。
-// 
-var hammingWeight = function (n) {
- let res = 0;
- while (n !== 0) {
- n = n & (n - 1);
- res++;
- }
- return res;
-};
-// @lc code=end
diff --git "a/example/\344\275\215\350\277\220\347\256\227/231. 2 \347\232\204\345\271\202.js" "b/example/\344\275\215\350\277\220\347\256\227/231. 2 \347\232\204\345\271\202.js"
deleted file mode 100644
index c2adaba..0000000
--- "a/example/\344\275\215\350\277\220\347\256\227/231. 2 \347\232\204\345\271\202.js"
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * @param {number} n
- * @return {boolean}
- */
-// `n & (n-1)`可以消除二进制最后一个1,变成0
-var isPowerOfTwo = function (n) {
- if (n <= 0) return false;
- return (n & (n - 1)) === 0;
-};
\ No newline at end of file
diff --git "a/example/\344\275\215\350\277\220\347\256\227/268. \344\270\242\345\244\261\347\232\204\346\225\260\345\255\227.js" "b/example/\344\275\215\350\277\220\347\256\227/268. \344\270\242\345\244\261\347\232\204\346\225\260\345\255\227.js"
deleted file mode 100644
index 4a5c3c5..0000000
--- "a/example/\344\275\215\350\277\220\347\256\227/268. \344\270\242\345\244\261\347\232\204\346\225\260\345\255\227.js"
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * @param {number[]} nums
- * @return {number}
- */
-// - 思路
-// - 因为异或满足交换律
-// - a ^ b ^ a = b ^ (a ^ a);
-// - 所以可以将数组内的元素跟[0,n]异或一下
-// - 结果就是丢失的数字
-var missingNumber = function (nums) {
- const n = nums.length;
- let res = 0;
- res ^= n;
- for (let i = 0; i < n; i++) {
- res ^= (nums[i] ^ i);
- }
-
- return res;
-};
-
-/**
- * @param {number[]} nums
- * @return {number}
- */
-// 两个等差数列
-// `sum(nums) - sum([0,n])`就是缺的那个元素
-var missingNumber1 = function (nums) {
- let sumNums = 0;
- let sum = 0;
- for (let i = 0; i < nums.length; i++) {
- sumNums += nums[i];
- sum += (i + 1);
- }
- return sum - sumNums;
-};
diff --git "a/example/\344\275\215\350\277\220\347\256\227/389.\346\211\276\344\270\215\345\220\214.js" "b/example/\344\275\215\350\277\220\347\256\227/389.\346\211\276\344\270\215\345\220\214.js"
deleted file mode 100644
index b8b1fc3..0000000
--- "a/example/\344\275\215\350\277\220\347\256\227/389.\346\211\276\344\270\215\345\220\214.js"
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * @param {string} s
- * @param {string} t
- * @return {character}
- */
-// - 思路
-// - 根据异或的交换律和结合律
-// - a ^ b ^ a = b ^ (a ^ a)
-// - 所以可以将字符做异或操作,最后的结果就是添加的字母
-// - 注意:由于js字符串不支持直接异或,所以要转成对应的unicode
-var findTheDifference = function (s, t) {
- let res = 0;
- res ^= t[t.length - 1].charCodeAt();
- for (let i = 0; i < s.length; i++) {
- res ^= s[i].charCodeAt() ^ t[i].charCodeAt();
- }
- return String.fromCharCode(res);
-};
\ No newline at end of file
diff --git "a/example/\344\275\215\350\277\220\347\256\227/693.\344\272\244\346\233\277\344\275\215\344\272\214\350\277\233\345\210\266\346\225\260.js" "b/example/\344\275\215\350\277\220\347\256\227/693.\344\272\244\346\233\277\344\275\215\344\272\214\350\277\233\345\210\266\346\225\260.js"
deleted file mode 100644
index 1a90bd5..0000000
--- "a/example/\344\275\215\350\277\220\347\256\227/693.\344\272\244\346\233\277\344\275\215\344\272\214\350\277\233\345\210\266\346\225\260.js"
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * @param {number} n
- * @return {boolean}
- */
-var hasAlternatingBits = function (n) {
- // n:000010101
- // m:000001010 n>>1
- // a:000011111
- //a+1:000100000
- // &:000000000
- const a = n ^ (n >> 1);
- return (a & (a + 1)) === 0;
-};
\ No newline at end of file
diff --git "a/example/\345\211\221\346\214\207Offer-II/\345\211\221\346\214\207OfferII001.\346\225\264\346\225\260\351\231\244\346\263\225.md" "b/example/\345\211\221\346\214\207Offer-II/\345\211\221\346\214\207OfferII001.\346\225\264\346\225\260\351\231\244\346\263\225.md"
deleted file mode 100644
index 5f6862a..0000000
--- "a/example/\345\211\221\346\214\207Offer-II/\345\211\221\346\214\207OfferII001.\346\225\264\346\225\260\351\231\244\346\263\225.md"
+++ /dev/null
@@ -1,37 +0,0 @@
-## [001.整数除法](https://leetcode.cn/problems/xoh6Oh/) easy
-
-- 思路
-- [题解](https://leetcode.cn/problems/xoh6Oh/solution/wei-yun-suan-kuai-su-xiang-jian-fa-by-ch-fv8h/)
-
-```js
-const MAX_VAL = Math.pow(2, 31) - 1,
- MIN_VAL = -Math.pow(2, 31);
-/**
- * @param {number} a
- * @param {number} b
- * @return {number}
- */
-var divide = function (a, b) {
- if (b === 1) return a;
- if (b === -1) return a === MIN_VAL ? MAX_VAL : -a;
- if (a === 0) return 0;
-
- // 判断正负
- const flag = (a ^ b) >= 0;
- a = a < 0 ? a : -a;
- b = b < 0 ? b : -b;
-
- let res = 0;
- while (a <= b) {
- let base = 1;
- let divisor = b;
- while (a - divisor <= divisor) {
- base <<= 1;
- divisor <<= 1;
- }
- res += base;
- a -= divisor;
- }
- return flag ? res : -res;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer-II/\345\211\221\346\214\207OfferII002.\344\272\214\350\277\233\345\210\266\345\212\240\346\263\225.md" "b/example/\345\211\221\346\214\207Offer-II/\345\211\221\346\214\207OfferII002.\344\272\214\350\277\233\345\210\266\345\212\240\346\263\225.md"
deleted file mode 100644
index b157f21..0000000
--- "a/example/\345\211\221\346\214\207Offer-II/\345\211\221\346\214\207OfferII002.\344\272\214\350\277\233\345\210\266\345\212\240\346\263\225.md"
+++ /dev/null
@@ -1,43 +0,0 @@
-## [002.二进制加法](https://leetcode.cn/problems/JFETK5/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(N)
-
-- 思路(模拟十进制加法)
-- 这里「逢二进一」,低位对齐,开始计算
-- 进位用`carry`表示,那么个位置的答案其实是「carry + a[i] + b[i] % 2」
-- 每个位置计算完,carry 要计算出来`carry / 2`,也就是右移一位`carry >> 1`
-- 最后计算完毕,若 carry 不为 0,说明最高位需要进位 1,在 res 结果中补 1
-- 最后反转结果,拼成字符串返回
-
-```js
-/**
- * @param {string} a
- * @param {string} b
- * @return {string}
- */
-// 模拟十进制加法
-var addBinary = function (a, b) {
- let res = [];
- let carry = 0; // 进位
- let m = a.length - 1,
- n = b.length - 1;
- while (m >= 0 || n >= 0) {
- if (m >= 0) {
- carry += Number(a[m]);
- m--;
- }
- if (n >= 0) {
- carry += Number(b[n]);
- n--;
- }
- res.push((carry % 2) + '');
- carry = carry >> 1;
- }
- if (carry > 0) {
- res.push('1');
- }
-
- return res.reverse().join('');
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer03.\346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer03.\346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md"
deleted file mode 100644
index 70f7adc..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer03.\346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md"
+++ /dev/null
@@ -1,28 +0,0 @@
-## [剑指 Offer 03. 数组中重复的数字](https://leetcode.cn/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(N)
-
-- 思路
-- 使用 set 内元素不重复的特点
-- 遍历整个数组,若元素已经存在与 set 内,返回即可
-- 若 set 内不存在,就进行添加操作
-- 跟[442.数组中重复的数据](/js-logs/array#442数组中重复的数据)思路类似
-
-```js
-/**
- * @param {number[]} nums
- * @return {number}
- */
-var findRepeatNumber = function (nums) {
- var set = new Set();
- for (var i = 0; i < nums.length; i++) {
- var c = nums[i];
- if (set.has(c)) {
- return c;
- } else {
- set.add(c);
- }
- }
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer04.\344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer04.\344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md"
deleted file mode 100644
index 3e0d244..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer04.\344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md"
+++ /dev/null
@@ -1,35 +0,0 @@
-## [剑指 Offer 04. 二维数组中的查找](https://leetcode.cn/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/) medium
-
-- 从右上角开始遍历(也可以选择从左下角开始遍历)
-- 从右上角出发,向(下⬇️)是(增大)的, 向(左⬅️)是(变小)的
-- [类似 240.搜索二维矩阵-ii](https://leetcode.cn/problems/search-a-2d-matrix-ii/)
-
-```js
-/**
- * @param {number[][]} matrix
- * @param {number} target
- * @return {boolean}
- */
-var findNumberIn2DArray = function (matrix, target) {
- if (matrix.length === 0) return false;
- const m = matrix.length,
- n = matrix[0].length;
-
- // 初始化i,j为右上角元素
- let i = 0,
- j = n - 1;
- while (i < m && j >= 0) {
- if (matrix[i][j] === target) {
- return true;
- } else if (matrix[i][j] > target) {
- // 需要小一点,j--
- j--;
- } else if (matrix[i][j] < target) {
- // 需要大一点,i++
- i++;
- }
- }
- // 循环结束没找到,返回false
- return false;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer05.\346\233\277\346\215\242\347\251\272\346\240\274.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer05.\346\233\277\346\215\242\347\251\272\346\240\274.md"
deleted file mode 100644
index 4865558..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer05.\346\233\277\346\215\242\347\251\272\346\240\274.md"
+++ /dev/null
@@ -1,24 +0,0 @@
-## [剑指 Offer 05. 替换空格](https://leetcode.cn/problems/ti-huan-kong-ge-lcof/) easy
-
-- 思路
-- 由于字符串具有不可修改的特性
-- 所以先把字符串打散成数组,然后去修改空格键部分
-- 最后拼接返回即可
-- 或者直接使用 replaceAll 替换
-
-```js
-/**
- * @param {string} s
- * @return {string}
- */
-var replaceSpace = function (s) {
- // return s.replaceAll(' ', '%20');
- const res = s.split('');
- for (let i = 0; i < res.length; i++) {
- if (res[i] === ' ') {
- res[i] = '%20';
- }
- }
- return res.join('');
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer06.\344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer06.\344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md"
deleted file mode 100644
index 0ec81e8..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer06.\344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md"
+++ /dev/null
@@ -1,30 +0,0 @@
-## [剑指 Offer 06. 从尾到头打印链表](https://leetcode.cn/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/) easy
-
-- 思路
-- 利用递归栈(先进后出)的特性进行反转结果
-- 也可以理解为深度优先遍历
-
-```js
-/**
- * Definition for singly-linked list.
- * function ListNode(val) {
- * this.val = val;
- * this.next = null;
- * }
- */
-/**
- * @param {ListNode} head
- * @return {number[]}
- */
-var reversePrint = function (head) {
- let res = [];
-
- const help = (node) => {
- if (node === null) return;
- node.next && help(node.next);
- res.push(node.val);
- };
- help(head);
- return res;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer07.\351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer07.\351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md"
deleted file mode 100644
index da6d299..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer07.\351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md"
+++ /dev/null
@@ -1,48 +0,0 @@
-## [剑指 Offer 07. 重建二叉树](https://leetcode.cn/problems/zhong-jian-er-cha-shu-lcof/) medium
-
-跟[105.从前序与中序遍历序列构造二叉树](/js-logs/binary-tree#105从前序与中序遍历序列构造二叉树)相同
-
-```js
-/**
- * Definition for a binary tree node.
- * function TreeNode(val) {
- * this.val = val;
- * this.left = this.right = null;
- * }
- */
-/**
- * @param {number[]} preorder
- * @param {number[]} inorder
- * @return {TreeNode}
- */
-var buildTree = function (preorder, inorder) {
- /**
- preorder = [3, 9, 20, 15, 7]
- ⬆ |l| | r |
- 根
-
- inorder = [9, 3, 15, 20, 7]
- |l| ⬆ | r |
- 根
- 定义:
- 前序遍历数组为preorder[preStart,preEnd]
- 中序遍历数组为inorder[inStart,inEnd]
- 构造这个二叉树,并返回根节点
- */
- const build = (preStart, preEnd, inStart, inEnd) => {
- if (preStart > preEnd) return null;
- const rootVal = preorder[preStart]; // 前序遍历的第一个节点是根结点
- const index = inorder.indexOf(rootVal); // 在中序遍历中找到根节点的index,根节点左边是左子树,右边是右子树
- const leftSize = index - inStart; // 在中序遍历中 根节点 - 开始 = leftSize
-
- const root = new TreeNode(rootVal);
- // 左子树,前序索引 (preStart + 1,preStart + leftSize) 中序索引(inStart,rootIndex -1)
- root.left = build(preStart + 1, preStart + leftSize, inStart, index - 1);
- // 右子树 前序(preStart + leftSize + 1, preEnd) 中序(rootIndex+1,inEnd)
- root.right = build(preStart + leftSize + 1, preEnd, index + 1, inEnd);
- return root;
- };
-
- return build(0, preorder.length - 1, 0, inorder.length - 1);
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer09.\347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer09.\347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md"
deleted file mode 100644
index 8610db5..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer09.\347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md"
+++ /dev/null
@@ -1,46 +0,0 @@
-## [剑指 Offer 09. 用两个栈实现队列](https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/) easy
-
-- 思路
-- 根据栈`先进后出`的特性,使用两个栈表示队列`先进先出`的特性
-- 此题目跟[232.用栈实现队列](/js-logs/stack#232用栈实现队列)相似
-
-
-
-
图解
-
-
-```js
-var CQueue = function () {
- this.stack1 = []; // |==
- this.stack2 = []; // |==
-};
-
-/**
- * @param {number} value
- * @return {void}
- */
-CQueue.prototype.appendTail = function (value) {
- this.stack1.push(value);
-};
-
-/**
- * @return {number}
- */
-CQueue.prototype.deleteHead = function () {
- if (this.stack2.length === 0) {
- while (this.stack1.length > 0) {
- this.stack2.push(this.stack1.pop());
- }
- }
-
- const res = this.stack2.pop();
- return res === undefined ? -1 : res;
-};
-
-/**
- * Your CQueue object will be instantiated and called as such:
- * var obj = new CQueue()
- * obj.appendTail(value)
- * var param_2 = obj.deleteHead()
- */
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer10-I.\346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer10-I.\346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md"
deleted file mode 100644
index 346aba2..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer10-I.\346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md"
+++ /dev/null
@@ -1,28 +0,0 @@
-## [剑指 Offer 10- I. 斐波那契数列](https://leetcode.cn/problems/fei-bo-na-qi-shu-lie-lcof/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(H) 树的高度,递归深度
-
-- 思路(动态规划)
-- 斐波那契数列的求解过程 可以看做是一个二叉树的结构
-- 动态转移方程`dp(n) = dp(n-1) + dp(n-2)`
-- 添加备忘录进行剪枝优化
-
-```js
-/**
- * @param {number} n
- * @return {number}
- */
-var fib = function (n) {
- const memo = new Array(n + 1).fill(-1);
- const dp = (n) => {
- if (n === 0) return 0;
- if (n === 1 || n === 2) return 1;
- if (memo[n] !== -1) return memo[n];
-
- memo[n] = (dp(n - 1) + dp(n - 2)) % 1000000007;
- return memo[n];
- };
- return dp(n);
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer11.\346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer11.\346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md"
deleted file mode 100644
index 9676466..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer11.\346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md"
+++ /dev/null
@@ -1,40 +0,0 @@
-## [剑指 Offer 11. 旋转数组的最小数字](https://leetcode.cn/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/) easy
-
-- 类似题目[154.寻找旋转排序数组中的最小值 II](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array-ii/)
-- [题解](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array-ii/solution/154-find-minimum-in-rotated-sorted-array-ii-by-jyd/)
-
-```js
-// 二分法寻找最小值
-var findMin = function (nums) {
- let n = nums.length;
- if (n === 1) return nums[0];
- // 原:[0,1,2,2,2,2,3,4,5,6]
- // 后:[2,3,4,5,6,0,1,2,2,2]
- // [2,3,4,5,6,0,1,2,2,2]
- // l m > r ==> l=m+1;
- // [2,3,4,5,6,0,1,2,2,2]
- // l m = r ==> r=r-1;
- // [2,3,4,5,6,0,1,2,2,2]
- // l m < r ==> r=m;
- // [2,3,4,5,6,0,1,2,2,2]
- // l
- // m r = m;
- // 最后l=r;停止寻找
-
- let left = 0, right = n - 1;
- while (left < right) {
- // let mid = Math.floor((left + right) / 2);
- let mid = left + right >> 1;
- console.log(left, mid, right)
- if (nums[mid] > nums[right]) {
- left = mid + 1;
- } else if (nums[mid] < nums[right]) {
- right = mid;
- } else if (nums[mid] === nums[right]) {
- right = right - 1;
- }
- }
-
- return nums[right]
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer12.\347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer12.\347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md"
deleted file mode 100644
index c7e052d..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer12.\347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md"
+++ /dev/null
@@ -1,58 +0,0 @@
-## [剑指 Offer 12. 矩阵中的路径](https://leetcode.cn/problems/ju-zhen-zhong-de-lu-jing-lcof/) medium
-
-回溯
-跟[79.单词搜索](/js-logs/backtracking#79单词搜索)相同
-
-```js
-/**
- * @param {character[][]} board
- * @param {string} word
- * @return {boolean}
- */
-// 回溯
-var exist = function (board, word) {
- const m = board.length,
- n = board[0].length;
- // false表示未访问,true表示访问过
- const visited = new Array(m).fill().map((_) => new Array(n).fill(false));
- const len = word.length;
-
- // 定义函数
- // 返回 [i,j]为起点能够找出 word[p..end]
- const canFind = (i, j, p) => {
- if (p === len) {
- // p指针越界了,返回true
- return true;
- }
-
- // 越界直接返回false
- if (i < 0 || i >= m || j < 0 || j >= n) return false;
- // 访问过 或者不是要寻找的目标 也返回false
- if (visited[i][j] || board[i][j] !== word[p]) return false;
-
- // 剩下的情况就是 board[i][j] === word[p]
-
- visited[i][j] = true; // 访问
- // 访问上下左右
- const canFindRes =
- canFind(i, j + 1, p + 1) ||
- canFind(i, j - 1, p + 1) ||
- canFind(i + 1, j, p + 1) ||
- canFind(i - 1, j, p + 1);
-
- if (canFindRes) return true; // 如果能找到 返回true
-
- visited[i][j] = false; // 撤销访问
- return false;
- };
-
- for (let i = 0; i < m; i++) {
- for (let j = 0; j < n; j++) {
- if (board[i][j] === word[0] && canFind(i, j, 0)) {
- return true;
- }
- }
- }
- return false;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer14-I.\345\211\252\347\273\263\345\255\220.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer14-I.\345\211\252\347\273\263\345\255\220.md"
deleted file mode 100644
index 1f53955..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer14-I.\345\211\252\347\273\263\345\255\220.md"
+++ /dev/null
@@ -1,50 +0,0 @@
-## [剑指 Offer 14- I. 剪绳子](https://leetcode.cn/problems/jian-sheng-zi-lcof/) medium
-
-跟[343.整数拆分](/js-logs/dynamic-programming#343整数拆分)相同
-
-```js
-/**
- * @param {number} n
- * @return {number}
- */
-var cuttingRope = function (n) {
- // 定义dp[i]表示 i分解后 的最大乘积
- let dp = new Array(n + 1).fill(0);
- dp[0] = dp[1] = 0; // 0和1不能被拆分
- for (let i = 2; i <= n; i++) {
- let curMax = 0;
- for (let j = 0; j < i; j++) {
- curMax = Math.max(curMax, j * (i - j), j * dp[i - j]);
- }
- dp[i] = curMax;
- }
-
- return dp[n];
-};
-```
-
-自顶向下+备忘录
-
-```js
-/**
- * @param {number} n
- * @return {number}
- */
-var cuttingRope = function (n) {
- const memo = Array(n + 1).fill(-1);
- // 返回拆解n后的最大乘积
- const dp = (n) => {
- if (n === 0 || n === 1) return n;
- if (memo[n] !== -1) return memo[n];
-
- let res = -Infinity;
- for (let i = 1; i < n; i++) {
- res = Math.max(res, Math.max(i, dp(i)) * Math.max(n - i, dp(n - i)));
- }
- memo[n] = res;
- return res;
- };
-
- return dp(n);
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer14-II.\345\211\252\347\273\263\345\255\220II.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer14-II.\345\211\252\347\273\263\345\255\220II.md"
deleted file mode 100644
index 90763b9..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer14-II.\345\211\252\347\273\263\345\255\220II.md"
+++ /dev/null
@@ -1,29 +0,0 @@
-## [剑指 Offer 14- II. 剪绳子 II](https://leetcode.cn/problems/jian-sheng-zi-ii-lcof/) medium
-
-跟[343.整数拆分](/js-logs/dynamic-programming#343整数拆分)相同
-
-```js
-/**
- * @param {number} n
- * @return {number}
- */
-var cuttingRope = function (n) {
- // 定义dp[i]表示 i分解后 的最大乘积
- let dp = new Array(n + 1).fill(0n);
- dp[0] = dp[1] = 0n; // 0和1不能被拆分
- const MOD = 1000000007n;
- for (let i = 2; i <= n; i++) {
- let curMax = 0n;
- for (let j = 0; j < i; j++) {
- const subProblem1 = BigInt(j * (i - j));
- const subProblem2 = BigInt(j) * dp[i - j];
- const res = subProblem1 > subProblem2 ? subProblem1 : subProblem2;
- curMax = curMax > res ? curMax : res;
- }
-
- dp[i] = curMax;
- }
-
- return dp[n] % MOD;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer15.\344\272\214\350\277\233\345\210\266\344\270\2551\347\232\204\344\270\252\346\225\260.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer15.\344\272\214\350\277\233\345\210\266\344\270\2551\347\232\204\344\270\252\346\225\260.md"
deleted file mode 100644
index ea8fae8..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer15.\344\272\214\350\277\233\345\210\266\344\270\2551\347\232\204\344\270\252\346\225\260.md"
+++ /dev/null
@@ -1,26 +0,0 @@
-## [剑指 Offer 15. 二进制中1的个数](https://leetcode.cn/problems/er-jin-zhi-zhong-1de-ge-shu-lcof/) easy
-
-- 思路
-- n & (n-1) 消除数字 n 的二进制表示中的最后一个 1
-- 不断消除数字 n 中的 1,直到 n 变为 0。
-- 跟[191. 位-1-的个数](/js-logs/bit-manipulation#191位-1-的个数)相同
-
-
-
-
图解
-
-
-```js
-/**
- * @param {number} n - a positive integer
- * @return {number}
- */
-var hammingWeight = function (n) {
- let res = 0;
- while (n !== 0) {
- n = n & (n - 1);
- res++;
- }
- return res;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer16.\346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer16.\346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md"
deleted file mode 100644
index 49bfb7d..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer16.\346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md"
+++ /dev/null
@@ -1,28 +0,0 @@
-## [剑指 Offer 16. 数值的整数次方](https://leetcode.cn/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/) medium
-
-跟[50.Pow(x, n)](/js-logs/math#50pow-x-n)相同
-
-```js
-/**
- * @param {number} x
- * @param {number} n
- * @return {number}
- */
-var myPow = function (x, n) {
- if (n === 0) return 1;
-
- // n是负数
- if (n < 0) {
- return myPow(1 / x, -n);
- }
-
- // n是奇数
- if (n % 2 === 1) {
- return x * myPow(x, n - 1);
- } else {
- // n 是偶数
- const sub = myPow(x, n / 2);
- return sub * sub;
- }
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer17.\346\211\223\345\215\260\344\273\2161\345\210\260\346\234\200\345\244\247\347\232\204n\344\275\215\346\225\260.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer17.\346\211\223\345\215\260\344\273\2161\345\210\260\346\234\200\345\244\247\347\232\204n\344\275\215\346\225\260.md"
deleted file mode 100644
index ce3fd46..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer17.\346\211\223\345\215\260\344\273\2161\345\210\260\346\234\200\345\244\247\347\232\204n\344\275\215\346\225\260.md"
+++ /dev/null
@@ -1,18 +0,0 @@
-## [剑指 Offer 17. 打印从1到最大的n位数](https://leetcode.cn/problems/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof/) easy
-
-
-```js
-/**
- * @param {number} n
- * @return {number[]}
- */
-var printNumbers = function (n) {
- const res = [];
- // 生成 n位9 如:n=3 ==> 999
- let end = new Array(n).fill("9").join("");
- for (let i = 1; i <= Number(end); i++) {
- res.push(i);
- }
- return res;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer18.\345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\350\212\202\347\202\271.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer18.\345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\350\212\202\347\202\271.md"
deleted file mode 100644
index ca60bce..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer18.\345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\350\212\202\347\202\271.md"
+++ /dev/null
@@ -1,53 +0,0 @@
-## [剑指 Offer 18. 删除链表的节点](https://leetcode.cn/problems/shan-chu-lian-biao-de-jie-dian-lcof/) easy
-
-时间复杂度O(N)
-空间复杂度O(N)
-- 创建一个新的链表,其中「不包含val」相当于把val删除,返回新的链表
-
-```js
-/**
- * @param {ListNode} head
- * @param {number} val
- * @return {ListNode}
- */
-var deleteNode = function (head, val) {
- let newList = new ListNode(-1);
- let q = newList; // q负责结果链表
- let p = head; // p 负责遍历原链表
- while (p) {
- if (p.val !== val) {
- q.next = new ListNode(p.val); // 创建新的节点
- q = q.next;
- }
-
- p = p.next;
- }
- return newList.next;
-};
-```
-
-- 直接删除链表中的值
-- 使用pre和p遍历链表
-- 找到val时,使用`pre.next = pre.next.next`,跳过此val值,相当于在链表删除val
-
-```js
-var deleteNode = function (head, val) {
- let newList = new ListNode(-1);
- newList.next = head; // 创建一个新的头节点,连接head
-
- let pre = newList; // 上一个节点
- let p = head; // 当前节点
- while (p) {
- // 找到val
- if (p.val === val) {
- // 删除当前节点
- pre.next = pre.next.next;
- }
-
- pre = p; // 保留上一个节点
- p = p.next; // 当前节点后移动
- }
-
- return newList.next;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer19.\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\345\214\271\351\205\215.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer19.\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\345\214\271\351\205\215.md"
deleted file mode 100644
index 1b2c853..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer19.\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\345\214\271\351\205\215.md"
+++ /dev/null
@@ -1,72 +0,0 @@
-## [剑指 Offer 03. 数组中重复的数字](https://leetcode.cn/problems/zheng-ze-biao-da-shi-pi-pei-lcof/) hard
-
-- 跟[10.正则表达式匹配](/js-logs/dynamic-programming#10正则表达式匹配)相同
-
-```js
-/**
- * @param {string} s
- * @param {string} p
- * @return {boolean}
- */
-var isMatch = function (s, p) {
- const m = s.length,
- n = p.length;
- const memo = new Map(); // 备忘录
-
- // 含义:计算 p[j..] 是否匹配 s[i..]
- const dp = (s, i, p, j) => {
- // base case
- // 1.当j走到尾部的时候,判断i是否也走到头
- if (j === n) return i === m;
-
- // 2.当i走到头
- if (i === m) {
- // 2.1 如果能匹配上 x* 肯定是成对出现的,为下一步进行筛选
- if ((n - j) % 2 !== 0) return false;
- // 2.2 检查是否为 x*y*z* 这种形式
- for (; j + 1 < n; j += 2) {
- if (p[j + 1] !== '*') {
- return false;
- }
- }
- // 2.3 上面两种情况都不满足,那么说明剩下的p可以被匹配到
- return true;
- }
-
- // 设置备忘录,消除重叠子问题
- const key = i + ' ' + j;
- if (memo.has(key)) return memo.get(key);
-
- let res = false;
-
- // 1.s[i] === p[j],匹配「.」的时候
- if (s[i] === p[j] || p[j] === '.') {
- // 1.1 匹配上「*」
- if (j + 1 < n && p[j + 1] === '*') {
- // 「.*」 的情况下,「*」可能会匹配0次到多次
- res =
- dp(s, i, p, j + 2) || // 0次
- dp(s, i + 1, p, j); // 多次
- } else {
- // 「.」的情况下就 常规匹配1次
- res = dp(s, i + 1, p, j + 1);
- }
- } else {
- // 2.s[i] !== p[j],不匹配「.」的时候
- if (j + 1 < n && p[j + 1] === '*') {
- // 2.1「*」的情况下,匹配0次,然后看下一个字符是否匹配
- // eg: s = "aa", p = "b*aa"
- res = dp(s, i, p, j + 2);
- } else {
- // s[i] !== p[j] 没有「.」 没有「*」 匹配就无法进行下去了
- res = false;
- }
- }
-
- memo.set(key, res);
- return res;
- };
-
- return dp(s, 0, p, 0);
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer20.\350\241\250\347\244\272\346\225\260\345\200\274\347\232\204\345\255\227\347\254\246\344\270\262.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer20.\350\241\250\347\244\272\346\225\260\345\200\274\347\232\204\345\255\227\347\254\246\344\270\262.md"
deleted file mode 100644
index a771c7e..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer20.\350\241\250\347\244\272\346\225\260\345\200\274\347\232\204\345\255\227\347\254\246\344\270\262.md"
+++ /dev/null
@@ -1,51 +0,0 @@
-## [剑指 Offer 20. 表示数值的字符串](https://leetcode.cn/problems/biao-shi-shu-zhi-de-zi-fu-chuan-lcof/) medium
-
-时间复杂度 O(N)
-空间复杂度 O(1)
-
-```js
-/**
- * @param {string} s
- * @return {boolean}
- */
-var isNumber = function (s) {
- if (s == null || s.length == 0) return false;
-
- //去掉首位空格
- s = s.trim();
-
- //是否出现数字
- let numFlag = false;
- //是否出现小数点
- let dotFlag = false;
- // 是否出现 e
- let eFlag = false;
-
- for (let i = 0; i < s.length; i++) {
- if (s[i] >= '0' && s[i] <= '9') {
- //判定为数字,则标记 numFlag
- numFlag = true;
- } else if (s[i] == '.' && !dotFlag && !eFlag) {
- //小数点只可以出现再 e 之前,且只能出现一次 .num、num.num、num. 都是被允许的
- dotFlag = true;
- } else if ((s[i] == 'e' || s[i] == 'E') && !eFlag && numFlag) {
- //判定为e,之前没出现过e,并且前面存在数字
- eFlag = true;
- //避免e以后没有出现数字
- numFlag = false;
- } else if (
- (s[i] == '+' || s[i] == '-') &&
- (i == 0 || s[i - 1] == 'e' || s[i - 1] == 'E')
- ) {
- //判定为+-符号,只能出现在第一位或者紧接e后面
- continue;
- } else {
- //其他情况,都是非法的
- return false;
- }
- }
-
- //是否出现了数字
- return numFlag;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer21.\350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer21.\350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md"
deleted file mode 100644
index 306604c..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer21.\350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md"
+++ /dev/null
@@ -1,52 +0,0 @@
-## [剑指 Offer 21. 调整数组顺序使奇数位于偶数前面](https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/) easy
-
-时间复杂度O(n)
-空间复杂度O(1)
-- 思路
-- 快慢指针维护`[0,slow)`为奇数
-- 当fast指针在前移过程中遇到奇数
-- 就交换给slow,然后slow前移
-
-```js
-/**
- * @param {number[]} nums
- * @return {number[]}
- */
-var exchange = function (nums) {
- let fast = 0, slow = 0;
- // 维护[0,slow)都是奇数
- while (fast < nums.length) {
- if (nums[fast] % 2 === 1) {
- const temp = nums[slow];
- nums[slow] = nums[fast];
- nums[fast] = temp;
- slow++;
- }
- fast++;
- }
- return nums;
-};
-
-```
-
-时间复杂度O(n)
-空间复杂度O(n)
-- 思路
-- 声明两个数组,一个放奇数,另一个放偶数
-- 然后循环判断num的奇偶,放入对应的数组
-- 最后将奇数和偶数进行前后拼接返回
-
-```js
-/**
- * @param {number[]} nums
- * @return {number[]}
- */
-var exchange = function (nums) {
- const firstArr = [];
- const lastArr = [];
- for (let num of nums) {
- num % 2 === 0 ? lastArr.push(num) : firstArr.push(num);
- }
- return firstArr.concat(lastArr);
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer24.\345\217\215\350\275\254\351\223\276\350\241\250.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer24.\345\217\215\350\275\254\351\223\276\350\241\250.md"
deleted file mode 100644
index 5945506..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer24.\345\217\215\350\275\254\351\223\276\350\241\250.md"
+++ /dev/null
@@ -1,27 +0,0 @@
-## [剑指 Offer 24. 反转链表](https://leetcode.cn/problems/fan-zhuan-lian-biao-lcof/) easy
-
-- 递归
-- 利用递归栈
-- 跟[206.反转链表](/js-logs/linked-list#206反转链表)相同
-
-```js
-/**
- * @param {ListNode} head
- * @return {ListNode}
- */
-var reverseList = function (head) {
- if (head === null || head.next === null) {
- return head;
- }
- const last = reverseList(head.next);
- // 4 --> 5 --> null 原来
- // 4 --> 5
- // 4 <-- 5
- head.next.next = head;
-
- // 4 -x-> 5
- // 4 <--- 5
- head.next = null;
- return last;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer25.\345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer25.\345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md"
deleted file mode 100644
index 745d313..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer25.\345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md"
+++ /dev/null
@@ -1,42 +0,0 @@
-## [剑指 Offer 25. 合并两个排序的链表](https://leetcode.cn/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/) easy
-
-时间复杂度 O(M+N)
-空间复杂度 O(1)
-
-思路
-- 两个链表值比较,取较小的值加入链表
-- 重复第一步,然后将另一个剩下的链表直接指向要返回的链表即可
-- 跟[21.合并两个有序链表](/js-logs/linked-list#21合并两个有序链表)相同
-
-```js
-/**
- * @param {ListNode} l1
- * @param {ListNode} l2
- * @return {ListNode}
- */
-var mergeTwoLists = function (l1, l2) {
- let newList = new ListNode(-1);
- let p = newList;
- let p1 = l1, p2 = l2;
-
- while (p1 !== null && p2 !== null) {
- if (p1.val < p2.val) {
- p.next = p1;
- p1 = p1.next;
- } else {
- p.next = p2;
- p2 = p2.next;
- }
- p = p.next;
- }
-
- if (p1 === null) {
- p.next = p2;
- }
- if (p2 === null) {
- p.next = p1;
- }
-
- return newList.next;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer26.\346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer26.\346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md"
deleted file mode 100644
index d9b399b..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer26.\346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md"
+++ /dev/null
@@ -1,38 +0,0 @@
-## [剑指 Offer 26. 树的子结构](https://leetcode.cn/problems/shu-de-zi-jie-gou-lcof/) medium
-
-- 后序遍历
-- 如果A,B的val相等且 A,B也有相等子结构,那么就返回true
-- `if (A.val === B.val && compareTree(A, B)) return true`
-- compareTree(rootA,rootB)比较rootA中是否有子结构 可以匹配上rootB
-- 重点可以放在compareTree函数是如何递归实现比较的
-
-```js
-/**
- * @param {TreeNode} A
- * @param {TreeNode} B
- * @return {boolean}
- */
-var isSubStructure = function (A, B) {
- if (A === null || B === null) return false;
-
- // 对比rootA,rootB子结构是否可以匹配上
- const compareTree = (rootA, rootB) => {
- // base case
- // 当递归左右子树相比的时候,发现rootB已经走到null了,说明rootA,rootB子结构相同
- if (rootB === null) return true;
-
- // 当rootB不为null,但rootA已经是null,说明不是同样的子结构
- if (rootB !== null && rootA === null) return false;
- if (rootA.val !== rootB.val) return false;
-
- // 走到这一步,说明 rootA.val === rootB.val,递归比较左子树和右子树是否相等
- return compareTree(rootA.left, rootB.left) && compareTree(rootA.right, rootB.right);
- };
-
- // 如果A,B的val相等且 A,B也有相等子结构,那么就返回true
- if (A.val === B.val && compareTree(A, B)) return true;
-
- // 递归判断A.left || A.right,只要有一个是B的subTree,也可以返回true
- return isSubStructure(A.left, B) || isSubStructure(A.right, B);
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer28.\345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer28.\345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md"
deleted file mode 100644
index 642dc87..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer28.\345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md"
+++ /dev/null
@@ -1,30 +0,0 @@
-## [剑指 Offer 28. 对称的二叉树](https://leetcode.cn/problems/dui-cheng-de-er-cha-shu-lcof/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(H) 树的高度,递归深度
-
-- 思路
-- 主要是比较子树是否对称
-- 深度优先过程中比较子树的对称性
-- 跟[101. 对称二叉树](/js-logs/binary-tree#101-对称二叉树)相同
-- 跟[100. 相同的树](/js-logs/binary-tree#100-相同的树)相似
-
-```js
-/**
- * @param {TreeNode} root
- * @return {boolean}
- */
-var isSymmetric = function (root) {
- if (root === null) return true;
- // 检查子树是否对称
- const check = (leftRoot, rightRoot) => {
- if (leftRoot === null || rightRoot === null) return leftRoot === rightRoot;
- if (leftRoot.val !== rightRoot.val) return false;
-
- // 走到这里说明leftRoot.val === rightRoot.val,然后判断对称子树是否相等
- return check(leftRoot.right, rightRoot.left) && check(leftRoot.left, rightRoot.right);
- }
-
- return check(root.left, root.right);
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer30.\345\214\205\345\220\253min\345\207\275\346\225\260\347\232\204\346\240\210.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer30.\345\214\205\345\220\253min\345\207\275\346\225\260\347\232\204\346\240\210.md"
deleted file mode 100644
index 653a990..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer30.\345\214\205\345\220\253min\345\207\275\346\225\260\347\232\204\346\240\210.md"
+++ /dev/null
@@ -1,60 +0,0 @@
-## [剑指 Offer 30. 包含 min 函数的栈](https://leetcode.cn/problems/bao-han-minhan-shu-de-zhan-lcof/) easy
-
-跟[115.最小栈](/js-logs/stack#115最小栈)相同
-
-```js
-/**
- * initialize your data structure here.
- */
-var MinStack = function () {
- this.stack = [];
- this.minStack = [];
-};
-
-/**
- * @param {number} x
- * @return {void}
- */
-MinStack.prototype.push = function (x) {
- this.stack.push(x);
- if (
- this.minStack.length === 0 ||
- x <= this.minStack[this.minStack.length - 1]
- ) {
- this.minStack.push(x);
- } else {
- this.minStack.push(this.minStack[this.minStack.length - 1]);
- }
-};
-
-/**
- * @return {void}
- */
-MinStack.prototype.pop = function () {
- this.stack.pop();
- this.minStack.pop();
-};
-
-/**
- * @return {number}
- */
-MinStack.prototype.top = function () {
- return this.stack[this.stack.length - 1];
-};
-
-/**
- * @return {number}
- */
-MinStack.prototype.min = function () {
- return this.minStack[this.minStack.length - 1];
-};
-
-/**
- * Your MinStack object will be instantiated and called as such:
- * var obj = new MinStack()
- * obj.push(x)
- * obj.pop()
- * var param_3 = obj.top()
- * var param_4 = obj.min()
- */
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer31.\346\240\210\347\232\204\345\216\213\345\205\245\345\274\271\345\207\272\345\272\217\345\210\227.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer31.\346\240\210\347\232\204\345\216\213\345\205\245\345\274\271\345\207\272\345\272\217\345\210\227.md"
deleted file mode 100644
index a39559b..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer31.\346\240\210\347\232\204\345\216\213\345\205\245\345\274\271\345\207\272\345\272\217\345\210\227.md"
+++ /dev/null
@@ -1,29 +0,0 @@
-## [剑指 Offer 31. 栈的压入、弹出序列](https://leetcode.cn/problems/zhan-de-ya-ru-dan-chu-xu-lie-lcof/) medium
-
-时间复杂度 O(N)
-空间复杂度 O(N)
-
-- 思路(模拟栈的出栈)
-- 先声明一个 stack 进行入栈,每次入栈都对栈顶元素进行判断
-- 判断栈顶和 popped 元素是否相同,若找到了就进行出栈,同时 popped 对应的指针后移,指向第二个出栈元素与栈顶是否相等,若相等继续出栈,指针也后移
-- 最后判断,stack 是否为空,若全部一一对应上,说明 popped 的出栈顺序是正确的
-- 跟[946.验证栈序列](/js-logs/stack#946验证栈序列)相同
-
-```js
-/**
- * @param {number[]} pushed
- * @param {number[]} popped
- * @return {boolean}
- */
-var validateStackSequences = function (pushed, popped) {
- const stack = [];
- for (let i = 0, j = 0; i < pushed.length; i++) {
- stack.push(pushed[i]);
- while (stack.length && stack[stack.length - 1] === popped[j]) {
- stack.pop();
- j++;
- }
- }
- return stack.length === 0;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer32-I.\344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer32-I.\344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md"
deleted file mode 100644
index dd0a438..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer32-I.\344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md"
+++ /dev/null
@@ -1,24 +0,0 @@
-## [剑指 Offer 32 - I. 从上到下打印二叉树](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/) medium
-
-层序遍历
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number[]}
- */
-var levelOrder = function (root) {
- let res = [];
- const q = [];
- if (root !== null) {
- q.push(root);
- }
- while (q.length) {
- const current = q.shift();
- current.left && q.push(current.left);
- current.right && q.push(current.right);
- res.push(current.val);
- }
- return res;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer32-II.\344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221II.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer32-II.\344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221II.md"
deleted file mode 100644
index fd558a4..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer32-II.\344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221II.md"
+++ /dev/null
@@ -1,34 +0,0 @@
-## [剑指 Offer 32 - II. 从上到下打印二叉树 II](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof/) easy
-
-- 思路(层序遍历)
-- 在每次while循环开始之前,找出当前层级的size
-- 然后使用for循环把当前层级的val存放在level的数组中,中间遇到下一层的节点要放入队列中
-- 当for循环结束,表示当前层的值已经搜集到level中,push到res中即可
-- 跟[102 题](/js-logs/binary-tree#102二叉树的层序遍历)相同
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number[][]}
- */
-var levelOrder = function (root) {
- const q = [];
- if (root !== null) {
- q.push(root);
- }
- const res = [];
- while (q.length) {
- const size = q.length;
- let level = [];
- for (let i = 0; i < size; i++) {
- const current = q.shift();
- level.push(current.val);
- current.left && q.push(current.left);
- current.right && q.push(current.right);
- }
- res.push(level);
- }
-
- return res;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer32-III.\344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221III.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer32-III.\344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221III.md"
deleted file mode 100644
index ea3251d..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer32-III.\344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221III.md"
+++ /dev/null
@@ -1,40 +0,0 @@
-## [剑指 Offer 32 - III.从上到下打印二叉树III](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/) medium
-
-- 思路
-- 跟[剑指 Offer 32 - II. 从上到下打印二叉树 II](/js-logs/sword-point-offer#剑指-offer-32---ii-从上到下打印二叉树-ii)相似
-- 在层序遍历的基础上,改变推入level的顺序即可
-- 使用levelFlag变量,交替push和unshift的推入方式
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number[][]}
- */
-var levelOrder = function (root) {
- const q = [];
- if (root !== null) {
- q.push(root);
- }
-
- const res = [];
- let levelFlag = true;
- while (q.length) {
- const size = q.length;
- const level = [];
- for (let i = 0; i < size; i++) {
- const current = q.shift();
- if (levelFlag) {
- level.push(current.val);
- } else {
- level.unshift(current.val);
- }
- current.left && q.push(current.left);
- current.right && q.push(current.right);
- }
- levelFlag = !levelFlag;
- res.push(level);
- }
-
- return res;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer33.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer33.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md"
deleted file mode 100644
index b065f0e..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer33.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md"
+++ /dev/null
@@ -1,42 +0,0 @@
-## [剑指 Offer 33. 二叉搜索树的后序遍历序列](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/) medium
-
-时间复杂度 O(N^2): 每轮遍历只减去一个节点,递归占用 O(N),最坏情况下,二叉树退化为链表,每次减去一个节点,都需要遍历一遍树,时间复杂度 O(N)
-空间复杂度 O(N) : 最坏情况下(链表)递归深度为 O(N)
-
-- 思路(递归分治)
-- 根据 BST 后序遍历的特性去递归判断:例如`[1,3,2,6,5]`
-- 5 是根节点[1..2]是左节点[6]是右节点
-- 根据特性区分左右子树,若左右子树也满足 BST 后序遍历的特性,那么就说明结果可靠
-- 递归分析
- - 终止条件,当 i>=j,说明只有一个节点了,不用判断正确性,返回 true
- - 声明指针,寻找[i,j]中,第一个大于 j 的元素为 m,说明[i,m-1]是左子树,[m,j]是右子树
- - 然后判断左子树是否都小于根节点,右子树是否都大于根节点
- - 在区分左右子树的时候,其实已经判断了左子树都比根节点小了,只需要继续去判断右子树的有效性
- - 将指向 m 的指针 p 继续后移,判断条件是[m,j]的元素都是大于根节点,若确实如此,指针 p 最后会指向 j
- - 判断 j===p,可以判断当前数组是否符合特性
- - 若符合特性,递归进去,判断左右子树是否「都满足」
- - `return j===p && f[i,m-1] && f[m,j-1]`
-
-```js
-/**
- * @param {number[]} postorder
- * @return {boolean}
- */
-var verifyPostorder = function (postorder) {
- return traverse(postorder, 0, postorder.length - 1);
-};
-
-var traverse = function (postorder, i, j) {
- // base case
- if (i >= j) return true;
- let p = i;
- while (postorder[p] < postorder[j]) p++;
- let m = p; // m用来区分左右子树[i,m-1] [m,j];
- while (postorder[p] > postorder[j]) p++; // 判断后面的元素,是否比根「j」大
- // 若p===j,说明是[i,j]满足后序遍历的特性
- // 继续判断左右子树是否满足特性
- return (
- p === j && traverse(postorder, i, m - 1) && traverse(postorder, m, j - 1)
- );
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer34.\344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer34.\344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md"
deleted file mode 100644
index 9db6903..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer34.\344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md"
+++ /dev/null
@@ -1,44 +0,0 @@
-## [剑指 Offer 34. 二叉树中和为某一值的路径](https://leetcode.cn/problems/er-cha-shu-zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof/) medium
-
-- 典型的回溯
-- 遍历一遍就出结果
-- 遍历过程中记录走过的路径,同时记录remain
-- 当走到叶子节点时递归结束,这个时候判断remain是否为0,若为0说明是一条路径,将path添加到res中
-- 跟[113.路径总和-ii](/js-logs/binary-tree#113路径总和-ii)相同
-
-```js
-/**
- * @param {TreeNode} root
- * @param {number} target
- * @return {number[][]}
- */
-var pathSum = function (root, target) {
- const res = [];
-
- const backTrack = (root, sum, track) => {
- if (root === null) return;
- const remain = sum - root.val;
- // 当走到叶子结点
- if (root.left === null && root.right === null) {
- // 判断remain是否为0,说明找到一条路径
- if (remain === 0) {
- track.push(root.val);
- res.push([...track]);
- track.pop();
- }
- return;
- }
-
- track.push(root.val);
- backTrack(root.left, remain, track);
- track.pop();
-
- track.push(root.val);
- backTrack(root.right, remain, track);
- track.pop();
- }
-
- backTrack(root, target, []);
- return res;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer35.\345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer35.\345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md"
deleted file mode 100644
index 952f926..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer35.\345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md"
+++ /dev/null
@@ -1,32 +0,0 @@
-## [剑指 Offer 35. 复杂链表的复制](https://leetcode.cn/problems/fu-za-lian-biao-de-fu-zhi-lcof/) medium
-
-时间复杂度 O(n)
-空间复杂度 O(n)
-
-- 思路(回溯+map)
-- 因为链表里有 random,所以不能使用遍历+创建新节点的方式进行拷贝
-- 我们用回溯递归的特性,在回溯返回的位置,单独对节点进行拷贝,并存储到 map 中
-- 若 map 中已经存有改节点的 copy 节点,直接返回即可,减少重复拷贝
-
-```js
-/**
- * @param {Node} head
- * @return {Node}
- */
-var copyRandomList = function (head, map = new Map()) {
- if (head === null) return null;
- if (!map.has(head)) {
- map.set(head, {
- val: head.val,
- // next: copyRandomList(head.next, map),
- // random: copyRandomList(head.random, map)
- });
- Object.assign(map.get(head), {
- next: copyRandomList(head.next, map),
- random: copyRandomList(head.random, map),
- });
- }
-
- return map.get(head);
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer36.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer36.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md"
deleted file mode 100644
index 757373c..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer36.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md"
+++ /dev/null
@@ -1,59 +0,0 @@
-## [剑指 Offer 36. 二叉搜索树与双向链表](https://leetcode.cn/problems/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof/) medium
-
-时间复杂度O(N) N为节点个数
-空间复杂度O(N) N为递归栈的深度
-
-
-
-
图解
-
-
-- 思路
-- 此题只允许原地修改,且结果有序,所以优先想到中序遍历的方法
-- 要购构造双向链表,就要对两个节点进行互相引用
-- 所以遍历过程中需要使用`pre`保存前一个节点,然后更改left和right,保持pre和当前节点互相引用
-- 结果需要双向链表的head和tail也相互引用,所以,遍历过程中要保存head节点
-- tail节点在遍历结束时,pre就是tail节点
-- 最后更改头尾节点的left和right,互相引用,返回head即可
-- 跟[426题](https://leetcode-cn.com/problems/convert-binary-search-tree-to-sorted-doubly-linked-list/)相似
-
-```js
-/**
- * @param {Node} root
- * @return {Node}
- */
-var treeToDoublyList = function (root) {
- if (root === null) return null;
- let head = null, pre = null;
- const dfs = (root) => {
- if (root === null) return;
- // --前序位置--
- dfs(root.left);
- // --中序位置--
- if (pre === null) {
- // 如果pre在中序遍历为null,说明,走到了最左边
- // 也就是走到了头
- head = root;
- } else {
- // 回退时
- // pre为1节点
- // root为2节点
- // 1.right 指向2
- // 2.left 指向1
- // 构建双向链表
- pre.right = root;
- root.left = pre;
- }
- pre = root;
- // --后序位置--
- dfs(root.right);
- }
-
- dfs(root);
- // 头尾互指,构成一个更大的双向脸部
- head.left = pre;
- pre.right = head;
-
- return head;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer37.\345\272\217\345\210\227\345\214\226\344\272\214\345\217\211\346\240\221.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer37.\345\272\217\345\210\227\345\214\226\344\272\214\345\217\211\346\240\221.md"
deleted file mode 100644
index d8211fd..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer37.\345\272\217\345\210\227\345\214\226\344\272\214\345\217\211\346\240\221.md"
+++ /dev/null
@@ -1,61 +0,0 @@
-## [剑指 Offer 37. 序列化二叉树](https://leetcode.cn/problems/xu-lie-hua-er-cha-shu-lcof/) hard
-
-跟[297.二叉树的序列化与反序列化](/js-logs/binary-tree#297二叉树的序列化与反序列化)相同
-
-```js
-/**
- * Definition for a binary tree node.
- * function TreeNode(val) {
- * this.val = val;
- * this.left = this.right = null;
- * }
- */
-
-/**
- * Encodes a tree to a single string.
- *
- * @param {TreeNode} root
- * @return {string}
- */
-var serialize = function (root) {
- const res = [];
- const traverse = (node) => {
- if (node === null) return res.push('Null');
- res.push(node.val);
- traverse(node.left);
- traverse(node.right);
- };
- traverse(root);
- return res.toString();
-};
-
-/**
- * Decodes your encoded data to tree.
- *
- * @param {string} data
- * @return {TreeNode}
- */
-var deserialize = function (data) {
- const nodes = data.split(',');
-
- const deTraverse = (nodes) => {
- if (nodes[0] === 'Null') {
- nodes.shift();
- return null;
- }
- const rootVal = nodes.shift();
- const root = new TreeNode(rootVal);
-
- root.left = deTraverse(nodes);
- root.right = deTraverse(nodes);
- return root;
- };
-
- return deTraverse(nodes);
-};
-
-/**
- * Your functions will be called as such:
- * deserialize(serialize(root));
- */
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer39.\346\225\260\347\273\204\344\270\255\345\207\272\347\216\260\346\254\241\346\225\260\350\266\205\350\277\207\344\270\200\345\215\212\347\232\204\346\225\260\345\255\227.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer39.\346\225\260\347\273\204\344\270\255\345\207\272\347\216\260\346\254\241\346\225\260\350\266\205\350\277\207\344\270\200\345\215\212\347\232\204\346\225\260\345\255\227.md"
deleted file mode 100644
index ca01522..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer39.\346\225\260\347\273\204\344\270\255\345\207\272\347\216\260\346\254\241\346\225\260\350\266\205\350\277\207\344\270\200\345\215\212\347\232\204\346\225\260\345\255\227.md"
+++ /dev/null
@@ -1,19 +0,0 @@
-## [剑指 Offer 39. 数组中出现次数超过一半的数字](https://leetcode.cn/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/solution/) easy
-
-时间复杂度 O(N\*logN)
-空间复杂度 O(logN)
-
-- 思路
-- 排序后,取中间元素,无论数字长度是奇偶,都是超过一半的数字
-- 跟[169.多数元素](/js-logs/array#169多数元素)相同
-
-```js
-/**
- * @param {number[]} nums
- * @return {number}
- */
-var majorityElement = function (nums) {
- const sort = nums.sort((a, b) => a - b);
- return sort[nums.length >> 1];
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer40.\346\234\200\345\260\217\347\232\204k\344\270\252\346\225\260.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer40.\346\234\200\345\260\217\347\232\204k\344\270\252\346\225\260.md"
deleted file mode 100644
index 900e778..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer40.\346\234\200\345\260\217\347\232\204k\344\270\252\346\225\260.md"
+++ /dev/null
@@ -1,115 +0,0 @@
-## [剑指 Offer 40. 最小的k个数](https://leetcode.cn/problems/zui-xiao-de-kge-shu-lcof/) easy
-
-时间复杂度 O(N*logN)
-空间复杂度 O(1)
-
-- 思路
-- 先对arr进行sort排序
-- 然后使用slice取前k个元素返回
-
-
-```js
-/**
- * @param {number[]} arr
- * @param {number} k
- * @return {number[]}
- */
-var getLeastNumbers = function (arr, k) {
- arr.sort((a, b) => a - b);
- return arr.slice(0, k);
-};
-```
-
-- 使用最小堆进行排序
-- 然后从最小堆中弹出k个元素返回即可
-
-```js
-/**
- * @param {number[]} arr
- * @param {number} k
- * @return {number[]}
- */
-var getLeastNumbers = function (arr, k) {
- const minHeap = new MinHeap();
- for (const item of arr) {
- minHeap.insert(item);
- }
- let res = new Array(k);
- for (let i = 0; i < k; i++) {
- res[i] = minHeap.pop();
- }
- return res;
-};
-
-// 构建最小堆
-class MinHeap {
- constructor() {
- this.heap = [];
- }
-
- getParentIndex(index) {
- // return Math.floor((index - 1) / 2);
- return (index - 1) >> 1;
- }
-
- getLeftIndex(index) {
- return index * 2 + 1;
- }
-
- getRightIndex(index) {
- return this.getLeftIndex(index) + 1;
- }
-
- swap(i, j) {
- [this.heap[j], this.heap[i]] = [this.heap[i], this.heap[j]];
- }
-
- insert(val) {
- this.heap.push(val);
- this.shiftUp(this.heap.length - 1);
- }
-
- shiftUp(index) {
- if (index === 0) return;
- const parentIndex = this.getParentIndex(index);
- if (this.heap[index] < this.heap[parentIndex]) {
- this.swap(index, parentIndex);
- this.shiftUp(parentIndex);
- }
- }
-
- pop() {
- let head = this.peek();
- const last = this.heap.pop();
- // 若heap只有一个元素,直接pop即可
- if (this.heap.length !== 0) {
- // 若heap还有内容
- this.heap[0] = last; // 使用last元素直接替换掉heap[0]相当于删除
- this.shiftDown(0);
- }
- return head;
- }
-
- shiftDown(index) {
- const leftIndex = this.getLeftIndex(index);
- const rightIndex = this.getRightIndex(index);
- if (this.heap[index] > this.heap[leftIndex]) {
- this.swap(index, leftIndex);
- this.shiftDown(leftIndex);
- }
-
- if (this.heap[index] > this.heap[rightIndex]) {
- this.swap(index, rightIndex);
- this.shiftDown(rightIndex);
- }
- }
-
- peek() {
- return this.heap[0];
- }
-
- size() {
- return this.heap.length;
- }
-}
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer41.\346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\344\270\255\344\275\215\346\225\260.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer41.\346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\344\270\255\344\275\215\346\225\260.md"
deleted file mode 100644
index efcc6aa..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer41.\346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\344\270\255\344\275\215\346\225\260.md"
+++ /dev/null
@@ -1,78 +0,0 @@
-## [剑指 Offer 41. 数据流中的中位数](https://leetcode.cn/problems/shu-ju-liu-zhong-de-zhong-wei-shu-lcof/) hard
-
-时间复杂度O(N\*logN)
-空间复杂度O(1)
-
-- 思路
-- 使用优先级队列,构造小顶堆和大顶堆
-- 由于小顶堆(MinPriorityQueue)的顶是最小的元素,所以底部是较大的元素,命名为large
-- 大顶堆(MaxPriorityQueue),顶部元素大,底部元素小,命名small
-- 在addNum的时候,要`维护两个堆的size不超过1`,还要`维护large的堆定元素大于等于small的堆顶`
-```js
-MedianFinder.prototype.addNum = function (num) {
- if (this.small.size() >= this.large.size()) {
- this.small.enqueue(num);
- this.large.enqueue(this.small.dequeue()?.element);
- } else {
- this.large.enqueue(num);
- this.small.enqueue(this.large.dequeue()?.element);
- }
-};
-```
-- 简单的说,如果**要向large插入num,要先把num插入到small中,然后将small的堆顶元素插入large**,插入small时也一样
-- 这样可以保证两个堆定的元素差小于等于1
-- 最后根据奇偶性去返回中位数即可
-- 如果是奇数,就将长度多的那个堆的堆顶元素返回
-- 如果是偶数,说明两个堆的元素相等,返回两个堆顶元素的平均值即可
-- 跟[295. 数据流的中位数](/js-logs/heap#295-数据流的中位数)相同
-
-```js
-/**
- * initialize your data structure here.
- */
-var MedianFinder = function () {
- // 优先级队列,leetcode内置了MaxPriorityQueue和MinPriorityQueue
- // https://github.com/datastructures-js/priority-queue
- this.large = new MinPriorityQueue(); // large解释:底部放大的,顶部是小的,说一使用小顶堆
- this.small = new MaxPriorityQueue();// small解释:底部放最小,顶部是大的,所以使用大顶堆
-};
-
-/**
- * @param {number} num
- * @return {void}
- */
-MedianFinder.prototype.addNum = function (num) {
- if (this.small.size() >= this.large.size()) {
- this.small.enqueue(num);
- this.large.enqueue(this.small.dequeue()?.element);
- } else {
- this.large.enqueue(num);
- this.small.enqueue(this.large.dequeue()?.element);
- }
-};
-
-/**
- * @return {number}
- */
-MedianFinder.prototype.findMedian = function () {
- const largeElement = this.large.front()?.element,
- smallElement = this.small.front()?.element;
- if (this.large.size() > this.small.size()) {
- // 如果large的数量多,返回large的堆顶元素
- return largeElement;
- } else if (this.large.size() < this.small.size()) {
- // 如果small的数量多,返回small的堆顶元素
- return smallElement
- } else {
- // 如果是偶数,large和small的数量相等,各取堆顶元素,求平均值
- return (largeElement + smallElement) / 2.0
- }
-};
-
-/**
- * Your MedianFinder object will be instantiated and called as such:
- * var obj = new MedianFinder()
- * obj.addNum(num)
- * var param_2 = obj.findMedian()
- */
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer42.\350\277\236\347\273\255\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\222\214.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer42.\350\277\236\347\273\255\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\222\214.md"
deleted file mode 100644
index e69b6eb..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer42.\350\277\236\347\273\255\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\222\214.md"
+++ /dev/null
@@ -1,37 +0,0 @@
-## [剑指 Offer 42. 连续子数组的最大和](https://leetcode.cn/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/) easy
-
-时间复制度O(N)
-空间复杂度O(N)
-
-- 思路(动态规划)
-- 要求子数组的和的最大值
-- 要看当前值,是否要和前面的数组组合形成更大的数字
-- 或者自己成为一个单独的数组
-- dp数组,定义dp[i]表示nums[0..i]的最大和
-- 那么动态转移方程就是
-```js
-dp[i] = max(dp[i - 1] + nums[i], nums[i]);
-```
-- 跟[53.最大子数组和](/js-logs/dynamic-programming#53最大子数组和)相同
-
-```js
-/**
- * @param {number[]} nums
- * @return {number}
- */
-var maxSubArray = function (nums) {
- const n = nums.length;
- // dp[i]表示nums[0..i]的最大和
- let dp = new Array(n).fill(0);
-
- // base case
- dp[0] = nums[0];
- let max = nums[0];
- for (let i = 1; i < n; i++) {
- dp[i] = Math.max(dp[i - 1] + nums[i], nums[i]);
- max = Math.max(max, dp[i]); // 更新max
- }
-
- return max;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer43.1\357\275\236n\346\225\264\346\225\260\344\270\2551\345\207\272\347\216\260\347\232\204\346\254\241\346\225\260.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer43.1\357\275\236n\346\225\264\346\225\260\344\270\2551\345\207\272\347\216\260\347\232\204\346\254\241\346\225\260.md"
deleted file mode 100644
index 8503a82..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer43.1\357\275\236n\346\225\264\346\225\260\344\270\2551\345\207\272\347\216\260\347\232\204\346\254\241\346\225\260.md"
+++ /dev/null
@@ -1,30 +0,0 @@
-## [剑指 Offer 43. 1 ~ n 整数中 1 出现的次数](https://leetcode.cn/problems/1nzheng-shu-zhong-1chu-xian-de-ci-shu-lcof/) hard
-
-[官方题解](https://leetcode.cn/problems/1nzheng-shu-zhong-1chu-xian-de-ci-shu-lcof/solution/1n-zheng-shu-zhong-1-chu-xian-de-ci-shu-umaj8/)
-
-
-
-
公式
-
-
-跟[233. 数字 1 的个数](/js-logs/math#233-数字-1-的个数)相同
-
-```js
-/**
- * @param {number} n
- * @return {number}
- */
-var countDigitOne = function (n) {
- let digit = 1; // 位因子
- let res = 0;
-
- for (let k = 0; digit <= n; k++) {
- let forwardDigit = digit * 10;
- res +=
- Math.floor(n / forwardDigit) * digit +
- Math.min(Math.max((n % forwardDigit) - digit + 1, 0), digit);
- digit *= 10;
- }
- return res;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer44.\346\225\260\345\255\227\345\272\217\345\210\227\344\270\255\346\237\220\344\270\200\344\275\215\347\232\204\346\225\260\345\255\227.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer44.\346\225\260\345\255\227\345\272\217\345\210\227\344\270\255\346\237\220\344\270\200\344\275\215\347\232\204\346\225\260\345\255\227.md"
deleted file mode 100644
index 70b396c..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer44.\346\225\260\345\255\227\345\272\217\345\210\227\344\270\255\346\237\220\344\270\200\344\275\215\347\232\204\346\225\260\345\255\227.md"
+++ /dev/null
@@ -1,37 +0,0 @@
-## [剑指 Offer 44. 数字序列中某一位的数字](https://leetcode.cn/problems/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof/) medium
-
-跟[264.丑数-ii](/js-logs/dynamic-programming#264丑数-ii)相同
-
-```js
-/**
- * @param {number} n
- * @return {number}
- */
-// 先求出数字的长度
-// 规律
-// [1..9] = 9 * 1个数 => 9 * 1 * 1 => 9 * 10^0 * 1
-// [10..99] = 90 * 2个数 => 9 * 10 * 2 => 9 * 10^1 * 2
-// [100..999] = 900 * 3个数 => 9 * 100 * 3 => 9 * 10^2 * 3
-// [1000..9999] = 9000 * 4个数 => 9 * 1000 * 4 => 9 * 10^3 * 4
-var findNthDigit = function (n) {
- let k = 1; // 表明当前是 几位数字: 9=>1, 99=>2 ...
- let digit = 1; // 表示位因数: 9=>1,99=>10 ..
- while (n - 9 * digit * k >= 0) {
- n = n - 9 * digit * k;
- k++;
- digit *= 10;
- }
-
- let target = Math.pow(10, k - 1) + Math.floor(n / k); // 第n位所在的数字
- let index = n % k; // 在target中的第几位
-
- // index:0 说明【第n位的数字】位于target前一个数字的最后一位
- if (index === 0) {
- let str = String(target - 1);
- return Number(str[str.length - 1]);
- } else {
- let str = String(target);
- return Number(str[index - 1]);
- }
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer46.\346\212\212\346\225\260\345\255\227\347\277\273\350\257\221\346\210\220\345\255\227\347\254\246\344\270\262.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer46.\346\212\212\346\225\260\345\255\227\347\277\273\350\257\221\346\210\220\345\255\227\347\254\246\344\270\262.md"
deleted file mode 100644
index 188cb73..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer46.\346\212\212\346\225\260\345\255\227\347\277\273\350\257\221\346\210\220\345\255\227\347\254\246\344\270\262.md"
+++ /dev/null
@@ -1,42 +0,0 @@
-## [剑指 Offer 46. 把数字翻译成字符串](https://leetcode.cn/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/) medium
-
-动态规划(自顶向下)
-跟[91.解码方法](/js-logs/dynamic-programming#91解码方法)类似
-91题中 中 `0表示无效字符`,`1表示A`,这里`0表示a`,仅错了一位数字,思路是一样的
-
-- 这其实是一道字符串类的动态规划题
-- 不难发现对于字符串 s 的某个位置 i 而言
-- 我们只关心「位置 i 自己能否形成独立 item 」和「位置 i 能够与前一位置(i-1)能否形成 item」
-- 而不关心 i-1 之前的位置
-- 动态转移方程:
-- 若s[i]单独组成item:`dp[i] = dp[i-1]` 继承dp[i-1]的数量
-- 若s[i]与前一位置组成item: `dp[i] = dp[i-1] + dp[i-2]`
-
-```js
-/**
- * @param {number} num
- * @return {number}
- */
-var translateNum = function (num) {
- const s = num.toString();
- const n = s.length;
- if (n === 0) return 0;
- // 定义dp[i] 表示以s[i-1]结尾的解码数量
- const dp = new Array(n + 1).fill(0);
- // base case
- dp[0] = 1; // s为空
-
- dp[1] = 1; // 初始化第一个字符s[0]的数量
- for (let i = 2; i <= n; i++) {
- const c = s[i - 1], d = s[i - 2];// s[1],s[0]
- if ('0' <= c && c <= '9') {
- dp[i] = dp[i - 1]; // 如果可以单独组成item,则继承dp[i-1]的数量
- }
- if (d === '1' || d === '2' && c <= '5') {
- dp[i] += dp[i - 2]; // 如果可以和前一位组合成item,则dp[i] = dp[i-1]+dp[i-2]
- }
- }
-
- return dp[n];
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer47.\347\244\274\347\211\251\347\232\204\346\234\200\345\244\247\344\273\267\345\200\274.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer47.\347\244\274\347\211\251\347\232\204\346\234\200\345\244\247\344\273\267\345\200\274.md"
deleted file mode 100644
index f36f486..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer47.\347\244\274\347\211\251\347\232\204\346\234\200\345\244\247\344\273\267\345\200\274.md"
+++ /dev/null
@@ -1,60 +0,0 @@
-## [剑指 Offer 47. 礼物的最大价值](https://leetcode.cn/problems/li-wu-de-zui-da-jie-zhi-lcof/) medium
-
-动态规划(自顶向下)
-跟[64.最小路径和](/js-logs/dynamic-programming#64最小路径和)相似
-不过这个是求最大,修改一下转移方程就行
-
-```js
-/**
- * @param {number[][]} grid
- * @return {number}
- */
-var maxValue = function (grid) {
- const m = grid.length;
- const n = grid[0].length;
- const memo = new Array(m).fill().map(_ => new Array(n).fill(-1));
-
- // 返回[0,0] 到[i,j]的路径上的最大值
- const dp = (i, j) => {
- // base case
- if (i === 0 && j === 0) return grid[0][0];
- if (i < 0 || j < 0) return -Infinity;
-
- if (memo[i][j] !== -1) return memo[i][j];
-
- return memo[i][j] = Math.max(dp(i - 1, j), dp(i, j - 1)) + grid[i][j];
- }
- return dp(m - 1, n - 1);
-};
-```
-
-自底向上(dp数组,动规)
-
-```js
-/**
- * @param {number[][]} grid
- * @return {number}
- */
-var maxValue = function (grid) {
- const m = grid.length, n = grid[0].length;
- // dp[i][j]表示从[0,0]到[i,j]点 路径上的最大值
- const dp = new Array(m).fill().map(_ => new Array(n).fill(0));
-
- // base case
- dp[0][0] = grid[0][0];
- for (let i = 1; i < m; i++) {
- dp[i][0] = dp[i - 1][0] + grid[i][0];
- }
- for (let j = 1; j < n; j++) {
- dp[0][j] = dp[0][j - 1] + grid[0][j];
- }
-
- for (let i = 1; i < m; i++) {
- for (let j = 1; j < n; j++) {
- dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]) + grid[i][j];
- }
- }
-
- return dp[m - 1][n - 1];
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer48.\346\234\200\351\225\277\344\270\215\345\220\253\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer48.\346\234\200\351\225\277\344\270\215\345\220\253\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md"
deleted file mode 100644
index bced899..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer48.\346\234\200\351\225\277\344\270\215\345\220\253\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md"
+++ /dev/null
@@ -1,32 +0,0 @@
-## [剑指 Offer 48. 最长不含重复字符的子字符串](https://leetcode.cn/problems/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof/) medium
-
-滑动窗口
-跟[3.无重复字符的最长子串](/js-logs/sliding-window#3无重复字符的最长子串)相同
-
-```js
-/**
- * @param {string} s
- * @return {number}
- */
-var lengthOfLongestSubstring = function (s) {
- const window = new Map();
- let left = 0, right = 0;
- let res = 0;
- while (right < s.length) {
- const c = s[right];
- // 窗口增大
- right++;
- window.set(c, window.has(c) ? window.get(c) + 1 : 1);
-
- // 判断窗口是否要缩小
- while (window.get(c) > 1) {
- const d = s[left];
- left++;
- window.set(d, window.get(d) - 1);
- }
- res = Math.max(res, right - left);
- }
-
- return res;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer49.\344\270\221\346\225\260.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer49.\344\270\221\346\225\260.md"
deleted file mode 100644
index 42636c7..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer49.\344\270\221\346\225\260.md"
+++ /dev/null
@@ -1,45 +0,0 @@
-## [剑指 Offer 49. 丑数](https://leetcode.cn/problems/chou-shu-lcof/) medium
-
-跟[264.丑数-ii](/js-logs/dynamic-programming#264丑数-ii)相同
-
-```js
-/**
- * @param {number} n
- * @return {number}
- */
-// 合并2,3,5倍速的链表
-var nthUglyNumber = function (n) {
- if (n === 1) return 1;
- let p_2 = 1,
- p_3 = 1,
- p_5 = 1; // 理解为头节点的值
- let p2 = 1,
- p3 = 1,
- p5 = 1; // 理解为链表头节点
- // 结果链表
- const ugly = new Array(n + 1).fill(0);
- // 结果链表上的指针
- let p = 1;
-
- while (p <= n) {
- let min = Math.min(p_2, p_3, p_5);
- ugly[p] = min;
- p++;
- // 指针后移
- if (min === p_2) {
- p_2 = ugly[p2] * 2;
- p2++;
- }
- if (min === p_3) {
- p_3 = ugly[p3] * 3;
- p3++;
- }
- if (min === p_5) {
- p_5 = ugly[p5] * 5;
- p5++;
- }
- }
-
- return ugly[n];
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer50.\347\254\254\344\270\200\344\270\252\345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\345\255\227\347\254\246.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer50.\347\254\254\344\270\200\344\270\252\345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\345\255\227\347\254\246.md"
deleted file mode 100644
index b0acb0a..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer50.\347\254\254\344\270\200\344\270\252\345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\345\255\227\347\254\246.md"
+++ /dev/null
@@ -1,30 +0,0 @@
-## [剑指 Offer 50. 第一个只出现一次的字符](https://leetcode.cn/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/) easy
-
-考察map的使用
-跟[387.字符串中的第一个唯一字符](https://leetcode.cn/problems/first-unique-character-in-a-string/)相似
-
-```js
-/**
- * @param {string} s
- * @return {character}
- */
-var firstUniqChar = function (s) {
- let map = new Map();
- for (const item of s) {
- if (map.has(item)) {
- // 已经出现过就累加
- map.set(item, map.get(item) + 1);
- } else {
- map.set(item, 1);
- }
- }
-
- let res = ' ';
- for (let [key, value] of map) {
- if (value === 1) {
- return res = key
- }
- }
- return res;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer51.\346\225\260\347\273\204\344\270\255\347\232\204\351\200\206\345\272\217\345\257\271.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer51.\346\225\260\347\273\204\344\270\255\347\232\204\351\200\206\345\272\217\345\257\271.md"
deleted file mode 100644
index de05fa9..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer51.\346\225\260\347\273\204\344\270\255\347\232\204\351\200\206\345\272\217\345\257\271.md"
+++ /dev/null
@@ -1,73 +0,0 @@
-## [剑指 Offer 51. 数组中的逆序对](https://leetcode.cn/problems/shu-zu-zhong-de-ni-xu-dui-lcof/) hard
-
-跟[493.翻转对](/leetcode-js/js-logs/sort#493翻转对)相似
-
-```js
-/**
- * @param {number[]} nums
- * @return {number}
- */
-// 在归并排序中处理
-var reversePairs = function (nums) {
- const n = nums.length;
- if (n === 0) return 0;
- const temp = new Array(n);
- let count = 0;
-
- const merge = (lo, mid, hi) => {
- for (let i = lo; i <= hi; i++) {
- temp[i] = nums[i];
- }
-
- // ---左右数组有序之前---
- // let start = lo, end = mid + 1;
- // while (start <= mid && end <= hi) {
- // if (nums[start] > nums[end]) {
- // count += mid + 1 - start;
- // end++;
- // } else {
- // start++;
- // }
- // }
-
- // 维护一个[mid+1,end)的区间,是nums[i] > num[j]逆序对
- let end = mid + 1;
- for (let start = lo; start <= mid; start++) {
- while (end <= hi && nums[start] > nums[end]) {
- end++;
- }
- count += end - (mid + 1);
- }
-
- // ---左右数组有序---
- let i = lo,
- j = mid + 1;
- for (let p = lo; p <= hi; p++) {
- if (i === mid + 1) {
- nums[p] = temp[j++];
- } else if (j === hi + 1) {
- nums[p] = temp[i++];
- } else if (temp[i] > temp[j]) {
- nums[p] = temp[j++];
- } else if (temp[i] <= temp[j]) {
- nums[p] = temp[i++];
- }
- }
- };
-
- const sort = (lo, hi) => {
- // 单个元素不用排序
- if (lo === hi) return;
- // const mid = Math.floor(lo + (hi - lo) / 2);
- const mid = lo + ((hi - lo) >> 1);
- sort(lo, mid);
- sort(mid + 1, hi);
- // 合并[lo,mid][mid,hi]
- merge(lo, mid, hi);
- };
-
- // 归并
- sort(0, n - 1);
- return count;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer52.\344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\350\212\202\347\202\271.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer52.\344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\350\212\202\347\202\271.md"
deleted file mode 100644
index 060ac43..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer52.\344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\350\212\202\347\202\271.md"
+++ /dev/null
@@ -1,32 +0,0 @@
-## [剑指 Offer 52. 两个链表的第一个公共节点](https://leetcode.cn/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(1)
-
-- 思路
-- 跟[160.相交链表](/js-logs/linked-list#160相交链表)相同
-
-```js
-/**
- * @param {ListNode} headA
- * @param {ListNode} headB
- * @return {ListNode}
- */
-// a1 a2 c1 c2 c3
-// b1 b2 b3 c1 c2 c3
-// 使长度相同,两个链表互相连接到尾部,这样尾部就说一样的,相遇的第一个节点就说第一个公共节点
-// a1 a2 c1 c2 c3 b1 b2 b3 [c1] c2 c3
-// b1 b2 b3 c1 c2 c3 a1 a2 [c1] c2 c3
-var getIntersectionNode = function (headA, headB) {
- let p1 = headA, p2 = headB;
- while (p1 !== p2) {
- if (p1 === null) p1 = headB;
- else p1 = p1.next;
-
- if (p2 === null) p2 = headA;
- else p2 = p2.next;
- }
-
- return p1;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer53-I.\345\234\250\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\346\237\245\346\211\276\346\225\260\345\255\227I.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer53-I.\345\234\250\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\346\237\245\346\211\276\346\225\260\345\255\227I.md"
deleted file mode 100644
index 4cd2f12..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer53-I.\345\234\250\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\346\237\245\346\211\276\346\225\260\345\255\227I.md"
+++ /dev/null
@@ -1,91 +0,0 @@
-## [剑指 Offer 53 - I. 在排序数组中查找数字 I](https://leetcode.cn/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/) easy
-
-时间复杂度 O(2\* logN) => O(logN)
-空间复杂度 O(1)
-
-- 思路(二分查找)
-- 跟[34.在排序数组中查找元素的第一个和最后一个位置](/js-logs/binary-search#34在排序数组中查找元素的第一个和最后一个位置)相似
-- 用二分法,分别搜索 target 的左右边界
-- 如果搜索的边界有效就返回 左右边界区间的长度
-- 如果搜索的边界为-1,说明搜索越界,返回 0 即可
-
-```js
-/**
- * @param {number[]} nums
- * @param {number} target
- * @return {number}
- */
-var search = function (nums, target) {
- if (nums.length === 0) return 0;
- const left = leftSearch(nums, target);
- const right = rightSearch(nums, target);
- if (left === -1 || right === -1) return 0;
- return right - left + 1;
-};
-
-// 返回左边界的索引
-var leftSearch = function (nums, target) {
- let left = 0,
- right = nums.length - 1;
- while (left <= right) {
- const mid = left + ((right - left) >> 1);
- if (nums[mid] === target) {
- // 收缩左边界,缩小范围[left,mid-1]
- right = mid - 1;
- } else if (nums[mid] > target) {
- // mid太大了,缩小范围[left,mid-1]
- right = mid - 1;
- } else if (nums[mid] < target) {
- // mid太小了,扩大范围[mid+1,right]
- left = mid + 1;
- }
- }
- // left的范围是[0,nums.length]
- return nums[left] === target ? left : -1;
-};
-
-// 返回右边界的索引
-var rightSearch = function (nums, target) {
- let left = 0,
- right = nums.length - 1;
- while (left <= right) {
- const mid = left + ((right - left) >> 1);
- if (nums[mid] === target) {
- // 收缩左边界,缩小范围[mid+1,right]
- left = mid + 1;
- } else if (nums[mid] > target) {
- // mid太大了,缩小范围[left,mid-1]
- right = mid - 1;
- } else if (nums[mid] < target) {
- // mid太小了,扩大范围[mid+1,right]
- left = mid + 1;
- }
- }
- // right的范围是[-1,nums.length-1]
- return nums[right] === target ? right : -1;
-};
-```
-
-时间复杂度 O(N)
-空间复杂度 O(1)
-
-- 普通思路
-- 遍历数组
-- 如果 num===target,res 就累加
-
-```js
-/**
- * @param {number[]} nums
- * @param {number} target
- * @return {number}
- */
-var search = function (nums, target) {
- let res = 0;
- for (let i = 0; i < nums.length; i++) {
- if (nums[i] === target) {
- res += 1;
- }
- }
- return res;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer53-II.0\357\275\236n-1\344\270\255\347\274\272\345\244\261\347\232\204\346\225\260\345\255\227.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer53-II.0\357\275\236n-1\344\270\255\347\274\272\345\244\261\347\232\204\346\225\260\345\255\227.md"
deleted file mode 100644
index dab1ee1..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer53-II.0\357\275\236n-1\344\270\255\347\274\272\345\244\261\347\232\204\346\225\260\345\255\227.md"
+++ /dev/null
@@ -1,44 +0,0 @@
-## [剑指 Offer 53 - II. 0 ~ n-1 中缺失的数字](https://leetcode.cn/problems/que-shi-de-shu-zi-lcof/) easy
-
-- 思路
-- 因为异或满足交换律
-- a ^ b ^ a = b ^ (a ^ a);
-- 所以可以将数组内的元素跟[0,n]异或一下
-- 结果就是丢失的数字
-- 跟[268.丢失的数字](/js-logs/bit-manipulation#268丢失的数字)相同
-
-```js
-/**
- * @param {number[]} nums
- * @return {number}
- */
-var missingNumber = function (nums) {
- const n = nums.length;
- let res = 0;
- res ^= n;
- for (let i = 0; i < n; i++) {
- res ^= nums[i] ^ i;
- }
-
- return res;
-};
-```
-
-- 两个等差数列
-- `sum(nums) - sum([0,n])`就是缺的那个元素
-
-```js
-/**
- * @param {number[]} nums
- * @return {number}
- */
-var missingNumber1 = function (nums) {
- let sumNums = 0;
- let sum = 0;
- for (let i = 0; i < nums.length; i++) {
- sumNums += nums[i];
- sum += i + 1;
- }
- return sum - sumNums;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer54.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\347\254\254k\345\244\247\350\212\202\347\202\271.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer54.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\347\254\254k\345\244\247\350\212\202\347\202\271.md"
deleted file mode 100644
index c02eb1c..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer54.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\347\254\254k\345\244\247\350\212\202\347\202\271.md"
+++ /dev/null
@@ -1,38 +0,0 @@
-## [剑指 Offer 54. 二叉搜索树的第k大节点](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/) easy
-
-时间复杂度O(N)
-空间复杂度O(1)
-
-- 思路
-- 跟[230.二叉搜索树中第K小的元素](/js-logs/binary-tree#230二叉搜索树中第k小的元素)类似
-- 不过230是利用中序遍历有序的特点,求第k小,这里求第k大
-- 可以在中序位置改变中序的结果为倒序
-- 先遍历right,再遍历left就可以了
-- 然后使用rank记录当前排名,当rank到k时,返回res即可
-
-```js
-/**
- * @param {TreeNode} root
- * @param {number} k
- * @return {number}
- */
-var kthLargest = function (root, k) {
- let res = 0;// 记录结果
- let rank = 0; // 记录排名
-
- const traverse = (root) => {
- if (root === null) return;
- // 先遍历right,使中序结果倒序
- traverse(root.right);
- rank++;
- if (rank === k) {
- res = root.val;
- return;
- }
- traverse(root.left);
- }
- traverse(root);
-
- return res;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer55-I.\344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer55-I.\344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md"
deleted file mode 100644
index 3d65824..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer55-I.\344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md"
+++ /dev/null
@@ -1,49 +0,0 @@
-## [剑指 Offer 55 - I. 二叉树的深度](https://leetcode.cn/problems/er-cha-shu-de-shen-du-lcof/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(N) 看似是O(1) 然而在函数递归调用的时候有函数调用栈的空间,所以最坏情况下是O(N)
-
-- 思路(遍历解法对应 回溯解法)
-- 遍历二叉树
-- 遍历时,为每个节点标记层级
-- 记录最大值并返回,可以 只比较叶子节点的层级,做优化提升
-- 跟[104. 二叉树的最大深度](/js-logs/binary-tree#104二叉树的最大深度)相同
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number}
- */
-var maxDepth = function (root) {
- let res = 0;
- const dfs = (root, deep) => {
- if (root === null) return;
- deep++;
- if (root.left === null && root.right === null) {
- res = Math.max(res, deep)
- }
- dfs(root.left, deep);
- dfs(root.right, deep);
- deep--;
- }
- dfs(root, 0);
-
- return res;
-};
-```
-
-「分解子问题」解法:对应动态规划解法
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number}
- */
-// 定义函数返回节点的最大深度
-var maxDepth = function (root) {
- if (root === null) return 0;
- let leftDepth = maxDepth(root.left);
- let rightDepth = maxDepth(root.right);
- return Math.max(leftDepth, rightDepth) + 1;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer55-II.\345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer55-II.\345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md"
deleted file mode 100644
index 8339ad8..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer55-II.\345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md"
+++ /dev/null
@@ -1,36 +0,0 @@
-## [剑指 Offer 55 - II. 平衡二叉树](https://leetcode.cn/problems/ping-heng-er-cha-shu-lcof/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(1)
-
-- 思路
-- 为了判断是否平衡,拍脑袋的想法是计算每个节点的最大高度,但是每个节点都算一遍最大深度,时间复杂度比较高
-- 所以,最好过来想,只计算一次最大深度,在计算过程中判断二叉树是否平衡
-- 对于每个节点,先算出来左右子树的最大深度,然后在后序遍历的位置,然后根据 左右子树的最大高度 判断平衡性
-- 跟[110.平衡二叉树](/js-logs/binary-tree#110平衡二叉树)相同
-- 跟[剑指Offer55-I.二叉树的深度](/js-logs/sword-point-offer#剑指-offer-55---i-二叉树的深度)相似
-
-```js
-/**
- * @param {TreeNode} root
- * @return {boolean}
- */
-var isBalanced = function (root) {
- let res = true;
-
- const traverse = (root) => {
- if (root === null) return 0;
- if (!res) return; // res 已经为false了,可以停止遍历了
-
- const leftMaxDepth = traverse(root.left);
- const rightMaxDepth = traverse(root.right);
- if (Math.abs(leftMaxDepth - rightMaxDepth) > 1) {
- res = false;
- }
- return Math.max(leftMaxDepth, rightMaxDepth) + 1;
- };
-
- traverse(root);
- return res;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer56-I.\346\225\260\347\273\204\344\270\255\346\225\260\345\255\227\345\207\272\347\216\260\347\232\204\346\254\241\346\225\260.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer56-I.\346\225\260\347\273\204\344\270\255\346\225\260\345\255\227\345\207\272\347\216\260\347\232\204\346\254\241\346\225\260.md"
deleted file mode 100644
index 10d2499..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer56-I.\346\225\260\347\273\204\344\270\255\346\225\260\345\255\227\345\207\272\347\216\260\347\232\204\346\254\241\346\225\260.md"
+++ /dev/null
@@ -1,36 +0,0 @@
-## [剑指 Offer 56 - I. 数组中数字出现的次数](https://leetcode.cn/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof/) medium
-
-时间复杂度 O(N)
-空间复杂度 O(1)
-
-- 思路
-- 将数字分成两组,不同的数字在不同组,相同的数字在相同组
-- 然后对这两组进行异或,两组最后的异或结果就是两个不同的数字
-- 根据什么规律进行分组?
- - 若两个不同的数字`x !== y`,说明 x 和 y 二进制中至少有一位不同,可以根据这个特性进行拆分
-- 声明 m 变量找出这所有异或结果 x 中最低位的 1
-
-```js
-/**
- * @param {number[]} nums
- * @return {number[]}
- */
-var singleNumbers = function (nums) {
- let x = nums.reduce((pre, cur) => (pre ^= cur), 0);
-
- // 获取x中最低位的1,用来将两个不同的数字进行分组
- let m = 1;
- while ((x & m) === 0) {
- m <<= 1;
- }
-
- let a = 0,
- b = 0;
- for (const item of nums) {
- if ((item & m) === 0) a ^= item;
- else b ^= item;
- }
-
- return [a, b];
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer56-II.\346\225\260\347\273\204\344\270\255\346\225\260\345\255\227\345\207\272\347\216\260\347\232\204\346\254\241\346\225\260II.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer56-II.\346\225\260\347\273\204\344\270\255\346\225\260\345\255\227\345\207\272\347\216\260\347\232\204\346\254\241\346\225\260II.md"
deleted file mode 100644
index 9ebb72c..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer56-II.\346\225\260\347\273\204\344\270\255\346\225\260\345\255\227\345\207\272\347\216\260\347\232\204\346\254\241\346\225\260II.md"
+++ /dev/null
@@ -1,26 +0,0 @@
-## [剑指 Offer 56 - II. 数组中数字出现的次数 II](https://leetcode.cn/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-ii-lcof/) medium
-
-时间复杂度 O(N)
-空间复杂度 O(1)
-
-- 思路
-- 使用 map 统计数字出现的次数
-- 然后找出,出现次数是 1 的数字返回
-
-```js
-/**
- * @param {number[]} nums
- * @return {number}
- */
-var singleNumber = function (nums) {
- const map = new Map();
- for (const num of nums) {
- map.set(num, map.has(num) ? map.get(num) + 1 : 1);
- }
- let res = 0;
- map.forEach((val, key) => {
- if (val === 1) return (res = key);
- });
- return res;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer57-II.\345\222\214\344\270\272s\347\232\204\350\277\236\347\273\255\346\255\243\346\225\260\345\272\217\345\210\227.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer57-II.\345\222\214\344\270\272s\347\232\204\350\277\236\347\273\255\346\255\243\346\225\260\345\272\217\345\210\227.md"
deleted file mode 100644
index 480f2fd..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer57-II.\345\222\214\344\270\272s\347\232\204\350\277\236\347\273\255\346\255\243\346\225\260\345\272\217\345\210\227.md"
+++ /dev/null
@@ -1,53 +0,0 @@
-## [剑指 Offer 57 - II. 和为 s 的连续正数序列](https://leetcode.cn/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/) easy
-
-时间复杂度 O(N) N 为 target/2(limitArray 的长度)
-空间复杂度 O(N) N 为 limitArray 的长度
-
-- 思路(滑动窗口)
-- 改题第一个难点是找出结果数组对应的范围
-- 由于数组是有序的,所以结果的临界点就是`target >> 1`
-- 然后将结果范围转化为对应的数组,方便查找(时间复杂度优化点)
-- 然后题目就变成了在对应的范围内找出连续的系列,就可以使用滑动窗口进行求解了
- - 声明前后指针(l,r)和 sum
- - r 每前进一步,就 sum+=num[r],l 也是如此
- - 共有三种状态
- - 1.`sum < target`,说明 sum 还不够,r 继续前进,扩大窗口
- - 2.`sum > target` 说明 sum 大了,sum-=num[l],l 前进一步,缩小窗口范围
- - 3.`sum == target`,说明找到了对应的序列[l,r],然后将这个序列记录到结果数组中,缩小窗口,继续寻找其他序列
-
-```js
-/**
- * @param {number} target
- * @return {number[][]}
- */
-var findContinuousSequence = function (target) {
- const res = [];
- // 若 target = 9
- // limitArray = [ 1, 2, 3, 4, 5 ]
- const limitArray = Array((target >> 1) + 1)
- .fill(0)
- .map((_, index) => index + 1);
- // 声明左右指针
- let l = (r = 0);
- let sum = 0;
- while (r <= limitArray.length) {
- if (sum < target) {
- sum += limitArray[r];
- r++;
- } else if (sum > target) {
- sum -= limitArray[l];
- l++;
- } else if (sum === target) {
- let record = [];
- for (let k = l; k < r; k++) {
- record.push(limitArray[k]);
- }
- res.push(record);
- sum -= limitArray[l];
- l++;
- }
- }
-
- return res;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer57.\345\222\214\344\270\272s\347\232\204\344\270\244\344\270\252\346\225\260\345\255\227.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer57.\345\222\214\344\270\272s\347\232\204\344\270\244\344\270\252\346\225\260\345\255\227.md"
deleted file mode 100644
index 0822c00..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer57.\345\222\214\344\270\272s\347\232\204\344\270\244\344\270\252\346\225\260\345\255\227.md"
+++ /dev/null
@@ -1,34 +0,0 @@
-## [剑指 Offer 57. 和为s的两个数字](https://leetcode.cn/problems/he-wei-sde-liang-ge-shu-zi-lcof/) easy
-
-时间复杂度O(N)
-空间复杂度O(1)
-
-- 思路
-- 因为数组是有序的,所以可以利用 sum的大小关系,去靠近target,类似于二分查找的思路
-- 不过这里是使用头尾双指针
-- 如果sum太大了,就right--
-- 如果sum小了,就left++
-- sun===target时,返回left和right位置上的值即可
-
-```js
-/**
- * @param {number[]} nums
- * @param {number} target
- * @return {number[]}
- */
-// 双指针
-var twoSum = function (nums, target) {
- let left = 0, right = nums.length - 1;
-
- while (left < right) {
- const sum = nums[left] + nums[right];
- if (sum === target) {
- return [nums[left], nums[right]];
- } else if (sum > target) {
- right--;
- } else if (sum < target) {
- left++;
- }
- }
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer58-I.\347\277\273\350\275\254\345\215\225\350\257\215\351\241\272\345\272\217.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer58-I.\347\277\273\350\275\254\345\215\225\350\257\215\351\241\272\345\272\217.md"
deleted file mode 100644
index 18eaf90..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer58-I.\347\277\273\350\275\254\345\215\225\350\257\215\351\241\272\345\272\217.md"
+++ /dev/null
@@ -1,19 +0,0 @@
-## [剑指 Offer 58 - I. 翻转单词顺序](https://leetcode.cn/problems/fan-zhuan-dan-ci-shun-xu-lcof/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(N)
-
-- 思路
-- 先将 单词 split(分割)成数组,然后对数组进行反转,在join就行
-- 还可以通过反转两次完成,一次对处理过空格的数组整体翻转,一次对单词进行单独翻转
-- 跟[151.反转字符串中的单词](/js-logs/string#151反转字符串中的单词)相同
-
-```js
-/**
- * @param {string} s
- * @return {string}
- */
-var reverseWords = function (s) {
- return s.trim().split(/\s+/).reverse().join(' ');
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer58-II.\345\267\246\346\227\213\350\275\254\345\255\227\347\254\246\344\270\262.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer58-II.\345\267\246\346\227\213\350\275\254\345\255\227\347\254\246\344\270\262.md"
deleted file mode 100644
index 67a3c3d..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer58-II.\345\267\246\346\227\213\350\275\254\345\255\227\347\254\246\344\270\262.md"
+++ /dev/null
@@ -1,15 +0,0 @@
-## [剑指 Offer 58 - II. 左旋转字符串](https://leetcode.cn/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/) easy
-
-- 若不能使用 substring 函数
-- 也可以将字符串转成数组操作,然后把被截取的字符串拼到数组后面
-
-```js
-/**
- * @param {string} s
- * @param {number} n
- * @return {string}
- */
-var reverseLeftWords = function (s, n) {
- return s.substring(n) + s.substring(0, n);
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer60.n\344\270\252\351\252\260\345\255\220\347\232\204\347\202\271\346\225\260.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer60.n\344\270\252\351\252\260\345\255\220\347\232\204\347\202\271\346\225\260.md"
deleted file mode 100644
index 8abccf7..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer60.n\344\270\252\351\252\260\345\255\220\347\232\204\347\202\271\346\225\260.md"
+++ /dev/null
@@ -1,40 +0,0 @@
-## [剑指 Offer 60. n 个骰子的点数](https://leetcode.cn/problems/nge-tou-zi-de-dian-shu-lcof/) medium
-
-- 首先,一个骰子能扔出的点数是 1~6,
-- 那么 n 个骰子扔出点数 point 的概率
-- 就可以通过 n - 1 个骰子扔出点数 point-1, point-2,... point-6 的概率分别乘以 1/6 再相加得到。
-
-```js
-/**
- * @param {number} n
- * @return {number[]}
- */
-var dicesProbability = function (n) {
- const min = n,
- max = n * 6;
- const memo = new Array(n + 1).fill().map((_) => new Array(max + 1).fill(0));
-
- // 用n个骰子,抛出point点数到概率
- const dp = (n, point) => {
- if (point <= 0) return 0;
- if (n === 1) {
- if (point > 6) return 0;
- return 1 / 6.0;
- }
- if (memo[n][point] !== 0) return memo[n][point];
-
- let procent = 0;
- for (let i = 1; i <= 6; i++) {
- procent += (dp(n - 1, point - i) * 1) / 6.0;
- }
- memo[n][point] = procent;
- return procent;
- };
-
- const res = new Array(max - min + 1);
- for (let i = 0; i < res.length; i++) {
- res[i] = dp(n, min + i);
- }
- return res;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer62.\345\234\206\345\234\210\344\270\255\346\234\200\345\220\216\345\211\251\344\270\213\347\232\204\346\225\260\345\255\227.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer62.\345\234\206\345\234\210\344\270\255\346\234\200\345\220\216\345\211\251\344\270\213\347\232\204\346\225\260\345\255\227.md"
deleted file mode 100644
index dcaf5d0..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer62.\345\234\206\345\234\210\344\270\255\346\234\200\345\220\216\345\211\251\344\270\213\347\232\204\346\225\260\345\255\227.md"
+++ /dev/null
@@ -1,46 +0,0 @@
-## [剑指 Offer 62. 圆圈中最后剩下的数字](https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) easy
-
-- 动态规划
-- [题解](https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/solution/jian-zhi-offer-62-yuan-quan-zhong-zui-ho-dcow/)
-- 推导结论:`f(n) = (f(n-1) + m) % n;`
-
-自底向上解法
-
-```js
-/**
- * @param {number} n
- * @param {number} m
- * @return {number}
- */
-// f(n) = (f(n-1) + m) % n;
-var lastRemaining = function (n, m) {
- let x = 0;
- for (let i = 2; i <= n; i++) {
- x = (x + m) % i;
- }
- return x;
-};
-```
-
-自顶向下解法
-
-```js
-/**
- * @param {number} n
- * @param {number} m
- * @return {number}
- */
-// f(n) = (f(n-1) + m) % n;
-var lastRemaining = function (n, m) {
- const memo = Array(n + 1).fill(-1);
- const f = (n) => {
- if (n === 1) return 0;
- if (memo[n] !== -1) return memo[n];
-
- memo[n] = (f(n - 1) + m) % n;
- return memo[n];
- };
-
- return f(n);
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer63.\350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer63.\350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md"
deleted file mode 100644
index b31e7a7..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer63.\350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md"
+++ /dev/null
@@ -1,73 +0,0 @@
-## [剑指 Offer 63. 股票的最大利润](https://leetcode.cn/problems/gu-piao-de-zui-da-li-run-lcof/) medium
-
-
-跟[121.买卖股票的最佳时机](/js-logs/dynamic-programming#121买卖股票的最佳时机)相同
-通用动态转移方程
-```js
-dp[i][k][0] = max(dp[i-1][k][0], dp[i-1][k][1] + prices[i])
- = max( 今天选择reset, 今天选择sell )
-dp[i][k][1] = max(dp[i-1][k][1], dp[i-1][k-1][0] - prices[i])
- = max( 今天选择reset, 今天选择buy )
-```
-因为k=1,所以可以看作
-```js
-dp[i][1][0] = max(dp[i-1][1][0], dp[i-1][1][1] + prices[i])
-dp[i][1][1] = max(dp[i-1][1][1], dp[i-1][0][0] - prices[i])
-```
-因为k为0时,说明不让交易,利润肯定是0,所以`dp[i-1][0][0]`是0
-
-其他情况k=1,不会变,可以省略,动态转移方程变换为:
-```js
-dp[i][0] = max(dp[i-1][0], dp[i-1][1] + prices[i])
-dp[i][1] = max(dp[i-1][1], 0 - prices[i])
-```
-
-base case
-```js
-dp[-1][...][0] = 0
-解释:因为 i 是从 0 开始的,所以 i = -1 意味着还没有开始,这时候的利润当然是 0
-
-dp[-1][...][1] = -infinity
-解释:还没开始的时候,是不可能持有股票的
-因为我们的算法要求一个最大值,所以初始值设为一个最小值,方便取最大值
-
-dp[...][0][0] = 0
-解释:因为 k 是从 1 开始的,所以 k = 0 意味着根本不允许交易,这时候利润当然是 0
-
-dp[...][0][1] = -infinity
-解释:不允许交易的情况下,是不可能持有股票的
-因为我们的算法要求一个最大值,所以初始值设为一个最小值,方便取最大值
-```
-
-```js
-/**
- * @param {number[]} prices
- * @return {number}
- */
-var maxProfit = function (prices) {
- const n = prices.length;
- if (n === 0) return 0;
- const dp = new Array(n).fill().map(_ => new Array(2).fill(0));
-
- for (let i = 0; i < n; i++) {
- // base case
- if (i - 1 === -1) {
- // [i-1] === -1 的时候越界
- // dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1] + prices[i]);
- // = max(dp[-1][0], dp[-1][1] + prices[i])
- // = max(0, -infinity + prices[i]) = 0
- dp[i][0] = 0;
-
- // dp[i][1] = Math.max(dp[i - 1][1], 0 - prices[i]);
- // = max(dp[-1][1], -prices[i])
- // = max(-infinity, -prices[i]) = -prices[i]
- dp[i][1] = -prices[i];
- continue;
- }
- dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1] + prices[i]);
- dp[i][1] = Math.max(dp[i - 1][1], 0 - prices[i]);
- }
-
- return dp[n - 1][0]; // 最后一天肯定售出的利润大
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer64.\346\261\2021+2+\342\200\246+n.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer64.\346\261\2021+2+\342\200\246+n.md"
deleted file mode 100644
index 5fdfca7..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer64.\346\261\2021+2+\342\200\246+n.md"
+++ /dev/null
@@ -1,21 +0,0 @@
-## [剑指 Offer 64. 求1+2+…+n](https://leetcode.cn/problems/qiu-12n-lcof/) medium
-
-时间复杂度O(n) 递归的次数
-空间复杂度O(n) 递归栈的深度
-
-- 思路
-- 使用&&的特性做为递归出口
-
-```js
-/**
- * @param {number} n
- * @return {number}
- */
-var sumNums = function (n) {
- // 使用了三元,不符合题目要求
- // return n === 0 ? 0 : n + sumNums(n - 1);
- // 使用&&的短路特性 修改递归出口
- n && (n = n + sumNums(n - 1));
- return n;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer65.\344\270\215\347\224\250\345\212\240\345\207\217\344\271\230\351\231\244\345\201\232\345\212\240\346\263\225.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer65.\344\270\215\347\224\250\345\212\240\345\207\217\344\271\230\351\231\244\345\201\232\345\212\240\346\263\225.md"
deleted file mode 100644
index 694a77d..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer65.\344\270\215\347\224\250\345\212\240\345\207\217\344\271\230\351\231\244\345\201\232\345\212\240\346\263\225.md"
+++ /dev/null
@@ -1,88 +0,0 @@
-## [剑指 Offer 65. 不用加减乘除做加法](https://leetcode.cn/problems/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof/) easy
-
-思路
-使用二进制表示十进制的加分运算过程
-
-```js
-22 + 89 = 111
-
- 百 十 个
- 2 2
- + 8 9
- ------
- 0 1 // 本位
- 1 1 // 进位
-```
-
-01 是计算后的本位,直接记录。
-11 是计算后的进位,需要:做 「进位逻辑」 后进入下轮计算。
-(进位逻辑:乘以进制数,也就是 11 \* 10)
-而这里没有下轮计算了,最终得到 111
-若这轮的进位不为 0,说明还需要进行下一轮运算
-
-```js
-// 最后结果
- 0 1
- + 1 1 0
- --------
- 1 1 1
-```
-
-同样的逻辑在 二进制 里应用:
-
-```js
-a ^ b; // 计算出2个加数二进制下每一位的本位
-a &
- (b(
- // 计算出2个加数二进制下每一位的进位
-
- a & b,
- ) <<
- 1); // 进位做进位逻辑,也就是 * 2
-```
-
-递归解法
-
-```js
-/**
- * @param {number} a
- * @param {number} b
- * @return {number}
- */
-var add = function (a, b) {
- if (b === 0) return a;
- // 若 a = 1001
- // 若 b = 0101
- // 1100 <- 本位
- // 0001 <- 进位
- // 0010 <- *2 后的进位
- // 然后将(本位和进位*2后的值相加,若还需要进位(进位不为0),则继续迭代下去)
-
- // 本位求和 => a^b => 1100
- const sum = a ^ b;
- // 先进位求和(a&b => 0001)
- // 然后 (<<1) => 相当于*2 =>(0001 => 0010)
- const carry = (a & b) << 1;
- // add(1100,0010)
- return add(sum, carry);
-};
-```
-
-迭代解法
-
-```js
-/**
- * @param {number} a
- * @param {number} b
- * @return {number}
- */
-var add = function (a, b) {
- while (b !== 0) {
- // 若进位还有,说明还需要计算
- const temp = a & b; // 计算进位
- a = a ^ b; // 本位
- b = temp << 1; // 「进位逻辑」*2
- }
- return a;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer66.\346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer66.\346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md"
deleted file mode 100644
index 9a25d74..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer66.\346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md"
+++ /dev/null
@@ -1,48 +0,0 @@
-## [剑指 Offer 66. 构建乘积数组](https://leetcode.cn/problems/gou-jian-cheng-ji-shu-zu-lcof/) medium
-
-时间复杂度 O(N)
-空间复杂度 O(N)
-
-- 思路(前缀和)
-- 分别构建从左到右,和从右到左的前缀积
-- 例如原数组是: `[1,2,3,4,5]`
-- 从左到右的前缀积 prefix[i]是 a[0...i]的元素积
- - prefix: `[ 1, 2, 6, 24, 120 ]`
-- 从右到左的前缀积,suffix[i]是 a[i...n-1]的元素积
- - suffix: `[ 120, 120, 60, 20, 5 ]`
-- 最后在 res 中,除了自己,将左侧和右侧的元素相乘
-- 跟[238.除自身以外数组的乘积](/js-logs/array#238除自身以外数组的乘积)相同
-
-```js
-/**
- * @param {number[]} a
- * @return {number[]}
- */
-var constructArr = function (a) {
- const n = a.length;
- if (n === 0) return [];
- // 假设 a => [1,2,3,4,5]
- // 从左到右的前缀积 prefix[i]是a[0...i]的元素积
- const prefix = Array(n); // => [ 1, 2, 6, 24, 120 ]
- prefix[0] = a[0];
- for (let i = 1; i < n; i++) {
- prefix[i] = prefix[i - 1] * a[i];
- }
-
- // 从右到左的前缀积,suffix[i]是a[i...n-1]的元素积
- const suffix = Array(n); // => [ 120, 120, 60, 20, 5 ]
- suffix[n - 1] = a[n - 1];
- for (let i = n - 2; i >= 0; i--) {
- suffix[i] = suffix[i + 1] * a[i];
- }
-
- const res = Array(n);
- res[0] = suffix[1];
- res[n - 1] = prefix[n - 2];
- for (let i = 1; i < n - 1; i++) {
- // 除了nums[i]自己,左侧和右侧的所有元素的积
- res[i] = prefix[i - 1] * suffix[i + 1];
- }
- return res;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer68-I.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer68-I.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md"
deleted file mode 100644
index 6585ed6..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer68-I.\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md"
+++ /dev/null
@@ -1,39 +0,0 @@
-## [剑指 Offer 68 - I. 二叉搜索树的最近公共祖先](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(N) 递归:函数调用堆栈
-
-- 思路
-- 运用二叉搜索树,`左小 右大`的特性
-- 如果 p,q 都小于 root,说明 lca 在左子树
-- 如果 p,q 都大于 root,说明 lca 在右子树
-- 如果 p <= root,q >= root,说明 root 就是 lca
-- 跟[235.二叉搜索树的最近公共祖先](/js-logs/binary-tree#235-二叉搜索树的最近公共祖先)相同
-
-```js
-/**
- * @param {TreeNode} root
- * @param {TreeNode} p
- * @param {TreeNode} q
- * @return {TreeNode}
- */
-var lowestCommonAncestor = function (root, p, q) {
- if (root === null) return null;
- if (p.val > q.val) {
- // 保证 p <= q
- return lowestCommonAncestor(root, q, p);
- }
- if (p.val <= root.val && root.val <= q.val) {
- // p <= root <= q
- // 说明p、q分布在root两侧,root就是最近的祖先
- return root;
- }
- if (root.val > q.val) {
- // 说明p、q都在root的左子树
- return lowestCommonAncestor(root.left, p, q);
- } else {
- // 说明p、q都在root的右子树
- return lowestCommonAncestor(root.right, p, q);
- }
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer68-II.\344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" "b/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer68-II.\344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md"
deleted file mode 100644
index 9776383..0000000
--- "a/example/\345\211\221\346\214\207Offer/\345\211\221\346\214\207Offer68-II.\344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md"
+++ /dev/null
@@ -1,45 +0,0 @@
-## [剑指 Offer 68 - II. 二叉树的最近公共祖先](https://leetcode.cn/problems/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof/) easy
-
-时间复杂度 O(N) N 为二叉树节点个数,最坏情况下, 要遍历所有节点
-空间复杂度 O(N) 最坏情况下递归深度为 N
-
-- 思路
-- 首先明确 base,当递归到 底部节点,返回`null`
-- 定义递归函数,返回一个树中 找到的 `p或q节点` (在前序位置找)
-- 分情况讨论
-- 三种情况(在后序位置判断)
- - 情况 1: p 和 q 分别在不同的子树中,left 和 right 都有值,说明 root 就是 ans
- - 情况 2:p 和 q 在树中没有被找到,说明没有公共祖先,返回 null
- - 情况 3:p 和 q 在同一颗树下,那么这个时候 left 和 right 肯定有一侧是找不到,返回 null 的,那么返回另一侧最先找到的节点即可
- - 情况 2 也可以省略不写,这种情况包含在情况 3 的三元判断中了
-
-跟[236.二叉树的最近公共祖先](/js-logs/binary-tree#236-二叉树的最近公共祖先)相同
-
-```js
-/**
- * @param {TreeNode} root
- * @param {TreeNode} p
- * @param {TreeNode} q
- * @return {TreeNode}
- */
-var lowestCommonAncestor = function (root, p, q) {
- // base case
- if (root === null) return null;
- // 前序遍历位置
- // 在向下递归的过程中(分叉),若发现p或q,那么就返回找到的节点
- if (root === q || root === p) return root;
- const left = lowestCommonAncestor(root.left, p, q);
- const right = lowestCommonAncestor(root.right, p, q);
-
- // 后序遍历
- // 1.发现left和right都有值,那么说明root是ans
- if (left !== null && right !== null) return root;
-
- // 2.发现left和right都没有值,那么说明没有ans,返回null
- // 包含在了最下面的元判断中,可以省略
- // if (left === null && right === null) return null;
-
- // 3.若只有一边有值,说明在同一边,返回另一边最近找到的作为ans
- return left === null ? right : left;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\351\235\242\350\257\225\351\242\23013.\346\234\272\345\231\250\344\272\272\347\232\204\350\277\220\345\212\250\350\214\203\345\233\264.md" "b/example/\345\211\221\346\214\207Offer/\351\235\242\350\257\225\351\242\23013.\346\234\272\345\231\250\344\272\272\347\232\204\350\277\220\345\212\250\350\214\203\345\233\264.md"
deleted file mode 100644
index c825cab..0000000
--- "a/example/\345\211\221\346\214\207Offer/\351\235\242\350\257\225\351\242\23013.\346\234\272\345\231\250\344\272\272\347\232\204\350\277\220\345\212\250\350\214\203\345\233\264.md"
+++ /dev/null
@@ -1,40 +0,0 @@
-## [面试题13. 机器人的运动范围](https://leetcode.cn/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/) medium
-
-时间复杂度O(mn)
-空间复杂地O(mn)
-
-- 思路
-- 机器人其实只能向右或向下走
-- 深度优先遍历
-- 使用visited进行剪枝
-- 进行越界判断和bitSum判断,返回0
-- 然后当前节点+向下和向右的节点:`1+[i+1,j]+[i,j+1]`即可
-
-```js
-/**
- * @param {number} m
- * @param {number} n
- * @param {number} k
- * @return {number}
- */
-var movingCount = function (m, n, k) {
- const visited = new Array(m).fill().map(_ => new Array(n).fill(false));
-
- const bitSum = (x) => {
- let sum = 0;
- while (x > 0) {
- sum += x % 10;
- x = Math.floor(x / 10);
- }
- return sum;
- }
-
- const dfs = (i, j) => {
- if (i >= m || j >= n || visited[i][j] || bitSum(i) + bitSum(j) > k) return 0;
- visited[i][j] = true;
- return 1 + dfs(i + 1, j) + dfs(i, j + 1);
- }
-
- return dfs(0, 0);
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\351\235\242\350\257\225\351\242\23045.\346\212\212\346\225\260\347\273\204\346\216\222\346\210\220\346\234\200\345\260\217\347\232\204\346\225\260.md" "b/example/\345\211\221\346\214\207Offer/\351\235\242\350\257\225\351\242\23045.\346\212\212\346\225\260\347\273\204\346\216\222\346\210\220\346\234\200\345\260\217\347\232\204\346\225\260.md"
deleted file mode 100644
index 6375c32..0000000
--- "a/example/\345\211\221\346\214\207Offer/\351\235\242\350\257\225\351\242\23045.\346\212\212\346\225\260\347\273\204\346\216\222\346\210\220\346\234\200\345\260\217\347\232\204\346\225\260.md"
+++ /dev/null
@@ -1,61 +0,0 @@
-## [面试题45. 把数组排成最小的数](https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) medium
-
-时间复杂度 O(N*logN) 最差为N^2
-空间复杂度 O(N)
-
-```js
-/**
- * @param {number[]} nums
- * @return {string}
- */
-var minNumber = function (nums) {
- // a+b的字符串组合,谁更小,谁排前面
- // 最后join返回字符串
- return nums.sort((a, b) => Number(a + '' + b) - Number(b + '' + a)).join('')
-};
-```
-
-- 快速排序
-- x+y > y+x ,说明x大于y,y排前面
-- x+y < y+x ,说明x小于y,x排前面
-
-```js
-/**
- * @param {number[]} nums
- * @return {string}
- */
-var minNumber = function (nums) {
- nums = nums.map(item => item.toString());
- quickSort(nums, 0, nums.length - 1);
- return nums.join('');
-};
-
-function quickSort(nums, l, r) {
- if (l >= r) return;
- // 分割数组
- const p = partition(nums, l, r);
- quickSort(nums, l, p - 1);
- quickSort(nums, p + 1, r);
-}
-
-function partition(nums, l, r) {
- const p = nums[l];
- let i = l, j = r;
- while (i < j) {
- // x+y > y+x ,说明x大于y, x排后面, j--;继续查找不满足条件的(需要交换的)
- while (nums[j] + p >= p + nums[j] && i < j) j--;
- // x+y < y+x ,说明x小于y, x排前面, i++;继续查找不满足条件的(需要交换的)
- while (nums[i] + p <= p + nums[i] && i < j) i++;
- swap(nums, i, j);
- }
- // while结束时,i===j
- swap(nums, l, j);
- return j;
-}
-
-function swap(nums, l, r) {
- const temp = nums[l];
- nums[l] = nums[r];
- nums[r] = temp;
-}
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\351\235\242\350\257\225\351\242\23061.\346\211\221\345\205\213\347\211\214\344\270\255\347\232\204\351\241\272\345\255\220.md" "b/example/\345\211\221\346\214\207Offer/\351\235\242\350\257\225\351\242\23061.\346\211\221\345\205\213\347\211\214\344\270\255\347\232\204\351\241\272\345\255\220.md"
deleted file mode 100644
index b2acc46..0000000
--- "a/example/\345\211\221\346\214\207Offer/\351\235\242\350\257\225\351\242\23061.\346\211\221\345\205\213\347\211\214\344\270\255\347\232\204\351\241\272\345\255\220.md"
+++ /dev/null
@@ -1,32 +0,0 @@
-## [面试题61. 扑克牌中的顺子](https://leetcode.cn/problems/bu-ke-pai-zhong-de-shun-zi-lcof/) easy
-
-时间复杂度O(N)
-空间复杂度O(1)
-
-- 思路
-- 首先不能出现除0外 重复的元素,若出现直接返回false
-- 然后可以先对数组排序,排序之后找出 最小、最大的值
-- 两者之差小于5说明是顺子
-
-```js
-/**
- * @param {number[]} nums
- * @return {boolean}
- */
-var isStraight = function (nums) {
- let joker = 0;
- nums.sort((a, b) => a - b);
- for (let i = 0; i < 4; i++) {
- if (nums[i] === 0) {
- joker++; // 大小王数量
- } else if (nums[i] === nums[i + 1]) {
- // 判重
- return false;
- }
- }
- // [0,0,1,2,5]
- // 5-1<5
- // 最大牌 - 最小牌 < 5 则可构成顺子
- return nums[4] - nums[joker] < 5;
-};
-```
diff --git "a/example/\345\211\221\346\214\207Offer/\351\235\242\350\257\225\351\242\23067.\346\212\212\345\255\227\347\254\246\344\270\262\350\275\254\346\215\242\346\210\220\346\225\264\346\225\260.md" "b/example/\345\211\221\346\214\207Offer/\351\235\242\350\257\225\351\242\23067.\346\212\212\345\255\227\347\254\246\344\270\262\350\275\254\346\215\242\346\210\220\346\225\264\346\225\260.md"
deleted file mode 100644
index e63e73d..0000000
--- "a/example/\345\211\221\346\214\207Offer/\351\235\242\350\257\225\351\242\23067.\346\212\212\345\255\227\347\254\246\344\270\262\350\275\254\346\215\242\346\210\220\346\225\264\346\225\260.md"
+++ /dev/null
@@ -1,55 +0,0 @@
-## [面试题 67. 把字符串转换成整数](https://leetcode.cn/problems/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof/) medium
-
-状态机
-跟[8.字符串转换整数-atoi](/js-logs/string#8字符串转换整数-atoi)相同
-
-```js
-/**
- * @param {string} s
- * @return {number}
- */
-var strToInt = function (s) {
- if (s.length === 0) return 0;
- const atoi = new Atoi();
- for (const c of s) {
- atoi.get(c);
- }
- let res = atoi.flag ? Number(atoi.strNum) : -Number(atoi.strNum);
- // 溢出判断
- if (res >= Math.pow(2, 31)) return Math.pow(2, 31) - 1;
- if (res < -Math.pow(2, 31)) return -Math.pow(2, 31);
- return res;
-};
-
-class Atoi {
- constructor() {
- this.flag = 1; // 1表示正号
- this.strNum = '';
- this.state = 'start';
- // " " "+/-" "number" "other"
- this.map = new Map([
- ['start', ['start', 'single', 'is_number', 'end']],
- ['single', ['end', 'end', 'is_number', 'end']],
- ['is_number', ['end', 'end', 'is_number', 'end']],
- ['end', ['end', 'end', 'end', 'end']],
- ]);
- }
-
- get_state(c) {
- if (c === ' ') return 0;
- if (c === '+' || c === '-') return 1;
- if (0 <= Number(c) || Number(c) <= 9) return 2;
- return 3;
- }
-
- get(c) {
- this.state = this.map.get(this.state)[this.get_state(c)];
- if (this.state === 'single') {
- this.flag = c === '-' ? 0 : 1;
- }
- if (this.state === 'is_number') {
- this.strNum += c;
- }
- }
-}
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/10.\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\345\214\271\351\205\215.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/10.\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\345\214\271\351\205\215.md"
deleted file mode 100644
index 25b158d..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/10.\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\345\214\271\351\205\215.md"
+++ /dev/null
@@ -1,73 +0,0 @@
-## [10.正则表达式匹配](https://leetcode.cn/problems/regular-expression-matching/) hard
-
-时间复杂度 O(MN)
-空间复杂度 O(MN)
-
-```js
-/**
- * @param {string} s
- * @param {string} p
- * @return {boolean}
- */
-var isMatch = function (s, p) {
- const m = s.length,
- n = p.length;
- const memo = new Map(); // 备忘录
-
- // 含义:计算 p[j..] 是否匹配 s[i..]
- const dp = (s, i, p, j) => {
- // base case
- // 1.当j走到尾部的时候,判断i是否也走到头
- if (j === n) return i === m;
-
- // 2.当i走到头
- if (i === m) {
- // 2.1 如果能匹配上 x* 肯定是成对出现的,为下一步进行筛选
- if ((n - j) % 2 !== 0) return false;
- // 2.2 检查是否为 x*y*z* 这种形式
- for (; j + 1 < n; j += 2) {
- if (p[j + 1] !== "*") {
- return false;
- }
- }
- // 2.3 上面两种情况都不满足,那么说明剩下的p可以被匹配到
- return true;
- }
-
- // 设置备忘录,消除重叠子问题
- const key = i + " " + j;
- if (memo.has(key)) return memo.get(key);
-
- let res = false;
-
- // 1.s[i] === p[j],匹配「.」的时候
- if (s[i] === p[j] || p[j] === ".") {
- // 1.1 匹配上「*」
- if (j + 1 < n && p[j + 1] === "*") {
- // 「.*」 的情况下,「*」可能会匹配0次到多次
- res =
- dp(s, i, p, j + 2) || // 0次
- dp(s, i + 1, p, j); // 多次
- } else {
- // 「.」的情况下就 常规匹配1次
- res = dp(s, i + 1, p, j + 1);
- }
- } else {
- // 2.s[i] !== p[j],不匹配「.」的时候
- if (j + 1 < n && p[j + 1] === "*") {
- // 2.1「*」的情况下,匹配0次,然后看下一个字符是否匹配
- // eg: s = "aa", p = "b*aa"
- res = dp(s, i, p, j + 2);
- } else {
- // s[i] !== p[j] 没有「.」 没有「*」 匹配就无法进行下去了
- res = false;
- }
- }
-
- memo.set(key, res);
- return res;
- };
-
- return dp(s, 0, p, 0);
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/1014.\346\234\200\344\275\263\350\247\202\345\205\211\347\273\204\345\220\210.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/1014.\346\234\200\344\275\263\350\247\202\345\205\211\347\273\204\345\220\210.md"
deleted file mode 100644
index 487fd33..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/1014.\346\234\200\344\275\263\350\247\202\345\205\211\347\273\204\345\220\210.md"
+++ /dev/null
@@ -1,22 +0,0 @@
-## [1014.最佳观光组合](https://leetcode.cn/problems/best-sightseeing-pair/) medium
-
-- `values[i] + values[j] + i - j`可以转换出
-- `(values[i] + i) + (values[j] - j)`
-- `values[j] - j`是不变的,所以求出`values[i] + i`的最大值即可
-
-```js
-/**
- * @param {number[]} values
- * @return {number}
- */
-var maxScoreSightseeingPair = function (values) {
- let maxValueI = values[0] + 0;
- let res = 0;
- for (let i = 1; i < values.length; i++) {
- const valueJ = values[i] - i;
- res = Math.max(res, maxValueI + valueJ);
- maxValueI = Math.max(maxValueI, values[i] + i);
- }
- return res;
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/1137.\347\254\254-n-\344\270\252\346\263\260\346\263\242\351\202\243\345\245\221\346\225\260.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/1137.\347\254\254-n-\344\270\252\346\263\260\346\263\242\351\202\243\345\245\221\346\225\260.md"
deleted file mode 100644
index 34847d9..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/1137.\347\254\254-n-\344\270\252\346\263\260\346\263\242\351\202\243\345\245\221\346\225\260.md"
+++ /dev/null
@@ -1,19 +0,0 @@
-## [1137.第-n-个泰波那契数](https://leetcode.cn/problems/n-th-tribonacci-number/) hard
-
-
-```js
-/**
- * @param {number} n
- * @return {number}
- */
-var tribonacci = function (n) {
- const dp = new Array(n + 1).fill(0);
- dp[0] = 0;
- dp[1] = 1;
- dp[2] = 1;
- for (let i = 3; i <= n; i++) {
- dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3];
- }
- return dp[n];
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/115.\344\270\215\345\220\214\347\232\204\345\255\220\345\272\217\345\210\227.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/115.\344\270\215\345\220\214\347\232\204\345\255\220\345\272\217\345\210\227.md"
deleted file mode 100644
index e51d9f7..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/115.\344\270\215\345\220\214\347\232\204\345\255\220\345\272\217\345\210\227.md"
+++ /dev/null
@@ -1,95 +0,0 @@
-## [115.不同的子序列](https://leetcode.cn/problems/distinct-subsequences/) hard
-
-- 以s的视角
-- 我们的原问题是求 s[0..] 中不同子序列 t[0..],可以先看看 s[0] 是否能匹配 t[0],如果不可以,那没得说,原问题就转化为让 s[1..] 去匹配 t[0..];
-- 但如果 s[0] 可以匹配 t[0],那么又有两种情况,这两种情况是累加的关系:
- - 1、让 s[0] 匹配 t[0],那么原问题转化为让 s[1..] 去匹配 t[1..]。
- - 2、不让 s[0] 匹配 t[0],那么原问题转化为让 s[1..] 去匹配 t[0..]。
-- 比如 s = "aab", t = "ab",就有两种匹配方式:a_b 和 _ab。
-
-按照这个思路,状态转移方程就是:
-
-```
-// 站在 s 视角的状态转移方程
-int dp(s, i, t, j) {
- if (s[i] == t[j]) {
- return dp(s, i+1, t, j+1) + dp(s, i+1, t, j);
- } else {
- return dp(s, i+1, t, j);
- }
-}
-```
-
-```js
-// 以s的视角出发
-// 时间复杂度O(MN)
-var numDistinct = function (s, t) {
- const m = s.length,
- n = t.length;
-
- const memo = new Array(m + 1).fill(-1).map((_) => new Array(n + 1).fill(-1));
- // 定义dp函数
- // 返回s[i,...]中 子序列t[j,...]的数量
- const dp = (i, j) => {
- // base case
- if (j === n) return 1; // 匹配子序列
- if (n - j > m - i) return 0; // t剩余的长度不应该比s的还长
-
- if (memo[i][j] !== -1) return memo[i][j];
-
- let res = 0;
- if (s[i] === t[j]) {
- // aab,ab => a_b, _ab
- res += dp(i + 1, j + 1) + dp(i + 1, j);
- } else {
- // 如果s[i]!==t[j],i继续往后走,跟t[j]进行尝试匹配
- res += dp(i + 1, j);
- }
- memo[i][j] = res;
- return res;
- };
-
- return dp(0, 0);
-};
-
-```
-
-- 以t的视角
-- 我们的原问题是求 s[0..] 中不同子序列 t[0..],可以先看 t[0] 在 s 中的什么位置,假设 s[2], s[6] 是字符 t[0]
-- 那么原问题转化成了在 s[2..] 和 s[6..] 中寻找不同子序列 t[1..]
-
-```js
-/**
- * @param {string} s
- * @param {string} t
- * @return {number}
- */
-var numDistinct = function (s, t) {
- const memo = new Array(s.length + 1)
- .fill(-1)
- .map((_) => new Array(t.length + 1).fill(-1));
- // 定义函数dp
- // 返回 s[i,...] 中包含t[j,...]的数量
- const dp = (i, j) => {
- if (j === t.length) {
- // 子序列全部匹配
- return 1;
- }
- if (i === s.length) return 0;
- if (memo[i][j] !== -1) return memo[i][j];
-
- let res = 0;
- for (let k = i; k < s.length; k++) {
- // 当s[k] === t[j]的开头相同
- if (s[k] === t[j]) {
- // 寻找s[k+1,...] 中包含 t[j+1,...]的数量
- res += dp(k + 1, j + 1);
- }
- }
- memo[i][j] === res;
- return res;
- };
-
- return dp(0, 0);
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/118.\346\235\250\350\276\211\344\270\211\350\247\222.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/118.\346\235\250\350\276\211\344\270\211\350\247\222.md"
deleted file mode 100644
index 74074c1..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/118.\346\235\250\350\276\211\344\270\211\350\247\222.md"
+++ /dev/null
@@ -1,57 +0,0 @@
-## [118.杨辉三角](https://leetcode.cn/problems/pascals-triangle/) easy
-
-
-```js
-/**
- * @param {number} numRows
- * @return {number[][]}
- */
-// 递归
-var generate = function (numRows) {
- if (numRows === 1) {
- let res = [];
- const firstRow = [1];
- res.push(firstRow);
- return res;
- }
-
- // 先递归生成 numRows - 1
- const triangle = generate(numRows - 1);
-
- const prevRow = triangle[triangle.length - 1];
- const newRow = [1];
- for (let i = 0; i < prevRow.length - 1; i++) {
- newRow.push(prevRow[i] + prevRow[i + 1]);
- }
- newRow.push(1);
-
- triangle.push(newRow);
- return triangle;
-};
-```
-
-迭代方式
-
-```js
-var generate = function (numRows) {
- let res = [];
-
- // 先 生成第一层
- let firstRow = [1];
- res.push(firstRow);
-
- // 开始一层一层的生成
- for (let i = 2; i <= numRows; i++) {
- const prevRow = res[res.length - 1];
- const curRow = [1];
- for (let i = 0; i < prevRow.length - 1; i++) {
- curRow.push(prevRow[i] + prevRow[i + 1]);
- }
- curRow.push(1);
-
- res.push(curRow);
- }
-
- return res;
-}
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/119.\346\235\250\350\276\211\344\270\211\350\247\222-ii.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/119.\346\235\250\350\276\211\344\270\211\350\247\222-ii.md"
deleted file mode 100644
index c7c058a..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/119.\346\235\250\350\276\211\344\270\211\350\247\222-ii.md"
+++ /dev/null
@@ -1,57 +0,0 @@
-## [119.杨辉三角-ii](https://leetcode.cn/problems/pascals-triangle-ii/) easy
-
-
-```js
-/**
- * @param {number} rowIndex
- * @return {number[]}
- */
-// 动态规划(递归)
-var getRow = function (rowIndex) {
- // base case
- // 第0行是[1];
- if (rowIndex === 0) return [1];
-
- // 获取上一行的数据
- const prevRow = getRow(rowIndex - 1);
-
- // 根据上一行数据,构造该行数据
- const newRow = [1];
- for (let i = 0; i < prevRow.length - 1; i++) {
- newRow.push(prevRow[i] + prevRow[i + 1]);
- }
- newRow.push(1);
-
- return newRow;
-};
-```
-
-```js
-// 先求出所有的结果,然后返回
-var getRow = function (rowIndex) {
- const res = generate(rowIndex + 1);
- return res[res.length - 1];
-};
-
-var generate = function (numRows) {
- let res = [];
-
- // 先 生成第一层
- let firstRow = [1];
- res.push(firstRow);
-
- // 开始一层一层的生成
- for (let i = 2; i <= numRows; i++) {
- const prevRow = res[res.length - 1];
- const curRow = [1];
- for (let i = 0; i < prevRow.length - 1; i++) {
- curRow.push(prevRow[i] + prevRow[i + 1]);
- }
- curRow.push(1);
-
- res.push(curRow);
- }
-
- return res;
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/120.\344\270\211\350\247\222\345\275\242\346\234\200\345\260\217\350\267\257\345\276\204\345\222\214.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/120.\344\270\211\350\247\222\345\275\242\346\234\200\345\260\217\350\267\257\345\276\204\345\222\214.md"
deleted file mode 100644
index f66f200..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/120.\344\270\211\350\247\222\345\275\242\346\234\200\345\260\217\350\267\257\345\276\204\345\222\214.md"
+++ /dev/null
@@ -1,29 +0,0 @@
-## [120.三角形最小路径和](https://leetcode.cn/problems/triangle/) medium
-
-
-```js
-/**
- * @param {number[][]} triangle
- * @return {number}
- */
-var minimumTotal = function (triangle) {
- const n = triangle.length;
- // 定义dp[i][j]表示从triangle [0][0]到[i][j]的路径和
- const dp = new Array(n).fill().map(_ => new Array(n).fill(Infinity));
- //base case
- dp[0][0] = triangle[0][0];
-
- for (let i = 1; i < n; i++) {
- for (let j = 0; j < triangle[i].length; j++) {
- if (j === 0) {
- dp[i][j] = triangle[i][j] + dp[i - 1][j];
- } else {
- dp[i][j] = triangle[i][j] + Math.min(dp[i - 1][j], dp[i - 1][j - 1]);
- }
- }
- }
-
- const lastSumArr = dp[n - 1];
- return Math.min.apply(null, lastSumArr);
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/1277.\347\273\237\350\256\241\345\205\250\344\270\272-1-\347\232\204\346\255\243\346\226\271\345\275\242\345\255\220\347\237\251\351\230\265.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/1277.\347\273\237\350\256\241\345\205\250\344\270\272-1-\347\232\204\346\255\243\346\226\271\345\275\242\345\255\220\347\237\251\351\230\265.md"
deleted file mode 100644
index b8c6b49..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/1277.\347\273\237\350\256\241\345\205\250\344\270\272-1-\347\232\204\346\255\243\346\226\271\345\275\242\345\255\220\347\237\251\351\230\265.md"
+++ /dev/null
@@ -1,38 +0,0 @@
-## [1277.统计全为-1-的正方形子矩阵](https://leetcode.cn/problems/count-square-submatrices-with-all-ones/) medium
-
-类似 [221. 最大正方形](https://leetcode.cn/problems/maximal-square/)
-
-
-
-
dp数组图
-
-
-```js
-/**
- * @param {number[][]} matrix
- * @return {number}
- */
-var countSquares = function (matrix) {
- let count = 0;
- const m = matrix.length,
- n = matrix[0].length;
- // 我们用 f[i][j] 表示以(i, j) 为右下角的正方形的最大边长,
- // 除此定义之外,f[i][j] = x 也表示以(i, j) 为右下角的正方形的数目为 x(即边长为 1, 2, ..., x 的正方形各一个)。
- // 在计算出所有的 f[i][j] 后,我们将它们进行累加,就可以得到矩阵中正方形的数目
- const dp = new Array(m).fill(0).map((_) => new Array(n).fill(0));
-
- for (let i = 0; i < m; i++) {
- for (let j = 0; j < n; j++) {
- if (i === 0 || j === 0) {
- dp[i][j] = matrix[i][j];
- } else if (matrix[i][j] === 0) {
- dp[i][j] = 0;
- } else {
- dp[i][j] = Math.min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]) + 1;
- }
- count += dp[i][j];
- }
- }
- return count;
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/139.\345\215\225\350\257\215\346\213\206\345\210\206.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/139.\345\215\225\350\257\215\346\213\206\345\210\206.md"
deleted file mode 100644
index 3ddcf2b..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/139.\345\215\225\350\257\215\346\213\206\345\210\206.md"
+++ /dev/null
@@ -1,41 +0,0 @@
-## [139.单词拆分](https://leetcode.cn/problems/word-break/) medium
-
-
-```js
-/**
- * @param {string} s
- * @param {string[]} wordDict
- * @return {boolean}
- */
-var wordBreak = function (s, wordDict) {
- const memo = new Array(s.length + 1).fill(-1);
- // 定义dp函数
- // 返回s[i,...]能否用wordDict拼成
- const dp = (i) => {
- // base case
- if (i === s.length) return true;
-
- if (memo[i] !== -1) return memo[i];
-
- for (const word of wordDict) {
- const len = word.length;
- if (i + len > s.length) continue; // 越界
-
- const subStr = s.substring(i, i + len);
- if (subStr !== word) continue; // 开头不相等直接跳过
- // 如果dp[i,...]可以被拼出
- // 判断 dp[i+len,...]能否被拼出
- if (dp(i + len)) {
- memo[i] = true;
- return true;
- }
- }
-
- // s[i,...]不能被拼出
- memo[i] = false;
- return false;
- };
-
- return dp(0);
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/152.\344\271\230\347\247\257\346\234\200\345\244\247\345\255\220\346\225\260\347\273\204.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/152.\344\271\230\347\247\257\346\234\200\345\244\247\345\255\220\346\225\260\347\273\204.md"
deleted file mode 100644
index cb05422..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/152.\344\271\230\347\247\257\346\234\200\345\244\247\345\255\220\346\225\260\347\273\204.md"
+++ /dev/null
@@ -1,30 +0,0 @@
-## [152.乘积最大子数组](https://leetcode.cn/problems/maximum-product-subarray/) medium
-
-
-```js
-/**
- * @param {number[]} nums
- * @return {number}
- */
-var maxProduct = function (nums) {
- const n = nums.length;
- if (n === 1) return nums[0];
- let max = 1; // 维护i位置的最大值
- let min = 1; // 维护i位置的最小值
- let res = -Infinity;
-
- for (const num of nums) {
- if (num < 0) {
- // 当num为负数
- // 最大值和最小值交换
- let temp = min;
- min = max;
- max = temp;
- }
- max = Math.max(max * num, num);
- min = Math.min(min * num, num);
- res = Math.max(res, max);
- }
- return res;
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/1567.\344\271\230\347\247\257\344\270\272\346\255\243\346\225\260\347\232\204\346\234\200\351\225\277\345\255\220\346\225\260\347\273\204\351\225\277\345\272\246.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/1567.\344\271\230\347\247\257\344\270\272\346\255\243\346\225\260\347\232\204\346\234\200\351\225\277\345\255\220\346\225\260\347\273\204\351\225\277\345\272\246.md"
deleted file mode 100644
index 276469f..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/1567.\344\271\230\347\247\257\344\270\272\346\255\243\346\225\260\347\232\204\346\234\200\351\225\277\345\255\220\346\225\260\347\273\204\351\225\277\345\272\246.md"
+++ /dev/null
@@ -1,31 +0,0 @@
-## [1567.乘积为正数的最长子数组长度](https://leetcode.cn/problems/maximum-length-of-subarray-with-positive-product/) medium
-
-跟152.乘积最大子数组 相似
-
-```js
-/**
- * @param {number[]} nums
- * @return {number}
- */
-var getMaxLen = function (nums) {
- let maxLength = 0; // 正数的长度
- let minLength = 0; // 负数的长度
- let res = 0;
- for (const num of nums) {
- if (num === 0) {
- // 因为题目要求连续,所以当num为0,maxLength,minLength都为0
- maxLength = minLength = 0;
- } else if (num > 0) {
- // 当 num为正数时
- maxLength = maxLength + 1;
- minLength = minLength === 0 ? 0 : minLength + 1; //若minLength的长度之前就是0,那么还继续为0,否则+1
- } else if (num < 0) {
- let temp = maxLength; // 保留之前的max,因为后面要多max赋新值
- maxLength = minLength === 0 ? 0 : minLength + 1;
- minLength = temp + 1;
- }
- res = Math.max(res, maxLength);
- }
- return res;
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/174.\345\234\260\344\270\213\345\237\216\346\270\270\346\210\217.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/174.\345\234\260\344\270\213\345\237\216\346\270\270\346\210\217.md"
deleted file mode 100644
index e5998ce..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/174.\345\234\260\344\270\213\345\237\216\346\270\270\346\210\217.md"
+++ /dev/null
@@ -1,36 +0,0 @@
-## [174.地下城游戏](https://leetcode.cn/problems/dungeon-game/) hard
-
-
-```js
-/**
- * @param {number[][]} dungeon
- * @return {number}
- */
-// 动态转移: res = min(dp(i+1,j), dp(i,j+1)) - nums[i][j];
-var calculateMinimumHP = function (dungeon) {
- let m = dungeon.length,
- n = dungeon[0].length;
- let memo = Array.from({ length: m }).map((_) =>
- Array.from({ length: n }).fill(-1)
- );
-
- // 表示从nums[i][j] 到达右下角至少需要的血量
- const dp = (nums, i, j) => {
- // base case
- // 当i,j本身就是右下角
- if (i === m - 1 && j === n - 1) {
- return nums[i][j] >= 0 ? 1 : -nums[i][j] + 1;
- }
- // 越界情况判断
- if (i === m || j === n) return Infinity;
-
- if (memo[i][j] !== -1) return memo[i][j];
- let res = Math.min(dp(nums, i + 1, j), dp(nums, i, j + 1)) - nums[i][j];
- memo[i][j] = res > 0 ? res : 1;
- return memo[i][j];
- };
-
- // 那么我们所求的就是从nums[0][0]到达右下角需要的血量
- return dp(dungeon, 0, 0);
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/198.\346\211\223\345\256\266\345\212\253\350\210\215.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/198.\346\211\223\345\256\266\345\212\253\350\210\215.md"
deleted file mode 100644
index 6a05a04..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/198.\346\211\223\345\256\266\345\212\253\350\210\215.md"
+++ /dev/null
@@ -1,63 +0,0 @@
-## [198.打家劫舍](https://leetcode.cn/problems/house-robber/) medium
-
-时间复杂度 O(N)
-空间复杂度 O(1)
-
-- 思路
-- 动态规划,一般用来解最多,最大等最值问题,且拥有重叠子问题
-- 重叠子问题:能够偷去的最大金额,其实是拿i-2的时候已经偷取的最大金额加上当前金额的和 与 i-1的时候偷取的最大金额 之间两者的最大值,就是当前i上偷取的最大金额
-- 动态转移方程: F(n) = Max(F(n-2) + 当前位置的金额 , F(n-1) )
-- 边界情况:nums为空的时候,返回0,nums为1的时候返回nums[i-1]
-
-
-```js
-/**
- * @param {number[]} nums
- * @return {number}
- */
-// 自底向上解法
-var rob = function (nums) {
- const n = nums.length;
- // 定义dp数组,表示[0...i]的最高金额
- const dp = new Array(n + 1).fill(0);
- // base case
- dp[0] = 0; // 0的位置还没出发
- dp[1] = nums[0]; // 1号位置的最高金额
-
- for (let i = 2; i <= n; i++) {
- dp[i] = Math.max(
- dp[i - 1], // 不抢
- dp[i - 2] + nums[i - 1] // 抢
- );
- }
-
- return dp[n];
-};
-
-```
-
-自顶向下解法
-
-```js
-var rob = function (nums) {
- const n = nums.length;
- const memo = new Array(n + 1).fill(-1);
-
- // 定义dp(i)
- // 返回从0开始,经过i时的最高金额
- const dp = (i) => {
- // base case
- if (i <= 0) return 0;
- if (i === 1) return nums[0];
- if (memo[i] !== -1) return memo[i];
-
- memo[i] = Math.max(
- dp(i - 1), //不抢
- dp(i - 2) + nums[i - 1] // 抢
- );
- return memo[i];
- };
-
- return dp(n);
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/213.\346\211\223\345\256\266\345\212\253\350\210\215-ii.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/213.\346\211\223\345\256\266\345\212\253\350\210\215-ii.md"
deleted file mode 100644
index 0483aba..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/213.\346\211\223\345\256\266\345\212\253\350\210\215-ii.md"
+++ /dev/null
@@ -1,38 +0,0 @@
-## [213.打家劫舍-ii](https://leetcode.cn/problems/house-robber-ii/) medium
-
-相对于198.打家劫舍,多了三种情况
-- 1.两端都不抢
-- 2.抢头不抢尾
-- 3.抢尾不抢头
-在这三种情况下取最大金额,因为情况1相对于,剩下两种情况肯定更小,所以比较后两种情况就行
-
-```js
-/**
- * @param {number[]} nums
- * @return {number}
- */
-var rob = function (nums) {
- const n = nums.length;
- if (n === 1) return nums[0];
- const memo1 = new Array(n + 1).fill(-1);
- const memo2 = new Array(n + 1).fill(-1);
-
- const dp = (start, end, memo) => {
- // base case
- if (end <= start) return 0;
- if (end === 1) return nums[0];
- if (memo[end] !== -1) return memo[end];
-
- memo[end] = Math.max(
- dp(start, end - 1, memo), //不抢
- dp(start, end - 2, memo) + nums[end - 1] // 抢
- );
- return memo[end];
- };
-
- const ignoreLast = dp(0, n - 1, memo1); // 不抢尾
- const ignoreFast = dp(1, n, memo2); // 不抢头
-
- return Math.max(ignoreLast, ignoreFast);
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/221.\346\234\200\345\244\247\346\255\243\346\226\271\345\275\242.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/221.\346\234\200\345\244\247\346\255\243\346\226\271\345\275\242.md"
deleted file mode 100644
index 7dba2f2..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/221.\346\234\200\345\244\247\346\255\243\346\226\271\345\275\242.md"
+++ /dev/null
@@ -1,36 +0,0 @@
-## [221.最大正方形](https://leetcode.cn/problems/maximal-square/) medium
-
-
-```js
-/**
- * @param {character[][]} matrix
- * @return {number}
- */
-var maximalSquare = function (matrix) {
- let maxSide = 0;
- if (matrix === null || matrix.length === 0 || matrix[0].length === 0)
- return maxSide;
-
- const m = matrix.length,
- n = matrix[0].length;
- const dp = new Array(m).fill().map((_) => new Array(n).fill(0));
-
- // 从1开始
- for (let i = 0; i < m; i++) {
- for (let j = 0; j < n; j++) {
- if (matrix[i][j] === "1") {
- // 当遇到1时,根据左方,上方和左上方推到出当前边
- if (i === 0 || j === 0) {
- dp[i][j] = 1; // 当i||j为0 时,边长只能为1
- } else {
- // 木桶效应,取最小的边长+1
- dp[i][j] = Math.min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]) + 1;
- }
- }
- // 更新最大边长
- maxSide = Math.max(maxSide, dp[i][j]);
- }
- }
- return maxSide * maxSide;
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/264.\344\270\221\346\225\260-ii.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/264.\344\270\221\346\225\260-ii.md"
deleted file mode 100644
index a3ccbe5..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/264.\344\270\221\346\225\260-ii.md"
+++ /dev/null
@@ -1,44 +0,0 @@
-## [264.丑数-ii](https://leetcode.cn/problems/ugly-number-ii/) medium
-
-
-```js
-/**
- * @param {number} n
- * @return {number}
- */
-// 合并2,3,5倍速的链表
-var nthUglyNumber = function (n) {
- if (n === 1) return 1;
- let p_2 = 1,
- p_3 = 1,
- p_5 = 1; // 理解为头节点的值
- let p2 = 1,
- p3 = 1,
- p5 = 1; // 理解为链表头节点
- // 结果链表
- const ugly = new Array(n + 1).fill(0);
- // 结果链表上的指针
- let p = 1;
-
- while (p <= n) {
- let min = Math.min(p_2, p_3, p_5);
- ugly[p] = min;
- p++;
- // 指针后移
- if (min === p_2) {
- p_2 = ugly[p2] * 2;
- p2++;
- }
- if (min === p_3) {
- p_3 = ugly[p3] * 3;
- p3++;
- }
- if (min === p_5) {
- p_5 = ugly[p5] * 5;
- p5++;
- }
- }
-
- return ugly[n];
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/279.\345\256\214\345\205\250\345\271\263\346\226\271\346\225\260.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/279.\345\256\214\345\205\250\345\271\263\346\226\271\346\225\260.md"
deleted file mode 100644
index 3d4c690..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/279.\345\256\214\345\205\250\345\271\263\346\226\271\346\225\260.md"
+++ /dev/null
@@ -1,24 +0,0 @@
-## [279.完全平方数](https://leetcode.cn/problems/perfect-squares/) medium
-
-
-```js
-/**
- * @param {number} n
- * @return {number}
- */
-var numSquares = function (n) {
- // 定义dp
- // dp[i]表示i的完全平方数的最少数量
- const dp = new Array(n + 1).fill(0);
- dp[0] = 0;
- for (let i = 1; i <= n; i++) {
- let curMin = Infinity;
- for (let j = 1; j * j <= i; j++) {
- curMin = Math.min(curMin, dp[i - (j * j)]);
- }
- // 动态转移方程:dp[i] = dp[i - j^2] + 1;
- dp[i] = curMin + 1;
- }
- return dp[n];
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/312.\346\210\263\346\260\224\347\220\203.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/312.\346\210\263\346\260\224\347\220\203.md"
deleted file mode 100644
index 21b9485..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/312.\346\210\263\346\260\224\347\220\203.md"
+++ /dev/null
@@ -1,38 +0,0 @@
-## [312.戳气球](https://leetcode.cn/problems/burst-balloons/) hard
-
-时间复杂度 O(mn)
-空间复杂度 O(mn)
-
-[思路](https://mp.weixin.qq.com/s/I0yo0XZamm-jMpG-_B3G8g)
-
-```js
-/**
- * @param {number[]} nums
- * @return {number}
- */
-var maxCoins = function (nums) {
- let n = nums.length;
- let points = new Array(n + 2);
- points[0] = points[n + 1] = 1; // 在首位添加虚拟气球
- for (let i = 1; i <= n; i++) {
- points[i] = nums[i - 1];
- }
-
- // dp[i][j] 表示开区间 (i,j)范围内,获得硬币最大数量
- let dp = Array.from({ length: n + 2 }).map((_) =>
- Array.from({ length: n + 2 }).fill(0)
- );
- for (let i = n; i >= 0; i--) {
- for (let j = i + 1; j < n + 2; j++) {
- for (let k = i + 1; k < j; k++) {
- dp[i][j] = Math.max(
- dp[i][j],
- dp[i][k] + dp[k][j] + points[i] * points[k] * points[j]
- );
- }
- }
- }
-
- return dp[0][n + 1];
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/322.\351\233\266\351\222\261\345\205\221\346\215\242.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/322.\351\233\266\351\222\261\345\205\221\346\215\242.md"
deleted file mode 100644
index 99ebe83..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/322.\351\233\266\351\222\261\345\205\221\346\215\242.md"
+++ /dev/null
@@ -1,37 +0,0 @@
-## [322.零钱兑换](https://leetcode.cn/problems/coin-change/) medium
-
-动态规划框架:
- 明确【状态】==> 定义dp数组/函数的含义 ==> 明确【选择】 ==> 明确base case
-
-- 明确状态:先找出原问题和子问题中变化的变量,由于硬币数量无限,所以唯一的状态就是目标金额 amount
-- 明确dp函数的含义: 当前的目标金额是n,至少需要dp(n) 个硬币,凑出该金额
-- 明确选择并择优: ???
-- base case : 目标金额为0时所需金额为0, 目标金额小于0时,无解,返回-1
-
-```js
-/**
- * @param {number[]} coins
- * @param {number} amount
- * @return {number}
- */
-var coinChange = function (coins, amount) {
- const memo = new Array(amount + 1).fill(-666);
- // 定义dp函数
- // dp(n)返回凑成n所需要的最少硬币数
- const dp = (n) => {
- if (n === 0) return 0;
- if (n < 0) return -1;
- if (memo[n] !== -666) return memo[n];
- let res = Infinity;
- for (const coin of coins) {
- const sub = dp(n - coin);
- if (sub === -1) continue;
- res = Math.min(res, sub + 1);
- }
- memo[n] = res === Infinity ? -1 : res;
- return memo[n];
- };
-
- return dp(amount);
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/338.\346\257\224\347\211\271\344\275\215\350\256\241\346\225\260.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/338.\346\257\224\347\211\271\344\275\215\350\256\241\346\225\260.md"
deleted file mode 100644
index 17b5a4a..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/338.\346\257\224\347\211\271\344\275\215\350\256\241\346\225\260.md"
+++ /dev/null
@@ -1,55 +0,0 @@
-## [338.比特位计数](https://leetcode.cn/problems/counting-bits/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(1)
-
-- 思路(动态规划)
-- 如果是偶数 x,x 的【比特位技数】就是 x/2
-- 如果是奇数 x, x 的【比特位技数】就是(x/2) + 1
-- 动态转移方程:`bites[i] = bites[i>>1] + (i % 2)`
-
-```js
-/**
- * @param {number} n
- * @return {number[]}
- */
-var countBits = function (n) {
- const bites = Array(n + 1).fill(0);
- for (let i = 1; i <= n; i++) {
- bites[i] = bites[i >> 1] + (i % 2);
- }
- return bites;
-};
-```
-
-时间复杂度 O(N\*logN)
-空间复杂度 O(N)
-
-- 思路
-- 单独计算每个数组二进制中的 1
-- 使用`num= num & (num - 1)`;分别消除二进制最后一位 1,并统计消除个数
-
-```js
-/**
- * @param {number} n
- * @return {number[]}
- */
-var countBits = function (n) {
- const bites = Array(n + 1).fill(0);
-
- const count = (num) => {
- let sum = 0;
- while (num > 0) {
- num = num & (num - 1);
- sum++;
- }
-
- return sum;
- };
-
- for (let i = 0; i <= n; i++) {
- bites[i] = count(i);
- }
- return bites;
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/343.\346\225\264\346\225\260\346\213\206\345\210\206.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/343.\346\225\264\346\225\260\346\213\206\345\210\206.md"
deleted file mode 100644
index 418e933..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/343.\346\225\264\346\225\260\346\213\206\345\210\206.md"
+++ /dev/null
@@ -1,62 +0,0 @@
-## [343.整数拆分](https://leetcode.cn/problems/integer-break/) medium
-
-- 思路
-- 动态规划
-- 定义 dp[i]表示 i 被分解后的最大乘积
-- 0 和 1 不能被拆解成正整数,所以 dp[0]=dp[1]=0;
-- i(i>=2)可以被拆解为(j,i-j),若 i-j 可以被继续拆解,那么最大的积就是 dp[i-j]
-- `dp[i] = max( j * (i-j), j * dp[i-j])`;
-
-```js
-/**
- * @param {number} n
- * @return {number}
- */
-var integerBreak = function (n) {
- // 定义dp[i]表示 i分解后 的最大乘积
- let dp = new Array(n + 1).fill(0);
- dp[0] = dp[1] = 0; // 0和1不能被拆分
- for (let i = 2; i <= n; i++) {
- let curMax = 0;
- for (let j = 0; j < i; j++) {
- curMax = Math.max(curMax, j * (i - j), j * dp[i - j]);
- }
- dp[i] = curMax;
- }
-
- return dp[n];
-};
-```
-
-自顶向下+备忘录
-
-```js
-/**
- * @param {number} n
- * @return {number}
- */
-// 4 = 1+3,2+2
-// 4 = max(1*3,2+2)
-// 4 = max(1*3, 1*dp(3), 2+2, 2*dp(2), dp(2)+2, dp(2)+dp(2))
-// 4 = max(
-// max(1,dp(1)) * max(3,dp(3)),
-// max(2,dp(2)) * max(2,dp(2)),
-// )
-var integerBreak = function (n) {
- const memo = Array(n + 1).fill(-1);
- // 返回拆解n后的最大乘积
- const dp = (n) => {
- if (n === 0 || n === 1) return n;
- if (memo[n] !== -1) return memo[n];
-
- let res = -Infinity;
- for (let i = 1; i < n; i++) {
- res = Math.max(res, Math.max(i, dp(i)) * Math.max(n - i, dp(n - i)));
- }
- memo[n] = res;
- return res;
- };
-
- return dp(n);
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/376.\346\221\206\345\212\250\345\272\217\345\210\227.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/376.\346\221\206\345\212\250\345\272\217\345\210\227.md"
deleted file mode 100644
index b90baf9..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/376.\346\221\206\345\212\250\345\272\217\345\210\227.md"
+++ /dev/null
@@ -1,40 +0,0 @@
-## [376.摆动序列](https://leetcode.cn/problems/wiggle-subsequence/) medium
-
-- 动态规划
-- 定义up数组up[i]表示以前 i 个元素中的某一个为结尾的最长的「上升摆动序列」的长度
-- 定义down数组down[i]表示以前i个元素中的某一个为结尾的最长的「下降摆动序列」的长度
-- 动态转移方程
-- `(nums[i] <= nums[i-1]) up[i] = up[i-1];`
-- `(nums[i] > nums[i-1]) up[i] = max(up[i-1],down[i-1]+1);`
-
-- `(nums[i] >= nums[i-1]) down[i] = down[i-1];`
-- `(nums[i] < nums[i-1]) down[i] = max(down[i-1],up[i-1]+1);`
-
-```js
-/**
- * @param {number[]} nums
- * @return {number}
- */
-var wiggleMaxLength = function (nums) {
- const n = nums.length;
- if (n < 2) return n;
- const up = new Array(n).fill(0);
- const down = new Array(n).fill(0);
- up[0] = down[0] = 1;
-
- for (let i = 1; i < n; i++) {
- if (nums[i] > nums[i - 1]) {
- up[i] = Math.max(up[i - 1], down[i - 1] + 1);
- down[i] = down[i - 1];
- } else if (nums[i] < nums[i - 1]) {
- down[i] = Math.max(down[i - 1], up[i - 1] + 1);
- up[i] = up[i - 1];
- } else if (nums[i] === nums[i - 1]) {
- up[i] = up[i - 1];
- down[i] = down[i - 1];
- }
- }
-
- return Math.max(up[n - 1], down[n - 1]);
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/377.\347\273\204\345\220\210\346\200\273\345\222\214-\342\205\263.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/377.\347\273\204\345\220\210\346\200\273\345\222\214-\342\205\263.md"
deleted file mode 100644
index 57f144e..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/377.\347\273\204\345\220\210\346\200\273\345\222\214-\342\205\263.md"
+++ /dev/null
@@ -1,29 +0,0 @@
-## [377.组合总和-ⅳ](https://leetcode.cn/problems/combination-sum-iv/) medium
-
-[题解](https://leetcode.cn/problems/combination-sum-iv/solution/zu-he-zong-he-iv-by-leetcode-solution-q8zv/)
-
-```js
-/**
- * @param {number[]} nums
- * @param {number} target
- * @return {number}
- */
-var combinationSum4 = function (nums, target) {
- // 定义dp
- //dp[i]表示组成i的排列个素
- const dp = new Array(target + 1).fill(0);
- // base case
- dp[0] = 1; // 组成0,只有一种方案
-
- for (let i = 1; i <= target; i++) {
- for (const num of nums) {
- if (num <= i) {
- // 累加 i-num的排列组合
- dp[i] = dp[i] + dp[i - num];
- }
- }
- }
-
- return dp[target];
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/413.\347\255\211\345\267\256\346\225\260\345\210\227\345\210\222\345\210\206.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/413.\347\255\211\345\267\256\346\225\260\345\210\227\345\210\222\345\210\206.md"
deleted file mode 100644
index 2ded988..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/413.\347\255\211\345\267\256\346\225\260\345\210\227\345\210\222\345\210\206.md"
+++ /dev/null
@@ -1,47 +0,0 @@
-## [413.等差数列划分](https://leetcode.cn/problems/arithmetic-slices/) medium
-
-- 动态规划思路
-- 1.定义dp含义
-- 2.状态转移
-- 3.base case
-- 4.迭代解决问题
-
-- 1.首先定义dp[i]表示以i结尾的等差数列的个数
-- 2.如果 `nums[i] - nums[i - 1] === nums[i - 1] - nums[i - 2]`,说明[i-2,i-1,i]可以组成一个等差数列,那么dp[i]+=1, 还要考虑长度不止是3的情况,i-1位置上表示 以i-1组成的等差数列个数,当i可以组成等差数列时,再加上i-1位置上的个数,就可以表示 以i结尾的个数了
-- 3.初始化dp数组为0,题目要求至少3个元素是一个数列,从2开始遍历
-- 4.循环处理每个位置的个数
-- 5.sum(dp)就是全部的子数组个数
-
-[题解](https://leetcode.cn/problems/arithmetic-slices/solution/by-xu-haobooo-hndq/)
-
-```js
-/**
- * @param {number[]} nums
- * @return {number}
- */
-var numberOfArithmeticSlices = function (nums) {
- const n = nums.length;
- if (n < 3) return 0;
-
- // 定义dp
- // dp[i]表示以i结尾的等差数列子数组个数
- const dp = new Array(n).fill(0);
-
- for (let i = 2; i < n; i++) {
- // [i-2,i-1,i] 说明是一个3位数的 等差数列
- if (nums[i] - nums[i - 1] === nums[i - 1] - nums[i - 2]) {
- dp[i] += 1;
- // 当i位置上有等差数列
- // 若i-1位置上也有等差数列
- // 再加上i-1位置上的等差数列子数组
- // 就能表示 第i个数字结尾组成的等差数列的个数
- if (dp[i - 1] !== 0) {
- dp[i] += dp[i - 1];
- }
- }
- }
-
- const sum = dp.reduce((pre, cur) => pre += cur, 0);
- return sum;
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/416.\345\210\206\345\211\262\347\255\211\345\222\214\345\255\220\351\233\206.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/416.\345\210\206\345\211\262\347\255\211\345\222\214\345\255\220\351\233\206.md"
deleted file mode 100644
index c4afaf5..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/416.\345\210\206\345\211\262\347\255\211\345\222\214\345\255\220\351\233\206.md"
+++ /dev/null
@@ -1,44 +0,0 @@
-## [416.分割等和子集](https://leetcode.cn/problems/partition-equal-subset-sum/) medium
-
-
-```js
-/**
- * @param {number[]} nums
- * @return {boolean}
- */
-var canPartition = function (nums) {
- let sum = 0;
- for (const i in nums) {
- sum += nums[i];
- }
-
- if (sum % 2 !== 0) return false;
- sum = sum / 2;
- let n = nums.length;
- // dp[i][j] 表示 对于前 i 个物品,当前背包的容量为 j 时
- // 若 x 为 true,则说明可以恰好将背包装满,若 x 为 false,则说明不能恰好将背包装满
- let dp = Array.from({ length: n + 1 }).map((_) =>
- Array.from({ length: sum + 1 }).fill(false)
- );
-
- // base case
- for (let i = 0; i <= n; i++) {
- dp[i][0] = true;
- }
-
- for (let i = 1; i <= n; i++) {
- for (let j = 1; j <= sum; j++) {
- // 当背包容量小于要装入的容量时,装不进去
- if (j < nums[i - 1]) {
- // 装不进去
- dp[i][j] = dp[i - 1][j];
- } else {
- // 装不进去 || 装进去
- dp[i][j] = dp[i - 1][j] || dp[i - 1][j - nums[i - 1]];
- }
- }
- }
-
- return dp[n][sum];
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/42.\346\216\245\351\233\250\346\260\264.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/42.\346\216\245\351\233\250\346\260\264.md"
deleted file mode 100644
index 67c8e3d..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/42.\346\216\245\351\233\250\346\260\264.md"
+++ /dev/null
@@ -1,45 +0,0 @@
-## [42.接雨水](https://leetcode.cn/problems/trapping-rain-water/) hard
-
-对于任意一个位置i:
-```
-water[i] = min(
- # 左边最高的柱子
- max(height[0..i]),
- # 右边最高的柱子
- max(height[i..end])
- ) - height[i]
-```
-
-```js
-/**
- * @param {number[]} height
- * @return {number}
- */
-// 思路:
-// 对于任意位置i
-// water[i] = min( max(height[0,i]), max(height[i,end]) ) - height[i];
-var trap = function (height) {
- const n = height.length;
- if (n === 0) return 0;
-
- let res = 0;
- const l_max = new Array(n).fill(0);
- const r_max = new Array(n).fill(0);
- // 初始化
- l_max[0] = height[0];
- r_max[n - 1] = height[n - 1];
-
- // 从左往右分别计算出l_max
- for (let i = 1; i < n; i++) {
- l_max[i] = Math.max(height[i], l_max[i - 1]);
- }
- for (let i = n - 2; i >= 0; i--) {
- r_max[i] = Math.max(height[i], r_max[i + 1]);
- }
-
- for (let i = 1; i < n - 1; i++) {
- res += Math.min(l_max[i], r_max[i]) - height[i];
- }
- return res;
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/45.\350\267\263\350\267\203\346\270\270\346\210\217-ii.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/45.\350\267\263\350\267\203\346\270\270\346\210\217-ii.md"
deleted file mode 100644
index 853ec1f..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/45.\350\267\263\350\267\203\346\270\270\346\210\217-ii.md"
+++ /dev/null
@@ -1,64 +0,0 @@
-## [45.跳跃游戏-ii](https://leetcode.cn/problems/jump-game-ii/) medium
-
-动态规划解法,自顶向下
-时间复杂度 O(N^2)
-空间复杂度 O(N)
-
-- 思路
-- 定义dp函数 dp(nums,p)表示从p跳到最后位置需要最少的步数
-- base case 当p超过最后一格时,不需要跳跃,return 0
-- for 循环中 将所有可能跳的步,全部求出来
-- 求出子问题后,返回最小值
-- 最后利用备忘录,消除重叠子问题
-
-```js
-// 动归(自顶向下)
-var jump1 = function (nums) {
- const n = nums.length;
- const memo = new Array(n + 1).fill(Infinity);
- // 返回从p跳到最后一格所需要的最少步数
- const dp = (p) => {
- // base case
- // 当p超过最后一位时,不需要跳跃
- if (p >= n - 1) return 0;
- if (memo[p] !== Infinity) return memo[p];
-
- let step = nums[p]; // 处于p位置时,可选择的步数
- for (let i = 1; i <= step; i++) {
- // 计算每一个可选择的跳跃步数的最小次数 + 当前跳跃次数
- memo[p] = Math.min(memo[p], dp(p + i) + 1);
- }
- return memo[p];
- };
-
- return dp(0);
-};
-```
-
-贪心算法
-
-```js
-/**
- * @param {number[]} nums
- * @return {number}
- */
-var jump = function (nums) {
- const n = nums.length;
- let start = 0,
- end = 0,
- jumps = 0;
-
- // 走到最后一个位置即可,所以最后一个位置不需要jumps+1,endmedium
-
-
-```js
-/**
- * @param {number[]} nums
- * @param {number} target
- * @return {number}
- */
-var findTargetSumWays = function (nums, target) {
- if (nums.length === 0) return 0;
-
- let memo = new Map();
- const dp = (nums, i, remain) => {
- if (i === nums.length) {
- // 当剩余数为0的时候,说明成功
- if (remain === 0) return 1;
- // 否则失败
- return 0;
- }
- const key = i + "," + remain;
- if (memo.has(key)) return memo.get(key);
-
- let res =
- dp(nums, i + 1, remain - nums[i]) + dp(nums, i + 1, remain + nums[i]);
-
- memo.set(key, res);
- return res;
- };
-
- return dp(nums, 0, target);
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/509.\346\226\220\346\263\242\351\202\243\345\245\221\346\225\260.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/509.\346\226\220\346\263\242\351\202\243\345\245\221\346\225\260.md"
deleted file mode 100644
index 0e28bc1..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/509.\346\226\220\346\263\242\351\202\243\345\245\221\346\225\260.md"
+++ /dev/null
@@ -1,41 +0,0 @@
-## [509.斐波那契数](https://leetcode.cn/problems/fibonacci-number/) easy
-
-dp数组自底向上解法
-
-```js
-/**
- * @param {number} n
- * @return {number}
- */
-var fib = function (n) {
- // dp[n]表示斐波那契数列上的第n个数
- let dp = new Array(n + 1).fill(0);
- // base case
- dp[0] = 0;
- dp[2] = dp[1] = 1;
- for (let i = 3; i < dp.length; i++) {
- dp[i] = dp[i - 1] + dp[i - 2];
- }
- return dp[n];
-};
-
-```
-
-备忘录解法
-
-```js
-var fib = function (n) {
- let memo = [];
- return helper(memo, n);
-};
-
-const helper = (memo, n) => {
- if (n === 0) return 0;
- if (n === 1 || n === 2) return 1;
- if (memo[n] !== undefined) {
- return memo[n];
- }
-
- return helper(memo, n - 1) + helper(memo, n - 2);
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/518.\351\233\266\351\222\261\345\205\221\346\215\242-ii.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/518.\351\233\266\351\222\261\345\205\221\346\215\242-ii.md"
deleted file mode 100644
index 947e3af..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/518.\351\233\266\351\222\261\345\205\221\346\215\242-ii.md"
+++ /dev/null
@@ -1,54 +0,0 @@
-## [518.零钱兑换-ii](https://leetcode.cn/problems/coin-change-ii/) medium
-
-
-```js
-/**
- * @param {number} amount
- * @param {number[]} coins
- * @return {number}
- */
-var change = function (amount, coins) {
- const n = coins.length;
- const dp = new Array(n + 1).fill().map(_ => new Array(amount + 1).fill(0));
-
- // base case
- for (let i = 0; i <= n; i++) {
- dp[i][0] = 1;
- }
-
- for (let i = 1; i <= n; i++) {
- for (let j = 1; j <= amount; j++) {
- if (j - coins[i - 1] >= 0) {
- dp[i][j] = dp[i - 1][j] + dp[i][j - coins[i - 1]];
- } else {
- dp[i][j] = dp[i - 1][j];
- }
- }
- }
- return dp[n][amount];
-};
-```
-
-```js
-/**
- * @param {number} amount
- * @param {number[]} coins
- * @return {number}
- */
-var change = function (amount, coins) {
- let n = coins.length;
- let dp = Array.from({ length: amount + 1 }).fill(0);
- // console.log(dp);
-
- // base case
- dp[0] = 1;
-
- for (const coin of coins) {
- for (let i = coin; i <= amount; i++) {
- dp[i] = dp[i] + dp[i - coin];
- }
- }
-
- return dp[amount];
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/53.\346\234\200\345\244\247\345\255\220\346\225\260\347\273\204\345\222\214.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/53.\346\234\200\345\244\247\345\255\220\346\225\260\347\273\204\345\222\214.md"
deleted file mode 100644
index 26d63e6..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/53.\346\234\200\345\244\247\345\255\220\346\225\260\347\273\204\345\222\214.md"
+++ /dev/null
@@ -1,52 +0,0 @@
-## [53.最大子数组和](https://leetcode.cn/problems/maximum-subarray/) medium
-
-时间复制度O(N)
-空间复杂度O(N)
-
-- 思路(动态规划)
-- 要求子数组的和的最大值
-- 要看当前值,是否要和前面的数组组合形成更大的数字
-- 或者自己成为一个单独的数组
-- dp数组,定义dp[i]表示nums[0..i]的最大和
-- 那么动态转移方程就是
-```js
-dp[i] = max(dp[i - 1] + nums[i], nums[i]);
-```
-- 跟[剑指Offer42.连续子数组的最大和](/js-logs/sword-point-offer#剑指-offer-42-连续子数组的最大和)相同
-
-```js
-/**
- * @param {number[]} nums
- * @return {number}
- */
-var maxSubArray = function (nums) {
- let dp = new Array(nums.length).fill(0);
-
- // base case
- dp[0] = nums[0];
- let max = nums[0];
-
- for (let i = 1; i < dp.length; i++) {
- dp[i] = Math.max(dp[i - 1] + nums[i], nums[i]);
- max = Math.max(max, dp[i]);
- }
-
- return max;
-};
-
-```
-
-优化空间复杂度 的dp数组解法
-空间复杂度O(1)
-
-```js
-var maxSubArray = function (nums) {
- let max = 0;
- let res = -Infinity;
- for (const item of nums) {
- max = Math.max(max + item, item); // 计算出i位置上的最大值
- res = Math.max(max, res); // 找出[0...end]区间内 i位置上的最大值
- }
- return res;
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/55.\350\267\263\350\267\203\346\270\270\346\210\217.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/55.\350\267\263\350\267\203\346\270\270\346\210\217.md"
deleted file mode 100644
index eac23c5..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/55.\350\267\263\350\267\203\346\270\270\346\210\217.md"
+++ /dev/null
@@ -1,24 +0,0 @@
-## [55.跳跃游戏](https://leetcode.cn/problems/jump-game/) medium
-
-这道题表面上不是求最值,但是可以改一改:
-请问通过题目中的跳跃规则,最多能跳多远?如果能够越过最后一格,返回 true,否则返回 false。
-
-```js
-/**
- * @param {number[]} nums
- * @return {boolean}
- */
-var canJump = function (nums) {
- const n = nums.length;
-
- // 跳的最远距离,若长度能超过最后一格,返回true,否则返回false
- let res = 0;
- for (let i = 0; i < n - 1; i++) {
- res = Math.max(res, i + nums[i]);
- // [0,2,3]
- if (res === i) return false; // 可能遇到0,跳不动了
- }
-
- return res >= n - 1;
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/62.\344\270\215\345\220\214\350\267\257\345\276\204.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/62.\344\270\215\345\220\214\350\267\257\345\276\204.md"
deleted file mode 100644
index d007df6..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/62.\344\270\215\345\220\214\350\267\257\345\276\204.md"
+++ /dev/null
@@ -1,23 +0,0 @@
-## [62.不同路径](https://leetcode.cn/problems/unique-paths/) medium
-
-
-```js
-/**
- * @param {number} m
- * @param {number} n
- * @return {number}
- */
-var uniquePaths = function (m, n) {
- const memo = new Array(m).fill(-1).map((_) => new Array(n).fill(-1));
-
- // 定义dp函数返回从0,0走到i,j的路径数量
- const dp = (i, j) => {
- if (i === 0 && j === 0) return 1;
- if (i < 0 || j < 0) return 0;
- if (memo[i][j] !== -1) return memo[i][j];
- memo[i][j] = dp(i - 1, j) + dp(i, j - 1);
- return memo[i][j];
- };
- return dp(m - 1, n - 1);
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/63.\344\270\215\345\220\214\350\267\257\345\276\204-ii.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/63.\344\270\215\345\220\214\350\267\257\345\276\204-ii.md"
deleted file mode 100644
index 7840563..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/63.\344\270\215\345\220\214\350\267\257\345\276\204-ii.md"
+++ /dev/null
@@ -1,30 +0,0 @@
-## [63.不同路径-ii](https://leetcode.cn/problems/unique-paths-ii/) medium
-
-
-```js
-/**
- * @param {number[][]} obstacleGrid
- * @return {number}
- */
-var uniquePathsWithObstacles = function (obstacleGrid) {
- if (obstacleGrid.length === 0) return 0;
- const m = obstacleGrid.length,
- n = obstacleGrid[0].length;
- const memo = new Array(m).fill(-1).map((_) => new Array(n).fill(-1));
-
- // 定义dp函数返回从0,0走到i,j的路径数量
- const dp = (i, j) => {
- // base case
- // 越界和碰撞物的判断
- if (i < 0 || j < 0 || obstacleGrid[i][j] === 1) return 0;
- if (i === 0 && j === 0) return 1; // 到达0,0点
-
- if (memo[i][j] !== -1) return memo[i][j];
-
- memo[i][j] = dp(i - 1, j) + dp(i, j - 1);
- return memo[i][j];
- };
-
- return dp(m - 1, n - 1);
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/64.\346\234\200\345\260\217\350\267\257\345\276\204\345\222\214.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/64.\346\234\200\345\260\217\350\267\257\345\276\204\345\222\214.md"
deleted file mode 100644
index 4e84361..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/64.\346\234\200\345\260\217\350\267\257\345\276\204\345\222\214.md"
+++ /dev/null
@@ -1,71 +0,0 @@
-## [64.最小路径和](https://leetcode.cn/problems/minimum-path-sum/) medium
-
-- 动态规划
-- 要想求右下角[0][0]-->[m][n]的最短路径
-- 需要先求出[m-1][n] 和 [m][n-1]的最短路径,
-- 因为我们肯定要从这两个方向进去
-
-```js
-/**
- * @param {number[][]} grid
- * @return {number}
- */
-// 自顶向下解法
-var minPathSum = function (grid) {
- let m = grid.length,
- n = grid[0].length;
-
- let memo = Array.from({ length: m }).map((_) =>
- Array.from({ length: n }).fill(-1)
- );
-
- // dp函数表示从0,0 坐标到 i,j的最短路径
- const dp = (grid, i, j) => {
- // base case
- if (i === 0 && j === 0) {
- return grid[0][0];
- }
- // 防止越界情况,返回一个∞,这样在比较最小值的时候不会被记录
- if (i < 0 || j < 0) {
- return Infinity;
- }
-
- if (memo[i][j] !== -1) {
- return memo[i][j];
- }
-
- memo[i][j] = Math.min(dp(grid, i - 1, j), dp(grid, i, j - 1)) + grid[i][j];
- return memo[i][j];
- };
-
- return dp(grid, m - 1, n - 1);
-};
-```
-
-自底向上解法
-
-```js
-var minPathSum = function (grid) {
- let m = grid.length,
- n = grid[0].length;
- let dp = Array.from({ length: m }).map((_) => Array.from({ length: n }));
- // base case
- dp[0][0] = grid[0][0];
-
- for (let i = 1; i < m; i++) {
- dp[i][0] = dp[i - 1][0] + grid[i][0];
- }
-
- for (let j = 1; j < n; j++) {
- dp[0][j] = dp[0][j - 1] + grid[0][j];
- }
-
- for (let i = 1; i < m; i++) {
- for (let j = 1; j < n; j++) {
- dp[i][j] = Math.min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j];
- }
- }
-
- return dp[m - 1][n - 1];
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/740.\345\210\240\351\231\244\345\271\266\350\216\267\345\276\227\347\202\271\346\225\260.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/740.\345\210\240\351\231\244\345\271\266\350\216\267\345\276\227\347\202\271\346\225\260.md"
deleted file mode 100644
index b19abd8..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/740.\345\210\240\351\231\244\345\271\266\350\216\267\345\276\227\347\202\271\346\225\260.md"
+++ /dev/null
@@ -1,33 +0,0 @@
-## [740.删除并获得点数](https://leetcode.cn/problems/delete-and-earn/) medium
-
-- 转换题目,其实就是打家劫舍问题
-- 选中任意一个之后,必须删除`nums[i-1]` 和 `nums[i]+1`其实就是不能选择相邻的元素
-- 讲原数组转化成打劫劫舍的nums
-- 统计出每个值的价值,然后求出最大价值
-
-```js
-var deleteAndEarn = function (nums) {
- // nums [3, 4, 2]
- // all [0, 0, 2, 3, 4]
- let max = Math.max.apply(null, nums);
- let all = new Array(max + 1).fill(0);
- for (const val of nums) {
- all[val] += val;
- }
- return rob(all);
-};
-
-// 打家劫舍问题
-var rob = function (nums) {
- const n = nums.length;
- const dp = new Array(n + 1).fill(0);
-
- dp[0] = 0;
- dp[1] = nums[0];
- for (let i = 2; i <= n; i++) {
- dp[i] = Math.max(dp[i - 1], dp[i - 2] + nums[i - 1]);
- }
-
- return dp[n];
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/746.\344\275\277\347\224\250\346\234\200\345\260\217\350\212\261\350\264\271\347\210\254\346\245\274\346\242\257.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/746.\344\275\277\347\224\250\346\234\200\345\260\217\350\212\261\350\264\271\347\210\254\346\245\274\346\242\257.md"
deleted file mode 100644
index d88ab24..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/746.\344\275\277\347\224\250\346\234\200\345\260\217\350\212\261\350\264\271\347\210\254\346\245\274\346\242\257.md"
+++ /dev/null
@@ -1,34 +0,0 @@
-## [746.使用最小花费爬楼梯](https://leetcode.cn/problems/min-cost-climbing-stairs/) easy
-
-- 自顶向下(递归)
-- 思路
-- dp(i) 表示到达i的最小花费
-- 那么动态转移方程就是,前一个台阶或者前两个台阶+当前台阶的花费
-- dp(i) = min(dp(i-1),dp(i-2)) + cost[i];
-- base case
-- 0台阶的最小花费就是cost[0]
-- 1台阶的最小花费就是 直接走到1台阶,那么就是cost[1];
-- 然而最后走到i台阶可以有两种方式,跨一步或者跨两步,所以需要比较这两种方案,取最小值
-
-```js
-/**
- * @param {number[]} cost
- * @return {number}
- */
-var minCostClimbingStairs = function (cost) {
- const n = cost.length;
- const memo = new Array(n).fill(-1);
-
- const dp = (i) => {
- // base case
- if (i <= 1) return cost[i];
-
- if (memo[i] !== -1) return memo[i];
-
- memo[i] = Math.min(dp(i - 1), dp(i - 2)) + cost[i];
-
- return memo[i];
- };
- return Math.min(dp(n - 1), dp(n - 2));
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/877.\347\237\263\345\255\220\346\270\270\346\210\217.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/877.\347\237\263\345\255\220\346\270\270\346\210\217.md"
deleted file mode 100644
index eb8e0c8..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/877.\347\237\263\345\255\220\346\270\270\346\210\217.md"
+++ /dev/null
@@ -1,46 +0,0 @@
-## [877.石子游戏](https://leetcode.cn/problems/stone-game/) medium
-
-
-```js
-/**
- * @param {number[]} piles
- * @return {boolean}
- */
-var stoneGame = function (piles) {
- let n = piles.length;
- let dp = Array.from({ length: n }).map((_) => Array.from({ length: n }));
- for (let i = 0; i < n; i++) {
- for (let j = 0; j < n; j++) {
- dp[i][j] = {
- fir: 0,
- sec: 0,
- };
- }
- }
-
- // base case
- for (let i = 0; i < n; i++) {
- dp[i][i].fir = piles[i];
- dp[i][i].sec = 0;
- }
-
- // console.log(dp);
-
- for (let i = n - 2; i >= 0; i--) {
- for (let j = i + 1; j < n; j++) {
- let left = piles[i] + dp[i + 1][j].sec;
- let right = piles[j] + dp[i][j - 1].sec;
- if (left > right) {
- dp[i][j].fir = left;
- dp[i][j].sec = dp[i + 1][j].fir;
- } else {
- dp[i][j].fir = right;
- dp[i][j].sec = dp[i][j - 1].fir;
- }
- }
- }
-
- let res = dp[0][n - 1];
- return res.fir > res.sec ? true : false;
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/887.\351\270\241\350\233\213\346\216\211\350\220\275.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/887.\351\270\241\350\233\213\346\216\211\350\220\275.md"
deleted file mode 100644
index 85eeab3..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/887.\351\270\241\350\233\213\346\216\211\350\220\275.md"
+++ /dev/null
@@ -1,87 +0,0 @@
-## [887.鸡蛋掉落](https://leetcode.cn/problems/super-egg-drop/) hard
-
-dp递归
-时间复杂度 O(kn^2)
-空间复杂度 O(kn)
-
-```js
-/**
- * @param {number} k
- * @param {number} n
- * @return {number}
- */
-var superEggDrop = function (k, n) {
- let memo = new Map(); // 备忘录消除重叠子问题
-
- // 表示当鸡蛋为k,楼层为n时,最小的操作次数
- function dp(k, n) {
- // base case
- if (k === 1) return n; // 就一个鸡蛋,需要线性查找,所以返回楼层n
- if (n === 0) return 0; // 楼层为0,不需要操作
-
- if (memo.has(k + "" + n)) {
- return memo.get(k + "" + n);
- }
-
- let res = Infinity;
- for (let i = 1; i <= n; i++) {
- res = Math.min(
- res,
- Math.max(
- dp(k - 1, i - 1), // 碎了
- dp(k, n - i) // 没碎
- ) + 1
- );
- }
-
- memo.set(k + "" + n, res);
- return res;
- }
-
- return dp(k, n);
-};
-```
-
-dp递归+二分查找
-时间复杂度 O(k * n * logn)
-空间复杂度 O(kn)
-
-```js
-var superEggDrop = function (k, n) {
- let memo = new Map(); // 备忘录消除重叠子问题
-
- // 表示当鸡蛋为k,楼层为n时,最小的操作次数
- function dp(k, n) {
- // base case
- if (k === 1) return n; // 就一个鸡蛋,需要线性查找,所以返回楼层n
- if (n === 0) return 0; // 楼层为0,不需要操作
-
- if (memo.has(k + "" + n)) {
- return memo.get(k + "" + n);
- }
-
- let res = Infinity;
- let lo = 1,
- hi = n;
- while (lo <= hi) {
- let mid = Math.floor((lo + hi) / 2);
- let broken = dp(k - 1, mid - 1); // 碎了
- let noBroken = dp(k, n - mid); // 没碎
- // res = min(max(borken,noBroken) + 1);
- // 如果碎的结果比较多,直接从碎的结果里面求最小操作次树即可,因为我们要考虑的是最坏情况下
- if (broken > noBroken) {
- hi = mid - 1;
- res = Math.min(res, broken + 1);
- } else {
- lo = mid + 1;
- res = Math.min(res, noBroken + 1);
- }
- }
-
- memo.set(k + "" + n, res);
- return res;
- }
-
- return dp(k, n);
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/91.\350\247\243\347\240\201\346\226\271\346\263\225.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/91.\350\247\243\347\240\201\346\226\271\346\263\225.md"
deleted file mode 100644
index 879653c..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/91.\350\247\243\347\240\201\346\226\271\346\263\225.md"
+++ /dev/null
@@ -1,37 +0,0 @@
-## [91.解码方法](https://leetcode.cn/problems/decode-ways/) medium
-
-
-- 状态转移关系:
- - s[i] 本身可能表示一个字母,这种情况下解码数量为 numDecodings(s[0..i-1])
- - s[i] 可能和 s[i - 1] 结合起来表示一个字母,这种情况下解码数量为 numDecodings(s[0..i-2])
-状态转移方程:
-
-```
-numDecodings(s) = numDecodings(s[0:-1]) + numDecodings(s[0:-2])
-```
-
-根据这个状态转移关系,可定义递归的 dp 函数或者迭代的 dp 数组求解,我使用自底向上迭代的求解方法。
-
-```js
-/**
- * @param {TreeNode} root
- * @return {number[][]}
- */
-var levelOrderBottom = function (root) {
- if (!root) return [];
- const q = [root];
- const res = [];
-
- while (q.length) {
- let levelRes = [];
- for (let i = 0, len = q.length; i < len; i++) {
- const node = q.shift();
- levelRes.push(node.val);
- node.left && q.push(node.left);
- node.right && q.push(node.right);
- }
- res.unshift(levelRes);
- }
- return res;
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/918.\347\216\257\345\275\242\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\222\214.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/918.\347\216\257\345\275\242\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\222\214.md"
deleted file mode 100644
index 1dd279b..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/918.\347\216\257\345\275\242\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\222\214.md"
+++ /dev/null
@@ -1,29 +0,0 @@
-## [918.环形子数组的最大和](https://leetcode.cn/problems/maximum-sum-circular-subarray/) medium
-
-[题解](https://leetcode.cn/problems/maximum-sum-circular-subarray/solution/wo-hua-yi-bian-jiu-kan-dong-de-ti-jie-ni-892u/)
-
-```js
-/**
- * @param {number[]} nums
- * @return {number}
- */
-var maxSubarraySumCircular = function (nums) {
- let total = 0, // 综合
- curMax = 0,
- max = -Infinity,
- curMin = 0,
- min = Infinity;
-
- for (const item of nums) {
- curMax = Math.max(curMax + item, item);
- max = Math.max(max, curMax);
-
- curMin = Math.min(curMin + item, item);
- min = Math.min(min, curMin);
-
- total += item;
- }
-
- return max > 0 ? Math.max(max, total - min) : max;
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/931.\344\270\213\351\231\215\350\267\257\345\276\204\346\234\200\345\260\217\345\222\214.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/931.\344\270\213\351\231\215\350\267\257\345\276\204\346\234\200\345\260\217\345\222\214.md"
deleted file mode 100644
index fe81414..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/931.\344\270\213\351\231\215\350\267\257\345\276\204\346\234\200\345\260\217\345\222\214.md"
+++ /dev/null
@@ -1,46 +0,0 @@
-## [931.下降路径最小和](https://leetcode.cn/problems/minimum-falling-path-sum/) medium
-
-时间复杂度 O(MN)
-空间复杂度 O(MN)
-
-- 思路
-- 对于[i,j] 可能从 [i-1,i], [i-1,j-1], [i-1,j+1]三个位置来
-- 那么从底部向上推
-- 定义dp(i,j) 表示从(0,..)位置到(i,j)的最小路径和
-- 动态转移方程:`dp(i,j) = [i,j] + min([i-1,j], [i-1,j-1], [i-1,j+1])`
-
-```js
-/**
- * @param {number[][]} matrix
- * @return {number}
- */
-var minFallingPathSum = function (matrix) {
- const m = matrix.length,
- n = matrix[0].length;
- const memo = new Array(m).fill(0).map((_) => new Array(n).fill(-1));
-
- // 返回从(0,j)出发到(i,j)的最小路径和
- const dp = (i, j) => {
- // 越界处理
- if (i < 0 || j < 0 || i >= m || j >= n) return Infinity;
- // base case
- // 当到达第一排,返回的就是第一排的值
- if (i === 0) return matrix[0][j];
-
- if (memo[i][j] !== -1) return memo[i][j];
-
- // 可能是从上面,左上和右上来的
- memo[i][j] =
- matrix[i][j] + Math.min(dp(i - 1, j), dp(i - 1, j - 1), dp(i - 1, j + 1));
-
- return memo[i][j];
- };
-
- let res = Infinity;
- // 终点可能在最后一排(n-1)的任意一个位置
- for (let j = 0; j < n; j++) {
- res = Math.min(res, dp(n - 1, j));
- }
- return res;
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/97.\344\272\244\351\224\231\345\255\227\347\254\246\344\270\262.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/97.\344\272\244\351\224\231\345\255\227\347\254\246\344\270\262.md"
deleted file mode 100644
index 8ba1a44..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/97.\344\272\244\351\224\231\345\255\227\347\254\246\344\270\262.md"
+++ /dev/null
@@ -1,46 +0,0 @@
-## [97.交错字符串](https://leetcode.cn/problems/interleaving-string/) medium
-
-
-```js
-/**
- * @param {string} s1
- * @param {string} s2
- * @param {string} s3
- * @return {boolean}
- */
-var isInterleave = function (s1, s2, s3) {
- const s1Len = s1.length,
- s2Len = s2.length;
- // 当s1+s2的长度与s3的长度不相等,直接返回false
- if (s1Len + s2Len !== s3.length) return false;
-
- // -1表示未计算,1表示true,0表示false
- const memo = new Array(s1Len + 1)
- .fill(-1)
- .map((_) => new Array(s2Len + 1).fill(-1));
-
- // 定义dp(i,j)返回 s1[i,..] s2[j,...] 能否组成dp[i+j,...]
- const dp = (i, j) => {
- let k = i + j;
- // base case
- // 当s3 已经构造完成
- if (k === s3.length) return true;
-
- if (memo[i][j] !== -1) return memo[(i, j)] === 1 ? true : false;
-
- let res = false;
- // 当s1的开头可以满足s3的开头,填入s1试一下
- if (i < s1.length && s1[i] === s3[k]) {
- res = dp(i + 1, j);
- }
- // 当s2的开头可以满足s3的开头,填入s2试一下
- if (j < s2.length && s2[j] === s3[k]) {
- res = res || dp(i, j + 1); // 当s1的结果已经满足,就可以跳过s2了
- }
- memo[i][j] = res ? 1 : 0;
- return memo[i][j];
- };
-
- return dp(0, 0);
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\211\221\346\214\207Offer10-II.\351\235\222\350\233\231\350\267\263\345\217\260\351\230\266\351\227\256\351\242\230.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\211\221\346\214\207Offer10-II.\351\235\222\350\233\231\350\267\263\345\217\260\351\230\266\351\227\256\351\242\230.md"
deleted file mode 100644
index 29d51a2..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\211\221\346\214\207Offer10-II.\351\235\222\350\233\231\350\267\263\345\217\260\351\230\266\351\227\256\351\242\230.md"
+++ /dev/null
@@ -1,31 +0,0 @@
-## [剑指 Offer 10- II. 青蛙跳台阶问题](https://leetcode.cn/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/) easy
-
-- 思路(动态规划)
-- 跟fib类型
-- 动态转移方程`dp(n) = dp(n - 1) + dp(n - 2)`
-- 跟[70题](https://leetcode-cn.com/problems/climbing-stairs/)相同
-
-```js
-/**
- * @param {number} n
- * @return {number}
- */
-var numWays = function (n) {
- const memo = new Array(n + 1).fill(-1);
- // 定义到n台阶的方法
- const dp = (n) => {
- // base case
- if (n === 0) return 1;
- if (n <= 2) return n;
-
- if (memo[n] !== -1) return memo[n];
-
- memo[n] = (dp(n - 1) + dp(n - 2)) % 1000000007; // 防止溢出
- return memo[n];
-
- // // n台阶的方法等于 (n-1)的方法 + (n-2)的方法
- // return dp(n - 1) + dp(n - 2);
- }
- return dp(n);
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\211\221\346\214\207OfferII091.\347\262\211\345\210\267\346\210\277\345\255\220.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\211\221\346\214\207OfferII091.\347\262\211\345\210\267\346\210\277\345\255\220.md"
deleted file mode 100644
index 6a47896..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\211\221\346\214\207OfferII091.\347\262\211\345\210\267\346\210\277\345\255\220.md"
+++ /dev/null
@@ -1,47 +0,0 @@
-## [剑指 Offer II 091. 粉刷房子](https://leetcode.cn/problems/JEj789/) medium
-
-跟[256题](https://leetcode-cn.com/problems/paint-house/)相同
-
-- 这道题有些类似 最长递增子序列 和 最大子数组和,因为它们定义 dp 数组的方式都是「以 xx 结尾的最值是 dp[i]」。
-- 这道题对 dp 数组的定义是:
- - 当第 i 个房子粉刷颜色 j 时,粉刷 [0..i] 这些房子所需的最少花费为 dp[i][j]。
-- 有了这个定义,题目想求的答案就是 `sum(dp[n-1][..])`。
-- 又因为题目说相同的颜色不能相邻,所以状态转移方程为:
-
-```
-// 颜色 0 只能挨着颜色 1 或颜色 2
-dp[i][0] = min(dp[i - 1][1], dp[i - 1][2]) + costs[i][0];
-// 颜色 1 只能挨着颜色 0 或颜色 2
-dp[i][1] = min(dp[i - 1][0], dp[i - 1][2]) + costs[i][1];
-// 颜色 2 只能挨着颜色 0 或颜色 1
-dp[i][2] = min(dp[i - 1][0], dp[i - 1][1]) + costs[i][2];
-```
-
-```js
-/**
- * @param {number[][]} costs
- * @return {number}
- */
-var minCost = function (costs) {
- const n = costs.length;
- // 定义dp数组
- // dp[i][j]表示[0...i]号房子,粉成0,1,2号颜色所需最少成本
- const dp = new Array(n).fill(0).map((_) => [0, 1, 2]);
- // base case
- // 第0排花费的最少成本就是costs[0][j]
- dp[0] = costs[0];
-
- for (let i = 1; i < n; i++) {
- // dp[i]的最小成本 = dp[i-1]的最小成本+当前层的成本
- // 因为相邻颜色不能相同,所以0颜色,只能选1,2颜色的最小成本 + 当前颜色成本
- dp[i][0] = Math.min(dp[i - 1][1], dp[i - 1][2]) + costs[i][0];
- dp[i][1] = Math.min(dp[i - 1][0], dp[i - 1][2]) + costs[i][1];
- dp[i][2] = Math.min(dp[i - 1][0], dp[i - 1][1]) + costs[i][2];
- }
-
- // 找出[0...i]号房子中花费最少的成本
- const res = Math.min.call(null, ...dp[n - 1]);
- return res;
-};
-
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\211\221\346\214\207OfferII097.\345\255\220\345\272\217\345\210\227\347\232\204\346\225\260\347\233\256.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\211\221\346\214\207OfferII097.\345\255\220\345\272\217\345\210\227\347\232\204\346\225\260\347\233\256.md"
deleted file mode 100644
index bfd428d..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\211\221\346\214\207OfferII097.\345\255\220\345\272\217\345\210\227\347\232\204\346\225\260\347\233\256.md"
+++ /dev/null
@@ -1,39 +0,0 @@
-## [剑指 Offer II 097. 子序列的数目](https://leetcode.cn/problems/21dk04/) hard
-
-跟[115题](https://leetcode-cn.com/problems/distinct-subsequences/)相同
-
-```js
-/**
- * @param {string} s
- * @param {string} t
- * @return {number}
- */
-var numDistinct = function (s, t) {
- // 以s视角出发,寻找子序列的个数
- const m = s.length,
- n = t.length;
- const memo = new Array(m + 1).fill(-1).map((_) => new Array(n + 1).fill(-1));
-
- // 定义dp(i,j)
- // 返回[i,...]中 子序列t[j,...]的数量
- const dp = (i, j) => {
- // base case
- if (j === n) return 1; // 就走到头,匹配一个子序列
- if (n - j > m - i) return 0; // t的剩余长度大于s,说明不匹配,直接返回0
- if (memo[i][j] !== -1) return memo[i][j];
-
- let res = 0;
- if (s[i] === t[j]) {
- // aab,ab => a_b , _ab
- res += dp(i + 1, j + 1) + dp(i + 1, j);
- } else {
- // 如果s[i]!==t[j],i继续往后走,跟t[j]进行尝试匹配
- res += dp(i + 1, j);
- }
- memo[i][j] = res;
- return res;
- };
-
- return dp(0, 0);
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\211\221\346\214\207OfferII098.\350\267\257\345\276\204\347\232\204\346\225\260\347\233\256.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\211\221\346\214\207OfferII098.\350\267\257\345\276\204\347\232\204\346\225\260\347\233\256.md"
deleted file mode 100644
index 59b811f..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\211\221\346\214\207OfferII098.\350\267\257\345\276\204\347\232\204\346\225\260\347\233\256.md"
+++ /dev/null
@@ -1,32 +0,0 @@
-## [剑指 Offer II 098. 路径的数目](https://leetcode.cn/problems/2AoeFn/) medium
-
-跟[62题](https://leetcode-cn.com/problems/unique-paths/)相同
-
-```js
-/**
- * @param {number} m
- * @param {number} n
- * @return {number}
- */
-var uniquePaths = function (m, n) {
- const memo = new Array(m + 1).fill(-1).map((_) => new Array(n).fill(-1));
-
- // 定义dp(i,j)
- // 返回0,0走到i,j的路径数量
- const dp = (i, j) => {
- // base case
- if (i === 0 && j === 0) return 1;
- if (i < 0 || j < 0) return 0;
- if (memo[i][j] !== -1) return memo[i][j];
-
- // i,j点的数量和 = 到达左边的数量 + 到达上面的数量
- // dp(i,j)= dp(i-1,j) 的数量+dp(i,j-1)的数量
- memo[i][j] = dp(i - 1, j) + dp(i, j - 1);
-
- return memo[i][j];
- };
-
- return dp(m - 1, n - 1);
-};
-
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\211\221\346\214\207OfferII103.\346\234\200\345\260\221\347\232\204\347\241\254\345\270\201\346\225\260\347\233\256.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\211\221\346\214\207OfferII103.\346\234\200\345\260\221\347\232\204\347\241\254\345\270\201\346\225\260\347\233\256.md"
deleted file mode 100644
index 92b6669..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\211\221\346\214\207OfferII103.\346\234\200\345\260\221\347\232\204\347\241\254\345\270\201\346\225\260\347\233\256.md"
+++ /dev/null
@@ -1,31 +0,0 @@
-## [剑指 Offer II 103. 最少的硬币数目](https://leetcode.cn/problems/gaM7Ch/) medium
-
-跟[322题](https://leetcode-cn.com/problems/coin-change/)相同
-
-```js
-/**
- * @param {number[]} coins
- * @param {number} amount
- * @return {number}
- */
-var coinChange = function (coins, amount) {
- const memo = [];
- // 定义dp(n)可以返回amount为n时,所需要的最少硬币数量
- function dp(n) {
- if (n === 0) return 0;
- if (n < 0) return -1;
- if (memo[n] !== undefined) return memo[n];
- let res = Infinity;
- for (const coin of coins) {
- const subProblem = dp(n - coin);
- if (subProblem === -1) continue;
- res = Math.min(res, 1 + subProblem);
- }
- memo[n] = res === Infinity ? -1 : res;
- return memo[n];
- }
-
- return dp(amount);
-};
-
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\255\220\345\272\217\345\210\227\347\261\273\345\236\213/1143.\346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\255\220\345\272\217\345\210\227\347\261\273\345\236\213/1143.\346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.md"
deleted file mode 100644
index 7c66e18..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\255\220\345\272\217\345\210\227\347\261\273\345\236\213/1143.\346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.md"
+++ /dev/null
@@ -1,76 +0,0 @@
-### [1143.最长公共子序列](https://leetcode.cn/problems/longest-common-subsequence/) medium
-
-时间复杂度 O(N^2)
-空间复杂度 O(M * N)
-
-思路
-- 1.先定义dp函数的意义
- - 这里的dp(s1,i,s2,j)返回的是s1\[i...]和s2\[j...]的最长公共子序列数
-- 2.考虑每个字符串的情况,找到动态转移方程
- - 如果i== len(s1) || j == len(s2)时,那么说明s1,s2是空串,直接返回0,这是base case
- - 若s1\[i]==s2\[j],那么说明有一个子串了,i和j的指针后移一位,1 + dp(s1,i+1,s2,j+1);
- - 若不相等时,有三种情况,分别是
- - 情况1,dp(s1,i+1,s2,j);
- - 情况2,dp(s1,i,s2,j+1);
- - 情况3,dp(s1,i+1,s2,j+1);
- - 因为求的是最大值,我们找出这三种情况中的最大值即可Max(情况1,情况2,情况3)
-- 3.使用memo消除重叠子问题
- - 创建一个二维数组,存放计算过的结果
- - 这里情况3,其实也可以省略计算
- - 因为我们要求的是最大值,情况1和情况2得出的值,肯定要比情况3的大,也就是说,情况1,2包含了情况3
-
-```js
-/**
- * @param {string} text1
- * @param {string} text2
- * @return {number}
- */
-var longestCommonSubsequence = function (text1, text2) {
- const m = text1.length, n = text2.length;
- const memo = new Array(m + 1).fill().map(_ => new Array(n + 1).fill(-1));
-
- // 返回text1[i..] text2[j..] 的最长子序列
- const dp = (i, j) => {
- if (i === m || j === n) return 0;
-
- if (memo[i][j] !== -1) return memo[i][j];
-
- if (text1[i] === text2[j]) {
- memo[i][j] = 1 + dp(i + 1, j + 1);
- } else {
- memo[i][j] = Math.max(
- // dp(i + 1, j + 1),
- dp(i + 1, j),
- dp(i, j + 1));
- }
- return memo[i][j];
- }
-
- return dp(0, 0);
-};
-
-```
-
-自底向上-dp数组
-
-```js
-var longestCommonSubsequence = function (text1, text2) {
- const m = text1.length, n = text2.length;
- // 定义dp
- // dp[i][j] 返回text1[0..i-1],text2[0..j-1]的最长子序列
- const dp = new Array(m + 1).fill().map(_ => new Array(n + 1).fill(0));
- // base case [0][j]、[i][0] 返回0
-
- for (let i = 1; i <= m; i++) {
- for (let j = 1; j <= n; j++) {
- // i,j从1开始,索引从0开始,所以要-1
- if (text1[i - 1] === text2[j - 1]) {
- dp[i][j] = 1 + dp[i - 1][j - 1];
- } else {
- dp[i][j] = Math.max(dp[i][j - 1], dp[i - 1][j]);
- }
- }
- }
- return dp[m][n];
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\255\220\345\272\217\345\210\227\347\261\273\345\236\213/1425.\345\270\246\351\231\220\345\210\266\347\232\204\345\255\220\345\272\217\345\210\227\345\222\214.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\255\220\345\272\217\345\210\227\347\261\273\345\236\213/1425.\345\270\246\351\231\220\345\210\266\347\232\204\345\255\220\345\272\217\345\210\227\345\222\214.md"
deleted file mode 100644
index f9389df..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\255\220\345\272\217\345\210\227\347\261\273\345\236\213/1425.\345\270\246\351\231\220\345\210\266\347\232\204\345\255\220\345\272\217\345\210\227\345\222\214.md"
+++ /dev/null
@@ -1,31 +0,0 @@
-### [1425.带限制的子序列和](https://leetcode.cn/problems/constrained-subsequence-sum/) hard
-
-基础动态规划
-时间复杂度高O(M * k) M表示数组长度
-
-```js
-/**
- * @param {number[]} nums
- * @param {number} k
- * @return {number}
- */
-var constrainedSubsetSum = function (nums, k) {
- const len = nums.length;
- if (len === 0) return 0;
- const dp = new Array(len).fill(-Infinity);
-
- // base case
- dp[0] = nums[0];
-
- for (let i = 1; i < len; i++) {
- dp[i] = nums[i]; // base case
- for (let t = 1; t <= k; t++) {
- const j = i - t; // 区间[i-k,i] 的值都可以使用
- if (j < 0) break; // 越界处理
- dp[i] = Math.max(dp[i], dp[j] + nums[i]); // 转移方程
- }
- }
- // 返回最值
- return Math.max.apply(null, dp);
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\255\220\345\272\217\345\210\227\347\261\273\345\236\213/300.\346\234\200\351\225\277\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\255\220\345\272\217\345\210\227\347\261\273\345\236\213/300.\346\234\200\351\225\277\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md"
deleted file mode 100644
index edb3c9b..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\255\220\345\272\217\345\210\227\347\261\273\345\236\213/300.\346\234\200\351\225\277\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md"
+++ /dev/null
@@ -1,71 +0,0 @@
-### [300.最长递增子序列](https://leetcode.cn/problems/longest-increasing-subsequence/) medium
-
-时间复杂度O(N^2)
-- 动态规划
-- dp[i] 表示nums 前i个元素的最长递增子序列数
-- base case:全部初始化为1,因为前i个元素至少为1
-- 动态转移方程 dp[i] = max(dp[i], xxx);
-- 最后根据dp数组找出nums.length中最大的那个值
-
-```js
-/**
- * @param {number[]} nums
- * @return {number}
- */
-// 动态规划标准解法
-var lengthOfLIS = function (nums) {
- // 定义dp[i]表示已nums[i]结尾的最长递增子序列的个数
- // 初始化设置为1,表示至少包含自己元素
- let dp = new Array(nums.length).fill(1);
-
- for (let i = 0; i < nums.length; i++) {
- // 假设dp[0...i-1]已经有值,想办法求出dp[i]
- // 找出比nums[i]小的值,给这些 比nums[i]小的值 都加上+1,其中最大值为dp[i]的值
- for (let j = 0; j < i; j++) {
- if (nums[j] < nums[i]) {
- dp[i] = Math.max(dp[i], dp[j] + 1);
- }
- }
- }
-
- // dp[0...i]已经计算完毕,求出其中的最大值
- let res = 0;
- for (const item of dp) {
- res = Math.max(res, item);
- }
- return res;
-};
-
-```
-
-时间复杂度O(N*logN)
-耐心排序(patience sorting)解法
-
-```js
-var lengthOfLIS1 = function (nums) {
- let top = new Array(nums.length); // 牌顶的牌
- let p = 0; // 牌堆的数量
- for (let i = 0; i < nums.length; i++) {
- const current = nums[i];
-
- // 设置左右边界 右边界为牌堆的数量
- let left = 0,
- right = p;
- while (left < right) {
- let mid = Math.floor((left + right) / 2);
- if (top[mid] > current) {
- right = mid; // 缩小right
- } else if (top[mid] < current) {
- left = mid + 1; // 缩小left
- } else if (top[mid] === current) {
- right = mid;
- }
- }
-
- // 如果没找到合适的牌,新建一堆
- if (left === p) p++;
- top[left] = current;
- }
- return p;
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\255\220\345\272\217\345\210\227\347\261\273\345\236\213/5.\346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\344\270\262.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\255\220\345\272\217\345\210\227\347\261\273\345\236\213/5.\346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\344\270\262.md"
deleted file mode 100644
index 6a37090..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\255\220\345\272\217\345\210\227\347\261\273\345\236\213/5.\346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\344\270\262.md"
+++ /dev/null
@@ -1,40 +0,0 @@
-### [5.最长回文子串](https://leetcode.cn/problems/longest-palindromic-substring/) medium
-
-时间复杂度 O(N^2)
-空间复杂度 O(1)
-- 思路
-- 回文指的就是正反念都一样的串
-- 我们可以根据这个特性使用左右指针共同向外扩散,来判断是否为一个回文串
-- 我们还要考虑到,回文串长度的奇偶性
-- 这里我们先编写一个函数,函数返回回文串,这里使用l,r两个函数,兼容了奇偶的情况
-- 然后遍历这个字符串,分别找奇数情况(i,i)下的回文串,和偶数情况(i,i+1)下的回文串
-- 然后保留最长的那一个回文串返回即可
-
-```js
-/**
- * @param {string} s
- * @return {string}
- */
-var longestPalindrome = function (s) {
- let res = "";
-
- // 返回以l,r为中心的回文子串
- const help = (l, r) => {
- while (l >= 0 && r < s.length && s[l] === s[r]) {
- l--;
- r++;
- }
- // 退出循环时,[l-1,r+1]
- // substring是[i,j) ,所以l要+1
- return s.substring(l + 1, r);
- }
-
- for (let i = 0; i < s.length; i++) {
- let palindrome1 = help(i, i); // 以i为中心点的回文串
- let palindrome2 = help(i, i + 1); // 以[i,i+1]为中心点的回文子串
- res = palindrome1.length > res.length ? palindrome1 : res;
- res = palindrome2.length > res.length ? palindrome2 : res;
- }
- return res;
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\255\220\345\272\217\345\210\227\347\261\273\345\236\213/516.\346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\345\272\217\345\210\227.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\255\220\345\272\217\345\210\227\347\261\273\345\236\213/516.\346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\345\272\217\345\210\227.md"
deleted file mode 100644
index 46f0267..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\255\220\345\272\217\345\210\227\347\261\273\345\236\213/516.\346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\345\272\217\345\210\227.md"
+++ /dev/null
@@ -1,40 +0,0 @@
-### [516.最长回文子序列](https://leetcode.cn/problems/longest-palindromic-subsequence/) medium
-
-- 思路
-- 定义dp数组
- - 在子串s[i..j]中,最长的回文子序列为dp[i][j];
-- 动态转移方程
-```js
-if(s[i]==s[j]) dp[i][j] = dp[i+1][j-1]+2; // i,j是相等的 +2,然后i,j向内靠拢
-else dp[i][j] = max(dp[i+1][j],dp[i][j-1]); //取[i+1..j] [i..j+1]中较长的
-```
-- base case
- - 1个字符也是回文子序列,所以[i][i]为1
-- 注意遍历方向
- - 观察动态转移方程`dp[i][j] = dp[i+1][j-1]+2`;
- - i = i+1,而i是从0-->i,所以i要倒着遍历,才能计算出i+1
- - j=j-1; j是0 <-- j;所以j要从i+1开始,才能计算出j-1
-
-```js
-var longestPalindromeSubseq = function (s) {
- const n = s.length;
- if (n === 1) return 1;
- // 定义dp
- // 返回[i..j]的最长回文子串
- const dp = new Array(n).fill().map(_ => new Array(n).fill(0));
-
- for (let i = n - 1; i >= 0; i--) {
- // base case
- dp[i][i] = 1; // 自身位置就是自己,所以为1
- for (let j = i + 1; j < n; j++) {
- if (s[i] === s[j]) {
- dp[i][j] = dp[i + 1][j - 1] + 2;
- } else {
- dp[i][j] = Math.max(dp[i + 1][j], dp[i][j - 1]);
- }
- }
- }
-
- return dp[0][n - 1];
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\255\220\345\272\217\345\210\227\347\261\273\345\236\213/72.\347\274\226\350\276\221\350\267\235\347\246\273.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\255\220\345\272\217\345\210\227\347\261\273\345\236\213/72.\347\274\226\350\276\221\350\267\235\347\246\273.md"
deleted file mode 100644
index 6db6b73..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\345\255\220\345\272\217\345\210\227\347\261\273\345\236\213/72.\347\274\226\350\276\221\350\267\235\347\246\273.md"
+++ /dev/null
@@ -1,86 +0,0 @@
-### [72.编辑距离](https://leetcode.cn/problems/edit-distance/) hard
-
-动态规划(子序列类型问题)
-- 思路
-- 穷举出每一个动作所需要的操作数,取操作次数最小的动作
-- 定义i,j两个指针,从后向前去比较字符
-- 共有四种情况
-- 1.i、j位置上的元素相同,不需要操作
-- 2.i位置后面需要插入j,这个时候i不变,j的位置-1
-- 3.i位置需要删除,这个时候i-1,j不变
-- 4.i位置需要替换成j,这个时候i,j都需要-1
-- base case
-- 当有一方走到-1即表示到头,则需要把另一方的元素删除掉
-- if (i === -1) return j + 1; // 当i走到头,需要删除j的剩余元素,删除次数是j+1次
-- if (j === -1) return i + 1; // 同理
-
-```js
-/**
- * @param {string} word1
- * @param {string} word2
- * @return {number}
- */
-// 从上向下递归+备忘录消除子问题
-var minDistance = function (word1, word2) {
- const len1 = word1.length,
- len2 = word2.length;
- const memo = new Array(len1).fill(0).map((_) => new Array(len2).fill(-1)); // 初始化memo数组,设置-1为标识
-
- // 定义dp(i,j)函数返回word1[0,i],转成word2[0,j]的最小操作次数
- const dp = (i, j) => {
- // base case
- if (i === -1) return j + 1; // 当i走到头,需要删除j的剩余元素,删除次数是j+1次
- if (j === -1) return i + 1; // 同理
- if (memo[i][j] !== -1) return memo[i][j];
-
- if (word1[i] === word2[j]) {
- memo[i][j] = dp(i - 1, j - 1); // 元素相等不需要操作,指针同时前进
- } else {
- memo[i][j] = Math.min(
- dp(i, j - 1) + 1, // 插入
- dp(i - 1, j) + 1, // 删除
- dp(i - 1, j - 1) + 1 // 替换
- );
- }
- return memo[i][j];
- };
-
- return dp(len1 - 1, len2 - 1);
-};
-
-```
-
-自底向上-dp数组
-
-```js
-var minDistance = function (word1, word2) {
- const m = word1.length, n = word2.length;
- // dp[i][j]存储s1[0..i-1]->s2[0..j-1]的最少次数
- const dp = new Array(m + 1).fill().map(_ => new Array(n + 1).fill(0));
- // base case
- // i|j 走到头了,返回的就是剩下(i|j)的数量
- for (let i = 1; i <= m; i++) {
- dp[i][0] = i;
- }
- for (let j = 1; j <= n; j++) {
- dp[0][j] = j;
- }
-
- for (let i = 1; i <= m; i++) {
- for (let j = 1; j <= n; j++) {
- if (word1[i - 1] === word2[j - 1]) {
- // 跳过
- dp[i][j] = dp[i - 1][j - 1];
- } else {
- dp[i][j] = Math.min(
- dp[i][j - 1] + 1, // 插入
- dp[i - 1][j] + 1, // 删除
- dp[i - 1][j - 1] + 1, // 替换
- )
- }
- }
- }
-
- return dp[m][n];
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\350\202\241\347\245\250\344\271\260\345\215\226\351\227\256\351\242\230/121.\344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/\350\202\241\347\245\250\344\271\260\345\215\226\351\227\256\351\242\230/121.\344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272.md"
deleted file mode 100644
index 29e6799..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\350\202\241\347\245\250\344\271\260\345\215\226\351\227\256\351\242\230/121.\344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272.md"
+++ /dev/null
@@ -1,72 +0,0 @@
-### [121.买卖股票的最佳时机](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/) medium
-
-121:只能交易一次
-```
-dp[i][1][0] = max(dp[i-1][1][0], dp[i-1][1][1] + prices[i])
-dp[i][1][1] = max(dp[i-1][1][1], dp[i-1][0][0] - prices[i])
- = max(dp[i-1][1][1], -prices[i])
-解释:k = 0 的 base case,所以 dp[i-1][0][0] = 0。
-
-现在发现 k 都是 1,不会改变,即 k 对状态转移已经没有影响了。
-可以进行进一步化简去掉所有 k:
-dp[i][0] = max(dp[i-1][0], dp[i-1][1] + prices[i])
-dp[i][1] = max(dp[i-1][1], -prices[i])
-```
-
-[题解](https://labuladong.github.io/algo/3/28/96/)
-
-
-```js
-/**
- * @param {number[]} prices
- * @return {number}
- */
-var maxProfit = function (prices) {
- const n = prices.length;
- // 定义dp
- // dp[i][0,1] 0 <= i <= n-1 | 0表示未持有,1表示持有
- // 表示第i天,持有、未持有的最大利润
- const dp = new Array(n).fill(0).map((_) => new Array(2).fill(0));
- // base case
- // -1表示还没开始
- // 0 => 未持有就是 最大利润就是0
- // 1 => 持有,最后求最大值,方便比较给一个 -Infinity
- dp[-1] = [0, -Infinity];
-
- for (let i = 0; i < n; i++) {
- // 解释:今天要 未持有,有两种组状态可以选择出最大利润
- // 可以选择 max(昨天未持有的利润 或 将昨天持有的售出)
- dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1] + prices[i]);
-
- // 今天要 持有,有两种状态可以选择出最大利润
- // 可以选择 Max(昨天持有的利润 或 进行买入 )
- dp[i][1] = Math.max(dp[i - 1][1], -prices[i]);
- }
-
- return dp[n - 1][0]; // 返回最后一天未持有的最大利润
-};
-
-```
-
-优化空间复杂度
-
-```js
-var maxProfit = function (prices) {
- const n = prices.length;
- // 定义dp
- let dp_i_0 = 0,
- dp_i_1 = -Infinity;
-
- for (let i = 0; i < n; i++) {
- // 解释:今天要 未持有,有两种组状态可以选择出最大利润
- // 可以选择 max(昨天未持有的利润 或 将昨天持有的售出)
- dp_i_0 = Math.max(dp_i_0, dp_i_1 + prices[i]);
-
- // 今天要 持有,有两种状态可以选择出最大利润
- // 可以选择 Max(昨天持有的利润 或 进行买入 )
- dp_i_1 = Math.max(dp_i_1, -prices[i]);
- }
-
- return dp_i_0; // 返回最后一天未持有的最大利润
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\350\202\241\347\245\250\344\271\260\345\215\226\351\227\256\351\242\230/122.\344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272-ii.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/\350\202\241\347\245\250\344\271\260\345\215\226\351\227\256\351\242\230/122.\344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272-ii.md"
deleted file mode 100644
index 4762516..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\350\202\241\347\245\250\344\271\260\345\215\226\351\227\256\351\242\230/122.\344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272-ii.md"
+++ /dev/null
@@ -1,76 +0,0 @@
-### [122.买卖股票的最佳时机-ii](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/) medium
-
-122:不限制交易次数
-
-```
-base case:
-dp[-1][...][0] = dp[...][0][0] = 0
-dp[-1][...][1] = dp[...][0][1] = -infinity
-
-状态转移方程:
-dp[i][k][0] = max(dp[i-1][k][0], dp[i-1][k][1] + prices[i])
-dp[i][k][1] = max(dp[i-1][k][1], dp[i-1][k-1][0] - prices[i])
-
-相对于121题,122不限制k的交易次数所以: k-1 和 k 是一样的
-dp[i][k][0] = max(dp[i-1][k][0], dp[i-1][k][1] + prices[i])
-dp[i][k][1] = max(dp[i-1][k][1], dp[i-1][k][0] - prices[i])
-
-我们发现数组中的 k 已经不会改变了,也就是说不需要记录 k 这个状态了:
-dp[i][0] = max(dp[i-1][0], dp[i-1][1] + prices[i])
-dp[i][1] = max(dp[i-1][1], dp[i-1][0] - prices[i])
-```
-
-```js
-/**
- * @param {number[]} prices
- * @return {number}
- */
-var maxProfit = function (prices) {
- const n = prices.length;
- // 定义dp
- // dp[i][0,1] 0 <= i <= n-1 | 0表示未持有,1表示持有
- // 表示第i天,持有、未持有的最大利润
- const dp = new Array(n).fill(0).map((_) => new Array(2).fill(0));
- // base case
- // -1表示还没开始
- // 0 => 未持有就是 最大利润就是0
- // 1 => 持有,最后求最大值,方便比较给一个 -Infinity
- dp[-1] = [0, -Infinity];
-
- for (let i = 0; i < n; i++) {
- // 解释:今天要 未持有,有两种组状态可以选择出最大利润
- // 可以选择 max(昨天未持有的利润 或 将昨天持有的售出)
- dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1] + prices[i]);
-
- // 今天要 持有,有两种状态可以选择出最大利润
- // 可以选择 Max(昨天持有的利润 或 在昨天未持有的基础上 进行买入 )
- dp[i][1] = Math.max(dp[i - 1][1], dp[i - 1][0] - prices[i]); // 重点
- }
-
- return dp[n - 1][0]; // 返回最后一天未持有的最大利润
-};
-
-```
-
-优化空间复杂度
-
-```js
-var maxProfit = function (prices) {
- const n = prices.length;
- // 定义dp
- let dp_i_0 = 0,
- dp_i_1 = -Infinity;
-
- for (let i = 0; i < n; i++) {
- // 解释:今天要 未持有,有两种组状态可以选择出最大利润
- // 可以选择 max(昨天未持有的利润 或 将昨天持有的售出)
- dp_i_0 = Math.max(dp_i_0, dp_i_1 + prices[i]);
-
- // 今天要 持有,有两种状态可以选择出最大利润
- // 可以选择 Max(昨天持有的利润 或 进行买入 )
- dp_i_1 = Math.max(dp_i_1, dp_i_0 - prices[i]); // 重点
- }
-
- return dp_i_0; // 返回最后一天未持有的最大利润
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\350\202\241\347\245\250\344\271\260\345\215\226\351\227\256\351\242\230/123.\344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272-iii.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/\350\202\241\347\245\250\344\271\260\345\215\226\351\227\256\351\242\230/123.\344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272-iii.md"
deleted file mode 100644
index 0dd86c8..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\350\202\241\347\245\250\344\271\260\345\215\226\351\227\256\351\242\230/123.\344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272-iii.md"
+++ /dev/null
@@ -1,34 +0,0 @@
-### [123.买卖股票的最佳时机-iii](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/) hard
-
-原始的状态转移方程,没有可化简的地方
-`dp[i][k][0] = max(dp[i-1][k][0], dp[i-1][k][1] + prices[i])`
-`dp[i][k][1] = max(dp[i-1][k][1], dp[i-1][k-1][0] - prices[i])`
-
-```js
-// @lc code=start
-/**
- * @param {number[]} prices
- * @return {number}
- */
-var maxProfit = function (prices) {
- const n = prices.length;
- const maxK = 2;
- const dp = new Array(n)
- .fill()
- .map((_) => new Array(maxK + 1).fill().map((_) => new Array(2).fill(0)));
-
- for (let i = 0; i < n; i++) {
- for (let k = maxK; k >= 1; k--) {
- if (i - 1 === -1) {
- dp[i][k][0] = 0;
- dp[i][k][1] = -prices[i];
- continue;
- }
- dp[i][k][0] = Math.max(dp[i - 1][k][0], dp[i - 1][k][1] + prices[i]);
- dp[i][k][1] = Math.max(dp[i - 1][k][1], dp[i - 1][k - 1][0] - prices[i]);
- }
- }
-
- return dp[n - 1][maxK][0];
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\350\202\241\347\245\250\344\271\260\345\215\226\351\227\256\351\242\230/188.\344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272-iv.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/\350\202\241\347\245\250\344\271\260\345\215\226\351\227\256\351\242\230/188.\344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272-iv.md"
deleted file mode 100644
index f90fb02..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\350\202\241\347\245\250\344\271\260\345\215\226\351\227\256\351\242\230/188.\344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272-iv.md"
+++ /dev/null
@@ -1,33 +0,0 @@
-### [188.买卖股票的最佳时机-iv](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iv/) medium
-
-相对于123题:只能交易两次 `k=2` ,该题的k是不确定的
-
-```js
-// @lc code=start
-/**
- * @param {number} k
- * @param {number[]} prices
- * @return {number}
- */
-var maxProfit = function (k, prices) {
- const n = prices.length;
- const maxK = k;
- const dp = new Array(n)
- .fill()
- .map((_) => new Array(maxK + 1).fill().map((_) => new Array(2).fill(0)));
-
- for (let i = 0; i < n; i++) {
- for (let k = maxK; k >= 1; k--) {
- if (i - 1 === -1) {
- dp[i][k][0] = 0;
- dp[i][k][1] = -prices[i];
- continue;
- }
- dp[i][k][0] = Math.max(dp[i - 1][k][0], dp[i - 1][k][1] + prices[i]);
- dp[i][k][1] = Math.max(dp[i - 1][k][1], dp[i - 1][k - 1][0] - prices[i]);
- }
- }
-
- return dp[n - 1][maxK][0];
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\350\202\241\347\245\250\344\271\260\345\215\226\351\227\256\351\242\230/309.\346\234\200\344\275\263\344\271\260\345\215\226\350\202\241\347\245\250\346\227\266\346\234\272\345\220\253\345\206\267\345\206\273\346\234\237.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/\350\202\241\347\245\250\344\271\260\345\215\226\351\227\256\351\242\230/309.\346\234\200\344\275\263\344\271\260\345\215\226\350\202\241\347\245\250\346\227\266\346\234\272\345\220\253\345\206\267\345\206\273\346\234\237.md"
deleted file mode 100644
index f1c2f30..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\350\202\241\347\245\250\344\271\260\345\215\226\351\227\256\351\242\230/309.\346\234\200\344\275\263\344\271\260\345\215\226\350\202\241\347\245\250\346\227\266\346\234\272\345\220\253\345\206\267\345\206\273\346\234\237.md"
+++ /dev/null
@@ -1,93 +0,0 @@
-### [309.最佳买卖股票时机含冷冻期](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/) medium
-
-相对于122,也是不限交易次数,但是有一天的冷冻期
-也就是每次售出之后要等一天才能继续交易
-
-```
-dp[i][0] = max(dp[i-1][0], dp[i-1][1] + prices[i])
-dp[i][1] = max(dp[i-1][1], dp[i-2][0] - prices[i])
-解释:第 i 天选择 buy 的时候,要从 i-2 的状态转移,而不是 i-1 。
-```
-
-```
-base case:
-dp[-1][...][0] = dp[...][0][0] = 0
-dp[-1][...][1] = dp[...][0][1] = -infinity
-
-状态转移方程:
-dp[i][k][0] = max(dp[i-1][k][0], dp[i-1][k][1] + prices[i])
-dp[i][k][1] = max(dp[i-1][k][1], dp[i-1][k-1][0] - prices[i])
-
-相对于121题,122不限制k的交易次数所以: k-1 和 k 是一样的
-dp[i][k][0] = max(dp[i-1][k][0], dp[i-1][k][1] + prices[i])
-dp[i][k][1] = max(dp[i-1][k][1], dp[i-1][k][0] - prices[i])
-
-我们发现数组中的 k 已经不会改变了,也就是说不需要记录 k 这个状态了:
-dp[i][0] = max(dp[i-1][0], dp[i-1][1] + prices[i])
-dp[i][1] = max(dp[i-1][1], dp[i-1][0] - prices[i])
-
-从122专转化过来,309题,k不限次数,设置1天冷冻期
-dp[i][0] = max(dp[i-1][0], dp[i-1][1] + prices[i])
-dp[i][1] = max(dp[i-1][1], dp[i-2][0] - prices[i])
-解释:第 i 天选择 buy 的时候,要从 i-2 的状态转移,而不是 i-1 。
-```
-
-```js
-// @lc code=start
-/**
- * @param {number[]} prices
- * @return {number}
- */
-var maxProfit = function (prices) {
- const n = prices.length;
- // 定义dp
- // dp[i][0,1] 0 <= i <= n-1 | 0表示未持有,1表示持有
- // 表示第i天,持有、未持有的最大利润
- const dp = new Array(n).fill(0).map((_) => new Array(2).fill(0));
-
- // base case
- // -1表示还没开始
- // 0 => 未持有就是 最大利润就是0
- // 1 => 持有,最后求最大值,方便比较给一个 -Infinity
- dp[-1] = [0, -Infinity];
- dp[-2] = [0, -Infinity];
-
- for (let i = 0; i < n; i++) {
- // 解释:今天要 未持有,有两种组状态可以选择出最大利润
- // 可以选择 max(昨天未持有的利润 或 将昨天持有的售出)
- dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1] + prices[i]);
-
- // 今天要 持有,有两种状态可以选择出最大利润
- // 可以选择 Max(昨天持有的利润 或 在上次冷冻期未持有的基础上 进行买入 )
- dp[i][1] = Math.max(dp[i - 1][1], dp[i - 2][0] - prices[i]); // 重点
- }
-
- return dp[n - 1][0]; // 返回最后一天未持有的最大利润
-};
-
-```
-
-优化空间复杂度
-
-```js
-var maxProfit = function (prices) {
- const n = prices.length;
- // 定义dp
- let dp_i_0 = 0,
- dp_i_1 = -Infinity;
- let dp_pre_0 = 0; // 表示dp[i-2][0]
- for (let i = 0; i < n; i++) {
- let temp = dp_i_0;
- // 解释:今天要 未持有,有两种组状态可以选择出最大利润
- // 可以选择 max(昨天未持有的利润 或 将昨天持有的售出)
- dp_i_0 = Math.max(dp_i_0, dp_i_1 + prices[i]);
-
- // 今天要 持有,有两种状态可以选择出最大利润
- // 可以选择 Max(昨天持有的利润 或 在上次冷冻期未持有的基础上 进行买入 )
- dp_i_1 = Math.max(dp_i_1, dp_pre_0 - prices[i]); // 重点
- dp_pre_0 = temp;
- }
-
- return dp_i_0; // 返回最后一天未持有的最大利润
-};
-```
diff --git "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\350\202\241\347\245\250\344\271\260\345\215\226\351\227\256\351\242\230/714.\344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272\345\220\253\346\211\213\347\273\255\350\264\271.md" "b/example/\345\212\250\346\200\201\350\247\204\345\210\222/\350\202\241\347\245\250\344\271\260\345\215\226\351\227\256\351\242\230/714.\344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272\345\220\253\346\211\213\347\273\255\350\264\271.md"
deleted file mode 100644
index 319c430..0000000
--- "a/example/\345\212\250\346\200\201\350\247\204\345\210\222/\350\202\241\347\245\250\344\271\260\345\215\226\351\227\256\351\242\230/714.\344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272\345\220\253\346\211\213\347\273\255\350\264\271.md"
+++ /dev/null
@@ -1,66 +0,0 @@
-### [714.买卖股票的最佳时机含手续费](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/) medium
-
-
-相对于122,k都是无限,然后每次交易再扣除手续费就好
-```
-dp[i][0] = max(dp[i-1][0], dp[i-1][1] + prices[i])
-dp[i][1] = max(dp[i-1][1], dp[i-1][0] - prices[i] - fee)
-解释:相当于买入股票的价格升高了。
-在第一个式子里减也是一样的,相当于卖出股票的价格减小了。
-```
-
-```js
-/**
- * @param {number[]} prices
- * @param {number} fee
- * @return {number}
- */
-var maxProfit = function (prices, fee) {
- const n = prices.length;
- // 定义dp
- // dp[i][0,1] 0 <= i <= n-1 | 0表示未持有,1表示持有
- // 表示第i天,持有、未持有的最大利润
- const dp = new Array(n).fill(0).map((_) => new Array(2).fill(0));
- // base case
- // -1表示还没开始
- // 0 => 未持有就是 最大利润就是0
- // 1 => 持有,最后求最大值,方便比较给一个 -Infinity
- dp[-1] = [0, -Infinity];
-
- for (let i = 0; i < n; i++) {
- // 解释:今天要 未持有,有两种组状态可以选择出最大利润
- // 可以选择 max(昨天未持有的利润 或 将昨天持有的售出)
- dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1] + prices[i]);
-
- // 今天要 持有,有两种状态可以选择出最大利润
- // 可以选择 Max(昨天持有的利润 或 在昨天未持有的基础上 进行买入 再扣除手续费 )
- dp[i][1] = Math.max(dp[i - 1][1], dp[i - 1][0] - prices[i] - fee); // 重点
- }
-
- return dp[n - 1][0]; // 返回最后一天未持有的最大利润
-};
-
-```
-
-优化空间复杂度
-
-```js
-var maxProfit = function (prices, fee) {
- const n = prices.length;
- // 定义dp
- let dp_i_0 = 0,
- dp_i_1 = -Infinity;
-
- for (let i = 0; i < n; i++) {
- // 解释:今天要 未持有,有两种组状态可以选择出最大利润
- // 可以选择 max(昨天未持有的利润 或 将昨天持有的售出)
- dp_i_0 = Math.max(dp_i_0, dp_i_1 + prices[i]);
-
- // 今天要 持有,有两种状态可以选择出最大利润
- // 可以选择 Max(昨天持有的利润 或 进行买入 再扣除手续费)
- dp_i_1 = Math.max(dp_i_1, dp_i_0 - prices[i] - fee); // 重点
- }
-
- return dp_i_0; // 返回最后一天未持有的最大利润
-};
-```
diff --git "a/example/\345\233\236\346\272\257/17.\347\224\265\350\257\235\345\217\267\347\240\201\347\232\204\345\255\227\346\257\215\347\273\204\345\220\210.md" "b/example/\345\233\236\346\272\257/17.\347\224\265\350\257\235\345\217\267\347\240\201\347\232\204\345\255\227\346\257\215\347\273\204\345\220\210.md"
deleted file mode 100644
index c84b77f..0000000
--- "a/example/\345\233\236\346\272\257/17.\347\224\265\350\257\235\345\217\267\347\240\201\347\232\204\345\255\227\346\257\215\347\273\204\345\220\210.md"
+++ /dev/null
@@ -1,45 +0,0 @@
-## [17.电话号码的字母组合](https://leetcode.cn/problems/letter-combinations-of-a-phone-number/) medium
-
-```js
-/**
- * @param {string} digits
- * @return {string[]}
- */
-// 元素【无重】【不可复用】
-var letterCombinations = function (digits) {
- // 构建一个映射关系
- let mapping = [
- "",
- "",
- "abc",
- "def",
- "ghi",
- "jkl",
- "mno",
- "pqrs",
- "tuv",
- "wxyz",
- ];
- const res = [];
- if (digits === "") return [];
- const backTrack = (start, track) => {
- // base case
- if (track.length === digits.length) {
- res.push(track.join(""));
- return;
- }
-
- for (let i = start; i < digits.length; i++) {
- const digit = Number(digits[i]); // digits==>"23", digit==>2
- for (let c of mapping[digit].split("")) {
- track.push(c);
- backTrack(i + 1, track);
- track.pop();
- }
- }
- };
-
- backTrack(0, []);
- return res;
-};
-```
diff --git "a/example/\345\233\236\346\272\257/216.\347\273\204\345\220\210\346\200\273\345\222\214-iii.md" "b/example/\345\233\236\346\272\257/216.\347\273\204\345\220\210\346\200\273\345\222\214-iii.md"
deleted file mode 100644
index 2976e94..0000000
--- "a/example/\345\233\236\346\272\257/216.\347\273\204\345\220\210\346\200\273\345\222\214-iii.md"
+++ /dev/null
@@ -1,39 +0,0 @@
-## [216.组合总和-iii](https://leetcode.cn/problems/combination-sum-iii/) medium
-
-
-```js
-/**
- * @param {number} k
- * @param {number} n
- * @return {number[][]}
- */
-// 元素【无重】【不可复选】
-// 使用数字1-9
-// n为target
-// k为组成target所需要的元素个数
-var combinationSum3 = function (k, n) {
- const nums = new Array(9).fill(0).map((_, i) => i + 1);
- const res = [];
- let targetSum = 0;
- const backTrack = (start, track) => {
- // base case
- if (track.length === k && targetSum === n) {
- res.push([...track]);
- return;
- }
- if (track.length > k || targetSum > n) return;
- for (let i = start; i < nums.length; i++) {
- // 做选择
- track.push(nums[i]);
- targetSum += nums[i];
-
- backTrack(i + 1, track);
- // 撤销选择
- track.pop();
- targetSum -= nums[i];
- }
- };
- backTrack(0, []);
- return res;
-};
-```
diff --git "a/example/\345\233\236\346\272\257/39.\347\273\204\345\220\210\346\200\273\345\222\214.md" "b/example/\345\233\236\346\272\257/39.\347\273\204\345\220\210\346\200\273\345\222\214.md"
deleted file mode 100644
index 4f31a19..0000000
--- "a/example/\345\233\236\346\272\257/39.\347\273\204\345\220\210\346\200\273\345\222\214.md"
+++ /dev/null
@@ -1,34 +0,0 @@
-## [39.组合总和](https://leetcode.cn/problems/combination-sum/) medium
-
-```js
-/**
- * @param {number[]} candidates
- * @param {number} target
- * @return {number[][]}
- */
-// 元素【无重】【可复选】
-var combinationSum = function (candidates, target) {
- const res = [];
- let targetSum = 0;
- const backTrack = (start, track) => {
- // base case
- if (targetSum === target) {
- res.push([...track]);
- return;
- }
- // 因为targetSum是累加的,所以当targetSum > target是,可以直接停止递归
- if (targetSum > target) return;
- for (let i = start; i < candidates.length; i++) {
- // 做选择
- track.push(candidates[i]);
- targetSum += candidates[i];
- backTrack(i, track);
- // 撤销选择
- track.pop();
- targetSum -= candidates[i];
- }
- };
- backTrack(0, []);
- return res;
-};
-```
diff --git "a/example/\345\233\236\346\272\257/40.\347\273\204\345\220\210\346\200\273\345\222\214-ii.md" "b/example/\345\233\236\346\272\257/40.\347\273\204\345\220\210\346\200\273\345\222\214-ii.md"
deleted file mode 100644
index ad3e85c..0000000
--- "a/example/\345\233\236\346\272\257/40.\347\273\204\345\220\210\346\200\273\345\222\214-ii.md"
+++ /dev/null
@@ -1,41 +0,0 @@
-## [40.组合总和-ii](https://leetcode.cn/problems/combination-sum-ii/) medium
-
-
-```js
-/**
- * @param {number[]} candidates
- * @param {number} target
- * @return {number[][]}
- */
-// 元素【可重】【不可复选】
-// 注意剪枝
-var combinationSum2 = function (candidates, target) {
- const res = [];
- let targetSum = 0;
- candidates.sort((a, b) => a - b);
-
- const backTrack = (start, track) => {
- // base case
- if (targetSum === target) {
- res.push([...track]);
- return;
- }
- // 因为targetSum是累加的,所以当targetSum > target是,可以直接停止递归
- if (targetSum > target) return;
-
- for (let i = start; i < candidates.length; i++) {
- // 对重复的,只遍历一次
- if (i > start && candidates[i] === candidates[i - 1]) continue;
- // 做选择
- track.push(candidates[i]);
- targetSum += candidates[i];
- backTrack(i + 1, track);
- // 撤销选择
- track.pop();
- targetSum -= candidates[i];
- }
- };
- backTrack(0, []);
- return res;
-};
-```
diff --git "a/example/\345\233\236\346\272\257/46.\345\205\250\346\216\222\345\210\227.md" "b/example/\345\233\236\346\272\257/46.\345\205\250\346\216\222\345\210\227.md"
deleted file mode 100644
index b2053be..0000000
--- "a/example/\345\233\236\346\272\257/46.\345\205\250\346\216\222\345\210\227.md"
+++ /dev/null
@@ -1,41 +0,0 @@
-## [46.全排列](https://leetcode.cn/problems/permutations/) medium
-
-时间复杂度 O(N!) 1* 2 * 3 ... (N -1) * N
-空间复杂度 O(N)
-- 思路(回溯算法)
-- 看成遍历一颗多叉树
-- 当遍历到叶子结点的时候,走过的路径就是一个排列结果
-
-```js
-/**
- * @param {number[]} nums
- * @return {number[][]}
- */
-// 元素【无重】【不可复选】
-var permute = function (nums) {
- let res = [];
- var backTrack = function (nums, track) {
- if (nums.length === track.length) {
- // 如果使用 res.push(track);
- // track会被引用,回溯算法在撤销选择的时候,修改track的值,res中的track也会被修改掉!!!
- res.push([...track]);
- return;
- }
-
- for (let num of nums) {
- // 跳过已经存在的
- if (track.includes(num)) {
- continue;
- }
- // 做选择
- track.push(num);
- backTrack(nums, track);
- // 撤销选择
- track.pop();
- }
- };
-
- backTrack(nums, []);
- return res;
-};
-```
diff --git "a/example/\345\233\236\346\272\257/47.\345\205\250\346\216\222\345\210\227-ii.md" "b/example/\345\233\236\346\272\257/47.\345\205\250\346\216\222\345\210\227-ii.md"
deleted file mode 100644
index 5b5ffee..0000000
--- "a/example/\345\233\236\346\272\257/47.\345\205\250\346\216\222\345\210\227-ii.md"
+++ /dev/null
@@ -1,41 +0,0 @@
-## [47.全排列-ii](https://leetcode.cn/problems/permutations-ii/) medium
-
-
-```js
-/**
- * @param {number[]} nums
- * @return {number[][]}
- */
-// 元素【可重复】【不可复选】
-// 要点:保证相同元素在排列中的相对位置保持不变
-var permuteUnique = function (nums) {
- const res = [];
- const used = new Array(nums.length).fill(false);
- nums.sort((a, b) => a - b);
- const backTrack = (track) => {
- if (track.length === nums.length) {
- res.push([...track]);
- return;
- }
-
- for (let i = 0; i < nums.length; i++) {
- if (used[i]) continue;
- // 剪枝
- // 如果前面的相邻相等元素没有用过,则跳过
- // 当出现重复元素时,比如输入 nums = [1,2,2',2''],2' 只有在 2 已经被使用的情况下才会被选择
- // 同理,2'' 只有在 2' 已经被使用的情况下才会被选择,这就保证了相同元素在排列中的相对位置保证固定
- if (i > 0 && nums[i] === nums[i - 1] && !used[i - 1]) continue;
- // 做选择
- track.push(nums[i]);
- used[i] = true;
- backTrack(track);
- // 撤销选择
- track.pop();
- used[i] = false;
- }
- };
-
- backTrack([]);
- return res;
-};
-```
diff --git "a/example/\345\233\236\346\272\257/491.\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md" "b/example/\345\233\236\346\272\257/491.\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md"
deleted file mode 100644
index 56e1e6d..0000000
--- "a/example/\345\233\236\346\272\257/491.\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md"
+++ /dev/null
@@ -1,38 +0,0 @@
-## [491.递增子序列](https://leetcode.cn/problems/increasing-subsequences/) medium
-
-- 这道题和40题很像
-- 不过增加了一个条件:元素必须是递增的,所以我们需要添加一个, track[last] > nums[i]进行过滤,保证元素递增
-- 还有一点,在40题中,我们对nums进行排序,进行剪枝,这里不能修改原数组,我们使用set剪枝,避免使用重复的元素
-
-
-```js
-/**
- * @param {number[]} nums
- * @return {number[][]}
- */
-// 元素【可重】【不可复选】
-// 注意剪枝
-var findSubsequences = function (nums) {
- const res = [];
- const backTrack = (start, track) => {
- // base case
- if (track.length >= 2) {
- res.push([...track]);
- }
- const set = new Set(); // 在一个递归中去重
- for (let i = start; i < nums.length; i++) {
- // 保证track的结果是升序的
- if (track.length !== 0 && track[track.length - 1] > nums[i]) continue;
- if (set.has(nums[i])) continue; // 保证不重复使用相同的元素
- // 做选择
- track.push(nums[i]);
- set.add(nums[i]);
- backTrack(i + 1, track);
- // 撤销选择
- track.pop();
- }
- };
- backTrack(0, []);
- return res;
-};
-```
diff --git "a/example/\345\233\236\346\272\257/51.n-\347\232\207\345\220\216.md" "b/example/\345\233\236\346\272\257/51.n-\347\232\207\345\220\216.md"
deleted file mode 100644
index b32d553..0000000
--- "a/example/\345\233\236\346\272\257/51.n-\347\232\207\345\220\216.md"
+++ /dev/null
@@ -1,53 +0,0 @@
-## [51.n-皇后](https://leetcode.cn/problems/n-queens/) hard
-
-
-```js
-/**
- * @param {number} n
- * @return {string[][]}
- */
-var solveNQueens = function (n) {
- let res = [];
- // 初始化空棋盘: '.' 表示空 'Q'表示皇后
- let board = new Array(n).fill(0).map(() => new Array(n).fill("."));
- backTrack(0);
- return res;
-
- // 判断board[row][col]位置是否可以放Q
- function isValid(row, col) {
- // 判断头上⬆的元素是否有Q
- for (let i = 0; i <= row; i++) {
- if (board[i][col] === "Q") return false;
- }
- // 判断右上↗️的元素是否有Q
- for (let i = row - 1, j = col + 1; i >= 0 && j < n; i--, j++) {
- if (board[i][j] === "Q") return false;
- }
- // 判断左上↖️的元素是否有Q
- for (let i = row - 1, j = col - 1; i >= 0 && j >= 0; i--, j--) {
- if (board[i][j] === "Q") return false;
- }
- return true;
- }
-
- function backTrack(row) {
- // 触发结束条件
- if (row === board.length) {
- // 将['.','.','.','.']join成字符串返回
- res.push(board.map((row) => row.join("")));
- return;
- }
- for (let col = 0; col < n; col++) {
- // 排除不合法选择
- if (!isValid(row, col)) {
- continue;
- }
- // 做选择
- board[row][col] = "Q";
- backTrack(row + 1);
- // 撤销选择
- board[row][col] = ".";
- }
- }
-};
-```
diff --git "a/example/\345\233\236\346\272\257/733.\345\233\276\345\203\217\346\270\262\346\237\223.md" "b/example/\345\233\236\346\272\257/733.\345\233\276\345\203\217\346\270\262\346\237\223.md"
deleted file mode 100644
index baa9d7c..0000000
--- "a/example/\345\233\236\346\272\257/733.\345\233\276\345\203\217\346\270\262\346\237\223.md"
+++ /dev/null
@@ -1,30 +0,0 @@
-## [733.图像渲染](https://leetcode.cn/problems/flood-fill/) easy
-
-
-```js
-/**
- * @param {number[][]} image
- * @param {number} sr
- * @param {number} sc
- * @param {number} color
- * @return {number[][]}
- */
-var floodFill = function (image, sr, sc, color) {
- const m = image.length, n = image[0].length;
- const origColor = image[sr][sc];
- const fill = (i, j) => {
- if (i < 0 || j < 0 || i >= m || j >= n) return; // 越界情况
- if (image[i][j] !== origColor) return; // 不是[sr,sc]点的color
- if (image[i][j] === -1) return;
-
- image[i][j] = -1; // 使用-1标识已经走过
- fill(i - 1, j);
- fill(i + 1, j);
- fill(i, j + 1);
- fill(i, j - 1);
- image[i][j] = color; // 在递归向上回溯的时候设置为新的color
- }
- fill(sr, sc);
- return image;
-};
-```
diff --git "a/example/\345\233\236\346\272\257/77.\347\273\204\345\220\210.md" "b/example/\345\233\236\346\272\257/77.\347\273\204\345\220\210.md"
deleted file mode 100644
index 4a7e39f..0000000
--- "a/example/\345\233\236\346\272\257/77.\347\273\204\345\220\210.md"
+++ /dev/null
@@ -1,35 +0,0 @@
-## [77.组合](https://leetcode.cn/problems/combinations/) medium
-
-- 思路
-- 跟78题.子集问题类似
-- 其实就是收集指定层数K的子集
-
-```js
-/**
- * @param {number} n
- * @param {number} k
- * @return {number[][]}
- */
-// 元素【无重】【不可复选】
-var combine = function (n, k) {
- let res = [];
-
- const backTrack = (start, track) => {
- // base case
- if (k === track.length) {
- res.push([...track]);
- return;
- }
- for (let i = start; i <= n; i++) {
- // 做选择
- track.push(i);
- backTrack(i + 1, track);
- // 撤销选择
- track.pop();
- }
- };
-
- backTrack(1, []);
- return res;
-};
-```
diff --git "a/example/\345\233\236\346\272\257/78.\345\255\220\351\233\206.md" "b/example/\345\233\236\346\272\257/78.\345\255\220\351\233\206.md"
deleted file mode 100644
index dcc198f..0000000
--- "a/example/\345\233\236\346\272\257/78.\345\255\220\351\233\206.md"
+++ /dev/null
@@ -1,34 +0,0 @@
-## [78.子集](https://leetcode.cn/problems/subsets/) medium
-
-
-时间复杂度 O(2^N)
-空间复杂度 O(N)
-- 思路(回溯算法)
-- 用递归模拟所有情况
-- 保证接的数字都是后面的数字
-- 收集所有到达终点的情况,并返回
-
-```js
-/**
- * @param {number[]} nums
- * @return {number[][]}
- */
-// 元素【无重】【不可复选】
-// 需要使用start,保证元素无重
-var subsets = function (nums) {
- const res = [];
-
- const backTrack = (start, track) => {
- res.push([...track]);
- for (let i = start; i < nums.length; i++) {
- // 做选择
- track.push(nums[i]);
- backTrack(i + 1, track); // i+1,保证下次进入,不会再次选中i上的元素
- // 撤销选择
- track.pop();
- }
- };
- backTrack(0, []);
- return res;
-};
-```
diff --git "a/example/\345\233\236\346\272\257/784.\345\255\227\346\257\215\345\244\247\345\260\217\345\206\231\345\205\250\346\216\222\345\210\227.md" "b/example/\345\233\236\346\272\257/784.\345\255\227\346\257\215\345\244\247\345\260\217\345\206\231\345\205\250\346\216\222\345\210\227.md"
deleted file mode 100644
index acefa6e..0000000
--- "a/example/\345\233\236\346\272\257/784.\345\255\227\346\257\215\345\244\247\345\260\217\345\206\231\345\205\250\346\216\222\345\210\227.md"
+++ /dev/null
@@ -1,86 +0,0 @@
-## [784.字母大小写全排列](https://leetcode.cn/problems/letter-case-permutation/) medium
-
-回溯
-
-
-
-
图解
-
-
-```js
-/**
- * @param {string} s
- * @return {string[]}
- */
-var letterCasePermutation = function (s) {
- const res = [];
- const isNumber = (c) => parseInt(c).toString() === 'NaN' ? false : true;
-
- const backTrack = (start, track, sArr) => {
- track.push(sArr.join(''));
- for (let i = start; i < sArr.length; i++) {
- const c = sArr[i];
- if (isNumber(c)) continue;
- // 'a' ==> 97
- // 'A' ==> 65
- if (c >= 'a') {
- // 小写
- sArr[i] = c.toUpperCase();
- backTrack(i + 1, track, sArr);
- sArr[i] = c.toLowerCase();
- } else {
- // 大写
- sArr[i] = c.toLowerCase();
- backTrack(i + 1, track, sArr);
- sArr[i] = c.toUpperCase();
- }
- }
- }
- backTrack(0, res, [...s]);
- return res;
-};
-```
-
-广度优先搜索
-- 思路
-- 时间复杂度 O(n * 2^n)
-- 空间复杂度 O(n * 2^n)
-- 使用一个队列存储搜索的元素
-- 累加队列的第一个元素,当元素的长度等于s的长度,就是一个组合
-- 当s[p]是一个字母,就把这个字母转换一下大小写,然后当做一个新组合入队
-- 当s[p]是一个数字,直接累加到队头元素即可
-
-```js
-var letterCasePermutation = function (s) {
- const ans = [];
- const q = [""];
- while (q.length !== 0) {
- // console.log(q);
- const cur = q[0];
- const p = cur.length;
- if (p === s.length) {
- ans.push(cur);
- q.shift();
- } else {
- if (isLetter(s[p])) {
- q.push(cur + swapCase(s[p]));
- }
- q[0] += s[p];
- }
- }
- return ans;
-};
-
-const swapCase = (ch) => {
- if ('a' <= ch && ch <= 'z') {
- return ch.toUpperCase();
- }
- if ('A' <= ch && ch <= 'Z') {
- return ch.toLowerCase();
- }
-}
-
-const isLetter = (ch) => {
- return 'a' <= ch && ch <= 'z' || 'A' <= ch && ch <= 'Z';
-}
-```
diff --git "a/example/\345\233\236\346\272\257/79.\345\215\225\350\257\215\346\220\234\347\264\242.md" "b/example/\345\233\236\346\272\257/79.\345\215\225\350\257\215\346\220\234\347\264\242.md"
deleted file mode 100644
index fa39878..0000000
--- "a/example/\345\233\236\346\272\257/79.\345\215\225\350\257\215\346\220\234\347\264\242.md"
+++ /dev/null
@@ -1,56 +0,0 @@
-## [79.单词搜索](https://leetcode.cn/problems/word-search/) medium
-
-[题解](https://leetcode.cn/problems/word-search/solution/shou-hua-tu-jie-79-dan-ci-sou-suo-dfs-si-lu-de-cha/)
-
-```js
-/**
- * @param {character[][]} board
- * @param {string} word
- * @return {boolean}
- */
-var exist = function (board, word) {
- const m = board.length,
- n = board[0].length;
- // false表示未访问,true表示访问过
- const visited = new Array(m).fill().map((_) => new Array(n).fill(false));
- const len = word.length;
-
- // 定义函数
- // 返回 [i,j]为起点能够找出 word[p..end]
- const canFind = (i, j, p) => {
- if (p === len) {
- // p指针越界了,返回true
- return true;
- }
-
- // 越界直接返回false
- if (i < 0 || i >= m || j < 0 || j >= n) return false;
- // 访问过 或者不是要寻找的目标 也返回false
- if (visited[i][j] || board[i][j] !== word[p]) return false;
-
- // 剩下的情况就是 board[i][j] === word[p]
-
- visited[i][j] = true; // 访问
- // 访问上下左右
- const canFindRes =
- canFind(i, j + 1, p + 1) ||
- canFind(i, j - 1, p + 1) ||
- canFind(i + 1, j, p + 1) ||
- canFind(i - 1, j, p + 1);
-
- if (canFindRes) return true; // 如果能找到 返回true
-
- visited[i][j] = false; // 撤销访问
- return false;
- };
-
- for (let i = 0; i < m; i++) {
- for (let j = 0; j < n; j++) {
- if (board[i][j] === word[0] && canFind(i, j, 0)) {
- return true;
- }
- }
- }
- return false;
-};
-```
diff --git "a/example/\345\233\236\346\272\257/90.\345\255\220\351\233\206-ii.md" "b/example/\345\233\236\346\272\257/90.\345\255\220\351\233\206-ii.md"
deleted file mode 100644
index a705ca5..0000000
--- "a/example/\345\233\236\346\272\257/90.\345\255\220\351\233\206-ii.md"
+++ /dev/null
@@ -1,40 +0,0 @@
-## [90.子集-ii](https://leetcode.cn/problems/subsets-ii/) medium
-
-- 思路
-- 解法还是和78.子集一样
-- 不过因为题目包含重复元素,所以在排列的时候,要把重复的元素给过滤掉
-- 也就是对树进行剪枝操作
-- 体现在代码上,需要先进行排序,让相同的元素靠在一起,如果发现 nums[i] == nums[i-1],则跳过
-
-```js
-/**
- * @param {number[]} nums
- * @return {number[][]}
- */
-// 元素【可重】【不可复选】
-// 要点:进行剪枝
-// 如果一个节点有多条值相同的树枝相邻,则只遍历第一条,剩下的都剪掉,不要去遍历
-var subsetsWithDup = function (nums) {
- const res = [];
- nums.sort((a, b) => a - b);
-
- const backTrack = (start, track) => {
- res.push([...track]);
-
- for (let i = start; i < nums.length; i++) {
- // 剪枝
- if (i > start && nums[i] === nums[i - 1]) {
- continue;
- }
- // 做选择
- track.push(nums[i]);
- backTrack(i + 1, track);
- // 撤销选择
- track.pop();
- }
- };
-
- backTrack(0, []);
- return res;
-};
-```
diff --git "a/example/\345\233\236\346\272\257/\345\211\221\346\214\207Offer38.\345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227.md" "b/example/\345\233\236\346\272\257/\345\211\221\346\214\207Offer38.\345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227.md"
deleted file mode 100644
index 8a7ba3b..0000000
--- "a/example/\345\233\236\346\272\257/\345\211\221\346\214\207Offer38.\345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227.md"
+++ /dev/null
@@ -1,39 +0,0 @@
-## [剑指 Offer 38. 字符串的排列](https://leetcode.cn/problems/zi-fu-chuan-de-pai-lie-lcof/) medium
-
-跟47.全排列-ii 类似
-
-```js
-/**
- * @param {string} s
- * @return {string[]}
- */
-// 元素【可重】【不可复选】
-var permutation = function (s) {
- const res = [];
- // 对s进行排序
- s = s.split("").sort().join("");
-
- // 记录使用情况,防止使用重复元素
- const used = new Array(s.length).fill(false);
- const backTrack = (track) => {
- if (track.length === s.length) {
- res.push(track.join(""));
- }
- for (let i = 0; i < s.length; i++) {
- // 剪枝
- if (i > 0 && s[i] === s[i - 1] && !used[i - 1]) continue;
- // 保证元素不重复
- if (used[i]) continue;
- // 做选择
- track.push(s[i]);
- used[i] = true;
- backTrack(track);
- // 撤销选择
- track.pop();
- used[i] = false;
- }
- };
- backTrack([]);
- return res;
-};
-```
diff --git "a/example/\345\233\236\346\272\257/\345\211\221\346\214\207OfferII079.\346\211\200\346\234\211\345\255\220\351\233\206.md" "b/example/\345\233\236\346\272\257/\345\211\221\346\214\207OfferII079.\346\211\200\346\234\211\345\255\220\351\233\206.md"
deleted file mode 100644
index 1cf26d2..0000000
--- "a/example/\345\233\236\346\272\257/\345\211\221\346\214\207OfferII079.\346\211\200\346\234\211\345\255\220\351\233\206.md"
+++ /dev/null
@@ -1,30 +0,0 @@
-## [剑指 Offer II 079. 所有子集](https://leetcode.cn/problems/TVdhkn/) medium
-
-[本题与主站 78 题相同](https://leetcode-cn.com/problems/subsets/)
-
-```js
-/**
- * @param {number[]} nums
- * @return {number[][]}
- */
-// 元素【无重】【不可复选】
-var subsets = function (nums) {
- const res = [];
- const backTrack = (start, track) => {
- res.push([...track]);
-
- for (let i = start; i < nums.length; i++) {
- // 做选择
- track.push(nums[i]);
-
- backTrack(i + 1, track);
- // 撤销选择
- track.pop();
- }
- };
-
- backTrack(0, []);
-
- return res;
-};
-```
diff --git "a/example/\345\233\236\346\272\257/\345\211\221\346\214\207OfferII080.\345\220\253\346\234\211k\344\270\252\345\205\203\347\264\240\347\232\204\347\273\204\345\220\210.md" "b/example/\345\233\236\346\272\257/\345\211\221\346\214\207OfferII080.\345\220\253\346\234\211k\344\270\252\345\205\203\347\264\240\347\232\204\347\273\204\345\220\210.md"
deleted file mode 100644
index daa6f99..0000000
--- "a/example/\345\233\236\346\272\257/\345\211\221\346\214\207OfferII080.\345\220\253\346\234\211k\344\270\252\345\205\203\347\264\240\347\232\204\347\273\204\345\220\210.md"
+++ /dev/null
@@ -1,33 +0,0 @@
-## [剑指 Offer II 080. 含有 k 个元素的组合](https://leetcode.cn/problems/uUsW3B/) medium
-
-[本题与主站 77 题相同](https://leetcode-cn.com/problems/combinations/)
-
-```js
-/**
- * @param {number} n
- * @param {number} k
- * @return {number[][]}
- */
-// 元素【无重】【不可复选】
-var combine = function (n, k) {
- let res = [];
-
- const backTrack = (start, track) => {
- // base case
- if (k === track.length) {
- res.push([...track]);
- return;
- }
- for (let i = start; i <= n; i++) {
- // 做选择
- track.push(i);
- backTrack(i + 1, track);
- // 撤销选择
- track.pop();
- }
- };
-
- backTrack(1, []);
- return res;
-};
-```
diff --git "a/example/\345\233\236\346\272\257/\345\211\221\346\214\207OfferII081.\345\205\201\350\256\270\351\207\215\345\244\215\351\200\211\346\213\251\345\205\203\347\264\240\347\232\204\347\273\204\345\220\210.md" "b/example/\345\233\236\346\272\257/\345\211\221\346\214\207OfferII081.\345\205\201\350\256\270\351\207\215\345\244\215\351\200\211\346\213\251\345\205\203\347\264\240\347\232\204\347\273\204\345\220\210.md"
deleted file mode 100644
index 65b4b53..0000000
--- "a/example/\345\233\236\346\272\257/\345\211\221\346\214\207OfferII081.\345\205\201\350\256\270\351\207\215\345\244\215\351\200\211\346\213\251\345\205\203\347\264\240\347\232\204\347\273\204\345\220\210.md"
+++ /dev/null
@@ -1,36 +0,0 @@
-## [剑指 Offer II 081. 允许重复选择元素的组合](https://leetcode.cn/problems/Ygoe9J/) medium
-
-[本题与主站 39 题相同](https://leetcode-cn.com/problems/combination-sum/)
-
-```js
-/**
- * @param {number[]} candidates
- * @param {number} target
- * @return {number[][]}
- */
-// 元素【无重】【可复选】
-var combinationSum = function (candidates, target) {
- const res = [];
- let targetSum = 0;
- const backTrack = (start, track) => {
- // base case
- if (targetSum === target) {
- res.push([...track]);
- return;
- }
- // 因为targetSum是累加的,所以当targetSum > target是,可以直接停止递归
- if (targetSum > target) return;
- for (let i = start; i < candidates.length; i++) {
- // 做选择
- track.push(candidates[i]);
- targetSum += candidates[i];
- backTrack(i, track);
- // 撤销选择
- track.pop();
- targetSum -= candidates[i];
- }
- };
- backTrack(0, []);
- return res;
-};
-```
diff --git "a/example/\345\233\236\346\272\257/\345\211\221\346\214\207OfferII082.\345\220\253\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\347\273\204\345\220\210.md" "b/example/\345\233\236\346\272\257/\345\211\221\346\214\207OfferII082.\345\220\253\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\347\273\204\345\220\210.md"
deleted file mode 100644
index 011fe21..0000000
--- "a/example/\345\233\236\346\272\257/\345\211\221\346\214\207OfferII082.\345\220\253\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\347\273\204\345\220\210.md"
+++ /dev/null
@@ -1,42 +0,0 @@
-## [剑指 Offer II 082. 含有重复元素集合的组合](https://leetcode.cn/problems/4sjJUc/) medium
-
-[本题与主站 40 题相同](https://leetcode-cn.com/problems/combination-sum-ii/)
-
-```js
-/**
- * @param {number[]} candidates
- * @param {number} target
- * @return {number[][]}
- */
-// 元素【可重】【不可复选】
-// 注意剪枝
-var combinationSum2 = function (candidates, target) {
- const res = [];
- let targetSum = 0;
- candidates.sort((a, b) => a - b);
-
- const backTrack = (start, track) => {
- // base case
- if (targetSum === target) {
- res.push([...track]);
- return;
- }
- // 因为targetSum是累加的,所以当targetSum > target是,可以直接停止递归
- if (targetSum > target) return;
-
- for (let i = start; i < candidates.length; i++) {
- // 对重复的,只遍历一次
- if (i > start && candidates[i] === candidates[i - 1]) continue;
- // 做选择
- track.push(candidates[i]);
- targetSum += candidates[i];
- backTrack(i + 1, track);
- // 撤销选择
- track.pop();
- targetSum -= candidates[i];
- }
- };
- backTrack(0, []);
- return res;
-};
-```
diff --git "a/example/\345\233\236\346\272\257/\345\211\221\346\214\207OfferII083.\346\262\241\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\345\205\250\346\216\222\345\210\227.md" "b/example/\345\233\236\346\272\257/\345\211\221\346\214\207OfferII083.\346\262\241\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\345\205\250\346\216\222\345\210\227.md"
deleted file mode 100644
index dc2d753..0000000
--- "a/example/\345\233\236\346\272\257/\345\211\221\346\214\207OfferII083.\346\262\241\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\345\205\250\346\216\222\345\210\227.md"
+++ /dev/null
@@ -1,34 +0,0 @@
-## [剑指 Offer II 083. 没有重复元素集合的全排列](https://leetcode.cn/problems/VvJkup/) medium
-
-[本题与主站 46 题相同](https://leetcode-cn.com/problems/permutations/)
-
-```js
-/**
- * @param {number[]} nums
- * @return {number[][]}
- */
-// 元素【无重】【不可复选】
-var permute = function (nums) {
- let res = [];
-
- var backTrack = function (nums, track) {
- if (track.length === nums.length) {
- res.push([...track]);
- return;
- }
- for (let num of nums) {
- if (track.includes(num)) {
- continue;
- }
- // 做选择
- track.push(num);
- backTrack(nums, track);
- // 撤销选择
- track.pop();
- }
- };
-
- backTrack(nums, []);
- return res;
-};
-```
diff --git "a/example/\345\233\236\346\272\257/\345\211\221\346\214\207OfferII084.\345\220\253\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\345\205\250\346\216\222\345\210\227.md" "b/example/\345\233\236\346\272\257/\345\211\221\346\214\207OfferII084.\345\220\253\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\345\205\250\346\216\222\345\210\227.md"
deleted file mode 100644
index 8954ac1..0000000
--- "a/example/\345\233\236\346\272\257/\345\211\221\346\214\207OfferII084.\345\220\253\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\345\205\250\346\216\222\345\210\227.md"
+++ /dev/null
@@ -1,42 +0,0 @@
-## [剑指 Offer II 084. 含有重复元素集合的全排列](https://leetcode.cn/problems/7p8L0Z/) medium
-
-[本题与主站 47 题相同](https://leetcode-cn.com/problems/permutations-ii/)
-
-```js
-/**
- * @param {number[]} nums
- * @return {number[][]}
- */
-// 元素【可重复】【不可复选】
-// 要点:保证相同元素在排列中的相对位置保持不变
-var permuteUnique = function (nums) {
- const res = [];
- const used = new Array(nums.length).fill(false);
- nums.sort((a, b) => a - b);
- const backTrack = (track) => {
- if (track.length === nums.length) {
- res.push([...track]);
- return;
- }
-
- for (let i = 0; i < nums.length; i++) {
- if (used[i]) continue;
- // 剪枝
- // 如果前面的相邻相等元素没有用过,则跳过
- // 当出现重复元素时,比如输入 nums = [1,2,2',2''],2' 只有在 2 已经被使用的情况下才会被选择
- // 同理,2'' 只有在 2' 已经被使用的情况下才会被选择,这就保证了相同元素在排列中的相对位置保证固定
- if (i > 0 && nums[i] === nums[i - 1] && !used[i - 1]) continue;
- // 做选择
- track.push(nums[i]);
- used[i] = true;
- backTrack(track);
- // 撤销选择
- track.pop();
- used[i] = false;
- }
- };
-
- backTrack([]);
- return res;
-};
-```
diff --git "a/example/\345\240\206/295.\346\225\260\346\215\256\346\265\201\347\232\204\344\270\255\344\275\215\346\225\260.md" "b/example/\345\240\206/295.\346\225\260\346\215\256\346\265\201\347\232\204\344\270\255\344\275\215\346\225\260.md"
deleted file mode 100644
index 6aadd5b..0000000
--- "a/example/\345\240\206/295.\346\225\260\346\215\256\346\265\201\347\232\204\344\270\255\344\275\215\346\225\260.md"
+++ /dev/null
@@ -1,75 +0,0 @@
-## [295. 数据流的中位数](https://leetcode.cn/problems/find-median-from-data-stream/) hard
-
-时间复杂度O(N\*logN)
-空间复杂度O(1)
-
-- 思路
-- 使用优先级队列,构造小顶堆和大顶堆
-- 由于小顶堆(MinPriorityQueue)的顶是最小的元素,所以底部是较大的元素,命名为large
-- 大顶堆(MaxPriorityQueue),顶部元素大,底部元素小,命名small
-- 在addNum的时候,要`维护两个堆的size不超过1`,还要`维护large的堆定元素大于等于small的堆顶`
-```js
-MedianFinder.prototype.addNum = function (num) {
- if (this.small.size() >= this.large.size()) {
- this.small.enqueue(num);
- this.large.enqueue(this.small.dequeue()?.element);
- } else {
- this.large.enqueue(num);
- this.small.enqueue(this.large.dequeue()?.element);
- }
-};
-```
-- 简单的说,如果**要向large插入num,要先把num插入到small中,然后将small的堆顶元素插入large**,插入small时也一样
-- 这样可以保证两个堆定的元素差小于等于1
-- 最后根据奇偶性去返回中位数即可
-- 如果是奇数,就将长度多的那个堆的堆顶元素返回
-- 如果是偶数,说明两个堆的元素相等,返回两个堆顶元素的平均值即可
-- 跟[剑指Offer41.数据流中的中位数](/js-logs/sword-point-offer#剑指-offer-41-数据流中的中位数)相同
-
-```js
-var MedianFinder = function () {
- // 优先级队列,leetcode内置了MaxPriorityQueue和MinPriorityQueue
- // https://github.com/datastructures-js/priority-queue
- this.large = new MinPriorityQueue(); // large解释:底部放大的,顶部是小的,说一使用小顶堆
- this.small = new MaxPriorityQueue();// small解释:底部放最小,顶部是大的,所以使用大顶堆
-};
-
-/**
- * @param {number} num
- * @return {void}
- */
-MedianFinder.prototype.addNum = function (num) {
- if (this.small.size() >= this.large.size()) {
- this.small.enqueue(num);
- this.large.enqueue(this.small.dequeue()?.element);
- } else {
- this.large.enqueue(num);
- this.small.enqueue(this.large.dequeue()?.element);
- }
-};
-
-/**
- * @return {number}
- */
-MedianFinder.prototype.findMedian = function () {
- const largeElement = this.large.front()?.element,
- smallElement = this.small.front()?.element;
- if (this.large.size() > this.small.size()) {
- // 如果large的数量多,返回large的堆顶元素
- return largeElement;
- } else if (this.large.size() < this.small.size()) {
- // 如果small的数量多,返回small的堆顶元素
- return smallElement
- } else {
- // 如果是偶数,large和small的数量相等,各取堆顶元素,求平均值
- return (largeElement + smallElement) / 2.0
- }
-};
-
-/**
- * Your MedianFinder object will be instantiated and called as such:
- * var obj = new MedianFinder()
- * obj.addNum(num)
- * var param_2 = obj.findMedian()
- */
-```
diff --git "a/example/\345\240\206/703.\346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\347\254\254K\345\244\247\345\205\203\347\264\240.md" "b/example/\345\240\206/703.\346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\347\254\254K\345\244\247\345\205\203\347\264\240.md"
deleted file mode 100644
index d14cd3c..0000000
--- "a/example/\345\240\206/703.\346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\347\254\254K\345\244\247\345\205\203\347\264\240.md"
+++ /dev/null
@@ -1,109 +0,0 @@
-## [703. 数据流中的第 K 大元素](https://leetcode.cn/problems/kth-largest-element-in-a-stream/) easy
-
-完全二叉树计算公式
-
-- 根据子节点获取 根节点-> `(index -1) /2`
-- 有根节点或者左右节点 ->
- - 左:`(index * 2)+1`
- - 右:左+1 `(index * 2)+2`
-
-```js
-// 构建最小堆
-class MinHeap {
- constructor() {
- this.heap = [];
- }
-
- getParentIndex(index) {
- // return Math.floor((index - 1) / 2);
- return (index - 1) >> 1;
- }
-
- getLeftIndex(index) {
- return index * 2 + 1;
- }
-
- getRightIndex(index) {
- return this.getLeftIndex(index) + 1;
- }
-
- swap(i, j) {
- [this.heap[j], this.heap[i]] = [this.heap[i], this.heap[j]];
- }
-
- insert(val) {
- this.heap.push(val);
- this.shiftUp(this.heap.length - 1);
- }
-
- shiftUp(index) {
- if (index === 0) return;
- const parentIndex = this.getParentIndex(index);
- if (this.heap[index] < this.heap[parentIndex]) {
- this.swap(index, parentIndex);
- this.shiftUp(parentIndex);
- }
- }
-
- pop() {
- const last = this.heap.pop();
- // 若heap只有一个元素,直接pop即可
- if (this.heap.length !== 0) {
- // 若heap还有内容
- this.heap[0] = last; // 使用last元素直接替换掉heap[0]相当于删除
- this.shiftDown(0);
- }
- }
-
- shiftDown(index) {
- const leftIndex = this.getLeftIndex(index);
- const rightIndex = this.getRightIndex(index);
- if (this.heap[index] > this.heap[leftIndex]) {
- this.swap(index, leftIndex);
- this.shiftDown(leftIndex);
- }
-
- if (this.heap[index] > this.heap[rightIndex]) {
- this.swap(index, rightIndex);
- this.shiftDown(rightIndex);
- }
- }
-
- peek() {
- return this.heap[0];
- }
-
- size() {
- return this.heap.length;
- }
-}
-/**
- * @param {number} k
- * @param {number[]} nums
- */
-// 可以理解为找出世界上第k厉害的人
-var KthLargest = function (k, nums) {
- this.k = k;
- this.minHeap = new MinHeap();
-
- for (const item of nums) {
- this.minHeap.insert(item); // 插入元素,最小堆内会排序
- if (this.minHeap.size() > this.k) {
- // 堆内元素多于k
- this.minHeap.pop(); // 将最小的元素移除
- }
- }
-};
-
-/**
- * @param {number} val
- * @return {number}
- */
-KthLargest.prototype.add = function (val) {
- this.minHeap.insert(val);
- if (this.minHeap.size() > this.k) {
- this.minHeap.pop();
- }
- return this.minHeap.peek();
-};
-```
diff --git "a/example/\345\255\227\347\254\246\344\270\262/13.\347\275\227\351\251\254\346\225\260\345\255\227\350\275\254\346\225\264\346\225\260.md" "b/example/\345\255\227\347\254\246\344\270\262/13.\347\275\227\351\251\254\346\225\260\345\255\227\350\275\254\346\225\264\346\225\260.md"
deleted file mode 100644
index cd5ba8e..0000000
--- "a/example/\345\255\227\347\254\246\344\270\262/13.\347\275\227\351\251\254\346\225\260\345\255\227\350\275\254\346\225\264\346\225\260.md"
+++ /dev/null
@@ -1,54 +0,0 @@
-## [13. 罗马数字转整数](https://leetcode.cn/problems/roman-to-integer/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(1)
-
-- 思路
-- 对于罗马数字,从左向右看,一般情况下,若左边比较大,是做加法
-- 若右边比左边小,要做减法
-- 所以在遍历的时候可以向后多看一位,判断前一位 preSum 是做加法还是减法,对 preSum 操作
-- 最后结束的时候把最后一位加上,对齐所有元素,返回 sum 即可
-
-```js
-/**
- * @param {string} s
- * @return {number}
- */
-var romanToInt = function (s) {
- let sum = 0;
- let preNum = getVal(s[0]);
- for (let i = 1; i < s.length; i++) {
- const num = getVal(s[i]);
- if (preNum < num) {
- sum -= preNum;
- } else {
- sum += preNum;
- }
- preNum = num;
- }
-
- sum += preNum;
- return sum;
-};
-
-const getVal = (c) => {
- switch (c) {
- case 'I':
- return 1;
- case 'V':
- return 5;
- case 'X':
- return 10;
- case 'L':
- return 50;
- case 'C':
- return 100;
- case 'D':
- return 500;
- case 'M':
- return 1000;
- default:
- return 0;
- }
-};
-```
diff --git "a/example/\345\255\227\347\254\246\344\270\262/151.\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215.md" "b/example/\345\255\227\347\254\246\344\270\262/151.\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215.md"
deleted file mode 100644
index 78e2e60..0000000
--- "a/example/\345\255\227\347\254\246\344\270\262/151.\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215.md"
+++ /dev/null
@@ -1,73 +0,0 @@
-## [151.反转字符串中的单词](https://leetcode.cn/problems/reverse-words-in-a-string/) medium
-
-时间复杂度 O(N)
-空间复杂度 O(N)
-
-- 思路
-- 先将 单词 split(分割)成数组,然后对数组进行反转,在join就行
-
-```js
-/**
- * @param {string} s
- * @return {string}
- */
-var reverseWords = function (s) {
- return s.trim().split(/\s+/).reverse().join(' ');
-};
-```
-
-翻转两次,一次整体翻转,一次对单词进行单独翻转
-
-
-
-
图解
-
-
-```js
-/**
- * @param {string} s
- * @return {string}
- */
-var reverseWords = function (s) {
- let trimStr = [];
- // 去除前后空格和 中间的相邻空格
- for (const c of s.trim()) {
- if (c !== ' ') {
- trimStr.push(c)
- } else if (trimStr.length !== 0 && trimStr[trimStr.length - 1] !== ' ') {
- trimStr.push(' ')
- }
- }
-
- // 翻转arr [i,j]的内容
- const reverse = (arr, i, j) => {
- while (i < j) {
- const temp = arr[i];
- arr[i] = arr[j];
- arr[j] = temp;
- i++;
- j--;
- }
- }
- // 先反转整体
- const n = trimStr.length;
- reverse(trimStr, 0, n - 1);
- // 再翻转每个单词
-
- let start = 0, end = 0;
- while (start < n) {
- while (end < n && trimStr[end] != ' ') {
- end++;
- }
- // while结束,end指向空格
-
- // 翻转单个单词
- reverse(trimStr, start, end - 1);
- start = end + 1; // 将start定位到新的开头[end+1]的位置
- end++; // end也指向新的开头
- }
- // join
- return trimStr.join('')
-};
-```
-
diff --git "a/example/\345\255\227\347\254\246\344\270\262/387.\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\347\254\254\344\270\200\344\270\252\345\224\257\344\270\200\345\255\227\347\254\246.md" "b/example/\345\255\227\347\254\246\344\270\262/387.\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\347\254\254\344\270\200\344\270\252\345\224\257\344\270\200\345\255\227\347\254\246.md"
deleted file mode 100644
index 5368629..0000000
--- "a/example/\345\255\227\347\254\246\344\270\262/387.\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\347\254\254\344\270\200\344\270\252\345\224\257\344\270\200\345\255\227\347\254\246.md"
+++ /dev/null
@@ -1,31 +0,0 @@
-## [387.字符串中的第一个唯一字符](https://leetcode.cn/problems/first-unique-character-in-a-string/) easy
-
-考察map的使用
-跟[剑指 Offer 50. 第一个只出现一次的字符](https://leetcode.cn/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/)相似
-
-```js
-/**
- * @param {string} s
- * @return {number}
- */
-var firstUniqChar = function (s) {
- let map = new Map();
- for (const item of s) {
- if (map.has(item)) {
- // 已经出现过就累加
- map.set(item, map.get(item) + 1);
- } else {
- map.set(item, 1);
- }
- }
-
- let res = -1;
- for (let [key, value] of map) {
- if (value === 1) {
- return res = s.indexOf(key);
- }
- }
-
- return res;
-};
-```
diff --git "a/example/\345\255\227\347\254\246\344\270\262/392.\345\210\244\346\226\255\345\255\220\345\272\217\345\210\227.md" "b/example/\345\255\227\347\254\246\344\270\262/392.\345\210\244\346\226\255\345\255\220\345\272\217\345\210\227.md"
deleted file mode 100644
index b1be062..0000000
--- "a/example/\345\255\227\347\254\246\344\270\262/392.\345\210\244\346\226\255\345\255\220\345\272\217\345\210\227.md"
+++ /dev/null
@@ -1,24 +0,0 @@
-## [392.判断子序列](https://leetcode.cn/problems/is-subsequence/) easy
-
-双指针解法
-
-```js
-/**
- * @param {string} s
- * @param {string} t
- * @return {boolean}
- */
-var isSubsequence = function (s, t) {
- let p1 = 0, // p1为s的头指针
- p2 = 0; // p2为t的头指针
-
- while (p1 < s.length && p2 < t.length) {
- if (s[p1] === t[p2]) {
- p1++;
- }
- p2++;
- }
-
- return p1 === s.length;
-};
-```
diff --git "a/example/\345\255\227\347\254\246\344\270\262/8.\345\255\227\347\254\246\344\270\262\350\275\254\346\215\242\346\225\264\346\225\260-atoi.md" "b/example/\345\255\227\347\254\246\344\270\262/8.\345\255\227\347\254\246\344\270\262\350\275\254\346\215\242\346\225\264\346\225\260-atoi.md"
deleted file mode 100644
index e4fd10e..0000000
--- "a/example/\345\255\227\347\254\246\344\270\262/8.\345\255\227\347\254\246\344\270\262\350\275\254\346\215\242\346\225\264\346\225\260-atoi.md"
+++ /dev/null
@@ -1,113 +0,0 @@
-## [8.字符串转换整数-atoi](https://leetcode.cn/problems/string-to-integer-atoi/) medium
-
-1.常规解法
-时间复杂度 O(N)
-空间复杂度 O(1)
-
-- 思路:
-- 去除空格,(可以用 trim 或者,指针偏移)
-- 判断正负(使用 flag 标记)然后指针偏移,越过正负号
-- 然后遍历这个字符串,当 ptr\< length 且是一个数字的时候
-- 累加这个数值,指针后移动
-- 最后进行正负号判断和越界判断即可
-
-```js
-/**
- * @param {string} s
- * @return {number}
- */
-var myAtoi = function (s) {
- let ptr = 0;
- let resNumber = 0;
- let flag = 1; // 1为正数
- // while (s[ptr] === " ") { ptr++; }
- s = s.trim();
- if (s[ptr] === '-') {
- flag = 0;
- }
- if (s[ptr] === '-' || s[ptr] === '+') {
- ptr++;
- }
-
- while (ptr < s.length && isNumber(s[ptr])) {
- resNumber += s[ptr];
- ptr++;
- }
- let res = flag ? Number(resNumber) : -Number(resNumber);
- resNumber = isNaN(res) ? 0 : res;
- if (resNumber >= Math.pow(2, 31)) return Math.pow(2, 31) - 1;
- if (resNumber < -Math.pow(2, 31)) return -Math.pow(2, 31);
- return resNumber;
-};
-
-let strNumber = []; // ["0","1","2"....,"9"]
-for (let i = 0; i <= 9; i++) {
- strNumber[i] = String(i);
-}
-// 判断是否为一个数组
-const isNumber = (s) => {
- return strNumber.indexOf(s) !== -1;
-};
-```
-
-2.状态机流转
-
-```js
-class Atoi {
- constructor() {
- this.flag = 1; // 1表示正
- this.sumStr = '';
- this.state = 'start';
- // " " ,"+/-","number","other"
- this.map = new Map([
- ['start', ['start', 'single', 'is_number', 'end']],
- ['single', ['end', 'end', 'is_number', 'end']],
- ['is_number', ['end', 'end', 'is_number', 'end']],
- ['end', ['end', 'end', 'end', 'end']],
- ]);
- }
- get_state(c) {
- if (c === ' ') return 0;
- if (c === '+' || c === '-') return 1;
- if (isNumber(c)) return 2;
- return 3;
- }
- get(c) {
- this.state = this.map.get(this.state)[this.get_state(c)];
- if (this.state === 'single') {
- this.flag = c === '-' ? 0 : 1;
- } else if (this.state === 'is_number') {
- this.sumStr += c;
- }
- }
-}
-
-var myAtoi1 = function (s) {
- let atoi = new Atoi();
- for (let c of s) {
- atoi.get(c);
- }
- let resNumber = atoi.flag ? Number(atoi.sumStr) : -Number(atoi.sumStr);
- if (resNumber >= Math.pow(2, 31)) return Math.pow(2, 31) - 1;
- if (resNumber < -Math.pow(2, 31)) return -Math.pow(2, 31);
- return resNumber;
-};
-```
-
-3.使用正则表达式
-
-- ^[\+\-] 表示以+或-开头
-- ^[\+\-]? 表示以+或-开头,但是可以不写
-- \d 表示数字
-- +表示一次或多次
-
-```js
-var myAtoi2 = function (s) {
- s = s.trim();
- let Regx = /^[\+\-]?\d+/;
- let resNumber = s.match(Regx);
- if (resNumber >= Math.pow(2, 31)) return Math.pow(2, 31) - 1;
- if (resNumber < -Math.pow(2, 31)) return -Math.pow(2, 31);
- return resNumber;
-};
-```
diff --git "a/example/\346\216\222\345\272\217/215.\346\225\260\347\273\204\344\270\255\347\232\204\347\254\254k\344\270\252\346\234\200\345\244\247\345\205\203\347\264\240.js" "b/example/\346\216\222\345\272\217/215.\346\225\260\347\273\204\344\270\255\347\232\204\347\254\254k\344\270\252\346\234\200\345\244\247\345\205\203\347\264\240.js"
deleted file mode 100644
index 77d53d6..0000000
--- "a/example/\346\216\222\345\272\217/215.\346\225\260\347\273\204\344\270\255\347\232\204\347\254\254k\344\270\252\346\234\200\345\244\247\345\205\203\347\264\240.js"
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * @lc app=leetcode.cn id=215 lang=javascript
- *
- * [215] 数组中的第K个最大元素
- */
-
-// @lc code=start
-
-// 快速搜索
-
-// - 首先,针对已经排好序的数组,第k大,就是nums\[len-k\]位置上的元素,后序称为k'
-// - 在快排分区时,其实已经为p找到自己在数组中正确对应的位置
-// - 若k' > p,说明要找的元素在p的右半部分,也就是lo=p+1
-// - 若k' < p,说明要找的元素在p的左半部分,也就是hi=p-1
-// - 然后递归,直到p的位置刚好是k',直接返回这个位置上的元素即可
-
-/**
- * @param {number[]} nums
- * @param {number} k
- * @return {number}
- */
- var findKthLargest = function (nums, k) {
- let lo = 0, hi = nums.length - 1, targetIndex = nums.length - k;
-
- while (lo <= hi) {
- const p = partition(nums, lo, hi);
- if (targetIndex > p) {
- lo = p + 1;
- } else if (targetIndex < p) {
- hi = p - 1;
- } else {
- return nums[p];
- }
- }
-
- return -1;
-};
-
-const partition = (nums, lo, hi) => {
- let p = nums[lo];
- let i = lo + 1, j = hi;
- while (i <= j) {
- while (i < hi && nums[i] <= p) {
- i++;
- }
- while (j > lo && nums[j] > p) {
- j--;
- }
- if (i >= j) {
- break;
- }
- swap(nums, i, j);
- }
- swap(nums, lo, j);
- return j;
-}
-
-const swap = (nums, i, j) => {
- const temp = nums[i];
- nums[i] = nums[j];
- nums[j] = temp;
-}
-
-
-
-// -----------------最小堆解法----------------------
-// var findKthLargest = function (nums, k) {
-// const heap = new MinHeap();
-// nums.forEach((item) => {
-// heap.insert(item);
-// if (heap.size() > k) {
-// heap.pop();
-// }
-// });
-// return heap.peek();
-// };
-
-// class MinHeap {
-// constructor() {
-// this.heap = [];
-// }
-
-// getParentIndex(i) {
-// return (i - 1) >> 1;
-// }
-
-// getLeftIndex(i) {
-// return i * 2 + 1;
-// }
-
-// getRightIndex(i) {
-// return i * 2 + 2;
-// }
-
-// swap(i, j) {
-// let temp = this.heap[j];
-// this.heap[j] = this.heap[i];
-// this.heap[i] = temp;
-// }
-
-// shiftUp(index) {
-// if (index === 0) return;
-// let parentIndex = this.getParentIndex(index);
-// if (this.heap[parentIndex] > this.heap[index]) {
-// this.swap(parentIndex, index);
-// this.shiftUp(parentIndex);
-// }
-// }
-
-// shiftDown(index) {
-// let leftIndex = this.getLeftIndex(index);
-// let rightIndex = this.getRightIndex(index);
-// if (this.heap[leftIndex] < this.heap[index]) {
-// this.swap(leftIndex, index);
-// this.shiftDown(leftIndex);
-// }
-// if (this.heap[rightIndex] < this.heap[index]) {
-// this.swap(rightIndex, index);
-// this.shiftDown(rightIndex);
-// }
-// }
-
-// insert(val) {
-// this.heap.push(val);
-// this.shiftUp(this.heap.length - 1);
-// }
-
-// pop() {
-// this.heap[0] = this.heap.pop();
-// this.shiftDown(0);
-// }
-
-// size() {
-// return this.heap.length;
-// }
-
-// peek() {
-// return this.heap[0];
-// }
-// }
-// @lc code=end
diff --git "a/example/\346\216\222\345\272\217/315.\350\256\241\347\256\227\345\217\263\344\276\247\345\260\217\344\272\216\345\275\223\345\211\215\345\205\203\347\264\240\347\232\204\344\270\252\346\225\260.js" "b/example/\346\216\222\345\272\217/315.\350\256\241\347\256\227\345\217\263\344\276\247\345\260\217\344\272\216\345\275\223\345\211\215\345\205\203\347\264\240\347\232\204\344\270\252\346\225\260.js"
deleted file mode 100644
index f0dbbbf..0000000
--- "a/example/\346\216\222\345\272\217/315.\350\256\241\347\256\227\345\217\263\344\276\247\345\260\217\344\272\216\345\275\223\345\211\215\345\205\203\347\264\240\347\232\204\344\270\252\346\225\260.js"
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * @lc app=leetcode.cn id=315 lang=javascript
- *
- * [315] 计算右侧小于当前元素的个数
- */
-
-// @lc code=start
-/**
- * @param {number[]} nums
- * @return {number[]}
- */
-var countSmaller = function (nums) {
- const len = nums.length;
- const counts = new Array(len).fill(0);
- const temp = new Array(len);
- const arr = new Array(len);
- for (let i = 0; i < len; i++) {
- arr[i] = {
- index: i,
- val: nums[i],
- };
- }
- const merge = (lo, mid, hi) => {
- for (let i = lo; i <= hi; i++) {
- temp[i] = arr[i];
- }
-
- let i = lo,
- j = mid + 1;
- for (let p = lo; p <= hi; p++) {
- if (i === mid + 1) {
- arr[p] = temp[j++];
- } else if (j === hi + 1) {
- arr[p] = temp[i++];
- counts[arr[p].index] += j - (mid + 1);
- } else if (temp[i].val > temp[j].val) {
- arr[p] = temp[j++];
- } else {
- arr[p] = temp[i++];
- counts[arr[p].index] += j - (mid + 1);
- }
- }
- };
-
- const sort = (lo, hi) => {
- if (lo === hi) return;
- let mid = Math.floor(lo + (hi - lo) / 2);
-
- sort(lo, mid);
- sort(mid + 1, hi);
- merge(lo, mid, hi);
- };
-
- sort(0, len - 1);
-
- return counts;
-};
-// @lc code=end
diff --git "a/example/\346\216\222\345\272\217/327.\345\214\272\351\227\264\345\222\214\347\232\204\344\270\252\346\225\260.js" "b/example/\346\216\222\345\272\217/327.\345\214\272\351\227\264\345\222\214\347\232\204\344\270\252\346\225\260.js"
deleted file mode 100644
index fc2c942..0000000
--- "a/example/\346\216\222\345\272\217/327.\345\214\272\351\227\264\345\222\214\347\232\204\344\270\252\346\225\260.js"
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * @lc app=leetcode.cn id=327 lang=javascript
- *
- * [327] 区间和的个数
- */
-
-// @lc code=start
-/**
- * @param {number[]} nums
- * @param {number} lower
- * @param {number} upper
- * @return {number}
- */
-var countRangeSum = function (nums, lower, upper) {
- const len = nums.length;
- let preSum = new Array(len + 1).fill(0);
- const temp = new Array(preSum.length);
- for (let i = 0; i < len; i++) {
- preSum[i + 1] = nums[i] + preSum[i];
- }
-
- let count = 0;
-
- const merge = (nums, lo, mid, hi) => {
- for (let i = lo; i <= hi; i++) {
- temp[i] = nums[i];
- }
-
- // // 这段代码会超时
- // for (let i = lo; i <= mid; i++) {
- // for (let j = mid + 1; j <= hi; j++) {
- // const diff = nums[j] - nums[i];
- // if (diff >= lower && diff <= upper) {
- // count++;
- // }
- // }
- // }
-
- let start = mid + 1;
- let end = mid + 1;
- for (let i = lo; i <= mid; i++) {
- while (start <= hi && nums[start] - nums[i] < lower) {
- start++;
- }
- while (end <= hi && nums[end] - nums[i] <= upper) {
- end++;
- }
- count += end - start;
- }
-
- let i = lo,
- j = mid + 1;
- for (let p = lo; p <= hi; p++) {
- if (i === mid + 1) {
- nums[p] = temp[j++];
- } else if (j === hi + 1) {
- nums[p] = temp[i++];
- } else if (temp[i] > temp[j]) {
- nums[p] = temp[j++];
- } else {
- nums[p] = temp[i++];
- }
- }
- };
-
- const sort = (nums, lo, hi) => {
- if (lo === hi) return;
- const mid = Math.floor(lo + (hi - lo) / 2);
- sort(nums, lo, mid);
- sort(nums, mid + 1, hi);
- merge(nums, lo, mid, hi);
- };
-
- sort(preSum, 0, preSum.length - 1);
-
- return count;
-};
-// @lc code=end
diff --git "a/example/\346\216\222\345\272\217/493.\347\277\273\350\275\254\345\257\271.js" "b/example/\346\216\222\345\272\217/493.\347\277\273\350\275\254\345\257\271.js"
deleted file mode 100644
index 1d4fb32..0000000
--- "a/example/\346\216\222\345\272\217/493.\347\277\273\350\275\254\345\257\271.js"
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * @lc app=leetcode.cn id=493 lang=javascript
- *
- * [493] 翻转对
- */
-
-// @lc code=start
-/**
- * @param {number[]} nums
- * @return {number}
- */
-var reversePairs = function (nums) {
- const len = nums.length;
- const temp = new Array(len);
- let count = 0;
-
- const merge = (lo, mid, hi) => {
- for (let i = lo; i <= hi; i++) {
- temp[i] = nums[i];
- }
-
- // ----左右数组有序之后----
- let start = lo,
- end = mid + 1;
-
- while (start <= mid && end <= hi) {
- if (nums[start] > 2 * nums[end]) {
- count += mid + 1 - start;
- end++;
- } else {
- start++;
- }
- }
-
- // ----合并之前----
- let i = lo,
- j = mid + 1;
- for (let p = lo; p <= hi; p++) {
- if (i === mid + 1) {
- nums[p] = temp[j++];
- } else if (j === hi + 1) {
- nums[p] = temp[i++];
- } else if (temp[i] > temp[j]) {
- nums[p] = temp[j++];
- } else {
- nums[p] = temp[i++];
- }
- }
- };
-
- const sort = (lo, hi) => {
- if (lo === hi) return;
- const mid = Math.floor(lo + (hi - lo) / 2);
- sort(lo, mid);
- sort(mid + 1, hi);
- merge(lo, mid, hi);
- };
- sort(0, len - 1);
- return count;
-};
-// @lc code=end
diff --git "a/example/\346\216\222\345\272\217/912.\346\216\222\345\272\217\346\225\260\347\273\204.js" "b/example/\346\216\222\345\272\217/912.\346\216\222\345\272\217\346\225\260\347\273\204.js"
deleted file mode 100644
index 8e507ff..0000000
--- "a/example/\346\216\222\345\272\217/912.\346\216\222\345\272\217\346\225\260\347\273\204.js"
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * @lc app=leetcode.cn id=912 lang=javascript
- *
- * [912] 排序数组
- */
-
-// @lc code=start
-/**
- * @param {number[]} nums
- * @return {number[]}
- */
-
-var sortArray = function (nums) {
- const temp = new Array(nums.length);
-
- const merge = function (lo, mid, hi) {
- for (let i = lo; i <= hi; i++) {
- temp[i] = nums[i];
- }
-
- let i = lo,
- j = mid + 1;
-
- for (let p = lo; p <= hi; p++) {
- if (i === mid + 1) {
- nums[p] = temp[j++];
- } else if (j === hi + 1) {
- nums[p] = temp[i++];
- } else if (temp[j] < temp[i]) {
- nums[p] = temp[j++];
- } else {
- nums[p] = temp[i++];
- }
- }
- };
-
- const sort = (lo, hi) => {
- if (lo === hi) return;
- const mid = Math.floor(lo + (hi - lo) / 2);
-
- // [lo,mid]有序
- sort(lo, mid);
- // [mid+1,hi]有序
- sort(mid + 1, hi);
- // 合并两个有序数组
- merge(lo, mid, hi);
- };
-
- sort(0, nums.length - 1);
-
- return nums;
-};
-
-// 归并排序--使用了shift方法,比较慢
-// var sortArray = function (nums) {
-// if (nums.length <= 1) return nums;
-// let mid = Math.floor(nums.length / 2);
-// let left = sortArray(nums.slice(0, mid));
-// let right = sortArray(nums.slice(mid));
-// return merge(left, right);
-// };
-// const merge = (left, right) => {
-// let res = [];
-// while (left.length && right.length) {
-// res.push(left[0] < right[0] ? left.shift() : right.shift());
-// }
-// return res.concat(left, right);
-// };
-// @lc code=end
-
-
-var sortArray = function (nums) {
- quickSort(nums, 0, nums.length - 1);
- return nums;
-};
-
-// // 快速排序
-// const quickSort = (nums, lo, hi) => {
-// if (lo >= hi) return;
-
-// // 对[lo,hi]根据p进行划分
-// // nums[lo,p-1] <= nums[p] < nums[p,hi];
-// const p = partition(nums, lo, hi);
-
-// quickSort(nums, lo, p - 1);
-// quickSort(nums, p + 1, hi);
-// }
-
-// // 对[lo,hi]进行区分
-// const partition = (nums, lo, hi) => {
-// let p = nums[lo];
-// let i = lo + 1, j = hi;
-// while (i <= j) {
-// while (i < hi && nums[i] <= p) {
-// i++;
-// // 结束时,nums[i] > p
-// }
-// while (j > lo && nums[j] > p) {
-// j--;
-// // 结束时,nums[j] <= p;
-// }
-// // 此时 nums[i] <= p < nums[j]
-// if (i >= j) {
-// break;
-// }
-// swap(nums, i, j);
-// }
-// swap(nums, lo, j);
-// return j;
-// }
-
-// const swap = (nums, i, j) => {
-// const temp = nums[i];
-// nums[i] = nums[j];
-// nums[j] = temp;
-// }
\ No newline at end of file
diff --git "a/example/\346\225\260\345\255\246/233.\346\225\260\345\255\2271\347\232\204\344\270\252\346\225\260.md" "b/example/\346\225\260\345\255\246/233.\346\225\260\345\255\2271\347\232\204\344\270\252\346\225\260.md"
deleted file mode 100644
index 095c26b..0000000
--- "a/example/\346\225\260\345\255\246/233.\346\225\260\345\255\2271\347\232\204\344\270\252\346\225\260.md"
+++ /dev/null
@@ -1,30 +0,0 @@
-## [233.数字 1 的个数](https://leetcode.cn/problems/number-of-digit-one/) hard
-
-[官方题解](https://leetcode.cn/problems/1nzheng-shu-zhong-1chu-xian-de-ci-shu-lcof/solution/1n-zheng-shu-zhong-1-chu-xian-de-ci-shu-umaj8/)
-
-
-
-
公式
-
-
-跟[剑指 Offer43.1 ~ n 整数中 1 出现的次数](/js-logs/sword-point-offer#剑指-offer-43-1n-整数中-1-出现的次数)相同
-
-```js
-/**
- * @param {number} n
- * @return {number}
- */
-var countDigitOne = function (n) {
- let digit = 1; // 位因子
- let res = 0;
-
- for (let k = 0; digit <= n; k++) {
- let forwardDigit = digit * 10;
- res +=
- Math.floor(n / forwardDigit) * digit +
- Math.min(Math.max((n % forwardDigit) - digit + 1, 0), digit);
- digit *= 10;
- }
- return res;
-};
-```
diff --git "a/example/\346\225\260\345\255\246/400.\347\254\254N\344\275\215\346\225\260\345\255\227.md" "b/example/\346\225\260\345\255\246/400.\347\254\254N\344\275\215\346\225\260\345\255\227.md"
deleted file mode 100644
index 7c4124a..0000000
--- "a/example/\346\225\260\345\255\246/400.\347\254\254N\344\275\215\346\225\260\345\255\227.md"
+++ /dev/null
@@ -1,35 +0,0 @@
-## [400.第 N 位数字](https://leetcode.cn/problems/nth-digit/) medium
-
-```js
-/**
- * @param {number} n
- * @return {number}
- */
-// 先求出数字的长度
-// 规律
-// [1..9] = 9 * 1个数 => 9 * 1 * 1 => 9 * 10^0 * 1
-// [10..99] = 90 * 2个数 => 9 * 10 * 2 => 9 * 10^1 * 2
-// [100..999] = 900 * 3个数 => 9 * 100 * 3 => 9 * 10^2 * 3
-// [1000..9999] = 9000 * 4个数 => 9 * 1000 * 4 => 9 * 10^3 * 4
-var findNthDigit = function (n) {
- let k = 1; // 表明当前是 几位数字: 9=>1, 99=>2 ...
- let digit = 1; // 表示位因数: 9=>1,99=>10 ..
- while (n - 9 * digit * k >= 0) {
- n = n - 9 * digit * k;
- k++;
- digit *= 10;
- }
-
- let target = Math.pow(10, k - 1) + Math.floor(n / k); // 第n位所在的数字
- let index = n % k; // 在target中的第几位
-
- // index:0 说明【第n位的数字】位于target前一个数字的最后一位
- if (index === 0) {
- let str = String(target - 1);
- return Number(str[str.length - 1]);
- } else {
- let str = String(target);
- return Number(str[index - 1]);
- }
-};
-```
diff --git "a/example/\346\225\260\345\255\246/50.pow-x-n.md" "b/example/\346\225\260\345\255\246/50.pow-x-n.md"
deleted file mode 100644
index dce999b..0000000
--- "a/example/\346\225\260\345\255\246/50.pow-x-n.md"
+++ /dev/null
@@ -1,26 +0,0 @@
-## [50.pow-x-n](https://leetcode.cn/problems/powx-n/) medium
-
-```js
-/**
- * @param {number} x
- * @param {number} n
- * @return {number}
- */
-var myPow = function (x, n) {
- if (n === 0) return 1;
-
- // n是负数
- if (n < 0) {
- return myPow(1 / x, -n);
- }
-
- // n是奇数
- if (n % 2 === 1) {
- return x * myPow(x, n - 1);
- } else {
- // n 是偶数
- const sub = myPow(x, n / 2);
- return sub * sub;
- }
-};
-```
diff --git "a/example/\346\225\260\347\273\204/1034.\350\276\271\347\225\214\347\235\200\350\211\262.md" "b/example/\346\225\260\347\273\204/1034.\350\276\271\347\225\214\347\235\200\350\211\262.md"
deleted file mode 100644
index 93032fa..0000000
--- "a/example/\346\225\260\347\273\204/1034.\350\276\271\347\225\214\347\235\200\350\211\262.md"
+++ /dev/null
@@ -1,54 +0,0 @@
-## [1034.边界着色](https://leetcode.cn/problems/coloring-a-border/) medium
-
-```js
-/**
- * @param {number[][]} grid
- * @param {number} row
- * @param {number} col
- * @param {number} color
- * @return {number[][]}
- */
-// 深度优先
-var colorBorder = function (grid, row, col, color) {
- const m = grid.length,
- n = grid[0].length;
- const origColor = grid[row][col];
- const visited = new Array(m).fill().map((_) => new Array(n).fill(0));
- visited[row][col] = true;
- const borders = [];
-
- const direct = [
- [0, -1],
- [0, 1],
- [-1, 0],
- [1, 0],
- ];
- const dfs = (i, j) => {
- let isBorder = false;
- for (let z = 0; z < 4; z++) {
- const x = direct[z][0] + i,
- y = direct[z][1] + j;
- // 找出边界
- if (!(x >= 0 && y >= 0 && x < m && y < n && grid[x][y] === origColor)) {
- // 重点
- isBorder = true;
- } else if (!visited[x][y]) {
- visited[x][y] = true;
- dfs(x, y);
- }
- }
- if (isBorder) {
- borders.push([i, j]);
- }
- };
- dfs(row, col);
-
- for (let i = 0; i < borders.length; i++) {
- const x = borders[i][0],
- y = borders[i][1];
- grid[x][y] = color;
- }
-
- return grid;
-};
-```
diff --git "a/example/\346\225\260\347\273\204/169.\345\244\232\346\225\260\345\205\203\347\264\240.md" "b/example/\346\225\260\347\273\204/169.\345\244\232\346\225\260\345\205\203\347\264\240.md"
deleted file mode 100644
index d077d99..0000000
--- "a/example/\346\225\260\347\273\204/169.\345\244\232\346\225\260\345\205\203\347\264\240.md"
+++ /dev/null
@@ -1,18 +0,0 @@
-## [169.多数元素](https://leetcode.cn/problems/majority-element/) easy
-
-时间复杂度 O(N\*logN)
-空间复杂度 O(logN)
-
-- 思路
-- 排序后,取中间元素,无论数字长度是奇偶,都是超过一半的数字
-
-```js
-/**
- * @param {number[]} nums
- * @return {number}
- */
-var majorityElement = function (nums) {
- const sort = nums.sort((a, b) => a - b);
- return sort[nums.length >> 1];
-};
-```
diff --git "a/example/\346\225\260\347\273\204/189.\350\275\256\350\275\254\346\225\260\347\273\204.md" "b/example/\346\225\260\347\273\204/189.\350\275\256\350\275\254\346\225\260\347\273\204.md"
deleted file mode 100644
index ab8431a..0000000
--- "a/example/\346\225\260\347\273\204/189.\350\275\256\350\275\254\346\225\260\347\273\204.md"
+++ /dev/null
@@ -1,31 +0,0 @@
-## [189.轮转数组](https://leetcode.cn/problems/rotate-array/) medium
-
-```js
-/**
- * @param {number[]} nums
- * @param {number} k
- * @return {void} Do not return anything, modify nums in-place instead.
- */
-var rotate = function (nums, k) {
- if (nums.length === 1) return nums;
- k = k % nums.length;
- let spliceStart = nums.length - k;
- let kNums = nums.splice(spliceStart);
- if (spliceStart < 0) {
- reverse(nums, 0, nums.length - 1);
- }
- nums.unshift(...kNums);
-};
-const reverse = (arr, start, end) => {
- while (start < end) {
- [arr[start++], arr[end--]] = [end, start];
- }
-};
-
-var rotate1 = function (nums, k) {
- const n = nums.length;
- const move = n - (k % n);
- const endNums = nums.splice(move);
- nums.unshift(...endNums);
-};
-```
diff --git "a/example/\346\225\260\347\273\204/240.\346\220\234\347\264\242\344\272\214\347\273\264\347\237\251\351\230\265-ii.md" "b/example/\346\225\260\347\273\204/240.\346\220\234\347\264\242\344\272\214\347\273\264\347\237\251\351\230\265-ii.md"
deleted file mode 100644
index f4b622d..0000000
--- "a/example/\346\225\260\347\273\204/240.\346\220\234\347\264\242\344\272\214\347\273\264\347\237\251\351\230\265-ii.md"
+++ /dev/null
@@ -1,35 +0,0 @@
-## [240.搜索二维矩阵-ii](https://leetcode.cn/problems/search-a-2d-matrix-ii/) medium
-
-- 思路
-- 根据 每行从左到右递增, 从上到下递减的规律
-- 左上角最大,右上角最小
-- 假如从左上角开始,不管向哪个方向走,元素都是在递增的
-- 所以我们从右上角出发更好一点,从上到下递增,从右到左递减
-
-```js
-/**
- * @param {number[][]} matrix
- * @param {number} target
- * @return {boolean}
- */
-var searchMatrix = function (matrix, target) {
- const m = matrix.length,
- n = matrix[0].length;
-
- // 初始化i,j为右上角元素
- let i = 0,
- j = n - 1;
- while (i < m && j >= 0) {
- if (matrix[i][j] === target) {
- return true;
- } else if (matrix[i][j] > target) {
- // 需要小一点,j--
- j--;
- } else if (matrix[i][j] < target) {
- // 需要大一点,i++
- i++;
- }
- }
- return false;
-};
-```
diff --git "a/example/\346\225\260\347\273\204/442.\346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\346\215\256.md" "b/example/\346\225\260\347\273\204/442.\346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\346\215\256.md"
deleted file mode 100644
index 9a5c3bf..0000000
--- "a/example/\346\225\260\347\273\204/442.\346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\346\215\256.md"
+++ /dev/null
@@ -1,29 +0,0 @@
-## [442.数组中重复的数据](https://leetcode.cn/problems/find-all-duplicates-in-an-array/) medium
-
-时间复杂度 O(N)
-空间复杂度 O(N)
-
-- 思路
-- 使用 set 内元素不重复的特点
-- 遍历数组,若 set 内没有 num,则向 set 内添加
-- 如果 set 内已经有 num 了,那么 num 就是重复的添加到 res 中
-- 跟[剑指 Offer 03. 数组中重复的数字](/js-logs/sword-point-offer#剑指-offer-03-数组中重复的数字)思路类似
-
-```js
-/**
- * @param {number[]} nums
- * @return {number[]}
- */
-var findDuplicates = function (nums) {
- const set = new Set();
- const res = [];
- for (const num of nums) {
- if (set.has(num)) {
- res.push(num);
- } else {
- set.add(num);
- }
- }
- return res;
-};
-```
diff --git "a/example/\346\225\260\347\273\204/448.\346\211\276\345\210\260\346\211\200\346\234\211\346\225\260\347\273\204\344\270\255\346\266\210\345\244\261\347\232\204\346\225\260\345\255\227.md" "b/example/\346\225\260\347\273\204/448.\346\211\276\345\210\260\346\211\200\346\234\211\346\225\260\347\273\204\344\270\255\346\266\210\345\244\261\347\232\204\346\225\260\345\255\227.md"
deleted file mode 100644
index 847d7d3..0000000
--- "a/example/\346\225\260\347\273\204/448.\346\211\276\345\210\260\346\211\200\346\234\211\346\225\260\347\273\204\344\270\255\346\266\210\345\244\261\347\232\204\346\225\260\345\255\227.md"
+++ /dev/null
@@ -1,59 +0,0 @@
-## [448.找到所有数组中消失的数字](https://leetcode.cn/problems/find-all-numbers-disappeared-in-an-array/) easy
-
-时间复杂度 O(N^2)
-
-- 思路
-- 构建一个数组,元素是[1,n]
-- 循环这个数组,查找 nums 中是否存在 构建数组中的元素
-- 若不存在,说明 nums 中缺失这个元素,加入结果数组返回
-
-```js
-/**
- * @param {number[]} nums
- * @return {number[]}
- */
-var findDisappearedNumbers = function (nums) {
- const arr = Array(nums.length)
- .fill()
- .map((_, index) => index + 1);
- let res = [];
-
- for (let i = 0; i < arr.length; i++) {
- if (nums.indexOf(arr[i]) === -1) {
- res.push(arr[i]);
- }
- }
-
- return res;
-};
-```
-
-时间复杂度 O(N)
-空间复杂度 O(N)
-
-- 思路
-- 观察发现,其实数组的索引,其实就是我们思路一中构建的数组
-- 所以可以先统计 nums 中的元素在「数组对应位置」中出现的次数,若没有出现,次数就是 0
-- 然后根据索引去寻找元素,若该位置次数是 0,那就表示该索引是缺失的元素
-
-```js
-/**
- * @param {number[]} nums
- * @return {number[]}
- */
-var findDisappearedNumbers = function (nums) {
- const n = nums.length;
- const count = Array(n + 1).fill(0);
- for (let num of nums) {
- count[num]++;
- }
-
- const res = [];
- for (let i = 1; i <= n; i++) {
- if (count[i] === 0) {
- res.push(i);
- }
- }
- return res;
-};
-```
diff --git "a/example/\346\225\260\347\273\204/542.01\347\237\251\351\230\265.md" "b/example/\346\225\260\347\273\204/542.01\347\237\251\351\230\265.md"
deleted file mode 100644
index 8f4359a..0000000
--- "a/example/\346\225\260\347\273\204/542.01\347\237\251\351\230\265.md"
+++ /dev/null
@@ -1,103 +0,0 @@
-## [542.01 矩阵](https://leetcode.cn/problems/01-matrix/) medium
-
-- 广度优先思路
-- 时间复杂度 空间复杂度都是 O(mn)
-- 由于 0 到‘0’的距离就是 0
-- 可以先单独看,单独一个 0 到上下左右四个方向的,就是由 0 向外扩散+1
-- 所以可以采用广度遍历的方法
-- 先把所有的 0 找出来,同时使用 visited 表示已经访问(计算)过
-- 把找出来的 0 放入队列,然后单独的向外扩散,计算扩散的距离
-- 同时做访问标记,然后把计算的坐标也入队列,等所有 0 计算完,再往外扩散 1..以此类推
-- 若已经访问过(计算)过,则不需要二次计算
-- 这样向外扩散一遍后,可以保证计算出每个位置到最近的 0 的距离
-
-```js
-/**
- * @param {number[][]} mat
- * @return {number[][]}
- */
-// 动态规划
-var updateMatrix = function (mat) {
- const m = mat.length,
- n = mat[0].length;
- const dist = new Array(m).fill().map((_) => new Array(n).fill(Infinity));
-
- // 先把0放入队列中
- for (let i = 0; i < m; i++) {
- for (let j = 0; j < n; j++) {
- if (mat[i][j] === 0) {
- dist[i][j] = 0;
- }
- }
- }
-
- // 水平向左,垂直向上
- for (let i = 0; i < m; i++) {
- for (let j = 0; j < n; j++) {
- if (i - 1 >= 0) {
- dist[i][j] = Math.min(dist[i][j], dist[i - 1][j] + 1);
- }
- if (j - 1 >= 0) {
- dist[i][j] = Math.min(dist[i][j], dist[i][j - 1] + 1);
- }
- }
- }
- // 水平向右,垂直向下
- for (let i = m - 1; i >= 0; i--) {
- for (let j = n - 1; j >= 0; j--) {
- if (i + 1 < m) {
- dist[i][j] = Math.min(dist[i][j], dist[i + 1][j] + 1);
- }
- if (j + 1 < n) {
- dist[i][j] = Math.min(dist[i][j], dist[i][j + 1] + 1);
- }
- }
- }
-
- return dist;
-};
-
-/**
- * @param {number[][]} mat
- * @return {number[][]}
- */
-// 广度优先遍历
-var updateMatrix1 = function (mat) {
- const m = mat.length,
- n = mat[0].length;
- const dist = new Array(m).fill().map((_) => new Array(n).fill(0));
- const visited = new Array(m).fill().map((_) => new Array(n).fill(false));
- const q = [];
- const direction = [
- [-1, 0],
- [1, 0],
- [0, -1],
- [0, 1],
- ];
-
- // 先把0放入队列中
- for (let i = 0; i < m; i++) {
- for (let j = 0; j < n; j++) {
- if (mat[i][j] === 0) {
- q.push([i, j]);
- visited[i][j] = true;
- }
- }
- }
-
- while (q.length) {
- const [i, j] = q.shift();
- for (let d = 0; d < 4; d++) {
- let ni = direction[d][0] + i;
- let nj = direction[d][1] + j;
- if (ni >= 0 && nj >= 0 && ni < m && nj < n && !visited[ni][nj]) {
- dist[ni][nj] = dist[i][j] + 1;
- q.push([ni, nj]);
- visited[ni][nj] = true;
- }
- }
- }
-
- return dist;
-};
-```
diff --git "a/example/\346\225\260\347\273\204/88.\345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\346\225\260\347\273\204.md" "b/example/\346\225\260\347\273\204/88.\345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\346\225\260\347\273\204.md"
deleted file mode 100644
index 2837149..0000000
--- "a/example/\346\225\260\347\273\204/88.\345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\346\225\260\347\273\204.md"
+++ /dev/null
@@ -1,56 +0,0 @@
-## [88.合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) easy
-
-时间复杂度 O(n)
-
-- 双指针法,从头开始对比,将对比结果放入一个新数组中,
-- 然后再根据新数组的结果,改变 nums1
-
-```js
-/**
- * @param {number[]} nums1
- * @param {number} m
- * @param {number[]} nums2
- * @param {number} n
- * @return {void} Do not return anything, modify nums1 in-place instead.
- */
-// 双指针法
-var merge = function (nums1, m, nums2, n) {
- let p1 = 0,
- p2 = 0;
- let sortArr = new Array(m + n).fill(0);
- let cur;
- while (p1 < m || p2 < n) {
- let n1 = nums1[p1];
- let n2 = nums2[p2];
- if (p1 === m) {
- // 当p1走到头
- cur = n2;
- p2++;
- } else if (p2 === n) {
- // 当p2走到头
- cur = n1;
- p1++;
- } else if (n1 < n2) {
- // 当n1小于n2,则当前数字为n1
- cur = n1;
- p1++;
- } else {
- // 当n1大于n2,则当前数字为n2
- // 当n1等于n2,随意取一个,这里就取n2
- cur = n2;
- p2++;
- }
- sortArr[p1 + p2 - 1] = cur;
- }
-
- for (let i = 0; i < sortArr.length; i++) {
- nums1[i] = sortArr[i];
- }
-};
-// ----------------------------------------------------------------
-// 这里将nums2截取到nums1中,然后排序
-var merge1 = function (nums1, m, nums2, n) {
- nums1.splice(m, n, ...nums2);
- nums1.sort((a, b) => a - b);
-};
-```
diff --git "a/example/\346\225\260\347\273\204/994.\350\205\220\347\203\202\347\232\204\346\251\230\345\255\220.md" "b/example/\346\225\260\347\273\204/994.\350\205\220\347\203\202\347\232\204\346\251\230\345\255\220.md"
deleted file mode 100644
index 04a084c..0000000
--- "a/example/\346\225\260\347\273\204/994.\350\205\220\347\203\202\347\232\204\346\251\230\345\255\220.md"
+++ /dev/null
@@ -1,62 +0,0 @@
-## [994.腐烂的橘子](https://leetcode.cn/problems/rotting-oranges/) medium
-
-- 跟 [542.01 矩阵](#54201-矩阵)解法相似
-- 只变换橘子位置
-- 求最大的结果,如果有-1,返回-1
-
-```js
-/**
- * @param {number[][]} grid
- * @return {number}
- */
-var orangesRotting = function (grid) {
- const m = grid.length,
- n = grid[0].length;
- const dist = new Array(m).fill().map((_) => new Array(n).fill(0));
- const visited = new Array(m).fill().map((_) => new Array(n).fill(false));
- const q = [];
- const direction = [
- [-1, 0],
- [1, 0],
- [0, -1],
- [0, 1],
- ];
-
- // 先把2放入队列中
- for (let i = 0; i < m; i++) {
- for (let j = 0; j < n; j++) {
- if (grid[i][j] === 2) {
- q.push([i, j]);
- visited[i][j] = true;
- } else if (grid[i][j] === 1) {
- dist[i][j] = -1; // -1 表示新鲜橘子
- }
- }
- }
-
- while (q.length) {
- const [i, j] = q.shift();
- for (let d = 0; d < 4; d++) {
- let ni = direction[d][0] + i;
- let nj = direction[d][1] + j;
- if (ni >= 0 && nj >= 0 && ni < m && nj < n && !visited[ni][nj]) {
- if (dist[ni][nj] === -1) {
- dist[ni][nj] = dist[i][j] + 1;
- q.push([ni, nj]);
- visited[ni][nj] = true;
- }
- }
- }
- }
-
- let res = -1;
- for (let i = 0; i < m; i++) {
- for (let j = 0; j < n; j++) {
- if (dist[i][j] === -1) return -1;
- res = Math.max(res, dist[i][j]);
- }
- }
-
- return res;
-};
-```
diff --git "a/example/\346\225\260\347\273\204/\344\272\214\344\275\215\346\225\260\347\273\204\347\232\204\350\212\261\345\274\217\351\201\215\345\216\206\346\212\200\345\267\247/48.\346\227\213\350\275\254\345\233\276\345\203\217.md" "b/example/\346\225\260\347\273\204/\344\272\214\344\275\215\346\225\260\347\273\204\347\232\204\350\212\261\345\274\217\351\201\215\345\216\206\346\212\200\345\267\247/48.\346\227\213\350\275\254\345\233\276\345\203\217.md"
deleted file mode 100644
index 0df9eb3..0000000
--- "a/example/\346\225\260\347\273\204/\344\272\214\344\275\215\346\225\260\347\273\204\347\232\204\350\212\261\345\274\217\351\201\215\345\216\206\346\212\200\345\267\247/48.\346\227\213\350\275\254\345\233\276\345\203\217.md"
+++ /dev/null
@@ -1,41 +0,0 @@
-### [48.旋转图像](https://leetcode.cn/problems/rotate-image/) medium
-
-时间复杂度 O(N^2) 每一次翻转都需要遍历数组一半的元素,N 是数组的边长
-空间复杂度 O(1)
-
-- 思路
-- 先根据对角线镜像翻转,然后再翻转每一行
-- 即可达到顺时针旋转 90 度的效果
-
-```js
-/**
- * @param {number[][]} matrix
- * @return {void} Do not return anything, modify matrix in-place instead.
- */
-var rotate = function (matrix) {
- const n = matrix.length;
- for (let i = 0; i < n; i++) {
- for (let j = i; j < n; j++) {
- const temp = matrix[i][j];
- matrix[i][j] = matrix[j][i];
- matrix[j][i] = temp;
- }
- }
-
- const reverse = (arr) => {
- let i = 0,
- j = arr.length - 1;
- while (i < j) {
- const temp = arr[i];
- arr[i] = arr[j];
- arr[j] = temp;
- i++;
- j--;
- }
- };
-
- for (const row of matrix) {
- reverse(row);
- }
-};
-```
diff --git "a/example/\346\225\260\347\273\204/\344\272\214\344\275\215\346\225\260\347\273\204\347\232\204\350\212\261\345\274\217\351\201\215\345\216\206\346\212\200\345\267\247/54.\350\236\272\346\227\213\347\237\251\351\230\265.md" "b/example/\346\225\260\347\273\204/\344\272\214\344\275\215\346\225\260\347\273\204\347\232\204\350\212\261\345\274\217\351\201\215\345\216\206\346\212\200\345\267\247/54.\350\236\272\346\227\213\347\237\251\351\230\265.md"
deleted file mode 100644
index c679ae4..0000000
--- "a/example/\346\225\260\347\273\204/\344\272\214\344\275\215\346\225\260\347\273\204\347\232\204\350\212\261\345\274\217\351\201\215\345\216\206\346\212\200\345\267\247/54.\350\236\272\346\227\213\347\237\251\351\230\265.md"
+++ /dev/null
@@ -1,59 +0,0 @@
-### [54.螺旋矩阵](https://leetcode.cn/problems/spiral-matrix/) medium
-
-时间复杂度 O(N)
-空间复杂度 O(N)
-
-- 思路
-- 限定好上下左右四个边界,然后每当遍历一边完成就收缩边界
-
-```js
-/**
- * @param {number[][]} matrix
- * @return {number[]}
- */
-var spiralOrder = function (matrix) {
- const m = matrix.length,
- n = matrix[0].length;
- let up_bound = 0,
- low_bound = m - 1;
- let left_bound = 0,
- right_bound = n - 1;
- const res = [];
- // 当res.length == m*n时退出循环
- while (res.length < m * n) {
- // 在上侧,⇒ 从左向右遍历
- if (up_bound <= low_bound) {
- for (let j = left_bound; j <= right_bound; j++) {
- res.push(matrix[up_bound][j]);
- }
- up_bound++; // 上边界收缩
- }
-
- // 在右侧,⇓ 从上向下遍历
- if (left_bound <= right_bound) {
- for (let i = up_bound; i <= low_bound; i++) {
- res.push(matrix[i][right_bound]);
- }
- right_bound--; // 右边界收缩
- }
-
- // 在下侧,⇐ 从右向左遍历
- if (up_bound <= low_bound) {
- for (let j = right_bound; j >= left_bound; j--) {
- res.push(matrix[low_bound][j]);
- }
- low_bound--; // 下边界收缩
- }
-
- // 在左侧,⇑ 从下向上遍历
- if (left_bound <= right_bound) {
- for (let i = low_bound; i >= up_bound; i--) {
- res.push(matrix[i][left_bound]);
- }
- left_bound++;
- }
- }
-
- return res;
-};
-```
diff --git "a/example/\346\225\260\347\273\204/\344\272\214\344\275\215\346\225\260\347\273\204\347\232\204\350\212\261\345\274\217\351\201\215\345\216\206\346\212\200\345\267\247/59.\350\236\272\346\227\213\347\237\251\351\230\265II.md" "b/example/\346\225\260\347\273\204/\344\272\214\344\275\215\346\225\260\347\273\204\347\232\204\350\212\261\345\274\217\351\201\215\345\216\206\346\212\200\345\267\247/59.\350\236\272\346\227\213\347\237\251\351\230\265II.md"
deleted file mode 100644
index 7863b60..0000000
--- "a/example/\346\225\260\347\273\204/\344\272\214\344\275\215\346\225\260\347\273\204\347\232\204\350\212\261\345\274\217\351\201\215\345\216\206\346\212\200\345\267\247/59.\350\236\272\346\227\213\347\237\251\351\230\265II.md"
+++ /dev/null
@@ -1,64 +0,0 @@
-### [59.螺旋矩阵 II](https://leetcode.cn/problems/spiral-matrix-ii/) medium
-
-时间复杂度 O(N)
-空间复杂度 O(N)
-
-- 思路
-- 跟[54.螺旋矩阵](/js-logs/array#54螺旋矩阵)相似
-- 限定好上下左右四个边界,然后每当遍历一边完成就收缩边界
-- 每次遍历就把 num 填入在 matrix 中对应的位置
-
-```js
-/**
- * @param {number} n
- * @return {number[][]}
- */
-var generateMatrix = function (n) {
- const matrix = Array(n)
- .fill()
- .map(() => Array(n).fill(0));
-
- let up_bound = 0,
- low_bound = n - 1;
- let left_bound = 0,
- right_bound = n - 1;
- let num = 1;
-
- // 当num == n*n时退出循环
- while (num <= n * n) {
- // 在上侧,⇒ 从左向右遍历
- if (up_bound <= low_bound) {
- for (let j = left_bound; j <= right_bound; j++) {
- matrix[up_bound][j] = num++;
- }
- up_bound++; // 上边界收缩
- }
-
- // 在右侧,⇓ 从上向下遍历
- if (left_bound <= right_bound) {
- for (let i = up_bound; i <= low_bound; i++) {
- matrix[i][right_bound] = num++;
- }
- right_bound--; // 右边界收缩
- }
-
- // 在下侧,⇐ 从右向左遍历
- if (up_bound <= low_bound) {
- for (let j = right_bound; j >= left_bound; j--) {
- matrix[low_bound][j] = num++;
- }
- low_bound--; // 下边界收缩
- }
-
- // 在左侧,⇑ 从下向上遍历
- if (left_bound <= right_bound) {
- for (let i = low_bound; i >= up_bound; i--) {
- matrix[i][left_bound] = num++;
- }
- left_bound++;
- }
- }
-
- return matrix;
-};
-```
diff --git "a/example/\346\225\260\347\273\204/\344\272\214\344\275\215\346\225\260\347\273\204\347\232\204\350\212\261\345\274\217\351\201\215\345\216\206\346\212\200\345\267\247/\345\211\221\346\214\207Offer29.\351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" "b/example/\346\225\260\347\273\204/\344\272\214\344\275\215\346\225\260\347\273\204\347\232\204\350\212\261\345\274\217\351\201\215\345\216\206\346\212\200\345\267\247/\345\211\221\346\214\207Offer29.\351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md"
deleted file mode 100644
index be95379..0000000
--- "a/example/\346\225\260\347\273\204/\344\272\214\344\275\215\346\225\260\347\273\204\347\232\204\350\212\261\345\274\217\351\201\215\345\216\206\346\212\200\345\267\247/\345\211\221\346\214\207Offer29.\351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md"
+++ /dev/null
@@ -1,61 +0,0 @@
-## [剑指 Offer 29. 顺时针打印矩阵](https://leetcode.cn/problems/shun-shi-zhen-da-yin-ju-zhen-lcof/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(N)
-
-- 思路
-- 限定好上下左右四个边界,然后每当遍历一边完成就收缩边界
-- 跟[54.螺旋矩阵](/js-logs/array#54螺旋矩阵)相同
-
-```js
-/**
- * @param {number[][]} matrix
- * @return {number[]}
- */
-var spiralOrder = function (matrix) {
- const m = matrix.length;
- if (m === 0) return [];
- const n = matrix[0].length;
- let up_bound = 0,
- low_bound = m - 1;
- let left_bound = 0,
- right_bound = n - 1;
- const res = [];
- // 当res.length == m*n时退出循环
- while (res.length < m * n) {
- // 在上侧,⇒ 从左向右遍历
- if (up_bound <= low_bound) {
- for (let j = left_bound; j <= right_bound; j++) {
- res.push(matrix[up_bound][j]);
- }
- up_bound++; // 上边界收缩
- }
-
- // 在右侧,⇓ 从上向下遍历
- if (left_bound <= right_bound) {
- for (let i = up_bound; i <= low_bound; i++) {
- res.push(matrix[i][right_bound]);
- }
- right_bound--; // 右边界收缩
- }
-
- // 在下侧,⇐ 从右向左遍历
- if (up_bound <= low_bound) {
- for (let j = right_bound; j >= left_bound; j--) {
- res.push(matrix[low_bound][j]);
- }
- low_bound--; // 下边界收缩
- }
-
- // 在左侧,⇑ 从下向上遍历
- if (left_bound <= right_bound) {
- for (let i = low_bound; i >= up_bound; i--) {
- res.push(matrix[i][left_bound]);
- }
- left_bound++;
- }
- }
-
- return res;
-};
-```
diff --git "a/example/\346\225\260\347\273\204/\345\211\215\347\274\200\345\222\214/1314.\347\237\251\351\230\265\345\214\272\345\237\237\345\222\214.md" "b/example/\346\225\260\347\273\204/\345\211\215\347\274\200\345\222\214/1314.\347\237\251\351\230\265\345\214\272\345\237\237\345\222\214.md"
deleted file mode 100644
index 4bdd5fb..0000000
--- "a/example/\346\225\260\347\273\204/\345\211\215\347\274\200\345\222\214/1314.\347\237\251\351\230\265\345\214\272\345\237\237\345\222\214.md"
+++ /dev/null
@@ -1,81 +0,0 @@
-### [1314.矩阵区域和](https://leetcode.cn/problems/matrix-block-sum/) medium
-
-- 思路
-- 运用到了前缀和的- 思路
-- 使用 [304 题](#304二维区域和检索-矩阵不可变)的解法
-- 再对边界情况做处理就可以直接使用 304 的题解了
-
-
-
-
矩阵区域和
-
-
-```js
-/**
- * @param {number[][]} mat
- * @param {number} k
- * @return {number[][]}
- */
-var matrixBlockSum = function (mat, k) {
- const m = mat.length,
- n = mat[0].length;
- let res = new Array(m).fill().map((_) => new Array(n).fill(0));
-
- const numMatrix = new NumMatrix(mat);
-
- for (let i = 0; i < m; i++) {
- for (let j = 0; j < n; j++) {
- // 左上角坐标(x1,y1)
- let x1 = Math.max(i - k, 0);
- let y1 = Math.max(j - k, 0);
- // 右下角的坐标
- let x2 = Math.min(i + k, m - 1);
- let y2 = Math.min(j + k, n - 1);
- res[i][j] = numMatrix.sumRegion(x1, y1, x2, y2);
- }
- }
-
- return res;
-};
-// 304题目
-/**
- * @param {number[][]} matrix
- */
-var NumMatrix = function (matrix) {
- let m = matrix.length,
- n = matrix[0].length;
- // 定义preSum[i,j]记录着 matrix[0][0] 到matrix[i-1][j-1]的元素和(前缀和)
- this.preSum = new Array(m + 1).fill(0).map((_) => new Array(n + 1).fill(0));
- for (let i = 1; i < m + 1; i++) {
- for (let j = 1; j < n + 1; j++) {
- this.preSum[i][j] =
- this.preSum[i - 1][j] +
- this.preSum[i][j - 1] +
- matrix[i - 1][j - 1] -
- this.preSum[i - 1][j - 1];
- }
- }
-};
-
-/**
- * @param {number} row1
- * @param {number} col1
- * @param {number} row2
- * @param {number} col2
- * @return {number}
- */
-NumMatrix.prototype.sumRegion = function (row1, col1, row2, col2) {
- return (
- this.preSum[row2 + 1][col2 + 1] -
- this.preSum[row1][col2 + 1] -
- this.preSum[row2 + 1][col1] +
- this.preSum[row1][col1]
- );
-};
-
-/**
- * Your NumMatrix object will be instantiated and called as such:
- * var obj = new NumMatrix(matrix)
- * var param_1 = obj.sumRegion(row1,col1,row2,col2)
- */
-```
diff --git "a/example/\346\225\260\347\273\204/\345\211\215\347\274\200\345\222\214/238.\351\231\244\350\207\252\350\272\253\344\273\245\345\244\226\346\225\260\347\273\204\347\232\204\344\271\230\347\247\257.md" "b/example/\346\225\260\347\273\204/\345\211\215\347\274\200\345\222\214/238.\351\231\244\350\207\252\350\272\253\344\273\245\345\244\226\346\225\260\347\273\204\347\232\204\344\271\230\347\247\257.md"
deleted file mode 100644
index a1c80f9..0000000
--- "a/example/\346\225\260\347\273\204/\345\211\215\347\274\200\345\222\214/238.\351\231\244\350\207\252\350\272\253\344\273\245\345\244\226\346\225\260\347\273\204\347\232\204\344\271\230\347\247\257.md"
+++ /dev/null
@@ -1,48 +0,0 @@
-### [238.除自身以外数组的乘积](https://leetcode.cn/problems/product-of-array-except-self/) medium
-
-时间复杂度 O(N)
-空间复杂度 O(N)
-
-- 思路(前缀和)
-- 分别构建从左到右,和从右到左的前缀积
-- 例如原数组是: `[1,2,3,4,5]`
-- 从左到右的前缀积 prefix[i]是 nums[0...i]的元素积
- - prefix: `[ 1, 2, 6, 24, 120 ]`
-- 从右到左的前缀积,suffix[i]是是 nums[i...n-1]的元素积
- - suffix: `[ 120, 120, 60, 20, 5 ]`
-- 最后在 res 中,除了自己,将左侧和右侧的元素相乘
-- 跟[剑指 Offer66.构建乘积数组](/js-logs/sword-point-offer#剑指-offer-66-构建乘积数组)相同
-
-```js
-/**
- * @param {number[]} nums
- * @return {number[]}
- */
-var productExceptSelf = function (nums) {
- const n = nums.length;
- if (n === 0) return [];
- // 假设 nums => [1,2,3,4,5]
- // 从左到右的前缀积 prefix[i]是nums[0...i]的元素积
- const prefix = Array(n); // => [ 1, 2, 6, 24, 120 ]
- prefix[0] = nums[0];
- for (let i = 1; i < n; i++) {
- prefix[i] = prefix[i - 1] * nums[i];
- }
-
- // 从右到左的前缀积,suffix[i]是nums[i...n-1]的元素积
- const suffix = Array(n); // => [ 120, 120, 60, 20, 5 ]
- suffix[n - 1] = nums[n - 1];
- for (let i = n - 2; i >= 0; i--) {
- suffix[i] = suffix[i + 1] * nums[i];
- }
-
- const res = Array(n);
- res[0] = suffix[1];
- res[n - 1] = prefix[n - 2];
- for (let i = 1; i < n - 1; i++) {
- // 除了nums[i]自己,左侧和右侧的所有元素的积
- res[i] = prefix[i - 1] * suffix[i + 1];
- }
- return res;
-};
-```
diff --git "a/example/\346\225\260\347\273\204/\345\211\215\347\274\200\345\222\214/303.\345\214\272\345\237\237\345\222\214\346\243\200\347\264\242-\346\225\260\347\273\204\344\270\215\345\217\257\345\217\230.md" "b/example/\346\225\260\347\273\204/\345\211\215\347\274\200\345\222\214/303.\345\214\272\345\237\237\345\222\214\346\243\200\347\264\242-\346\225\260\347\273\204\344\270\215\345\217\257\345\217\230.md"
deleted file mode 100644
index 2db57a9..0000000
--- "a/example/\346\225\260\347\273\204/\345\211\215\347\274\200\345\222\214/303.\345\214\272\345\237\237\345\222\214\346\243\200\347\264\242-\346\225\260\347\273\204\344\270\215\345\217\257\345\217\230.md"
+++ /dev/null
@@ -1,64 +0,0 @@
-### [303.区域和检索-数组不可变](https://leetcode.cn/problems/range-sum-query-immutable/) easy
-
-
-
-
前缀和
-
-
-时间复杂度 O(1)
-空间复杂度 O(N)
-
-- 思路
-- 前缀和 解法
-- 初始化是计算前缀和 preSum,preSum 第一位存储 0,方便后面计算,所以长度要比 nums+1
-- nums: 0 1 2 3 4 5
-- ---> : [ 3 5 2 -2 4 1 ]
-- preSum:0 1 2 3 4 5 6
-- -----> : [ 0 3 8 10 8 12 13 ]
-- 核心- 思路是我们 new 一个新的数组 preSum 出来,preSum[i] 记录 nums[0..i-1] 的累加和,看图 10 = 3 + 5 + 2:
-- 如果我想求索引区间 [1, 4] 内的所有元素之和,就可以通过 preSum[5] - preSum[1] 得出
-
-```js
-/**
- * @param {number[]} nums
- */
-var NumArray = function (nums) {
- this.preSum = new Array(nums.length + 1).fill(0);
- for (let i = 1; i < this.preSum.length; i++) {
- this.preSum[i] = this.preSum[i - 1] + nums[i - 1];
- }
-};
-
-/**
- * @param {number} left
- * @param {number} right
- * @return {number}
- */
-NumArray.prototype.sumRange = function (left, right) {
- return this.preSum[right + 1] - this.preSum[left];
-};
-```
-
-- 根据题意求和
-
-```js
-/**
- * @param {number[]} nums
- */
-var NumArray = function (nums) {
- this.nums = nums;
-};
-
-/**
- * @param {number} left
- * @param {number} right
- * @return {number}
- */
-NumArray.prototype.sumRange = function (left, right) {
- let res = 0;
- for (let i = left; i <= right; i++) {
- res += this.nums[i];
- }
- return res;
-};
-```
diff --git "a/example/\346\225\260\347\273\204/\345\211\215\347\274\200\345\222\214/304.\344\272\214\347\273\264\345\214\272\345\237\237\345\222\214\346\243\200\347\264\242-\347\237\251\351\230\265\344\270\215\345\217\257\345\217\230.md" "b/example/\346\225\260\347\273\204/\345\211\215\347\274\200\345\222\214/304.\344\272\214\347\273\264\345\214\272\345\237\237\345\222\214\346\243\200\347\264\242-\347\237\251\351\230\265\344\270\215\345\217\257\345\217\230.md"
deleted file mode 100644
index f43cb91..0000000
--- "a/example/\346\225\260\347\273\204/\345\211\215\347\274\200\345\222\214/304.\344\272\214\347\273\264\345\214\272\345\237\237\345\222\214\346\243\200\347\264\242-\347\237\251\351\230\265\344\270\215\345\217\257\345\217\230.md"
+++ /dev/null
@@ -1,58 +0,0 @@
-### [304.二维区域和检索-矩阵不可变](https://leetcode.cn/problems/range-sum-query-2d-immutable/) medium
-
-时间复杂度 O(1)
-空间复杂度 O(M\*N)
-
-- 思路
-- 前缀和
-- 目标矩阵通过相邻矩阵运行得到目标区域和
-
-
-
-
前缀和的矩阵运算
-
-
-- 定义 preSum[i,j]记录着 matrix[0][0] 到 matrix[i-1][j-1]的元素和(前缀和)
-
-```js
-/**
- * @param {number[][]} matrix
- */
-var NumMatrix = function (matrix) {
- let m = matrix.length,
- n = matrix[0].length;
- // 定义preSum[i,j]记录着 matrix[0][0] 到matrix[i-1][j-1]的元素和(前缀和)
- this.preSum = new Array(m + 1).fill(0).map((_) => new Array(n + 1).fill(0));
- for (let i = 1; i < m + 1; i++) {
- for (let j = 1; j < n + 1; j++) {
- this.preSum[i][j] =
- this.preSum[i - 1][j] +
- this.preSum[i][j - 1] +
- matrix[i - 1][j - 1] -
- this.preSum[i - 1][j - 1];
- }
- }
-};
-
-/**
- * @param {number} row1
- * @param {number} col1
- * @param {number} row2
- * @param {number} col2
- * @return {number}
- */
-NumMatrix.prototype.sumRegion = function (row1, col1, row2, col2) {
- return (
- this.preSum[row2 + 1][col2 + 1] -
- this.preSum[row1][col2 + 1] -
- this.preSum[row2 + 1][col1] +
- this.preSum[row1][col1]
- );
-};
-
-/**
- * Your NumMatrix object will be instantiated and called as such:
- * var obj = new NumMatrix(matrix)
- * var param_1 = obj.sumRegion(row1,col1,row2,col2)
- */
-```
diff --git "a/example/\346\225\260\347\273\204/\345\217\214\346\214\207\351\222\210/167.\344\270\244\346\225\260\344\271\213\345\222\214-ii-\350\276\223\345\205\245\346\234\211\345\272\217\346\225\260\347\273\204.md" "b/example/\346\225\260\347\273\204/\345\217\214\346\214\207\351\222\210/167.\344\270\244\346\225\260\344\271\213\345\222\214-ii-\350\276\223\345\205\245\346\234\211\345\272\217\346\225\260\347\273\204.md"
deleted file mode 100644
index 278e3bc..0000000
--- "a/example/\346\225\260\347\273\204/\345\217\214\346\214\207\351\222\210/167.\344\270\244\346\225\260\344\271\213\345\222\214-ii-\350\276\223\345\205\245\346\234\211\345\272\217\346\225\260\347\273\204.md"
+++ /dev/null
@@ -1,37 +0,0 @@
-### [167.两数之和-ii-输入有序数组](https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/) medium
-
-时间复杂度 O(logN)
-空间复杂度 O(1)
-
-- 思路
-- 声明 left、right 两个指针
-- 从两头取值进行比较
-- 若两头取到的和想等,说明找到了,返回索引+1 即可
-- 若 sum > target ,说明 sum 大了,让 right--,使 sum 小一点,再进行比较
-- 若 sum < target ,说明 sum 小了,让 left++,使 sum 大一点,再进行比较
-- 以上两点是因为题目说数组是 **非递减顺序排列**的
-
-```js
-/**
- * @param {number[]} numbers
- * @param {number} target
- * @return {number[]}
- */
-var twoSum = function (numbers, target) {
- let left = 0,
- right = numbers.length - 1;
- while (left < right) {
- const sum = numbers[left] + numbers[right];
- if (sum === target) {
- // 找到target,返回索引
- // 题目下标从1开始的,所以要+1
- return [left + 1, right + 1];
- } else if (sum > target) {
- right--; // 让sum小一点
- } else if (sum < target) {
- left++; // 让sum大一点
- }
- }
- return [-1, -1];
-};
-```
diff --git "a/example/\346\225\260\347\273\204/\345\217\214\346\214\207\351\222\210/26.\345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271.md" "b/example/\346\225\260\347\273\204/\345\217\214\346\214\207\351\222\210/26.\345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271.md"
deleted file mode 100644
index 07b9860..0000000
--- "a/example/\346\225\260\347\273\204/\345\217\214\346\214\207\351\222\210/26.\345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271.md"
+++ /dev/null
@@ -1,86 +0,0 @@
-### [26.删除有序数组中的重复项](https://leetcode.cn/problems/remove-duplicates-from-sorted-array/) easy
-
-时间复杂度 O(1)
-空间复杂度 O(1)
-
-- 思路
-- 使用快慢指针
-- 让快指针去探路
-- 探路的过程中比较慢指针是否和快指针对应的值相等
-- 若不相等,说明不是重复元素,将慢指针前进一步,将快指针对应的值赋值到慢指针的位置上
-- 这样 nums[0-slow]的位置都是不重复元素
-
-
-
-
-```js
-/**
- * @param {number[]} nums
- * @return {number}
- */
-var removeDuplicates = function (nums) {
- if (nums.length === 0) return 0;
- let slow = 0,
- fast = 0;
- while (fast < nums.length) {
- if (nums[slow] !== nums[fast]) {
- slow++;
- nums[slow] = nums[fast];
- }
- fast++;
- }
- return slow + 1;
-};
-```
-
-
-
-
-
-```java
-class Solution {
- public int removeDuplicates(int[] nums) {
- if (nums.length == 0) {
- return 0;
- }
- int slow = 0, fast = 0;
- while (fast < nums.length) {
- if (nums[fast] != nums[slow]) {
- slow++;
- nums[slow] = nums[fast];
- }
- fast++;
- }
- return slow + 1;
- }
-}
-```
-
-
-
-
-
-```rust
-impl Solution {
- pub fn remove_duplicates(nums: &mut Vec) -> i32 {
- if nums.is_empty() {
- return 0;
- }
-
- let mut slow = 0;
- let mut fast = 0;
- while fast < nums.len() {
- if nums[slow] != nums[fast] {
- slow += 1;
- nums[slow] = nums[fast];
- }
- fast += 1;
- }
-
- return (slow + 1) as i32;
- }
-}
-```
-
-
-
diff --git "a/example/\346\225\260\347\273\204/\345\217\214\346\214\207\351\222\210/27.\347\247\273\351\231\244\345\205\203\347\264\240.md" "b/example/\346\225\260\347\273\204/\345\217\214\346\214\207\351\222\210/27.\347\247\273\351\231\244\345\205\203\347\264\240.md"
deleted file mode 100644
index 6fa9b54..0000000
--- "a/example/\346\225\260\347\273\204/\345\217\214\346\214\207\351\222\210/27.\347\247\273\351\231\244\345\205\203\347\264\240.md"
+++ /dev/null
@@ -1,31 +0,0 @@
-### [27.移除元素](https://leetcode.cn/problems/remove-element/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(1)
-
-- 思路
-- 快慢指针
-- 跳过对目标 val 的处理,这样就相当于删除了 val
-- 对于不等于 val 的数据,做指针的偏移处理
-
-```js
-/**
- * @param {number[]} nums
- * @param {number} val
- * @return {number}
- */
-var removeElement = function (nums, val) {
- if (nums.length === 0) return 0;
- let slow = 0,
- fast = 0;
- while (fast < nums.length) {
- if (nums[fast] !== val) {
- nums[slow] = nums[fast];
- slow++;
- }
- fast++;
- }
-
- return slow;
-};
-```
diff --git "a/example/\346\225\260\347\273\204/\345\217\214\346\214\207\351\222\210/283.\347\247\273\345\212\250\351\233\266.md" "b/example/\346\225\260\347\273\204/\345\217\214\346\214\207\351\222\210/283.\347\247\273\345\212\250\351\233\266.md"
deleted file mode 100644
index 5d68c03..0000000
--- "a/example/\346\225\260\347\273\204/\345\217\214\346\214\207\351\222\210/283.\347\247\273\345\212\250\351\233\266.md"
+++ /dev/null
@@ -1,40 +0,0 @@
-### [283.移动零](https://leetcode.cn/problems/move-zeroes/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(1)
-
-- 思路
-- 先使用快慢指针法,将不为 0 的元素,按照之前顺序排在前面
-- 然后将 slow 之后的元素全部设置为 0 即可
-
-```js
-// 27.移除元素 https://leetcode.cn/problems/remove-element/
-var removeElement = function (nums, val) {
- if (nums.length === 0) return 0;
- let slow = 0,
- fast = 0;
- while (fast < nums.length) {
- if (nums[fast] !== val) {
- nums[slow] = nums[fast];
- slow++;
- }
- fast++;
- }
-
- return slow;
-};
-
-/**
- * @param {number[]} nums
- * @return {void} Do not return anything, modify nums in-place instead.
- */
-var moveZeroes = function (nums) {
- // 先使用【移除元素】,将数组中0的元素删除
- // 返回nums的length,且nums[0,p-1]已经原地删除了0
- let p = removeElement(nums, 0);
- for (; p < nums.length; p++) {
- nums[p] = 0;
- }
- return nums;
-};
-```
diff --git "a/example/\346\225\260\347\273\204/\345\217\214\346\214\207\351\222\210/344.\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262.md" "b/example/\346\225\260\347\273\204/\345\217\214\346\214\207\351\222\210/344.\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262.md"
deleted file mode 100644
index b8ac11f..0000000
--- "a/example/\346\225\260\347\273\204/\345\217\214\346\214\207\351\222\210/344.\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262.md"
+++ /dev/null
@@ -1,28 +0,0 @@
-### [344.反转字符串](https://leetcode.cn/problems/reverse-string/) easy
-
-时间复杂度 O(logN)
-空间复杂度 O(1)
-
-- 思路
-- 左右指针
-- 交换左右指针的值即可
-
-```js
-/**
- * @param {character[]} s
- * @return {void} Do not return anything, modify s in-place instead.
- */
-var reverseString = function (s) {
- if (s.length === 0 || s.length === 1) return s;
- let left = 0,
- right = s.length - 1;
- while (left < right) {
- let temp = s[left];
- s[left] = s[right];
- s[right] = temp;
- left++;
- right--;
- }
- return s;
-};
-```
diff --git "a/example/\346\225\260\347\273\204/\345\217\214\346\214\207\351\222\210/5.\346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\344\270\262.md" "b/example/\346\225\260\347\273\204/\345\217\214\346\214\207\351\222\210/5.\346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\344\270\262.md"
deleted file mode 100644
index 4c2fc9f..0000000
--- "a/example/\346\225\260\347\273\204/\345\217\214\346\214\207\351\222\210/5.\346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\344\270\262.md"
+++ /dev/null
@@ -1,43 +0,0 @@
-### [5.最长回文子串](https://leetcode.cn/problems/longest-palindromic-substring/) medium
-
-时间复杂度 O(N^2)
-空间复杂度 O(1)
-
-- 思路(中心向外扩散的左右指针)
-- 回文指的就是正反念都一样的串
-- 我们可以根据这个特性使用左右指针共同向外扩散,来判断是否为一个回文串
-- 我们还要考虑到,回文串长度的奇偶性
-- 这里我们先编写一个函数,函数返回回文串,这里使用 l,r 两个函数,兼容了奇偶的情况
-- 然后遍历这个字符串,分别找奇数情况(i,i)下的回文串,和偶数情况(i,i+1)下的回文串
-- 然后保留最长的那一个回文串返回即可
-
-```js
-/**
- * @param {string} s
- * @return {string}
- */
-var longestPalindrome = function (s) {
- if (s.length === 0 || s.length === 1) return s;
- let res = '';
- for (let i = 0; i < s.length; i++) {
- // 以s[i]为中心
- let res1 = palindrome(s, i, i);
- // 以s[i],s[i+1]为中心
- let res2 = palindrome(s, i, i + 1);
- res = res1.length > res.length ? res1 : res;
- res = res2.length > res.length ? res2 : res;
- }
- return res;
-};
-
-// 在s中找出以s[l],s[r]为中心的回文串
-var palindrome = (s, l, r) => {
- while (l >= 0 && r < s.length && s[l] === s[r]) {
- l--;
- r++;
- }
- // 返回以 s[l],s[r] 为中心的最长回文串
- // 当while循环结束的时候,l是少一个的,r是多一个的,由于substring的范围是[s,e)的,所以l需要+1,r刚好,所以不用操作
- return s.substring(l + 1, r);
-};
-```
diff --git "a/example/\346\225\260\347\273\204/\345\217\214\346\214\207\351\222\210/557.\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215III.md" "b/example/\346\225\260\347\273\204/\345\217\214\346\214\207\351\222\210/557.\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215III.md"
deleted file mode 100644
index 79127e0..0000000
--- "a/example/\346\225\260\347\273\204/\345\217\214\346\214\207\351\222\210/557.\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215III.md"
+++ /dev/null
@@ -1,40 +0,0 @@
-### [557.反转字符串中的单词 III](https://leetcode.cn/problems/reverse-words-in-a-string-iii/) easy
-
-- 思路
-- 根据空格拆分成单字符串的数组
-- 然后根据 [344.反转字符串](#344反转字符串),分别反转单字符串
-- 最后合并成一个字符串
-
-```js
-/**
- * @param {string} s
- * @return {string}
- */
-var reverseWords = function (s) {
- const singleWorldNums = s.split(' ');
- return singleWorldNums
- .map((item) => {
- return reverseString(item.split('')).join('');
- })
- .join(' ');
-};
-
-var reverseString = function (s) {
- if (s.length === 0 || s.length === 1) return s;
- let left = 0,
- right = s.length - 1;
-
- const swap = (i, j) => {
- let temp = s[i];
- s[i] = s[j];
- s[j] = temp;
- };
-
- while (left < right) {
- swap(left, right);
- left++;
- right--;
- }
- return s;
-};
-```
diff --git "a/example/\346\225\260\347\273\204/\345\217\214\346\214\207\351\222\210/83.\345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240.md" "b/example/\346\225\260\347\273\204/\345\217\214\346\214\207\351\222\210/83.\345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240.md"
deleted file mode 100644
index 2b23365..0000000
--- "a/example/\346\225\260\347\273\204/\345\217\214\346\214\207\351\222\210/83.\345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240.md"
+++ /dev/null
@@ -1,43 +0,0 @@
-### [83.删除排序链表中的重复元素](https://leetcode.cn/problems/remove-duplicates-from-sorted-list/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(1)
-
-- 思路
-- 快慢指针法,与 [26.删除有序数组中的重复项](#26删除有序数组中的重复项)相似
-- 因为链表已经有序,所以可以使用快指针在前面探路
-- 当遇到元素不相等的情况时,说明不是重复元素
-- 此时可以将 slow 指针的 next 指向快指针,这样就能让不重复的元素相连接
-- 然后再将 slow 指针指向 fast,fast 指针继续探路
-- 当 fast 指针探路结束,断开 slow 后的所有链接,即 slow.next=null;这样做可以维护 slow 走过的链表不重复,返回 head 即可
-
-```js
-/**
- * Definition for singly-linked list.
- * function ListNode(val, next) {
- * this.val = (val===undefined ? 0 : val)
- * this.next = (next===undefined ? null : next)
- * }
- */
-/**
- * @param {ListNode} head
- * @return {ListNode}
- */
-var deleteDuplicates = function (head) {
- if (head === null) return null;
- let slow = head,
- fast = head;
- while (fast !== null) {
- if (fast.val !== slow.val) {
- // 将slow的下一个节点与fast相连
- slow.next = fast;
- // slow移动到fast的位置
- slow = fast;
- }
- fast = fast.next;
- }
- // 断开后面所有连接
- slow.next = null;
- return head;
-};
-```
diff --git "a/example/\346\225\260\347\273\204/\345\262\233\345\261\277\351\227\256\351\242\230/1020.\351\243\236\345\234\260\347\232\204\346\225\260\351\207\217.md" "b/example/\346\225\260\347\273\204/\345\262\233\345\261\277\351\227\256\351\242\230/1020.\351\243\236\345\234\260\347\232\204\346\225\260\351\207\217.md"
deleted file mode 100644
index 9dd47b8..0000000
--- "a/example/\346\225\260\347\273\204/\345\262\233\345\261\277\351\227\256\351\242\230/1020.\351\243\236\345\234\260\347\232\204\346\225\260\351\207\217.md"
+++ /dev/null
@@ -1,51 +0,0 @@
-### [1020.飞地的数量](https://leetcode.cn/problems/number-of-enclaves/) medium
-
-跟【1254.统计封闭岛屿的数目】类似都要先把边上的给淹了
-1254 求的是封闭岛屿的数量,所以找到岛屿后需要再淹一下
-这个只需要求剩下岛屿的面积(数量)
-
-```js
-/**
- * @param {number[][]} grid
- * @return {number}
- */
-var numEnclaves = function (grid) {
- const m = grid.length,
- n = grid[0].length;
-
- // 从 (i, j) 开始,将与之相邻的陆地都变成海水
- const dfs = (i, j) => {
- if (i < 0 || i >= m || j < 0 || j >= n) return;
- if (grid[i][j] === 0) return; // 已经是水了
-
- grid[i][j] = 0; // (i,j) 变成水
- // 相邻的都变成水
- dfs(i + 1, j);
- dfs(i - 1, j);
- dfs(i, j + 1);
- dfs(i, j - 1);
- };
-
- for (let i = 0; i < m; i++) {
- dfs(i, 0); // 把左边淹了
- dfs(i, n - 1); // 把右边淹了
- }
-
- for (let j = 0; j < n; j++) {
- dfs(0, j); // 把上边淹了
- dfs(m - 1, j); // 把下边淹了
- }
-
- let res = 0;
- for (let i = 0; i < m; i++) {
- for (let j = 0; j < n; j++) {
- // 如果发现岛屿
- if (grid[i][j] === 1) {
- res++;
- // dfs(i, j); // 与【1254.统计封闭岛屿的数目】不同之处
- }
- }
- }
- return res;
-};
-```
diff --git "a/example/\346\225\260\347\273\204/\345\262\233\345\261\277\351\227\256\351\242\230/1254.\347\273\237\350\256\241\345\260\201\351\227\255\345\262\233\345\261\277\347\232\204\346\225\260\347\233\256.md" "b/example/\346\225\260\347\273\204/\345\262\233\345\261\277\351\227\256\351\242\230/1254.\347\273\237\350\256\241\345\260\201\351\227\255\345\262\233\345\261\277\347\232\204\346\225\260\347\233\256.md"
deleted file mode 100644
index 21e5700..0000000
--- "a/example/\346\225\260\347\273\204/\345\262\233\345\261\277\351\227\256\351\242\230/1254.\347\273\237\350\256\241\345\260\201\351\227\255\345\262\233\345\261\277\347\232\204\346\225\260\347\233\256.md"
+++ /dev/null
@@ -1,51 +0,0 @@
-### [1254.统计封闭岛屿的数目](https://leetcode.cn/problems/number-of-closed-islands/) medium
-
-【200.岛屿数量】四周都是水,所以靠边的也算是岛屿
-该题的四周不算是水了,求岛屿的数量
-那么我们就可以先把四周用水淹了,就变成了【200.岛屿数量】
-
-```js
-/**
- * @param {number[][]} grid
- * @return {number}
- */
-var closedIsland = function (grid) {
- const m = grid.length,
- n = grid[0].length;
-
- // 从 (i, j) 开始,将与之相邻的陆地都变成海水
- const dfs = (i, j) => {
- if (i < 0 || i >= m || j < 0 || j >= n) return;
- if (grid[i][j] === 1) return; // 已经是水了
-
- grid[i][j] = 1; // (i,j) 变成水
- // 相邻的都变成水
- dfs(i + 1, j);
- dfs(i - 1, j);
- dfs(i, j + 1);
- dfs(i, j - 1);
- };
-
- for (let i = 0; i < m; i++) {
- dfs(i, 0); // 把左边淹了
- dfs(i, n - 1); // 把右边淹了
- }
-
- for (let j = 0; j < n; j++) {
- dfs(0, j); // 把上边淹了
- dfs(m - 1, j); // 把下边淹了
- }
-
- let res = 0;
- for (let i = 0; i < m; i++) {
- for (let j = 0; j < n; j++) {
- // 如果发现岛屿
- if (grid[i][j] === 0) {
- res++;
- dfs(i, j);
- }
- }
- }
- return res;
-};
-```
diff --git "a/example/\346\225\260\347\273\204/\345\262\233\345\261\277\351\227\256\351\242\230/1905.\347\273\237\350\256\241\345\255\220\345\262\233\345\261\277.md" "b/example/\346\225\260\347\273\204/\345\262\233\345\261\277\351\227\256\351\242\230/1905.\347\273\237\350\256\241\345\255\220\345\262\233\345\261\277.md"
deleted file mode 100644
index cb6cdb0..0000000
--- "a/example/\346\225\260\347\273\204/\345\262\233\345\261\277\351\227\256\351\242\230/1905.\347\273\237\350\256\241\345\255\220\345\262\233\345\261\277.md"
+++ /dev/null
@@ -1,53 +0,0 @@
-### [1905.统计子岛屿](https://leetcode.cn/problems/count-sub-islands/) medium
-
-【子岛屿】就是 B 中的岛屿,在 A 中也是岛屿
-我们可以先想办法把 B 中不是子岛屿的给消除掉,然后求 B 的岛屿数量,这样就转化成【200.岛屿数量】了
-
-怎么消除呢?
-若 B 中的岛屿位置,在 A 中是海洋,那么 B 就不是一个子岛屿,可以被海水覆盖掉
-
-```js
-/**
- * @param {number[][]} grid1
- * @param {number[][]} grid2
- * @return {number}
- */
-var countSubIslands = function (grid1, grid2) {
- const m = grid1.length,
- n = grid1[0].length;
-
- // 淹没掉(i,j)所有相邻的岛屿
- const dfs = (i, j) => {
- if (i < 0 || i >= m || j < 0 || j >= n) return; // 越界
- if (grid2[i][j] === 0) return; // 已经是海水了
-
- grid2[i][j] = 0; // 用海水覆盖
- // 覆盖四周
- dfs(i + 1, j);
- dfs(i - 1, j);
- dfs(i, j + 1);
- dfs(i, j - 1);
- };
-
- // 消除grid2中非子岛屿的岛屿
- for (let i = 0; i < m; i++) {
- for (let j = 0; j < n; j++) {
- // 当grid1是海水 且 grid2是岛屿
- if (grid1[i][j] === 0 && grid2[i][j] === 1) {
- dfs(i, j); // 这个岛屿肯定不是子岛屿,淹掉
- }
- }
- }
-
- let res = 0;
- for (let i = 0; i < m; i++) {
- for (let j = 0; j < n; j++) {
- if (grid2[i][j] === 1) {
- res += 1;
- dfs(i, j);
- }
- }
- }
- return res;
-};
-```
diff --git "a/example/\346\225\260\347\273\204/\345\262\233\345\261\277\351\227\256\351\242\230/200.\345\262\233\345\261\277\346\225\260\351\207\217.md" "b/example/\346\225\260\347\273\204/\345\262\233\345\261\277\351\227\256\351\242\230/200.\345\262\233\345\261\277\346\225\260\351\207\217.md"
deleted file mode 100644
index 10fe7f1..0000000
--- "a/example/\346\225\260\347\273\204/\345\262\233\345\261\277\351\227\256\351\242\230/200.\345\262\233\345\261\277\346\225\260\351\207\217.md"
+++ /dev/null
@@ -1,41 +0,0 @@
-### [200.岛屿数量](https://leetcode.cn/problems/number-of-islands/) medium
-
-- 思路
-- 如果发现岛屿
-- 把附近岛屿都用海水覆盖
-
-```js
-/**
- * @param {character[][]} grid
- * @return {number}
- */
-var numIslands = function (grid) {
- const m = grid.length,
- n = grid[0].length;
-
- // 把与(i,j)附近的陆地给淹了
- const dfs = (i, j) => {
- if (i < 0 || i >= m || j < 0 || j >= n) return; // 越界
- if (grid[i][j] === '0') return; // 已经是海水了
-
- grid[i][j] = '0'; // 用海水覆盖
- // 覆盖四周
- dfs(i + 1, j);
- dfs(i - 1, j);
- dfs(i, j + 1);
- dfs(i, j - 1);
- };
-
- let res = 0;
- for (let i = 0; i < m; i++) {
- for (let j = 0; j < n; j++) {
- // 如果发现岛屿
- if (grid[i][j] === '1') {
- res++;
- dfs(i, j);
- }
- }
- }
- return res;
-};
-```
diff --git "a/example/\346\225\260\347\273\204/\345\262\233\345\261\277\351\227\256\351\242\230/694.\344\270\215\345\220\214\345\262\233\345\261\277\347\232\204\346\225\260\351\207\217.md" "b/example/\346\225\260\347\273\204/\345\262\233\345\261\277\351\227\256\351\242\230/694.\344\270\215\345\220\214\345\262\233\345\261\277\347\232\204\346\225\260\351\207\217.md"
deleted file mode 100644
index f9592ee..0000000
--- "a/example/\346\225\260\347\273\204/\345\262\233\345\261\277\351\227\256\351\242\230/694.\344\270\215\345\220\214\345\262\233\345\261\277\347\232\204\346\225\260\351\207\217.md"
+++ /dev/null
@@ -1,63 +0,0 @@
-### [694.不同岛屿的数量](https://leetcode.cn/problems/number-of-distinct-islands/) medium
-
-题目还是输入一个二维矩阵,0 表示海水,1 表示陆地,这次让你计算 【不同的 (distinct)】 岛屿数量,函数签名如: `var numDistinctIslands = function (grid){}`
-
-
-
-
-
-其中有四个岛屿,但是左下角和右上角的岛屿形状相同,所以不同的岛屿共有三个,算法返回 3。
-
-- 很显然我们得想办法把二维矩阵中的「岛屿」进行转化,变成比如字符串这样的类型
-- 然后利用 Set 这样的数据结构去重,最终得到不同的岛屿的个数。
-- 1, 2, 3, 4 代表上下左右,用 -1, -2, -3, -4 代表上下左右的撤销
-
-```js
-var numDistinctIslands = function (grid) {
- const m = grid.length,
- n = grid[0].length;
-
- // 淹没与 (i, j) 相邻的陆地,并返回淹没的陆地面积
- const dfs = (i, j, path, direction) => {
- if (i < 0 || i >= m || j < 0 || j >= n) return 0; // 越界
- if (grid[i][j] === 0) return 0; // 已经是海水了
-
- grid[i][j] = 0; // 用海水覆盖
-
- // 前序遍历位置
- path.push(String(direction) + ',');
- // 覆盖四周
- dfs(i - 1, j, path, 1); // 上
- dfs(i + 1, j, path, 2); // 下
- dfs(i, j - 1, path, 3); // 左
- dfs(i, j + 1, path, 4); // 右
- // 后续位置
- path.push(String(-direction) + ',');
- };
-
- let set = new Set();
- for (let i = 0; i < m; i++) {
- for (let j = 0; j < n; j++) {
- // 如果发现岛屿
- if (grid[i][j] === 1) {
- let path = [];
- dfs(i, j, path, 666); // 开始位置不影响正确性
- set.add(path.join(''));
- }
- }
- }
- return set.size;
-};
-
-// 测试代码
-const grid = [
- [1, 1, 0, 1, 1],
- [1, 0, 0, 0, 0],
- [0, 0, 0, 0, 0],
- [0, 0, 0, 0, 1],
- [1, 1, 0, 1, 1],
-];
-const res = numDistinctIslands(grid);
-
-console.log(res, res === 3 ? true : false);
-```
diff --git "a/example/\346\225\260\347\273\204/\345\262\233\345\261\277\351\227\256\351\242\230/695.\345\262\233\345\261\277\347\232\204\346\234\200\345\244\247\351\235\242\347\247\257.md" "b/example/\346\225\260\347\273\204/\345\262\233\345\261\277\351\227\256\351\242\230/695.\345\262\233\345\261\277\347\232\204\346\234\200\345\244\247\351\235\242\347\247\257.md"
deleted file mode 100644
index c15b7b1..0000000
--- "a/example/\346\225\260\347\273\204/\345\262\233\345\261\277\351\227\256\351\242\230/695.\345\262\233\345\261\277\347\232\204\346\234\200\345\244\247\351\235\242\347\247\257.md"
+++ /dev/null
@@ -1,36 +0,0 @@
-### [695.岛屿的最大面积](https://leetcode.cn/problems/max-area-of-island/) medium
-
-跟【200.岛屿数量】相似,不过没求数量,求的是最大面积
-这就需要 dfs 函数淹没岛屿的同时,还应该想办法记录这个岛屿的面积
-
-```js
-/**
- * @param {number[][]} grid
- * @return {number}
- */
-var maxAreaOfIsland = function (grid) {
- const m = grid.length,
- n = grid[0].length;
-
- // 淹没与 (i, j) 相邻的陆地,并返回淹没的陆地面积
- const dfs = (i, j) => {
- if (i < 0 || i >= m || j < 0 || j >= n) return 0; // 越界
- if (grid[i][j] === 0) return 0; // 已经是海水了
-
- grid[i][j] = 0; // 用海水覆盖
- // 覆盖四周
- return dfs(i + 1, j) + dfs(i - 1, j) + dfs(i, j + 1) + dfs(i, j - 1) + 1;
- };
-
- let res = 0;
- for (let i = 0; i < m; i++) {
- for (let j = 0; j < n; j++) {
- // 如果发现岛屿
- if (grid[i][j] === 1) {
- res = Math.max(res, dfs(i, j));
- }
- }
- }
- return res;
-};
-```
diff --git "a/example/\346\225\260\347\273\204/\345\267\256\345\210\206\346\225\260\347\273\204/1094.\346\213\274\350\275\246.md" "b/example/\346\225\260\347\273\204/\345\267\256\345\210\206\346\225\260\347\273\204/1094.\346\213\274\350\275\246.md"
deleted file mode 100644
index b8fb0e7..0000000
--- "a/example/\346\225\260\347\273\204/\345\267\256\345\210\206\346\225\260\347\273\204/1094.\346\213\274\350\275\246.md"
+++ /dev/null
@@ -1,58 +0,0 @@
-### [1094.拼车](https://leetcode.cn/problems/car-pooling/) medium
-
-```js
-/**
- * @param {number[][]} trips
- * @param {number} capacity
- * @return {boolean}
- */
-var carPooling = function (trips, capacity) {
- const nums = new Array(1001).fill(0);
- const df = new Diff(nums);
- for (let item of trips) {
- const [val, i, j] = item;
- // 乘客在i上车
- // 在j已经下车,所以j要-1
- df.increment(i, j - 1, val);
- }
- df.result();
- for (let i = 0; i < nums.length; i++) {
- if (nums[i] > capacity) {
- return false;
- }
- }
- return true;
-};
-
-class Diff {
- constructor(nums) {
- this.nums = nums;
- this.len = nums.length;
- this.diff = [];
- this.init();
- }
-
- init() {
- this.diff[0] = this.nums[0];
- for (let i = 1; i < this.len; i++) {
- this.diff[i] = this.nums[i] - this.nums[i - 1];
- }
- }
-
- result() {
- this.nums[0] = this.diff[0];
- for (let i = 1; i < this.len; i++) {
- this.nums[i] = this.nums[i - 1] + this.diff[i];
- }
- return this.nums;
- }
-
- // 对nums[i,j]区间整体+val val可以是负数
- increment(i, j, val) {
- this.diff[i] += val;
- if (j + 1 < this.len) {
- this.diff[j + 1] -= val;
- }
- }
-}
-```
diff --git "a/example/\346\225\260\347\273\204/\345\267\256\345\210\206\346\225\260\347\273\204/1109.\350\210\252\347\217\255\351\242\204\350\256\242\347\273\237\350\256\241.md" "b/example/\346\225\260\347\273\204/\345\267\256\345\210\206\346\225\260\347\273\204/1109.\350\210\252\347\217\255\351\242\204\350\256\242\347\273\237\350\256\241.md"
deleted file mode 100644
index 0bbf6c8..0000000
--- "a/example/\346\225\260\347\273\204/\345\267\256\345\210\206\346\225\260\347\273\204/1109.\350\210\252\347\217\255\351\242\204\350\256\242\347\273\237\350\256\241.md"
+++ /dev/null
@@ -1,74 +0,0 @@
-### [1109.航班预订统计](https://leetcode.cn/problems/corporate-flight-bookings/) medium
-
-时间复杂度 O(2N)
-空间复杂度 O(2N)
-
-- 思路(差分数组)
-- 这个题目其实就是将一个长度为 n 的数组,全部初始化为 0
-- 然后根据区间,同时增加值
-- 就是用差分数组来解,[i,j,val] 可以在 i,j 的范围内同时增加 val
-- 难点在于正确构建差分数组
-- 1. 构建公式:diff[i] = nums[i] - nums[i-1]
-- 2. 还原公式:nums[i] = nums[i-1] + diff[i];
-- 3. increment 公式,根据还原公式来看,diff[i] += val,就可以让 nums[i,...]的值一起增加 val
-- 然后在 diff[j+1]处,将差缩小 val,就可以让 nums[i,j]的值同时增加 val,也就是 diff[j+1] -=val;
-- 要注意的是:让 j+1>= diff.length 时,也就是说对 nums[i]之后的所有元素全部增加 val,所以就不用再给 diff 数组减 val 了
-
-```js
-/**
- * @param {number[][]} bookings
- * @param {number} n
- * @return {number[]}
- */
-var corpFlightBookings = function (bookings, n) {
- let nums = new Array(n).fill(0);
- const df = new Diff(nums);
- for (let item of bookings) {
- const [i, j, val] = item;
- // 这里i,j是从1开始的
- // 转化成数组要-1
- df.increment(i - 1, j - 1, val);
- }
- return df.result();
-};
-
-class Diff {
- constructor(nums) {
- this.nums = nums;
- this.len = nums.length;
- this.diff = [];
- // nums: [ 8, 5, 3, 6, 2 ]
- // diff: [ 8,-3,-2, 3,-4 ]
- // 区间加减[i,j],例如:nums[1,3]+3,就是diff[i]+3,diff[j+1]-3,经过还原后区间就整体加3了
- // nums: [ 8, 5, 3, 6, 2 ] ==》还原后 [ 8, 8, 6, 9, 2 ]
- // diff: [ 8,-3,-2, 3,-4 ] ==》操作后 [ 8, 0,-2, 3,-7 ]
- // ⬆ ⬆
- // -3+3 -4-3
- // 0 -7
- this.init();
- }
-
- init() {
- this.diff[0] = this.nums[0];
- for (let i = 1; i < this.len; i++) {
- this.diff[i] = this.nums[i] - this.nums[i - 1];
- }
- }
-
- result() {
- this.nums[0] = this.diff[0];
- for (let i = 1; i < this.len; i++) {
- this.nums[i] = this.nums[i - 1] + this.diff[i];
- }
- return this.nums;
- }
-
- // 对nums[i,j]区间整体+val val可以是负数
- increment(i, j, val) {
- this.diff[i] += val;
- if (j + 1 < this.len) {
- this.diff[j + 1] -= val;
- }
- }
-}
-```
diff --git "a/example/\346\240\210/155.\346\234\200\345\260\217\346\240\210.js" "b/example/\346\240\210/155.\346\234\200\345\260\217\346\240\210.js"
deleted file mode 100644
index 03fa849..0000000
--- "a/example/\346\240\210/155.\346\234\200\345\260\217\346\240\210.js"
+++ /dev/null
@@ -1,53 +0,0 @@
-// 115.最小栈: https://leetcode.cn/problems/min-stack/
-// 
-
-var MinStack = function () {
- this.stack = [];
- this.minStack = []; // 保存入栈元素的对应的最小值
-};
-
-/**
-* @param {number} val
-* @return {void}
-*/
-MinStack.prototype.push = function (val) {
- this.stack.push(val);
- // 维护minStack的栈顶元素最小
- if (this.minStack.length === 0 || val <= this.minStack[this.minStack.length - 1]) {
- this.minStack.push(val);
- } else {
- const minStackPeek = this.minStack[this.minStack.length - 1];
- this.minStack.push(minStackPeek);
- }
-};
-
-/**
-* @return {void}
-*/
-MinStack.prototype.pop = function () {
- this.stack.pop();
- this.minStack.pop();
-};
-
-/**
-* @return {number}
-*/
-MinStack.prototype.top = function () {
- return this.stack[this.stack.length - 1];
-};
-
-/**
-* @return {number}
-*/
-MinStack.prototype.getMin = function () {
- return this.minStack[this.minStack.length - 1];
-};
-
-/**
-* Your MinStack object will be instantiated and called as such:
-* var obj = new MinStack()
-* obj.push(val)
-* obj.pop()
-* var param_3 = obj.top()
-* var param_4 = obj.getMin()
-*/
diff --git "a/example/\346\240\210/20.\346\234\211\346\225\210\347\232\204\346\213\254\345\217\267.js" "b/example/\346\240\210/20.\346\234\211\346\225\210\347\232\204\346\213\254\345\217\267.js"
deleted file mode 100644
index 96a364b..0000000
--- "a/example/\346\240\210/20.\346\234\211\346\225\210\347\232\204\346\213\254\345\217\267.js"
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * @lc app=leetcode.cn id=20 lang=javascript
- *
- * [20] 有效的括号
- */
-
-// @lc code=start
-/**
- * @param {string} s
- * @return {boolean}
- */
-var isValid = function (s) {
- if (s === 0) return false;
- if (s.length % 2 === 1) return false;
-
- let stack = [];
- let leftStr = "{[(";
-
- for (let i = 0; i < s.length; i++) {
- let c = s[i];
- // if (leftStr.indexOf(c) !== -1) {
- if (leftStr.includes(c)) {
- stack.push(c);
- } else {
- const top = stack[stack.length - 1];
- if (isMath(top, c)) {
- stack.pop();
- } else {
- return false;
- }
- }
- }
- return stack.length === 0;
-};
-
-const isMath = (left, right) => {
- if (left === "{" && right === "}") return true;
- if (left === "[" && right === "]") return true;
- if (left === "(" && right === ")") return true;
- return false;
-};
-// @lc code=end
diff --git "a/example/\346\240\210/232.\347\224\250\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.js" "b/example/\346\240\210/232.\347\224\250\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.js"
deleted file mode 100644
index d13b650..0000000
--- "a/example/\346\240\210/232.\347\224\250\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.js"
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * @lc app=leetcode.cn id=232 lang=javascript
- *
- * [232] 用栈实现队列
- */
-
-// @lc code=start
-
-var MyQueue = function () {
- this.stack1 = [];
- this.stack2 = [];
-};
-
-/**
- * @param {number} x
- * @return {void}
- */
-MyQueue.prototype.push = function (x) {
- this.stack1.push(x);
-};
-
-/**
- * @return {number}
- */
-MyQueue.prototype.pop = function () {
- this.peek(); // 先peek,保证stack2不为空
- return this.stack2.pop();
-};
-
-/**
- * @return {number}
- */
-MyQueue.prototype.peek = function () {
- // 当stack2为空时
- if (this.stack2.length === 0) {
- // 将stack1清空
- while (this.stack1.length) {
- const item = this.stack1.pop(); // stack1栈顶
- this.stack2.push(item); // 将stack1栈顶 入栈
- }
- }
- // 返回stack2的栈顶元素
- return this.stack2[this.stack2.length - 1];
-};
-
-/**
- * @return {boolean}
- */
-MyQueue.prototype.empty = function () {
- return this.stack1.length === 0 && this.stack2.length === 0;
-};
-
-/**
- * Your MyQueue object will be instantiated and called as such:
- * var obj = new MyQueue()
- * obj.push(x)
- * var param_2 = obj.pop()
- * var param_3 = obj.peek()
- * var param_4 = obj.empty()
- */
-// @lc code=end
diff --git "a/example/\346\240\210/678.\346\234\211\346\225\210\347\232\204\346\213\254\345\217\267\345\255\227\347\254\246\344\270\262.js" "b/example/\346\240\210/678.\346\234\211\346\225\210\347\232\204\346\213\254\345\217\267\345\255\227\347\254\246\344\270\262.js"
deleted file mode 100644
index 43c2104..0000000
--- "a/example/\346\240\210/678.\346\234\211\346\225\210\347\232\204\346\213\254\345\217\267\345\255\227\347\254\246\344\270\262.js"
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * @lc app=leetcode.cn id=678 lang=javascript
- *
- * [678] 有效的括号字符串
- */
-
-// @lc code=start
-// 思路:
-// - 使用两个栈,left存放"(" 的位置,start存放"\*"的位置
-// - 遍历字符串,遇到(、\*时,记录位置
-// - 遍历过程中遇到 )时,优先删除left中的(,当left为空时,删除start中的*,若start也为空,说明不匹配,直接返回false
-// - 当 ")" 遍历结束,会出现两种情况
-// - 1. left中的数量比start多,说明不平衡,无法正确匹配,返回false
-// - 2. left中 "(" 的位置,在start的右边,即 "\*("这种情况,也无法正确匹配,返回false
-// - 3. 判断完上面两种情况,剩下的情况也就是可以正确匹配的,即start中的数量比left多,start中的\*都在left的右边,\*就可以匹配完所有的(,也就是有效的
-
-/**
- * @param {string} s
- * @return {boolean}
- */
-var checkValidString = function (s) {
- let left = [],
- start = [];
-
- for (let i = 0; i < s.length; i++) {
- const n = s[i];
- if (n === "(") {
- left.push(i);
- } else if (n === "*") {
- start.push(i);
- } else {
- if (left.length === 0) {
- if (start.length === 0) return false;
- start.pop();
- } else {
- left.pop();
- }
- }
- }
-
- if (left.length > start.length) return false;
- while (left.length && start.length) {
- if (left.pop() > start.pop()) return false;
- }
- return true;
-};
-// @lc code=end
diff --git "a/example/\346\240\210/946.\351\252\214\350\257\201\346\240\210\345\272\217\345\210\227.md" "b/example/\346\240\210/946.\351\252\214\350\257\201\346\240\210\345\272\217\345\210\227.md"
deleted file mode 100644
index 3b7ebb5..0000000
--- "a/example/\346\240\210/946.\351\252\214\350\257\201\346\240\210\345\272\217\345\210\227.md"
+++ /dev/null
@@ -1,28 +0,0 @@
-## [946.验证栈序列](https://leetcode.cn/problems/validate-stack-sequences/) medium
-
-时间复杂度 O(N)
-空间复杂度 O(N)
-
-- 思路(模拟栈的出栈)
-- 先声明一个 stack 进行入栈,每次入栈都对栈顶元素进行判断
-- 判断栈顶和 popped 元素是否相同,若找到了就进行出栈,同时 popped 对应的指针后移,指向第二个出栈元素与栈顶是否相等,若相等继续出栈,指针也后移
-- 最后判断,stack 是否为空,若全部一一对应上,说明 popped 的出栈顺序是正确的
-
-```js
-/**
- * @param {number[]} pushed
- * @param {number[]} popped
- * @return {boolean}
- */
-var validateStackSequences = function (pushed, popped) {
- const stack = [];
- for (let i = 0, j = 0; i < pushed.length; i++) {
- stack.push(pushed[i]);
- while (stack.length && stack[stack.length - 1] === popped[j]) {
- stack.pop();
- j++;
- }
- }
- return stack.length === 0;
-};
-```
diff --git "a/example/\346\273\221\345\212\250\347\252\227\345\217\243/3.\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.js" "b/example/\346\273\221\345\212\250\347\252\227\345\217\243/3.\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.js"
deleted file mode 100644
index a6261e5..0000000
--- "a/example/\346\273\221\345\212\250\347\252\227\345\217\243/3.\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.js"
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * @lc app=leetcode.cn id=3 lang=javascript
- *
- * [3] 无重复字符的最长子串
- */
-
-// @lc code=start
-/**
- * @param {string} s
- * @return {number}
- */
-/**
- * 时间复杂度 O(N) N是s的个数
- * 空间复杂度 O(M) M是s的不同元素的个数
- * 思路:
- * 维护一个滑动窗口
- * 1.在右指针滑动的过程中记录当前元素对应的位置
- * 2.若在右指针滑动过程中发现map中已经有当前元素,并且这个位置没有在左指针之后
- * 3.将左指针定位到当前元素位置的下一位
- * 4.然后右指针每次滑动,都求左右指针的最大长度
- * 这个长度就是最长的无重复子串
- */
-var lengthOfLongestSubstring = function (s) {
- let map = new Map();
- let l = 0, // 左指针
- res = 0; // 最长的无重复子串的数量
-
- // r为右指针
- for (let r = 0; r < s.length; r++) {
- let c = s[r]; // 每个字符串
- // 2.
- if (map.has(c) && map.get(c) >= l) {
- // 3.
- l = map.get(c) + 1;
- }
- // 4.
- res = Math.max(res, r - l + 1);
-
- // 1.
- map.set(c, r); // 记录下每个字符串的位置
- }
-
- return res;
-};
-
-var lengthOfLongestSubstring1 = function (s) {
- let window = new Map();
-
- let right = 0,
- left = 0;
- let res = 0;
- while (right < s.length) {
- let c1 = s[right];
- right++;
- // 更新数据
- window.set(c1, window.has(c1) ? window.get(c1) + 1 : 1);
- // 缩小窗口的条件
- while (window.get(c1) > 1) {
- let c2 = s[left];
- left++;
- // 更新数据
- window.set(c2, window.get(c2) - 1);
- }
- res = Math.max(res, right - left);
- }
- return res;
-};
-// @lc code=end
diff --git "a/example/\346\273\221\345\212\250\347\252\227\345\217\243/438.\346\211\276\345\210\260\345\255\227\347\254\246\344\270\262\344\270\255\346\211\200\346\234\211\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.js" "b/example/\346\273\221\345\212\250\347\252\227\345\217\243/438.\346\211\276\345\210\260\345\255\227\347\254\246\344\270\262\344\270\255\346\211\200\346\234\211\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.js"
deleted file mode 100644
index fe8d4cd..0000000
--- "a/example/\346\273\221\345\212\250\347\252\227\345\217\243/438.\346\211\276\345\210\260\345\255\227\347\254\246\344\270\262\344\270\255\346\211\200\346\234\211\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.js"
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * @lc app=leetcode.cn id=438 lang=javascript
- *
- * [438] 找到字符串中所有字母异位词
- */
-
-// @lc code=start
-/**
- * @param {string} s
- * @param {string} p
- * @return {number[]}
- */
-var findAnagrams = function (s, p) {
- let need = new Map(),
- window = new Map();
- for (let i of p) {
- need.set(i, need.has(i) ? need.get(i) + 1 : 1);
- }
-
- let left = 0,
- right = 0;
- let valid = 0;
- let res = [];
- while (right < s.length) {
- let c1 = s[right]; // 将要进入window的字符
- right++; // 放大窗口
- // 更新数据
- if (need.has(c1)) {
- window.set(c1, window.has(c1) ? window.get(c1) + 1 : 1);
- if (window.get(c1) === need.get(c1)) {
- valid++;
- }
- }
-
- while (right - left >= p.length) {
- if (valid === need.size) {
- res.push(left);
- }
-
- let c2 = s[left];
- left++;
- // 更新数据
- if (need.has(c2)) {
- if (window.get(c2) === need.get(c2)) {
- valid--;
- }
- window.set(c2, window.get(c2) - 1);
- }
- }
- }
-
- return res;
-};
-// @lc code=end
diff --git "a/example/\346\273\221\345\212\250\347\252\227\345\217\243/567.\345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227.js" "b/example/\346\273\221\345\212\250\347\252\227\345\217\243/567.\345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227.js"
deleted file mode 100644
index 19c21c8..0000000
--- "a/example/\346\273\221\345\212\250\347\252\227\345\217\243/567.\345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227.js"
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * @lc app=leetcode.cn id=567 lang=javascript
- *
- * [567] 字符串的排列
- */
-
-// @lc code=start
-/**
- * @param {string} s1
- * @param {string} s2
- * @return {boolean}
- */
-var checkInclusion = function (s1, s2) {
- let need = new Map(),
- window = new Map();
- for (const i of s1) {
- need.set(i, need.has(i) ? need.get(i) + 1 : 1);
- }
-
- let left = 0,
- right = 0;
- let valid = 0;
- while (right < s2.length) {
- // 将要进入窗口的字符
- let c1 = s2[right];
- right++; // 放大窗口
- // 更新数据
- if (need.has(c1)) {
- window.set(c1, window.has(c1) ? window.get(c1) + 1 : 1);
- if (window.get(c1) === need.get(c1)) {
- valid++;
- }
- }
-
- while (right - left >= s1.length) {
- // 符合要求,更新结果
- if (valid === need.size) {
- return true;
- }
- // 将要移出窗口等字符
- let c2 = s2[left];
- left++; // 缩小窗口
- // 更新数据
- if (need.has(c2)) {
- if (window.get(c2) === need.get(c2)) {
- valid--;
- }
- window.set(c2, window.get(c2) - 1);
- }
- }
- }
-
- return false;
-};
-// @lc code=end
diff --git "a/example/\346\273\221\345\212\250\347\252\227\345\217\243/76.\346\234\200\345\260\217\350\246\206\347\233\226\345\255\220\344\270\262.js" "b/example/\346\273\221\345\212\250\347\252\227\345\217\243/76.\346\234\200\345\260\217\350\246\206\347\233\226\345\255\220\344\270\262.js"
deleted file mode 100644
index 7acc45e..0000000
--- "a/example/\346\273\221\345\212\250\347\252\227\345\217\243/76.\346\234\200\345\260\217\350\246\206\347\233\226\345\255\220\344\270\262.js"
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * @lc app=leetcode.cn id=76 lang=javascript
- *
- * [76] 最小覆盖子串
- */
-
-// @lc code=start
-/**
- * @param {string} s
- * @param {string} t
- * @return {string}
- */
-var minWindow = function (s, t) {
- // need为统计t出现的次数
- let need = new Map(),
- window = new Map();
- for (let i of t) {
- need.set(i, need.has(i) ? need.get(i) + 1 : 1);
- }
- // valid为字符串满足的数量
- let valid = 0;
- let left = 0,
- right = 0;
- let res = "";
- while (right < s.length) {
- // c是将移入窗口的数据
- let c1 = s[right];
- // 放大窗口
- right += 1;
- // 数据更新操作
- if (need.has(c1)) {
- window.set(c1, window.has(c1) ? window.get(c1) + 1 : 1);
- if (window.get(c1) === need.get(c1)) {
- // 当window中的字符,已经满足need,valid++
- valid += 1;
- }
- }
-
- // 当valid满足need的size,说明已经找到符合条件的子串了,需要缩小窗口继续找最小
- while (valid === need.size) {
- // 更新结果
- let newStr = s.substring(left, right);
- if (!res || newStr.length < res.length) res = newStr;
-
- // c2是将移除窗口的数据
- let c2 = s[left];
- // 缩小窗口
- left += 1;
- // 更新数据
- if (need.has(c2)) {
- if (window.get(c2) === need.get(c2)) {
- valid -= 1;
- }
- window.set(c2, window.get(c2) - 1);
- }
- }
- }
- return res;
-};
-// @lc code=end
diff --git "a/example/\346\273\221\345\212\250\347\252\227\345\217\243/9.\345\233\236\346\226\207\346\225\260.js" "b/example/\346\273\221\345\212\250\347\252\227\345\217\243/9.\345\233\236\346\226\207\346\225\260.js"
deleted file mode 100644
index 3b2b73e..0000000
--- "a/example/\346\273\221\345\212\250\347\252\227\345\217\243/9.\345\233\236\346\226\207\346\225\260.js"
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * @lc app=leetcode.cn id=9 lang=javascript
- *
- * [9] 回文数
- */
-
-// @lc code=start
-/**
- * @param {number} x
- * @return {boolean}
- */
-var isPalindrome = function (x) {
- const str = String(x);
- const len = str.length;
- if (len === 1) return true;
- let p1 = 0,
- p2 = len - 1;
-
- while (p1 < p2) {
- if (str[p1] !== str[p2]) return false;
- p1++;
- p2--;
- }
- return true;
-};
-// @lc code=end
diff --git "a/example/\346\273\221\345\212\250\347\252\227\345\217\243/\345\215\225\350\260\203\351\230\237\345\210\227\350\247\243\345\206\263\346\273\221\345\212\250\347\252\227\345\217\243\351\227\256\351\242\230/239.\346\273\221\345\212\250\347\252\227\345\217\243\346\234\200\345\244\247\345\200\274.md" "b/example/\346\273\221\345\212\250\347\252\227\345\217\243/\345\215\225\350\260\203\351\230\237\345\210\227\350\247\243\345\206\263\346\273\221\345\212\250\347\252\227\345\217\243\351\227\256\351\242\230/239.\346\273\221\345\212\250\347\252\227\345\217\243\346\234\200\345\244\247\345\200\274.md"
deleted file mode 100644
index 55d6fca..0000000
--- "a/example/\346\273\221\345\212\250\347\252\227\345\217\243/\345\215\225\350\260\203\351\230\237\345\210\227\350\247\243\345\206\263\346\273\221\345\212\250\347\252\227\345\217\243\351\227\256\351\242\230/239.\346\273\221\345\212\250\347\252\227\345\217\243\346\234\200\345\244\247\345\200\274.md"
+++ /dev/null
@@ -1,78 +0,0 @@
-### [239.滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) hard
-
-时间复杂度 O(N)
-空间复杂度 O(k) 滑动窗口的大小
-
-- 思路(使用单调队列维护滑动窗口)
-- 先使用滑动窗口解题
-- 维护一个 window 的长度为 k
-- 遍历数组,先把 window 的 k-1 位元素填满
-- 在下一次填入的时候,window 的长就为 k,这个时候计算出 window 内的最大值,存入 res 中
-- 然后再从 window 出队一个元素,给下一个入队的元素留出位置
-- 若使用`const windowMax = Math.max.apply(null, [...window])`计算滑动窗口内的最大值,时间复杂度为 O(N \* logN),时间复杂度高,跑不过所有 case,需要优化
-- 使用单调队列维护 window,这样,每次求 max 的时间复杂度就是 O(1),整体时间复杂度就是 O(N)
-- 单调队列:保存队列内的元素单调递减
-- 也就是说,我们需要维护一个队列,队头始终是队列内的最大元素
-- 我们可以在元素入队的时候,把前面比自己小的元素删除,这样就能保证队列内是单调递减的
-- 最大元素就是队头
-- 在删除元素的时候,要判断一下这个元素是否是队头元素,若是队头,才出队,因为有的元素在入队的时候会被删除
-
-```js
-/**
- * @param {number[]} nums
- * @param {number} k
- * @return {number[]}
- */
-var maxSlidingWindow = function (nums, k) {
- const window = new MonotonicQueue(); // 滑动窗口队列
- let res = [];
-
- for (let i = 0; i < nums.length; i++) {
- if (i < k - 1) {
- // 先填满窗口的 k-1位,若k是3,就是先把前两位填充
- window.push(nums[i]);
- } else {
- // 入队,填满k
- window.push(nums[i]);
-
- // 计算出滑动窗口内大最大值
- // 可以使用单调队列,优化时间复杂度
- // const windowMax = Math.max.apply(null, [...window]);
- // res.push(windowMax);
- res.push(window.max());
-
- // 出队
- window.shift(nums[i - k + 1]);
- }
- }
-
- return res;
-};
-
-// 单调队列
-class MonotonicQueue {
- constructor() {
- this.q = [];
- }
-
- push(num) {
- // 入队前,把队列前面小于自己的元素全部删除
- while (this.q.length !== 0 && this.q[this.q.length - 1] < num) {
- this.q.pop();
- }
- this.q.push(num);
- }
-
- max() {
- return this.q[0];
- }
-
- shift(num) {
- // 要删除的num可能已经在push的时候被删除了,所以可以不用处理
- // 只要当num是队头的时候删除
- if (num === this.max()) {
- this.q.shift();
- }
- }
-}
-```
diff --git "a/example/\346\273\221\345\212\250\347\252\227\345\217\243/\345\215\225\350\260\203\351\230\237\345\210\227\350\247\243\345\206\263\346\273\221\345\212\250\347\252\227\345\217\243\351\227\256\351\242\230/\345\211\221\346\214\207Offer59-I.\346\273\221\345\212\250\347\252\227\345\217\243\347\232\204\346\234\200\345\244\247\345\200\274.md" "b/example/\346\273\221\345\212\250\347\252\227\345\217\243/\345\215\225\350\260\203\351\230\237\345\210\227\350\247\243\345\206\263\346\273\221\345\212\250\347\252\227\345\217\243\351\227\256\351\242\230/\345\211\221\346\214\207Offer59-I.\346\273\221\345\212\250\347\252\227\345\217\243\347\232\204\346\234\200\345\244\247\345\200\274.md"
deleted file mode 100644
index 0190815..0000000
--- "a/example/\346\273\221\345\212\250\347\252\227\345\217\243/\345\215\225\350\260\203\351\230\237\345\210\227\350\247\243\345\206\263\346\273\221\345\212\250\347\252\227\345\217\243\351\227\256\351\242\230/\345\211\221\346\214\207Offer59-I.\346\273\221\345\212\250\347\252\227\345\217\243\347\232\204\346\234\200\345\244\247\345\200\274.md"
+++ /dev/null
@@ -1,66 +0,0 @@
-### [剑指 Offer59-I.滑动窗口的最大值](https://leetcode.cn/problems/hua-dong-chuang-kou-de-zui-da-zhi-lcof/) hard
-
-时间复杂度 O(N)
-空间复杂度 O(k) 滑动窗口的大小
-
-跟[239.滑动窗口最大值](/js-logs/sliding-window#239滑动窗口最大值)相同
-
-```js
-/**
- * @param {number[]} nums
- * @param {number} k
- * @return {number[]}
- */
-var maxSlidingWindow = function (nums, k) {
- const window = new MonotonicQueue(); // 滑动窗口队列
- let res = [];
-
- for (let i = 0; i < nums.length; i++) {
- if (i < k - 1) {
- // 先填满窗口的 k-1位,若k是3,就是先把前两位填充
- window.push(nums[i]);
- } else {
- // 入队,填满k
- window.push(nums[i]);
-
- // 计算出滑动窗口内大最大值
- // 可以使用单调队列,优化时间复杂度
- // const windowMax = Math.max.apply(null, [...window]);
- // res.push(windowMax);
- res.push(window.max());
-
- // 出队
- window.shift(nums[i - k + 1]);
- }
- }
-
- return res;
-};
-
-// 单调队列
-class MonotonicQueue {
- constructor() {
- this.q = [];
- }
-
- push(num) {
- // 入队前,把队列前面小于自己的元素全部删除
- while (this.q.length !== 0 && this.q[this.q.length - 1] < num) {
- this.q.pop();
- }
- this.q.push(num);
- }
-
- max() {
- return this.q[0];
- }
-
- shift(num) {
- // 要删除的num可能已经在push的时候被删除了,所以可以不用处理
- // 只要当num是队头的时候删除
- if (num === this.max()) {
- this.q.shift();
- }
- }
-}
-```
diff --git "a/example/\346\273\221\345\212\250\347\252\227\345\217\243/\345\215\225\350\260\203\351\230\237\345\210\227\350\247\243\345\206\263\346\273\221\345\212\250\347\252\227\345\217\243\351\227\256\351\242\230/\351\235\242\350\257\225\351\242\23059-II.\351\230\237\345\210\227\347\232\204\346\234\200\345\244\247\345\200\274.md" "b/example/\346\273\221\345\212\250\347\252\227\345\217\243/\345\215\225\350\260\203\351\230\237\345\210\227\350\247\243\345\206\263\346\273\221\345\212\250\347\252\227\345\217\243\351\227\256\351\242\230/\351\235\242\350\257\225\351\242\23059-II.\351\230\237\345\210\227\347\232\204\346\234\200\345\244\247\345\200\274.md"
deleted file mode 100644
index 8df15bb..0000000
--- "a/example/\346\273\221\345\212\250\347\252\227\345\217\243/\345\215\225\350\260\203\351\230\237\345\210\227\350\247\243\345\206\263\346\273\221\345\212\250\347\252\227\345\217\243\351\227\256\351\242\230/\351\235\242\350\257\225\351\242\23059-II.\351\230\237\345\210\227\347\232\204\346\234\200\345\244\247\345\200\274.md"
+++ /dev/null
@@ -1,56 +0,0 @@
-### [面试题 59-II.队列的最大值](https://leetcode.cn/problems/dui-lie-de-zui-da-zhi-lcof/) medium
-
-时间复杂度 O(1)
-空间复杂度 O(N)
-
-- 思路
-- 跟[239.滑动窗口最大值](/js-logs/sliding-window#239滑动窗口最大值)的单调队列相似
-- 不过这里要保证`pop_front`的顺序返回,所以要使用两个队列去存放
-- 一个是单调队列:保证队头元素最大
-- 一个是入队的顺序,为了正确顺序出队
-
-```js
-var MaxQueue = function () {
- this.arr = [];
- this.queue = [];
-};
-
-/**
- * @return {number}
- */
-MaxQueue.prototype.max_value = function () {
- return this.queue.length === 0 ? -1 : this.queue[0];
-};
-
-/**
- * @param {number} value
- * @return {void}
- */
-MaxQueue.prototype.push_back = function (value) {
- while (this.queue.length !== 0 && this.queue[this.queue.length - 1] < value) {
- this.queue.pop();
- }
- this.queue.push(value);
- this.arr.push(value);
-};
-
-/**
- * @return {number}
- */
-MaxQueue.prototype.pop_front = function () {
- if (this.arr.length === 0) return -1;
- const val = this.arr.shift();
- if (val === this.queue[0]) {
- this.queue.shift();
- }
- return val;
-};
-
-/**
- * Your MaxQueue object will be instantiated and called as such:
- * var obj = new MaxQueue()
- * var param_1 = obj.max_value()
- * obj.push_back(value)
- * var param_3 = obj.pop_front()
- */
-```
diff --git "a/example/\350\264\252\345\277\203\347\256\227\346\263\225/1024.\350\247\206\351\242\221\346\213\274\346\216\245.js" "b/example/\350\264\252\345\277\203\347\256\227\346\263\225/1024.\350\247\206\351\242\221\346\213\274\346\216\245.js"
deleted file mode 100644
index 020a8c5..0000000
--- "a/example/\350\264\252\345\277\203\347\256\227\346\263\225/1024.\350\247\206\351\242\221\346\213\274\346\216\245.js"
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * @lc app=leetcode.cn id=1024 lang=javascript
- *
- * [1024] 视频拼接
- */
-
-// @lc code=start
-/**
- * @param {number[][]} clips
- * @param {number} time
- * @return {number}
- */
-var videoStitching = function (clips, time) {
- if (time === 0) return 0;
- let clipsArr = clips.sort((a, b) => {
- if (a[0] === b[0]) {
- // 如果开头相同,将最长的片段放到最前面
- return b[1] - a[1];
- }
- return a[0] - b[0];
- });
-
- let res = 0;
- let curEnd = 0,
- nextEnd = 0;
- let i = 0,
- len = clipsArr.length;
-
- while (i < len && clipsArr[i][0] <= curEnd) {
- while (i < len && clipsArr[i][0] <= curEnd) {
- nextEnd = Math.max(nextEnd, clipsArr[i][1]);
- i++;
- }
-
- res++;
- curEnd = nextEnd;
- if (curEnd >= time) {
- return res;
- }
- }
-
- // 没找到,返回-1
- return -1;
-};
-// @lc code=end
-
-// @after-stub-for-debug-begin
-module.exports = videoStitching;
-// @after-stub-for-debug-end
diff --git "a/example/\350\264\252\345\277\203\347\256\227\346\263\225/376.\346\221\206\345\212\250\345\272\217\345\210\227.js" "b/example/\350\264\252\345\277\203\347\256\227\346\263\225/376.\346\221\206\345\212\250\345\272\217\345\210\227.js"
deleted file mode 100644
index 1c31bdc..0000000
--- "a/example/\350\264\252\345\277\203\347\256\227\346\263\225/376.\346\221\206\345\212\250\345\272\217\345\210\227.js"
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * @lc app=leetcode.cn id=376 lang=javascript
- *
- * [376] 摆动序列
- */
-
-// @lc code=start
-/**
- * @param {number[]} nums
- * @return {number}
- */
-// 贪心
-var wiggleMaxLength = function (nums) {
- const n = nums.length;
- if (n < 2) return n;
-
- let preDiff = nums[1] - nums[0];
- // base case
- // 若前两位数差为0,那么最长的摆动子序列就是1,否则就是前两位数字
- let res = preDiff !== 0 ? 2 : 1;
-
- for (let i = 2; i < n; i++) {
- const diff = nums[i] - nums[i - 1]; // 当前i与i-1的差
- //若diff与preDiff是【峰】【谷】的或是【谷】【峰】的,res+1
- if ((diff > 0 && preDiff <= 0) || (diff < 0 && preDiff >= 0)) {
- res++;
- preDiff = diff;
- }
- }
-
- return res;
-};
-// @lc code=end
-
diff --git "a/example/\350\264\252\345\277\203\347\256\227\346\263\225/435.\346\227\240\351\207\215\345\217\240\345\214\272\351\227\264.js" "b/example/\350\264\252\345\277\203\347\256\227\346\263\225/435.\346\227\240\351\207\215\345\217\240\345\214\272\351\227\264.js"
deleted file mode 100644
index ebb0e04..0000000
--- "a/example/\350\264\252\345\277\203\347\256\227\346\263\225/435.\346\227\240\351\207\215\345\217\240\345\214\272\351\227\264.js"
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * @lc app=leetcode.cn id=435 lang=javascript
- *
- * [435] 无重叠区间
- */
-
-// @lc code=start
-
-// 时间复杂度 O(N)
-// 空间复杂度 O(1)
-// 思路笔记:-->利用贪心算法
-// - 核心思路
-// - 求出有多少不重复的区间,再用总数 - 不重复的区间数
-// - 如何求出不重复区间数?
-// - 跟据end进行升序排列
-// - 找出跟end不重叠的区间,计数器++,改变end的值,继续遍历
-/**
- * @param {number[][]} intervals
- * @return {number}
- */
-var eraseOverlapIntervals = function (intervals) {
- // 如果为空,不需要改变
- if (!intervals.length) return 0;
- let endSortArr = intervals.sort((a, b) => a[1] - b[1]);
-
- // 计算有多少不重复的区间,至少为 开头的数量1
- let count = 1;
- let end_start = endSortArr[0][1];
-
- for (let item of endSortArr) {
- if (item[0] >= end_start) {
- count++;
- end_start = item[1];
- }
- }
-
- return endSortArr.length - count;
-};
-// @lc code=end
diff --git "a/example/\350\264\252\345\277\203\347\256\227\346\263\225/45.\350\267\263\350\267\203\346\270\270\346\210\217-ii.js" "b/example/\350\264\252\345\277\203\347\256\227\346\263\225/45.\350\267\263\350\267\203\346\270\270\346\210\217-ii.js"
deleted file mode 100644
index 0f3dd1d..0000000
--- "a/example/\350\264\252\345\277\203\347\256\227\346\263\225/45.\350\267\263\350\267\203\346\270\270\346\210\217-ii.js"
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * @lc app=leetcode.cn id=45 lang=javascript
- *
- * [45] 跳跃游戏 II
- */
-
-// @lc code=start
-// 贪心算法
-// 时间复杂度 O(N)
-// 空间复杂度 O(1)
-/**
- * @param {number[]} nums
- * @return {number}
- */
-var jump = function (nums) {
- let len = nums.length;
- let farthest = 0;
- let end = 0;
- let jump = 0;
- for (let i = 0; i < len - 1; i++) {
- farthest = Math.max(i + nums[i], farthest);
- if (end === i) {
- jump++;
- end = farthest;
- }
- }
- return jump;
-};
-
-// // 动态规划
-// // 时间复杂度 O(N^2)
-// // 空间复杂度 O(1)
-// /**
-// * @param {number[]} nums
-// * @return {number}
-// */
-// var jump = function (nums) {
-// let len = nums.length;
-// let memo = Array.from({ length: len }).fill(len);
-// //表示从p处跳到最后位置的最少步数
-// const dp = (nums, p) => {
-// // base case
-// // 当 p 到达最后的位置,不用跳,返回0
-// if (p >= len - 1) return 0;
-// if (memo[p] !== len) return memo[p];
-// let step = nums[p];
-// for (let i = 1; i <= step; i++) {
-// let subProblum = dp(nums, nums[i] + i);
-// memo[p] = Math.min(memo[p], subProblum + 1);
-// }
-// return memo[p];
-// };
-
-// return dp(nums, 0);
-// };
-// @lc code=end
diff --git "a/example/\350\264\252\345\277\203\347\256\227\346\263\225/452.\347\224\250\346\234\200\345\260\221\346\225\260\351\207\217\347\232\204\347\256\255\345\274\225\347\210\206\346\260\224\347\220\203.js" "b/example/\350\264\252\345\277\203\347\256\227\346\263\225/452.\347\224\250\346\234\200\345\260\221\346\225\260\351\207\217\347\232\204\347\256\255\345\274\225\347\210\206\346\260\224\347\220\203.js"
deleted file mode 100644
index efb4e3a..0000000
--- "a/example/\350\264\252\345\277\203\347\256\227\346\263\225/452.\347\224\250\346\234\200\345\260\221\346\225\260\351\207\217\347\232\204\347\256\255\345\274\225\347\210\206\346\260\224\347\220\203.js"
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * @lc app=leetcode.cn id=452 lang=javascript
- *
- * [452] 用最少数量的箭引爆气球
- */
-
-// @lc code=start
-// 时间复杂度 O(N)
-// 空间复杂度 O(1)
-
-// 思路
-// - 其实题目最后要找的还是不重叠的区间数
-// - 这里要注意的是, xstart ≤ x ≤ xend就会射爆气球
-/**
- * @param {number[][]} points
- * @return {number}
- */
-var findMinArrowShots = function (points) {
- let endSortArr = points.sort((a, b) => a[1] - b[1]);
-
- let count = 1;
- let end_start = endSortArr[0][1];
- for (let item of endSortArr) {
- if (item[0] > end_start) {
- count++;
- end_start = item[1];
- }
- }
-
- return count;
-};
-// @lc code=end
diff --git "a/example/\350\264\252\345\277\203\347\256\227\346\263\225/55.\350\267\263\350\267\203\346\270\270\346\210\217.js" "b/example/\350\264\252\345\277\203\347\256\227\346\263\225/55.\350\267\263\350\267\203\346\270\270\346\210\217.js"
deleted file mode 100644
index 3f8f157..0000000
--- "a/example/\350\264\252\345\277\203\347\256\227\346\263\225/55.\350\267\263\350\267\203\346\270\270\346\210\217.js"
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * @lc app=leetcode.cn id=55 lang=javascript
- *
- * [55] 跳跃游戏
- */
-
-// @lc code=start
-// 题目理解:
-// 求最远能跳多远的距离?若最远距离超出数组长度,表示可以到达最后一个下标
-// 反子不能到达
-/**
- * @param {number[]} nums
- * @return {boolean}
- */
-var canJump = function (nums) {
- let len = nums.length;
- let farthest = 0; // 最远距离
- for (let i = 0; i < len - 1; i++) {
- farthest = Math.max(farthest, i + nums[i]);
- if (farthest - i <= 0) {
- return false;
- }
- }
- return farthest >= len - 1;
-};
-// @lc code=end
diff --git "a/example/\351\223\276\350\241\250/86.\345\210\206\351\232\224\351\223\276\350\241\250.js" "b/example/\351\223\276\350\241\250/86.\345\210\206\351\232\224\351\223\276\350\241\250.js"
deleted file mode 100644
index 9eb9165..0000000
--- "a/example/\351\223\276\350\241\250/86.\345\210\206\351\232\224\351\223\276\350\241\250.js"
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * @lc app=leetcode.cn id=86 lang=javascript
- *
- * [86] 分隔链表
- */
-
-// @lc code=start
-// 时间复杂度O(1)
-// 空间复杂度O(N)
-// 思路
-// - 使用指针p遍历链表
-// - 使用两个新链表分别保存小于x的节点,和大于x的节点
-// - 最后将两个链表合并返回即可
-// - 注意:虚拟头节点的链接使用
-/**
- * Definition for singly-linked list.
- * function ListNode(val, next) {
- * this.val = (val===undefined ? 0 : val)
- * this.next = (next===undefined ? null : next)
- * }
- */
-/**
- * @param {ListNode} head
- * @param {number} x
- * @return {ListNode}
- */
-var partition = function (head, x) {
- let newList1 = new ListNode(-1),
- newList2 = new ListNode(-1);
- let p1 = newList1,
- p2 = newList2;
- let p = head;
- while (p) {
- if (p.val >= x) {
- p2.next = new ListNode(p.val);
- p2 = p2.next;
- } else {
- p1.next = new ListNode(p.val);
- p1 = p1.next;
- }
- p = p.next;
- }
-
- // 将两个分好类的节点相连
- p1.next = newList2.next;
- return newList1.next;
-};
-// @lc code=end
diff --git "a/example/\351\223\276\350\241\250/\345\217\214\346\214\207\351\222\210/141.\347\216\257\345\275\242\351\223\276\350\241\250.js" "b/example/\351\223\276\350\241\250/\345\217\214\346\214\207\351\222\210/141.\347\216\257\345\275\242\351\223\276\350\241\250.js"
deleted file mode 100644
index 8063f66..0000000
--- "a/example/\351\223\276\350\241\250/\345\217\214\346\214\207\351\222\210/141.\347\216\257\345\275\242\351\223\276\350\241\250.js"
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * @lc app=leetcode.cn id=141 lang=javascript
- *
- * [141] 环形链表
- */
-
-// @lc code=start
-/**
- * Definition for singly-linked list.
- * function ListNode(val) {
- * this.val = val;
- * this.next = null;
- * }
- */
-
-/**
- * @param {ListNode} head
- * @return {boolean}
- */
-/**
- * 时间复杂度 O(N)
- * 空间复杂度 O(1)
- * 思路
- * - 声明快慢两个指针进行赛跑
- * - 如果有环,快慢指针肯定会重逢
- * - 如果没有环,则不会重逢
- */
-var hasCycle = function (head) {
- let p1 = head,
- p2 = head;
- while (p1 && p2 && p2.next) {
- p1 = p1.next;
- p2 = p2.next.next;
- if (p1 === p2) return true;
- }
- return false;
-};
-// @lc code=end
diff --git "a/example/\351\223\276\350\241\250/\345\217\214\346\214\207\351\222\210/142.\347\216\257\345\275\242\351\223\276\350\241\250-ii.js" "b/example/\351\223\276\350\241\250/\345\217\214\346\214\207\351\222\210/142.\347\216\257\345\275\242\351\223\276\350\241\250-ii.js"
deleted file mode 100644
index bc6aeda..0000000
--- "a/example/\351\223\276\350\241\250/\345\217\214\346\214\207\351\222\210/142.\347\216\257\345\275\242\351\223\276\350\241\250-ii.js"
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * @lc app=leetcode.cn id=142 lang=javascript
- *
- * [142] 环形链表 II
- */
-
-// @lc code=start
-/**
- * Definition for singly-linked list.
- * function ListNode(val) {
- * this.val = val;
- * this.next = null;
- * }
- */
-
-/**
- * @param {ListNode} head
- * @return {ListNode}
- */
-/**
- * 时间复杂度 O(N)
- * 空间复杂度 O(1)
- * 思路
- * - 使用快慢指针找到相遇点
- * - 然后将其中一个指针重置
- * - 再将两个指针共同向前走,再次相遇的地方就是这个环的头
- */
-var detectCycle = function (head) {
- let p1 = head,
- p2 = head;
- while (p2 && p2.next) {
- p1 = p1.next;
- p2 = p2.next.next;
- // 若p1===p2结束循环
- // 此时有两种情况
- // 1.p1,p2是相同节点,说明有环
- // 2.p1,p2都是null,说明没环
- if (p1 === p2) break;
- }
- if (p2 === null || p2.next === null) return null;
- p1 = head;
- while (p1 !== p2) {
- p1 = p1.next;
- p2 = p2.next;
- }
- return p1;
-};
-// @lc code=end
diff --git "a/example/\351\223\276\350\241\250/\345\217\214\346\214\207\351\222\210/160.\347\233\270\344\272\244\351\223\276\350\241\250.js" "b/example/\351\223\276\350\241\250/\345\217\214\346\214\207\351\222\210/160.\347\233\270\344\272\244\351\223\276\350\241\250.js"
deleted file mode 100644
index 371e9dd..0000000
--- "a/example/\351\223\276\350\241\250/\345\217\214\346\214\207\351\222\210/160.\347\233\270\344\272\244\351\223\276\350\241\250.js"
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * @lc app=leetcode.cn id=160 lang=javascript
- *
- * [160] 相交链表
- */
-
-// @lc code=start
-/**
- * Definition for singly-linked list.
- * function ListNode(val) {
- * this.val = val;
- * this.next = null;
- * }
- */
-
-/**
- * @param {ListNode} headA
- * @param {ListNode} headB
- * @return {ListNode}
- */
-/**
- * 时间复杂度 O(N)
- * 空间复杂度 O(1)
- * 思路
- * - 难点在于,如何让指针【同时】指向相交的点
- * - 指针p1指向headA,p2指向headB,
- * - 当p1遍历结束,让p1去遍历headB,p2也如此
- * - 这样相当于把headA和headB拼接起来,当两个指针的值相等,说明找到了相同的起点
- */
-var getIntersectionNode = function (headA, headB) {
- let p1 = headA,
- p2 = headB;
- while (p1 !== p2) {
- if (p1 === null) p1 = headB;
- else p1 = p1.next;
- if (p2 === null) p2 = headA;
- else p2 = p2.next;
- }
- return p1;
-};
-// @lc code=end
diff --git "a/example/\351\223\276\350\241\250/\345\217\214\346\214\207\351\222\210/19.\345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254-n-\344\270\252\347\273\223\347\202\271.md" "b/example/\351\223\276\350\241\250/\345\217\214\346\214\207\351\222\210/19.\345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254-n-\344\270\252\347\273\223\347\202\271.md"
deleted file mode 100644
index a87cb34..0000000
--- "a/example/\351\223\276\350\241\250/\345\217\214\346\214\207\351\222\210/19.\345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254-n-\344\270\252\347\273\223\347\202\271.md"
+++ /dev/null
@@ -1,77 +0,0 @@
-### [19.删除链表的倒数第 N 个结点](https://leetcode.cn/problems/remove-nth-node-from-end-of-list/) medium
-
-时间复杂度 O(N)
-空间复杂度 O(1)
-
-- 思路
-- 复用上一题[剑指 Offer 22. 链表中倒数第 k 个节点](/js-logs/linked-list#剑指-offer-22-链表中倒数第-k-个节点) 先找到倒数第 n 节点的前一个节点(n+1)
-- 然后将第个 n 节点删除即可
-
-```js
-/**
- * @param {ListNode} head
- * @param {number} n
- * @return {ListNode}
- */
-var removeNthFromEnd = function (head, n) {
- let dummy = new ListNode();
- dummy.next = head;
- // 要删除倒数n个节点,要先获取前一个节点,也就是(n+1)
- let x = getKthFromEnd(dummy, n + 1);
- x.next = x.next.next;
- return dummy.next;
-};
-
-// 剑指 Offer 22. 链表中倒数第k个节点
-// https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/
-// 获取链表的倒数第k个节点
-var getKthFromEnd = (head, k) => {
- let p1 = head;
- for (let i = 0; i < k; i++) {
- p1 = p1.next;
- }
- let p2 = head;
- while (p1 !== null) {
- p1 = p1.next;
- p2 = p2.next;
- }
- return p2;
-};
-```
-
-时间复杂度 O(N)
-空间复杂度 O(N)
-
-- 思路
-- 利用栈`先进后出`的特性找出倒数第 n 节点
-- 然后使用上一个节点,删除倒数第 n 个节点
-
-```js
-/**
- * @param {ListNode} head
- * @param {number} n
- * @return {ListNode}
- */
-var removeNthFromEnd = function (head, n) {
- let dump = new ListNode();
- dump.next = head;
-
- const stack = [];
- let cur = dump;
- // 将链表入栈
- while (cur !== null) {
- stack.push(cur);
- cur = cur.next;
- }
-
- // 将倒数第前n个出栈,最好一个出栈的就是倒数第n个节点
- for (let i = 0; i < n; i++) {
- stack.pop();
- }
- // 获取倒数第n节点的 前一个节点
- const prev = stack[stack.length - 1];
- prev.next = prev.next.next;
-
- return dump.next;
-};
-```
diff --git "a/example/\351\223\276\350\241\250/\345\217\214\346\214\207\351\222\210/21.\345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\351\223\276\350\241\250.js" "b/example/\351\223\276\350\241\250/\345\217\214\346\214\207\351\222\210/21.\345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\351\223\276\350\241\250.js"
deleted file mode 100644
index d176428..0000000
--- "a/example/\351\223\276\350\241\250/\345\217\214\346\214\207\351\222\210/21.\345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\351\223\276\350\241\250.js"
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * @lc app=leetcode.cn id=21 lang=javascript
- *
- * [21] 合并两个有序链表
- */
-
-// @lc code=start
-/**
- * Definition for singly-linked list.
- * function ListNode(val, next) {
- * this.val = (val===undefined ? 0 : val)
- * this.next = (next===undefined ? null : next)
- * }
- */
-/**
- * @param {ListNode} list1
- * @param {ListNode} list2
- * @return {ListNode}
- */
-/**
- * 时间复杂度 O(M+N)
- * 空间复杂度 O(1)
- * 思路(双指针)
- * - 两个链表值比较,取较小的值加入链表
- * - 重复第一步,然后将另一个剩下的链表直接指向要返回的链表即可
- */
-var mergeTwoLists = function (list1, list2) {
- // 虚拟头节点
- let dummy = new ListNode(),
- p = dummy;
- let p1 = list1,
- p2 = list2;
- while (p1 && p2) {
- if (p1.val > p2.val) {
- // 将较小的p2节点,放入dummy中
- p.next = p2;
- p2 = p2.next;
- } else {
- p.next = p1;
- p1 = p1.next;
- }
- // 指针p偏移
- p = p.next;
- }
- // 将剩下的节点,直接接到新链表到后面
- if (p1 !== null) {
- p.next = p1;
- }
- if (p2 !== null) {
- p.next = p2;
- }
- // 返回真实的节点
- return dummy.next;
-};
-// @lc code=end
diff --git "a/example/\351\223\276\350\241\250/\345\217\214\346\214\207\351\222\210/23.\345\220\210\345\271\266k\344\270\252\345\215\207\345\272\217\351\223\276\350\241\250.js" "b/example/\351\223\276\350\241\250/\345\217\214\346\214\207\351\222\210/23.\345\220\210\345\271\266k\344\270\252\345\215\207\345\272\217\351\223\276\350\241\250.js"
deleted file mode 100644
index 93554ab..0000000
--- "a/example/\351\223\276\350\241\250/\345\217\214\346\214\207\351\222\210/23.\345\220\210\345\271\266k\344\270\252\345\215\207\345\272\217\351\223\276\350\241\250.js"
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * @lc app=leetcode.cn id=23 lang=javascript
- *
- * [23] 合并K个升序链表
- */
-
-// @lc code=start
-/**
- * Definition for singly-linked list.
- * function ListNode(val, next) {
- * this.val = (val===undefined ? 0 : val)
- * this.next = (next===undefined ? null : next)
- * }
- */
-/**
- * @param {ListNode[]} lists
- * @return {ListNode}
- */
-var mergeKLists = function(lists) {
-
-};
-// @lc code=end
-
diff --git "a/example/\351\223\276\350\241\250/\345\217\214\346\214\207\351\222\210/86.\345\210\206\351\232\224\351\223\276\350\241\250.js" "b/example/\351\223\276\350\241\250/\345\217\214\346\214\207\351\222\210/86.\345\210\206\351\232\224\351\223\276\350\241\250.js"
deleted file mode 100644
index 819650d..0000000
--- "a/example/\351\223\276\350\241\250/\345\217\214\346\214\207\351\222\210/86.\345\210\206\351\232\224\351\223\276\350\241\250.js"
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * @lc app=leetcode.cn id=86 lang=javascript
- *
- * [86] 分隔链表
- */
-
-// @lc code=start
-/**
- * Definition for singly-linked list.
- * function ListNode(val, next) {
- * this.val = (val===undefined ? 0 : val)
- * this.next = (next===undefined ? null : next)
- * }
- */
-/**
- * @param {ListNode} head
- * @param {number} x
- * @return {ListNode}
- */
-/**
- * 时间复杂度O(1)
- * 空间复杂度O(N)
- * 思路
- * - 使用指针p遍历链表
- * - 使用两个新链表分别保存小于x的节点,和大于x的节点
- * - 最后将两个链表合并返回即可
- * - 注意:虚拟头节点的链接使用
- */
-var partition = function (head, x) {
- let dummy1 = new ListNode(),
- dummy2 = new ListNode();
- let p1 = dummy1,
- p2 = dummy2;
- let p = head;
- while (p !== null) {
- if (p.val >= x) {
- p2.next = new ListNode(p.val);
- p2 = p2.next;
- } else {
- p1.next = new ListNode(p.val);
- p1 = p1.next;
- }
- p = p.next;
- }
- p1.next = dummy2.next;
- return dummy1.next;
-};
-// @lc code=end
diff --git "a/example/\351\223\276\350\241\250/\345\217\214\346\214\207\351\222\210/876.\351\223\276\350\241\250\347\232\204\344\270\255\351\227\264\347\273\223\347\202\271.js" "b/example/\351\223\276\350\241\250/\345\217\214\346\214\207\351\222\210/876.\351\223\276\350\241\250\347\232\204\344\270\255\351\227\264\347\273\223\347\202\271.js"
deleted file mode 100644
index cbdf243..0000000
--- "a/example/\351\223\276\350\241\250/\345\217\214\346\214\207\351\222\210/876.\351\223\276\350\241\250\347\232\204\344\270\255\351\227\264\347\273\223\347\202\271.js"
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * @lc app=leetcode.cn id=876 lang=javascript
- *
- * [876] 链表的中间结点
- */
-
-// @lc code=start
-/**
- * Definition for singly-linked list.
- * function ListNode(val, next) {
- * this.val = (val===undefined ? 0 : val)
- * this.next = (next===undefined ? null : next)
- * }
- */
-/**
- * @param {ListNode} head
- * @return {ListNode}
- */
-/**
- * 时间复杂度 O(N/2)
- * 空间复杂度 O(1)
- * 思路(快慢指针)
- * - 使用快慢指针
- * - 慢指针走一步,快指针走两步
- * - 这样当快指针走到头,慢指针刚好走一半
- * - 这里让慢指针先走,如果链表长度是偶数,慢指针刚好指向第二个数
- */
-var middleNode = function (head) {
- let fast = head,
- slow = head;
- while (fast !== null && fast.next !== null) {
- slow = slow.next;
- fast = fast.next.next;
- }
- return slow;
-};
-// @lc code=end
diff --git "a/example/\351\223\276\350\241\250/\345\217\214\346\214\207\351\222\210/977.\346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\345\271\263\346\226\271.js" "b/example/\351\223\276\350\241\250/\345\217\214\346\214\207\351\222\210/977.\346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\345\271\263\346\226\271.js"
deleted file mode 100644
index 43e4c30..0000000
--- "a/example/\351\223\276\350\241\250/\345\217\214\346\214\207\351\222\210/977.\346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\345\271\263\346\226\271.js"
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * @lc app=leetcode.cn id=977 lang=javascript
- *
- * [977] 有序数组的平方
- */
-
-// @lc code=start
-/**
- * @param {number[]} nums
- * @return {number[]}
- */
-var sortedSquares = function (nums) {
- const n = nums.length;
- let l = 0, r = n - 1;
-
- const res = new Array(n);
- let p = n - 1;
- while (l <= r) {
- if (Math.abs(nums[l]) > Math.abs(nums[r])) {
- res[p] = nums[l] * nums[l];
- l++;
- } else {
- res[p] = nums[r] * nums[r];
- r--;
- }
- p--;
- }
-
- return res;
-};
-// @lc code=end
-
diff --git "a/example/\351\223\276\350\241\250/\345\217\214\346\214\207\351\222\210/\345\211\221\346\214\207Offer22.\351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254k\344\270\252\350\212\202\347\202\271.md" "b/example/\351\223\276\350\241\250/\345\217\214\346\214\207\351\222\210/\345\211\221\346\214\207Offer22.\351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254k\344\270\252\350\212\202\347\202\271.md"
deleted file mode 100644
index 8d891d1..0000000
--- "a/example/\351\223\276\350\241\250/\345\217\214\346\214\207\351\222\210/\345\211\221\346\214\207Offer22.\351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254k\344\270\252\350\212\202\347\202\271.md"
+++ /dev/null
@@ -1,35 +0,0 @@
-### [剑指 Offer 22. 链表中倒数第 k 个节点](https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) easy
-
-时间复杂度 O(N)
-空间复杂度 O(1)
-
-- 思路
-- 最初想到的是先遍历整个链表,得出链表长度 n
-- 然后从头开始再遍历一次,第 n-k 的位置就是倒数 k 的节点
-- 但是这样需要遍历两次链表
-- 其实遍历一次也可以找出来
-- 先声明一个指针 p1,先让 p1 向前走 k 步
-- 然后再声明一个 p2,指向 head,再让两个指针同时向前走,当 p1 走到尽头,p2 指的那个就是倒数第 k 个节点
-
-```js
-/**
- * @param {ListNode} head
- * @param {number} k
- * @return {ListNode}
- */
-var getKthFromEnd = function (head, k) {
- let p1 = head;
- for (let i = 0; i < k; i++) {
- // 先让p1走k步
- p1 = p1.next;
- }
- // 此时声明p2指向头节点,p1,p2之间相差k距离
- let p2 = head;
- // p1,p2共同前进,当p1走到尾节点时,p2正好指向倒数第k个节点
- while (p1 !== null) {
- p1 = p1.next;
- p2 = p2.next;
- }
- return p2;
-};
-```
diff --git "a/example/\351\223\276\350\241\250/\345\217\215\350\275\254\351\223\276\350\241\250/206.\345\217\215\350\275\254\351\223\276\350\241\250.js" "b/example/\351\223\276\350\241\250/\345\217\215\350\275\254\351\223\276\350\241\250/206.\345\217\215\350\275\254\351\223\276\350\241\250.js"
deleted file mode 100644
index 1f6b36f..0000000
--- "a/example/\351\223\276\350\241\250/\345\217\215\350\275\254\351\223\276\350\241\250/206.\345\217\215\350\275\254\351\223\276\350\241\250.js"
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * @lc app=leetcode.cn id=206 lang=javascript
- *
- * [206] 反转链表
- */
-
-// @lc code=start
-/**
- * Definition for singly-linked list.
- * function ListNode(val, next) {
- * this.val = (val===undefined ? 0 : val)
- * this.next = (next===undefined ? null : next)
- * }
- */
-/**
- * @param {ListNode} head
- * @return {ListNode}
- */
-/**
- * 时间复杂度 O(N)
- * 空间复杂度 O(1)
- * 思路
- * - 链表太长不容易看出如何反转,所以可以看作两个最短链表反转
- * - 短链表反转,只需要将 当前节点的next 指回 给 上一个节点
- * - 所以使用p1为头节点,p2为后节点,双指针一直指回,然后让双指针共同前进即可
- * - 因为p1最后会指向一个null,p2会指向5
- * - 所以最后返回p2链表
- */
-var reverseList = function (head) {
- let p1 = head;
- let p2 = null;
- while (p1 !== null) {
- let temp = p1.next;
- p1.next = p2; // 反转
- p2 = p1;
- p1 = temp;
- }
- return p2;
-};
-
-/**
- * 递归解法
- * @param {*} head
- * @returns
- */
-// 函数定义:返回链表反转后的头节点
-var reverseList2 = function (head) {
- if (head === null || head.next === null) {
- return head;
- }
- let last = reverseList2(head.next);
- head.next.next = head;
- head.next = null;
- return last;
-};
-// @lc code=end
diff --git "a/example/\351\223\276\350\241\250/\345\217\215\350\275\254\351\223\276\350\241\250/25.k-\344\270\252\344\270\200\347\273\204\347\277\273\350\275\254\351\223\276\350\241\250.js" "b/example/\351\223\276\350\241\250/\345\217\215\350\275\254\351\223\276\350\241\250/25.k-\344\270\252\344\270\200\347\273\204\347\277\273\350\275\254\351\223\276\350\241\250.js"
deleted file mode 100644
index 2961f93..0000000
--- "a/example/\351\223\276\350\241\250/\345\217\215\350\275\254\351\223\276\350\241\250/25.k-\344\270\252\344\270\200\347\273\204\347\277\273\350\275\254\351\223\276\350\241\250.js"
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * @lc app=leetcode.cn id=25 lang=javascript
- *
- * [25] K 个一组翻转链表
- */
-
-// @lc code=start
-/**
- * Definition for singly-linked list.
- * function ListNode(val, next) {
- * this.val = (val===undefined ? 0 : val)
- * this.next = (next===undefined ? null : next)
- * }
- */
-/**
- * @param {ListNode} head
- * @param {number} k
- * @return {ListNode}
- */
-/**
- * 时间复杂度 O(N)
- * 空间复杂度 O(logN)
- * 思路
- * - 先知道如何反转单个链表,然后在这个函数上拓展出[a,b)区间的反转函数
- * - 然后再分段去递归反转这个链表,若a,b的范围不足k,则不需要反转
- * - 将反转后的链表链接出来
- */
-var reverseKGroup = function (head, k) {
- if (head === null) return null;
- let a = head,
- b = head;
- for (let i = 0; i < k; i++) {
- // base case
- if (b === null) return head;
- b = b.next;
- }
- let newHead = reverse(a, b);
- a.next = reverseKGroup(b, k);
- return newHead;
-};
-
-// 以链表head到b的链表,翻转的是[head,b)区间,返回新的head
-var reverse = function (head, b) {
- let pre = null,
- cur = head,
- next = head;
- while (cur !== b) {
- next = cur.next;
- cur.next = pre;
- pre = cur;
- cur = next;
- }
- // 返回反转后的头节点
- return pre;
-};
-// @lc code=end
diff --git "a/example/\351\223\276\350\241\250/\345\217\215\350\275\254\351\223\276\350\241\250/92.\345\217\215\350\275\254\351\223\276\350\241\250-ii.js" "b/example/\351\223\276\350\241\250/\345\217\215\350\275\254\351\223\276\350\241\250/92.\345\217\215\350\275\254\351\223\276\350\241\250-ii.js"
deleted file mode 100644
index f309332..0000000
--- "a/example/\351\223\276\350\241\250/\345\217\215\350\275\254\351\223\276\350\241\250/92.\345\217\215\350\275\254\351\223\276\350\241\250-ii.js"
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * @lc app=leetcode.cn id=92 lang=javascript
- *
- * [92] 反转链表 II
- */
-
-// @lc code=start
-/**
- * Definition for singly-linked list.
- * function ListNode(val, next) {
- * this.val = (val===undefined ? 0 : val)
- * this.next = (next===undefined ? null : next)
- * }
- */
-
-// 反转以head为起点的n个节点,返回新的头节点
-let successor = null; // 后继
-var reverseN = function (head, n) {
- if (n === 1) {
- successor = head.next; // 保存后继
- return head;
- }
- // 以head.next为起点的n-1个节点,返回新的头节点
- let last = reverseN(head.next, n - 1);
- head.next.next = head;
- head.next = successor;
- return last;
-};
-
-/**
- * @param {ListNode} head
- * @param {number} left
- * @param {number} right
- * @return {ListNode}
- */
-var reverseBetween = function (head, left, right) {
- if (left === 1) {
- // 当left为1时,可以看做反转前n个节点
- return reverseN(head, right);
- }
- // 前进到反转的起点 触发base case
- head.next = reverseBetween(head.next, left - 1, right - 1);
- return head;
-};
-// @lc code=end
diff --git "a/example/\351\223\276\350\241\250/\345\217\215\350\275\254\351\223\276\350\241\250/\345\211\221\346\214\207 Offer 24. \345\217\215\350\275\254\351\223\276\350\241\250.js" "b/example/\351\223\276\350\241\250/\345\217\215\350\275\254\351\223\276\350\241\250/\345\211\221\346\214\207 Offer 24. \345\217\215\350\275\254\351\223\276\350\241\250.js"
deleted file mode 100644
index 02b0a65..0000000
--- "a/example/\351\223\276\350\241\250/\345\217\215\350\275\254\351\223\276\350\241\250/\345\211\221\346\214\207 Offer 24. \345\217\215\350\275\254\351\223\276\350\241\250.js"
+++ /dev/null
@@ -1,22 +0,0 @@
-// https://leetcode.cn/problems/fan-zhuan-lian-biao-lcof/
-
-/**
- * Definition for singly-linked list.
- * function ListNode(val) {
- * this.val = val;
- * this.next = null;
- * }
- */
-/**
- * @param {ListNode} head
- * @return {ListNode}
- */
-var reverseList = function (head) {
- if (head === null || head.next === null) {
- return head;
- }
- let last = reverseList(head.next);
- head.next.next = head;
- head.next = null;
- return last;
-};
diff --git "a/example/\351\223\276\350\241\250/\345\233\236\346\226\207\351\223\276\350\241\250/234.\345\233\236\346\226\207\351\223\276\350\241\250.js" "b/example/\351\223\276\350\241\250/\345\233\236\346\226\207\351\223\276\350\241\250/234.\345\233\236\346\226\207\351\223\276\350\241\250.js"
deleted file mode 100644
index 164bb8e..0000000
--- "a/example/\351\223\276\350\241\250/\345\233\236\346\226\207\351\223\276\350\241\250/234.\345\233\236\346\226\207\351\223\276\350\241\250.js"
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * @lc app=leetcode.cn id=234 lang=javascript
- *
- * [234] 回文链表
- */
-
-// @lc code=start
-/**
- * Definition for singly-linked list.
- * function ListNode(val, next) {
- * this.val = (val===undefined ? 0 : val)
- * this.next = (next===undefined ? null : next)
- * }
- */
-/**
- * @param {ListNode} head
- * @return {boolean}
- */
-/**
- * 时间复杂度 O(N)
- * 空间复杂度 O(N)
- * 思路
- * - 反转链表,判断两个链表的值是否完全想等
- * - 利用函数递归的调用栈,可以拿到反转链表的值
- * - 然后再后续遍历的位置进行判断,然后再将left指针向右偏移即可
- */
-var isPalindrome = function (head) {
- let left = head;
-
- var traverse = function (right) {
- if (right == null) return true;
- // 后序遍历位置,相当于反转了链表,因为上面的递归函数,让函数入栈了,出栈的第一个函数,就是链表最后一位
- // 这里相当于,让链表的首位进行判断
- let res = traverse(right.next); // 右指针左移
- res = res && right.val === left.val;
- left = left.next; // 左指针右移
- return res;
- };
-
- return traverse(head);
-};
-// @lc code=end
diff --git "a/example/\351\223\276\350\241\250/\345\233\236\346\226\207\351\223\276\350\241\250/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250.js" "b/example/\351\223\276\350\241\250/\345\233\236\346\226\207\351\223\276\350\241\250/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250.js"
deleted file mode 100644
index 95b1ea4..0000000
--- "a/example/\351\223\276\350\241\250/\345\233\236\346\226\207\351\223\276\350\241\250/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250.js"
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * Definition for singly-linked list.
- * function ListNode(val, next) {
- * this.val = (val===undefined ? 0 : val)
- * this.next = (next===undefined ? null : next)
- * }
- */
-/**
- * @param {ListNode} head
- * @return {boolean}
- */
-var isPalindrome = function (head) {
- let left = head;
-
- var traverse = function (right) {
- if (right === null) return true;
- let res = traverse(right.next);
-
- res = res && right.val === left.val;
- left = left.next;
- return res;
- };
-
- return traverse(head);
-};
diff --git a/public/favicon.ico b/favicon.ico
similarity index 100%
rename from public/favicon.ico
rename to favicon.ico
diff --git a/guide/index.html b/guide/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/guide/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js-logs/array/index.html b/js-logs/array/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/js-logs/array/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js-logs/backtracking/index.html b/js-logs/backtracking/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/js-logs/backtracking/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js-logs/bfs/index.html b/js-logs/bfs/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/js-logs/bfs/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js-logs/binary-search/index.html b/js-logs/binary-search/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/js-logs/binary-search/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js-logs/binary-tree/index.html b/js-logs/binary-tree/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/js-logs/binary-tree/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js-logs/bit-manipulation/index.html b/js-logs/bit-manipulation/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/js-logs/bit-manipulation/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js-logs/dynamic-programming/index.html b/js-logs/dynamic-programming/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/js-logs/dynamic-programming/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js-logs/greedy/index.html b/js-logs/greedy/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/js-logs/greedy/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js-logs/heap/index.html b/js-logs/heap/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/js-logs/heap/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js-logs/index.html b/js-logs/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/js-logs/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js-logs/linked-list/index.html b/js-logs/linked-list/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/js-logs/linked-list/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js-logs/math/index.html b/js-logs/math/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/js-logs/math/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js-logs/n-sum/index.html b/js-logs/n-sum/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/js-logs/n-sum/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js-logs/sliding-window/index.html b/js-logs/sliding-window/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/js-logs/sliding-window/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js-logs/sort/index.html b/js-logs/sort/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/js-logs/sort/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js-logs/stack/index.html b/js-logs/stack/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/js-logs/stack/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js-logs/string/index.html b/js-logs/string/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/js-logs/string/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js-logs/sword-point-offer--ii/index.html b/js-logs/sword-point-offer--ii/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/js-logs/sword-point-offer--ii/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js-logs/sword-point-offer/index.html b/js-logs/sword-point-offer/index.html
new file mode 100644
index 0000000..812f686
--- /dev/null
+++ b/js-logs/sword-point-offer/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/public/logo.png b/logo.png
similarity index 100%
rename from public/logo.png
rename to logo.png
diff --git a/nm__dumi__dist__client__pages__404.330ae01e.async.js b/nm__dumi__dist__client__pages__404.330ae01e.async.js
new file mode 100644
index 0000000..4ae3780
--- /dev/null
+++ b/nm__dumi__dist__client__pages__404.330ae01e.async.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[65],{11989:function(o,n,e){e.r(n),e.d(n,{default:function(){return d}});var t=e(5899),a=e(93236),u=function(){var r=(0,t.YB)(),l=(0,t.bU)();return a.createElement("div",{className:"dumi-default-not-found"},a.createElement("h1",null,r.formatMessage({id:"404.title"})),a.createElement(t.rU,{to:"base"in l?l.base:"/",replace:!0},r.formatMessage({id:"404.back"})," \u2192"))},d=u}}]);
diff --git a/nm__dumi__dist__client__pages__404.8b85f2d9.chunk.css b/nm__dumi__dist__client__pages__404.8b85f2d9.chunk.css
new file mode 100644
index 0000000..29b0522
--- /dev/null
+++ b/nm__dumi__dist__client__pages__404.8b85f2d9.chunk.css
@@ -0,0 +1 @@
+.dumi-default-not-found{display:flex;flex-direction:column;height:65vh;align-items:center;justify-content:center}.dumi-default-not-found>h1{position:relative;margin:24px 0;color:#e4e9ec;font-size:78px;font-weight:700;text-shadow:-1px -1px 0 #d0d5d8}[data-prefers-color=dark] .dumi-default-not-found>h1{color:#2a353c;text-shadow:-1px -1px 0 #1c2022}.dumi-default-not-found>a{color:#1677ff}[data-prefers-color=dark] .dumi-default-not-found>a{color:#0053c8}.dumi-default-not-found>a:not(:hover){text-decoration:none}
diff --git a/nm__dumi__dist__client__pages__Demo__index.05f3cfbb.async.js b/nm__dumi__dist__client__pages__Demo__index.05f3cfbb.async.js
new file mode 100644
index 0000000..ae478f3
--- /dev/null
+++ b/nm__dumi__dist__client__pages__Demo__index.05f3cfbb.async.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[9],{14142:function(l,n,e){e.r(n),e.d(n,{default:function(){return d}});var o=e(5899),t=e(93236),a=function(){var u=(0,o.UO)(),c=u.id,m=(0,o.WF)(),s=m.demos,f=s[c]||{},r=f.component;return r&&(0,t.createElement)(r)},d=a}}]);
diff --git a/nm__dumi__dist__client__pages__Demo__index.578aa5c0.chunk.css b/nm__dumi__dist__client__pages__Demo__index.578aa5c0.chunk.css
new file mode 100644
index 0000000..fa6b546
--- /dev/null
+++ b/nm__dumi__dist__client__pages__Demo__index.578aa5c0.chunk.css
@@ -0,0 +1 @@
+body{margin:0;padding:0}
diff --git a/nm__dumi__theme-default__layouts__DocLayout__index.26969a40.async.js b/nm__dumi__theme-default__layouts__DocLayout__index.26969a40.async.js
new file mode 100644
index 0000000..350279f
--- /dev/null
+++ b/nm__dumi__theme-default__layouts__DocLayout__index.26969a40.async.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkleetcode_record=self.webpackChunkleetcode_record||[]).push([[519],{92709:function(s,e,_){_.d(e,{Z:function(){return d.Z}});var d=_(85004)},26965:function(s,e,_){_.d(e,{Z:function(){return d.Z}});var d=_(10211)},88831:function(s,e,_){_.d(e,{Z:function(){return d.Z}});var d=_(12609)},49899:function(s,e,_){_.d(e,{Z:function(){return d.Z}});var d=_(68070)},6688:function(s,e,_){_.d(e,{Z:function(){return d.Z}});var d=_(6476)},9678:function(s,e,_){_.d(e,{Z:function(){return d.Z}});var d=_(72599)},35539:function(s,e,_){_.d(e,{Z:function(){return d.Z}});var d=_(54056)},52864:function(s,e,_){_.d(e,{Z:function(){return d.Z}});var d=_(94913)},28442:function(s,e,_){_.d(e,{Z:function(){return d.Z}});var d=_(38798)},63597:function(s,e,_){_.d(e,{Z:function(){return d.Z}});var d=_(97360)},74483:function(s,e,_){_.d(e,{Z:function(){return d.Z}});var d=_(10176)},17758:function(s,e,_){_.d(e,{Z:function(){return d.Z}});var d=_(52402)},21700:function(s,e,_){_.d(e,{ZP:function(){return d.ZP}});var d=_(57011)},89885:function(s,e,_){_.d(e,{Z:function(){return d.Z}});var d=_(91814)},26307:function(s,e,_){_.d(e,{Z:function(){return d.Z}});var d=_(62111)}}]);
diff --git a/package.json b/package.json
deleted file mode 100644
index c83fff3..0000000
--- a/package.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "name": "leetcode-record",
- "version": "0.0.1",
- "description": "This is a leetcode brush record",
- "scripts": {
- "start": "npm run dev",
- "dev": "dumi dev",
- "build": "dumi build",
- "prepare": "husky install && dumi setup",
- "deploy": "gh-pages -d dist"
- },
- "authors": [
- "1961018000@qq.com"
- ],
- "license": "MIT",
- "commitlint": {
- "extends": [
- "@commitlint/config-conventional"
- ]
- },
- "lint-staged": {
- "*.{md,json}": [
- "prettier --write --no-error-on-unmatched-pattern"
- ]
- },
- "devDependencies": {
- "@commitlint/cli": "^17.1.2",
- "@commitlint/config-conventional": "^17.1.0",
- "dumi": "^2.0.2",
- "gh-pages": "^4.0.0",
- "husky": "^8.0.1",
- "lint-staged": "^13.0.3",
- "prettier": "^2.7.1"
- },
- "dependencies": {
- "prism-react-renderer": "^1.3.5",
- "prismjs": "^1.29.0"
- }
-}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
deleted file mode 100644
index b51c696..0000000
--- a/pnpm-lock.yaml
+++ /dev/null
@@ -1,11072 +0,0 @@
-lockfileVersion: 5.4
-
-specifiers:
- '@commitlint/cli': ^17.1.2
- '@commitlint/config-conventional': ^17.1.0
- dumi: ^2.0.2
- gh-pages: ^4.0.0
- husky: ^8.0.1
- lint-staged: ^13.0.3
- prettier: ^2.7.1
- prism-react-renderer: ^1.3.5
- prismjs: ^1.29.0
-
-dependencies:
- prism-react-renderer: 1.3.5
- prismjs: 1.29.0
-
-devDependencies:
- '@commitlint/cli': 17.4.4
- '@commitlint/config-conventional': 17.4.4
- dumi: 2.1.15_prettier@2.8.4
- gh-pages: 4.0.0
- husky: 8.0.3
- lint-staged: 13.1.2
- prettier: 2.8.4
-
-packages:
-
- /@ampproject/remapping/2.2.0:
- resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==}
- engines: {node: '>=6.0.0'}
- dependencies:
- '@jridgewell/gen-mapping': 0.1.1
- '@jridgewell/trace-mapping': 0.3.17
- dev: true
-
- /@ant-design/icons-svg/4.2.1:
- resolution: {integrity: sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw==}
- dev: true
-
- /@antfu/install-pkg/0.1.1:
- resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==}
- dependencies:
- execa: 5.1.1
- find-up: 5.0.0
- dev: true
-
- /@antfu/utils/0.7.2:
- resolution: {integrity: sha512-vy9fM3pIxZmX07dL+VX1aZe7ynZ+YyB0jY+jE6r3hOK6GNY2t6W8rzpFC4tgpbXUYABkFQwgJq2XYXlxbXAI0g==}
- dev: true
-
- /@babel/code-frame/7.18.6:
- resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/highlight': 7.18.6
- dev: true
-
- /@babel/compat-data/7.21.0:
- resolution: {integrity: sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==}
- engines: {node: '>=6.9.0'}
- dev: true
-
- /@babel/core/7.21.0:
- resolution: {integrity: sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@ampproject/remapping': 2.2.0
- '@babel/code-frame': 7.18.6
- '@babel/generator': 7.21.1
- '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.0
- '@babel/helper-module-transforms': 7.21.2
- '@babel/helpers': 7.21.0
- '@babel/parser': 7.21.2
- '@babel/template': 7.20.7
- '@babel/traverse': 7.21.2
- '@babel/types': 7.21.2
- convert-source-map: 1.9.0
- debug: 4.3.4
- gensync: 1.0.0-beta.2
- json5: 2.2.3
- semver: 6.3.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@babel/eslint-parser/7.19.1_@babel+core@7.21.0:
- resolution: {integrity: sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==}
- engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0}
- peerDependencies:
- '@babel/core': '>=7.11.0'
- eslint: ^7.5.0 || ^8.0.0
- dependencies:
- '@babel/core': 7.21.0
- '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1
- eslint-visitor-keys: 2.1.0
- semver: 6.3.0
- dev: true
-
- /@babel/generator/7.21.1:
- resolution: {integrity: sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/types': 7.21.2
- '@jridgewell/gen-mapping': 0.3.2
- '@jridgewell/trace-mapping': 0.3.17
- jsesc: 2.5.2
- dev: true
-
- /@babel/helper-annotate-as-pure/7.18.6:
- resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/types': 7.21.2
- dev: true
-
- /@babel/helper-compilation-targets/7.20.7_@babel+core@7.21.0:
- resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0
- dependencies:
- '@babel/compat-data': 7.21.0
- '@babel/core': 7.21.0
- '@babel/helper-validator-option': 7.21.0
- browserslist: 4.21.5
- lru-cache: 5.1.1
- semver: 6.3.0
- dev: true
-
- /@babel/helper-environment-visitor/7.18.9:
- resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==}
- engines: {node: '>=6.9.0'}
- dev: true
-
- /@babel/helper-function-name/7.21.0:
- resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/template': 7.20.7
- '@babel/types': 7.21.2
- dev: true
-
- /@babel/helper-hoist-variables/7.18.6:
- resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/types': 7.21.2
- dev: true
-
- /@babel/helper-module-imports/7.18.6:
- resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/types': 7.21.2
- dev: true
-
- /@babel/helper-module-transforms/7.21.2:
- resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/helper-environment-visitor': 7.18.9
- '@babel/helper-module-imports': 7.18.6
- '@babel/helper-simple-access': 7.20.2
- '@babel/helper-split-export-declaration': 7.18.6
- '@babel/helper-validator-identifier': 7.19.1
- '@babel/template': 7.20.7
- '@babel/traverse': 7.21.2
- '@babel/types': 7.21.2
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@babel/helper-plugin-utils/7.20.2:
- resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==}
- engines: {node: '>=6.9.0'}
- dev: true
-
- /@babel/helper-simple-access/7.20.2:
- resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/types': 7.21.2
- dev: true
-
- /@babel/helper-split-export-declaration/7.18.6:
- resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/types': 7.21.2
- dev: true
-
- /@babel/helper-string-parser/7.19.4:
- resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==}
- engines: {node: '>=6.9.0'}
- dev: true
-
- /@babel/helper-validator-identifier/7.19.1:
- resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==}
- engines: {node: '>=6.9.0'}
- dev: true
-
- /@babel/helper-validator-option/7.21.0:
- resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==}
- engines: {node: '>=6.9.0'}
- dev: true
-
- /@babel/helpers/7.21.0:
- resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/template': 7.20.7
- '@babel/traverse': 7.21.2
- '@babel/types': 7.21.2
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@babel/highlight/7.18.6:
- resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/helper-validator-identifier': 7.19.1
- chalk: 2.4.2
- js-tokens: 4.0.0
- dev: true
-
- /@babel/parser/7.21.2:
- resolution: {integrity: sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==}
- engines: {node: '>=6.0.0'}
- hasBin: true
- dependencies:
- '@babel/types': 7.21.2
- dev: true
-
- /@babel/plugin-syntax-async-generators/7.8.4:
- resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/helper-plugin-utils': 7.20.2
- dev: true
-
- /@babel/plugin-syntax-bigint/7.8.3:
- resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/helper-plugin-utils': 7.20.2
- dev: true
-
- /@babel/plugin-syntax-class-properties/7.12.13:
- resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/helper-plugin-utils': 7.20.2
- dev: true
-
- /@babel/plugin-syntax-import-meta/7.10.4:
- resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/helper-plugin-utils': 7.20.2
- dev: true
-
- /@babel/plugin-syntax-json-strings/7.8.3:
- resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/helper-plugin-utils': 7.20.2
- dev: true
-
- /@babel/plugin-syntax-logical-assignment-operators/7.10.4:
- resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/helper-plugin-utils': 7.20.2
- dev: true
-
- /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3:
- resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/helper-plugin-utils': 7.20.2
- dev: true
-
- /@babel/plugin-syntax-numeric-separator/7.10.4:
- resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/helper-plugin-utils': 7.20.2
- dev: true
-
- /@babel/plugin-syntax-object-rest-spread/7.8.3:
- resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/helper-plugin-utils': 7.20.2
- dev: true
-
- /@babel/plugin-syntax-optional-catch-binding/7.8.3:
- resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/helper-plugin-utils': 7.20.2
- dev: true
-
- /@babel/plugin-syntax-optional-chaining/7.8.3:
- resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/helper-plugin-utils': 7.20.2
- dev: true
-
- /@babel/plugin-syntax-top-level-await/7.14.5:
- resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/helper-plugin-utils': 7.20.2
- dev: true
-
- /@babel/plugin-transform-modules-commonjs/7.21.2:
- resolution: {integrity: sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/helper-module-transforms': 7.21.2
- '@babel/helper-plugin-utils': 7.20.2
- '@babel/helper-simple-access': 7.20.2
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@babel/plugin-transform-react-jsx-self/7.21.0_@babel+core@7.21.0:
- resolution: {integrity: sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.21.0
- '@babel/helper-plugin-utils': 7.20.2
- dev: true
-
- /@babel/plugin-transform-react-jsx-source/7.19.6_@babel+core@7.21.0:
- resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.21.0
- '@babel/helper-plugin-utils': 7.20.2
- dev: true
-
- /@babel/runtime/7.21.0:
- resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==}
- engines: {node: '>=6.9.0'}
- dependencies:
- regenerator-runtime: 0.13.11
- dev: true
-
- /@babel/template/7.20.7:
- resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/code-frame': 7.18.6
- '@babel/parser': 7.21.2
- '@babel/types': 7.21.2
- dev: true
-
- /@babel/traverse/7.21.2:
- resolution: {integrity: sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/code-frame': 7.18.6
- '@babel/generator': 7.21.1
- '@babel/helper-environment-visitor': 7.18.9
- '@babel/helper-function-name': 7.21.0
- '@babel/helper-hoist-variables': 7.18.6
- '@babel/helper-split-export-declaration': 7.18.6
- '@babel/parser': 7.21.2
- '@babel/types': 7.21.2
- debug: 4.3.4
- globals: 11.12.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@babel/types/7.21.2:
- resolution: {integrity: sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/helper-string-parser': 7.19.4
- '@babel/helper-validator-identifier': 7.19.1
- to-fast-properties: 2.0.0
- dev: true
-
- /@bloomberg/record-tuple-polyfill/0.0.4:
- resolution: {integrity: sha512-h0OYmPR3A5Dfbetra/GzxBAzQk8sH7LhRkRUTdagX6nrtlUgJGYCTv4bBK33jsTQw9HDd8PE2x1Ma+iRKEDUsw==}
- dev: true
-
- /@commitlint/cli/17.4.4:
- resolution: {integrity: sha512-HwKlD7CPVMVGTAeFZylVNy14Vm5POVY0WxPkZr7EXLC/os0LH/obs6z4HRvJtH/nHCMYBvUBQhGwnufKfTjd5g==}
- engines: {node: '>=v14'}
- hasBin: true
- dependencies:
- '@commitlint/format': 17.4.4
- '@commitlint/lint': 17.4.4
- '@commitlint/load': 17.4.4
- '@commitlint/read': 17.4.4
- '@commitlint/types': 17.4.4
- execa: 5.1.1
- lodash.isfunction: 3.0.9
- resolve-from: 5.0.0
- resolve-global: 1.0.0
- yargs: 17.7.1
- transitivePeerDependencies:
- - '@swc/core'
- - '@swc/wasm'
- dev: true
-
- /@commitlint/config-conventional/17.4.4:
- resolution: {integrity: sha512-u6ztvxqzi6NuhrcEDR7a+z0yrh11elY66nRrQIpqsqW6sZmpxYkDLtpRH8jRML+mmxYQ8s4qqF06Q/IQx5aJeQ==}
- engines: {node: '>=v14'}
- dependencies:
- conventional-changelog-conventionalcommits: 5.0.0
- dev: true
-
- /@commitlint/config-validator/17.4.4:
- resolution: {integrity: sha512-bi0+TstqMiqoBAQDvdEP4AFh0GaKyLFlPPEObgI29utoKEYoPQTvF0EYqIwYYLEoJYhj5GfMIhPHJkTJhagfeg==}
- engines: {node: '>=v14'}
- dependencies:
- '@commitlint/types': 17.4.4
- ajv: 8.12.0
- dev: true
-
- /@commitlint/ensure/17.4.4:
- resolution: {integrity: sha512-AHsFCNh8hbhJiuZ2qHv/m59W/GRE9UeOXbkOqxYMNNg9pJ7qELnFcwj5oYpa6vzTSHtPGKf3C2yUFNy1GGHq6g==}
- engines: {node: '>=v14'}
- dependencies:
- '@commitlint/types': 17.4.4
- lodash.camelcase: 4.3.0
- lodash.kebabcase: 4.1.1
- lodash.snakecase: 4.1.1
- lodash.startcase: 4.4.0
- lodash.upperfirst: 4.3.1
- dev: true
-
- /@commitlint/execute-rule/17.4.0:
- resolution: {integrity: sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA==}
- engines: {node: '>=v14'}
- dev: true
-
- /@commitlint/format/17.4.4:
- resolution: {integrity: sha512-+IS7vpC4Gd/x+uyQPTAt3hXs5NxnkqAZ3aqrHd5Bx/R9skyCAWusNlNbw3InDbAK6j166D9asQM8fnmYIa+CXQ==}
- engines: {node: '>=v14'}
- dependencies:
- '@commitlint/types': 17.4.4
- chalk: 4.1.2
- dev: true
-
- /@commitlint/is-ignored/17.4.4:
- resolution: {integrity: sha512-Y3eo1SFJ2JQDik4rWkBC4tlRIxlXEFrRWxcyrzb1PUT2k3kZ/XGNuCDfk/u0bU2/yS0tOA/mTjFsV+C4qyACHw==}
- engines: {node: '>=v14'}
- dependencies:
- '@commitlint/types': 17.4.4
- semver: 7.3.8
- dev: true
-
- /@commitlint/lint/17.4.4:
- resolution: {integrity: sha512-qgkCRRFjyhbMDWsti/5jRYVJkgYZj4r+ZmweZObnbYqPUl5UKLWMf9a/ZZisOI4JfiPmRktYRZ2JmqlSvg+ccw==}
- engines: {node: '>=v14'}
- dependencies:
- '@commitlint/is-ignored': 17.4.4
- '@commitlint/parse': 17.4.4
- '@commitlint/rules': 17.4.4
- '@commitlint/types': 17.4.4
- dev: true
-
- /@commitlint/load/17.4.4:
- resolution: {integrity: sha512-z6uFIQ7wfKX5FGBe1AkOF4l/ShOQsaa1ml/nLMkbW7R/xF8galGS7Zh0yHvzVp/srtfS0brC+0bUfQfmpMPFVQ==}
- engines: {node: '>=v14'}
- dependencies:
- '@commitlint/config-validator': 17.4.4
- '@commitlint/execute-rule': 17.4.0
- '@commitlint/resolve-extends': 17.4.4
- '@commitlint/types': 17.4.4
- '@types/node': 18.14.6
- chalk: 4.1.2
- cosmiconfig: 8.1.0
- cosmiconfig-typescript-loader: 4.3.0_y2okb5cfqgxv537umje5rj3w6m
- lodash.isplainobject: 4.0.6
- lodash.merge: 4.6.2
- lodash.uniq: 4.5.0
- resolve-from: 5.0.0
- ts-node: 10.9.1_alpjt73dvgv6kni625hu7f2l4m
- typescript: 4.9.5
- transitivePeerDependencies:
- - '@swc/core'
- - '@swc/wasm'
- dev: true
-
- /@commitlint/message/17.4.2:
- resolution: {integrity: sha512-3XMNbzB+3bhKA1hSAWPCQA3lNxR4zaeQAQcHj0Hx5sVdO6ryXtgUBGGv+1ZCLMgAPRixuc6en+iNAzZ4NzAa8Q==}
- engines: {node: '>=v14'}
- dev: true
-
- /@commitlint/parse/17.4.4:
- resolution: {integrity: sha512-EKzz4f49d3/OU0Fplog7nwz/lAfXMaDxtriidyGF9PtR+SRbgv4FhsfF310tKxs6EPj8Y+aWWuX3beN5s+yqGg==}
- engines: {node: '>=v14'}
- dependencies:
- '@commitlint/types': 17.4.4
- conventional-changelog-angular: 5.0.13
- conventional-commits-parser: 3.2.4
- dev: true
-
- /@commitlint/read/17.4.4:
- resolution: {integrity: sha512-B2TvUMJKK+Svzs6eji23WXsRJ8PAD+orI44lVuVNsm5zmI7O8RSGJMvdEZEikiA4Vohfb+HevaPoWZ7PiFZ3zA==}
- engines: {node: '>=v14'}
- dependencies:
- '@commitlint/top-level': 17.4.0
- '@commitlint/types': 17.4.4
- fs-extra: 11.1.0
- git-raw-commits: 2.0.11
- minimist: 1.2.8
- dev: true
-
- /@commitlint/resolve-extends/17.4.4:
- resolution: {integrity: sha512-znXr1S0Rr8adInptHw0JeLgumS11lWbk5xAWFVno+HUFVN45875kUtqjrI6AppmD3JI+4s0uZlqqlkepjJd99A==}
- engines: {node: '>=v14'}
- dependencies:
- '@commitlint/config-validator': 17.4.4
- '@commitlint/types': 17.4.4
- import-fresh: 3.3.0
- lodash.mergewith: 4.6.2
- resolve-from: 5.0.0
- resolve-global: 1.0.0
- dev: true
-
- /@commitlint/rules/17.4.4:
- resolution: {integrity: sha512-0tgvXnHi/mVcyR8Y8mjTFZIa/FEQXA4uEutXS/imH2v1UNkYDSEMsK/68wiXRpfW1euSgEdwRkvE1z23+yhNrQ==}
- engines: {node: '>=v14'}
- dependencies:
- '@commitlint/ensure': 17.4.4
- '@commitlint/message': 17.4.2
- '@commitlint/to-lines': 17.4.0
- '@commitlint/types': 17.4.4
- execa: 5.1.1
- dev: true
-
- /@commitlint/to-lines/17.4.0:
- resolution: {integrity: sha512-LcIy/6ZZolsfwDUWfN1mJ+co09soSuNASfKEU5sCmgFCvX5iHwRYLiIuoqXzOVDYOy7E7IcHilr/KS0e5T+0Hg==}
- engines: {node: '>=v14'}
- dev: true
-
- /@commitlint/top-level/17.4.0:
- resolution: {integrity: sha512-/1loE/g+dTTQgHnjoCy0AexKAEFyHsR2zRB4NWrZ6lZSMIxAhBJnmCqwao7b4H8888PsfoTBCLBYIw8vGnej8g==}
- engines: {node: '>=v14'}
- dependencies:
- find-up: 5.0.0
- dev: true
-
- /@commitlint/types/17.4.4:
- resolution: {integrity: sha512-amRN8tRLYOsxRr6mTnGGGvB5EmW/4DDjLMgiwK3CCVEmN6Sr/6xePGEpWaspKkckILuUORCwe6VfDBw6uj4axQ==}
- engines: {node: '>=v14'}
- dependencies:
- chalk: 4.1.2
- dev: true
-
- /@cspotcode/source-map-support/0.8.1:
- resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
- engines: {node: '>=12'}
- dependencies:
- '@jridgewell/trace-mapping': 0.3.9
- dev: true
-
- /@csstools/postcss-color-function/1.1.1:
- resolution: {integrity: sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- '@csstools/postcss-progressive-custom-properties': 1.3.0
- postcss-value-parser: 4.2.0
- dev: true
-
- /@csstools/postcss-color-function/1.1.1_postcss@8.4.21:
- resolution: {integrity: sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.21
- postcss: 8.4.21
- postcss-value-parser: 4.2.0
- dev: true
-
- /@csstools/postcss-font-format-keywords/1.0.1:
- resolution: {integrity: sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- postcss-value-parser: 4.2.0
- dev: true
-
- /@csstools/postcss-font-format-keywords/1.0.1_postcss@8.4.21:
- resolution: {integrity: sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- postcss: 8.4.21
- postcss-value-parser: 4.2.0
- dev: true
-
- /@csstools/postcss-hwb-function/1.0.2:
- resolution: {integrity: sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- postcss-value-parser: 4.2.0
- dev: true
-
- /@csstools/postcss-hwb-function/1.0.2_postcss@8.4.21:
- resolution: {integrity: sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- postcss: 8.4.21
- postcss-value-parser: 4.2.0
- dev: true
-
- /@csstools/postcss-ic-unit/1.0.1:
- resolution: {integrity: sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- '@csstools/postcss-progressive-custom-properties': 1.3.0
- postcss-value-parser: 4.2.0
- dev: true
-
- /@csstools/postcss-ic-unit/1.0.1_postcss@8.4.21:
- resolution: {integrity: sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.21
- postcss: 8.4.21
- postcss-value-parser: 4.2.0
- dev: true
-
- /@csstools/postcss-is-pseudo-class/2.0.7:
- resolution: {integrity: sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- '@csstools/selector-specificity': 2.1.1_laljekdltgzr3kfi7r4exvsr5a
- postcss-selector-parser: 6.0.11
- dev: true
-
- /@csstools/postcss-is-pseudo-class/2.0.7_postcss@8.4.21:
- resolution: {integrity: sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- '@csstools/selector-specificity': 2.1.1_wajs5nedgkikc5pcuwett7legi
- postcss: 8.4.21
- postcss-selector-parser: 6.0.11
- dev: true
-
- /@csstools/postcss-normalize-display-values/1.0.1:
- resolution: {integrity: sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- postcss-value-parser: 4.2.0
- dev: true
-
- /@csstools/postcss-normalize-display-values/1.0.1_postcss@8.4.21:
- resolution: {integrity: sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- postcss: 8.4.21
- postcss-value-parser: 4.2.0
- dev: true
-
- /@csstools/postcss-oklab-function/1.1.1:
- resolution: {integrity: sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- '@csstools/postcss-progressive-custom-properties': 1.3.0
- postcss-value-parser: 4.2.0
- dev: true
-
- /@csstools/postcss-oklab-function/1.1.1_postcss@8.4.21:
- resolution: {integrity: sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.21
- postcss: 8.4.21
- postcss-value-parser: 4.2.0
- dev: true
-
- /@csstools/postcss-progressive-custom-properties/1.3.0:
- resolution: {integrity: sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.3
- dependencies:
- postcss-value-parser: 4.2.0
- dev: true
-
- /@csstools/postcss-progressive-custom-properties/1.3.0_postcss@8.4.21:
- resolution: {integrity: sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.3
- dependencies:
- postcss: 8.4.21
- postcss-value-parser: 4.2.0
- dev: true
-
- /@csstools/postcss-stepped-value-functions/1.0.1:
- resolution: {integrity: sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- postcss-value-parser: 4.2.0
- dev: true
-
- /@csstools/postcss-stepped-value-functions/1.0.1_postcss@8.4.21:
- resolution: {integrity: sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- postcss: 8.4.21
- postcss-value-parser: 4.2.0
- dev: true
-
- /@csstools/postcss-unset-value/1.0.2:
- resolution: {integrity: sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dev: true
-
- /@csstools/postcss-unset-value/1.0.2_postcss@8.4.21:
- resolution: {integrity: sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- postcss: 8.4.21
- dev: true
-
- /@csstools/selector-specificity/2.1.1_laljekdltgzr3kfi7r4exvsr5a:
- resolution: {integrity: sha512-jwx+WCqszn53YHOfvFMJJRd/B2GqkCBt+1MJSG6o5/s8+ytHMvDZXsJgUEWLk12UnLd7HYKac4BYU5i/Ron1Cw==}
- engines: {node: ^14 || ^16 || >=18}
- peerDependencies:
- postcss: ^8.4
- postcss-selector-parser: ^6.0.10
- dependencies:
- postcss-selector-parser: 6.0.11
- dev: true
-
- /@csstools/selector-specificity/2.1.1_wajs5nedgkikc5pcuwett7legi:
- resolution: {integrity: sha512-jwx+WCqszn53YHOfvFMJJRd/B2GqkCBt+1MJSG6o5/s8+ytHMvDZXsJgUEWLk12UnLd7HYKac4BYU5i/Ron1Cw==}
- engines: {node: ^14 || ^16 || >=18}
- peerDependencies:
- postcss: ^8.4
- postcss-selector-parser: ^6.0.10
- dependencies:
- postcss: 8.4.21
- postcss-selector-parser: 6.0.11
- dev: true
-
- /@esbuild-kit/cjs-loader/2.4.2:
- resolution: {integrity: sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==}
- dependencies:
- '@esbuild-kit/core-utils': 3.1.0
- get-tsconfig: 4.4.0
- dev: true
-
- /@esbuild-kit/core-utils/3.1.0:
- resolution: {integrity: sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==}
- dependencies:
- esbuild: 0.17.11
- source-map-support: 0.5.21
- dev: true
-
- /@esbuild-kit/esm-loader/2.5.5:
- resolution: {integrity: sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==}
- dependencies:
- '@esbuild-kit/core-utils': 3.1.0
- get-tsconfig: 4.4.0
- dev: true
-
- /@esbuild/android-arm/0.16.17:
- resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==}
- engines: {node: '>=12'}
- cpu: [arm]
- os: [android]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/android-arm/0.17.11:
- resolution: {integrity: sha512-CdyX6sRVh1NzFCsf5vw3kULwlAhfy9wVt8SZlrhQ7eL2qBjGbFhRBWkkAzuZm9IIEOCKJw4DXA6R85g+qc8RDw==}
- engines: {node: '>=12'}
- cpu: [arm]
- os: [android]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/android-arm64/0.16.17:
- resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [android]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/android-arm64/0.17.11:
- resolution: {integrity: sha512-QnK4d/zhVTuV4/pRM4HUjcsbl43POALU2zvBynmrrqZt9LPcLA3x1fTZPBg2RRguBQnJcnU059yKr+bydkntjg==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [android]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/android-x64/0.16.17:
- resolution: {integrity: sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [android]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/android-x64/0.17.11:
- resolution: {integrity: sha512-3PL3HKtsDIXGQcSCKtWD/dy+mgc4p2Tvo2qKgKHj9Yf+eniwFnuoQ0OUhlSfAEpKAFzF9N21Nwgnap6zy3L3MQ==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [android]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/darwin-arm64/0.16.17:
- resolution: {integrity: sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [darwin]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/darwin-arm64/0.17.11:
- resolution: {integrity: sha512-pJ950bNKgzhkGNO3Z9TeHzIFtEyC2GDQL3wxkMApDEghYx5Qers84UTNc1bAxWbRkuJOgmOha5V0WUeh8G+YGw==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [darwin]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/darwin-x64/0.16.17:
- resolution: {integrity: sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [darwin]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/darwin-x64/0.17.11:
- resolution: {integrity: sha512-iB0dQkIHXyczK3BZtzw1tqegf0F0Ab5texX2TvMQjiJIWXAfM4FQl7D909YfXWnB92OQz4ivBYQ2RlxBJrMJOw==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [darwin]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/freebsd-arm64/0.16.17:
- resolution: {integrity: sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [freebsd]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/freebsd-arm64/0.17.11:
- resolution: {integrity: sha512-7EFzUADmI1jCHeDRGKgbnF5sDIceZsQGapoO6dmw7r/ZBEKX7CCDnIz8m9yEclzr7mFsd+DyasHzpjfJnmBB1Q==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [freebsd]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/freebsd-x64/0.16.17:
- resolution: {integrity: sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [freebsd]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/freebsd-x64/0.17.11:
- resolution: {integrity: sha512-iPgenptC8i8pdvkHQvXJFzc1eVMR7W2lBPrTE6GbhR54sLcF42mk3zBOjKPOodezzuAz/KSu8CPyFSjcBMkE9g==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [freebsd]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/linux-arm/0.16.17:
- resolution: {integrity: sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==}
- engines: {node: '>=12'}
- cpu: [arm]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/linux-arm/0.17.11:
- resolution: {integrity: sha512-M9iK/d4lgZH0U5M1R2p2gqhPV/7JPJcRz+8O8GBKVgqndTzydQ7B2XGDbxtbvFkvIs53uXTobOhv+RyaqhUiMg==}
- engines: {node: '>=12'}
- cpu: [arm]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/linux-arm64/0.16.17:
- resolution: {integrity: sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/linux-arm64/0.17.11:
- resolution: {integrity: sha512-Qxth3gsWWGKz2/qG2d5DsW/57SeA2AmpSMhdg9TSB5Svn2KDob3qxfQSkdnWjSd42kqoxIPy3EJFs+6w1+6Qjg==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/linux-ia32/0.16.17:
- resolution: {integrity: sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==}
- engines: {node: '>=12'}
- cpu: [ia32]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/linux-ia32/0.17.11:
- resolution: {integrity: sha512-dB1nGaVWtUlb/rRDHmuDQhfqazWE0LMro/AIbT2lWM3CDMHJNpLckH+gCddQyhhcLac2OYw69ikUMO34JLt3wA==}
- engines: {node: '>=12'}
- cpu: [ia32]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/linux-loong64/0.16.17:
- resolution: {integrity: sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==}
- engines: {node: '>=12'}
- cpu: [loong64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/linux-loong64/0.17.11:
- resolution: {integrity: sha512-aCWlq70Q7Nc9WDnormntGS1ar6ZFvUpqr8gXtO+HRejRYPweAFQN615PcgaSJkZjhHp61+MNLhzyVALSF2/Q0g==}
- engines: {node: '>=12'}
- cpu: [loong64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/linux-mips64el/0.16.17:
- resolution: {integrity: sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==}
- engines: {node: '>=12'}
- cpu: [mips64el]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/linux-mips64el/0.17.11:
- resolution: {integrity: sha512-cGeGNdQxqY8qJwlYH1BP6rjIIiEcrM05H7k3tR7WxOLmD1ZxRMd6/QIOWMb8mD2s2YJFNRuNQ+wjMhgEL2oCEw==}
- engines: {node: '>=12'}
- cpu: [mips64el]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/linux-ppc64/0.16.17:
- resolution: {integrity: sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==}
- engines: {node: '>=12'}
- cpu: [ppc64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/linux-ppc64/0.17.11:
- resolution: {integrity: sha512-BdlziJQPW/bNe0E8eYsHB40mYOluS+jULPCjlWiHzDgr+ZBRXPtgMV1nkLEGdpjrwgmtkZHEGEPaKdS/8faLDA==}
- engines: {node: '>=12'}
- cpu: [ppc64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/linux-riscv64/0.16.17:
- resolution: {integrity: sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==}
- engines: {node: '>=12'}
- cpu: [riscv64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/linux-riscv64/0.17.11:
- resolution: {integrity: sha512-MDLwQbtF+83oJCI1Cixn68Et/ME6gelmhssPebC40RdJaect+IM+l7o/CuG0ZlDs6tZTEIoxUe53H3GmMn8oMA==}
- engines: {node: '>=12'}
- cpu: [riscv64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/linux-s390x/0.16.17:
- resolution: {integrity: sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==}
- engines: {node: '>=12'}
- cpu: [s390x]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/linux-s390x/0.17.11:
- resolution: {integrity: sha512-4N5EMESvws0Ozr2J94VoUD8HIRi7X0uvUv4c0wpTHZyZY9qpaaN7THjosdiW56irQ4qnJ6Lsc+i+5zGWnyqWqQ==}
- engines: {node: '>=12'}
- cpu: [s390x]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/linux-x64/0.16.17:
- resolution: {integrity: sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/linux-x64/0.17.11:
- resolution: {integrity: sha512-rM/v8UlluxpytFSmVdbCe1yyKQd/e+FmIJE2oPJvbBo+D0XVWi1y/NQ4iTNx+436WmDHQBjVLrbnAQLQ6U7wlw==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/netbsd-x64/0.16.17:
- resolution: {integrity: sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [netbsd]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/netbsd-x64/0.17.11:
- resolution: {integrity: sha512-4WaAhuz5f91h3/g43VBGdto1Q+X7VEZfpcWGtOFXnggEuLvjV+cP6DyLRU15IjiU9fKLLk41OoJfBFN5DhPvag==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [netbsd]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/openbsd-x64/0.16.17:
- resolution: {integrity: sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [openbsd]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/openbsd-x64/0.17.11:
- resolution: {integrity: sha512-UBj135Nx4FpnvtE+C8TWGp98oUgBcmNmdYgl5ToKc0mBHxVVqVE7FUS5/ELMImOp205qDAittL6Ezhasc2Ev/w==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [openbsd]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/sunos-x64/0.16.17:
- resolution: {integrity: sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [sunos]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/sunos-x64/0.17.11:
- resolution: {integrity: sha512-1/gxTifDC9aXbV2xOfCbOceh5AlIidUrPsMpivgzo8P8zUtczlq1ncFpeN1ZyQJ9lVs2hILy1PG5KPp+w8QPPg==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [sunos]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/win32-arm64/0.16.17:
- resolution: {integrity: sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [win32]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/win32-arm64/0.17.11:
- resolution: {integrity: sha512-vtSfyx5yRdpiOW9yp6Ax0zyNOv9HjOAw8WaZg3dF5djEHKKm3UnoohftVvIJtRh0Ec7Hso0RIdTqZvPXJ7FdvQ==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [win32]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/win32-ia32/0.16.17:
- resolution: {integrity: sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==}
- engines: {node: '>=12'}
- cpu: [ia32]
- os: [win32]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/win32-ia32/0.17.11:
- resolution: {integrity: sha512-GFPSLEGQr4wHFTiIUJQrnJKZhZjjq4Sphf+mM76nQR6WkQn73vm7IsacmBRPkALfpOCHsopSvLgqdd4iUW2mYw==}
- engines: {node: '>=12'}
- cpu: [ia32]
- os: [win32]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/win32-x64/0.16.17:
- resolution: {integrity: sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [win32]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/win32-x64/0.17.11:
- resolution: {integrity: sha512-N9vXqLP3eRL8BqSy8yn4Y98cZI2pZ8fyuHx6lKjiG2WABpT2l01TXdzq5Ma2ZUBzfB7tx5dXVhge8X9u0S70ZQ==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [win32]
- requiresBuild: true
- dev: true
- optional: true
-
- /@floating-ui/core/0.6.2:
- resolution: {integrity: sha512-jktYRmZwmau63adUG3GKOAVCofBXkk55S/zQ94XOorAHhwqFIOFAy1rSp2N0Wp6/tGbe9V3u/ExlGZypyY17rg==}
- dev: true
-
- /@floating-ui/dom/0.4.5:
- resolution: {integrity: sha512-b+prvQgJt8pieaKYMSJBXHxX/DYwdLsAWxKYqnO5dO2V4oo/TYBZJAUQCVNjTWWsrs6o4VDrNcP9+E70HAhJdw==}
- dependencies:
- '@floating-ui/core': 0.6.2
- dev: true
-
- /@floating-ui/react-dom-interactions/0.3.1_ef5jwxihqo6n7gxfmzogljlgcm:
- resolution: {integrity: sha512-tP2KEh7EHJr5hokSBHcPGojb+AorDNUf0NYfZGg/M+FsMvCOOsSEeEF0O1NDfETIzDnpbHnCs0DuvCFhSMSStg==}
- deprecated: Package renamed to @floating-ui/react
- dependencies:
- '@floating-ui/react-dom': 0.6.3_ef5jwxihqo6n7gxfmzogljlgcm
- aria-hidden: 1.2.3
- point-in-polygon: 1.1.0
- use-isomorphic-layout-effect: 1.1.2_react@18.1.0
- transitivePeerDependencies:
- - '@types/react'
- - react
- - react-dom
- dev: true
-
- /@floating-ui/react-dom/0.6.3_ef5jwxihqo6n7gxfmzogljlgcm:
- resolution: {integrity: sha512-hC+pS5D6AgS2wWjbmSQ6UR6Kpy+drvWGJIri6e1EDGADTPsCaa4KzCgmCczHrQeInx9tqs81EyDmbKJYY2swKg==}
- peerDependencies:
- react: '>=16.8.0'
- react-dom: '>=16.8.0'
- dependencies:
- '@floating-ui/dom': 0.4.5
- react: 18.1.0
- react-dom: 18.1.0_react@18.1.0
- use-isomorphic-layout-effect: 1.1.2_react@18.1.0
- transitivePeerDependencies:
- - '@types/react'
- dev: true
-
- /@formatjs/ecma402-abstract/1.14.3:
- resolution: {integrity: sha512-SlsbRC/RX+/zg4AApWIFNDdkLtFbkq3LNoZWXZCE/nHVKqoIJyaoQyge/I0Y38vLxowUn9KTtXgusLD91+orbg==}
- dependencies:
- '@formatjs/intl-localematcher': 0.2.32
- tslib: 2.5.0
- dev: true
-
- /@formatjs/fast-memoize/1.2.8:
- resolution: {integrity: sha512-PemNUObyoIZcqdQ1ixTPugzAzhEj7j6AHIyrq/qR6x5BFTvOQeXHYsVZUqBEFduAIscUaDfou+U+xTqOiunJ3Q==}
- dependencies:
- tslib: 2.5.0
- dev: true
-
- /@formatjs/icu-messageformat-parser/2.3.0:
- resolution: {integrity: sha512-xqtlqYAbfJDF4b6e4O828LBNOWXrFcuYadqAbYORlDRwhyJ2bH+xpUBPldZbzRGUN2mxlZ4Ykhm7jvERtmI8NQ==}
- dependencies:
- '@formatjs/ecma402-abstract': 1.14.3
- '@formatjs/icu-skeleton-parser': 1.3.18
- tslib: 2.5.0
- dev: true
-
- /@formatjs/icu-skeleton-parser/1.3.18:
- resolution: {integrity: sha512-ND1ZkZfmLPcHjAH1sVpkpQxA+QYfOX3py3SjKWMUVGDow18gZ0WPqz3F+pJLYQMpS2LnnQ5zYR2jPVYTbRwMpg==}
- dependencies:
- '@formatjs/ecma402-abstract': 1.14.3
- tslib: 2.5.0
- dev: true
-
- /@formatjs/intl-displaynames/6.2.6:
- resolution: {integrity: sha512-scf5AQTk9EjpvPhboo5sizVOvidTdMOnajv9z+0cejvl7JNl9bl/aMrNBgC72UH+bP3l45usPUKAGskV6sNIrA==}
- dependencies:
- '@formatjs/ecma402-abstract': 1.14.3
- '@formatjs/intl-localematcher': 0.2.32
- tslib: 2.5.0
- dev: true
-
- /@formatjs/intl-listformat/7.1.9:
- resolution: {integrity: sha512-5YikxwRqRXTVWVujhswDOTCq6gs+m9IcNbNZLa6FLtyBStAjEsuE2vAU+lPsbz9ZTST57D5fodjIh2JXT6sMWQ==}
- dependencies:
- '@formatjs/ecma402-abstract': 1.14.3
- '@formatjs/intl-localematcher': 0.2.32
- tslib: 2.5.0
- dev: true
-
- /@formatjs/intl-localematcher/0.2.32:
- resolution: {integrity: sha512-k/MEBstff4sttohyEpXxCmC3MqbUn9VvHGlZ8fauLzkbwXmVrEeyzS+4uhrvAk9DWU9/7otYWxyDox4nT/KVLQ==}
- dependencies:
- tslib: 2.5.0
- dev: true
-
- /@formatjs/intl/2.6.7:
- resolution: {integrity: sha512-9FvEJfUMzlmP5ZBK3EE0928kVsZmD5aeWXg+faP8+mKIvG3c0hkLEXQ2MiUrXQt4rsEzOPbYVtBdthzSM0e2fw==}
- peerDependencies:
- typescript: ^4.7
- peerDependenciesMeta:
- typescript:
- optional: true
- dependencies:
- '@formatjs/ecma402-abstract': 1.14.3
- '@formatjs/fast-memoize': 1.2.8
- '@formatjs/icu-messageformat-parser': 2.3.0
- '@formatjs/intl-displaynames': 6.2.6
- '@formatjs/intl-listformat': 7.1.9
- intl-messageformat: 10.3.1
- tslib: 2.5.0
- dev: true
-
- /@iconify/types/2.0.0:
- resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
- dev: true
-
- /@iconify/utils/2.1.1:
- resolution: {integrity: sha512-H8xz74JDzDw8f0qLxwIaxFMnFkbXTZNWEufOk3WxaLFHV4h0A2FjIDgNk5LzC0am4jssnjdeJJdRs3UFu3582Q==}
- dependencies:
- '@antfu/install-pkg': 0.1.1
- '@antfu/utils': 0.7.2
- '@iconify/types': 2.0.0
- debug: 4.3.4
- kolorist: 1.7.0
- local-pkg: 0.4.3
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@istanbuljs/load-nyc-config/1.1.0:
- resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==}
- engines: {node: '>=8'}
- dependencies:
- camelcase: 5.3.1
- find-up: 4.1.0
- get-package-type: 0.1.0
- js-yaml: 3.14.1
- resolve-from: 5.0.0
- dev: true
-
- /@istanbuljs/schema/0.1.3:
- resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==}
- engines: {node: '>=8'}
- dev: true
-
- /@jest/schemas/29.4.3:
- resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@sinclair/typebox': 0.25.24
- dev: true
-
- /@jest/transform/29.5.0:
- resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@babel/core': 7.21.0
- '@jest/types': 29.5.0
- '@jridgewell/trace-mapping': 0.3.17
- babel-plugin-istanbul: 6.1.1
- chalk: 4.1.2
- convert-source-map: 2.0.0
- fast-json-stable-stringify: 2.1.0
- graceful-fs: 4.2.10
- jest-haste-map: 29.5.0
- jest-regex-util: 29.4.3
- jest-util: 29.5.0
- micromatch: 4.0.5
- pirates: 4.0.5
- slash: 3.0.0
- write-file-atomic: 4.0.2
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@jest/types/27.5.1:
- resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- '@types/istanbul-lib-coverage': 2.0.4
- '@types/istanbul-reports': 3.0.1
- '@types/node': 18.14.6
- '@types/yargs': 16.0.5
- chalk: 4.1.2
- dev: true
-
- /@jest/types/29.5.0:
- resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/schemas': 29.4.3
- '@types/istanbul-lib-coverage': 2.0.4
- '@types/istanbul-reports': 3.0.1
- '@types/node': 18.14.6
- '@types/yargs': 17.0.22
- chalk: 4.1.2
- dev: true
-
- /@jridgewell/gen-mapping/0.1.1:
- resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==}
- engines: {node: '>=6.0.0'}
- dependencies:
- '@jridgewell/set-array': 1.1.2
- '@jridgewell/sourcemap-codec': 1.4.14
- dev: true
-
- /@jridgewell/gen-mapping/0.3.2:
- resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==}
- engines: {node: '>=6.0.0'}
- dependencies:
- '@jridgewell/set-array': 1.1.2
- '@jridgewell/sourcemap-codec': 1.4.14
- '@jridgewell/trace-mapping': 0.3.17
- dev: true
-
- /@jridgewell/resolve-uri/3.1.0:
- resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==}
- engines: {node: '>=6.0.0'}
- dev: true
-
- /@jridgewell/set-array/1.1.2:
- resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
- engines: {node: '>=6.0.0'}
- dev: true
-
- /@jridgewell/source-map/0.3.2:
- resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==}
- dependencies:
- '@jridgewell/gen-mapping': 0.3.2
- '@jridgewell/trace-mapping': 0.3.17
- dev: true
-
- /@jridgewell/sourcemap-codec/1.4.14:
- resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==}
- dev: true
-
- /@jridgewell/trace-mapping/0.3.17:
- resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==}
- dependencies:
- '@jridgewell/resolve-uri': 3.1.0
- '@jridgewell/sourcemap-codec': 1.4.14
- dev: true
-
- /@jridgewell/trace-mapping/0.3.9:
- resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
- dependencies:
- '@jridgewell/resolve-uri': 3.1.0
- '@jridgewell/sourcemap-codec': 1.4.14
- dev: true
-
- /@loadable/component/5.15.2:
- resolution: {integrity: sha512-ryFAZOX5P2vFkUdzaAtTG88IGnr9qxSdvLRvJySXcUA4B4xVWurUNADu3AnKPksxOZajljqTrDEDcYjeL4lvLw==}
- engines: {node: '>=8'}
- peerDependencies:
- react: '>=16.3.0'
- dependencies:
- '@babel/runtime': 7.21.0
- hoist-non-react-statics: 3.3.2
- react-is: 16.13.1
- dev: true
-
- /@loadable/component/5.15.2_react@18.1.0:
- resolution: {integrity: sha512-ryFAZOX5P2vFkUdzaAtTG88IGnr9qxSdvLRvJySXcUA4B4xVWurUNADu3AnKPksxOZajljqTrDEDcYjeL4lvLw==}
- engines: {node: '>=8'}
- peerDependencies:
- react: '>=16.3.0'
- dependencies:
- '@babel/runtime': 7.21.0
- hoist-non-react-statics: 3.3.2
- react: 18.1.0
- react-is: 16.13.1
- dev: true
-
- /@makotot/ghostui/2.0.0:
- resolution: {integrity: sha512-LD6OeMv+yGjpYZNjh34yDTCIE1NegqOtJq5gm4wX6op3QL7K5psTVzMjkWzseBoYj0XOD4g+UJVIZTprfoOPGg==}
- engines: {node: '>=10'}
- peerDependencies:
- react: '>=16'
- dev: true
-
- /@nicolo-ribaudo/eslint-scope-5-internals/5.1.1-v1:
- resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==}
- dependencies:
- eslint-scope: 5.1.1
- dev: true
-
- /@nodelib/fs.scandir/2.1.5:
- resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
- engines: {node: '>= 8'}
- dependencies:
- '@nodelib/fs.stat': 2.0.5
- run-parallel: 1.2.0
- dev: true
-
- /@nodelib/fs.stat/2.0.5:
- resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
- engines: {node: '>= 8'}
- dev: true
-
- /@nodelib/fs.walk/1.2.8:
- resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
- engines: {node: '>= 8'}
- dependencies:
- '@nodelib/fs.scandir': 2.1.5
- fastq: 1.15.0
- dev: true
-
- /@pkgr/utils/2.3.1:
- resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==}
- engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
- dependencies:
- cross-spawn: 7.0.3
- is-glob: 4.0.3
- open: 8.4.2
- picocolors: 1.0.0
- tiny-glob: 0.2.9
- tslib: 2.5.0
- dev: true
-
- /@pmmmwh/react-refresh-webpack-plugin/0.5.10_react-refresh@0.14.0:
- resolution: {integrity: sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA==}
- engines: {node: '>= 10.13'}
- peerDependencies:
- '@types/webpack': 4.x || 5.x
- react-refresh: '>=0.10.0 <1.0.0'
- sockjs-client: ^1.4.0
- type-fest: '>=0.17.0 <4.0.0'
- webpack: '>=4.43.0 <6.0.0'
- webpack-dev-server: 3.x || 4.x
- webpack-hot-middleware: 2.x
- webpack-plugin-serve: 0.x || 1.x
- peerDependenciesMeta:
- '@types/webpack':
- optional: true
- sockjs-client:
- optional: true
- type-fest:
- optional: true
- webpack-dev-server:
- optional: true
- webpack-hot-middleware:
- optional: true
- webpack-plugin-serve:
- optional: true
- dependencies:
- ansi-html-community: 0.0.8
- common-path-prefix: 3.0.0
- core-js-pure: 3.29.0
- error-stack-parser: 2.1.4
- find-up: 5.0.0
- html-entities: 2.3.3
- loader-utils: 2.0.4
- react-refresh: 0.14.0
- schema-utils: 3.1.1
- source-map: 0.7.4
- dev: true
-
- /@selderee/plugin-htmlparser2/0.6.0:
- resolution: {integrity: sha512-J3jpy002TyBjd4N/p6s+s90eX42H2eRhK3SbsZuvTDv977/E8p2U3zikdiehyJja66do7FlxLomZLPlvl2/xaA==}
- dependencies:
- domhandler: 4.3.1
- selderee: 0.6.0
- dev: true
-
- /@sinclair/typebox/0.25.24:
- resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==}
- dev: true
-
- /@stackblitz/sdk/1.8.2:
- resolution: {integrity: sha512-3aTg0Tb9dNs1huPkpdYxPEX/yc8A28eZneUMOEJzOLi7EJwl5onr9gCAVjIOkN4WLYu1iBSiJiGBYT629bZIJQ==}
- dev: true
-
- /@stylelint/postcss-css-in-js/0.38.0_64375vj2stjdn6gyt55zwvoboa:
- resolution: {integrity: sha512-XOz5CAe49kS95p5yRd+DAIWDojTjfmyAQ4bbDlXMdbZTQ5t0ThjSLvWI6JI2uiS7MFurVBkZ6zUqcimzcLTBoQ==}
- deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
- peerDependencies:
- postcss: '>=7.0.0'
- postcss-syntax: '>=0.36.2'
- dependencies:
- '@babel/core': 7.21.0
- postcss: 8.4.21
- postcss-syntax: 0.36.2_postcss@8.4.21
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@svgr/babel-plugin-add-jsx-attribute/6.5.1_@babel+core@7.21.0:
- resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==}
- engines: {node: '>=10'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.21.0
- dev: true
-
- /@svgr/babel-plugin-remove-jsx-attribute/6.5.0_@babel+core@7.21.0:
- resolution: {integrity: sha512-8zYdkym7qNyfXpWvu4yq46k41pyNM9SOstoWhKlm+IfdCE1DdnRKeMUPsWIEO/DEkaWxJ8T9esNdG3QwQ93jBA==}
- engines: {node: '>=10'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.21.0
- dev: true
-
- /@svgr/babel-plugin-remove-jsx-empty-expression/6.5.0_@babel+core@7.21.0:
- resolution: {integrity: sha512-NFdxMq3xA42Kb1UbzCVxplUc0iqSyM9X8kopImvFnB+uSDdzIHOdbs1op8ofAvVRtbg4oZiyRl3fTYeKcOe9Iw==}
- engines: {node: '>=10'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.21.0
- dev: true
-
- /@svgr/babel-plugin-replace-jsx-attribute-value/6.5.1_@babel+core@7.21.0:
- resolution: {integrity: sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==}
- engines: {node: '>=10'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.21.0
- dev: true
-
- /@svgr/babel-plugin-svg-dynamic-title/6.5.1_@babel+core@7.21.0:
- resolution: {integrity: sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==}
- engines: {node: '>=10'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.21.0
- dev: true
-
- /@svgr/babel-plugin-svg-em-dimensions/6.5.1_@babel+core@7.21.0:
- resolution: {integrity: sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==}
- engines: {node: '>=10'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.21.0
- dev: true
-
- /@svgr/babel-plugin-transform-react-native-svg/6.5.1_@babel+core@7.21.0:
- resolution: {integrity: sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==}
- engines: {node: '>=10'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.21.0
- dev: true
-
- /@svgr/babel-plugin-transform-svg-component/6.5.1_@babel+core@7.21.0:
- resolution: {integrity: sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==}
- engines: {node: '>=12'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.21.0
- dev: true
-
- /@svgr/babel-preset/6.5.1_@babel+core@7.21.0:
- resolution: {integrity: sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==}
- engines: {node: '>=10'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.21.0
- '@svgr/babel-plugin-add-jsx-attribute': 6.5.1_@babel+core@7.21.0
- '@svgr/babel-plugin-remove-jsx-attribute': 6.5.0_@babel+core@7.21.0
- '@svgr/babel-plugin-remove-jsx-empty-expression': 6.5.0_@babel+core@7.21.0
- '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1_@babel+core@7.21.0
- '@svgr/babel-plugin-svg-dynamic-title': 6.5.1_@babel+core@7.21.0
- '@svgr/babel-plugin-svg-em-dimensions': 6.5.1_@babel+core@7.21.0
- '@svgr/babel-plugin-transform-react-native-svg': 6.5.1_@babel+core@7.21.0
- '@svgr/babel-plugin-transform-svg-component': 6.5.1_@babel+core@7.21.0
- dev: true
-
- /@svgr/core/6.5.1:
- resolution: {integrity: sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==}
- engines: {node: '>=10'}
- dependencies:
- '@babel/core': 7.21.0
- '@svgr/babel-preset': 6.5.1_@babel+core@7.21.0
- '@svgr/plugin-jsx': 6.5.1_@svgr+core@6.5.1
- camelcase: 6.3.0
- cosmiconfig: 7.1.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@svgr/hast-util-to-babel-ast/6.5.1:
- resolution: {integrity: sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==}
- engines: {node: '>=10'}
- dependencies:
- '@babel/types': 7.21.2
- entities: 4.4.0
- dev: true
-
- /@svgr/plugin-jsx/6.5.1_@svgr+core@6.5.1:
- resolution: {integrity: sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==}
- engines: {node: '>=10'}
- peerDependencies:
- '@svgr/core': ^6.0.0
- dependencies:
- '@babel/core': 7.21.0
- '@svgr/babel-preset': 6.5.1_@babel+core@7.21.0
- '@svgr/core': 6.5.1
- '@svgr/hast-util-to-babel-ast': 6.5.1
- svg-parser: 2.0.4
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@svgr/plugin-svgo/6.5.1_@svgr+core@6.5.1:
- resolution: {integrity: sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==}
- engines: {node: '>=10'}
- peerDependencies:
- '@svgr/core': '*'
- dependencies:
- '@svgr/core': 6.5.1
- cosmiconfig: 7.1.0
- deepmerge: 4.3.0
- svgo: 2.8.0
- dev: true
-
- /@swc/core-darwin-arm64/1.3.38:
- resolution: {integrity: sha512-4ZTJJ/cR0EsXW5UxFCifZoGfzQ07a8s4ayt1nLvLQ5QoB1GTAf9zsACpvWG8e7cmCR0L76R5xt8uJuyr+noIXA==}
- engines: {node: '>=10'}
- cpu: [arm64]
- os: [darwin]
- requiresBuild: true
- dev: true
- optional: true
-
- /@swc/core-darwin-x64/1.3.38:
- resolution: {integrity: sha512-Kim727rNo4Dl8kk0CR8aJQe4zFFtsT1TZGlNrNMUgN1WC3CRX7dLZ6ZJi/VVcTG1cbHp5Fp3mUzwHsMxEh87Mg==}
- engines: {node: '>=10'}
- cpu: [x64]
- os: [darwin]
- requiresBuild: true
- dev: true
- optional: true
-
- /@swc/core-linux-arm-gnueabihf/1.3.38:
- resolution: {integrity: sha512-yaRdnPNU2enlJDRcIMvYVSyodY+Amhf5QuXdUbAj6rkDD6wUs/s9C6yPYrFDmoTltrG+nBv72mUZj+R46wVfSw==}
- engines: {node: '>=10'}
- cpu: [arm]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@swc/core-linux-arm64-gnu/1.3.38:
- resolution: {integrity: sha512-iNY1HqKo/wBSu3QOGBUlZaLdBP/EHcwNjBAqIzpb8J64q2jEN02RizqVW0mDxyXktJ3lxr3g7VW9uqklMeXbjQ==}
- engines: {node: '>=10'}
- cpu: [arm64]
- os: [linux]
- libc: [glibc]
- requiresBuild: true
- dev: true
- optional: true
-
- /@swc/core-linux-arm64-musl/1.3.38:
- resolution: {integrity: sha512-LJCFgLZoPRkPCPmux+Q5ctgXRp6AsWhvWuY61bh5bIPBDlaG9pZk94DeHyvtiwT0syhTtXb2LieBOx6NqN3zeA==}
- engines: {node: '>=10'}
- cpu: [arm64]
- os: [linux]
- libc: [musl]
- requiresBuild: true
- dev: true
- optional: true
-
- /@swc/core-linux-x64-gnu/1.3.38:
- resolution: {integrity: sha512-hRQGRIWHmv2PvKQM/mMV45mVXckM2+xLB8TYLLgUG66mmtyGTUJPyxjnJkbI86WNGqo18k+lAuMG2mn6QmzYwQ==}
- engines: {node: '>=10'}
- cpu: [x64]
- os: [linux]
- libc: [glibc]
- requiresBuild: true
- dev: true
- optional: true
-
- /@swc/core-linux-x64-musl/1.3.38:
- resolution: {integrity: sha512-PTYSqtsIfPHLKDDNbueI5e0sc130vyHRiFOeeC6qqzA2FAiVvIxuvXHLr0soPvKAR1WyhtYmFB9QarcctemL2w==}
- engines: {node: '>=10'}
- cpu: [x64]
- os: [linux]
- libc: [musl]
- requiresBuild: true
- dev: true
- optional: true
-
- /@swc/core-win32-arm64-msvc/1.3.38:
- resolution: {integrity: sha512-9lHfs5TPNs+QdkyZFhZledSmzBEbqml/J1rqPSb9Fy8zB6QlspixE6OLZ3nTlUOdoGWkcTTdrOn77Sd7YGf1AA==}
- engines: {node: '>=10'}
- cpu: [arm64]
- os: [win32]
- requiresBuild: true
- dev: true
- optional: true
-
- /@swc/core-win32-ia32-msvc/1.3.38:
- resolution: {integrity: sha512-SbL6pfA2lqvDKnwTHwOfKWvfHAdcbAwJS4dBkFidr7BiPTgI5Uk8wAPcRb8mBECpmIa9yFo+N0cAFRvMnf+cNw==}
- engines: {node: '>=10'}
- cpu: [ia32]
- os: [win32]
- requiresBuild: true
- dev: true
- optional: true
-
- /@swc/core-win32-x64-msvc/1.3.38:
- resolution: {integrity: sha512-UFveLrL6eGvViOD8OVqUQa6QoQwdqwRvLtL5elF304OT8eCPZa8BhuXnWk25X8UcOyns8gFcb8Fhp3oaLi/Rlw==}
- engines: {node: '>=10'}
- cpu: [x64]
- os: [win32]
- requiresBuild: true
- dev: true
- optional: true
-
- /@swc/core/1.3.38:
- resolution: {integrity: sha512-AiEVehRFws//AiiLx9DPDp1WDXt+yAoGD1kMYewhoF6QLdTz8AtYu6i8j/yAxk26L8xnegy0CDwcNnub9qenyQ==}
- engines: {node: '>=10'}
- requiresBuild: true
- optionalDependencies:
- '@swc/core-darwin-arm64': 1.3.38
- '@swc/core-darwin-x64': 1.3.38
- '@swc/core-linux-arm-gnueabihf': 1.3.38
- '@swc/core-linux-arm64-gnu': 1.3.38
- '@swc/core-linux-arm64-musl': 1.3.38
- '@swc/core-linux-x64-gnu': 1.3.38
- '@swc/core-linux-x64-musl': 1.3.38
- '@swc/core-win32-arm64-msvc': 1.3.38
- '@swc/core-win32-ia32-msvc': 1.3.38
- '@swc/core-win32-x64-msvc': 1.3.38
- dev: true
-
- /@trysound/sax/0.2.0:
- resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
- engines: {node: '>=10.13.0'}
- dev: true
-
- /@tsconfig/node10/1.0.9:
- resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==}
- dev: true
-
- /@tsconfig/node12/1.0.11:
- resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==}
- dev: true
-
- /@tsconfig/node14/1.0.3:
- resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==}
- dev: true
-
- /@tsconfig/node16/1.0.3:
- resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==}
- dev: true
-
- /@types/babel__core/7.20.0:
- resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==}
- dependencies:
- '@babel/parser': 7.21.2
- '@babel/types': 7.21.2
- '@types/babel__generator': 7.6.4
- '@types/babel__template': 7.4.1
- '@types/babel__traverse': 7.18.3
- dev: true
-
- /@types/babel__generator/7.6.4:
- resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==}
- dependencies:
- '@babel/types': 7.21.2
- dev: true
-
- /@types/babel__template/7.4.1:
- resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==}
- dependencies:
- '@babel/parser': 7.21.2
- '@babel/types': 7.21.2
- dev: true
-
- /@types/babel__traverse/7.18.3:
- resolution: {integrity: sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==}
- dependencies:
- '@babel/types': 7.21.2
- dev: true
-
- /@types/debug/4.1.7:
- resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==}
- dependencies:
- '@types/ms': 0.7.31
- dev: true
-
- /@types/estree-jsx/1.0.0:
- resolution: {integrity: sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==}
- dependencies:
- '@types/estree': 1.0.0
- dev: true
-
- /@types/estree/1.0.0:
- resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==}
- dev: true
-
- /@types/graceful-fs/4.1.6:
- resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==}
- dependencies:
- '@types/node': 18.14.6
- dev: true
-
- /@types/hapi__joi/17.1.9:
- resolution: {integrity: sha512-oOMFT8vmCTFncsF1engrs04jatz8/Anwx3De9uxnOK4chgSEgWBvFtpSoJo8u3784JNO+ql5tzRR6phHoRnscQ==}
- dev: true
-
- /@types/hast/2.3.4:
- resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==}
- dependencies:
- '@types/unist': 2.0.6
- dev: true
-
- /@types/hoist-non-react-statics/3.3.1:
- resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==}
- dependencies:
- '@types/react': 18.0.28
- hoist-non-react-statics: 3.3.2
- dev: true
-
- /@types/html-minifier-terser/6.1.0:
- resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==}
- dev: true
-
- /@types/istanbul-lib-coverage/2.0.4:
- resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==}
- dev: true
-
- /@types/istanbul-lib-report/3.0.0:
- resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==}
- dependencies:
- '@types/istanbul-lib-coverage': 2.0.4
- dev: true
-
- /@types/istanbul-reports/3.0.1:
- resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==}
- dependencies:
- '@types/istanbul-lib-report': 3.0.0
- dev: true
-
- /@types/json-schema/7.0.11:
- resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==}
- dev: true
-
- /@types/keyv/3.1.4:
- resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
- dependencies:
- '@types/node': 18.14.6
- dev: true
-
- /@types/mdast/3.0.10:
- resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==}
- dependencies:
- '@types/unist': 2.0.6
- dev: true
-
- /@types/minimist/1.2.2:
- resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==}
- dev: true
-
- /@types/ms/0.7.31:
- resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==}
- dev: true
-
- /@types/node/17.0.45:
- resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
- dev: true
-
- /@types/node/18.14.6:
- resolution: {integrity: sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==}
- dev: true
-
- /@types/normalize-package-data/2.4.1:
- resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==}
- dev: true
-
- /@types/parse-json/4.0.0:
- resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==}
- dev: true
-
- /@types/parse5/6.0.3:
- resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==}
- dev: true
-
- /@types/prop-types/15.7.5:
- resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==}
- dev: true
-
- /@types/react/18.0.28:
- resolution: {integrity: sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==}
- dependencies:
- '@types/prop-types': 15.7.5
- '@types/scheduler': 0.16.2
- csstype: 3.1.1
- dev: true
-
- /@types/responselike/1.0.0:
- resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==}
- dependencies:
- '@types/node': 18.14.6
- dev: true
-
- /@types/sax/1.2.4:
- resolution: {integrity: sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==}
- dependencies:
- '@types/node': 17.0.45
- dev: true
-
- /@types/scheduler/0.16.2:
- resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==}
- dev: true
-
- /@types/semver/7.3.13:
- resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==}
- dev: true
-
- /@types/unist/2.0.6:
- resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==}
- dev: true
-
- /@types/yargs-parser/21.0.0:
- resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==}
- dev: true
-
- /@types/yargs/16.0.5:
- resolution: {integrity: sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==}
- dependencies:
- '@types/yargs-parser': 21.0.0
- dev: true
-
- /@types/yargs/17.0.22:
- resolution: {integrity: sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g==}
- dependencies:
- '@types/yargs-parser': 21.0.0
- dev: true
-
- /@typescript-eslint/eslint-plugin/5.48.1_ff6kholja5d6imsya23e5hvkwa:
- resolution: {integrity: sha512-9nY5K1Rp2ppmpb9s9S2aBiF3xo5uExCehMDmYmmFqqyxgenbHJ3qbarcLt4ITgaD6r/2ypdlcFRdcuVPnks+fQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- '@typescript-eslint/parser': ^5.0.0
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
- dependencies:
- '@typescript-eslint/parser': 5.48.1
- '@typescript-eslint/scope-manager': 5.48.1
- '@typescript-eslint/type-utils': 5.48.1
- '@typescript-eslint/utils': 5.48.1
- debug: 4.3.4
- ignore: 5.2.4
- natural-compare-lite: 1.4.0
- regexpp: 3.2.0
- semver: 7.3.8
- tsutils: 3.21.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@typescript-eslint/parser/5.48.1:
- resolution: {integrity: sha512-4yg+FJR/V1M9Xoq56SF9Iygqm+r5LMXvheo6DQ7/yUWynQ4YfCRnsKuRgqH4EQ5Ya76rVwlEpw4Xu+TgWQUcdA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
- dependencies:
- '@typescript-eslint/scope-manager': 5.48.1
- '@typescript-eslint/types': 5.48.1
- '@typescript-eslint/typescript-estree': 5.48.1
- debug: 4.3.4
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@typescript-eslint/scope-manager/5.48.1:
- resolution: {integrity: sha512-S035ueRrbxRMKvSTv9vJKIWgr86BD8s3RqoRZmsSh/s8HhIs90g6UlK8ZabUSjUZQkhVxt7nmZ63VJ9dcZhtDQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dependencies:
- '@typescript-eslint/types': 5.48.1
- '@typescript-eslint/visitor-keys': 5.48.1
- dev: true
-
- /@typescript-eslint/scope-manager/5.54.1:
- resolution: {integrity: sha512-zWKuGliXxvuxyM71UA/EcPxaviw39dB2504LqAmFDjmkpO8qNLHcmzlh6pbHs1h/7YQ9bnsO8CCcYCSA8sykUg==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dependencies:
- '@typescript-eslint/types': 5.54.1
- '@typescript-eslint/visitor-keys': 5.54.1
- dev: true
-
- /@typescript-eslint/type-utils/5.48.1:
- resolution: {integrity: sha512-Hyr8HU8Alcuva1ppmqSYtM/Gp0q4JOp1F+/JH5D1IZm/bUBrV0edoewQZiEc1r6I8L4JL21broddxK8HAcZiqQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: '*'
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
- dependencies:
- '@typescript-eslint/typescript-estree': 5.48.1
- '@typescript-eslint/utils': 5.48.1
- debug: 4.3.4
- tsutils: 3.21.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@typescript-eslint/types/5.48.1:
- resolution: {integrity: sha512-xHyDLU6MSuEEdIlzrrAerCGS3T7AA/L8Hggd0RCYBi0w3JMvGYxlLlXHeg50JI9Tfg5MrtsfuNxbS/3zF1/ATg==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dev: true
-
- /@typescript-eslint/types/5.54.1:
- resolution: {integrity: sha512-G9+1vVazrfAfbtmCapJX8jRo2E4MDXxgm/IMOF4oGh3kq7XuK3JRkOg6y2Qu1VsTRmWETyTkWt1wxy7X7/yLkw==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dev: true
-
- /@typescript-eslint/typescript-estree/5.48.1:
- resolution: {integrity: sha512-Hut+Osk5FYr+sgFh8J/FHjqX6HFcDzTlWLrFqGoK5kVUN3VBHF/QzZmAsIXCQ8T/W9nQNBTqalxi1P3LSqWnRA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
- dependencies:
- '@typescript-eslint/types': 5.48.1
- '@typescript-eslint/visitor-keys': 5.48.1
- debug: 4.3.4
- globby: 11.1.0
- is-glob: 4.0.3
- semver: 7.3.8
- tsutils: 3.21.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@typescript-eslint/typescript-estree/5.54.1:
- resolution: {integrity: sha512-bjK5t+S6ffHnVwA0qRPTZrxKSaFYocwFIkZx5k7pvWfsB1I57pO/0M0Skatzzw1sCkjJ83AfGTL0oFIFiDX3bg==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
- dependencies:
- '@typescript-eslint/types': 5.54.1
- '@typescript-eslint/visitor-keys': 5.54.1
- debug: 4.3.4
- globby: 11.1.0
- is-glob: 4.0.3
- semver: 7.3.8
- tsutils: 3.21.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@typescript-eslint/utils/5.48.1:
- resolution: {integrity: sha512-SmQuSrCGUOdmGMwivW14Z0Lj8dxG1mOFZ7soeJ0TQZEJcs3n5Ndgkg0A4bcMFzBELqLJ6GTHnEU+iIoaD6hFGA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
- dependencies:
- '@types/json-schema': 7.0.11
- '@types/semver': 7.3.13
- '@typescript-eslint/scope-manager': 5.48.1
- '@typescript-eslint/types': 5.48.1
- '@typescript-eslint/typescript-estree': 5.48.1
- eslint-scope: 5.1.1
- eslint-utils: 3.0.0
- semver: 7.3.8
- transitivePeerDependencies:
- - supports-color
- - typescript
- dev: true
-
- /@typescript-eslint/utils/5.54.1:
- resolution: {integrity: sha512-IY5dyQM8XD1zfDe5X8jegX6r2EVU5o/WJnLu/znLPWCBF7KNGC+adacXnt5jEYS9JixDcoccI6CvE4RCjHMzCQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
- dependencies:
- '@types/json-schema': 7.0.11
- '@types/semver': 7.3.13
- '@typescript-eslint/scope-manager': 5.54.1
- '@typescript-eslint/types': 5.54.1
- '@typescript-eslint/typescript-estree': 5.54.1
- eslint-scope: 5.1.1
- eslint-utils: 3.0.0
- semver: 7.3.8
- transitivePeerDependencies:
- - supports-color
- - typescript
- dev: true
-
- /@typescript-eslint/visitor-keys/5.48.1:
- resolution: {integrity: sha512-Ns0XBwmfuX7ZknznfXozgnydyR8F6ev/KEGePP4i74uL3ArsKbEhJ7raeKr1JSa997DBDwol/4a0Y+At82c9dA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dependencies:
- '@typescript-eslint/types': 5.48.1
- eslint-visitor-keys: 3.3.0
- dev: true
-
- /@typescript-eslint/visitor-keys/5.54.1:
- resolution: {integrity: sha512-q8iSoHTgwCfgcRJ2l2x+xCbu8nBlRAlsQ33k24Adj8eoVBE0f8dUeI+bAa8F84Mv05UGbAx57g2zrRsYIooqQg==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dependencies:
- '@typescript-eslint/types': 5.54.1
- eslint-visitor-keys: 3.3.0
- dev: true
-
- /@umijs/ast/4.0.56:
- resolution: {integrity: sha512-d5q9wYv6kNHF3vWD9Cmpvbpbq30rhR7W0sXVSCdxcwbq9cDggczGtV9d4wnrzrBS9f+XbkW3QIkqcfCQKBXAWw==}
- dependencies:
- '@umijs/bundler-utils': 4.0.56
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@umijs/babel-preset-umi/4.0.56:
- resolution: {integrity: sha512-6Gx1F0yYss52zDK1Q7T+OZNFR+n9sB5EJ4PxJSh58vFWGJ66cy/TiPekUe2a8o2up0p2+3VTT/mxr4J+rPJnmA==}
- dependencies:
- '@babel/runtime': 7.21.0
- '@bloomberg/record-tuple-polyfill': 0.0.4
- '@umijs/bundler-utils': 4.0.56
- '@umijs/utils': 4.0.56
- babel-plugin-styled-components: 2.0.7
- core-js: 3.28.0
- transitivePeerDependencies:
- - styled-components
- - supports-color
- dev: true
-
- /@umijs/bundler-esbuild/4.0.56:
- resolution: {integrity: sha512-ARNw7oZI1y3clZ9kdIDZDryLEcnXuJvHxOng/HSWQGxzbrtKgFPuzzGqme/H37a73v3cDpjXiQ06dVgd5OOSSw==}
- hasBin: true
- dependencies:
- '@umijs/bundler-utils': 4.0.56
- '@umijs/utils': 4.0.56
- enhanced-resolve: 5.9.3
- postcss: 8.4.21
- postcss-flexbugs-fixes: 5.0.2_postcss@8.4.21
- postcss-preset-env: 7.5.0_postcss@8.4.21
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@umijs/bundler-utils/4.0.56:
- resolution: {integrity: sha512-PpMTUfNZFqIBvHwGDVqWj0OKHvK9+wq5ke0t/W6I96mLru1Ic+42HfnKppariXwtxQLjsVuSIFUEyarelO4RuA==}
- dependencies:
- '@umijs/utils': 4.0.56
- esbuild: 0.16.17
- regenerate: 1.4.2
- regenerate-unicode-properties: 10.1.0
- spdy: 4.0.2
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@umijs/bundler-vite/4.0.56_sass@1.58.3:
- resolution: {integrity: sha512-hFbldnkwN+irY/uLWxFxlMluKWYQhbjLdHU0Kb6sf3XwEHpCYe4mgT0Ftuz26xJ6e5I3LsTYhnNs+x16nm6lWw==}
- hasBin: true
- dependencies:
- '@svgr/core': 6.5.1
- '@umijs/bundler-utils': 4.0.56
- '@umijs/utils': 4.0.56
- '@vitejs/plugin-react': 3.1.0_vite@4.1.4
- less: 4.1.3
- postcss-preset-env: 7.5.0
- rollup-plugin-visualizer: 5.9.0
- vite: 4.1.4_less@4.1.3+sass@1.58.3
- transitivePeerDependencies:
- - '@types/node'
- - postcss
- - rollup
- - sass
- - stylus
- - sugarss
- - supports-color
- - terser
- dev: true
-
- /@umijs/bundler-webpack/4.0.56:
- resolution: {integrity: sha512-kA1GYQqJrwQdjcWG4FGrT78YLSbZNW+Z1SrrYA7IizmQfmQ4mAiqa1esW6vJBvvFbtwDXbN6NDVVw+M09B5cmA==}
- hasBin: true
- dependencies:
- '@pmmmwh/react-refresh-webpack-plugin': 0.5.10_react-refresh@0.14.0
- '@svgr/core': 6.5.1
- '@svgr/plugin-jsx': 6.5.1_@svgr+core@6.5.1
- '@svgr/plugin-svgo': 6.5.1_@svgr+core@6.5.1
- '@types/hapi__joi': 17.1.9
- '@umijs/babel-preset-umi': 4.0.56
- '@umijs/bundler-utils': 4.0.56
- '@umijs/case-sensitive-paths-webpack-plugin': 1.0.1
- '@umijs/mfsu': 4.0.56
- '@umijs/utils': 4.0.56
- cors: 2.8.5
- css-loader: 6.7.1
- es5-imcompatible-versions: 0.1.80
- fork-ts-checker-webpack-plugin: 7.3.0
- jest-worker: 29.4.3
- lightningcss: 1.19.0
- node-libs-browser: 2.2.1
- postcss: 8.4.21
- postcss-preset-env: 7.5.0_postcss@8.4.21
- react-error-overlay: 6.0.9
- react-refresh: 0.14.0
- transitivePeerDependencies:
- - '@types/webpack'
- - sockjs-client
- - styled-components
- - supports-color
- - type-fest
- - typescript
- - vue-template-compiler
- - webpack
- - webpack-dev-server
- - webpack-hot-middleware
- - webpack-plugin-serve
- dev: true
-
- /@umijs/case-sensitive-paths-webpack-plugin/1.0.1:
- resolution: {integrity: sha512-kDKJ8yTarxwxGJDInG33hOpaQRZ//XpNuuznQ/1Mscypw6kappzFmrBr2dOYave++K7JHouoANF354UpbEQw0Q==}
- dev: true
-
- /@umijs/core/4.0.56:
- resolution: {integrity: sha512-nn2rVx9BNB0ELxcdutspfYVOytAhwztXwAiYeZdyvyHwkfNb2yV8qXNcZQ2BAXbIATYfdB2LfP0UCWuR3Zm26Q==}
- dependencies:
- '@umijs/bundler-utils': 4.0.56
- '@umijs/utils': 4.0.56
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@umijs/did-you-know/1.0.3:
- resolution: {integrity: sha512-9EZ+rgY9+2HEaE+Z9dGkal2ccw8L4uuz77tCB5WpskW7NBZX5nOj82sqF/shEtA5tU3SWO/Mi4n35K3iONvDtw==}
- dev: true
-
- /@umijs/history/5.3.1:
- resolution: {integrity: sha512-/e0cEGrR2bIWQD7pRl3dl9dcyRGeC9hoW0OCvUTT/hjY0EfUrkd6G8ZanVghPMpDuY5usxq9GVcvrT8KNXLWvA==}
- dependencies:
- '@babel/runtime': 7.21.0
- query-string: 6.14.1
- dev: true
-
- /@umijs/lint/4.0.56:
- resolution: {integrity: sha512-S7YPkZsjNlWxmn5Au+kV8zPm1QqDjTguqcIr1Mqhy1RD9VUDiXuYTLV/c8odJPGV2w2dsj5AceQRDCM1kUrlcQ==}
- dependencies:
- '@babel/core': 7.21.0
- '@babel/eslint-parser': 7.19.1_@babel+core@7.21.0
- '@stylelint/postcss-css-in-js': 0.38.0_64375vj2stjdn6gyt55zwvoboa
- '@typescript-eslint/eslint-plugin': 5.48.1_ff6kholja5d6imsya23e5hvkwa
- '@typescript-eslint/parser': 5.48.1
- '@umijs/babel-preset-umi': 4.0.56
- eslint-plugin-jest: 27.2.1_apye5qsnfu746srftsectb2ws4
- eslint-plugin-react: 7.32.2
- eslint-plugin-react-hooks: 4.6.0
- postcss: 8.4.21
- postcss-syntax: 0.36.2_postcss@8.4.21
- stylelint-config-standard: 25.0.0
- transitivePeerDependencies:
- - eslint
- - jest
- - postcss-html
- - postcss-jsx
- - postcss-less
- - postcss-markdown
- - postcss-scss
- - styled-components
- - stylelint
- - supports-color
- - typescript
- dev: true
-
- /@umijs/mfsu/4.0.56:
- resolution: {integrity: sha512-dPMQbtYkAJJC/NP5f/TfTxyinvJfk88FU88mmIM1MsXmxypl1WY5hXGSmmETy4HlCOL8xZcJ7XUJNBzd51glyg==}
- dependencies:
- '@umijs/bundler-esbuild': 4.0.56
- '@umijs/bundler-utils': 4.0.56
- '@umijs/utils': 4.0.56
- enhanced-resolve: 5.9.3
- is-equal: 1.6.4
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@umijs/plugin-run/4.0.56:
- resolution: {integrity: sha512-5ctsqW44bl2+uFnR7Zh+DOUUHUMS9ZMDNi11tDf9x4ekkWkwXT0iajIPghcMXUUadlwigTrPQZJAhPUoiNaVTw==}
- dependencies:
- tsx: 3.12.3
- dev: true
-
- /@umijs/preset-umi/4.0.56_sass@1.58.3:
- resolution: {integrity: sha512-5ly4QRoQPpd7/kWMMK2OhhakNOlyWBup4YZnDWaByB5s3T/aoqPk4yMoR/upUTgFVFOfrCOuFeuBqZGI9u1BGQ==}
- dependencies:
- '@iconify/utils': 2.1.1
- '@svgr/core': 6.5.1
- '@umijs/ast': 4.0.56
- '@umijs/babel-preset-umi': 4.0.56
- '@umijs/bundler-utils': 4.0.56
- '@umijs/bundler-vite': 4.0.56_sass@1.58.3
- '@umijs/bundler-webpack': 4.0.56
- '@umijs/core': 4.0.56
- '@umijs/did-you-know': 1.0.3
- '@umijs/history': 5.3.1
- '@umijs/mfsu': 4.0.56
- '@umijs/plugin-run': 4.0.56
- '@umijs/renderer-react': 4.0.56_ef5jwxihqo6n7gxfmzogljlgcm
- '@umijs/server': 4.0.56
- '@umijs/utils': 4.0.56
- babel-plugin-dynamic-import-node: 2.3.3
- click-to-react-component: 1.0.8_ef5jwxihqo6n7gxfmzogljlgcm
- core-js: 3.28.0
- current-script-polyfill: 1.0.0
- enhanced-resolve: 5.9.3
- fast-glob: 3.2.12
- html-webpack-plugin: 5.5.0
- path-to-regexp: 1.7.0
- postcss-prefix-selector: 1.16.0
- react: 18.1.0
- react-dom: 18.1.0_react@18.1.0
- react-router: 6.3.0_react@18.1.0
- react-router-dom: 6.3.0_ef5jwxihqo6n7gxfmzogljlgcm
- regenerator-runtime: 0.13.11
- transitivePeerDependencies:
- - '@types/node'
- - '@types/react'
- - '@types/webpack'
- - postcss
- - rollup
- - sass
- - sockjs-client
- - styled-components
- - stylus
- - sugarss
- - supports-color
- - terser
- - type-fest
- - typescript
- - vue-template-compiler
- - webpack
- - webpack-dev-server
- - webpack-hot-middleware
- - webpack-plugin-serve
- dev: true
-
- /@umijs/renderer-react/4.0.56:
- resolution: {integrity: sha512-H4guinUv85t8OZ4gpihIX6XFkU2nojrpVhsQ+OS6Z7zLrGwbUJMyMf9M7rvsRoQDirPBLnsXf4vKllIaFLpbVw==}
- peerDependencies:
- react: '>=16.8'
- react-dom: '>=16.8'
- dependencies:
- '@babel/runtime': 7.21.0
- '@loadable/component': 5.15.2
- history: 5.3.0
- react-helmet-async: 1.3.0
- react-router-dom: 6.3.0
- dev: true
-
- /@umijs/renderer-react/4.0.56_ef5jwxihqo6n7gxfmzogljlgcm:
- resolution: {integrity: sha512-H4guinUv85t8OZ4gpihIX6XFkU2nojrpVhsQ+OS6Z7zLrGwbUJMyMf9M7rvsRoQDirPBLnsXf4vKllIaFLpbVw==}
- peerDependencies:
- react: '>=16.8'
- react-dom: '>=16.8'
- dependencies:
- '@babel/runtime': 7.21.0
- '@loadable/component': 5.15.2_react@18.1.0
- history: 5.3.0
- react: 18.1.0
- react-dom: 18.1.0_react@18.1.0
- react-helmet-async: 1.3.0_ef5jwxihqo6n7gxfmzogljlgcm
- react-router-dom: 6.3.0_ef5jwxihqo6n7gxfmzogljlgcm
- dev: true
-
- /@umijs/server/4.0.56:
- resolution: {integrity: sha512-ncXGE0adweRrJmA5CHnjdVOkkz3KyARaU1BNU3suIQGd74ZnDfgfBNXXnvqYg6qdxfzLDutHZSB6DDXTY9+r/A==}
- dependencies:
- '@umijs/bundler-utils': 4.0.56
- history: 5.3.0
- react: 18.1.0
- react-dom: 18.1.0_react@18.1.0
- react-router-dom: 6.3.0_ef5jwxihqo6n7gxfmzogljlgcm
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@umijs/test/4.0.56:
- resolution: {integrity: sha512-ta13Gl2+bltqjrZudCaIbITcz8UzDgCL4QHf/7OxyJ/pDgtm3daEGRJb1Tf2odSYvOf+Uqlw2AQmn7uTU15x+g==}
- dependencies:
- '@babel/plugin-transform-modules-commonjs': 7.21.2
- '@jest/types': 27.5.1
- '@umijs/bundler-utils': 4.0.56
- '@umijs/utils': 4.0.56
- babel-jest: 29.5.0
- esbuild: 0.16.17
- identity-obj-proxy: 3.0.0
- isomorphic-unfetch: 4.0.2
- transitivePeerDependencies:
- - '@babel/core'
- - supports-color
- dev: true
-
- /@umijs/utils/4.0.56:
- resolution: {integrity: sha512-tc5yZ9AI3wBSNgRKEhCu8spM4sWyDl5XW+4cJUZ3V1QVeuG7IytFkSvvdxrF+SIFA4Qm2dbqumsarM3ZSB+Z3A==}
- dependencies:
- chokidar: 3.5.3
- pino: 7.11.0
- dev: true
-
- /@vitejs/plugin-react/3.1.0_vite@4.1.4:
- resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==}
- engines: {node: ^14.18.0 || >=16.0.0}
- peerDependencies:
- vite: ^4.1.0-beta.0
- dependencies:
- '@babel/core': 7.21.0
- '@babel/plugin-transform-react-jsx-self': 7.21.0_@babel+core@7.21.0
- '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.21.0
- magic-string: 0.27.0
- react-refresh: 0.14.0
- vite: 4.1.4_less@4.1.3+sass@1.58.3
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /JSONStream/1.3.5:
- resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==}
- hasBin: true
- dependencies:
- jsonparse: 1.3.1
- through: 2.3.8
- dev: true
-
- /acorn-walk/8.2.0:
- resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==}
- engines: {node: '>=0.4.0'}
- dev: true
-
- /acorn/8.8.2:
- resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==}
- engines: {node: '>=0.4.0'}
- hasBin: true
- dev: true
-
- /agent-base/4.3.0:
- resolution: {integrity: sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==}
- engines: {node: '>= 4.0.0'}
- dependencies:
- es6-promisify: 5.0.0
- dev: true
-
- /agentkeepalive/3.5.2:
- resolution: {integrity: sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==}
- engines: {node: '>= 4.0.0'}
- dependencies:
- humanize-ms: 1.2.1
- dev: true
-
- /aggregate-error/3.1.0:
- resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
- engines: {node: '>=8'}
- dependencies:
- clean-stack: 2.2.0
- indent-string: 4.0.0
- dev: true
-
- /ajv-keywords/3.5.2_ajv@6.12.6:
- resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==}
- peerDependencies:
- ajv: ^6.9.1
- dependencies:
- ajv: 6.12.6
- dev: true
-
- /ajv/6.12.6:
- resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
- dependencies:
- fast-deep-equal: 3.1.3
- fast-json-stable-stringify: 2.1.0
- json-schema-traverse: 0.4.1
- uri-js: 4.4.1
- dev: true
-
- /ajv/8.12.0:
- resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==}
- dependencies:
- fast-deep-equal: 3.1.3
- json-schema-traverse: 1.0.0
- require-from-string: 2.0.2
- uri-js: 4.4.1
- dev: true
-
- /animated-scroll-to/2.3.0:
- resolution: {integrity: sha512-PT/5MSKCWQaK2kuOl2HT2KJMuJEvUS4/TgMhWy82c2EmF74/CIkvPBPKOvd8nMYP6Higo7xCn49/iSW9BccMoQ==}
- dev: true
-
- /ansi-align/2.0.0:
- resolution: {integrity: sha512-TdlOggdA/zURfMYa7ABC66j+oqfMew58KpJMbUlH3bcZP1b+cBHIHDDn5uH9INsxrHBPjsqM0tDB4jPTF/vgJA==}
- dependencies:
- string-width: 2.1.1
- dev: true
-
- /ansi-escapes/3.2.0:
- resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==}
- engines: {node: '>=4'}
- dev: true
-
- /ansi-escapes/4.3.2:
- resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
- engines: {node: '>=8'}
- dependencies:
- type-fest: 0.21.3
- dev: true
-
- /ansi-html-community/0.0.8:
- resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==}
- engines: {'0': node >= 0.8.0}
- hasBin: true
- dev: true
-
- /ansi-regex/3.0.1:
- resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==}
- engines: {node: '>=4'}
- dev: true
-
- /ansi-regex/4.1.1:
- resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==}
- engines: {node: '>=6'}
- dev: true
-
- /ansi-regex/5.0.1:
- resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
- engines: {node: '>=8'}
- dev: true
-
- /ansi-regex/6.0.1:
- resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
- engines: {node: '>=12'}
- dev: true
-
- /ansi-styles/3.2.1:
- resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
- engines: {node: '>=4'}
- dependencies:
- color-convert: 1.9.3
- dev: true
-
- /ansi-styles/4.3.0:
- resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
- engines: {node: '>=8'}
- dependencies:
- color-convert: 2.0.1
- dev: true
-
- /ansi-styles/6.2.1:
- resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
- engines: {node: '>=12'}
- dev: true
-
- /anymatch/3.1.3:
- resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
- engines: {node: '>= 8'}
- dependencies:
- normalize-path: 3.0.0
- picomatch: 2.3.1
- dev: true
-
- /aproba/1.2.0:
- resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==}
- dev: true
-
- /arg/4.1.3:
- resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
- dev: true
-
- /arg/5.0.2:
- resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
- dev: true
-
- /argparse/1.0.10:
- resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
- dependencies:
- sprintf-js: 1.0.3
- dev: true
-
- /argparse/2.0.1:
- resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
- dev: true
-
- /aria-hidden/1.2.3:
- resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==}
- engines: {node: '>=10'}
- dependencies:
- tslib: 2.5.0
- dev: true
-
- /array-ify/1.0.0:
- resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==}
- dev: true
-
- /array-includes/3.1.6:
- resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.2
- define-properties: 1.2.0
- es-abstract: 1.21.1
- get-intrinsic: 1.2.0
- is-string: 1.0.7
- dev: true
-
- /array-union/1.0.2:
- resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==}
- engines: {node: '>=0.10.0'}
- dependencies:
- array-uniq: 1.0.3
- dev: true
-
- /array-union/2.1.0:
- resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
- engines: {node: '>=8'}
- dev: true
-
- /array-uniq/1.0.3:
- resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /array.prototype.flatmap/1.3.1:
- resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.2
- define-properties: 1.2.0
- es-abstract: 1.21.1
- es-shim-unscopables: 1.0.0
- dev: true
-
- /array.prototype.tosorted/1.1.1:
- resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==}
- dependencies:
- call-bind: 1.0.2
- define-properties: 1.2.0
- es-abstract: 1.21.1
- es-shim-unscopables: 1.0.0
- get-intrinsic: 1.2.0
- dev: true
-
- /arrify/1.0.1:
- resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /asn1.js/5.4.1:
- resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==}
- dependencies:
- bn.js: 4.12.0
- inherits: 2.0.4
- minimalistic-assert: 1.0.1
- safer-buffer: 2.1.2
- dev: true
-
- /assert/1.5.0:
- resolution: {integrity: sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==}
- dependencies:
- object-assign: 4.1.1
- util: 0.10.3
- dev: true
-
- /astral-regex/2.0.0:
- resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==}
- engines: {node: '>=8'}
- dev: true
-
- /astring/1.8.4:
- resolution: {integrity: sha512-97a+l2LBU3Op3bBQEff79i/E4jMD2ZLFD8rHx9B6mXyB2uQwhJQYfiDqUwtfjF4QA1F2qs//N6Cw8LetMbQjcw==}
- hasBin: true
- dev: true
-
- /async/2.6.4:
- resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==}
- dependencies:
- lodash: 4.17.21
- dev: true
-
- /atomic-sleep/1.0.0:
- resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==}
- engines: {node: '>=8.0.0'}
- dev: true
-
- /autoprefixer/10.4.13:
- resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==}
- engines: {node: ^10 || ^12 || >=14}
- hasBin: true
- peerDependencies:
- postcss: ^8.1.0
- dependencies:
- browserslist: 4.21.5
- caniuse-lite: 1.0.30001462
- fraction.js: 4.2.0
- normalize-range: 0.1.2
- picocolors: 1.0.0
- postcss-value-parser: 4.2.0
- dev: true
-
- /autoprefixer/10.4.13_postcss@8.4.21:
- resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==}
- engines: {node: ^10 || ^12 || >=14}
- hasBin: true
- peerDependencies:
- postcss: ^8.1.0
- dependencies:
- browserslist: 4.21.5
- caniuse-lite: 1.0.30001462
- fraction.js: 4.2.0
- normalize-range: 0.1.2
- picocolors: 1.0.0
- postcss: 8.4.21
- postcss-value-parser: 4.2.0
- dev: true
-
- /available-typed-arrays/1.0.5:
- resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
- engines: {node: '>= 0.4'}
- dev: true
-
- /axios/0.18.1:
- resolution: {integrity: sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==}
- deprecated: Critical security vulnerability fixed in v0.21.1. For more information, see https://github.com/axios/axios/pull/3410
- dependencies:
- follow-redirects: 1.5.10
- is-buffer: 2.0.5
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /babel-jest/29.5.0:
- resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- peerDependencies:
- '@babel/core': ^7.8.0
- dependencies:
- '@jest/transform': 29.5.0
- '@types/babel__core': 7.20.0
- babel-plugin-istanbul: 6.1.1
- babel-preset-jest: 29.5.0
- chalk: 4.1.2
- graceful-fs: 4.2.10
- slash: 3.0.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /babel-plugin-dynamic-import-node/2.3.3:
- resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==}
- dependencies:
- object.assign: 4.1.4
- dev: true
-
- /babel-plugin-istanbul/6.1.1:
- resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==}
- engines: {node: '>=8'}
- dependencies:
- '@babel/helper-plugin-utils': 7.20.2
- '@istanbuljs/load-nyc-config': 1.1.0
- '@istanbuljs/schema': 0.1.3
- istanbul-lib-instrument: 5.2.1
- test-exclude: 6.0.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /babel-plugin-jest-hoist/29.5.0:
- resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@babel/template': 7.20.7
- '@babel/types': 7.21.2
- '@types/babel__core': 7.20.0
- '@types/babel__traverse': 7.18.3
- dev: true
-
- /babel-plugin-styled-components/2.0.7:
- resolution: {integrity: sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==}
- peerDependencies:
- styled-components: '>= 2'
- dependencies:
- '@babel/helper-annotate-as-pure': 7.18.6
- '@babel/helper-module-imports': 7.18.6
- babel-plugin-syntax-jsx: 6.18.0
- lodash: 4.17.21
- picomatch: 2.3.1
- dev: true
-
- /babel-plugin-syntax-jsx/6.18.0:
- resolution: {integrity: sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==}
- dev: true
-
- /babel-preset-current-node-syntax/1.0.1:
- resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==}
- peerDependencies:
- '@babel/core': ^7.0.0
- dependencies:
- '@babel/plugin-syntax-async-generators': 7.8.4
- '@babel/plugin-syntax-bigint': 7.8.3
- '@babel/plugin-syntax-class-properties': 7.12.13
- '@babel/plugin-syntax-import-meta': 7.10.4
- '@babel/plugin-syntax-json-strings': 7.8.3
- '@babel/plugin-syntax-logical-assignment-operators': 7.10.4
- '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3
- '@babel/plugin-syntax-numeric-separator': 7.10.4
- '@babel/plugin-syntax-object-rest-spread': 7.8.3
- '@babel/plugin-syntax-optional-catch-binding': 7.8.3
- '@babel/plugin-syntax-optional-chaining': 7.8.3
- '@babel/plugin-syntax-top-level-await': 7.14.5
- dev: true
-
- /babel-preset-jest/29.5.0:
- resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- peerDependencies:
- '@babel/core': ^7.0.0
- dependencies:
- babel-plugin-jest-hoist: 29.5.0
- babel-preset-current-node-syntax: 1.0.1
- dev: true
-
- /bail/2.0.2:
- resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
- dev: true
-
- /balanced-match/1.0.2:
- resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
- dev: true
-
- /base64-js/1.5.1:
- resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
- dev: true
-
- /big.js/5.2.2:
- resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==}
- dev: true
-
- /binary-extensions/2.2.0:
- resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
- engines: {node: '>=8'}
- dev: true
-
- /binaryextensions/2.3.0:
- resolution: {integrity: sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==}
- engines: {node: '>=0.8'}
- dev: true
-
- /bl/1.2.3:
- resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==}
- dependencies:
- readable-stream: 2.3.8
- safe-buffer: 5.2.1
- dev: true
-
- /bluebird/3.7.2:
- resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==}
- dev: true
-
- /bn.js/4.12.0:
- resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==}
- dev: true
-
- /bn.js/5.2.1:
- resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==}
- dev: true
-
- /boolbase/1.0.0:
- resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
- dev: true
-
- /boxen/1.3.0:
- resolution: {integrity: sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==}
- engines: {node: '>=4'}
- dependencies:
- ansi-align: 2.0.0
- camelcase: 4.1.0
- chalk: 2.4.2
- cli-boxes: 1.0.0
- string-width: 2.1.1
- term-size: 1.2.0
- widest-line: 2.0.1
- dev: true
-
- /brace-expansion/1.1.11:
- resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
- dependencies:
- balanced-match: 1.0.2
- concat-map: 0.0.1
- dev: true
-
- /braces/3.0.2:
- resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
- engines: {node: '>=8'}
- dependencies:
- fill-range: 7.0.1
- dev: true
-
- /brorand/1.1.0:
- resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==}
- dev: true
-
- /browserify-aes/1.2.0:
- resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==}
- dependencies:
- buffer-xor: 1.0.3
- cipher-base: 1.0.4
- create-hash: 1.2.0
- evp_bytestokey: 1.0.3
- inherits: 2.0.4
- safe-buffer: 5.2.1
- dev: true
-
- /browserify-cipher/1.0.1:
- resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==}
- dependencies:
- browserify-aes: 1.2.0
- browserify-des: 1.0.2
- evp_bytestokey: 1.0.3
- dev: true
-
- /browserify-des/1.0.2:
- resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==}
- dependencies:
- cipher-base: 1.0.4
- des.js: 1.0.1
- inherits: 2.0.4
- safe-buffer: 5.2.1
- dev: true
-
- /browserify-rsa/4.1.0:
- resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==}
- dependencies:
- bn.js: 5.2.1
- randombytes: 2.1.0
- dev: true
-
- /browserify-sign/4.2.1:
- resolution: {integrity: sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==}
- dependencies:
- bn.js: 5.2.1
- browserify-rsa: 4.1.0
- create-hash: 1.2.0
- create-hmac: 1.1.7
- elliptic: 6.5.4
- inherits: 2.0.4
- parse-asn1: 5.1.6
- readable-stream: 3.6.1
- safe-buffer: 5.2.1
- dev: true
-
- /browserify-zlib/0.2.0:
- resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==}
- dependencies:
- pako: 1.0.11
- dev: true
-
- /browserslist/4.21.5:
- resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==}
- engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
- hasBin: true
- dependencies:
- caniuse-lite: 1.0.30001462
- electron-to-chromium: 1.4.323
- node-releases: 2.0.10
- update-browserslist-db: 1.0.10_browserslist@4.21.5
- dev: true
-
- /bser/2.1.1:
- resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==}
- dependencies:
- node-int64: 0.4.0
- dev: true
-
- /buffer-alloc-unsafe/1.1.0:
- resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==}
- dev: true
-
- /buffer-alloc/1.2.0:
- resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==}
- dependencies:
- buffer-alloc-unsafe: 1.1.0
- buffer-fill: 1.0.0
- dev: true
-
- /buffer-fill/1.0.0:
- resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==}
- dev: true
-
- /buffer-from/1.1.2:
- resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
- dev: true
-
- /buffer-xor/1.0.3:
- resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==}
- dev: true
-
- /buffer/4.9.2:
- resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==}
- dependencies:
- base64-js: 1.5.1
- ieee754: 1.2.1
- isarray: 1.0.0
- dev: true
-
- /builtin-status-codes/3.0.0:
- resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==}
- dev: true
-
- /builtins/1.0.3:
- resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==}
- dev: true
-
- /cacache/10.0.4:
- resolution: {integrity: sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==}
- dependencies:
- bluebird: 3.7.2
- chownr: 1.1.4
- glob: 7.2.3
- graceful-fs: 4.2.10
- lru-cache: 4.1.5
- mississippi: 2.0.0
- mkdirp: 0.5.6
- move-concurrently: 1.0.1
- promise-inflight: 1.0.1_bluebird@3.7.2
- rimraf: 2.7.1
- ssri: 5.3.0
- unique-filename: 1.1.1
- y18n: 4.0.3
- dev: true
-
- /cacache/9.3.0:
- resolution: {integrity: sha512-Vbi8J1XfC8v+FbQ6QkOtKXsHpPnB0i9uMeYFJoj40EbdOsEqWB3DPpNjfsnYBkqOPYA8UvrqH6FZPpBP0zdN7g==}
- dependencies:
- bluebird: 3.7.2
- chownr: 1.1.4
- glob: 7.2.3
- graceful-fs: 4.2.10
- lru-cache: 4.1.5
- mississippi: 1.3.1
- mkdirp: 0.5.6
- move-concurrently: 1.0.1
- promise-inflight: 1.0.1_bluebird@3.7.2
- rimraf: 2.7.1
- ssri: 4.1.6
- unique-filename: 1.1.1
- y18n: 3.2.2
- dev: true
-
- /call-bind/1.0.2:
- resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
- dependencies:
- function-bind: 1.1.1
- get-intrinsic: 1.2.0
- dev: true
-
- /callsites/3.1.0:
- resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
- engines: {node: '>=6'}
- dev: true
-
- /camel-case/4.1.2:
- resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==}
- dependencies:
- pascal-case: 3.1.2
- tslib: 2.5.0
- dev: true
-
- /camelcase-keys/6.2.2:
- resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==}
- engines: {node: '>=8'}
- dependencies:
- camelcase: 5.3.1
- map-obj: 4.3.0
- quick-lru: 4.0.1
- dev: true
-
- /camelcase/4.1.0:
- resolution: {integrity: sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==}
- engines: {node: '>=4'}
- dev: true
-
- /camelcase/5.3.1:
- resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
- engines: {node: '>=6'}
- dev: true
-
- /camelcase/6.3.0:
- resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
- engines: {node: '>=10'}
- dev: true
-
- /caniuse-lite/1.0.30001462:
- resolution: {integrity: sha512-PDd20WuOBPiasZ7KbFnmQRyuLE7cFXW2PVd7dmALzbkUXEP46upAuCDm9eY9vho8fgNMGmbAX92QBZHzcnWIqw==}
- dev: true
-
- /capture-stack-trace/1.0.2:
- resolution: {integrity: sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /ccount/2.0.1:
- resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
- dev: true
-
- /chalk/2.4.2:
- resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
- engines: {node: '>=4'}
- dependencies:
- ansi-styles: 3.2.1
- escape-string-regexp: 1.0.5
- supports-color: 5.5.0
- dev: true
-
- /chalk/4.1.2:
- resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
- engines: {node: '>=10'}
- dependencies:
- ansi-styles: 4.3.0
- supports-color: 7.2.0
- dev: true
-
- /character-entities-html4/2.1.0:
- resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
- dev: true
-
- /character-entities-legacy/3.0.0:
- resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
- dev: true
-
- /character-entities/2.0.2:
- resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==}
- dev: true
-
- /character-reference-invalid/2.0.1:
- resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==}
- dev: true
-
- /chardet/0.7.0:
- resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==}
- dev: true
-
- /chokidar/3.5.3:
- resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
- engines: {node: '>= 8.10.0'}
- dependencies:
- anymatch: 3.1.3
- braces: 3.0.2
- glob-parent: 5.1.2
- is-binary-path: 2.1.0
- is-glob: 4.0.3
- normalize-path: 3.0.0
- readdirp: 3.6.0
- optionalDependencies:
- fsevents: 2.3.2
- dev: true
-
- /chownr/1.1.4:
- resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
- dev: true
-
- /ci-info/1.6.0:
- resolution: {integrity: sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==}
- dev: true
-
- /ci-info/3.8.0:
- resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==}
- engines: {node: '>=8'}
- dev: true
-
- /cipher-base/1.0.4:
- resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==}
- dependencies:
- inherits: 2.0.4
- safe-buffer: 5.2.1
- dev: true
-
- /classnames/2.3.2:
- resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==}
- dev: true
-
- /clean-css/5.3.2:
- resolution: {integrity: sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==}
- engines: {node: '>= 10.0'}
- dependencies:
- source-map: 0.6.1
- dev: true
-
- /clean-stack/2.2.0:
- resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
- engines: {node: '>=6'}
- dev: true
-
- /cli-boxes/1.0.0:
- resolution: {integrity: sha512-3Fo5wu8Ytle8q9iCzS4D2MWVL2X7JVWRiS1BnXbTFDhS9c/REkM9vd1AmabsoZoY5/dGi5TT9iKL8Kb6DeBRQg==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /cli-cursor/2.1.0:
- resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==}
- engines: {node: '>=4'}
- dependencies:
- restore-cursor: 2.0.0
- dev: true
-
- /cli-cursor/3.1.0:
- resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
- engines: {node: '>=8'}
- dependencies:
- restore-cursor: 3.1.0
- dev: true
-
- /cli-spinners/1.3.1:
- resolution: {integrity: sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==}
- engines: {node: '>=4'}
- dev: true
-
- /cli-truncate/2.1.0:
- resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==}
- engines: {node: '>=8'}
- dependencies:
- slice-ansi: 3.0.0
- string-width: 4.2.3
- dev: true
-
- /cli-truncate/3.1.0:
- resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- dependencies:
- slice-ansi: 5.0.0
- string-width: 5.1.2
- dev: true
-
- /cli-width/2.2.1:
- resolution: {integrity: sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==}
- dev: true
-
- /click-to-react-component/1.0.8_ef5jwxihqo6n7gxfmzogljlgcm:
- resolution: {integrity: sha512-YBNYOp00udy+NBEnUmM/3Df0Yco1iHNQ8k0ltlJVcDYK9AuYt14xPoJicBh/BokLqbzkci1p+pbdY5r4JXZC4g==}
- peerDependencies:
- react: '>=16.8.0'
- dependencies:
- '@floating-ui/react-dom-interactions': 0.3.1_ef5jwxihqo6n7gxfmzogljlgcm
- htm: 3.1.1
- react: 18.1.0
- react-merge-refs: 1.1.0
- transitivePeerDependencies:
- - '@types/react'
- - react-dom
- dev: true
-
- /cliui/8.0.1:
- resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
- engines: {node: '>=12'}
- dependencies:
- string-width: 4.2.3
- strip-ansi: 6.0.1
- wrap-ansi: 7.0.0
- dev: true
-
- /codesandbox-import-util-types/2.2.3:
- resolution: {integrity: sha512-Qj00p60oNExthP2oR3vvXmUGjukij+rxJGuiaKM6tyUmSyimdZsqHI/TUvFFClAffk9s7hxGnQgWQ8KCce27qQ==}
- dev: true
-
- /codesandbox-import-utils/2.2.3:
- resolution: {integrity: sha512-ymtmcgZKU27U+nM2qUb21aO8Ut/u2S9s6KorOgG81weP+NA0UZkaHKlaRqbLJ9h4i/4FLvwmEXYAnTjNmp6ogg==}
- dependencies:
- codesandbox-import-util-types: 2.2.3
- istextorbinary: 2.6.0
- lz-string: 1.5.0
- dev: true
-
- /codesandbox/2.2.3:
- resolution: {integrity: sha512-IAkWFk6UUglOhSemI7UFgNNL/jgg+1YjVEIllFULLgsaHhFnY51pCqAifMNuAd5d9Zp4Nk/xMgrEaGNV0L4Xlg==}
- hasBin: true
- dependencies:
- axios: 0.18.1
- chalk: 2.4.2
- codesandbox-import-util-types: 2.2.3
- codesandbox-import-utils: 2.2.3
- commander: 2.20.3
- datauri: 3.0.0
- filesize: 3.6.1
- fs-extra: 3.0.1
- git-branch: 1.0.0
- git-repo-name: 0.6.0
- git-username: 0.5.1
- humps: 2.0.1
- inquirer: 6.5.2
- lodash: 4.17.21
- lz-string: 1.5.0
- ms: 2.1.3
- open: 6.4.0
- ora: 1.4.0
- pacote: 2.7.38
- shortid: 2.2.16
- update-notifier: 2.5.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /color-convert/1.9.3:
- resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
- dependencies:
- color-name: 1.1.3
- dev: true
-
- /color-convert/2.0.1:
- resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
- engines: {node: '>=7.0.0'}
- dependencies:
- color-name: 1.1.4
- dev: true
-
- /color-name/1.1.3:
- resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
- dev: true
-
- /color-name/1.1.4:
- resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
- dev: true
-
- /colorette/2.0.19:
- resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==}
- dev: true
-
- /comma-separated-tokens/2.0.3:
- resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
- dev: true
-
- /commander/2.20.3:
- resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
- dev: true
-
- /commander/7.2.0:
- resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
- engines: {node: '>= 10'}
- dev: true
-
- /commander/8.3.0:
- resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==}
- engines: {node: '>= 12'}
- dev: true
-
- /commander/9.5.0:
- resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==}
- engines: {node: ^12.20.0 || >=14}
- dev: true
-
- /common-path-prefix/3.0.0:
- resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==}
- dev: true
-
- /commondir/1.0.1:
- resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
- dev: true
-
- /compare-func/2.0.0:
- resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==}
- dependencies:
- array-ify: 1.0.0
- dot-prop: 5.3.0
- dev: true
-
- /concat-map/0.0.1:
- resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
- dev: true
-
- /concat-stream/1.6.2:
- resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==}
- engines: {'0': node >= 0.8}
- dependencies:
- buffer-from: 1.1.2
- inherits: 2.0.4
- readable-stream: 2.3.8
- typedarray: 0.0.6
- dev: true
-
- /configstore/3.1.5:
- resolution: {integrity: sha512-nlOhI4+fdzoK5xmJ+NY+1gZK56bwEaWZr8fYuXohZ9Vkc1o3a4T/R3M+yE/w7x/ZVJ1zF8c+oaOvF0dztdUgmA==}
- engines: {node: '>=4'}
- dependencies:
- dot-prop: 4.2.1
- graceful-fs: 4.2.10
- make-dir: 1.3.0
- unique-string: 1.0.0
- write-file-atomic: 2.4.3
- xdg-basedir: 3.0.0
- dev: true
-
- /console-browserify/1.2.0:
- resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==}
- dev: true
-
- /constants-browserify/1.0.0:
- resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==}
- dev: true
-
- /conventional-changelog-angular/5.0.13:
- resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==}
- engines: {node: '>=10'}
- dependencies:
- compare-func: 2.0.0
- q: 1.5.1
- dev: true
-
- /conventional-changelog-conventionalcommits/5.0.0:
- resolution: {integrity: sha512-lCDbA+ZqVFQGUj7h9QBKoIpLhl8iihkO0nCTyRNzuXtcd7ubODpYB04IFy31JloiJgG0Uovu8ot8oxRzn7Nwtw==}
- engines: {node: '>=10'}
- dependencies:
- compare-func: 2.0.0
- lodash: 4.17.21
- q: 1.5.1
- dev: true
-
- /conventional-commits-parser/3.2.4:
- resolution: {integrity: sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==}
- engines: {node: '>=10'}
- hasBin: true
- dependencies:
- JSONStream: 1.3.5
- is-text-path: 1.0.1
- lodash: 4.17.21
- meow: 8.1.2
- split2: 3.2.2
- through2: 4.0.2
- dev: true
-
- /convert-source-map/1.9.0:
- resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
- dev: true
-
- /convert-source-map/2.0.0:
- resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
- dev: true
-
- /copy-anything/2.0.6:
- resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==}
- dependencies:
- is-what: 3.14.1
- dev: true
-
- /copy-concurrently/1.0.5:
- resolution: {integrity: sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==}
- dependencies:
- aproba: 1.2.0
- fs-write-stream-atomic: 1.0.10
- iferr: 0.1.5
- mkdirp: 0.5.6
- rimraf: 2.7.1
- run-queue: 1.0.3
- dev: true
-
- /copy-to-clipboard/3.3.3:
- resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==}
- dependencies:
- toggle-selection: 1.0.6
- dev: true
-
- /core-js-pure/3.29.0:
- resolution: {integrity: sha512-v94gUjN5UTe1n0yN/opTihJ8QBWD2O8i19RfTZR7foONPWArnjB96QA/wk5ozu1mm6ja3udQCzOzwQXTxi3xOQ==}
- requiresBuild: true
- dev: true
-
- /core-js/3.28.0:
- resolution: {integrity: sha512-GiZn9D4Z/rSYvTeg1ljAIsEqFm0LaN9gVtwDCrKL80zHtS31p9BAjmTxVqTQDMpwlMolJZOFntUG2uwyj7DAqw==}
- requiresBuild: true
- dev: true
-
- /core-util-is/1.0.3:
- resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
- dev: true
-
- /cors/2.8.5:
- resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==}
- engines: {node: '>= 0.10'}
- dependencies:
- object-assign: 4.1.1
- vary: 1.1.2
- dev: true
-
- /cosmiconfig-typescript-loader/4.3.0_y2okb5cfqgxv537umje5rj3w6m:
- resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==}
- engines: {node: '>=12', npm: '>=6'}
- peerDependencies:
- '@types/node': '*'
- cosmiconfig: '>=7'
- ts-node: '>=10'
- typescript: '>=3'
- dependencies:
- '@types/node': 18.14.6
- cosmiconfig: 8.1.0
- ts-node: 10.9.1_alpjt73dvgv6kni625hu7f2l4m
- typescript: 4.9.5
- dev: true
-
- /cosmiconfig/7.1.0:
- resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==}
- engines: {node: '>=10'}
- dependencies:
- '@types/parse-json': 4.0.0
- import-fresh: 3.3.0
- parse-json: 5.2.0
- path-type: 4.0.0
- yaml: 1.10.2
- dev: true
-
- /cosmiconfig/8.1.0:
- resolution: {integrity: sha512-0tLZ9URlPGU7JsKq0DQOQ3FoRsYX8xDZ7xMiATQfaiGMz7EHowNkbU9u1coAOmnh9p/1ySpm0RB3JNWRXM5GCg==}
- engines: {node: '>=14'}
- dependencies:
- import-fresh: 3.3.0
- js-yaml: 4.1.0
- parse-json: 5.2.0
- path-type: 4.0.0
- dev: true
-
- /create-ecdh/4.0.4:
- resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==}
- dependencies:
- bn.js: 4.12.0
- elliptic: 6.5.4
- dev: true
-
- /create-error-class/3.0.2:
- resolution: {integrity: sha512-gYTKKexFO3kh200H1Nit76sRwRtOY32vQd3jpAQKpLtZqyNsSQNfI4N7o3eP2wUjV35pTWKRYqFUDBvUha/Pkw==}
- engines: {node: '>=0.10.0'}
- dependencies:
- capture-stack-trace: 1.0.2
- dev: true
-
- /create-hash/1.2.0:
- resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==}
- dependencies:
- cipher-base: 1.0.4
- inherits: 2.0.4
- md5.js: 1.3.5
- ripemd160: 2.0.2
- sha.js: 2.4.11
- dev: true
-
- /create-hmac/1.1.7:
- resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==}
- dependencies:
- cipher-base: 1.0.4
- create-hash: 1.2.0
- inherits: 2.0.4
- ripemd160: 2.0.2
- safe-buffer: 5.2.1
- sha.js: 2.4.11
- dev: true
-
- /create-require/1.1.1:
- resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
- dev: true
-
- /cross-spawn/5.1.0:
- resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==}
- dependencies:
- lru-cache: 4.1.5
- shebang-command: 1.2.0
- which: 1.3.1
- dev: true
-
- /cross-spawn/7.0.3:
- resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
- engines: {node: '>= 8'}
- dependencies:
- path-key: 3.1.1
- shebang-command: 2.0.0
- which: 2.0.2
- dev: true
-
- /crypto-browserify/3.12.0:
- resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==}
- dependencies:
- browserify-cipher: 1.0.1
- browserify-sign: 4.2.1
- create-ecdh: 4.0.4
- create-hash: 1.2.0
- create-hmac: 1.1.7
- diffie-hellman: 5.0.3
- inherits: 2.0.4
- pbkdf2: 3.1.2
- public-encrypt: 4.0.3
- randombytes: 2.1.0
- randomfill: 1.0.4
- dev: true
-
- /crypto-random-string/1.0.0:
- resolution: {integrity: sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==}
- engines: {node: '>=4'}
- dev: true
-
- /css-blank-pseudo/3.0.3:
- resolution: {integrity: sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==}
- engines: {node: ^12 || ^14 || >=16}
- hasBin: true
- peerDependencies:
- postcss: ^8.4
- dependencies:
- postcss-selector-parser: 6.0.11
- dev: true
-
- /css-blank-pseudo/3.0.3_postcss@8.4.21:
- resolution: {integrity: sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==}
- engines: {node: ^12 || ^14 || >=16}
- hasBin: true
- peerDependencies:
- postcss: ^8.4
- dependencies:
- postcss: 8.4.21
- postcss-selector-parser: 6.0.11
- dev: true
-
- /css-has-pseudo/3.0.4:
- resolution: {integrity: sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==}
- engines: {node: ^12 || ^14 || >=16}
- hasBin: true
- peerDependencies:
- postcss: ^8.4
- dependencies:
- postcss-selector-parser: 6.0.11
- dev: true
-
- /css-has-pseudo/3.0.4_postcss@8.4.21:
- resolution: {integrity: sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==}
- engines: {node: ^12 || ^14 || >=16}
- hasBin: true
- peerDependencies:
- postcss: ^8.4
- dependencies:
- postcss: 8.4.21
- postcss-selector-parser: 6.0.11
- dev: true
-
- /css-loader/6.7.1:
- resolution: {integrity: sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==}
- engines: {node: '>= 12.13.0'}
- peerDependencies:
- webpack: ^5.0.0
- dependencies:
- icss-utils: 5.1.0_postcss@8.4.21
- postcss: 8.4.21
- postcss-modules-extract-imports: 3.0.0_postcss@8.4.21
- postcss-modules-local-by-default: 4.0.0_postcss@8.4.21
- postcss-modules-scope: 3.0.0_postcss@8.4.21
- postcss-modules-values: 4.0.0_postcss@8.4.21
- postcss-value-parser: 4.2.0
- semver: 7.3.8
- dev: true
-
- /css-prefers-color-scheme/6.0.3:
- resolution: {integrity: sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==}
- engines: {node: ^12 || ^14 || >=16}
- hasBin: true
- peerDependencies:
- postcss: ^8.4
- dev: true
-
- /css-prefers-color-scheme/6.0.3_postcss@8.4.21:
- resolution: {integrity: sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==}
- engines: {node: ^12 || ^14 || >=16}
- hasBin: true
- peerDependencies:
- postcss: ^8.4
- dependencies:
- postcss: 8.4.21
- dev: true
-
- /css-select/4.3.0:
- resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==}
- dependencies:
- boolbase: 1.0.0
- css-what: 6.1.0
- domhandler: 4.3.1
- domutils: 2.8.0
- nth-check: 2.1.1
- dev: true
-
- /css-tree/1.1.3:
- resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==}
- engines: {node: '>=8.0.0'}
- dependencies:
- mdn-data: 2.0.14
- source-map: 0.6.1
- dev: true
-
- /css-what/6.1.0:
- resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==}
- engines: {node: '>= 6'}
- dev: true
-
- /cssdb/6.6.3:
- resolution: {integrity: sha512-7GDvDSmE+20+WcSMhP17Q1EVWUrLlbxxpMDqG731n8P99JhnQZHR9YvtjPvEHfjFUjvQJvdpKCjlKOX+xe4UVA==}
- dev: true
-
- /cssesc/3.0.0:
- resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
- engines: {node: '>=4'}
- hasBin: true
- dev: true
-
- /csso/4.2.0:
- resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==}
- engines: {node: '>=8.0.0'}
- dependencies:
- css-tree: 1.1.3
- dev: true
-
- /csstype/3.1.1:
- resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==}
- dev: true
-
- /current-script-polyfill/1.0.0:
- resolution: {integrity: sha512-qv8s+G47V6Hq+g2kRE5th+ASzzrL7b6l+tap1DHKK25ZQJv3yIFhH96XaQ7NGL+zRW3t/RDbweJf/dJDe5Z5KA==}
- dev: true
-
- /cwd/0.9.1:
- resolution: {integrity: sha512-4+0D+ojEasdLndYX4Cqff057I/Jp6ysXpwKkdLQLnZxV8f6IYZmZtTP5uqD91a/kWqejoc0sSqK4u8wpTKCh8A==}
- engines: {node: '>=0.8'}
- dependencies:
- find-pkg: 0.1.2
- dev: true
-
- /cyclist/1.0.1:
- resolution: {integrity: sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==}
- dev: true
-
- /dargs/7.0.0:
- resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==}
- engines: {node: '>=8'}
- dev: true
-
- /data-uri-to-buffer/4.0.1:
- resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==}
- engines: {node: '>= 12'}
- dev: true
-
- /datauri/3.0.0:
- resolution: {integrity: sha512-NeDFuUPV1YCpCn8MUIcDk1QnuyenUHs7f4Q5P0n9FFA0neKFrfEH9esR+YMW95BplbYfdmjbs0Pl/ZGAaM2QHQ==}
- engines: {node: '>= 8'}
- dependencies:
- image-size: 0.8.3
- mimer: 1.1.0
- dev: true
-
- /debug/3.1.0:
- resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
- dependencies:
- ms: 2.0.0
- dev: true
-
- /debug/3.2.7:
- resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
- dependencies:
- ms: 2.1.3
- dev: true
-
- /debug/4.3.4:
- resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
- engines: {node: '>=6.0'}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
- dependencies:
- ms: 2.1.2
- dev: true
-
- /decamelize-keys/1.1.1:
- resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- decamelize: 1.2.0
- map-obj: 1.0.1
- dev: true
-
- /decamelize/1.2.0:
- resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /decode-named-character-reference/1.0.2:
- resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==}
- dependencies:
- character-entities: 2.0.2
- dev: true
-
- /decode-uri-component/0.2.2:
- resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==}
- engines: {node: '>=0.10'}
- dev: true
-
- /deep-extend/0.6.0:
- resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
- engines: {node: '>=4.0.0'}
- dev: true
-
- /deepmerge/4.3.0:
- resolution: {integrity: sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /define-lazy-prop/2.0.0:
- resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==}
- engines: {node: '>=8'}
- dev: true
-
- /define-properties/1.2.0:
- resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==}
- engines: {node: '>= 0.4'}
- dependencies:
- has-property-descriptors: 1.0.0
- object-keys: 1.1.1
- dev: true
-
- /dequal/2.0.3:
- resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
- engines: {node: '>=6'}
- dev: true
-
- /des.js/1.0.1:
- resolution: {integrity: sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==}
- dependencies:
- inherits: 2.0.4
- minimalistic-assert: 1.0.1
- dev: true
-
- /detect-indent/7.0.1:
- resolution: {integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==}
- engines: {node: '>=12.20'}
- dev: true
-
- /detect-libc/1.0.3:
- resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==}
- engines: {node: '>=0.10'}
- hasBin: true
- dev: true
-
- /detect-newline/4.0.0:
- resolution: {integrity: sha512-1aXUEPdfGdzVPFpzGJJNgq9o81bGg1s09uxTWsqBlo9PI332uyJRQq13+LK/UN4JfxJbFdCXonUFQ9R/p7yCtw==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- dev: true
-
- /detect-node/2.1.0:
- resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==}
- dev: true
-
- /diff/4.0.2:
- resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
- engines: {node: '>=0.3.1'}
- dev: true
-
- /diff/5.1.0:
- resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==}
- engines: {node: '>=0.3.1'}
- dev: true
-
- /diffie-hellman/5.0.3:
- resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==}
- dependencies:
- bn.js: 4.12.0
- miller-rabin: 4.0.1
- randombytes: 2.1.0
- dev: true
-
- /dir-glob/3.0.1:
- resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
- engines: {node: '>=8'}
- dependencies:
- path-type: 4.0.0
- dev: true
-
- /discontinuous-range/1.0.0:
- resolution: {integrity: sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==}
- dev: true
-
- /doctrine/2.1.0:
- resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
- engines: {node: '>=0.10.0'}
- dependencies:
- esutils: 2.0.3
- dev: true
-
- /dom-align/1.12.4:
- resolution: {integrity: sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw==}
- dev: true
-
- /dom-converter/0.2.0:
- resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==}
- dependencies:
- utila: 0.4.0
- dev: true
-
- /dom-serializer/1.4.1:
- resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==}
- dependencies:
- domelementtype: 2.3.0
- domhandler: 4.3.1
- entities: 2.2.0
- dev: true
-
- /domain-browser/1.2.0:
- resolution: {integrity: sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==}
- engines: {node: '>=0.4', npm: '>=1.2'}
- dev: true
-
- /domelementtype/2.3.0:
- resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
- dev: true
-
- /domhandler/4.3.1:
- resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==}
- engines: {node: '>= 4'}
- dependencies:
- domelementtype: 2.3.0
- dev: true
-
- /domutils/2.8.0:
- resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==}
- dependencies:
- dom-serializer: 1.4.1
- domelementtype: 2.3.0
- domhandler: 4.3.1
- dev: true
-
- /dot-case/3.0.4:
- resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==}
- dependencies:
- no-case: 3.0.4
- tslib: 2.5.0
- dev: true
-
- /dot-prop/4.2.1:
- resolution: {integrity: sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==}
- engines: {node: '>=4'}
- dependencies:
- is-obj: 1.0.1
- dev: true
-
- /dot-prop/5.3.0:
- resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==}
- engines: {node: '>=8'}
- dependencies:
- is-obj: 2.0.0
- dev: true
-
- /dumi-afx-deps/1.0.0-alpha.12:
- resolution: {integrity: sha512-my+92PapBT+NFSFwVb60b8nqbOz1moLOfZpD3+XqryzaqCno1MSuX0oYc8TqN0wPLd7nEly8c8TIcaZGwj9U5g==}
- dev: true
-
- /dumi-assets-types/2.0.0-alpha.0:
- resolution: {integrity: sha512-a/Y5lf0G6gwsEQ9hop/n03CcjmHsGBk384Cz/AEX6mRYrfSpUx/lQvP9HLoXkCzScl9PL1sSmLPnMkgaXDCZLA==}
- dev: true
-
- /dumi/2.1.15_prettier@2.8.4:
- resolution: {integrity: sha512-l8kuUI1mrYIBNWKoGieedoAwPPMhTtfX7Rcdut5PluvPF8h8LhmONZR420N0SQS9P4isP9tpVOBiYh48jJncjA==}
- hasBin: true
- peerDependencies:
- react: '>=16.8'
- react-dom: '>=16.8'
- dependencies:
- '@ant-design/icons-svg': 4.2.1
- '@makotot/ghostui': 2.0.0
- '@stackblitz/sdk': 1.8.2
- '@swc/core': 1.3.38
- '@types/hast': 2.3.4
- '@types/mdast': 3.0.10
- '@umijs/bundler-utils': 4.0.56
- '@umijs/core': 4.0.56
- animated-scroll-to: 2.3.0
- classnames: 2.3.2
- codesandbox: 2.2.3
- deepmerge: 4.3.0
- dumi-afx-deps: 1.0.0-alpha.12
- dumi-assets-types: 2.0.0-alpha.0
- enhanced-resolve: 5.12.0
- estree-util-to-js: 1.2.0
- estree-util-visit: 1.2.1
- file-system-cache: 2.0.2
- github-slugger: 1.5.0
- hast-util-is-element: 2.1.3
- hast-util-raw: 7.2.3
- hast-util-to-estree: 2.3.2
- hast-util-to-string: 2.0.0
- heti: 0.9.4
- html-to-text: 8.2.1
- js-yaml: 4.1.0
- lodash.throttle: 4.1.1
- mdast-util-to-string: 3.1.1
- pluralize: 8.0.0
- prism-react-renderer: 1.3.5
- prism-themes: 1.9.0
- prismjs: 1.29.0
- raw-loader: 4.0.2
- rc-tabs: 12.5.7
- react-copy-to-clipboard: 5.1.0
- react-error-boundary: 3.1.4
- react-intl: 6.2.10
- rehype-autolink-headings: 6.1.1
- rehype-remove-comments: 5.0.0
- rehype-stringify: 9.0.3
- remark-breaks: 3.0.2
- remark-directive: 2.0.1
- remark-frontmatter: 4.0.1
- remark-gfm: 3.0.1
- remark-parse: 10.0.1
- remark-rehype: 10.1.0
- sass: 1.58.3
- sitemap: 7.1.1
- umi: 4.0.56_prettier@2.8.4+sass@1.58.3
- unified: 10.1.2
- unist-util-visit: 4.1.2
- unist-util-visit-parents: 5.1.3
- url: 0.11.0
- v8-compile-cache: 2.3.0
- vfile: 5.3.7
- transitivePeerDependencies:
- - '@babel/core'
- - '@types/node'
- - '@types/react'
- - '@types/webpack'
- - '@volar/vue-language-plugin-pug'
- - '@volar/vue-typescript'
- - eslint
- - jest
- - postcss
- - postcss-html
- - postcss-jsx
- - postcss-less
- - postcss-markdown
- - postcss-scss
- - prettier
- - rollup
- - sockjs-client
- - styled-components
- - stylelint
- - stylus
- - sugarss
- - supports-color
- - terser
- - type-fest
- - typescript
- - vue-template-compiler
- - webpack
- - webpack-dev-server
- - webpack-hot-middleware
- - webpack-plugin-serve
- dev: true
-
- /duplexer3/0.1.5:
- resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==}
- dev: true
-
- /duplexify/3.7.1:
- resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==}
- dependencies:
- end-of-stream: 1.4.4
- inherits: 2.0.4
- readable-stream: 2.3.8
- stream-shift: 1.0.1
- dev: true
-
- /duplexify/4.1.2:
- resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==}
- dependencies:
- end-of-stream: 1.4.4
- inherits: 2.0.4
- readable-stream: 3.6.1
- stream-shift: 1.0.1
- dev: true
-
- /eastasianwidth/0.2.0:
- resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
- dev: true
-
- /editions/2.3.1:
- resolution: {integrity: sha512-ptGvkwTvGdGfC0hfhKg0MT+TRLRKGtUiWGBInxOm5pz7ssADezahjCUaYuZ8Dr+C05FW0AECIIPt4WBxVINEhA==}
- engines: {node: '>=0.8'}
- dependencies:
- errlop: 2.2.0
- semver: 6.3.0
- dev: true
-
- /electron-to-chromium/1.4.323:
- resolution: {integrity: sha512-+a0hMEQxE8u1F1vOHcE0M18kQ2+4AwOXdRrU4avZ1LeR/sa9WAallYE3uES/PNcEGt/wCFcOgWcArSLx5C+WNQ==}
- dev: true
-
- /elliptic/6.5.4:
- resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==}
- dependencies:
- bn.js: 4.12.0
- brorand: 1.1.0
- hash.js: 1.1.7
- hmac-drbg: 1.0.1
- inherits: 2.0.4
- minimalistic-assert: 1.0.1
- minimalistic-crypto-utils: 1.0.1
- dev: true
-
- /email-addresses/3.1.0:
- resolution: {integrity: sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==}
- dev: true
-
- /emoji-regex/8.0.0:
- resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
- dev: true
-
- /emoji-regex/9.2.2:
- resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
- dev: true
-
- /emojis-list/3.0.0:
- resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==}
- engines: {node: '>= 4'}
- dev: true
-
- /encoding/0.1.13:
- resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==}
- dependencies:
- iconv-lite: 0.6.3
- dev: true
-
- /end-of-stream/1.4.4:
- resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
- dependencies:
- once: 1.4.0
- dev: true
-
- /enhanced-resolve/5.12.0:
- resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==}
- engines: {node: '>=10.13.0'}
- dependencies:
- graceful-fs: 4.2.10
- tapable: 2.2.1
- dev: true
-
- /enhanced-resolve/5.9.3:
- resolution: {integrity: sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==}
- engines: {node: '>=10.13.0'}
- dependencies:
- graceful-fs: 4.2.10
- tapable: 2.2.1
- dev: true
-
- /entities/2.2.0:
- resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
- dev: true
-
- /entities/4.4.0:
- resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==}
- engines: {node: '>=0.12'}
- dev: true
-
- /err-code/1.1.2:
- resolution: {integrity: sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA==}
- dev: true
-
- /errlop/2.2.0:
- resolution: {integrity: sha512-e64Qj9+4aZzjzzFpZC7p5kmm/ccCrbLhAJplhsDXQFs87XTsXwOpH4s1Io2s90Tau/8r2j9f4l/thhDevRjzxw==}
- engines: {node: '>=0.8'}
- dev: true
-
- /errno/0.1.8:
- resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==}
- hasBin: true
- requiresBuild: true
- dependencies:
- prr: 1.0.1
- dev: true
- optional: true
-
- /error-ex/1.3.2:
- resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
- dependencies:
- is-arrayish: 0.2.1
- dev: true
-
- /error-stack-parser/2.1.4:
- resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==}
- dependencies:
- stackframe: 1.3.4
- dev: true
-
- /es-abstract/1.21.1:
- resolution: {integrity: sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==}
- engines: {node: '>= 0.4'}
- dependencies:
- available-typed-arrays: 1.0.5
- call-bind: 1.0.2
- es-set-tostringtag: 2.0.1
- es-to-primitive: 1.2.1
- function-bind: 1.1.1
- function.prototype.name: 1.1.5
- get-intrinsic: 1.2.0
- get-symbol-description: 1.0.0
- globalthis: 1.0.3
- gopd: 1.0.1
- has: 1.0.3
- has-property-descriptors: 1.0.0
- has-proto: 1.0.1
- has-symbols: 1.0.3
- internal-slot: 1.0.5
- is-array-buffer: 3.0.2
- is-callable: 1.2.7
- is-negative-zero: 2.0.2
- is-regex: 1.1.4
- is-shared-array-buffer: 1.0.2
- is-string: 1.0.7
- is-typed-array: 1.1.10
- is-weakref: 1.0.2
- object-inspect: 1.12.3
- object-keys: 1.1.1
- object.assign: 4.1.4
- regexp.prototype.flags: 1.4.3
- safe-regex-test: 1.0.0
- string.prototype.trimend: 1.0.6
- string.prototype.trimstart: 1.0.6
- typed-array-length: 1.0.4
- unbox-primitive: 1.0.2
- which-typed-array: 1.1.9
- dev: true
-
- /es-get-iterator/1.1.3:
- resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==}
- dependencies:
- call-bind: 1.0.2
- get-intrinsic: 1.2.0
- has-symbols: 1.0.3
- is-arguments: 1.1.1
- is-map: 2.0.2
- is-set: 2.0.2
- is-string: 1.0.7
- isarray: 2.0.5
- stop-iteration-iterator: 1.0.0
- dev: true
-
- /es-set-tostringtag/2.0.1:
- resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==}
- engines: {node: '>= 0.4'}
- dependencies:
- get-intrinsic: 1.2.0
- has: 1.0.3
- has-tostringtag: 1.0.0
- dev: true
-
- /es-shim-unscopables/1.0.0:
- resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==}
- dependencies:
- has: 1.0.3
- dev: true
-
- /es-to-primitive/1.2.1:
- resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
- engines: {node: '>= 0.4'}
- dependencies:
- is-callable: 1.2.7
- is-date-object: 1.0.5
- is-symbol: 1.0.4
- dev: true
-
- /es5-imcompatible-versions/0.1.80:
- resolution: {integrity: sha512-i3Uc3hzDalYmBMwX3Z5LDPbuoPqFCR7SCo8tXLU1w7UvR8Awr3Hgfdi7L/bsqj2mMCGqkCxu6tx7VdZz7hW5CQ==}
- dev: true
-
- /es6-promise/4.2.8:
- resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==}
- dev: true
-
- /es6-promisify/5.0.0:
- resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==}
- dependencies:
- es6-promise: 4.2.8
- dev: true
-
- /esbuild/0.16.17:
- resolution: {integrity: sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==}
- engines: {node: '>=12'}
- hasBin: true
- requiresBuild: true
- optionalDependencies:
- '@esbuild/android-arm': 0.16.17
- '@esbuild/android-arm64': 0.16.17
- '@esbuild/android-x64': 0.16.17
- '@esbuild/darwin-arm64': 0.16.17
- '@esbuild/darwin-x64': 0.16.17
- '@esbuild/freebsd-arm64': 0.16.17
- '@esbuild/freebsd-x64': 0.16.17
- '@esbuild/linux-arm': 0.16.17
- '@esbuild/linux-arm64': 0.16.17
- '@esbuild/linux-ia32': 0.16.17
- '@esbuild/linux-loong64': 0.16.17
- '@esbuild/linux-mips64el': 0.16.17
- '@esbuild/linux-ppc64': 0.16.17
- '@esbuild/linux-riscv64': 0.16.17
- '@esbuild/linux-s390x': 0.16.17
- '@esbuild/linux-x64': 0.16.17
- '@esbuild/netbsd-x64': 0.16.17
- '@esbuild/openbsd-x64': 0.16.17
- '@esbuild/sunos-x64': 0.16.17
- '@esbuild/win32-arm64': 0.16.17
- '@esbuild/win32-ia32': 0.16.17
- '@esbuild/win32-x64': 0.16.17
- dev: true
-
- /esbuild/0.17.11:
- resolution: {integrity: sha512-pAMImyokbWDtnA/ufPxjQg0fYo2DDuzAlqwnDvbXqHLphe+m80eF++perYKVm8LeTuj2zUuFXC+xgSVxyoHUdg==}
- engines: {node: '>=12'}
- hasBin: true
- requiresBuild: true
- optionalDependencies:
- '@esbuild/android-arm': 0.17.11
- '@esbuild/android-arm64': 0.17.11
- '@esbuild/android-x64': 0.17.11
- '@esbuild/darwin-arm64': 0.17.11
- '@esbuild/darwin-x64': 0.17.11
- '@esbuild/freebsd-arm64': 0.17.11
- '@esbuild/freebsd-x64': 0.17.11
- '@esbuild/linux-arm': 0.17.11
- '@esbuild/linux-arm64': 0.17.11
- '@esbuild/linux-ia32': 0.17.11
- '@esbuild/linux-loong64': 0.17.11
- '@esbuild/linux-mips64el': 0.17.11
- '@esbuild/linux-ppc64': 0.17.11
- '@esbuild/linux-riscv64': 0.17.11
- '@esbuild/linux-s390x': 0.17.11
- '@esbuild/linux-x64': 0.17.11
- '@esbuild/netbsd-x64': 0.17.11
- '@esbuild/openbsd-x64': 0.17.11
- '@esbuild/sunos-x64': 0.17.11
- '@esbuild/win32-arm64': 0.17.11
- '@esbuild/win32-ia32': 0.17.11
- '@esbuild/win32-x64': 0.17.11
- dev: true
-
- /escalade/3.1.1:
- resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
- engines: {node: '>=6'}
- dev: true
-
- /escape-string-regexp/1.0.5:
- resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
- engines: {node: '>=0.8.0'}
- dev: true
-
- /escape-string-regexp/5.0.0:
- resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
- engines: {node: '>=12'}
- dev: true
-
- /eslint-plugin-jest/27.2.1_apye5qsnfu746srftsectb2ws4:
- resolution: {integrity: sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- peerDependencies:
- '@typescript-eslint/eslint-plugin': ^5.0.0
- eslint: ^7.0.0 || ^8.0.0
- jest: '*'
- peerDependenciesMeta:
- '@typescript-eslint/eslint-plugin':
- optional: true
- jest:
- optional: true
- dependencies:
- '@typescript-eslint/eslint-plugin': 5.48.1_ff6kholja5d6imsya23e5hvkwa
- '@typescript-eslint/utils': 5.54.1
- transitivePeerDependencies:
- - supports-color
- - typescript
- dev: true
-
- /eslint-plugin-react-hooks/4.6.0:
- resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==}
- engines: {node: '>=10'}
- peerDependencies:
- eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
- dev: true
-
- /eslint-plugin-react/7.32.2:
- resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==}
- engines: {node: '>=4'}
- peerDependencies:
- eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
- dependencies:
- array-includes: 3.1.6
- array.prototype.flatmap: 1.3.1
- array.prototype.tosorted: 1.1.1
- doctrine: 2.1.0
- estraverse: 5.3.0
- jsx-ast-utils: 3.3.3
- minimatch: 3.1.2
- object.entries: 1.1.6
- object.fromentries: 2.0.6
- object.hasown: 1.1.2
- object.values: 1.1.6
- prop-types: 15.8.1
- resolve: 2.0.0-next.4
- semver: 6.3.0
- string.prototype.matchall: 4.0.8
- dev: true
-
- /eslint-scope/5.1.1:
- resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
- engines: {node: '>=8.0.0'}
- dependencies:
- esrecurse: 4.3.0
- estraverse: 4.3.0
- dev: true
-
- /eslint-utils/3.0.0:
- resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==}
- engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
- peerDependencies:
- eslint: '>=5'
- dependencies:
- eslint-visitor-keys: 2.1.0
- dev: true
-
- /eslint-visitor-keys/2.1.0:
- resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==}
- engines: {node: '>=10'}
- dev: true
-
- /eslint-visitor-keys/3.3.0:
- resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dev: true
-
- /esprima/4.0.1:
- resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
- engines: {node: '>=4'}
- hasBin: true
- dev: true
-
- /esrecurse/4.3.0:
- resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
- engines: {node: '>=4.0'}
- dependencies:
- estraverse: 5.3.0
- dev: true
-
- /estraverse/4.3.0:
- resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
- engines: {node: '>=4.0'}
- dev: true
-
- /estraverse/5.3.0:
- resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
- engines: {node: '>=4.0'}
- dev: true
-
- /estree-util-attach-comments/2.1.1:
- resolution: {integrity: sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==}
- dependencies:
- '@types/estree': 1.0.0
- dev: true
-
- /estree-util-is-identifier-name/2.1.0:
- resolution: {integrity: sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==}
- dev: true
-
- /estree-util-to-js/1.2.0:
- resolution: {integrity: sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==}
- dependencies:
- '@types/estree-jsx': 1.0.0
- astring: 1.8.4
- source-map: 0.7.4
- dev: true
-
- /estree-util-visit/1.2.1:
- resolution: {integrity: sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==}
- dependencies:
- '@types/estree-jsx': 1.0.0
- '@types/unist': 2.0.6
- dev: true
-
- /esutils/2.0.3:
- resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /events/3.3.0:
- resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
- engines: {node: '>=0.8.x'}
- dev: true
-
- /evp_bytestokey/1.0.3:
- resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==}
- dependencies:
- md5.js: 1.3.5
- safe-buffer: 5.2.1
- dev: true
-
- /execa/0.7.0:
- resolution: {integrity: sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==}
- engines: {node: '>=4'}
- dependencies:
- cross-spawn: 5.1.0
- get-stream: 3.0.0
- is-stream: 1.1.0
- npm-run-path: 2.0.2
- p-finally: 1.0.0
- signal-exit: 3.0.7
- strip-eof: 1.0.0
- dev: true
-
- /execa/5.1.1:
- resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
- engines: {node: '>=10'}
- dependencies:
- cross-spawn: 7.0.3
- get-stream: 6.0.1
- human-signals: 2.1.0
- is-stream: 2.0.1
- merge-stream: 2.0.0
- npm-run-path: 4.0.1
- onetime: 5.1.2
- signal-exit: 3.0.7
- strip-final-newline: 2.0.0
- dev: true
-
- /execa/6.1.0:
- resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- dependencies:
- cross-spawn: 7.0.3
- get-stream: 6.0.1
- human-signals: 3.0.1
- is-stream: 3.0.0
- merge-stream: 2.0.0
- npm-run-path: 5.1.0
- onetime: 6.0.0
- signal-exit: 3.0.7
- strip-final-newline: 3.0.0
- dev: true
-
- /expand-tilde/1.2.2:
- resolution: {integrity: sha512-rtmc+cjLZqnu9dSYosX9EWmSJhTwpACgJQTfj4hgg2JjOD/6SIQalZrt4a3aQeh++oNxkazcaxrhPUj6+g5G/Q==}
- engines: {node: '>=0.10.0'}
- dependencies:
- os-homedir: 1.0.2
- dev: true
-
- /extend-shallow/2.0.1:
- resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==}
- engines: {node: '>=0.10.0'}
- dependencies:
- is-extendable: 0.1.1
- dev: true
-
- /extend/3.0.2:
- resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
- dev: true
-
- /external-editor/3.1.0:
- resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==}
- engines: {node: '>=4'}
- dependencies:
- chardet: 0.7.0
- iconv-lite: 0.4.24
- tmp: 0.0.33
- dev: true
-
- /fast-deep-equal/3.1.3:
- resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
- dev: true
-
- /fast-glob/3.2.12:
- resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==}
- engines: {node: '>=8.6.0'}
- dependencies:
- '@nodelib/fs.stat': 2.0.5
- '@nodelib/fs.walk': 1.2.8
- glob-parent: 5.1.2
- merge2: 1.4.1
- micromatch: 4.0.5
- dev: true
-
- /fast-json-stable-stringify/2.1.0:
- resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
- dev: true
-
- /fast-redact/3.1.2:
- resolution: {integrity: sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==}
- engines: {node: '>=6'}
- dev: true
-
- /fastq/1.15.0:
- resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
- dependencies:
- reusify: 1.0.4
- dev: true
-
- /fault/2.0.1:
- resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==}
- dependencies:
- format: 0.2.2
- dev: true
-
- /fb-watchman/2.0.2:
- resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==}
- dependencies:
- bser: 2.1.1
- dev: true
-
- /fetch-blob/3.2.0:
- resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==}
- engines: {node: ^12.20 || >= 14.13}
- dependencies:
- node-domexception: 1.0.0
- web-streams-polyfill: 3.2.1
- dev: true
-
- /figures/2.0.0:
- resolution: {integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==}
- engines: {node: '>=4'}
- dependencies:
- escape-string-regexp: 1.0.5
- dev: true
-
- /file-name/0.1.0:
- resolution: {integrity: sha512-Q8SskhjF4eUk/xoQkmubwLkoHwOTv6Jj/WGtOVLKkZ0vvM+LipkSXugkn1F/+mjWXU32AXLZB3qaz0arUzgtRw==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /file-system-cache/2.0.2:
- resolution: {integrity: sha512-lp4BHO4CWqvRyx88Tt3quZic9ZMf4cJyquYq7UI8sH42Bm2ArlBBjKQAalZOo+UfaBassb7X123Lik5qZ/tSAA==}
- dependencies:
- fs-extra: 11.1.0
- ramda: 0.28.0
- dev: true
-
- /filename-reserved-regex/2.0.0:
- resolution: {integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==}
- engines: {node: '>=4'}
- dev: true
-
- /filenamify/4.3.0:
- resolution: {integrity: sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==}
- engines: {node: '>=8'}
- dependencies:
- filename-reserved-regex: 2.0.0
- strip-outer: 1.0.1
- trim-repeated: 1.0.0
- dev: true
-
- /filesize/3.6.1:
- resolution: {integrity: sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==}
- engines: {node: '>= 0.4.0'}
- dev: true
-
- /fill-range/7.0.1:
- resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
- engines: {node: '>=8'}
- dependencies:
- to-regex-range: 5.0.1
- dev: true
-
- /filter-obj/1.1.0:
- resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /find-cache-dir/3.3.2:
- resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==}
- engines: {node: '>=8'}
- dependencies:
- commondir: 1.0.1
- make-dir: 3.1.0
- pkg-dir: 4.2.0
- dev: true
-
- /find-file-up/0.1.3:
- resolution: {integrity: sha512-mBxmNbVyjg1LQIIpgO8hN+ybWBgDQK8qjht+EbrTCGmmPV/sc7RF1i9stPTD6bpvXZywBdrwRYxhSdJv867L6A==}
- engines: {node: '>=0.10.0'}
- dependencies:
- fs-exists-sync: 0.1.0
- resolve-dir: 0.1.1
- dev: true
-
- /find-pkg/0.1.2:
- resolution: {integrity: sha512-0rnQWcFwZr7eO0513HahrWafsc3CTFioEB7DRiEYCUM/70QXSY8f3mCST17HXLcPvEhzH/Ty/Bxd72ZZsr/yvw==}
- engines: {node: '>=0.10.0'}
- dependencies:
- find-file-up: 0.1.3
- dev: true
-
- /find-up/4.1.0:
- resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
- engines: {node: '>=8'}
- dependencies:
- locate-path: 5.0.0
- path-exists: 4.0.0
- dev: true
-
- /find-up/5.0.0:
- resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
- engines: {node: '>=10'}
- dependencies:
- locate-path: 6.0.0
- path-exists: 4.0.0
- dev: true
-
- /flush-write-stream/1.1.1:
- resolution: {integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==}
- dependencies:
- inherits: 2.0.4
- readable-stream: 2.3.8
- dev: true
-
- /follow-redirects/1.5.10:
- resolution: {integrity: sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==}
- engines: {node: '>=4.0'}
- dependencies:
- debug: 3.1.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /for-each/0.3.3:
- resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
- dependencies:
- is-callable: 1.2.7
- dev: true
-
- /fork-ts-checker-webpack-plugin/7.3.0:
- resolution: {integrity: sha512-IN+XTzusCjR5VgntYFgxbxVx3WraPRnKehBFrf00cMSrtUuW9MsG9dhL6MWpY6MkjC3wVwoujfCDgZZCQwbswA==}
- engines: {node: '>=12.13.0', yarn: '>=1.0.0'}
- peerDependencies:
- typescript: '>3.6.0'
- vue-template-compiler: '*'
- webpack: ^5.11.0
- peerDependenciesMeta:
- vue-template-compiler:
- optional: true
- dependencies:
- '@babel/code-frame': 7.18.6
- chalk: 4.1.2
- chokidar: 3.5.3
- cosmiconfig: 7.1.0
- deepmerge: 4.3.0
- fs-extra: 10.1.0
- memfs: 3.4.13
- minimatch: 3.1.2
- node-abort-controller: 3.1.1
- schema-utils: 3.1.1
- semver: 7.3.8
- tapable: 2.2.1
- dev: true
-
- /format/0.2.2:
- resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==}
- engines: {node: '>=0.4.x'}
- dev: true
-
- /formdata-polyfill/4.0.10:
- resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==}
- engines: {node: '>=12.20.0'}
- dependencies:
- fetch-blob: 3.2.0
- dev: true
-
- /fraction.js/4.2.0:
- resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==}
- dev: true
-
- /from2/2.3.0:
- resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==}
- dependencies:
- inherits: 2.0.4
- readable-stream: 2.3.8
- dev: true
-
- /fs-constants/1.0.0:
- resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
- dev: true
-
- /fs-exists-sync/0.1.0:
- resolution: {integrity: sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /fs-extra/10.1.0:
- resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
- engines: {node: '>=12'}
- dependencies:
- graceful-fs: 4.2.10
- jsonfile: 6.1.0
- universalify: 2.0.0
- dev: true
-
- /fs-extra/11.1.0:
- resolution: {integrity: sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==}
- engines: {node: '>=14.14'}
- dependencies:
- graceful-fs: 4.2.10
- jsonfile: 6.1.0
- universalify: 2.0.0
- dev: true
-
- /fs-extra/3.0.1:
- resolution: {integrity: sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==}
- dependencies:
- graceful-fs: 4.2.10
- jsonfile: 3.0.1
- universalify: 0.1.2
- dev: true
-
- /fs-extra/8.1.0:
- resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==}
- engines: {node: '>=6 <7 || >=8'}
- dependencies:
- graceful-fs: 4.2.10
- jsonfile: 4.0.0
- universalify: 0.1.2
- dev: true
-
- /fs-monkey/1.0.3:
- resolution: {integrity: sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==}
- dev: true
-
- /fs-write-stream-atomic/1.0.10:
- resolution: {integrity: sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==}
- dependencies:
- graceful-fs: 4.2.10
- iferr: 0.1.5
- imurmurhash: 0.1.4
- readable-stream: 2.3.8
- dev: true
-
- /fs.realpath/1.0.0:
- resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
- dev: true
-
- /fsevents/2.3.2:
- resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
- os: [darwin]
- requiresBuild: true
- dev: true
- optional: true
-
- /function-bind/1.1.1:
- resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
- dev: true
-
- /function.prototype.name/1.1.5:
- resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.2
- define-properties: 1.2.0
- es-abstract: 1.21.1
- functions-have-names: 1.2.3
- dev: true
-
- /functions-have-names/1.2.3:
- resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
- dev: true
-
- /genfun/4.0.1:
- resolution: {integrity: sha512-48yv1eDS5Qrz6cbSDBBik0u7jCgC/eA9eZrl9MIN1LfKzFTuGt6EHgr31YM8yT9cjb5BplXb4Iz3VtOYmgt8Jg==}
- dev: true
-
- /gensync/1.0.0-beta.2:
- resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
- engines: {node: '>=6.9.0'}
- dev: true
-
- /get-caller-file/2.0.5:
- resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
- engines: {node: 6.* || 8.* || >= 10.*}
- dev: true
-
- /get-intrinsic/1.2.0:
- resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==}
- dependencies:
- function-bind: 1.1.1
- has: 1.0.3
- has-symbols: 1.0.3
- dev: true
-
- /get-package-type/0.1.0:
- resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==}
- engines: {node: '>=8.0.0'}
- dev: true
-
- /get-stream/3.0.0:
- resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==}
- engines: {node: '>=4'}
- dev: true
-
- /get-stream/6.0.1:
- resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
- engines: {node: '>=10'}
- dev: true
-
- /get-symbol-description/1.0.0:
- resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.2
- get-intrinsic: 1.2.0
- dev: true
-
- /get-tsconfig/4.4.0:
- resolution: {integrity: sha512-0Gdjo/9+FzsYhXCEFueo2aY1z1tpXrxWZzP7k8ul9qt1U5o8rYJwTJYmaeHdrVosYIVYkOy2iwCJ9FdpocJhPQ==}
- dev: true
-
- /gh-pages/4.0.0:
- resolution: {integrity: sha512-p8S0T3aGJc68MtwOcZusul5qPSNZCalap3NWbhRUZYu1YOdp+EjZ+4kPmRM8h3NNRdqw00yuevRjlkuSzCn7iQ==}
- engines: {node: '>=10'}
- hasBin: true
- dependencies:
- async: 2.6.4
- commander: 2.20.3
- email-addresses: 3.1.0
- filenamify: 4.3.0
- find-cache-dir: 3.3.2
- fs-extra: 8.1.0
- globby: 6.1.0
- dev: true
-
- /git-branch/1.0.0:
- resolution: {integrity: sha512-ZTzuqw5Df8fyLXQWrX6hK+4FpNCdKzMcERlxENEGO5aKcLmG7MAszhrMhluUKNKmOS/JAGijDMQDXDCDw1mE/A==}
- engines: {node: '>=0.8'}
- dev: true
-
- /git-config-path/1.0.1:
- resolution: {integrity: sha512-KcJ2dlrrP5DbBnYIZ2nlikALfRhKzNSX0stvv3ImJ+fvC4hXKoV+U+74SV0upg+jlQZbrtQzc0bu6/Zh+7aQbg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- extend-shallow: 2.0.1
- fs-exists-sync: 0.1.0
- homedir-polyfill: 1.0.3
- dev: true
-
- /git-hooks-list/3.1.0:
- resolution: {integrity: sha512-LF8VeHeR7v+wAbXqfgRlTSX/1BJR9Q1vEMR8JAz1cEg6GX07+zyj3sAdDvYjj/xnlIfVuGgj4qBei1K3hKH+PA==}
- dev: true
-
- /git-raw-commits/2.0.11:
- resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==}
- engines: {node: '>=10'}
- hasBin: true
- dependencies:
- dargs: 7.0.0
- lodash: 4.17.21
- meow: 8.1.2
- split2: 3.2.2
- through2: 4.0.2
- dev: true
-
- /git-repo-name/0.6.0:
- resolution: {integrity: sha512-DF4XxB6H+Te79JA08/QF/IjIv+j+0gF990WlgAX3SXXU2irfqvBc/xxlAIh6eJWYaKz45MrrGVBFS0Qc4bBz5g==}
- engines: {node: '>=0.8'}
- dependencies:
- cwd: 0.9.1
- file-name: 0.1.0
- lazy-cache: 1.0.4
- remote-origin-url: 0.5.3
- dev: true
-
- /git-username/0.5.1:
- resolution: {integrity: sha512-xjUjrj3i4kup2A3a/ZVZB1Nt0PUX7SU7KeVqIbXPdslT7NbNfyO04JMxBv4gar77JePdS+A6f05jG1Viy6+U1w==}
- engines: {node: '>=0.8'}
- dependencies:
- remote-origin-url: 0.4.0
- dev: true
-
- /github-slugger/1.5.0:
- resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==}
- dev: true
-
- /glob-parent/5.1.2:
- resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
- engines: {node: '>= 6'}
- dependencies:
- is-glob: 4.0.3
- dev: true
-
- /glob/7.2.3:
- resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
- dependencies:
- fs.realpath: 1.0.0
- inflight: 1.0.6
- inherits: 2.0.4
- minimatch: 3.1.2
- once: 1.4.0
- path-is-absolute: 1.0.1
- dev: true
-
- /global-dirs/0.1.1:
- resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==}
- engines: {node: '>=4'}
- dependencies:
- ini: 1.3.8
- dev: true
-
- /global-modules/0.2.3:
- resolution: {integrity: sha512-JeXuCbvYzYXcwE6acL9V2bAOeSIGl4dD+iwLY9iUx2VBJJ80R18HCn+JCwHM9Oegdfya3lEkGCdaRkSyc10hDA==}
- engines: {node: '>=0.10.0'}
- dependencies:
- global-prefix: 0.1.5
- is-windows: 0.2.0
- dev: true
-
- /global-prefix/0.1.5:
- resolution: {integrity: sha512-gOPiyxcD9dJGCEArAhF4Hd0BAqvAe/JzERP7tYumE4yIkmIedPUVXcJFWbV3/p/ovIIvKjkrTk+f1UVkq7vvbw==}
- engines: {node: '>=0.10.0'}
- dependencies:
- homedir-polyfill: 1.0.3
- ini: 1.3.8
- is-windows: 0.2.0
- which: 1.3.1
- dev: true
-
- /globals/11.12.0:
- resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
- engines: {node: '>=4'}
- dev: true
-
- /globalthis/1.0.3:
- resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==}
- engines: {node: '>= 0.4'}
- dependencies:
- define-properties: 1.2.0
- dev: true
-
- /globalyzer/0.1.0:
- resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==}
- dev: true
-
- /globby/11.1.0:
- resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
- engines: {node: '>=10'}
- dependencies:
- array-union: 2.1.0
- dir-glob: 3.0.1
- fast-glob: 3.2.12
- ignore: 5.2.4
- merge2: 1.4.1
- slash: 3.0.0
- dev: true
-
- /globby/13.1.3:
- resolution: {integrity: sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- dependencies:
- dir-glob: 3.0.1
- fast-glob: 3.2.12
- ignore: 5.2.4
- merge2: 1.4.1
- slash: 4.0.0
- dev: true
-
- /globby/6.1.0:
- resolution: {integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==}
- engines: {node: '>=0.10.0'}
- dependencies:
- array-union: 1.0.2
- glob: 7.2.3
- object-assign: 4.1.1
- pify: 2.3.0
- pinkie-promise: 2.0.1
- dev: true
-
- /globrex/0.1.2:
- resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
- dev: true
-
- /gopd/1.0.1:
- resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
- dependencies:
- get-intrinsic: 1.2.0
- dev: true
-
- /got/6.7.1:
- resolution: {integrity: sha512-Y/K3EDuiQN9rTZhBvPRWMLXIKdeD1Rj0nzunfoi0Yyn5WBEbzxXKU9Ub2X41oZBagVWOBU3MuDonFMgPWQFnwg==}
- engines: {node: '>=4'}
- dependencies:
- '@types/keyv': 3.1.4
- '@types/responselike': 1.0.0
- create-error-class: 3.0.2
- duplexer3: 0.1.5
- get-stream: 3.0.0
- is-redirect: 1.0.0
- is-retry-allowed: 1.2.0
- is-stream: 1.1.0
- lowercase-keys: 1.0.1
- safe-buffer: 5.2.1
- timed-out: 4.0.1
- unzip-response: 2.0.1
- url-parse-lax: 1.0.0
- dev: true
-
- /graceful-fs/4.2.10:
- resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==}
- dev: true
-
- /handle-thing/2.0.1:
- resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==}
- dev: true
-
- /hard-rejection/2.1.0:
- resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==}
- engines: {node: '>=6'}
- dev: true
-
- /harmony-reflect/1.6.2:
- resolution: {integrity: sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==}
- dev: true
-
- /has-bigints/1.0.2:
- resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
- dev: true
-
- /has-flag/3.0.0:
- resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
- engines: {node: '>=4'}
- dev: true
-
- /has-flag/4.0.0:
- resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
- engines: {node: '>=8'}
- dev: true
-
- /has-property-descriptors/1.0.0:
- resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
- dependencies:
- get-intrinsic: 1.2.0
- dev: true
-
- /has-proto/1.0.1:
- resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
- engines: {node: '>= 0.4'}
- dev: true
-
- /has-symbols/1.0.3:
- resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
- engines: {node: '>= 0.4'}
- dev: true
-
- /has-tostringtag/1.0.0:
- resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==}
- engines: {node: '>= 0.4'}
- dependencies:
- has-symbols: 1.0.3
- dev: true
-
- /has/1.0.3:
- resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
- engines: {node: '>= 0.4.0'}
- dependencies:
- function-bind: 1.1.1
- dev: true
-
- /hash-base/3.1.0:
- resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==}
- engines: {node: '>=4'}
- dependencies:
- inherits: 2.0.4
- readable-stream: 3.6.1
- safe-buffer: 5.2.1
- dev: true
-
- /hash.js/1.1.7:
- resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==}
- dependencies:
- inherits: 2.0.4
- minimalistic-assert: 1.0.1
- dev: true
-
- /hast-util-from-parse5/7.1.2:
- resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==}
- dependencies:
- '@types/hast': 2.3.4
- '@types/unist': 2.0.6
- hastscript: 7.2.0
- property-information: 6.2.0
- vfile: 5.3.7
- vfile-location: 4.1.0
- web-namespaces: 2.0.1
- dev: true
-
- /hast-util-has-property/2.0.1:
- resolution: {integrity: sha512-X2+RwZIMTMKpXUzlotatPzWj8bspCymtXH3cfG3iQKV+wPF53Vgaqxi/eLqGck0wKq1kS9nvoB1wchbCPEL8sg==}
- dev: true
-
- /hast-util-heading-rank/2.1.1:
- resolution: {integrity: sha512-iAuRp+ESgJoRFJbSyaqsfvJDY6zzmFoEnL1gtz1+U8gKtGGj1p0CVlysuUAUjq95qlZESHINLThwJzNGmgGZxA==}
- dependencies:
- '@types/hast': 2.3.4
- dev: true
-
- /hast-util-is-conditional-comment/2.0.0:
- resolution: {integrity: sha512-U66gW8ZWQdxP4ZjTEZ3xZT72y6rIKJqV4At5QmC1ItBbQyZyVkuTp8QkQwhxsbkHdzpifiZdQWrDipc9ByqhRg==}
- dependencies:
- '@types/hast': 2.3.4
- dev: true
-
- /hast-util-is-element/2.1.3:
- resolution: {integrity: sha512-O1bKah6mhgEq2WtVMk+Ta5K7pPMqsBBlmzysLdcwKVrqzZQ0CHqUPiIVspNhAG1rvxpvJjtGee17XfauZYKqVA==}
- dependencies:
- '@types/hast': 2.3.4
- '@types/unist': 2.0.6
- dev: true
-
- /hast-util-parse-selector/3.1.1:
- resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==}
- dependencies:
- '@types/hast': 2.3.4
- dev: true
-
- /hast-util-raw/7.2.3:
- resolution: {integrity: sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==}
- dependencies:
- '@types/hast': 2.3.4
- '@types/parse5': 6.0.3
- hast-util-from-parse5: 7.1.2
- hast-util-to-parse5: 7.1.0
- html-void-elements: 2.0.1
- parse5: 6.0.1
- unist-util-position: 4.0.4
- unist-util-visit: 4.1.2
- vfile: 5.3.7
- web-namespaces: 2.0.1
- zwitch: 2.0.4
- dev: true
-
- /hast-util-to-estree/2.3.2:
- resolution: {integrity: sha512-YYDwATNdnvZi3Qi84iatPIl1lWpXba1MeNrNbDfJfVzEBZL8uUmtR7mt7bxKBC8kuAuvb0bkojXYZzsNHyHCLg==}
- dependencies:
- '@types/estree': 1.0.0
- '@types/estree-jsx': 1.0.0
- '@types/hast': 2.3.4
- '@types/unist': 2.0.6
- comma-separated-tokens: 2.0.3
- estree-util-attach-comments: 2.1.1
- estree-util-is-identifier-name: 2.1.0
- hast-util-whitespace: 2.0.1
- mdast-util-mdx-expression: 1.3.2
- mdast-util-mdxjs-esm: 1.3.1
- property-information: 6.2.0
- space-separated-tokens: 2.0.2
- style-to-object: 0.4.1
- unist-util-position: 4.0.4
- zwitch: 2.0.4
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /hast-util-to-html/8.0.4:
- resolution: {integrity: sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==}
- dependencies:
- '@types/hast': 2.3.4
- '@types/unist': 2.0.6
- ccount: 2.0.1
- comma-separated-tokens: 2.0.3
- hast-util-raw: 7.2.3
- hast-util-whitespace: 2.0.1
- html-void-elements: 2.0.1
- property-information: 6.2.0
- space-separated-tokens: 2.0.2
- stringify-entities: 4.0.3
- zwitch: 2.0.4
- dev: true
-
- /hast-util-to-parse5/7.1.0:
- resolution: {integrity: sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==}
- dependencies:
- '@types/hast': 2.3.4
- comma-separated-tokens: 2.0.3
- property-information: 6.2.0
- space-separated-tokens: 2.0.2
- web-namespaces: 2.0.1
- zwitch: 2.0.4
- dev: true
-
- /hast-util-to-string/2.0.0:
- resolution: {integrity: sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==}
- dependencies:
- '@types/hast': 2.3.4
- dev: true
-
- /hast-util-whitespace/2.0.1:
- resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==}
- dev: true
-
- /hastscript/7.2.0:
- resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==}
- dependencies:
- '@types/hast': 2.3.4
- comma-separated-tokens: 2.0.3
- hast-util-parse-selector: 3.1.1
- property-information: 6.2.0
- space-separated-tokens: 2.0.2
- dev: true
-
- /he/1.2.0:
- resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
- hasBin: true
- dev: true
-
- /heti-findandreplacedomtext/0.5.0:
- resolution: {integrity: sha512-GFZjqU8LAdu1uR72GqrReI+lzNLMlcWtvdz1TKNJiofyo1mfTecFYSZEoEbcLcRMl+KwEldnNQoS4BwO8wtg0A==}
- dev: true
-
- /heti/0.9.4:
- resolution: {integrity: sha512-DI1A/R6VabM8wulXrGVbeHZNZ8jJUm+Pwn+PEYZcNBxAO+4mXWPEX+Xu9R/YrHETGcevNrLO34m/99ZCnFnlhw==}
- dependencies:
- heti-findandreplacedomtext: 0.5.0
- dev: true
-
- /history/5.3.0:
- resolution: {integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==}
- dependencies:
- '@babel/runtime': 7.21.0
- dev: true
-
- /hmac-drbg/1.0.1:
- resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==}
- dependencies:
- hash.js: 1.1.7
- minimalistic-assert: 1.0.1
- minimalistic-crypto-utils: 1.0.1
- dev: true
-
- /hoist-non-react-statics/3.3.2:
- resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
- dependencies:
- react-is: 16.13.1
- dev: true
-
- /homedir-polyfill/1.0.3:
- resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==}
- engines: {node: '>=0.10.0'}
- dependencies:
- parse-passwd: 1.0.0
- dev: true
-
- /hosted-git-info/2.8.9:
- resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
- dev: true
-
- /hosted-git-info/4.1.0:
- resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==}
- engines: {node: '>=10'}
- dependencies:
- lru-cache: 6.0.0
- dev: true
-
- /hpack.js/2.1.6:
- resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==}
- dependencies:
- inherits: 2.0.4
- obuf: 1.1.2
- readable-stream: 2.3.8
- wbuf: 1.7.3
- dev: true
-
- /htm/3.1.1:
- resolution: {integrity: sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==}
- dev: true
-
- /html-entities/2.3.3:
- resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==}
- dev: true
-
- /html-minifier-terser/6.1.0:
- resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==}
- engines: {node: '>=12'}
- hasBin: true
- dependencies:
- camel-case: 4.1.2
- clean-css: 5.3.2
- commander: 8.3.0
- he: 1.2.0
- param-case: 3.0.4
- relateurl: 0.2.7
- terser: 5.16.5
- dev: true
-
- /html-to-text/8.2.1:
- resolution: {integrity: sha512-aN/3JvAk8qFsWVeE9InWAWueLXrbkoVZy0TkzaGhoRBC2gCFEeRLDDJN3/ijIGHohy6H+SZzUQWN/hcYtaPK8w==}
- engines: {node: '>=10.23.2'}
- hasBin: true
- dependencies:
- '@selderee/plugin-htmlparser2': 0.6.0
- deepmerge: 4.3.0
- he: 1.2.0
- htmlparser2: 6.1.0
- minimist: 1.2.8
- selderee: 0.6.0
- dev: true
-
- /html-void-elements/2.0.1:
- resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==}
- dev: true
-
- /html-webpack-plugin/5.5.0:
- resolution: {integrity: sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==}
- engines: {node: '>=10.13.0'}
- peerDependencies:
- webpack: ^5.20.0
- dependencies:
- '@types/html-minifier-terser': 6.1.0
- html-minifier-terser: 6.1.0
- lodash: 4.17.21
- pretty-error: 4.0.0
- tapable: 2.2.1
- dev: true
-
- /htmlparser2/6.1.0:
- resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==}
- dependencies:
- domelementtype: 2.3.0
- domhandler: 4.3.1
- domutils: 2.8.0
- entities: 2.2.0
- dev: true
-
- /http-cache-semantics/3.8.1:
- resolution: {integrity: sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==}
- dev: true
-
- /http-deceiver/1.2.7:
- resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==}
- dev: true
-
- /http-proxy-agent/2.1.0:
- resolution: {integrity: sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==}
- engines: {node: '>= 4.5.0'}
- dependencies:
- agent-base: 4.3.0
- debug: 3.1.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /https-browserify/1.0.0:
- resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==}
- dev: true
-
- /https-proxy-agent/2.2.4:
- resolution: {integrity: sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==}
- engines: {node: '>= 4.5.0'}
- dependencies:
- agent-base: 4.3.0
- debug: 3.2.7
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /human-signals/2.1.0:
- resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
- engines: {node: '>=10.17.0'}
- dev: true
-
- /human-signals/3.0.1:
- resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==}
- engines: {node: '>=12.20.0'}
- dev: true
-
- /humanize-ms/1.2.1:
- resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==}
- dependencies:
- ms: 2.1.3
- dev: true
-
- /humps/2.0.1:
- resolution: {integrity: sha512-E0eIbrFWUhwfXJmsbdjRQFQPrl5pTEoKlz163j1mTqqUnU9PgR4AgB8AIITzuB3vLBdxZXyZ9TDIrwB2OASz4g==}
- dev: true
-
- /husky/8.0.3:
- resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==}
- engines: {node: '>=14'}
- hasBin: true
- dev: true
-
- /iconv-lite/0.4.24:
- resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
- engines: {node: '>=0.10.0'}
- dependencies:
- safer-buffer: 2.1.2
- dev: true
-
- /iconv-lite/0.6.3:
- resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
- engines: {node: '>=0.10.0'}
- dependencies:
- safer-buffer: 2.1.2
- dev: true
-
- /icss-utils/5.1.0_postcss@8.4.21:
- resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==}
- engines: {node: ^10 || ^12 || >= 14}
- peerDependencies:
- postcss: ^8.1.0
- dependencies:
- postcss: 8.4.21
- dev: true
-
- /identity-obj-proxy/3.0.0:
- resolution: {integrity: sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==}
- engines: {node: '>=4'}
- dependencies:
- harmony-reflect: 1.6.2
- dev: true
-
- /ieee754/1.2.1:
- resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
- dev: true
-
- /iferr/0.1.5:
- resolution: {integrity: sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==}
- dev: true
-
- /ignore/5.2.4:
- resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
- engines: {node: '>= 4'}
- dev: true
-
- /image-size/0.5.5:
- resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==}
- engines: {node: '>=0.10.0'}
- hasBin: true
- requiresBuild: true
- dev: true
- optional: true
-
- /image-size/0.8.3:
- resolution: {integrity: sha512-SMtq1AJ+aqHB45c3FsB4ERK0UCiA2d3H1uq8s+8T0Pf8A3W4teyBQyaFaktH6xvZqh+npwlKU7i4fJo0r7TYTg==}
- engines: {node: '>=6.9.0'}
- hasBin: true
- dependencies:
- queue: 6.0.1
- dev: true
-
- /immutable/4.2.4:
- resolution: {integrity: sha512-WDxL3Hheb1JkRN3sQkyujNlL/xRjAo3rJtaU5xeufUauG66JdMr32bLj4gF+vWl84DIA3Zxw7tiAjneYzRRw+w==}
- dev: true
-
- /import-fresh/3.3.0:
- resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
- engines: {node: '>=6'}
- dependencies:
- parent-module: 1.0.1
- resolve-from: 4.0.0
- dev: true
-
- /import-lazy/2.1.0:
- resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==}
- engines: {node: '>=4'}
- dev: true
-
- /imurmurhash/0.1.4:
- resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
- engines: {node: '>=0.8.19'}
- dev: true
-
- /indent-string/4.0.0:
- resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
- engines: {node: '>=8'}
- dev: true
-
- /inflight/1.0.6:
- resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
- dependencies:
- once: 1.4.0
- wrappy: 1.0.2
- dev: true
-
- /inherits/2.0.1:
- resolution: {integrity: sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==}
- dev: true
-
- /inherits/2.0.3:
- resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==}
- dev: true
-
- /inherits/2.0.4:
- resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
- dev: true
-
- /ini/1.3.8:
- resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
- dev: true
-
- /inline-style-parser/0.1.1:
- resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==}
- dev: true
-
- /inquirer/6.5.2:
- resolution: {integrity: sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==}
- engines: {node: '>=6.0.0'}
- dependencies:
- ansi-escapes: 3.2.0
- chalk: 2.4.2
- cli-cursor: 2.1.0
- cli-width: 2.2.1
- external-editor: 3.1.0
- figures: 2.0.0
- lodash: 4.17.21
- mute-stream: 0.0.7
- run-async: 2.4.1
- rxjs: 6.6.7
- string-width: 2.1.1
- strip-ansi: 5.2.0
- through: 2.3.8
- dev: true
-
- /internal-slot/1.0.5:
- resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==}
- engines: {node: '>= 0.4'}
- dependencies:
- get-intrinsic: 1.2.0
- has: 1.0.3
- side-channel: 1.0.4
- dev: true
-
- /intl-messageformat/10.3.1:
- resolution: {integrity: sha512-mqHc6arhbogrdImIsEscdjWnJcg2bvg3MiyGXDsTSGmPbbM2KtRUe7oNgDUbkM3HMn4KbyOct2JyJScmwRgGSQ==}
- dependencies:
- '@formatjs/ecma402-abstract': 1.14.3
- '@formatjs/fast-memoize': 1.2.8
- '@formatjs/icu-messageformat-parser': 2.3.0
- tslib: 2.5.0
- dev: true
-
- /invariant/2.2.4:
- resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==}
- dependencies:
- loose-envify: 1.4.0
- dev: true
-
- /ip/1.1.8:
- resolution: {integrity: sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==}
- dev: true
-
- /is-alphabetical/2.0.1:
- resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==}
- dev: true
-
- /is-alphanumerical/2.0.1:
- resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==}
- dependencies:
- is-alphabetical: 2.0.1
- is-decimal: 2.0.1
- dev: true
-
- /is-arguments/1.1.1:
- resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.2
- has-tostringtag: 1.0.0
- dev: true
-
- /is-array-buffer/3.0.2:
- resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==}
- dependencies:
- call-bind: 1.0.2
- get-intrinsic: 1.2.0
- is-typed-array: 1.1.10
- dev: true
-
- /is-arrayish/0.2.1:
- resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
- dev: true
-
- /is-arrow-function/2.0.3:
- resolution: {integrity: sha512-iDStzcT1FJMzx+TjCOK//uDugSe/Mif/8a+T0htydQ3qkJGvSweTZpVYz4hpJH0baloSPiAFQdA8WslAgJphvQ==}
- engines: {node: '>= 0.4'}
- dependencies:
- is-callable: 1.2.7
- dev: true
-
- /is-async-function/2.0.0:
- resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==}
- engines: {node: '>= 0.4'}
- dependencies:
- has-tostringtag: 1.0.0
- dev: true
-
- /is-bigint/1.0.4:
- resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
- dependencies:
- has-bigints: 1.0.2
- dev: true
-
- /is-binary-path/2.1.0:
- resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
- engines: {node: '>=8'}
- dependencies:
- binary-extensions: 2.2.0
- dev: true
-
- /is-boolean-object/1.1.2:
- resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.2
- has-tostringtag: 1.0.0
- dev: true
-
- /is-buffer/2.0.5:
- resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==}
- engines: {node: '>=4'}
- dev: true
-
- /is-callable/1.2.7:
- resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
- engines: {node: '>= 0.4'}
- dev: true
-
- /is-ci/1.2.1:
- resolution: {integrity: sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==}
- hasBin: true
- dependencies:
- ci-info: 1.6.0
- dev: true
-
- /is-core-module/2.11.0:
- resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==}
- dependencies:
- has: 1.0.3
- dev: true
-
- /is-date-object/1.0.5:
- resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
- engines: {node: '>= 0.4'}
- dependencies:
- has-tostringtag: 1.0.0
- dev: true
-
- /is-decimal/2.0.1:
- resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==}
- dev: true
-
- /is-docker/2.2.1:
- resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
- engines: {node: '>=8'}
- hasBin: true
- dev: true
-
- /is-equal/1.6.4:
- resolution: {integrity: sha512-NiPOTBb5ahmIOYkJ7mVTvvB1bydnTzixvfO+59AjJKBpyjPBIULL3EHGxySyZijlVpewveJyhiLQThcivkkAtw==}
- engines: {node: '>= 0.4'}
- dependencies:
- es-get-iterator: 1.1.3
- functions-have-names: 1.2.3
- has: 1.0.3
- has-bigints: 1.0.2
- has-symbols: 1.0.3
- is-arrow-function: 2.0.3
- is-bigint: 1.0.4
- is-boolean-object: 1.1.2
- is-callable: 1.2.7
- is-date-object: 1.0.5
- is-generator-function: 1.0.10
- is-number-object: 1.0.7
- is-regex: 1.1.4
- is-string: 1.0.7
- is-symbol: 1.0.4
- isarray: 2.0.5
- object-inspect: 1.12.3
- object.entries: 1.1.6
- object.getprototypeof: 1.0.4
- which-boxed-primitive: 1.0.2
- which-collection: 1.0.1
- dev: true
-
- /is-extendable/0.1.1:
- resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /is-extglob/2.1.1:
- resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /is-finalizationregistry/1.0.2:
- resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==}
- dependencies:
- call-bind: 1.0.2
- dev: true
-
- /is-fullwidth-code-point/2.0.0:
- resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==}
- engines: {node: '>=4'}
- dev: true
-
- /is-fullwidth-code-point/3.0.0:
- resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
- engines: {node: '>=8'}
- dev: true
-
- /is-fullwidth-code-point/4.0.0:
- resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==}
- engines: {node: '>=12'}
- dev: true
-
- /is-generator-function/1.0.10:
- resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==}
- engines: {node: '>= 0.4'}
- dependencies:
- has-tostringtag: 1.0.0
- dev: true
-
- /is-glob/4.0.3:
- resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- is-extglob: 2.1.1
- dev: true
-
- /is-hexadecimal/2.0.1:
- resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==}
- dev: true
-
- /is-installed-globally/0.1.0:
- resolution: {integrity: sha512-ERNhMg+i/XgDwPIPF3u24qpajVreaiSuvpb1Uu0jugw7KKcxGyCX8cgp8P5fwTmAuXku6beDHHECdKArjlg7tw==}
- engines: {node: '>=4'}
- dependencies:
- global-dirs: 0.1.1
- is-path-inside: 1.0.1
- dev: true
-
- /is-map/2.0.2:
- resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==}
- dev: true
-
- /is-negative-zero/2.0.2:
- resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==}
- engines: {node: '>= 0.4'}
- dev: true
-
- /is-npm/1.0.0:
- resolution: {integrity: sha512-9r39FIr3d+KD9SbX0sfMsHzb5PP3uimOiwr3YupUaUFG4W0l1U57Rx3utpttV7qz5U3jmrO5auUa04LU9pyHsg==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /is-number-object/1.0.7:
- resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
- engines: {node: '>= 0.4'}
- dependencies:
- has-tostringtag: 1.0.0
- dev: true
-
- /is-number/7.0.0:
- resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
- engines: {node: '>=0.12.0'}
- dev: true
-
- /is-obj/1.0.1:
- resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /is-obj/2.0.0:
- resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==}
- engines: {node: '>=8'}
- dev: true
-
- /is-path-inside/1.0.1:
- resolution: {integrity: sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==}
- engines: {node: '>=0.10.0'}
- dependencies:
- path-is-inside: 1.0.2
- dev: true
-
- /is-plain-obj/1.1.0:
- resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /is-plain-obj/4.1.0:
- resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
- engines: {node: '>=12'}
- dev: true
-
- /is-redirect/1.0.0:
- resolution: {integrity: sha512-cr/SlUEe5zOGmzvj9bUyC4LVvkNVAXu4GytXLNMr1pny+a65MpQ9IJzFHD5vi7FyJgb4qt27+eS3TuQnqB+RQw==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /is-regex/1.1.4:
- resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.2
- has-tostringtag: 1.0.0
- dev: true
-
- /is-retry-allowed/1.2.0:
- resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /is-set/2.0.2:
- resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==}
- dev: true
-
- /is-shared-array-buffer/1.0.2:
- resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==}
- dependencies:
- call-bind: 1.0.2
- dev: true
-
- /is-stream/1.1.0:
- resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /is-stream/2.0.1:
- resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
- engines: {node: '>=8'}
- dev: true
-
- /is-stream/3.0.0:
- resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- dev: true
-
- /is-string/1.0.7:
- resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
- engines: {node: '>= 0.4'}
- dependencies:
- has-tostringtag: 1.0.0
- dev: true
-
- /is-symbol/1.0.4:
- resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
- engines: {node: '>= 0.4'}
- dependencies:
- has-symbols: 1.0.3
- dev: true
-
- /is-text-path/1.0.1:
- resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==}
- engines: {node: '>=0.10.0'}
- dependencies:
- text-extensions: 1.9.0
- dev: true
-
- /is-typed-array/1.1.10:
- resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==}
- engines: {node: '>= 0.4'}
- dependencies:
- available-typed-arrays: 1.0.5
- call-bind: 1.0.2
- for-each: 0.3.3
- gopd: 1.0.1
- has-tostringtag: 1.0.0
- dev: true
-
- /is-weakmap/2.0.1:
- resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==}
- dev: true
-
- /is-weakref/1.0.2:
- resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
- dependencies:
- call-bind: 1.0.2
- dev: true
-
- /is-weakset/2.0.2:
- resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==}
- dependencies:
- call-bind: 1.0.2
- get-intrinsic: 1.2.0
- dev: true
-
- /is-what/3.14.1:
- resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==}
- dev: true
-
- /is-windows/0.2.0:
- resolution: {integrity: sha512-n67eJYmXbniZB7RF4I/FTjK1s6RPOCTxhYrVYLRaCt3lF0mpWZPKr3T2LSZAqyjQsxR2qMmGYXXzK0YWwcPM1Q==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /is-wsl/1.1.0:
- resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==}
- engines: {node: '>=4'}
- dev: true
-
- /is-wsl/2.2.0:
- resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
- engines: {node: '>=8'}
- dependencies:
- is-docker: 2.2.1
- dev: true
-
- /isarray/0.0.1:
- resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==}
- dev: true
-
- /isarray/1.0.0:
- resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
- dev: true
-
- /isarray/2.0.5:
- resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
- dev: true
-
- /isexe/2.0.0:
- resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
- dev: true
-
- /isomorphic-unfetch/4.0.2:
- resolution: {integrity: sha512-1Yd+CF/7al18/N2BDbsLBcp6RO3tucSW+jcLq24dqdX5MNbCNTw1z4BsGsp4zNmjr/Izm2cs/cEqZPp4kvWSCA==}
- dependencies:
- node-fetch: 3.3.0
- unfetch: 5.0.0
- dev: true
-
- /istanbul-lib-coverage/3.2.0:
- resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==}
- engines: {node: '>=8'}
- dev: true
-
- /istanbul-lib-instrument/5.2.1:
- resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==}
- engines: {node: '>=8'}
- dependencies:
- '@babel/core': 7.21.0
- '@babel/parser': 7.21.2
- '@istanbuljs/schema': 0.1.3
- istanbul-lib-coverage: 3.2.0
- semver: 6.3.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /istextorbinary/2.6.0:
- resolution: {integrity: sha512-+XRlFseT8B3L9KyjxxLjfXSLMuErKDsd8DBNrsaxoViABMEZlOSCstwmw0qpoFX3+U6yWU1yhLudAe6/lETGGA==}
- engines: {node: '>=0.12'}
- dependencies:
- binaryextensions: 2.3.0
- editions: 2.3.1
- textextensions: 2.6.0
- dev: true
-
- /jest-haste-map/29.5.0:
- resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/types': 29.5.0
- '@types/graceful-fs': 4.1.6
- '@types/node': 18.14.6
- anymatch: 3.1.3
- fb-watchman: 2.0.2
- graceful-fs: 4.2.10
- jest-regex-util: 29.4.3
- jest-util: 29.5.0
- jest-worker: 29.5.0
- micromatch: 4.0.5
- walker: 1.0.8
- optionalDependencies:
- fsevents: 2.3.2
- dev: true
-
- /jest-regex-util/29.4.3:
- resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dev: true
-
- /jest-util/29.5.0:
- resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/types': 29.5.0
- '@types/node': 18.14.6
- chalk: 4.1.2
- ci-info: 3.8.0
- graceful-fs: 4.2.10
- picomatch: 2.3.1
- dev: true
-
- /jest-worker/29.4.3:
- resolution: {integrity: sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@types/node': 18.14.6
- jest-util: 29.5.0
- merge-stream: 2.0.0
- supports-color: 8.1.1
- dev: true
-
- /jest-worker/29.5.0:
- resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@types/node': 18.14.6
- jest-util: 29.5.0
- merge-stream: 2.0.0
- supports-color: 8.1.1
- dev: true
-
- /js-tokens/4.0.0:
- resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
- dev: true
-
- /js-yaml/3.14.1:
- resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
- hasBin: true
- dependencies:
- argparse: 1.0.10
- esprima: 4.0.1
- dev: true
-
- /js-yaml/4.1.0:
- resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
- hasBin: true
- dependencies:
- argparse: 2.0.1
- dev: true
-
- /jsesc/2.5.2:
- resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
- engines: {node: '>=4'}
- hasBin: true
- dev: true
-
- /json-parse-better-errors/1.0.2:
- resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==}
- dev: true
-
- /json-parse-even-better-errors/2.3.1:
- resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
- dev: true
-
- /json-schema-traverse/0.4.1:
- resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
- dev: true
-
- /json-schema-traverse/1.0.0:
- resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
- dev: true
-
- /json5/2.2.3:
- resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
- engines: {node: '>=6'}
- hasBin: true
- dev: true
-
- /jsonfile/3.0.1:
- resolution: {integrity: sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==}
- optionalDependencies:
- graceful-fs: 4.2.10
- dev: true
-
- /jsonfile/4.0.0:
- resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
- optionalDependencies:
- graceful-fs: 4.2.10
- dev: true
-
- /jsonfile/6.1.0:
- resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
- dependencies:
- universalify: 2.0.0
- optionalDependencies:
- graceful-fs: 4.2.10
- dev: true
-
- /jsonparse/1.3.1:
- resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==}
- engines: {'0': node >= 0.2.0}
- dev: true
-
- /jsx-ast-utils/3.3.3:
- resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==}
- engines: {node: '>=4.0'}
- dependencies:
- array-includes: 3.1.6
- object.assign: 4.1.4
- dev: true
-
- /kind-of/6.0.3:
- resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /kleur/4.1.5:
- resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
- engines: {node: '>=6'}
- dev: true
-
- /kolorist/1.7.0:
- resolution: {integrity: sha512-ymToLHqL02udwVdbkowNpzjFd6UzozMtshPQKVi5k1EjKRqKqBrOnE9QbLEb0/pV76SAiIT13hdL8R6suc+f3g==}
- dev: true
-
- /latest-version/3.1.0:
- resolution: {integrity: sha512-Be1YRHWWlZaSsrz2U+VInk+tO0EwLIyV+23RhWLINJYwg/UIikxjlj3MhH37/6/EDCAusjajvMkMMUXRaMWl/w==}
- engines: {node: '>=4'}
- dependencies:
- package-json: 4.0.1
- dev: true
-
- /lazy-cache/1.0.4:
- resolution: {integrity: sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /less/4.1.3:
- resolution: {integrity: sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==}
- engines: {node: '>=6'}
- hasBin: true
- dependencies:
- copy-anything: 2.0.6
- parse-node-version: 1.0.1
- tslib: 2.5.0
- optionalDependencies:
- errno: 0.1.8
- graceful-fs: 4.2.10
- image-size: 0.5.5
- make-dir: 2.1.0
- mime: 1.6.0
- needle: 3.2.0
- source-map: 0.6.1
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /lightningcss-darwin-arm64/1.19.0:
- resolution: {integrity: sha512-wIJmFtYX0rXHsXHSr4+sC5clwblEMji7HHQ4Ub1/CznVRxtCFha6JIt5JZaNf8vQrfdZnBxLLC6R8pC818jXqg==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [darwin]
- requiresBuild: true
- dev: true
- optional: true
-
- /lightningcss-darwin-x64/1.19.0:
- resolution: {integrity: sha512-Lif1wD6P4poaw9c/4Uh2z+gmrWhw/HtXFoeZ3bEsv6Ia4tt8rOJBdkfVaUJ6VXmpKHALve+iTyP2+50xY1wKPw==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [darwin]
- requiresBuild: true
- dev: true
- optional: true
-
- /lightningcss-linux-arm-gnueabihf/1.19.0:
- resolution: {integrity: sha512-P15VXY5682mTXaiDtbnLYQflc8BYb774j2R84FgDLJTN6Qp0ZjWEFyN1SPqyfTj2B2TFjRHRUvQSSZ7qN4Weig==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /lightningcss-linux-arm64-gnu/1.19.0:
- resolution: {integrity: sha512-zwXRjWqpev8wqO0sv0M1aM1PpjHz6RVIsBcxKszIG83Befuh4yNysjgHVplF9RTU7eozGe3Ts7r6we1+Qkqsww==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [linux]
- libc: [glibc]
- requiresBuild: true
- dev: true
- optional: true
-
- /lightningcss-linux-arm64-musl/1.19.0:
- resolution: {integrity: sha512-vSCKO7SDnZaFN9zEloKSZM5/kC5gbzUjoJQ43BvUpyTFUX7ACs/mDfl2Eq6fdz2+uWhUh7vf92c4EaaP4udEtA==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [linux]
- libc: [musl]
- requiresBuild: true
- dev: true
- optional: true
-
- /lightningcss-linux-x64-gnu/1.19.0:
- resolution: {integrity: sha512-0AFQKvVzXf9byrXUq9z0anMGLdZJS+XSDqidyijI5njIwj6MdbvX2UZK/c4FfNmeRa2N/8ngTffoIuOUit5eIQ==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [linux]
- libc: [glibc]
- requiresBuild: true
- dev: true
- optional: true
-
- /lightningcss-linux-x64-musl/1.19.0:
- resolution: {integrity: sha512-SJoM8CLPt6ECCgSuWe+g0qo8dqQYVcPiW2s19dxkmSI5+Uu1GIRzyKA0b7QqmEXolA+oSJhQqCmJpzjY4CuZAg==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [linux]
- libc: [musl]
- requiresBuild: true
- dev: true
- optional: true
-
- /lightningcss-win32-x64-msvc/1.19.0:
- resolution: {integrity: sha512-C+VuUTeSUOAaBZZOPT7Etn/agx/MatzJzGRkeV+zEABmPuntv1zihncsi+AyGmjkkzq3wVedEy7h0/4S84mUtg==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [win32]
- requiresBuild: true
- dev: true
- optional: true
-
- /lightningcss/1.19.0:
- resolution: {integrity: sha512-yV5UR7og+Og7lQC+70DA7a8ta1uiOPnWPJfxa0wnxylev5qfo4P+4iMpzWAdYWOca4jdNQZii+bDL/l+4hUXIA==}
- engines: {node: '>= 12.0.0'}
- dependencies:
- detect-libc: 1.0.3
- optionalDependencies:
- lightningcss-darwin-arm64: 1.19.0
- lightningcss-darwin-x64: 1.19.0
- lightningcss-linux-arm-gnueabihf: 1.19.0
- lightningcss-linux-arm64-gnu: 1.19.0
- lightningcss-linux-arm64-musl: 1.19.0
- lightningcss-linux-x64-gnu: 1.19.0
- lightningcss-linux-x64-musl: 1.19.0
- lightningcss-win32-x64-msvc: 1.19.0
- dev: true
-
- /lilconfig/2.0.6:
- resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==}
- engines: {node: '>=10'}
- dev: true
-
- /lines-and-columns/1.2.4:
- resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
- dev: true
-
- /lint-staged/13.1.2:
- resolution: {integrity: sha512-K9b4FPbWkpnupvK3WXZLbgu9pchUJ6N7TtVZjbaPsoizkqFUDkUReUL25xdrCljJs7uLUF3tZ7nVPeo/6lp+6w==}
- engines: {node: ^14.13.1 || >=16.0.0}
- hasBin: true
- dependencies:
- cli-truncate: 3.1.0
- colorette: 2.0.19
- commander: 9.5.0
- debug: 4.3.4
- execa: 6.1.0
- lilconfig: 2.0.6
- listr2: 5.0.7
- micromatch: 4.0.5
- normalize-path: 3.0.0
- object-inspect: 1.12.3
- pidtree: 0.6.0
- string-argv: 0.3.1
- yaml: 2.2.1
- transitivePeerDependencies:
- - enquirer
- - supports-color
- dev: true
-
- /listr2/5.0.7:
- resolution: {integrity: sha512-MD+qXHPmtivrHIDRwPYdfNkrzqDiuaKU/rfBcec3WMyMF3xylQj3jMq344OtvQxz7zaCFViRAeqlr2AFhPvXHw==}
- engines: {node: ^14.13.1 || >=16.0.0}
- peerDependencies:
- enquirer: '>= 2.3.0 < 3'
- peerDependenciesMeta:
- enquirer:
- optional: true
- dependencies:
- cli-truncate: 2.1.0
- colorette: 2.0.19
- log-update: 4.0.0
- p-map: 4.0.0
- rfdc: 1.3.0
- rxjs: 7.8.0
- through: 2.3.8
- wrap-ansi: 7.0.0
- dev: true
-
- /loader-utils/2.0.4:
- resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==}
- engines: {node: '>=8.9.0'}
- dependencies:
- big.js: 5.2.2
- emojis-list: 3.0.0
- json5: 2.2.3
- dev: true
-
- /local-pkg/0.4.3:
- resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==}
- engines: {node: '>=14'}
- dev: true
-
- /locate-path/5.0.0:
- resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
- engines: {node: '>=8'}
- dependencies:
- p-locate: 4.1.0
- dev: true
-
- /locate-path/6.0.0:
- resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
- engines: {node: '>=10'}
- dependencies:
- p-locate: 5.0.0
- dev: true
-
- /lodash.camelcase/4.3.0:
- resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==}
- dev: true
-
- /lodash.isfunction/3.0.9:
- resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==}
- dev: true
-
- /lodash.isplainobject/4.0.6:
- resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
- dev: true
-
- /lodash.kebabcase/4.1.1:
- resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==}
- dev: true
-
- /lodash.merge/4.6.2:
- resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
- dev: true
-
- /lodash.mergewith/4.6.2:
- resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==}
- dev: true
-
- /lodash.snakecase/4.1.1:
- resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==}
- dev: true
-
- /lodash.startcase/4.4.0:
- resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==}
- dev: true
-
- /lodash.throttle/4.1.1:
- resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==}
- dev: true
-
- /lodash.uniq/4.5.0:
- resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==}
- dev: true
-
- /lodash.upperfirst/4.3.1:
- resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==}
- dev: true
-
- /lodash/4.17.21:
- resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
- dev: true
-
- /log-symbols/2.2.0:
- resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==}
- engines: {node: '>=4'}
- dependencies:
- chalk: 2.4.2
- dev: true
-
- /log-update/4.0.0:
- resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==}
- engines: {node: '>=10'}
- dependencies:
- ansi-escapes: 4.3.2
- cli-cursor: 3.1.0
- slice-ansi: 4.0.0
- wrap-ansi: 6.2.0
- dev: true
-
- /longest-streak/3.1.0:
- resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
- dev: true
-
- /loose-envify/1.4.0:
- resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
- hasBin: true
- dependencies:
- js-tokens: 4.0.0
- dev: true
-
- /lower-case/2.0.2:
- resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
- dependencies:
- tslib: 2.5.0
- dev: true
-
- /lowercase-keys/1.0.1:
- resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /lru-cache/4.1.5:
- resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==}
- dependencies:
- pseudomap: 1.0.2
- yallist: 2.1.2
- dev: true
-
- /lru-cache/5.1.1:
- resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
- dependencies:
- yallist: 3.1.1
- dev: true
-
- /lru-cache/6.0.0:
- resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
- engines: {node: '>=10'}
- dependencies:
- yallist: 4.0.0
- dev: true
-
- /lz-string/1.5.0:
- resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==}
- hasBin: true
- dev: true
-
- /magic-string/0.27.0:
- resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==}
- engines: {node: '>=12'}
- dependencies:
- '@jridgewell/sourcemap-codec': 1.4.14
- dev: true
-
- /make-dir/1.3.0:
- resolution: {integrity: sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==}
- engines: {node: '>=4'}
- dependencies:
- pify: 3.0.0
- dev: true
-
- /make-dir/2.1.0:
- resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
- engines: {node: '>=6'}
- requiresBuild: true
- dependencies:
- pify: 4.0.1
- semver: 5.7.1
- dev: true
- optional: true
-
- /make-dir/3.1.0:
- resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
- engines: {node: '>=8'}
- dependencies:
- semver: 6.3.0
- dev: true
-
- /make-error/1.3.6:
- resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
- dev: true
-
- /make-fetch-happen/2.6.0:
- resolution: {integrity: sha512-FFq0lNI0ax+n9IWzWpH8A4JdgYiAp2DDYIZ3rsaav8JDe8I+72CzK6PQW/oom15YDZpV5bYW/9INd6nIJ2ZfZw==}
- dependencies:
- agentkeepalive: 3.5.2
- cacache: 10.0.4
- http-cache-semantics: 3.8.1
- http-proxy-agent: 2.1.0
- https-proxy-agent: 2.2.4
- lru-cache: 4.1.5
- mississippi: 1.3.1
- node-fetch-npm: 2.0.4
- promise-retry: 1.1.1
- socks-proxy-agent: 3.0.1
- ssri: 5.3.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /makeerror/1.0.12:
- resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==}
- dependencies:
- tmpl: 1.0.5
- dev: true
-
- /map-obj/1.0.1:
- resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /map-obj/4.3.0:
- resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==}
- engines: {node: '>=8'}
- dev: true
-
- /markdown-table/3.0.3:
- resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==}
- dev: true
-
- /md5.js/1.3.5:
- resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==}
- dependencies:
- hash-base: 3.1.0
- inherits: 2.0.4
- safe-buffer: 5.2.1
- dev: true
-
- /mdast-util-definitions/5.1.2:
- resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==}
- dependencies:
- '@types/mdast': 3.0.10
- '@types/unist': 2.0.6
- unist-util-visit: 4.1.2
- dev: true
-
- /mdast-util-directive/2.2.4:
- resolution: {integrity: sha512-sK3ojFP+jpj1n7Zo5ZKvoxP1MvLyzVG63+gm40Z/qI00avzdPCYxt7RBMgofwAva9gBjbDBWVRB/i+UD+fUCzQ==}
- dependencies:
- '@types/mdast': 3.0.10
- '@types/unist': 2.0.6
- mdast-util-from-markdown: 1.3.0
- mdast-util-to-markdown: 1.5.0
- parse-entities: 4.0.1
- stringify-entities: 4.0.3
- unist-util-visit-parents: 5.1.3
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /mdast-util-find-and-replace/2.2.2:
- resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==}
- dependencies:
- '@types/mdast': 3.0.10
- escape-string-regexp: 5.0.0
- unist-util-is: 5.2.1
- unist-util-visit-parents: 5.1.3
- dev: true
-
- /mdast-util-from-markdown/1.3.0:
- resolution: {integrity: sha512-HN3W1gRIuN/ZW295c7zi7g9lVBllMgZE40RxCX37wrTPWXCWtpvOZdfnuK+1WNpvZje6XuJeI3Wnb4TJEUem+g==}
- dependencies:
- '@types/mdast': 3.0.10
- '@types/unist': 2.0.6
- decode-named-character-reference: 1.0.2
- mdast-util-to-string: 3.1.1
- micromark: 3.1.0
- micromark-util-decode-numeric-character-reference: 1.0.0
- micromark-util-decode-string: 1.0.2
- micromark-util-normalize-identifier: 1.0.0
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
- unist-util-stringify-position: 3.0.3
- uvu: 0.5.6
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /mdast-util-frontmatter/1.0.1:
- resolution: {integrity: sha512-JjA2OjxRqAa8wEG8hloD0uTU0kdn8kbtOWpPP94NBkfAlbxn4S8gCGf/9DwFtEeGPXrDcNXdiDjVaRdUFqYokw==}
- dependencies:
- '@types/mdast': 3.0.10
- mdast-util-to-markdown: 1.5.0
- micromark-extension-frontmatter: 1.0.1
- dev: true
-
- /mdast-util-gfm-autolink-literal/1.0.3:
- resolution: {integrity: sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==}
- dependencies:
- '@types/mdast': 3.0.10
- ccount: 2.0.1
- mdast-util-find-and-replace: 2.2.2
- micromark-util-character: 1.1.0
- dev: true
-
- /mdast-util-gfm-footnote/1.0.2:
- resolution: {integrity: sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==}
- dependencies:
- '@types/mdast': 3.0.10
- mdast-util-to-markdown: 1.5.0
- micromark-util-normalize-identifier: 1.0.0
- dev: true
-
- /mdast-util-gfm-strikethrough/1.0.3:
- resolution: {integrity: sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==}
- dependencies:
- '@types/mdast': 3.0.10
- mdast-util-to-markdown: 1.5.0
- dev: true
-
- /mdast-util-gfm-table/1.0.7:
- resolution: {integrity: sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==}
- dependencies:
- '@types/mdast': 3.0.10
- markdown-table: 3.0.3
- mdast-util-from-markdown: 1.3.0
- mdast-util-to-markdown: 1.5.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /mdast-util-gfm-task-list-item/1.0.2:
- resolution: {integrity: sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==}
- dependencies:
- '@types/mdast': 3.0.10
- mdast-util-to-markdown: 1.5.0
- dev: true
-
- /mdast-util-gfm/2.0.2:
- resolution: {integrity: sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==}
- dependencies:
- mdast-util-from-markdown: 1.3.0
- mdast-util-gfm-autolink-literal: 1.0.3
- mdast-util-gfm-footnote: 1.0.2
- mdast-util-gfm-strikethrough: 1.0.3
- mdast-util-gfm-table: 1.0.7
- mdast-util-gfm-task-list-item: 1.0.2
- mdast-util-to-markdown: 1.5.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /mdast-util-mdx-expression/1.3.2:
- resolution: {integrity: sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==}
- dependencies:
- '@types/estree-jsx': 1.0.0
- '@types/hast': 2.3.4
- '@types/mdast': 3.0.10
- mdast-util-from-markdown: 1.3.0
- mdast-util-to-markdown: 1.5.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /mdast-util-mdxjs-esm/1.3.1:
- resolution: {integrity: sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==}
- dependencies:
- '@types/estree-jsx': 1.0.0
- '@types/hast': 2.3.4
- '@types/mdast': 3.0.10
- mdast-util-from-markdown: 1.3.0
- mdast-util-to-markdown: 1.5.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /mdast-util-phrasing/3.0.1:
- resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==}
- dependencies:
- '@types/mdast': 3.0.10
- unist-util-is: 5.2.1
- dev: true
-
- /mdast-util-to-hast/12.3.0:
- resolution: {integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==}
- dependencies:
- '@types/hast': 2.3.4
- '@types/mdast': 3.0.10
- mdast-util-definitions: 5.1.2
- micromark-util-sanitize-uri: 1.1.0
- trim-lines: 3.0.1
- unist-util-generated: 2.0.1
- unist-util-position: 4.0.4
- unist-util-visit: 4.1.2
- dev: true
-
- /mdast-util-to-markdown/1.5.0:
- resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==}
- dependencies:
- '@types/mdast': 3.0.10
- '@types/unist': 2.0.6
- longest-streak: 3.1.0
- mdast-util-phrasing: 3.0.1
- mdast-util-to-string: 3.1.1
- micromark-util-decode-string: 1.0.2
- unist-util-visit: 4.1.2
- zwitch: 2.0.4
- dev: true
-
- /mdast-util-to-string/3.1.1:
- resolution: {integrity: sha512-tGvhT94e+cVnQt8JWE9/b3cUQZWS732TJxXHktvP+BYo62PpYD53Ls/6cC60rW21dW+txxiM4zMdc6abASvZKA==}
- dependencies:
- '@types/mdast': 3.0.10
- dev: true
-
- /mdn-data/2.0.14:
- resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==}
- dev: true
-
- /memfs/3.4.13:
- resolution: {integrity: sha512-omTM41g3Skpvx5dSYeZIbXKcXoAVc/AoMNwn9TKx++L/gaen/+4TTttmu8ZSch5vfVJ8uJvGbroTsIlslRg6lg==}
- engines: {node: '>= 4.0.0'}
- dependencies:
- fs-monkey: 1.0.3
- dev: true
-
- /meow/8.1.2:
- resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==}
- engines: {node: '>=10'}
- dependencies:
- '@types/minimist': 1.2.2
- camelcase-keys: 6.2.2
- decamelize-keys: 1.1.1
- hard-rejection: 2.1.0
- minimist-options: 4.1.0
- normalize-package-data: 3.0.3
- read-pkg-up: 7.0.1
- redent: 3.0.0
- trim-newlines: 3.0.1
- type-fest: 0.18.1
- yargs-parser: 20.2.9
- dev: true
-
- /merge-stream/2.0.0:
- resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
- dev: true
-
- /merge2/1.4.1:
- resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
- engines: {node: '>= 8'}
- dev: true
-
- /micromark-core-commonmark/1.0.6:
- resolution: {integrity: sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==}
- dependencies:
- decode-named-character-reference: 1.0.2
- micromark-factory-destination: 1.0.0
- micromark-factory-label: 1.0.2
- micromark-factory-space: 1.0.0
- micromark-factory-title: 1.0.2
- micromark-factory-whitespace: 1.0.0
- micromark-util-character: 1.1.0
- micromark-util-chunked: 1.0.0
- micromark-util-classify-character: 1.0.0
- micromark-util-html-tag-name: 1.1.0
- micromark-util-normalize-identifier: 1.0.0
- micromark-util-resolve-all: 1.0.0
- micromark-util-subtokenize: 1.0.2
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
- uvu: 0.5.6
- dev: true
-
- /micromark-extension-directive/2.1.2:
- resolution: {integrity: sha512-brqLEztt14/73snVXYsq9Cv6ng67O+Sy69ZuM0s8ZhN/GFI9rnyXyj0Y0DaCwi648vCImv7/U1H5TzR7wMv5jw==}
- dependencies:
- micromark-factory-space: 1.0.0
- micromark-factory-whitespace: 1.0.0
- micromark-util-character: 1.1.0
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
- parse-entities: 4.0.1
- uvu: 0.5.6
- dev: true
-
- /micromark-extension-frontmatter/1.0.1:
- resolution: {integrity: sha512-9OJhCXkrpj8qIXW5AAgRZGvS8Q4GTMdH5+Ljt98kV4XQVflRGeEhNRYp6O/zCvf8c8lZ+wc4uwmbly27pS/s4Q==}
- dependencies:
- fault: 2.0.1
- micromark-util-character: 1.1.0
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
- dev: true
-
- /micromark-extension-gfm-autolink-literal/1.0.3:
- resolution: {integrity: sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==}
- dependencies:
- micromark-util-character: 1.1.0
- micromark-util-sanitize-uri: 1.1.0
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
- uvu: 0.5.6
- dev: true
-
- /micromark-extension-gfm-footnote/1.0.4:
- resolution: {integrity: sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==}
- dependencies:
- micromark-core-commonmark: 1.0.6
- micromark-factory-space: 1.0.0
- micromark-util-character: 1.1.0
- micromark-util-normalize-identifier: 1.0.0
- micromark-util-sanitize-uri: 1.1.0
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
- uvu: 0.5.6
- dev: true
-
- /micromark-extension-gfm-strikethrough/1.0.4:
- resolution: {integrity: sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==}
- dependencies:
- micromark-util-chunked: 1.0.0
- micromark-util-classify-character: 1.0.0
- micromark-util-resolve-all: 1.0.0
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
- uvu: 0.5.6
- dev: true
-
- /micromark-extension-gfm-table/1.0.5:
- resolution: {integrity: sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==}
- dependencies:
- micromark-factory-space: 1.0.0
- micromark-util-character: 1.1.0
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
- uvu: 0.5.6
- dev: true
-
- /micromark-extension-gfm-tagfilter/1.0.1:
- resolution: {integrity: sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==}
- dependencies:
- micromark-util-types: 1.0.2
- dev: true
-
- /micromark-extension-gfm-task-list-item/1.0.3:
- resolution: {integrity: sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==}
- dependencies:
- micromark-factory-space: 1.0.0
- micromark-util-character: 1.1.0
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
- uvu: 0.5.6
- dev: true
-
- /micromark-extension-gfm/2.0.1:
- resolution: {integrity: sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==}
- dependencies:
- micromark-extension-gfm-autolink-literal: 1.0.3
- micromark-extension-gfm-footnote: 1.0.4
- micromark-extension-gfm-strikethrough: 1.0.4
- micromark-extension-gfm-table: 1.0.5
- micromark-extension-gfm-tagfilter: 1.0.1
- micromark-extension-gfm-task-list-item: 1.0.3
- micromark-util-combine-extensions: 1.0.0
- micromark-util-types: 1.0.2
- dev: true
-
- /micromark-factory-destination/1.0.0:
- resolution: {integrity: sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==}
- dependencies:
- micromark-util-character: 1.1.0
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
- dev: true
-
- /micromark-factory-label/1.0.2:
- resolution: {integrity: sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==}
- dependencies:
- micromark-util-character: 1.1.0
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
- uvu: 0.5.6
- dev: true
-
- /micromark-factory-space/1.0.0:
- resolution: {integrity: sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==}
- dependencies:
- micromark-util-character: 1.1.0
- micromark-util-types: 1.0.2
- dev: true
-
- /micromark-factory-title/1.0.2:
- resolution: {integrity: sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==}
- dependencies:
- micromark-factory-space: 1.0.0
- micromark-util-character: 1.1.0
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
- uvu: 0.5.6
- dev: true
-
- /micromark-factory-whitespace/1.0.0:
- resolution: {integrity: sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==}
- dependencies:
- micromark-factory-space: 1.0.0
- micromark-util-character: 1.1.0
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
- dev: true
-
- /micromark-util-character/1.1.0:
- resolution: {integrity: sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==}
- dependencies:
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
- dev: true
-
- /micromark-util-chunked/1.0.0:
- resolution: {integrity: sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==}
- dependencies:
- micromark-util-symbol: 1.0.1
- dev: true
-
- /micromark-util-classify-character/1.0.0:
- resolution: {integrity: sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==}
- dependencies:
- micromark-util-character: 1.1.0
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
- dev: true
-
- /micromark-util-combine-extensions/1.0.0:
- resolution: {integrity: sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==}
- dependencies:
- micromark-util-chunked: 1.0.0
- micromark-util-types: 1.0.2
- dev: true
-
- /micromark-util-decode-numeric-character-reference/1.0.0:
- resolution: {integrity: sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==}
- dependencies:
- micromark-util-symbol: 1.0.1
- dev: true
-
- /micromark-util-decode-string/1.0.2:
- resolution: {integrity: sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==}
- dependencies:
- decode-named-character-reference: 1.0.2
- micromark-util-character: 1.1.0
- micromark-util-decode-numeric-character-reference: 1.0.0
- micromark-util-symbol: 1.0.1
- dev: true
-
- /micromark-util-encode/1.0.1:
- resolution: {integrity: sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==}
- dev: true
-
- /micromark-util-html-tag-name/1.1.0:
- resolution: {integrity: sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==}
- dev: true
-
- /micromark-util-normalize-identifier/1.0.0:
- resolution: {integrity: sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==}
- dependencies:
- micromark-util-symbol: 1.0.1
- dev: true
-
- /micromark-util-resolve-all/1.0.0:
- resolution: {integrity: sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==}
- dependencies:
- micromark-util-types: 1.0.2
- dev: true
-
- /micromark-util-sanitize-uri/1.1.0:
- resolution: {integrity: sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg==}
- dependencies:
- micromark-util-character: 1.1.0
- micromark-util-encode: 1.0.1
- micromark-util-symbol: 1.0.1
- dev: true
-
- /micromark-util-subtokenize/1.0.2:
- resolution: {integrity: sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==}
- dependencies:
- micromark-util-chunked: 1.0.0
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
- uvu: 0.5.6
- dev: true
-
- /micromark-util-symbol/1.0.1:
- resolution: {integrity: sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==}
- dev: true
-
- /micromark-util-types/1.0.2:
- resolution: {integrity: sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==}
- dev: true
-
- /micromark/3.1.0:
- resolution: {integrity: sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==}
- dependencies:
- '@types/debug': 4.1.7
- debug: 4.3.4
- decode-named-character-reference: 1.0.2
- micromark-core-commonmark: 1.0.6
- micromark-factory-space: 1.0.0
- micromark-util-character: 1.1.0
- micromark-util-chunked: 1.0.0
- micromark-util-combine-extensions: 1.0.0
- micromark-util-decode-numeric-character-reference: 1.0.0
- micromark-util-encode: 1.0.1
- micromark-util-normalize-identifier: 1.0.0
- micromark-util-resolve-all: 1.0.0
- micromark-util-sanitize-uri: 1.1.0
- micromark-util-subtokenize: 1.0.2
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
- uvu: 0.5.6
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /micromatch/4.0.5:
- resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
- engines: {node: '>=8.6'}
- dependencies:
- braces: 3.0.2
- picomatch: 2.3.1
- dev: true
-
- /miller-rabin/4.0.1:
- resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==}
- hasBin: true
- dependencies:
- bn.js: 4.12.0
- brorand: 1.1.0
- dev: true
-
- /mime/1.6.0:
- resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
- engines: {node: '>=4'}
- hasBin: true
- requiresBuild: true
- dev: true
- optional: true
-
- /mimer/1.1.0:
- resolution: {integrity: sha512-y9dVfy2uiycQvDNiAYW6zp49ZhFlXDMr5wfdOiMbdzGM/0N5LNR6HTUn3un+WUQcM0koaw8FMTG1bt5EnHJdvQ==}
- engines: {node: '>= 6.0'}
- hasBin: true
- dev: true
-
- /mimic-fn/1.2.0:
- resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==}
- engines: {node: '>=4'}
- dev: true
-
- /mimic-fn/2.1.0:
- resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
- engines: {node: '>=6'}
- dev: true
-
- /mimic-fn/4.0.0:
- resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
- engines: {node: '>=12'}
- dev: true
-
- /min-indent/1.0.1:
- resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
- engines: {node: '>=4'}
- dev: true
-
- /minimalistic-assert/1.0.1:
- resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==}
- dev: true
-
- /minimalistic-crypto-utils/1.0.1:
- resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==}
- dev: true
-
- /minimatch/3.1.2:
- resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
- dependencies:
- brace-expansion: 1.1.11
- dev: true
-
- /minimist-options/4.1.0:
- resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==}
- engines: {node: '>= 6'}
- dependencies:
- arrify: 1.0.1
- is-plain-obj: 1.1.0
- kind-of: 6.0.3
- dev: true
-
- /minimist/1.2.8:
- resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
- dev: true
-
- /mississippi/1.3.1:
- resolution: {integrity: sha512-/6rB8YXFbAtsUVRphIRQqB0+9c7VaPHCjVtvto+JqwVxgz8Zz+I+f68/JgQ+Pb4VlZb2svA9OtdXnHHsZz7ltg==}
- dependencies:
- concat-stream: 1.6.2
- duplexify: 3.7.1
- end-of-stream: 1.4.4
- flush-write-stream: 1.1.1
- from2: 2.3.0
- parallel-transform: 1.2.0
- pump: 1.0.3
- pumpify: 1.5.1
- stream-each: 1.2.3
- through2: 2.0.5
- dev: true
-
- /mississippi/2.0.0:
- resolution: {integrity: sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==}
- engines: {node: '>=4.0.0'}
- dependencies:
- concat-stream: 1.6.2
- duplexify: 3.7.1
- end-of-stream: 1.4.4
- flush-write-stream: 1.1.1
- from2: 2.3.0
- parallel-transform: 1.2.0
- pump: 2.0.1
- pumpify: 1.5.1
- stream-each: 1.2.3
- through2: 2.0.5
- dev: true
-
- /mkdirp/0.5.6:
- resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
- hasBin: true
- dependencies:
- minimist: 1.2.8
- dev: true
-
- /moo/0.5.2:
- resolution: {integrity: sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==}
- dev: true
-
- /move-concurrently/1.0.1:
- resolution: {integrity: sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==}
- dependencies:
- aproba: 1.2.0
- copy-concurrently: 1.0.5
- fs-write-stream-atomic: 1.0.10
- mkdirp: 0.5.6
- rimraf: 2.7.1
- run-queue: 1.0.3
- dev: true
-
- /mri/1.2.0:
- resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
- engines: {node: '>=4'}
- dev: true
-
- /ms/2.0.0:
- resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
- dev: true
-
- /ms/2.1.2:
- resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
- dev: true
-
- /ms/2.1.3:
- resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
- dev: true
-
- /mute-stream/0.0.7:
- resolution: {integrity: sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==}
- dev: true
-
- /nanoid/2.1.11:
- resolution: {integrity: sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==}
- dev: true
-
- /nanoid/3.3.4:
- resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
- dev: true
-
- /natural-compare-lite/1.4.0:
- resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==}
- dev: true
-
- /nearley/2.20.1:
- resolution: {integrity: sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==}
- hasBin: true
- dependencies:
- commander: 2.20.3
- moo: 0.5.2
- railroad-diagrams: 1.0.0
- randexp: 0.4.6
- dev: true
-
- /needle/3.2.0:
- resolution: {integrity: sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==}
- engines: {node: '>= 4.4.x'}
- hasBin: true
- requiresBuild: true
- dependencies:
- debug: 3.2.7
- iconv-lite: 0.6.3
- sax: 1.2.4
- transitivePeerDependencies:
- - supports-color
- dev: true
- optional: true
-
- /no-case/3.0.4:
- resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
- dependencies:
- lower-case: 2.0.2
- tslib: 2.5.0
- dev: true
-
- /node-abort-controller/3.1.1:
- resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==}
- dev: true
-
- /node-domexception/1.0.0:
- resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==}
- engines: {node: '>=10.5.0'}
- dev: true
-
- /node-fetch-npm/2.0.4:
- resolution: {integrity: sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg==}
- engines: {node: '>=4'}
- deprecated: This module is not used anymore, npm uses minipass-fetch for its fetch implementation now
- dependencies:
- encoding: 0.1.13
- json-parse-better-errors: 1.0.2
- safe-buffer: 5.2.1
- dev: true
-
- /node-fetch/3.3.0:
- resolution: {integrity: sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- dependencies:
- data-uri-to-buffer: 4.0.1
- fetch-blob: 3.2.0
- formdata-polyfill: 4.0.10
- dev: true
-
- /node-int64/0.4.0:
- resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==}
- dev: true
-
- /node-libs-browser/2.2.1:
- resolution: {integrity: sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==}
- dependencies:
- assert: 1.5.0
- browserify-zlib: 0.2.0
- buffer: 4.9.2
- console-browserify: 1.2.0
- constants-browserify: 1.0.0
- crypto-browserify: 3.12.0
- domain-browser: 1.2.0
- events: 3.3.0
- https-browserify: 1.0.0
- os-browserify: 0.3.0
- path-browserify: 0.0.1
- process: 0.11.10
- punycode: 1.4.1
- querystring-es3: 0.2.1
- readable-stream: 2.3.8
- stream-browserify: 2.0.2
- stream-http: 2.8.3
- string_decoder: 1.3.0
- timers-browserify: 2.0.12
- tty-browserify: 0.0.0
- url: 0.11.0
- util: 0.11.1
- vm-browserify: 1.1.2
- dev: true
-
- /node-releases/2.0.10:
- resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==}
- dev: true
-
- /normalize-package-data/2.5.0:
- resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
- dependencies:
- hosted-git-info: 2.8.9
- resolve: 1.22.1
- semver: 5.7.1
- validate-npm-package-license: 3.0.4
- dev: true
-
- /normalize-package-data/3.0.3:
- resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==}
- engines: {node: '>=10'}
- dependencies:
- hosted-git-info: 4.1.0
- is-core-module: 2.11.0
- semver: 7.3.8
- validate-npm-package-license: 3.0.4
- dev: true
-
- /normalize-path/3.0.0:
- resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /normalize-range/0.1.2:
- resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /npm-package-arg/5.1.2:
- resolution: {integrity: sha512-wJBsrf0qpypPT7A0LART18hCdyhpCMxeTtcb0X4IZO2jsP6Om7EHN1d9KSKiqD+KVH030RVNpWS9thk+pb7wzA==}
- dependencies:
- hosted-git-info: 2.8.9
- osenv: 0.1.5
- semver: 5.7.1
- validate-npm-package-name: 3.0.0
- dev: true
-
- /npm-pick-manifest/1.0.4:
- resolution: {integrity: sha512-MKxNdeyOZysPRTTbHtW0M5Fw38Jo/3ARsoGw5qjCfS+XGjvNB/Gb4qtAZUFmKPM2mVum+eX559eHvKywU856BQ==}
- dependencies:
- npm-package-arg: 5.1.2
- semver: 5.7.1
- dev: true
-
- /npm-run-path/2.0.2:
- resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==}
- engines: {node: '>=4'}
- dependencies:
- path-key: 2.0.1
- dev: true
-
- /npm-run-path/4.0.1:
- resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
- engines: {node: '>=8'}
- dependencies:
- path-key: 3.1.1
- dev: true
-
- /npm-run-path/5.1.0:
- resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- dependencies:
- path-key: 4.0.0
- dev: true
-
- /nth-check/2.1.1:
- resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
- dependencies:
- boolbase: 1.0.0
- dev: true
-
- /object-assign/4.1.1:
- resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /object-inspect/1.12.3:
- resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==}
- dev: true
-
- /object-keys/1.1.1:
- resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
- engines: {node: '>= 0.4'}
- dev: true
-
- /object.assign/4.1.4:
- resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.2
- define-properties: 1.2.0
- has-symbols: 1.0.3
- object-keys: 1.1.1
- dev: true
-
- /object.entries/1.1.6:
- resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.2
- define-properties: 1.2.0
- es-abstract: 1.21.1
- dev: true
-
- /object.fromentries/2.0.6:
- resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.2
- define-properties: 1.2.0
- es-abstract: 1.21.1
- dev: true
-
- /object.getprototypeof/1.0.4:
- resolution: {integrity: sha512-xV/FkUNM9sHa56AB5deXrlIR+jBtDAHieyfm6XZUuehqlMX+YJPh8CAYtPrXGA/mFLFttasTc9ihhpkPrH7pLw==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.2
- define-properties: 1.2.0
- es-abstract: 1.21.1
- reflect.getprototypeof: 1.0.3
- dev: true
-
- /object.hasown/1.1.2:
- resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==}
- dependencies:
- define-properties: 1.2.0
- es-abstract: 1.21.1
- dev: true
-
- /object.values/1.1.6:
- resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.2
- define-properties: 1.2.0
- es-abstract: 1.21.1
- dev: true
-
- /obuf/1.1.2:
- resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==}
- dev: true
-
- /on-exit-leak-free/0.2.0:
- resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==}
- dev: true
-
- /once/1.4.0:
- resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
- dependencies:
- wrappy: 1.0.2
- dev: true
-
- /onetime/2.0.1:
- resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==}
- engines: {node: '>=4'}
- dependencies:
- mimic-fn: 1.2.0
- dev: true
-
- /onetime/5.1.2:
- resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
- engines: {node: '>=6'}
- dependencies:
- mimic-fn: 2.1.0
- dev: true
-
- /onetime/6.0.0:
- resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
- engines: {node: '>=12'}
- dependencies:
- mimic-fn: 4.0.0
- dev: true
-
- /open/6.4.0:
- resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==}
- engines: {node: '>=8'}
- dependencies:
- is-wsl: 1.1.0
- dev: true
-
- /open/8.4.2:
- resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==}
- engines: {node: '>=12'}
- dependencies:
- define-lazy-prop: 2.0.0
- is-docker: 2.2.1
- is-wsl: 2.2.0
- dev: true
-
- /ora/1.4.0:
- resolution: {integrity: sha512-iMK1DOQxzzh2MBlVsU42G80mnrvUhqsMh74phHtDlrcTZPK0pH6o7l7DRshK+0YsxDyEuaOkziVdvM3T0QTzpw==}
- engines: {node: '>=4'}
- dependencies:
- chalk: 2.4.2
- cli-cursor: 2.1.0
- cli-spinners: 1.3.1
- log-symbols: 2.2.0
- dev: true
-
- /os-browserify/0.3.0:
- resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==}
- dev: true
-
- /os-homedir/1.0.2:
- resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /os-tmpdir/1.0.2:
- resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /osenv/0.1.5:
- resolution: {integrity: sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==}
- dependencies:
- os-homedir: 1.0.2
- os-tmpdir: 1.0.2
- dev: true
-
- /p-finally/1.0.0:
- resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==}
- engines: {node: '>=4'}
- dev: true
-
- /p-limit/2.3.0:
- resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
- engines: {node: '>=6'}
- dependencies:
- p-try: 2.2.0
- dev: true
-
- /p-limit/3.1.0:
- resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
- engines: {node: '>=10'}
- dependencies:
- yocto-queue: 0.1.0
- dev: true
-
- /p-locate/4.1.0:
- resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
- engines: {node: '>=8'}
- dependencies:
- p-limit: 2.3.0
- dev: true
-
- /p-locate/5.0.0:
- resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
- engines: {node: '>=10'}
- dependencies:
- p-limit: 3.1.0
- dev: true
-
- /p-map/4.0.0:
- resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==}
- engines: {node: '>=10'}
- dependencies:
- aggregate-error: 3.1.0
- dev: true
-
- /p-try/2.2.0:
- resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
- engines: {node: '>=6'}
- dev: true
-
- /package-json/4.0.1:
- resolution: {integrity: sha512-q/R5GrMek0vzgoomq6rm9OX+3PQve8sLwTirmK30YB3Cu0Bbt9OX9M/SIUnroN5BGJkzwGsFwDaRGD9EwBOlCA==}
- engines: {node: '>=4'}
- dependencies:
- got: 6.7.1
- registry-auth-token: 3.4.0
- registry-url: 3.1.0
- semver: 5.7.1
- dev: true
-
- /pacote/2.7.38:
- resolution: {integrity: sha512-XxHUyHQB7QCVBxoXeVu0yKxT+2PvJucsc0+1E+6f95lMUxEAYERgSAc71ckYXrYr35Ew3xFU/LrhdIK21GQFFA==}
- dependencies:
- bluebird: 3.7.2
- cacache: 9.3.0
- glob: 7.2.3
- lru-cache: 4.1.5
- make-fetch-happen: 2.6.0
- minimatch: 3.1.2
- mississippi: 1.3.1
- normalize-package-data: 2.5.0
- npm-package-arg: 5.1.2
- npm-pick-manifest: 1.0.4
- osenv: 0.1.5
- promise-inflight: 1.0.1_bluebird@3.7.2
- promise-retry: 1.1.1
- protoduck: 4.0.0
- safe-buffer: 5.2.1
- semver: 5.7.1
- ssri: 4.1.6
- tar-fs: 1.16.3
- tar-stream: 1.6.2
- unique-filename: 1.1.1
- which: 1.3.1
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /pako/1.0.11:
- resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
- dev: true
-
- /parallel-transform/1.2.0:
- resolution: {integrity: sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==}
- dependencies:
- cyclist: 1.0.1
- inherits: 2.0.4
- readable-stream: 2.3.8
- dev: true
-
- /param-case/3.0.4:
- resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==}
- dependencies:
- dot-case: 3.0.4
- tslib: 2.5.0
- dev: true
-
- /parent-module/1.0.1:
- resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
- engines: {node: '>=6'}
- dependencies:
- callsites: 3.1.0
- dev: true
-
- /parse-asn1/5.1.6:
- resolution: {integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==}
- dependencies:
- asn1.js: 5.4.1
- browserify-aes: 1.2.0
- evp_bytestokey: 1.0.3
- pbkdf2: 3.1.2
- safe-buffer: 5.2.1
- dev: true
-
- /parse-entities/4.0.1:
- resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==}
- dependencies:
- '@types/unist': 2.0.6
- character-entities: 2.0.2
- character-entities-legacy: 3.0.0
- character-reference-invalid: 2.0.1
- decode-named-character-reference: 1.0.2
- is-alphanumerical: 2.0.1
- is-decimal: 2.0.1
- is-hexadecimal: 2.0.1
- dev: true
-
- /parse-git-config/0.2.0:
- resolution: {integrity: sha512-amapZFADOJtHvX2URcRfbzG2OFcW+UAwmdK2kht2N2vsH5Py65VxI5yZTlD2DjmxVhTz6htFoVCxROYUJaYOXQ==}
- engines: {node: '>=0.10.0'}
- dependencies:
- ini: 1.3.8
- dev: true
-
- /parse-git-config/1.1.1:
- resolution: {integrity: sha512-S3LGXJZVSy/hswvbSkfdbKBRVsnqKrVu6j8fcvdtJ4TxosSELyQDsJPuGPXuZ+EyuYuJd3O4uAF8gcISR0OFrQ==}
- engines: {node: '>=0.10.0'}
- dependencies:
- extend-shallow: 2.0.1
- fs-exists-sync: 0.1.0
- git-config-path: 1.0.1
- ini: 1.3.8
- dev: true
-
- /parse-json/5.2.0:
- resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
- engines: {node: '>=8'}
- dependencies:
- '@babel/code-frame': 7.18.6
- error-ex: 1.3.2
- json-parse-even-better-errors: 2.3.1
- lines-and-columns: 1.2.4
- dev: true
-
- /parse-node-version/1.0.1:
- resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==}
- engines: {node: '>= 0.10'}
- dev: true
-
- /parse-passwd/1.0.0:
- resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /parse5/6.0.1:
- resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==}
- dev: true
-
- /parseley/0.7.0:
- resolution: {integrity: sha512-xyOytsdDu077M3/46Am+2cGXEKM9U9QclBDv7fimY7e+BBlxh2JcBp2mgNsmkyA9uvgyTjVzDi7cP1v4hcFxbw==}
- dependencies:
- moo: 0.5.2
- nearley: 2.20.1
- dev: true
-
- /pascal-case/3.1.2:
- resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==}
- dependencies:
- no-case: 3.0.4
- tslib: 2.5.0
- dev: true
-
- /path-browserify/0.0.1:
- resolution: {integrity: sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==}
- dev: true
-
- /path-exists/4.0.0:
- resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
- engines: {node: '>=8'}
- dev: true
-
- /path-is-absolute/1.0.1:
- resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /path-is-inside/1.0.2:
- resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==}
- dev: true
-
- /path-key/2.0.1:
- resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==}
- engines: {node: '>=4'}
- dev: true
-
- /path-key/3.1.1:
- resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
- engines: {node: '>=8'}
- dev: true
-
- /path-key/4.0.0:
- resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
- engines: {node: '>=12'}
- dev: true
-
- /path-parse/1.0.7:
- resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
- dev: true
-
- /path-to-regexp/1.7.0:
- resolution: {integrity: sha512-nifX1uj4S9IrK/w3Xe7kKvNEepXivANs9ng60Iq7PU/BlouV3yL/VUhFqTuTq33ykwUqoNcTeGo5vdOBP4jS/Q==}
- dependencies:
- isarray: 0.0.1
- dev: true
-
- /path-type/4.0.0:
- resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
- engines: {node: '>=8'}
- dev: true
-
- /pbkdf2/3.1.2:
- resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==}
- engines: {node: '>=0.12'}
- dependencies:
- create-hash: 1.2.0
- create-hmac: 1.1.7
- ripemd160: 2.0.2
- safe-buffer: 5.2.1
- sha.js: 2.4.11
- dev: true
-
- /picocolors/1.0.0:
- resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
- dev: true
-
- /picomatch/2.3.1:
- resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
- engines: {node: '>=8.6'}
- dev: true
-
- /pidtree/0.6.0:
- resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==}
- engines: {node: '>=0.10'}
- hasBin: true
- dev: true
-
- /pify/2.3.0:
- resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /pify/3.0.0:
- resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==}
- engines: {node: '>=4'}
- dev: true
-
- /pify/4.0.1:
- resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
- engines: {node: '>=6'}
- dev: true
- optional: true
-
- /pinkie-promise/2.0.1:
- resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==}
- engines: {node: '>=0.10.0'}
- dependencies:
- pinkie: 2.0.4
- dev: true
-
- /pinkie/2.0.4:
- resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /pino-abstract-transport/0.5.0:
- resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==}
- dependencies:
- duplexify: 4.1.2
- split2: 4.1.0
- dev: true
-
- /pino-std-serializers/4.0.0:
- resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==}
- dev: true
-
- /pino/7.11.0:
- resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==}
- hasBin: true
- dependencies:
- atomic-sleep: 1.0.0
- fast-redact: 3.1.2
- on-exit-leak-free: 0.2.0
- pino-abstract-transport: 0.5.0
- pino-std-serializers: 4.0.0
- process-warning: 1.0.0
- quick-format-unescaped: 4.0.4
- real-require: 0.1.0
- safe-stable-stringify: 2.4.2
- sonic-boom: 2.8.0
- thread-stream: 0.15.2
- dev: true
-
- /pirates/4.0.5:
- resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==}
- engines: {node: '>= 6'}
- dev: true
-
- /pkg-dir/4.2.0:
- resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
- engines: {node: '>=8'}
- dependencies:
- find-up: 4.1.0
- dev: true
-
- /pluralize/8.0.0:
- resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
- engines: {node: '>=4'}
- dev: true
-
- /point-in-polygon/1.1.0:
- resolution: {integrity: sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw==}
- dev: true
-
- /postcss-attribute-case-insensitive/5.0.2:
- resolution: {integrity: sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- postcss-selector-parser: 6.0.11
- dev: true
-
- /postcss-attribute-case-insensitive/5.0.2_postcss@8.4.21:
- resolution: {integrity: sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- postcss: 8.4.21
- postcss-selector-parser: 6.0.11
- dev: true
-
- /postcss-clamp/4.1.0:
- resolution: {integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==}
- engines: {node: '>=7.6.0'}
- peerDependencies:
- postcss: ^8.4.6
- dependencies:
- postcss-value-parser: 4.2.0
- dev: true
-
- /postcss-clamp/4.1.0_postcss@8.4.21:
- resolution: {integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==}
- engines: {node: '>=7.6.0'}
- peerDependencies:
- postcss: ^8.4.6
- dependencies:
- postcss: 8.4.21
- postcss-value-parser: 4.2.0
- dev: true
-
- /postcss-color-functional-notation/4.2.4:
- resolution: {integrity: sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- postcss-value-parser: 4.2.0
- dev: true
-
- /postcss-color-functional-notation/4.2.4_postcss@8.4.21:
- resolution: {integrity: sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- postcss: 8.4.21
- postcss-value-parser: 4.2.0
- dev: true
-
- /postcss-color-hex-alpha/8.0.4:
- resolution: {integrity: sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.4
- dependencies:
- postcss-value-parser: 4.2.0
- dev: true
-
- /postcss-color-hex-alpha/8.0.4_postcss@8.4.21:
- resolution: {integrity: sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.4
- dependencies:
- postcss: 8.4.21
- postcss-value-parser: 4.2.0
- dev: true
-
- /postcss-color-rebeccapurple/7.1.1:
- resolution: {integrity: sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- postcss-value-parser: 4.2.0
- dev: true
-
- /postcss-color-rebeccapurple/7.1.1_postcss@8.4.21:
- resolution: {integrity: sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- postcss: 8.4.21
- postcss-value-parser: 4.2.0
- dev: true
-
- /postcss-custom-media/8.0.2:
- resolution: {integrity: sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.3
- dependencies:
- postcss-value-parser: 4.2.0
- dev: true
-
- /postcss-custom-media/8.0.2_postcss@8.4.21:
- resolution: {integrity: sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.3
- dependencies:
- postcss: 8.4.21
- postcss-value-parser: 4.2.0
- dev: true
-
- /postcss-custom-properties/12.1.11:
- resolution: {integrity: sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- postcss-value-parser: 4.2.0
- dev: true
-
- /postcss-custom-properties/12.1.11_postcss@8.4.21:
- resolution: {integrity: sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- postcss: 8.4.21
- postcss-value-parser: 4.2.0
- dev: true
-
- /postcss-custom-selectors/6.0.3:
- resolution: {integrity: sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.3
- dependencies:
- postcss-selector-parser: 6.0.11
- dev: true
-
- /postcss-custom-selectors/6.0.3_postcss@8.4.21:
- resolution: {integrity: sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.3
- dependencies:
- postcss: 8.4.21
- postcss-selector-parser: 6.0.11
- dev: true
-
- /postcss-dir-pseudo-class/6.0.5:
- resolution: {integrity: sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- postcss-selector-parser: 6.0.11
- dev: true
-
- /postcss-dir-pseudo-class/6.0.5_postcss@8.4.21:
- resolution: {integrity: sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- postcss: 8.4.21
- postcss-selector-parser: 6.0.11
- dev: true
-
- /postcss-double-position-gradients/3.1.2:
- resolution: {integrity: sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- '@csstools/postcss-progressive-custom-properties': 1.3.0
- postcss-value-parser: 4.2.0
- dev: true
-
- /postcss-double-position-gradients/3.1.2_postcss@8.4.21:
- resolution: {integrity: sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.21
- postcss: 8.4.21
- postcss-value-parser: 4.2.0
- dev: true
-
- /postcss-env-function/4.0.6:
- resolution: {integrity: sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.4
- dependencies:
- postcss-value-parser: 4.2.0
- dev: true
-
- /postcss-env-function/4.0.6_postcss@8.4.21:
- resolution: {integrity: sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.4
- dependencies:
- postcss: 8.4.21
- postcss-value-parser: 4.2.0
- dev: true
-
- /postcss-flexbugs-fixes/5.0.2_postcss@8.4.21:
- resolution: {integrity: sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==}
- peerDependencies:
- postcss: ^8.1.4
- dependencies:
- postcss: 8.4.21
- dev: true
-
- /postcss-focus-visible/6.0.4:
- resolution: {integrity: sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.4
- dependencies:
- postcss-selector-parser: 6.0.11
- dev: true
-
- /postcss-focus-visible/6.0.4_postcss@8.4.21:
- resolution: {integrity: sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.4
- dependencies:
- postcss: 8.4.21
- postcss-selector-parser: 6.0.11
- dev: true
-
- /postcss-focus-within/5.0.4:
- resolution: {integrity: sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.4
- dependencies:
- postcss-selector-parser: 6.0.11
- dev: true
-
- /postcss-focus-within/5.0.4_postcss@8.4.21:
- resolution: {integrity: sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.4
- dependencies:
- postcss: 8.4.21
- postcss-selector-parser: 6.0.11
- dev: true
-
- /postcss-font-variant/5.0.0:
- resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==}
- peerDependencies:
- postcss: ^8.1.0
- dev: true
-
- /postcss-font-variant/5.0.0_postcss@8.4.21:
- resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==}
- peerDependencies:
- postcss: ^8.1.0
- dependencies:
- postcss: 8.4.21
- dev: true
-
- /postcss-gap-properties/3.0.5:
- resolution: {integrity: sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dev: true
-
- /postcss-gap-properties/3.0.5_postcss@8.4.21:
- resolution: {integrity: sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- postcss: 8.4.21
- dev: true
-
- /postcss-image-set-function/4.0.7:
- resolution: {integrity: sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- postcss-value-parser: 4.2.0
- dev: true
-
- /postcss-image-set-function/4.0.7_postcss@8.4.21:
- resolution: {integrity: sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- postcss: 8.4.21
- postcss-value-parser: 4.2.0
- dev: true
-
- /postcss-initial/4.0.1:
- resolution: {integrity: sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==}
- peerDependencies:
- postcss: ^8.0.0
- dev: true
-
- /postcss-initial/4.0.1_postcss@8.4.21:
- resolution: {integrity: sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==}
- peerDependencies:
- postcss: ^8.0.0
- dependencies:
- postcss: 8.4.21
- dev: true
-
- /postcss-lab-function/4.2.1:
- resolution: {integrity: sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- '@csstools/postcss-progressive-custom-properties': 1.3.0
- postcss-value-parser: 4.2.0
- dev: true
-
- /postcss-lab-function/4.2.1_postcss@8.4.21:
- resolution: {integrity: sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.21
- postcss: 8.4.21
- postcss-value-parser: 4.2.0
- dev: true
-
- /postcss-logical/5.0.4:
- resolution: {integrity: sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.4
- dev: true
-
- /postcss-logical/5.0.4_postcss@8.4.21:
- resolution: {integrity: sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.4
- dependencies:
- postcss: 8.4.21
- dev: true
-
- /postcss-media-minmax/5.0.0:
- resolution: {integrity: sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==}
- engines: {node: '>=10.0.0'}
- peerDependencies:
- postcss: ^8.1.0
- dev: true
-
- /postcss-media-minmax/5.0.0_postcss@8.4.21:
- resolution: {integrity: sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==}
- engines: {node: '>=10.0.0'}
- peerDependencies:
- postcss: ^8.1.0
- dependencies:
- postcss: 8.4.21
- dev: true
-
- /postcss-modules-extract-imports/3.0.0_postcss@8.4.21:
- resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==}
- engines: {node: ^10 || ^12 || >= 14}
- peerDependencies:
- postcss: ^8.1.0
- dependencies:
- postcss: 8.4.21
- dev: true
-
- /postcss-modules-local-by-default/4.0.0_postcss@8.4.21:
- resolution: {integrity: sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==}
- engines: {node: ^10 || ^12 || >= 14}
- peerDependencies:
- postcss: ^8.1.0
- dependencies:
- icss-utils: 5.1.0_postcss@8.4.21
- postcss: 8.4.21
- postcss-selector-parser: 6.0.11
- postcss-value-parser: 4.2.0
- dev: true
-
- /postcss-modules-scope/3.0.0_postcss@8.4.21:
- resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==}
- engines: {node: ^10 || ^12 || >= 14}
- peerDependencies:
- postcss: ^8.1.0
- dependencies:
- postcss: 8.4.21
- postcss-selector-parser: 6.0.11
- dev: true
-
- /postcss-modules-values/4.0.0_postcss@8.4.21:
- resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==}
- engines: {node: ^10 || ^12 || >= 14}
- peerDependencies:
- postcss: ^8.1.0
- dependencies:
- icss-utils: 5.1.0_postcss@8.4.21
- postcss: 8.4.21
- dev: true
-
- /postcss-nesting/10.2.0:
- resolution: {integrity: sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- '@csstools/selector-specificity': 2.1.1_laljekdltgzr3kfi7r4exvsr5a
- postcss-selector-parser: 6.0.11
- dev: true
-
- /postcss-nesting/10.2.0_postcss@8.4.21:
- resolution: {integrity: sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- '@csstools/selector-specificity': 2.1.1_wajs5nedgkikc5pcuwett7legi
- postcss: 8.4.21
- postcss-selector-parser: 6.0.11
- dev: true
-
- /postcss-opacity-percentage/1.1.3:
- resolution: {integrity: sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dev: true
-
- /postcss-opacity-percentage/1.1.3_postcss@8.4.21:
- resolution: {integrity: sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- postcss: 8.4.21
- dev: true
-
- /postcss-overflow-shorthand/3.0.4:
- resolution: {integrity: sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- postcss-value-parser: 4.2.0
- dev: true
-
- /postcss-overflow-shorthand/3.0.4_postcss@8.4.21:
- resolution: {integrity: sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- postcss: 8.4.21
- postcss-value-parser: 4.2.0
- dev: true
-
- /postcss-page-break/3.0.4:
- resolution: {integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==}
- peerDependencies:
- postcss: ^8
- dev: true
-
- /postcss-page-break/3.0.4_postcss@8.4.21:
- resolution: {integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==}
- peerDependencies:
- postcss: ^8
- dependencies:
- postcss: 8.4.21
- dev: true
-
- /postcss-place/7.0.5:
- resolution: {integrity: sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- postcss-value-parser: 4.2.0
- dev: true
-
- /postcss-place/7.0.5_postcss@8.4.21:
- resolution: {integrity: sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- postcss: 8.4.21
- postcss-value-parser: 4.2.0
- dev: true
-
- /postcss-prefix-selector/1.16.0:
- resolution: {integrity: sha512-rdVMIi7Q4B0XbXqNUEI+Z4E+pueiu/CS5E6vRCQommzdQ/sgsS4dK42U7GX8oJR+TJOtT+Qv3GkNo6iijUMp3Q==}
- peerDependencies:
- postcss: '>4 <9'
- dev: true
-
- /postcss-preset-env/7.5.0:
- resolution: {integrity: sha512-0BJzWEfCdTtK2R3EiKKSdkE51/DI/BwnhlnicSW482Ym6/DGHud8K0wGLcdjip1epVX0HKo4c8zzTeV/SkiejQ==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.4
- dependencies:
- '@csstools/postcss-color-function': 1.1.1
- '@csstools/postcss-font-format-keywords': 1.0.1
- '@csstools/postcss-hwb-function': 1.0.2
- '@csstools/postcss-ic-unit': 1.0.1
- '@csstools/postcss-is-pseudo-class': 2.0.7
- '@csstools/postcss-normalize-display-values': 1.0.1
- '@csstools/postcss-oklab-function': 1.1.1
- '@csstools/postcss-progressive-custom-properties': 1.3.0
- '@csstools/postcss-stepped-value-functions': 1.0.1
- '@csstools/postcss-unset-value': 1.0.2
- autoprefixer: 10.4.13
- browserslist: 4.21.5
- css-blank-pseudo: 3.0.3
- css-has-pseudo: 3.0.4
- css-prefers-color-scheme: 6.0.3
- cssdb: 6.6.3
- postcss-attribute-case-insensitive: 5.0.2
- postcss-clamp: 4.1.0
- postcss-color-functional-notation: 4.2.4
- postcss-color-hex-alpha: 8.0.4
- postcss-color-rebeccapurple: 7.1.1
- postcss-custom-media: 8.0.2
- postcss-custom-properties: 12.1.11
- postcss-custom-selectors: 6.0.3
- postcss-dir-pseudo-class: 6.0.5
- postcss-double-position-gradients: 3.1.2
- postcss-env-function: 4.0.6
- postcss-focus-visible: 6.0.4
- postcss-focus-within: 5.0.4
- postcss-font-variant: 5.0.0
- postcss-gap-properties: 3.0.5
- postcss-image-set-function: 4.0.7
- postcss-initial: 4.0.1
- postcss-lab-function: 4.2.1
- postcss-logical: 5.0.4
- postcss-media-minmax: 5.0.0
- postcss-nesting: 10.2.0
- postcss-opacity-percentage: 1.1.3
- postcss-overflow-shorthand: 3.0.4
- postcss-page-break: 3.0.4
- postcss-place: 7.0.5
- postcss-pseudo-class-any-link: 7.1.6
- postcss-replace-overflow-wrap: 4.0.0
- postcss-selector-not: 5.0.0
- postcss-value-parser: 4.2.0
- dev: true
-
- /postcss-preset-env/7.5.0_postcss@8.4.21:
- resolution: {integrity: sha512-0BJzWEfCdTtK2R3EiKKSdkE51/DI/BwnhlnicSW482Ym6/DGHud8K0wGLcdjip1epVX0HKo4c8zzTeV/SkiejQ==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.4
- dependencies:
- '@csstools/postcss-color-function': 1.1.1_postcss@8.4.21
- '@csstools/postcss-font-format-keywords': 1.0.1_postcss@8.4.21
- '@csstools/postcss-hwb-function': 1.0.2_postcss@8.4.21
- '@csstools/postcss-ic-unit': 1.0.1_postcss@8.4.21
- '@csstools/postcss-is-pseudo-class': 2.0.7_postcss@8.4.21
- '@csstools/postcss-normalize-display-values': 1.0.1_postcss@8.4.21
- '@csstools/postcss-oklab-function': 1.1.1_postcss@8.4.21
- '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.21
- '@csstools/postcss-stepped-value-functions': 1.0.1_postcss@8.4.21
- '@csstools/postcss-unset-value': 1.0.2_postcss@8.4.21
- autoprefixer: 10.4.13_postcss@8.4.21
- browserslist: 4.21.5
- css-blank-pseudo: 3.0.3_postcss@8.4.21
- css-has-pseudo: 3.0.4_postcss@8.4.21
- css-prefers-color-scheme: 6.0.3_postcss@8.4.21
- cssdb: 6.6.3
- postcss: 8.4.21
- postcss-attribute-case-insensitive: 5.0.2_postcss@8.4.21
- postcss-clamp: 4.1.0_postcss@8.4.21
- postcss-color-functional-notation: 4.2.4_postcss@8.4.21
- postcss-color-hex-alpha: 8.0.4_postcss@8.4.21
- postcss-color-rebeccapurple: 7.1.1_postcss@8.4.21
- postcss-custom-media: 8.0.2_postcss@8.4.21
- postcss-custom-properties: 12.1.11_postcss@8.4.21
- postcss-custom-selectors: 6.0.3_postcss@8.4.21
- postcss-dir-pseudo-class: 6.0.5_postcss@8.4.21
- postcss-double-position-gradients: 3.1.2_postcss@8.4.21
- postcss-env-function: 4.0.6_postcss@8.4.21
- postcss-focus-visible: 6.0.4_postcss@8.4.21
- postcss-focus-within: 5.0.4_postcss@8.4.21
- postcss-font-variant: 5.0.0_postcss@8.4.21
- postcss-gap-properties: 3.0.5_postcss@8.4.21
- postcss-image-set-function: 4.0.7_postcss@8.4.21
- postcss-initial: 4.0.1_postcss@8.4.21
- postcss-lab-function: 4.2.1_postcss@8.4.21
- postcss-logical: 5.0.4_postcss@8.4.21
- postcss-media-minmax: 5.0.0_postcss@8.4.21
- postcss-nesting: 10.2.0_postcss@8.4.21
- postcss-opacity-percentage: 1.1.3_postcss@8.4.21
- postcss-overflow-shorthand: 3.0.4_postcss@8.4.21
- postcss-page-break: 3.0.4_postcss@8.4.21
- postcss-place: 7.0.5_postcss@8.4.21
- postcss-pseudo-class-any-link: 7.1.6_postcss@8.4.21
- postcss-replace-overflow-wrap: 4.0.0_postcss@8.4.21
- postcss-selector-not: 5.0.0_postcss@8.4.21
- postcss-value-parser: 4.2.0
- dev: true
-
- /postcss-pseudo-class-any-link/7.1.6:
- resolution: {integrity: sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- postcss-selector-parser: 6.0.11
- dev: true
-
- /postcss-pseudo-class-any-link/7.1.6_postcss@8.4.21:
- resolution: {integrity: sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==}
- engines: {node: ^12 || ^14 || >=16}
- peerDependencies:
- postcss: ^8.2
- dependencies:
- postcss: 8.4.21
- postcss-selector-parser: 6.0.11
- dev: true
-
- /postcss-replace-overflow-wrap/4.0.0:
- resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==}
- peerDependencies:
- postcss: ^8.0.3
- dev: true
-
- /postcss-replace-overflow-wrap/4.0.0_postcss@8.4.21:
- resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==}
- peerDependencies:
- postcss: ^8.0.3
- dependencies:
- postcss: 8.4.21
- dev: true
-
- /postcss-selector-not/5.0.0:
- resolution: {integrity: sha512-/2K3A4TCP9orP4TNS7u3tGdRFVKqz/E6pX3aGnriPG0jU78of8wsUcqE4QAhWEU0d+WnMSF93Ah3F//vUtK+iQ==}
- peerDependencies:
- postcss: ^8.1.0
- dependencies:
- balanced-match: 1.0.2
- dev: true
-
- /postcss-selector-not/5.0.0_postcss@8.4.21:
- resolution: {integrity: sha512-/2K3A4TCP9orP4TNS7u3tGdRFVKqz/E6pX3aGnriPG0jU78of8wsUcqE4QAhWEU0d+WnMSF93Ah3F//vUtK+iQ==}
- peerDependencies:
- postcss: ^8.1.0
- dependencies:
- balanced-match: 1.0.2
- postcss: 8.4.21
- dev: true
-
- /postcss-selector-parser/6.0.11:
- resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==}
- engines: {node: '>=4'}
- dependencies:
- cssesc: 3.0.0
- util-deprecate: 1.0.2
- dev: true
-
- /postcss-syntax/0.36.2_postcss@8.4.21:
- resolution: {integrity: sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==}
- peerDependencies:
- postcss: '>=5.0.0'
- postcss-html: '*'
- postcss-jsx: '*'
- postcss-less: '*'
- postcss-markdown: '*'
- postcss-scss: '*'
- peerDependenciesMeta:
- postcss-html:
- optional: true
- postcss-jsx:
- optional: true
- postcss-less:
- optional: true
- postcss-markdown:
- optional: true
- postcss-scss:
- optional: true
- dependencies:
- postcss: 8.4.21
- dev: true
-
- /postcss-value-parser/4.2.0:
- resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
- dev: true
-
- /postcss/8.4.21:
- resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==}
- engines: {node: ^10 || ^12 || >=14}
- dependencies:
- nanoid: 3.3.4
- picocolors: 1.0.0
- source-map-js: 1.0.2
- dev: true
-
- /prepend-http/1.0.4:
- resolution: {integrity: sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /prettier-plugin-organize-imports/3.2.2_prettier@2.8.4:
- resolution: {integrity: sha512-e97lE6odGSiHonHJMTYC0q0iLXQyw0u5z/PJpvP/3vRy6/Zi9kLBwFAbEGjDzIowpjQv8b+J04PDamoUSQbzGA==}
- peerDependencies:
- '@volar/vue-language-plugin-pug': ^1.0.4
- '@volar/vue-typescript': ^1.0.4
- prettier: '>=2.0'
- typescript: '>=2.9'
- peerDependenciesMeta:
- '@volar/vue-language-plugin-pug':
- optional: true
- '@volar/vue-typescript':
- optional: true
- dependencies:
- prettier: 2.8.4
- dev: true
-
- /prettier-plugin-packagejson/2.4.3_prettier@2.8.4:
- resolution: {integrity: sha512-kPeeviJiwy0BgOSk7No8NmzzXfW4R9FYWni6ziA5zc1kGVVrKnBzMZdu2TUhI+I7h8/5Htt3vARYOk7KKJTTNQ==}
- peerDependencies:
- prettier: '>= 1.16.0'
- peerDependenciesMeta:
- prettier:
- optional: true
- dependencies:
- prettier: 2.8.4
- sort-package-json: 2.4.1
- synckit: 0.8.5
- dev: true
-
- /prettier/2.8.4:
- resolution: {integrity: sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==}
- engines: {node: '>=10.13.0'}
- hasBin: true
- dev: true
-
- /pretty-error/4.0.0:
- resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==}
- dependencies:
- lodash: 4.17.21
- renderkid: 3.0.0
- dev: true
-
- /prism-react-renderer/1.3.5:
- resolution: {integrity: sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==}
- peerDependencies:
- react: '>=0.14.9'
-
- /prism-themes/1.9.0:
- resolution: {integrity: sha512-tX2AYsehKDw1EORwBps+WhBFKc2kxfoFpQAjxBndbZKr4fRmMkv47XN0BghC/K1qwodB1otbe4oF23vUTFDokw==}
- dev: true
-
- /prismjs/1.29.0:
- resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==}
- engines: {node: '>=6'}
-
- /process-nextick-args/2.0.1:
- resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
- dev: true
-
- /process-warning/1.0.0:
- resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==}
- dev: true
-
- /process/0.11.10:
- resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
- engines: {node: '>= 0.6.0'}
- dev: true
-
- /promise-inflight/1.0.1_bluebird@3.7.2:
- resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==}
- peerDependencies:
- bluebird: '*'
- peerDependenciesMeta:
- bluebird:
- optional: true
- dependencies:
- bluebird: 3.7.2
- dev: true
-
- /promise-retry/1.1.1:
- resolution: {integrity: sha512-StEy2osPr28o17bIW776GtwO6+Q+M9zPiZkYfosciUUMYqjhU/ffwRAH0zN2+uvGyUsn8/YICIHRzLbPacpZGw==}
- engines: {node: '>=0.12'}
- dependencies:
- err-code: 1.1.2
- retry: 0.10.1
- dev: true
-
- /prop-types/15.8.1:
- resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
- dependencies:
- loose-envify: 1.4.0
- object-assign: 4.1.1
- react-is: 16.13.1
- dev: true
-
- /property-information/6.2.0:
- resolution: {integrity: sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==}
- dev: true
-
- /protoduck/4.0.0:
- resolution: {integrity: sha512-9sxuz0YTU/68O98xuDn8NBxTVH9EuMhrBTxZdiBL0/qxRmWhB/5a8MagAebDa+98vluAZTs8kMZibCdezbRCeQ==}
- dependencies:
- genfun: 4.0.1
- dev: true
-
- /prr/1.0.1:
- resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==}
- dev: true
- optional: true
-
- /pseudomap/1.0.2:
- resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==}
- dev: true
-
- /public-encrypt/4.0.3:
- resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==}
- dependencies:
- bn.js: 4.12.0
- browserify-rsa: 4.1.0
- create-hash: 1.2.0
- parse-asn1: 5.1.6
- randombytes: 2.1.0
- safe-buffer: 5.2.1
- dev: true
-
- /pump/1.0.3:
- resolution: {integrity: sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==}
- dependencies:
- end-of-stream: 1.4.4
- once: 1.4.0
- dev: true
-
- /pump/2.0.1:
- resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==}
- dependencies:
- end-of-stream: 1.4.4
- once: 1.4.0
- dev: true
-
- /pumpify/1.5.1:
- resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==}
- dependencies:
- duplexify: 3.7.1
- inherits: 2.0.4
- pump: 2.0.1
- dev: true
-
- /punycode/1.3.2:
- resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==}
- dev: true
-
- /punycode/1.4.1:
- resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==}
- dev: true
-
- /punycode/2.3.0:
- resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==}
- engines: {node: '>=6'}
- dev: true
-
- /q/1.5.1:
- resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==}
- engines: {node: '>=0.6.0', teleport: '>=0.2.0'}
- dev: true
-
- /query-string/6.14.1:
- resolution: {integrity: sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==}
- engines: {node: '>=6'}
- dependencies:
- decode-uri-component: 0.2.2
- filter-obj: 1.1.0
- split-on-first: 1.1.0
- strict-uri-encode: 2.0.0
- dev: true
-
- /querystring-es3/0.2.1:
- resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==}
- engines: {node: '>=0.4.x'}
- dev: true
-
- /querystring/0.2.0:
- resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==}
- engines: {node: '>=0.4.x'}
- deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
- dev: true
-
- /queue-microtask/1.2.3:
- resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
- dev: true
-
- /queue/6.0.1:
- resolution: {integrity: sha512-AJBQabRCCNr9ANq8v77RJEv73DPbn55cdTb+Giq4X0AVnNVZvMHlYp7XlQiN+1npCZj1DuSmaA2hYVUUDgxFDg==}
- dependencies:
- inherits: 2.0.4
- dev: true
-
- /quick-format-unescaped/4.0.4:
- resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==}
- dev: true
-
- /quick-lru/4.0.1:
- resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==}
- engines: {node: '>=8'}
- dev: true
-
- /railroad-diagrams/1.0.0:
- resolution: {integrity: sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==}
- dev: true
-
- /ramda/0.28.0:
- resolution: {integrity: sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA==}
- dev: true
-
- /randexp/0.4.6:
- resolution: {integrity: sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==}
- engines: {node: '>=0.12'}
- dependencies:
- discontinuous-range: 1.0.0
- ret: 0.1.15
- dev: true
-
- /randombytes/2.1.0:
- resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
- dependencies:
- safe-buffer: 5.2.1
- dev: true
-
- /randomfill/1.0.4:
- resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==}
- dependencies:
- randombytes: 2.1.0
- safe-buffer: 5.2.1
- dev: true
-
- /raw-loader/4.0.2:
- resolution: {integrity: sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==}
- engines: {node: '>= 10.13.0'}
- peerDependencies:
- webpack: ^4.0.0 || ^5.0.0
- dependencies:
- loader-utils: 2.0.4
- schema-utils: 3.1.1
- dev: true
-
- /rc-align/4.0.15:
- resolution: {integrity: sha512-wqJtVH60pka/nOX7/IspElA8gjPNQKIx/ZqJ6heATCkXpe1Zg4cPVrMD2vC96wjsFFL8WsmhPbx9tdMo1qqlIA==}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
- dependencies:
- '@babel/runtime': 7.21.0
- classnames: 2.3.2
- dom-align: 1.12.4
- rc-util: 5.28.0
- resize-observer-polyfill: 1.5.1
- dev: true
-
- /rc-dropdown/4.0.1:
- resolution: {integrity: sha512-OdpXuOcme1rm45cR0Jzgfl1otzmU4vuBVb+etXM8vcaULGokAKVpKlw8p6xzspG7jGd/XxShvq+N3VNEfk/l5g==}
- peerDependencies:
- react: '>=16.11.0'
- react-dom: '>=16.11.0'
- dependencies:
- '@babel/runtime': 7.21.0
- classnames: 2.3.2
- rc-trigger: 5.3.4
- rc-util: 5.28.0
- dev: true
-
- /rc-menu/9.8.2:
- resolution: {integrity: sha512-EahOJVjLuEnJsThoPN+mGnVm431RzVzDLZWHRS/YnXTQULa7OsgdJa/Y7qXxc3Z5sz8mgT6xYtgpmBXLxrZFaQ==}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
- dependencies:
- '@babel/runtime': 7.21.0
- classnames: 2.3.2
- rc-motion: 2.6.3
- rc-overflow: 1.2.8
- rc-trigger: 5.3.4
- rc-util: 5.28.0
- dev: true
-
- /rc-motion/2.6.3:
- resolution: {integrity: sha512-xFLkes3/7VL/J+ah9jJruEW/Akbx5F6jVa2wG5o/ApGKQKSOd5FR3rseHLL9+xtJg4PmCwo6/1tqhDO/T+jFHA==}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
- dependencies:
- '@babel/runtime': 7.21.0
- classnames: 2.3.2
- rc-util: 5.28.0
- dev: true
-
- /rc-overflow/1.2.8:
- resolution: {integrity: sha512-QJ0UItckWPQ37ZL1dMEBAdY1dhfTXFL9k6oTTcyydVwoUNMnMqCGqnRNA98axSr/OeDKqR6DVFyi8eA5RQI/uQ==}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
- dependencies:
- '@babel/runtime': 7.21.0
- classnames: 2.3.2
- rc-resize-observer: 1.3.1
- rc-util: 5.28.0
- dev: true
-
- /rc-resize-observer/1.3.1:
- resolution: {integrity: sha512-iFUdt3NNhflbY3mwySv5CA1TC06zdJ+pfo0oc27xpf4PIOvfZwZGtD9Kz41wGYqC4SLio93RVAirSSpYlV/uYg==}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
- dependencies:
- '@babel/runtime': 7.21.0
- classnames: 2.3.2
- rc-util: 5.28.0
- resize-observer-polyfill: 1.5.1
- dev: true
-
- /rc-tabs/12.5.7:
- resolution: {integrity: sha512-i9gY2TcwCNmBM+bXCDDTvb6mnRYIDkkNm+UGoIqrLOFnRRbAqjsSf+tgyvzhBvbK8XcSrMhzKKLaOMbGyND8YA==}
- engines: {node: '>=8.x'}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
- dependencies:
- '@babel/runtime': 7.21.0
- classnames: 2.3.2
- rc-dropdown: 4.0.1
- rc-menu: 9.8.2
- rc-motion: 2.6.3
- rc-resize-observer: 1.3.1
- rc-util: 5.28.0
- dev: true
-
- /rc-trigger/5.3.4:
- resolution: {integrity: sha512-mQv+vas0TwKcjAO2izNPkqR4j86OemLRmvL2nOzdP9OWNWA1ivoTt5hzFqYNW9zACwmTezRiN8bttrC7cZzYSw==}
- engines: {node: '>=8.x'}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
- dependencies:
- '@babel/runtime': 7.21.0
- classnames: 2.3.2
- rc-align: 4.0.15
- rc-motion: 2.6.3
- rc-util: 5.28.0
- dev: true
-
- /rc-util/5.28.0:
- resolution: {integrity: sha512-KYDjhGodswVj29v0TRciKTqRPgumIFvFDndbCD227pitQ+0Cei196rxk+OXb/blu6V8zdTRK5RjCJn+WmHLvBA==}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
- dependencies:
- '@babel/runtime': 7.21.0
- react-is: 16.13.1
- dev: true
-
- /rc/1.2.8:
- resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
- hasBin: true
- dependencies:
- deep-extend: 0.6.0
- ini: 1.3.8
- minimist: 1.2.8
- strip-json-comments: 2.0.1
- dev: true
-
- /react-copy-to-clipboard/5.1.0:
- resolution: {integrity: sha512-k61RsNgAayIJNoy9yDsYzDe/yAZAzEbEgcz3DZMhF686LEyukcE1hzurxe85JandPUG+yTfGVFzuEw3xt8WP/A==}
- peerDependencies:
- react: ^15.3.0 || 16 || 17 || 18
- dependencies:
- copy-to-clipboard: 3.3.3
- prop-types: 15.8.1
- dev: true
-
- /react-dom/18.1.0_react@18.1.0:
- resolution: {integrity: sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w==}
- peerDependencies:
- react: ^18.1.0
- dependencies:
- loose-envify: 1.4.0
- react: 18.1.0
- scheduler: 0.22.0
- dev: true
-
- /react-error-boundary/3.1.4:
- resolution: {integrity: sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==}
- engines: {node: '>=10', npm: '>=6'}
- peerDependencies:
- react: '>=16.13.1'
- dependencies:
- '@babel/runtime': 7.21.0
- dev: true
-
- /react-error-overlay/6.0.9:
- resolution: {integrity: sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==}
- dev: true
-
- /react-fast-compare/3.2.0:
- resolution: {integrity: sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==}
- dev: true
-
- /react-helmet-async/1.3.0:
- resolution: {integrity: sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==}
- peerDependencies:
- react: ^16.6.0 || ^17.0.0 || ^18.0.0
- react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0
- dependencies:
- '@babel/runtime': 7.21.0
- invariant: 2.2.4
- prop-types: 15.8.1
- react-fast-compare: 3.2.0
- shallowequal: 1.1.0
- dev: true
-
- /react-helmet-async/1.3.0_ef5jwxihqo6n7gxfmzogljlgcm:
- resolution: {integrity: sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==}
- peerDependencies:
- react: ^16.6.0 || ^17.0.0 || ^18.0.0
- react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0
- dependencies:
- '@babel/runtime': 7.21.0
- invariant: 2.2.4
- prop-types: 15.8.1
- react: 18.1.0
- react-dom: 18.1.0_react@18.1.0
- react-fast-compare: 3.2.0
- shallowequal: 1.1.0
- dev: true
-
- /react-intl/6.2.10:
- resolution: {integrity: sha512-l2TpskkFR0OzQnq7ChiJ5ZX23USZSzpKOcaR9MYC4UOHE9bT4kQ5JXXolgkq3tiOlvseEOzUCerlzn886AX9Yg==}
- peerDependencies:
- react: ^16.6.0 || 17 || 18
- typescript: ^4.7
- peerDependenciesMeta:
- typescript:
- optional: true
- dependencies:
- '@formatjs/ecma402-abstract': 1.14.3
- '@formatjs/icu-messageformat-parser': 2.3.0
- '@formatjs/intl': 2.6.7
- '@formatjs/intl-displaynames': 6.2.6
- '@formatjs/intl-listformat': 7.1.9
- '@types/hoist-non-react-statics': 3.3.1
- '@types/react': 18.0.28
- hoist-non-react-statics: 3.3.2
- intl-messageformat: 10.3.1
- tslib: 2.5.0
- dev: true
-
- /react-is/16.13.1:
- resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
- dev: true
-
- /react-merge-refs/1.1.0:
- resolution: {integrity: sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ==}
- dev: true
-
- /react-refresh/0.14.0:
- resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /react-router-dom/6.3.0:
- resolution: {integrity: sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==}
- peerDependencies:
- react: '>=16.8'
- react-dom: '>=16.8'
- dependencies:
- history: 5.3.0
- react-router: 6.3.0
- dev: true
-
- /react-router-dom/6.3.0_ef5jwxihqo6n7gxfmzogljlgcm:
- resolution: {integrity: sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==}
- peerDependencies:
- react: '>=16.8'
- react-dom: '>=16.8'
- dependencies:
- history: 5.3.0
- react: 18.1.0
- react-dom: 18.1.0_react@18.1.0
- react-router: 6.3.0_react@18.1.0
- dev: true
-
- /react-router/6.3.0:
- resolution: {integrity: sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==}
- peerDependencies:
- react: '>=16.8'
- dependencies:
- history: 5.3.0
- dev: true
-
- /react-router/6.3.0_react@18.1.0:
- resolution: {integrity: sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==}
- peerDependencies:
- react: '>=16.8'
- dependencies:
- history: 5.3.0
- react: 18.1.0
- dev: true
-
- /react/18.1.0:
- resolution: {integrity: sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==}
- engines: {node: '>=0.10.0'}
- dependencies:
- loose-envify: 1.4.0
- dev: true
-
- /read-pkg-up/7.0.1:
- resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
- engines: {node: '>=8'}
- dependencies:
- find-up: 4.1.0
- read-pkg: 5.2.0
- type-fest: 0.8.1
- dev: true
-
- /read-pkg/5.2.0:
- resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==}
- engines: {node: '>=8'}
- dependencies:
- '@types/normalize-package-data': 2.4.1
- normalize-package-data: 2.5.0
- parse-json: 5.2.0
- type-fest: 0.6.0
- dev: true
-
- /readable-stream/2.3.8:
- resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
- dependencies:
- core-util-is: 1.0.3
- inherits: 2.0.4
- isarray: 1.0.0
- process-nextick-args: 2.0.1
- safe-buffer: 5.1.2
- string_decoder: 1.1.1
- util-deprecate: 1.0.2
- dev: true
-
- /readable-stream/3.6.1:
- resolution: {integrity: sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==}
- engines: {node: '>= 6'}
- dependencies:
- inherits: 2.0.4
- string_decoder: 1.3.0
- util-deprecate: 1.0.2
- dev: true
-
- /readdirp/3.6.0:
- resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
- engines: {node: '>=8.10.0'}
- dependencies:
- picomatch: 2.3.1
- dev: true
-
- /real-require/0.1.0:
- resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==}
- engines: {node: '>= 12.13.0'}
- dev: true
-
- /redent/3.0.0:
- resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==}
- engines: {node: '>=8'}
- dependencies:
- indent-string: 4.0.0
- strip-indent: 3.0.0
- dev: true
-
- /reflect.getprototypeof/1.0.3:
- resolution: {integrity: sha512-TTAOZpkJ2YLxl7mVHWrNo3iDMEkYlva/kgFcXndqMgbo/AZUmmavEkdXV+hXtE4P8xdyEKRzalaFqZVuwIk/Nw==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.2
- define-properties: 1.2.0
- es-abstract: 1.21.1
- get-intrinsic: 1.2.0
- globalthis: 1.0.3
- which-builtin-type: 1.1.3
- dev: true
-
- /regenerate-unicode-properties/10.1.0:
- resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==}
- engines: {node: '>=4'}
- dependencies:
- regenerate: 1.4.2
- dev: true
-
- /regenerate/1.4.2:
- resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==}
- dev: true
-
- /regenerator-runtime/0.13.11:
- resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==}
- dev: true
-
- /regexp.prototype.flags/1.4.3:
- resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.2
- define-properties: 1.2.0
- functions-have-names: 1.2.3
- dev: true
-
- /regexpp/3.2.0:
- resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==}
- engines: {node: '>=8'}
- dev: true
-
- /registry-auth-token/3.4.0:
- resolution: {integrity: sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==}
- dependencies:
- rc: 1.2.8
- safe-buffer: 5.2.1
- dev: true
-
- /registry-url/3.1.0:
- resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==}
- engines: {node: '>=0.10.0'}
- dependencies:
- rc: 1.2.8
- dev: true
-
- /rehype-autolink-headings/6.1.1:
- resolution: {integrity: sha512-NMYzZIsHM3sA14nC5rAFuUPIOfg+DFmf9EY1YMhaNlB7+3kK/ZlE6kqPfuxr1tsJ1XWkTrMtMoyHosU70d35mA==}
- dependencies:
- '@types/hast': 2.3.4
- extend: 3.0.2
- hast-util-has-property: 2.0.1
- hast-util-heading-rank: 2.1.1
- hast-util-is-element: 2.1.3
- unified: 10.1.2
- unist-util-visit: 4.1.2
- dev: true
-
- /rehype-remove-comments/5.0.0:
- resolution: {integrity: sha512-sfiVT+u1in19sxo9vv/SDQVbHE2mADScNrpeVsUxBFl14zOMZnfPb6l4hR+lXqe10G13UFVqv5pt8zDbCR4JYQ==}
- dependencies:
- '@types/hast': 2.3.4
- hast-util-is-conditional-comment: 2.0.0
- unified: 10.1.2
- unist-util-filter: 4.0.1
- dev: true
-
- /rehype-stringify/9.0.3:
- resolution: {integrity: sha512-kWiZ1bgyWlgOxpqD5HnxShKAdXtb2IUljn3hQAhySeak6IOQPPt6DeGnsIh4ixm7yKJWzm8TXFuC/lPfcWHJqw==}
- dependencies:
- '@types/hast': 2.3.4
- hast-util-to-html: 8.0.4
- unified: 10.1.2
- dev: true
-
- /relateurl/0.2.7:
- resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==}
- engines: {node: '>= 0.10'}
- dev: true
-
- /remark-breaks/3.0.2:
- resolution: {integrity: sha512-x96YDJ9X+Ry0/JNZFKfr1hpcAKvGYWfUTszxY9RbxKEqq6uzPPoLCuHdZsLPZZUdAv3nCROyc7FPrQLWr2rxyw==}
- dependencies:
- '@types/mdast': 3.0.10
- unified: 10.1.2
- unist-util-visit: 4.1.2
- dev: true
-
- /remark-directive/2.0.1:
- resolution: {integrity: sha512-oosbsUAkU/qmUE78anLaJePnPis4ihsE7Agp0T/oqTzvTea8pOiaYEtfInU/+xMOVTS9PN5AhGOiaIVe4GD8gw==}
- dependencies:
- '@types/mdast': 3.0.10
- mdast-util-directive: 2.2.4
- micromark-extension-directive: 2.1.2
- unified: 10.1.2
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /remark-frontmatter/4.0.1:
- resolution: {integrity: sha512-38fJrB0KnmD3E33a5jZC/5+gGAC2WKNiPw1/fdXJvijBlhA7RCsvJklrYJakS0HedninvaCYW8lQGf9C918GfA==}
- dependencies:
- '@types/mdast': 3.0.10
- mdast-util-frontmatter: 1.0.1
- micromark-extension-frontmatter: 1.0.1
- unified: 10.1.2
- dev: true
-
- /remark-gfm/3.0.1:
- resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==}
- dependencies:
- '@types/mdast': 3.0.10
- mdast-util-gfm: 2.0.2
- micromark-extension-gfm: 2.0.1
- unified: 10.1.2
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /remark-parse/10.0.1:
- resolution: {integrity: sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==}
- dependencies:
- '@types/mdast': 3.0.10
- mdast-util-from-markdown: 1.3.0
- unified: 10.1.2
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /remark-rehype/10.1.0:
- resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==}
- dependencies:
- '@types/hast': 2.3.4
- '@types/mdast': 3.0.10
- mdast-util-to-hast: 12.3.0
- unified: 10.1.2
- dev: true
-
- /remote-origin-url/0.4.0:
- resolution: {integrity: sha512-HYhdsT2pNd0LP4Osb0vtQ1iassxIc3Yk1oze7j8dMJFciMkW8e0rdg9E/mOunqtSVHSzvMfwLDIYzPnEDmpk6Q==}
- engines: {node: '>= 0.8.0'}
- dependencies:
- parse-git-config: 0.2.0
- dev: true
-
- /remote-origin-url/0.5.3:
- resolution: {integrity: sha512-crQ7Xk1m/F2IiwBx5oTqk/c0hjoumrEz+a36+ZoVupskQRE/q7pAwHKsTNeiZ31sbSTELvVlVv4h1W0Xo5szKg==}
- engines: {node: '>= 0.8.0'}
- dependencies:
- parse-git-config: 1.1.1
- dev: true
-
- /renderkid/3.0.0:
- resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==}
- dependencies:
- css-select: 4.3.0
- dom-converter: 0.2.0
- htmlparser2: 6.1.0
- lodash: 4.17.21
- strip-ansi: 6.0.1
- dev: true
-
- /require-directory/2.1.1:
- resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /require-from-string/2.0.2:
- resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /resize-observer-polyfill/1.5.1:
- resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==}
- dev: true
-
- /resolve-dir/0.1.1:
- resolution: {integrity: sha512-QxMPqI6le2u0dCLyiGzgy92kjkkL6zO0XyvHzjdTNH3zM6e5Hz3BwG6+aEyNgiQ5Xz6PwTwgQEj3U50dByPKIA==}
- engines: {node: '>=0.10.0'}
- dependencies:
- expand-tilde: 1.2.2
- global-modules: 0.2.3
- dev: true
-
- /resolve-from/4.0.0:
- resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
- engines: {node: '>=4'}
- dev: true
-
- /resolve-from/5.0.0:
- resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
- engines: {node: '>=8'}
- dev: true
-
- /resolve-global/1.0.0:
- resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==}
- engines: {node: '>=8'}
- dependencies:
- global-dirs: 0.1.1
- dev: true
-
- /resolve/1.22.1:
- resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==}
- hasBin: true
- dependencies:
- is-core-module: 2.11.0
- path-parse: 1.0.7
- supports-preserve-symlinks-flag: 1.0.0
- dev: true
-
- /resolve/2.0.0-next.4:
- resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==}
- hasBin: true
- dependencies:
- is-core-module: 2.11.0
- path-parse: 1.0.7
- supports-preserve-symlinks-flag: 1.0.0
- dev: true
-
- /restore-cursor/2.0.0:
- resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==}
- engines: {node: '>=4'}
- dependencies:
- onetime: 2.0.1
- signal-exit: 3.0.7
- dev: true
-
- /restore-cursor/3.1.0:
- resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==}
- engines: {node: '>=8'}
- dependencies:
- onetime: 5.1.2
- signal-exit: 3.0.7
- dev: true
-
- /ret/0.1.15:
- resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==}
- engines: {node: '>=0.12'}
- dev: true
-
- /retry/0.10.1:
- resolution: {integrity: sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==}
- dev: true
-
- /reusify/1.0.4:
- resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
- engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
- dev: true
-
- /rfdc/1.3.0:
- resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==}
- dev: true
-
- /rimraf/2.7.1:
- resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==}
- hasBin: true
- dependencies:
- glob: 7.2.3
- dev: true
-
- /ripemd160/2.0.2:
- resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==}
- dependencies:
- hash-base: 3.1.0
- inherits: 2.0.4
- dev: true
-
- /rollup-plugin-visualizer/5.9.0:
- resolution: {integrity: sha512-bbDOv47+Bw4C/cgs0czZqfm8L82xOZssk4ayZjG40y9zbXclNk7YikrZTDao6p7+HDiGxrN0b65SgZiVm9k1Cg==}
- engines: {node: '>=14'}
- hasBin: true
- peerDependencies:
- rollup: 2.x || 3.x
- peerDependenciesMeta:
- rollup:
- optional: true
- dependencies:
- open: 8.4.2
- picomatch: 2.3.1
- source-map: 0.7.4
- yargs: 17.7.1
- dev: true
-
- /rollup/3.18.0:
- resolution: {integrity: sha512-J8C6VfEBjkvYPESMQYxKHxNOh4A5a3FlP+0BETGo34HEcE4eTlgCrO2+eWzlu2a/sHs2QUkZco+wscH7jhhgWg==}
- engines: {node: '>=14.18.0', npm: '>=8.0.0'}
- hasBin: true
- optionalDependencies:
- fsevents: 2.3.2
- dev: true
-
- /run-async/2.4.1:
- resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==}
- engines: {node: '>=0.12.0'}
- dev: true
-
- /run-parallel/1.2.0:
- resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
- dependencies:
- queue-microtask: 1.2.3
- dev: true
-
- /run-queue/1.0.3:
- resolution: {integrity: sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==}
- dependencies:
- aproba: 1.2.0
- dev: true
-
- /rxjs/6.6.7:
- resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==}
- engines: {npm: '>=2.0.0'}
- dependencies:
- tslib: 1.14.1
- dev: true
-
- /rxjs/7.8.0:
- resolution: {integrity: sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==}
- dependencies:
- tslib: 2.5.0
- dev: true
-
- /sade/1.8.1:
- resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
- engines: {node: '>=6'}
- dependencies:
- mri: 1.2.0
- dev: true
-
- /safe-buffer/5.1.2:
- resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
- dev: true
-
- /safe-buffer/5.2.1:
- resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
- dev: true
-
- /safe-regex-test/1.0.0:
- resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==}
- dependencies:
- call-bind: 1.0.2
- get-intrinsic: 1.2.0
- is-regex: 1.1.4
- dev: true
-
- /safe-stable-stringify/2.4.2:
- resolution: {integrity: sha512-gMxvPJYhP0O9n2pvcfYfIuYgbledAOJFcqRThtPRmjscaipiwcwPPKLytpVzMkG2HAN87Qmo2d4PtGiri1dSLA==}
- engines: {node: '>=10'}
- dev: true
-
- /safer-buffer/2.1.2:
- resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
- dev: true
-
- /sass/1.58.3:
- resolution: {integrity: sha512-Q7RaEtYf6BflYrQ+buPudKR26/lH+10EmO9bBqbmPh/KeLqv8bjpTNqxe71ocONqXq+jYiCbpPUmQMS+JJPk4A==}
- engines: {node: '>=12.0.0'}
- hasBin: true
- dependencies:
- chokidar: 3.5.3
- immutable: 4.2.4
- source-map-js: 1.0.2
- dev: true
-
- /sax/1.2.4:
- resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==}
- dev: true
-
- /scheduler/0.22.0:
- resolution: {integrity: sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==}
- dependencies:
- loose-envify: 1.4.0
- dev: true
-
- /schema-utils/3.1.1:
- resolution: {integrity: sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==}
- engines: {node: '>= 10.13.0'}
- dependencies:
- '@types/json-schema': 7.0.11
- ajv: 6.12.6
- ajv-keywords: 3.5.2_ajv@6.12.6
- dev: true
-
- /selderee/0.6.0:
- resolution: {integrity: sha512-ibqWGV5aChDvfVdqNYuaJP/HnVBhlRGSRrlbttmlMpHcLuTqqbMH36QkSs9GEgj5M88JDYLI8eyP94JaQ8xRlg==}
- dependencies:
- parseley: 0.7.0
- dev: true
-
- /select-hose/2.0.0:
- resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==}
- dev: true
-
- /semver-diff/2.1.0:
- resolution: {integrity: sha512-gL8F8L4ORwsS0+iQ34yCYv///jsOq0ZL7WP55d1HnJ32o7tyFYEFQZQA22mrLIacZdU6xecaBBZ+uEiffGNyXw==}
- engines: {node: '>=0.10.0'}
- dependencies:
- semver: 5.7.1
- dev: true
-
- /semver/5.7.1:
- resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==}
- hasBin: true
- dev: true
-
- /semver/6.3.0:
- resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
- hasBin: true
- dev: true
-
- /semver/7.3.8:
- resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==}
- engines: {node: '>=10'}
- hasBin: true
- dependencies:
- lru-cache: 6.0.0
- dev: true
-
- /setimmediate/1.0.5:
- resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==}
- dev: true
-
- /sha.js/2.4.11:
- resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==}
- hasBin: true
- dependencies:
- inherits: 2.0.4
- safe-buffer: 5.2.1
- dev: true
-
- /shallowequal/1.1.0:
- resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==}
- dev: true
-
- /shebang-command/1.2.0:
- resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- shebang-regex: 1.0.0
- dev: true
-
- /shebang-command/2.0.0:
- resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
- engines: {node: '>=8'}
- dependencies:
- shebang-regex: 3.0.0
- dev: true
-
- /shebang-regex/1.0.0:
- resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /shebang-regex/3.0.0:
- resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
- engines: {node: '>=8'}
- dev: true
-
- /shortid/2.2.16:
- resolution: {integrity: sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g==}
- dependencies:
- nanoid: 2.1.11
- dev: true
-
- /side-channel/1.0.4:
- resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
- dependencies:
- call-bind: 1.0.2
- get-intrinsic: 1.2.0
- object-inspect: 1.12.3
- dev: true
-
- /signal-exit/3.0.7:
- resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
- dev: true
-
- /sitemap/7.1.1:
- resolution: {integrity: sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==}
- engines: {node: '>=12.0.0', npm: '>=5.6.0'}
- hasBin: true
- dependencies:
- '@types/node': 17.0.45
- '@types/sax': 1.2.4
- arg: 5.0.2
- sax: 1.2.4
- dev: true
-
- /slash/3.0.0:
- resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
- engines: {node: '>=8'}
- dev: true
-
- /slash/4.0.0:
- resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==}
- engines: {node: '>=12'}
- dev: true
-
- /slice-ansi/3.0.0:
- resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==}
- engines: {node: '>=8'}
- dependencies:
- ansi-styles: 4.3.0
- astral-regex: 2.0.0
- is-fullwidth-code-point: 3.0.0
- dev: true
-
- /slice-ansi/4.0.0:
- resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==}
- engines: {node: '>=10'}
- dependencies:
- ansi-styles: 4.3.0
- astral-regex: 2.0.0
- is-fullwidth-code-point: 3.0.0
- dev: true
-
- /slice-ansi/5.0.0:
- resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==}
- engines: {node: '>=12'}
- dependencies:
- ansi-styles: 6.2.1
- is-fullwidth-code-point: 4.0.0
- dev: true
-
- /smart-buffer/1.1.15:
- resolution: {integrity: sha512-1+8bxygjTsNfvQe0/0pNBesTOlSHtOeG6b6LYbvsZCCHDKYZ40zcQo6YTnZBWrBSLWOCbrHljLdEmGMYebu7aQ==}
- engines: {node: '>= 0.10.15', npm: '>= 1.3.5'}
- dev: true
-
- /socks-proxy-agent/3.0.1:
- resolution: {integrity: sha512-ZwEDymm204mTzvdqyUqOdovVr2YRd2NYskrYrF2LXyZ9qDiMAoFESGK8CRphiO7rtbo2Y757k2Nia3x2hGtalA==}
- dependencies:
- agent-base: 4.3.0
- socks: 1.1.10
- dev: true
-
- /socks/1.1.10:
- resolution: {integrity: sha512-ArX4vGPULWjKDKgUnW8YzfI2uXW7kzgkJuB0GnFBA/PfT3exrrOk+7Wk2oeb894Qf20u1PWv9LEgrO0Z82qAzA==}
- engines: {node: '>= 0.10.0', npm: '>= 1.3.5'}
- deprecated: If using 2.x branch, please upgrade to at least 2.1.6 to avoid a serious bug with socket data flow and an import issue introduced in 2.1.0
- dependencies:
- ip: 1.1.8
- smart-buffer: 1.1.15
- dev: true
-
- /sonic-boom/2.8.0:
- resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==}
- dependencies:
- atomic-sleep: 1.0.0
- dev: true
-
- /sort-object-keys/1.1.3:
- resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==}
- dev: true
-
- /sort-package-json/2.4.1:
- resolution: {integrity: sha512-Nd3rgLBJcZ4iw7tpuOhwBupG6SvUDU0Fy1cZGAMorA2JmDUb+29Dg5phJK9gapa2Ak9d15w/RuMl/viwX+nKwQ==}
- hasBin: true
- dependencies:
- detect-indent: 7.0.1
- detect-newline: 4.0.0
- git-hooks-list: 3.1.0
- globby: 13.1.3
- is-plain-obj: 4.1.0
- sort-object-keys: 1.1.3
- dev: true
-
- /source-map-js/1.0.2:
- resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /source-map-support/0.5.21:
- resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
- dependencies:
- buffer-from: 1.1.2
- source-map: 0.6.1
- dev: true
-
- /source-map/0.6.1:
- resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /source-map/0.7.4:
- resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==}
- engines: {node: '>= 8'}
- dev: true
-
- /space-separated-tokens/2.0.2:
- resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
- dev: true
-
- /spdx-correct/3.2.0:
- resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
- dependencies:
- spdx-expression-parse: 3.0.1
- spdx-license-ids: 3.0.12
- dev: true
-
- /spdx-exceptions/2.3.0:
- resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==}
- dev: true
-
- /spdx-expression-parse/3.0.1:
- resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
- dependencies:
- spdx-exceptions: 2.3.0
- spdx-license-ids: 3.0.12
- dev: true
-
- /spdx-license-ids/3.0.12:
- resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==}
- dev: true
-
- /spdy-transport/3.0.0:
- resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==}
- dependencies:
- debug: 4.3.4
- detect-node: 2.1.0
- hpack.js: 2.1.6
- obuf: 1.1.2
- readable-stream: 3.6.1
- wbuf: 1.7.3
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /spdy/4.0.2:
- resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==}
- engines: {node: '>=6.0.0'}
- dependencies:
- debug: 4.3.4
- handle-thing: 2.0.1
- http-deceiver: 1.2.7
- select-hose: 2.0.0
- spdy-transport: 3.0.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /split-on-first/1.1.0:
- resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==}
- engines: {node: '>=6'}
- dev: true
-
- /split2/3.2.2:
- resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==}
- dependencies:
- readable-stream: 3.6.1
- dev: true
-
- /split2/4.1.0:
- resolution: {integrity: sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==}
- engines: {node: '>= 10.x'}
- dev: true
-
- /sprintf-js/1.0.3:
- resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
- dev: true
-
- /ssri/4.1.6:
- resolution: {integrity: sha512-WUbCdgSAMQjTFZRWvSPpauryvREEA+Krn19rx67UlJEJx/M192ZHxMmJXjZ4tkdFm+Sb0SXGlENeQVlA5wY7kA==}
- dependencies:
- safe-buffer: 5.2.1
- dev: true
-
- /ssri/5.3.0:
- resolution: {integrity: sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==}
- dependencies:
- safe-buffer: 5.2.1
- dev: true
-
- /stable/0.1.8:
- resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==}
- deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility'
- dev: true
-
- /stackframe/1.3.4:
- resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==}
- dev: true
-
- /stop-iteration-iterator/1.0.0:
- resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==}
- engines: {node: '>= 0.4'}
- dependencies:
- internal-slot: 1.0.5
- dev: true
-
- /stream-browserify/2.0.2:
- resolution: {integrity: sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==}
- dependencies:
- inherits: 2.0.4
- readable-stream: 2.3.8
- dev: true
-
- /stream-each/1.2.3:
- resolution: {integrity: sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==}
- dependencies:
- end-of-stream: 1.4.4
- stream-shift: 1.0.1
- dev: true
-
- /stream-http/2.8.3:
- resolution: {integrity: sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==}
- dependencies:
- builtin-status-codes: 3.0.0
- inherits: 2.0.4
- readable-stream: 2.3.8
- to-arraybuffer: 1.0.1
- xtend: 4.0.2
- dev: true
-
- /stream-shift/1.0.1:
- resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==}
- dev: true
-
- /strict-uri-encode/2.0.0:
- resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==}
- engines: {node: '>=4'}
- dev: true
-
- /string-argv/0.3.1:
- resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==}
- engines: {node: '>=0.6.19'}
- dev: true
-
- /string-width/2.1.1:
- resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==}
- engines: {node: '>=4'}
- dependencies:
- is-fullwidth-code-point: 2.0.0
- strip-ansi: 4.0.0
- dev: true
-
- /string-width/4.2.3:
- resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
- engines: {node: '>=8'}
- dependencies:
- emoji-regex: 8.0.0
- is-fullwidth-code-point: 3.0.0
- strip-ansi: 6.0.1
- dev: true
-
- /string-width/5.1.2:
- resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
- engines: {node: '>=12'}
- dependencies:
- eastasianwidth: 0.2.0
- emoji-regex: 9.2.2
- strip-ansi: 7.0.1
- dev: true
-
- /string.prototype.matchall/4.0.8:
- resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==}
- dependencies:
- call-bind: 1.0.2
- define-properties: 1.2.0
- es-abstract: 1.21.1
- get-intrinsic: 1.2.0
- has-symbols: 1.0.3
- internal-slot: 1.0.5
- regexp.prototype.flags: 1.4.3
- side-channel: 1.0.4
- dev: true
-
- /string.prototype.trimend/1.0.6:
- resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==}
- dependencies:
- call-bind: 1.0.2
- define-properties: 1.2.0
- es-abstract: 1.21.1
- dev: true
-
- /string.prototype.trimstart/1.0.6:
- resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==}
- dependencies:
- call-bind: 1.0.2
- define-properties: 1.2.0
- es-abstract: 1.21.1
- dev: true
-
- /string_decoder/1.1.1:
- resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
- dependencies:
- safe-buffer: 5.1.2
- dev: true
-
- /string_decoder/1.3.0:
- resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
- dependencies:
- safe-buffer: 5.2.1
- dev: true
-
- /stringify-entities/4.0.3:
- resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==}
- dependencies:
- character-entities-html4: 2.1.0
- character-entities-legacy: 3.0.0
- dev: true
-
- /strip-ansi/4.0.0:
- resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==}
- engines: {node: '>=4'}
- dependencies:
- ansi-regex: 3.0.1
- dev: true
-
- /strip-ansi/5.2.0:
- resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==}
- engines: {node: '>=6'}
- dependencies:
- ansi-regex: 4.1.1
- dev: true
-
- /strip-ansi/6.0.1:
- resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
- engines: {node: '>=8'}
- dependencies:
- ansi-regex: 5.0.1
- dev: true
-
- /strip-ansi/7.0.1:
- resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==}
- engines: {node: '>=12'}
- dependencies:
- ansi-regex: 6.0.1
- dev: true
-
- /strip-eof/1.0.0:
- resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /strip-final-newline/2.0.0:
- resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
- engines: {node: '>=6'}
- dev: true
-
- /strip-final-newline/3.0.0:
- resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
- engines: {node: '>=12'}
- dev: true
-
- /strip-indent/3.0.0:
- resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
- engines: {node: '>=8'}
- dependencies:
- min-indent: 1.0.1
- dev: true
-
- /strip-json-comments/2.0.1:
- resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /strip-outer/1.0.1:
- resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- escape-string-regexp: 1.0.5
- dev: true
-
- /style-to-object/0.4.1:
- resolution: {integrity: sha512-HFpbb5gr2ypci7Qw+IOhnP2zOU7e77b+rzM+wTzXzfi1PrtBCX0E7Pk4wL4iTLnhzZ+JgEGAhX81ebTg/aYjQw==}
- dependencies:
- inline-style-parser: 0.1.1
- dev: true
-
- /stylelint-config-recommended/7.0.0:
- resolution: {integrity: sha512-yGn84Bf/q41J4luis1AZ95gj0EQwRX8lWmGmBwkwBNSkpGSpl66XcPTulxGa/Z91aPoNGuIGBmFkcM1MejMo9Q==}
- peerDependencies:
- stylelint: ^14.4.0
- dev: true
-
- /stylelint-config-standard/25.0.0:
- resolution: {integrity: sha512-21HnP3VSpaT1wFjFvv9VjvOGDtAviv47uTp3uFmzcN+3Lt+RYRv6oAplLaV51Kf792JSxJ6svCJh/G18E9VnCA==}
- peerDependencies:
- stylelint: ^14.4.0
- dependencies:
- stylelint-config-recommended: 7.0.0
- dev: true
-
- /supports-color/5.5.0:
- resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
- engines: {node: '>=4'}
- dependencies:
- has-flag: 3.0.0
- dev: true
-
- /supports-color/7.2.0:
- resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
- engines: {node: '>=8'}
- dependencies:
- has-flag: 4.0.0
- dev: true
-
- /supports-color/8.1.1:
- resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
- engines: {node: '>=10'}
- dependencies:
- has-flag: 4.0.0
- dev: true
-
- /supports-preserve-symlinks-flag/1.0.0:
- resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
- engines: {node: '>= 0.4'}
- dev: true
-
- /svg-parser/2.0.4:
- resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==}
- dev: true
-
- /svgo/2.8.0:
- resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==}
- engines: {node: '>=10.13.0'}
- hasBin: true
- dependencies:
- '@trysound/sax': 0.2.0
- commander: 7.2.0
- css-select: 4.3.0
- css-tree: 1.1.3
- csso: 4.2.0
- picocolors: 1.0.0
- stable: 0.1.8
- dev: true
-
- /synckit/0.8.5:
- resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==}
- engines: {node: ^14.18.0 || >=16.0.0}
- dependencies:
- '@pkgr/utils': 2.3.1
- tslib: 2.5.0
- dev: true
-
- /tapable/2.2.1:
- resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
- engines: {node: '>=6'}
- dev: true
-
- /tar-fs/1.16.3:
- resolution: {integrity: sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==}
- dependencies:
- chownr: 1.1.4
- mkdirp: 0.5.6
- pump: 1.0.3
- tar-stream: 1.6.2
- dev: true
-
- /tar-stream/1.6.2:
- resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==}
- engines: {node: '>= 0.8.0'}
- dependencies:
- bl: 1.2.3
- buffer-alloc: 1.2.0
- end-of-stream: 1.4.4
- fs-constants: 1.0.0
- readable-stream: 2.3.8
- to-buffer: 1.1.1
- xtend: 4.0.2
- dev: true
-
- /term-size/1.2.0:
- resolution: {integrity: sha512-7dPUZQGy/+m3/wjVz3ZW5dobSoD/02NxJpoXUX0WIyjfVS3l0c+b/+9phIDFA7FHzkYtwtMFgeGZ/Y8jVTeqQQ==}
- engines: {node: '>=4'}
- dependencies:
- execa: 0.7.0
- dev: true
-
- /terser/5.16.5:
- resolution: {integrity: sha512-qcwfg4+RZa3YvlFh0qjifnzBHjKGNbtDo9yivMqMFDy9Q6FSaQWSB/j1xKhsoUFJIqDOM3TsN6D5xbrMrFcHbg==}
- engines: {node: '>=10'}
- hasBin: true
- dependencies:
- '@jridgewell/source-map': 0.3.2
- acorn: 8.8.2
- commander: 2.20.3
- source-map-support: 0.5.21
- dev: true
-
- /test-exclude/6.0.0:
- resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==}
- engines: {node: '>=8'}
- dependencies:
- '@istanbuljs/schema': 0.1.3
- glob: 7.2.3
- minimatch: 3.1.2
- dev: true
-
- /text-extensions/1.9.0:
- resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==}
- engines: {node: '>=0.10'}
- dev: true
-
- /textextensions/2.6.0:
- resolution: {integrity: sha512-49WtAWS+tcsy93dRt6P0P3AMD2m5PvXRhuEA0kaXos5ZLlujtYmpmFsB+QvWUSxE1ZsstmYXfQ7L40+EcQgpAQ==}
- engines: {node: '>=0.8'}
- dev: true
-
- /thread-stream/0.15.2:
- resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==}
- dependencies:
- real-require: 0.1.0
- dev: true
-
- /through/2.3.8:
- resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
- dev: true
-
- /through2/2.0.5:
- resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==}
- dependencies:
- readable-stream: 2.3.8
- xtend: 4.0.2
- dev: true
-
- /through2/4.0.2:
- resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==}
- dependencies:
- readable-stream: 3.6.1
- dev: true
-
- /timed-out/4.0.1:
- resolution: {integrity: sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /timers-browserify/2.0.12:
- resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==}
- engines: {node: '>=0.6.0'}
- dependencies:
- setimmediate: 1.0.5
- dev: true
-
- /tiny-glob/0.2.9:
- resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==}
- dependencies:
- globalyzer: 0.1.0
- globrex: 0.1.2
- dev: true
-
- /tmp/0.0.33:
- resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==}
- engines: {node: '>=0.6.0'}
- dependencies:
- os-tmpdir: 1.0.2
- dev: true
-
- /tmpl/1.0.5:
- resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==}
- dev: true
-
- /to-arraybuffer/1.0.1:
- resolution: {integrity: sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==}
- dev: true
-
- /to-buffer/1.1.1:
- resolution: {integrity: sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==}
- dev: true
-
- /to-fast-properties/2.0.0:
- resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
- engines: {node: '>=4'}
- dev: true
-
- /to-regex-range/5.0.1:
- resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
- engines: {node: '>=8.0'}
- dependencies:
- is-number: 7.0.0
- dev: true
-
- /toggle-selection/1.0.6:
- resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==}
- dev: true
-
- /trim-lines/3.0.1:
- resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
- dev: true
-
- /trim-newlines/3.0.1:
- resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==}
- engines: {node: '>=8'}
- dev: true
-
- /trim-repeated/1.0.0:
- resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- escape-string-regexp: 1.0.5
- dev: true
-
- /trough/2.1.0:
- resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==}
- dev: true
-
- /ts-node/10.9.1_alpjt73dvgv6kni625hu7f2l4m:
- resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==}
- hasBin: true
- peerDependencies:
- '@swc/core': '>=1.2.50'
- '@swc/wasm': '>=1.2.50'
- '@types/node': '*'
- typescript: '>=2.7'
- peerDependenciesMeta:
- '@swc/core':
- optional: true
- '@swc/wasm':
- optional: true
- dependencies:
- '@cspotcode/source-map-support': 0.8.1
- '@tsconfig/node10': 1.0.9
- '@tsconfig/node12': 1.0.11
- '@tsconfig/node14': 1.0.3
- '@tsconfig/node16': 1.0.3
- '@types/node': 18.14.6
- acorn: 8.8.2
- acorn-walk: 8.2.0
- arg: 4.1.3
- create-require: 1.1.1
- diff: 4.0.2
- make-error: 1.3.6
- typescript: 4.9.5
- v8-compile-cache-lib: 3.0.1
- yn: 3.1.1
- dev: true
-
- /tslib/1.14.1:
- resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
- dev: true
-
- /tslib/2.5.0:
- resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==}
- dev: true
-
- /tsutils/3.21.0:
- resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
- engines: {node: '>= 6'}
- peerDependencies:
- typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
- dependencies:
- tslib: 1.14.1
- dev: true
-
- /tsx/3.12.3:
- resolution: {integrity: sha512-Wc5BFH1xccYTXaQob+lEcimkcb/Pq+0en2s+ruiX0VEIC80nV7/0s7XRahx8NnsoCnpCVUPz8wrqVSPi760LkA==}
- hasBin: true
- dependencies:
- '@esbuild-kit/cjs-loader': 2.4.2
- '@esbuild-kit/core-utils': 3.1.0
- '@esbuild-kit/esm-loader': 2.5.5
- optionalDependencies:
- fsevents: 2.3.2
- dev: true
-
- /tty-browserify/0.0.0:
- resolution: {integrity: sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==}
- dev: true
-
- /type-fest/0.18.1:
- resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==}
- engines: {node: '>=10'}
- dev: true
-
- /type-fest/0.21.3:
- resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
- engines: {node: '>=10'}
- dev: true
-
- /type-fest/0.6.0:
- resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==}
- engines: {node: '>=8'}
- dev: true
-
- /type-fest/0.8.1:
- resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==}
- engines: {node: '>=8'}
- dev: true
-
- /typed-array-length/1.0.4:
- resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==}
- dependencies:
- call-bind: 1.0.2
- for-each: 0.3.3
- is-typed-array: 1.1.10
- dev: true
-
- /typedarray/0.0.6:
- resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==}
- dev: true
-
- /typescript/4.9.5:
- resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==}
- engines: {node: '>=4.2.0'}
- hasBin: true
- dev: true
-
- /umi/4.0.56_prettier@2.8.4+sass@1.58.3:
- resolution: {integrity: sha512-azfKTkDDP7vuPLOkF50f34MCxKyH6a6hs4u31P52Q8Iqw8qk9tx33C91BHc6ntJ9QOlO/g3ZfH0j0UhlEOCS7A==}
- engines: {node: '>=14'}
- hasBin: true
- dependencies:
- '@babel/runtime': 7.21.0
- '@umijs/bundler-utils': 4.0.56
- '@umijs/bundler-webpack': 4.0.56
- '@umijs/core': 4.0.56
- '@umijs/lint': 4.0.56
- '@umijs/preset-umi': 4.0.56_sass@1.58.3
- '@umijs/renderer-react': 4.0.56
- '@umijs/server': 4.0.56
- '@umijs/test': 4.0.56
- '@umijs/utils': 4.0.56
- prettier-plugin-organize-imports: 3.2.2_prettier@2.8.4
- prettier-plugin-packagejson: 2.4.3_prettier@2.8.4
- transitivePeerDependencies:
- - '@babel/core'
- - '@types/node'
- - '@types/react'
- - '@types/webpack'
- - '@volar/vue-language-plugin-pug'
- - '@volar/vue-typescript'
- - eslint
- - jest
- - postcss
- - postcss-html
- - postcss-jsx
- - postcss-less
- - postcss-markdown
- - postcss-scss
- - prettier
- - react
- - react-dom
- - rollup
- - sass
- - sockjs-client
- - styled-components
- - stylelint
- - stylus
- - sugarss
- - supports-color
- - terser
- - type-fest
- - typescript
- - vue-template-compiler
- - webpack
- - webpack-dev-server
- - webpack-hot-middleware
- - webpack-plugin-serve
- dev: true
-
- /unbox-primitive/1.0.2:
- resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
- dependencies:
- call-bind: 1.0.2
- has-bigints: 1.0.2
- has-symbols: 1.0.3
- which-boxed-primitive: 1.0.2
- dev: true
-
- /unfetch/5.0.0:
- resolution: {integrity: sha512-3xM2c89siXg0nHvlmYsQ2zkLASvVMBisZm5lF3gFDqfF2xonNStDJyMpvaOBe0a1Edxmqrf2E0HBdmy9QyZaeg==}
- dev: true
-
- /unified/10.1.2:
- resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==}
- dependencies:
- '@types/unist': 2.0.6
- bail: 2.0.2
- extend: 3.0.2
- is-buffer: 2.0.5
- is-plain-obj: 4.1.0
- trough: 2.1.0
- vfile: 5.3.7
- dev: true
-
- /unique-filename/1.1.1:
- resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==}
- dependencies:
- unique-slug: 2.0.2
- dev: true
-
- /unique-slug/2.0.2:
- resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==}
- dependencies:
- imurmurhash: 0.1.4
- dev: true
-
- /unique-string/1.0.0:
- resolution: {integrity: sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==}
- engines: {node: '>=4'}
- dependencies:
- crypto-random-string: 1.0.0
- dev: true
-
- /unist-util-filter/4.0.1:
- resolution: {integrity: sha512-RynicUM/vbOSTSiUK+BnaK9XMfmQUh6gyi7L6taNgc7FIf84GukXVV3ucGzEN/PhUUkdP5hb1MmXc+3cvPUm5Q==}
- dependencies:
- '@types/unist': 2.0.6
- unist-util-is: 5.2.1
- unist-util-visit-parents: 5.1.3
- dev: true
-
- /unist-util-generated/2.0.1:
- resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==}
- dev: true
-
- /unist-util-is/5.2.1:
- resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==}
- dependencies:
- '@types/unist': 2.0.6
- dev: true
-
- /unist-util-position/4.0.4:
- resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==}
- dependencies:
- '@types/unist': 2.0.6
- dev: true
-
- /unist-util-stringify-position/3.0.3:
- resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==}
- dependencies:
- '@types/unist': 2.0.6
- dev: true
-
- /unist-util-visit-parents/5.1.3:
- resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==}
- dependencies:
- '@types/unist': 2.0.6
- unist-util-is: 5.2.1
- dev: true
-
- /unist-util-visit/4.1.2:
- resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==}
- dependencies:
- '@types/unist': 2.0.6
- unist-util-is: 5.2.1
- unist-util-visit-parents: 5.1.3
- dev: true
-
- /universalify/0.1.2:
- resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
- engines: {node: '>= 4.0.0'}
- dev: true
-
- /universalify/2.0.0:
- resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==}
- engines: {node: '>= 10.0.0'}
- dev: true
-
- /unzip-response/2.0.1:
- resolution: {integrity: sha512-N0XH6lqDtFH84JxptQoZYmloF4nzrQqqrAymNj+/gW60AO2AZgOcf4O/nUXJcYfyQkqvMo9lSupBZmmgvuVXlw==}
- engines: {node: '>=4'}
- dev: true
-
- /update-browserslist-db/1.0.10_browserslist@4.21.5:
- resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==}
- hasBin: true
- peerDependencies:
- browserslist: '>= 4.21.0'
- dependencies:
- browserslist: 4.21.5
- escalade: 3.1.1
- picocolors: 1.0.0
- dev: true
-
- /update-notifier/2.5.0:
- resolution: {integrity: sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==}
- engines: {node: '>=4'}
- dependencies:
- boxen: 1.3.0
- chalk: 2.4.2
- configstore: 3.1.5
- import-lazy: 2.1.0
- is-ci: 1.2.1
- is-installed-globally: 0.1.0
- is-npm: 1.0.0
- latest-version: 3.1.0
- semver-diff: 2.1.0
- xdg-basedir: 3.0.0
- dev: true
-
- /uri-js/4.4.1:
- resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
- dependencies:
- punycode: 2.3.0
- dev: true
-
- /url-parse-lax/1.0.0:
- resolution: {integrity: sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==}
- engines: {node: '>=0.10.0'}
- dependencies:
- prepend-http: 1.0.4
- dev: true
-
- /url/0.11.0:
- resolution: {integrity: sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==}
- dependencies:
- punycode: 1.3.2
- querystring: 0.2.0
- dev: true
-
- /use-isomorphic-layout-effect/1.1.2_react@18.1.0:
- resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8.0 || ^17.0.0 || ^18.0.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- dependencies:
- react: 18.1.0
- dev: true
-
- /util-deprecate/1.0.2:
- resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
- dev: true
-
- /util/0.10.3:
- resolution: {integrity: sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==}
- dependencies:
- inherits: 2.0.1
- dev: true
-
- /util/0.11.1:
- resolution: {integrity: sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==}
- dependencies:
- inherits: 2.0.3
- dev: true
-
- /utila/0.4.0:
- resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==}
- dev: true
-
- /uvu/0.5.6:
- resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==}
- engines: {node: '>=8'}
- hasBin: true
- dependencies:
- dequal: 2.0.3
- diff: 5.1.0
- kleur: 4.1.5
- sade: 1.8.1
- dev: true
-
- /v8-compile-cache-lib/3.0.1:
- resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
- dev: true
-
- /v8-compile-cache/2.3.0:
- resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==}
- dev: true
-
- /validate-npm-package-license/3.0.4:
- resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
- dependencies:
- spdx-correct: 3.2.0
- spdx-expression-parse: 3.0.1
- dev: true
-
- /validate-npm-package-name/3.0.0:
- resolution: {integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==}
- dependencies:
- builtins: 1.0.3
- dev: true
-
- /vary/1.1.2:
- resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
- engines: {node: '>= 0.8'}
- dev: true
-
- /vfile-location/4.1.0:
- resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==}
- dependencies:
- '@types/unist': 2.0.6
- vfile: 5.3.7
- dev: true
-
- /vfile-message/3.1.4:
- resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==}
- dependencies:
- '@types/unist': 2.0.6
- unist-util-stringify-position: 3.0.3
- dev: true
-
- /vfile/5.3.7:
- resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==}
- dependencies:
- '@types/unist': 2.0.6
- is-buffer: 2.0.5
- unist-util-stringify-position: 3.0.3
- vfile-message: 3.1.4
- dev: true
-
- /vite/4.1.4_less@4.1.3+sass@1.58.3:
- resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==}
- engines: {node: ^14.18.0 || >=16.0.0}
- hasBin: true
- peerDependencies:
- '@types/node': '>= 14'
- less: '*'
- sass: '*'
- stylus: '*'
- sugarss: '*'
- terser: ^5.4.0
- peerDependenciesMeta:
- '@types/node':
- optional: true
- less:
- optional: true
- sass:
- optional: true
- stylus:
- optional: true
- sugarss:
- optional: true
- terser:
- optional: true
- dependencies:
- esbuild: 0.16.17
- less: 4.1.3
- postcss: 8.4.21
- resolve: 1.22.1
- rollup: 3.18.0
- sass: 1.58.3
- optionalDependencies:
- fsevents: 2.3.2
- dev: true
-
- /vm-browserify/1.1.2:
- resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==}
- dev: true
-
- /walker/1.0.8:
- resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==}
- dependencies:
- makeerror: 1.0.12
- dev: true
-
- /wbuf/1.7.3:
- resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==}
- dependencies:
- minimalistic-assert: 1.0.1
- dev: true
-
- /web-namespaces/2.0.1:
- resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
- dev: true
-
- /web-streams-polyfill/3.2.1:
- resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==}
- engines: {node: '>= 8'}
- dev: true
-
- /which-boxed-primitive/1.0.2:
- resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
- dependencies:
- is-bigint: 1.0.4
- is-boolean-object: 1.1.2
- is-number-object: 1.0.7
- is-string: 1.0.7
- is-symbol: 1.0.4
- dev: true
-
- /which-builtin-type/1.1.3:
- resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==}
- engines: {node: '>= 0.4'}
- dependencies:
- function.prototype.name: 1.1.5
- has-tostringtag: 1.0.0
- is-async-function: 2.0.0
- is-date-object: 1.0.5
- is-finalizationregistry: 1.0.2
- is-generator-function: 1.0.10
- is-regex: 1.1.4
- is-weakref: 1.0.2
- isarray: 2.0.5
- which-boxed-primitive: 1.0.2
- which-collection: 1.0.1
- which-typed-array: 1.1.9
- dev: true
-
- /which-collection/1.0.1:
- resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==}
- dependencies:
- is-map: 2.0.2
- is-set: 2.0.2
- is-weakmap: 2.0.1
- is-weakset: 2.0.2
- dev: true
-
- /which-typed-array/1.1.9:
- resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==}
- engines: {node: '>= 0.4'}
- dependencies:
- available-typed-arrays: 1.0.5
- call-bind: 1.0.2
- for-each: 0.3.3
- gopd: 1.0.1
- has-tostringtag: 1.0.0
- is-typed-array: 1.1.10
- dev: true
-
- /which/1.3.1:
- resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
- hasBin: true
- dependencies:
- isexe: 2.0.0
- dev: true
-
- /which/2.0.2:
- resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
- engines: {node: '>= 8'}
- hasBin: true
- dependencies:
- isexe: 2.0.0
- dev: true
-
- /widest-line/2.0.1:
- resolution: {integrity: sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==}
- engines: {node: '>=4'}
- dependencies:
- string-width: 2.1.1
- dev: true
-
- /wrap-ansi/6.2.0:
- resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
- engines: {node: '>=8'}
- dependencies:
- ansi-styles: 4.3.0
- string-width: 4.2.3
- strip-ansi: 6.0.1
- dev: true
-
- /wrap-ansi/7.0.0:
- resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
- engines: {node: '>=10'}
- dependencies:
- ansi-styles: 4.3.0
- string-width: 4.2.3
- strip-ansi: 6.0.1
- dev: true
-
- /wrappy/1.0.2:
- resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
- dev: true
-
- /write-file-atomic/2.4.3:
- resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==}
- dependencies:
- graceful-fs: 4.2.10
- imurmurhash: 0.1.4
- signal-exit: 3.0.7
- dev: true
-
- /write-file-atomic/4.0.2:
- resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==}
- engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
- dependencies:
- imurmurhash: 0.1.4
- signal-exit: 3.0.7
- dev: true
-
- /xdg-basedir/3.0.0:
- resolution: {integrity: sha512-1Dly4xqlulvPD3fZUQJLY+FUIeqN3N2MM3uqe4rCJftAvOjFa3jFGfctOgluGx4ahPbUCsZkmJILiP0Vi4T6lQ==}
- engines: {node: '>=4'}
- dev: true
-
- /xtend/4.0.2:
- resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
- engines: {node: '>=0.4'}
- dev: true
-
- /y18n/3.2.2:
- resolution: {integrity: sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==}
- dev: true
-
- /y18n/4.0.3:
- resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==}
- dev: true
-
- /y18n/5.0.8:
- resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
- engines: {node: '>=10'}
- dev: true
-
- /yallist/2.1.2:
- resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==}
- dev: true
-
- /yallist/3.1.1:
- resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
- dev: true
-
- /yallist/4.0.0:
- resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
- dev: true
-
- /yaml/1.10.2:
- resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
- engines: {node: '>= 6'}
- dev: true
-
- /yaml/2.2.1:
- resolution: {integrity: sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==}
- engines: {node: '>= 14'}
- dev: true
-
- /yargs-parser/20.2.9:
- resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
- engines: {node: '>=10'}
- dev: true
-
- /yargs-parser/21.1.1:
- resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
- engines: {node: '>=12'}
- dev: true
-
- /yargs/17.7.1:
- resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==}
- engines: {node: '>=12'}
- dependencies:
- cliui: 8.0.1
- escalade: 3.1.1
- get-caller-file: 2.0.5
- require-directory: 2.1.1
- string-width: 4.2.3
- y18n: 5.0.8
- yargs-parser: 21.1.1
- dev: true
-
- /yn/3.1.1:
- resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
- engines: {node: '>=6'}
- dev: true
-
- /yocto-queue/0.1.0:
- resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
- engines: {node: '>=10'}
- dev: true
-
- /zwitch/2.0.4:
- resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
- dev: true
diff --git a/tsconfig.json b/tsconfig.json
deleted file mode 100644
index 3ea66c2..0000000
--- a/tsconfig.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "compilerOptions": {
- "strict": true,
- "skipLibCheck": true,
- "esModuleInterop": true,
- "baseUrl": "./",
- "paths": {
- "@@/*": [".dumi/tmp/*"]
- }
- },
- "include": [".dumi/**/*", ".dumirc.ts"]
-}
diff --git a/umi.115134b2.css b/umi.115134b2.css
new file mode 100644
index 0000000..c4c0236
--- /dev/null
+++ b/umi.115134b2.css
@@ -0,0 +1 @@
+.dumi-default-container.markdown{padding:18px 0;padding-inline-start:44px;padding-inline-end:16px;border-radius:4px}.dumi-default-container.markdown:not(:first-child){margin-bottom:24px}.dumi-default-container.markdown:not(:last-child){margin-top:32px}.dumi-default-container.markdown>svg{float:left;fill:currentcolor;margin-inline-start:-26px;width:18px}[data-direction=rtl] .dumi-default-container.markdown>svg{float:right}.dumi-default-container.markdown>h4{clear:none;margin:0 0 12px;font-size:15px;line-height:17px}.dumi-default-container.markdown>section{font-size:15px}.dumi-default-container.markdown[data-type=info]{background:#ecf4ff}.dumi-default-container.markdown[data-type=info]>h4,.dumi-default-container.markdown[data-type=info]>svg{color:#3367af}.dumi-default-container.markdown[data-type=info]>section{color:#496a99}[data-prefers-color=dark] .dumi-default-container.markdown[data-type=info]{background:#001c44}[data-prefers-color=dark] .dumi-default-container.markdown[data-type=info]>h4,[data-prefers-color=dark] .dumi-default-container.markdown[data-type=info]>svg{color:#5e8ed0}[data-prefers-color=dark] .dumi-default-container.markdown[data-type=info]>section{color:#7391bc}.dumi-default-container.markdown[data-type=warning]{background:#fff3da}.dumi-default-container.markdown[data-type=warning]>h4,.dumi-default-container.markdown[data-type=warning]>svg{color:#b78314}.dumi-default-container.markdown[data-type=warning]>section{color:#9e7a2d}[data-prefers-color=dark] .dumi-default-container.markdown[data-type=warning]{background:#2d1f00}[data-prefers-color=dark] .dumi-default-container.markdown[data-type=warning]>h4,[data-prefers-color=dark] .dumi-default-container.markdown[data-type=warning]>svg{color:#cd9417}[data-prefers-color=dark] .dumi-default-container.markdown[data-type=warning]>section{color:#b78c2e}.dumi-default-container.markdown[data-type=success]{background:#dff8e7}.dumi-default-container.markdown[data-type=success]>h4,.dumi-default-container.markdown[data-type=success]>svg{color:#238241}.dumi-default-container.markdown[data-type=success]>section{color:#357047}[data-prefers-color=dark] .dumi-default-container.markdown[data-type=success]{background:#082210}[data-prefers-color=dark] .dumi-default-container.markdown[data-type=success]>h4,[data-prefers-color=dark] .dumi-default-container.markdown[data-type=success]>svg{color:#2a9a4d}[data-prefers-color=dark] .dumi-default-container.markdown[data-type=success]>section{color:#3d8654}.dumi-default-container.markdown[data-type=error]{background:#fdf4f5}.dumi-default-container.markdown[data-type=error]>h4,.dumi-default-container.markdown[data-type=error]>svg{color:#b23642}.dumi-default-container.markdown[data-type=error]>section{color:#955359}[data-prefers-color=dark] .dumi-default-container.markdown[data-type=error]{background:#2a060a}[data-prefers-color=dark] .dumi-default-container.markdown[data-type=error]>h4,[data-prefers-color=dark] .dumi-default-container.markdown[data-type=error]>svg{color:#c6414e}[data-prefers-color=dark] .dumi-default-container.markdown[data-type=error]>section{color:#ad5962}code[class*=language-],pre[class*=language-]{background:hsl(230,1%,98%);color:#383a42;font-family:Fira Code,Fira Mono,Menlo,Consolas,DejaVu Sans Mono,monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;line-height:1.5;tab-size:2;hyphens:none}code[class*=language-]::selection,code[class*=language-] *::selection,pre[class*=language-] *::selection{background:hsl(230,1%,90%);color:inherit}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-]{padding:.2em .3em;border-radius:.3em;white-space:normal}.token.comment,.token.prolog,.token.cdata{color:#a0a1a7}.token.doctype,.token.punctuation,.token.entity{color:#383a42}.token.attr-name,.token.class-name,.token.boolean,.token.constant,.token.number,.token.atrule{color:#b76b01}.token.keyword{color:#a626a4}.token.property,.token.tag,.token.symbol,.token.deleted,.token.important{color:#e45649}.token.selector,.token.string,.token.char,.token.builtin,.token.inserted,.token.regex,.token.attr-value,.token.attr-value>.token.punctuation{color:#50a14f}.token.variable,.token.operator,.token.function{color:#4078f2}.token.url{color:#0184bc}.token.attr-value>.token.punctuation.attr-equals,.token.special-attr>.token.attr-value>.token.value.css{color:#383a42}.language-css .token.selector{color:#e45649}.language-css .token.property{color:#383a42}.language-css .token.function,.language-css .token.url>.token.function{color:#0184bc}.language-css .token.url>.token.string.url{color:#50a14f}.language-css .token.important,.language-css .token.atrule .token.rule,.language-javascript .token.operator{color:#a626a4}.language-javascript .token.template-string>.token.interpolation>.token.interpolation-punctuation.punctuation{color:#ca1243}.language-json .token.operator{color:#383a42}.language-json .token.null.keyword{color:#b76b01}.language-markdown .token.url,.language-markdown .token.url>.token.operator,.language-markdown .token.url-reference.url>.token.string{color:#383a42}.language-markdown .token.url>.token.content{color:#4078f2}.language-markdown .token.url>.token.url,.language-markdown .token.url-reference.url{color:#0184bc}.language-markdown .token.blockquote.punctuation,.language-markdown .token.hr.punctuation{color:#a0a1a7;font-style:italic}.language-markdown .token.code-snippet{color:#50a14f}.language-markdown .token.bold .token.content{color:#b76b01}.language-markdown .token.italic .token.content{color:#a626a4}.language-markdown .token.strike .token.content,.language-markdown .token.strike .token.punctuation,.language-markdown .token.list.punctuation,.language-markdown .token.title.important>.token.punctuation{color:#e45649}.token.bold{font-weight:700}.token.comment,.token.italic{font-style:italic}.token.entity{cursor:help}.token.namespace{opacity:.8}.token.token.tab:not(:empty):before,.token.token.cr:before,.token.token.lf:before,.token.token.space:before{color:#383a4233}div.code-toolbar>.toolbar.toolbar>.toolbar-item{margin-right:.4em}div.code-toolbar>.toolbar.toolbar>.toolbar-item>button,div.code-toolbar>.toolbar.toolbar>.toolbar-item>a,div.code-toolbar>.toolbar.toolbar>.toolbar-item>span{background:hsl(230,1%,90%);color:#696c77;padding:.1em .4em;border-radius:.3em}div.code-toolbar>.toolbar.toolbar>.toolbar-item>button:hover,div.code-toolbar>.toolbar.toolbar>.toolbar-item>button:focus,div.code-toolbar>.toolbar.toolbar>.toolbar-item>a:hover,div.code-toolbar>.toolbar.toolbar>.toolbar-item>a:focus,div.code-toolbar>.toolbar.toolbar>.toolbar-item>span:hover,div.code-toolbar>.toolbar.toolbar>.toolbar-item>span:focus{background:hsl(230,1%,78%);color:#383a42}.line-highlight.line-highlight{background:hsla(230,8%,24%,.05)}.line-highlight.line-highlight:before,.line-highlight.line-highlight[data-end]:after{background:hsl(230,1%,90%);color:#383a42;padding:.1em .6em;border-radius:.3em;box-shadow:0 2px #0003}pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows>span:hover:before{background-color:#383a420d}.line-numbers.line-numbers .line-numbers-rows,.command-line .command-line-prompt{border-right-color:#383a4233}.line-numbers .line-numbers-rows>span:before,.command-line .command-line-prompt>span:before{color:#9d9d9f}.rainbow-braces .token.token.punctuation.brace-level-1,.rainbow-braces .token.token.punctuation.brace-level-5,.rainbow-braces .token.token.punctuation.brace-level-9{color:#e45649}.rainbow-braces .token.token.punctuation.brace-level-2,.rainbow-braces .token.token.punctuation.brace-level-6,.rainbow-braces .token.token.punctuation.brace-level-10{color:#50a14f}.rainbow-braces .token.token.punctuation.brace-level-3,.rainbow-braces .token.token.punctuation.brace-level-7,.rainbow-braces .token.token.punctuation.brace-level-11{color:#4078f2}.rainbow-braces .token.token.punctuation.brace-level-4,.rainbow-braces .token.token.punctuation.brace-level-8,.rainbow-braces .token.token.punctuation.brace-level-12{color:#a626a4}pre.diff-highlight>code .token.token.deleted:not(.prefix),pre>code.diff-highlight .token.token.deleted:not(.prefix){background-color:#ff526626}pre.diff-highlight>code .token.token.deleted:not(.prefix)::selection,pre.diff-highlight>code .token.token.deleted:not(.prefix) *::selection,pre>code.diff-highlight .token.token.deleted:not(.prefix)::selection,pre>code.diff-highlight .token.token.deleted:not(.prefix) *::selection{background-color:#fb566940}pre.diff-highlight>code .token.token.inserted:not(.prefix),pre>code.diff-highlight .token.token.inserted:not(.prefix){background-color:#1aff5b26}pre.diff-highlight>code .token.token.inserted:not(.prefix)::selection,pre.diff-highlight>code .token.token.inserted:not(.prefix) *::selection,pre>code.diff-highlight .token.token.inserted:not(.prefix)::selection,pre>code.diff-highlight .token.token.inserted:not(.prefix) *::selection{background-color:#38e06240}.prism-previewer.prism-previewer:before,.prism-previewer-gradient.prism-previewer-gradient div{border-color:hsl(0,0,95%)}.prism-previewer-color.prism-previewer-color:before,.prism-previewer-gradient.prism-previewer-gradient div,.prism-previewer-easing.prism-previewer-easing:before{border-radius:.3em}.prism-previewer.prism-previewer:after{border-top-color:hsl(0,0,95%)}.prism-previewer-flipped.prism-previewer-flipped.after{border-bottom-color:hsl(0,0,95%)}.prism-previewer-angle.prism-previewer-angle:before,.prism-previewer-time.prism-previewer-time:before,.prism-previewer-easing.prism-previewer-easing{background:hsl(0,0%,100%)}.prism-previewer-angle.prism-previewer-angle circle,.prism-previewer-time.prism-previewer-time circle{stroke:#383a42;stroke-opacity:1}.prism-previewer-easing.prism-previewer-easing circle,.prism-previewer-easing.prism-previewer-easing path,.prism-previewer-easing.prism-previewer-easing line{stroke:#383a42}.prism-previewer-easing.prism-previewer-easing circle{fill:transparent}[data-prefers-color=dark] .token.doctype,[data-prefers-color=dark] .token.punctuation,[data-prefers-color=dark] .token.entity,[data-prefers-color=dark] code[class*=language-],[data-prefers-color=dark] pre[class*=language-]{color:#8590a0}[data-prefers-color=dark] .token.comment,[data-prefers-color=dark] .token.prolog,[data-prefers-color=dark] .token.cdata{color:#616d7f}.dumi-default-source-code{position:relative;background-color:#fbfcfd;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.dumi-default-source-code>pre.prism-code{margin:0;padding:18px 24px;font-size:14px;line-height:1.58;direction:ltr;background:transparent}.dumi-default-source-code>pre.prism-code:before,.dumi-default-source-code>pre.prism-code:after{content:none}.dumi-default-source-code-copy{position:absolute;top:9px;right:12px;display:inline-block;padding:8px 12px;background-color:#fbfcfdcc;border:0;border-radius:2px;cursor:pointer;transition:all .2s}.dumi-default-source-code-copy>svg{width:16px;fill:#98a3aa;transition:fill .2s}[data-prefers-color=dark] .dumi-default-source-code-copy>svg{fill:#4a545a}.dumi-default-source-code-copy:hover>svg{fill:#7c8a93}[data-prefers-color=dark] .dumi-default-source-code-copy:hover>svg{fill:#616e75}.dumi-default-source-code-copy[data-copied]>svg{fill:#208a41}[data-prefers-color=dark] .dumi-default-source-code-copy[data-copied]>svg{fill:#124c24}.dumi-default-source-code:not(:hover) .dumi-default-source-code-copy{opacity:0;visibility:hidden}[data-prefers-color=dark] .dumi-default-source-code{background-color:#020305}[data-prefers-color=dark] .dumi-default-source-code-copy{background-color:#02030533}[data-dumi-tooltip]{position:relative}[data-dumi-tooltip]:before,[data-dumi-tooltip]:after{position:absolute;bottom:100%;left:50%;transform:translate(-50%);display:inline-block;opacity:.7;pointer-events:none;transition:all .2s}[data-dumi-tooltip]:before{content:attr(data-dumi-tooltip);min-width:30px;margin-bottom:8px;padding:5px 8px;color:#fff;font-size:13px;line-height:1.1;white-space:nowrap;background-color:#000;border-radius:2px;box-shadow:0 4px 10px #0000001a;box-sizing:border-box}[data-prefers-color=dark] [data-dumi-tooltip]:before{background-color:#222}[data-dumi-tooltip]:after{content:"";width:0;height:0;border:4px solid transparent;border-top-color:#000}[data-prefers-color=dark] [data-dumi-tooltip]:after{border-top-color:#222}[data-dumi-tooltip]:not(:hover):before,[data-dumi-tooltip]:not(:hover):after{visibility:hidden;opacity:0}[data-dumi-tooltip][data-dumi-tooltip-bottom]:before,[data-dumi-tooltip][data-dumi-tooltip-bottom]:after{bottom:auto;top:100%}[data-dumi-tooltip][data-dumi-tooltip-bottom]:before{margin-top:8px;margin-bottom:0}[data-dumi-tooltip][data-dumi-tooltip-bottom]:after{border-top-color:transparent;border-bottom-color:#000}[data-prefers-color=dark] [data-dumi-tooltip][data-dumi-tooltip-bottom]:after{border-bottom-color:#222}.dumi-default-previewer-actions{display:flex;height:32px;align-items:center;justify-content:center}.dumi-default-previewer-actions:not(:last-child){border-bottom:1px dashed #e4e9ec}[data-prefers-color=dark] .dumi-default-previewer-actions:not(:last-child){border-bottom-color:#2a353c}.dumi-default-previewer-action-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:0;background:transparent;cursor:pointer}.dumi-default-previewer-action-btn>svg{width:16px;fill:#98a3aa;transition:fill .2s}[data-prefers-color=dark] .dumi-default-previewer-action-btn>svg{fill:#4a545a}.dumi-default-previewer-action-btn:hover>svg{fill:#7c8a93}[data-prefers-color=dark] .dumi-default-previewer-action-btn:hover>svg{fill:#616e75}.dumi-default-previewer-action-btn:not(:last-child){margin-inline-end:4px}.dumi-default-previewer-tabs{position:relative;padding:0 12px}.dumi-default-previewer-tabs:after{content:"";position:absolute;left:0;bottom:0;width:100%;height:0;border-bottom:1px dashed #e4e9ec}[data-prefers-color=dark] .dumi-default-previewer-tabs:after{border-bottom-color:#2a353c}.dumi-default-tabs{overflow:hidden}.dumi-default-tabs-top{flex-direction:column}.dumi-default-tabs-top .dumi-default-tabs-ink-bar{bottom:0}.dumi-default-tabs-nav{display:flex}.dumi-default-tabs-nav-wrap{display:flex;white-space:nowrap;overflow:hidden}.dumi-default-tabs-nav-wrap.dumi-default-tabs-nav-wrap-ping-left{box-shadow:5px 0 5px -5px #0000001a inset}.dumi-default-tabs-nav-wrap.dumi-default-tabs-nav-wrap-ping-right~*>.dumi-default-tabs-nav-more{box-shadow:0 0 5px #0000001a}.dumi-default-tabs-nav-list{position:relative;z-index:1;display:flex;transition:transform .2s}.dumi-default-tabs-nav-more{height:100%;cursor:pointer;background:none;border:0;transition:box-shadow .2s}.dumi-default-tabs-tab{display:flex;margin:0 12px}.dumi-default-tabs-tab-btn{padding:0;color:#4f5866;font-size:14px;line-height:36px;border:0;outline:none;background:transparent;box-sizing:border-box;cursor:pointer;transition:all .2s}[data-prefers-color=dark] .dumi-default-tabs-tab-btn{color:#8590a0}.dumi-default-tabs-tab-btn:hover{color:#30363f}[data-prefers-color=dark] .dumi-default-tabs-tab-btn:hover{color:#c6c9cd}.dumi-default-tabs-tab-active .dumi-default-tabs-tab-btn{color:#30363f}[data-prefers-color=dark] .dumi-default-tabs-tab-active .dumi-default-tabs-tab-btn{color:#c6c9cd}.dumi-default-tabs-ink-bar{position:absolute;height:1px;background:#1677ff;transition:left .2s,width .2s;pointer-events:none}[data-prefers-color=dark] .dumi-default-tabs-ink-bar{background:#0053c8}.dumi-default-tabs-dropdown{position:absolute;background:inherit;border:1px solid #d0d5d8;max-height:200px;overflow:auto}[data-prefers-color=dark] .dumi-default-tabs-dropdown{border-color:#1c2022}.dumi-default-tabs-dropdown>ul{list-style:none;margin:0;padding:0}.dumi-default-tabs-dropdown>ul>li{padding:4px 12px;font-size:14px;cursor:pointer}.dumi-default-tabs-dropdown>ul>li:hover{color:#1677ff}[data-prefers-color=dark] .dumi-default-tabs-dropdown>ul>li:hover{color:#0053c8}.dumi-default-tabs-dropdown>ul>li:not(:last-child){border-bottom:1px dashed #d0d5d8}[data-prefers-color=dark] .dumi-default-tabs-dropdown>ul>li:not(:last-child){border-bottom-color:#1c2022}.dumi-default-tabs-dropdown-hidden{display:none}.dumi-default-previewer{margin:24px 0 32px;border:1px solid #e4e9ec;border-radius:4px;background-color:inherit}[data-prefers-color=dark] .dumi-default-previewer{border-color:#2a353c}[data-dumi-demo-grid] .dumi-default-previewer{margin:0 0 16px}[data-dumi-demo-grid] .dumi-default-previewer:first-child{margin-top:24px}[data-dumi-demo-grid] .dumi-default-previewer:last-child{margin-bottom:32px}.dumi-default-previewer-demo{border-top-left-radius:2px;border-top-right-radius:2px;padding:40px 24px}.dumi-default-previewer-demo>iframe{display:block;width:100%;height:300px;border:0}.dumi-default-previewer-demo[data-iframe]{position:relative;padding:0;overflow:hidden}.dumi-default-previewer-demo[data-iframe]:before{content:"";display:block;height:24px;background-color:#e4e9ec}[data-prefers-color=dark] .dumi-default-previewer-demo[data-iframe]:before{background-color:#2a353c}.dumi-default-previewer-demo[data-iframe]:after{content:"";position:absolute;top:5px;left:8px;display:inline-block;width:12px;height:12px;border-radius:50%;background-color:#fd6458;box-shadow:20px 0 #ffbf2b,40px 0 #24cc3d}.dumi-default-previewer-demo[data-transform]{transform:translate(0)}.dumi-default-previewer-demo[data-compact]{padding:0}.dumi-default-previewer-meta{border-top:1px solid #e4e9ec}[data-prefers-color=dark] .dumi-default-previewer-meta{border-top-color:#2a353c}.dumi-default-previewer-desc{position:relative}.dumi-default-previewer-desc>.markdown{padding:14px 24px;border-bottom:1px dashed #e4e9ec}[data-prefers-color=dark] .dumi-default-previewer-desc>.markdown{border-bottom-color:#2a353c}.dumi-default-previewer-desc>h5{position:absolute;top:-7px;left:20px;margin:0;padding:0 4px;display:inline-block;font-size:14px;line-height:1;font-weight:500;background:linear-gradient(to top,#ffffff,#ffffff 50%,rgba(255,255,255,0)) 100%}[data-prefers-color=dark] .dumi-default-previewer-desc>h5{background:linear-gradient(to top,rgba(0,0,0,.95),rgba(0,0,0,.95) 50%,rgba(0,0,0,0)) 100%}.dumi-default-previewer-desc>h5>a{color:#30363f}[data-prefers-color=dark] .dumi-default-previewer-desc>h5>a{color:#c6c9cd}.dumi-default-previewer-desc>h5>a:not(:hover){text-decoration:none}.dumi-default-previewer-desc>h5>a>strong{float:inline-start;padding-inline-end:8px;color:#d59200;font-size:12px;line-height:15px}[data-prefers-color=dark] .dumi-default-previewer-desc>h5>a>strong{color:#895e00}.dumi-default-previewer[data-active]{box-shadow:0 0 0 4px #1677ff1a;border-color:#7cb3ff}[data-prefers-color=dark] .dumi-default-previewer[data-active]{box-shadow:0 0 0 4px #0053c81a;border-color:#002962}.dumi-default-previewer[data-debug]{border-color:#ffc23c}[data-prefers-color=dark] .dumi-default-previewer[data-debug]{border-color:#231800}.dumi-default-previewer[data-debug][data-active]{box-shadow:0 0 0 4px #d592001a}[data-prefers-color=dark] .dumi-default-previewer[data-debug][data-active]{box-shadow:0 0 0 4px #895e001a}.dumi-default-content-tabs{list-style-type:none;display:flex;align-items:center;height:60px;margin:-48px -48px 48px;padding:0 48px;border-bottom:1px solid #e4e9ec}[data-prefers-color=dark] .dumi-default-content-tabs{border-bottom-color:#2a353c}@media only screen and (max-width: 767px){.dumi-default-content-tabs{margin:-24px -24px 24px;padding:0 24px;height:42px}}[data-no-sidebar] .dumi-default-content-tabs{margin:0 0 48px;padding:0}@media only screen and (max-width: 767px){[data-no-sidebar] .dumi-default-content-tabs{margin-bottom:24px}}.dumi-default-content-tabs>li{height:inherit}.dumi-default-content-tabs>li>button{padding:0;height:inherit;color:#4f5866;font-size:17px;border:0;background:transparent;cursor:pointer;transition:all .2s}[data-prefers-color=dark] .dumi-default-content-tabs>li>button{color:#8590a0}.dumi-default-content-tabs>li>button:hover{color:#1677ff}[data-prefers-color=dark] .dumi-default-content-tabs>li>button:hover{color:#0053c8}.dumi-default-content-tabs>li:not(last-child){margin-inline-end:42px}@media only screen and (max-width: 767px){.dumi-default-content-tabs>li:not(last-child){margin-inline-end:20px}}.dumi-default-content-tabs>li[data-active]{position:relative}.dumi-default-content-tabs>li[data-active]>button{color:#30363f}[data-prefers-color=dark] .dumi-default-content-tabs>li[data-active]>button{color:#c6c9cd}.dumi-default-content-tabs>li[data-active]:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background-color:#1677ff}[data-prefers-color=dark] .dumi-default-content-tabs>li[data-active]:after{background-color:#0053c8}
diff --git a/umi.ded493c3.js b/umi.ded493c3.js
new file mode 100644
index 0000000..96311e2
--- /dev/null
+++ b/umi.ded493c3.js
@@ -0,0 +1,15267 @@
+(function(){var __webpack_modules__={34688:function(c,h,n){"use strict";n.d(h,{kG:function(){return I}});function a(m){return Math.floor(Math.log(m)*Math.LOG10E)}function o(m,w){if(typeof m.repeat=="function")return m.repeat(w);for(var y=new Array(w),b=0;b0}),Se=[],Pe=0,Me=te;Pe1)throw new RangeError("integer-width stems only accept a single optional option");Me.options[0].replace(ue,function(et,Bn,kt,Un,nt,ir){if(Bn)te.minimumIntegerDigits=kt.length;else{if(Un&&nt)throw new Error("We currently do not support maximum integer digits");if(ir)throw new Error("We currently do not support exact integer digits")}return""});continue}if(ge.test(Me.stem)){te.minimumIntegerDigits=Me.stem.length;continue}if(ee.test(Me.stem)){if(Me.options.length>1)throw new RangeError("Fraction-precision stems only accept a single optional option");Me.stem.replace(ee,function(et,Bn,kt,Un,nt,ir){return kt==="*"?te.minimumFractionDigits=Bn.length:Un&&Un[0]==="#"?te.maximumFractionDigits=Un.length:nt&&ir?(te.minimumFractionDigits=nt.length,te.maximumFractionDigits=nt.length+ir.length):(te.minimumFractionDigits=Bn.length,te.maximumFractionDigits=Bn.length),""});var An=Me.options[0];An==="w"?te=(0,a.pi)((0,a.pi)({},te),{trailingZeroDisplay:"stripIfInteger"}):An&&(te=(0,a.pi)((0,a.pi)({},te),he(An)));continue}if(q.test(Me.stem)){te=(0,a.pi)((0,a.pi)({},te),he(Me.stem));continue}var Ye=Te(Me.stem);Ye&&(te=(0,a.pi)((0,a.pi)({},te),Ye));var Xn=J(Me.stem);Xn&&(te=(0,a.pi)((0,a.pi)({},te),Xn))}return te}var F={AX:["H"],BQ:["H"],CP:["H"],CZ:["H"],DK:["H"],FI:["H"],ID:["H"],IS:["H"],ML:["H"],NE:["H"],RU:["H"],SE:["H"],SJ:["H"],SK:["H"],AS:["h","H"],BT:["h","H"],DJ:["h","H"],ER:["h","H"],GH:["h","H"],IN:["h","H"],LS:["h","H"],PG:["h","H"],PW:["h","H"],SO:["h","H"],TO:["h","H"],VU:["h","H"],WS:["h","H"],"001":["H","h"],AL:["h","H","hB"],TD:["h","H","hB"],"ca-ES":["H","h","hB"],CF:["H","h","hB"],CM:["H","h","hB"],"fr-CA":["H","h","hB"],"gl-ES":["H","h","hB"],"it-CH":["H","h","hB"],"it-IT":["H","h","hB"],LU:["H","h","hB"],NP:["H","h","hB"],PF:["H","h","hB"],SC:["H","h","hB"],SM:["H","h","hB"],SN:["H","h","hB"],TF:["H","h","hB"],VA:["H","h","hB"],CY:["h","H","hb","hB"],GR:["h","H","hb","hB"],CO:["h","H","hB","hb"],DO:["h","H","hB","hb"],KP:["h","H","hB","hb"],KR:["h","H","hB","hb"],NA:["h","H","hB","hb"],PA:["h","H","hB","hb"],PR:["h","H","hB","hb"],VE:["h","H","hB","hb"],AC:["H","h","hb","hB"],AI:["H","h","hb","hB"],BW:["H","h","hb","hB"],BZ:["H","h","hb","hB"],CC:["H","h","hb","hB"],CK:["H","h","hb","hB"],CX:["H","h","hb","hB"],DG:["H","h","hb","hB"],FK:["H","h","hb","hB"],GB:["H","h","hb","hB"],GG:["H","h","hb","hB"],GI:["H","h","hb","hB"],IE:["H","h","hb","hB"],IM:["H","h","hb","hB"],IO:["H","h","hb","hB"],JE:["H","h","hb","hB"],LT:["H","h","hb","hB"],MK:["H","h","hb","hB"],MN:["H","h","hb","hB"],MS:["H","h","hb","hB"],NF:["H","h","hb","hB"],NG:["H","h","hb","hB"],NR:["H","h","hb","hB"],NU:["H","h","hb","hB"],PN:["H","h","hb","hB"],SH:["H","h","hb","hB"],SX:["H","h","hb","hB"],TA:["H","h","hb","hB"],ZA:["H","h","hb","hB"],"af-ZA":["H","h","hB","hb"],AR:["H","h","hB","hb"],CL:["H","h","hB","hb"],CR:["H","h","hB","hb"],CU:["H","h","hB","hb"],EA:["H","h","hB","hb"],"es-BO":["H","h","hB","hb"],"es-BR":["H","h","hB","hb"],"es-EC":["H","h","hB","hb"],"es-ES":["H","h","hB","hb"],"es-GQ":["H","h","hB","hb"],"es-PE":["H","h","hB","hb"],GT:["H","h","hB","hb"],HN:["H","h","hB","hb"],IC:["H","h","hB","hb"],KG:["H","h","hB","hb"],KM:["H","h","hB","hb"],LK:["H","h","hB","hb"],MA:["H","h","hB","hb"],MX:["H","h","hB","hb"],NI:["H","h","hB","hb"],PY:["H","h","hB","hb"],SV:["H","h","hB","hb"],UY:["H","h","hB","hb"],JP:["H","h","K"],AD:["H","hB"],AM:["H","hB"],AO:["H","hB"],AT:["H","hB"],AW:["H","hB"],BE:["H","hB"],BF:["H","hB"],BJ:["H","hB"],BL:["H","hB"],BR:["H","hB"],CG:["H","hB"],CI:["H","hB"],CV:["H","hB"],DE:["H","hB"],EE:["H","hB"],FR:["H","hB"],GA:["H","hB"],GF:["H","hB"],GN:["H","hB"],GP:["H","hB"],GW:["H","hB"],HR:["H","hB"],IL:["H","hB"],IT:["H","hB"],KZ:["H","hB"],MC:["H","hB"],MD:["H","hB"],MF:["H","hB"],MQ:["H","hB"],MZ:["H","hB"],NC:["H","hB"],NL:["H","hB"],PM:["H","hB"],PT:["H","hB"],RE:["H","hB"],RO:["H","hB"],SI:["H","hB"],SR:["H","hB"],ST:["H","hB"],TG:["H","hB"],TR:["H","hB"],WF:["H","hB"],YT:["H","hB"],BD:["h","hB","H"],PK:["h","hB","H"],AZ:["H","hB","h"],BA:["H","hB","h"],BG:["H","hB","h"],CH:["H","hB","h"],GE:["H","hB","h"],LI:["H","hB","h"],ME:["H","hB","h"],RS:["H","hB","h"],UA:["H","hB","h"],UZ:["H","hB","h"],XK:["H","hB","h"],AG:["h","hb","H","hB"],AU:["h","hb","H","hB"],BB:["h","hb","H","hB"],BM:["h","hb","H","hB"],BS:["h","hb","H","hB"],CA:["h","hb","H","hB"],DM:["h","hb","H","hB"],"en-001":["h","hb","H","hB"],FJ:["h","hb","H","hB"],FM:["h","hb","H","hB"],GD:["h","hb","H","hB"],GM:["h","hb","H","hB"],GU:["h","hb","H","hB"],GY:["h","hb","H","hB"],JM:["h","hb","H","hB"],KI:["h","hb","H","hB"],KN:["h","hb","H","hB"],KY:["h","hb","H","hB"],LC:["h","hb","H","hB"],LR:["h","hb","H","hB"],MH:["h","hb","H","hB"],MP:["h","hb","H","hB"],MW:["h","hb","H","hB"],NZ:["h","hb","H","hB"],SB:["h","hb","H","hB"],SG:["h","hb","H","hB"],SL:["h","hb","H","hB"],SS:["h","hb","H","hB"],SZ:["h","hb","H","hB"],TC:["h","hb","H","hB"],TT:["h","hb","H","hB"],UM:["h","hb","H","hB"],US:["h","hb","H","hB"],VC:["h","hb","H","hB"],VG:["h","hb","H","hB"],VI:["h","hb","H","hB"],ZM:["h","hb","H","hB"],BO:["H","hB","h","hb"],EC:["H","hB","h","hb"],ES:["H","hB","h","hb"],GQ:["H","hB","h","hb"],PE:["H","hB","h","hb"],AE:["h","hB","hb","H"],"ar-001":["h","hB","hb","H"],BH:["h","hB","hb","H"],DZ:["h","hB","hb","H"],EG:["h","hB","hb","H"],EH:["h","hB","hb","H"],HK:["h","hB","hb","H"],IQ:["h","hB","hb","H"],JO:["h","hB","hb","H"],KW:["h","hB","hb","H"],LB:["h","hB","hb","H"],LY:["h","hB","hb","H"],MO:["h","hB","hb","H"],MR:["h","hB","hb","H"],OM:["h","hB","hb","H"],PH:["h","hB","hb","H"],PS:["h","hB","hb","H"],QA:["h","hB","hb","H"],SA:["h","hB","hb","H"],SD:["h","hB","hb","H"],SY:["h","hB","hb","H"],TN:["h","hB","hb","H"],YE:["h","hB","hb","H"],AF:["H","hb","hB","h"],LA:["H","hb","hB","h"],CN:["H","hB","hb","h"],LV:["H","hB","hb","h"],TL:["H","hB","hb","h"],"zu-ZA":["H","hB","hb","h"],CD:["hB","H"],IR:["hB","H"],"hi-IN":["hB","h","H"],"kn-IN":["hB","h","H"],"ml-IN":["hB","h","H"],"te-IN":["hB","h","H"],KH:["hB","h","H","hb"],"ta-IN":["hB","h","hb","H"],BN:["hb","hB","h","H"],MY:["hb","hB","h","H"],ET:["hB","hb","h","H"],"gu-IN":["hB","hb","h","H"],"mr-IN":["hB","hb","h","H"],"pa-IN":["hB","hb","h","H"],TW:["hB","hb","h","H"],KE:["hB","hb","H","h"],MM:["hB","hb","H","h"],TZ:["hB","hb","H","h"],UG:["hB","hb","H","h"]};function W(S,te){for(var Se="",Pe=0;Pe>1),et="a",Bn=L(te);for((Bn=="H"||Bn=="k")&&(Xn=0);Xn-- >0;)Se+=et;for(;Ye-- >0;)Se=Bn+Se}else Me==="J"?Se+="H":Se+=Me}return Se}function L(S){var te=S.hourCycle;if(te===void 0&&S.hourCycles&&S.hourCycles.length&&(te=S.hourCycles[0]),te)switch(te){case"h24":return"k";case"h23":return"H";case"h12":return"h";case"h11":return"K";default:throw new Error("Invalid hourCycle")}var Se=S.language,Pe;Se!=="root"&&(Pe=S.maximize().region);var Me=F[Pe||""]||F[Se||""]||F["".concat(Se,"-001")]||F["001"];return Me[0]}var K,Ie=new RegExp("^".concat(O.source,"*")),Ne=new RegExp("".concat(O.source,"*$"));function ye(S,te){return{start:S,end:te}}var le=!!String.prototype.startsWith,Oe=!!String.fromCodePoint,ae=!!Object.fromEntries,de=!!String.prototype.codePointAt,re=!!String.prototype.trimStart,Ve=!!String.prototype.trimEnd,dn=!!Number.isSafeInteger,tn=dn?Number.isSafeInteger:function(S){return typeof S=="number"&&isFinite(S)&&Math.floor(S)===S&&Math.abs(S)<=9007199254740991},bn=!0;try{var jn=ie("([^\\p{White_Space}\\p{Pattern_Syntax}]*)","yu");bn=((K=jn.exec("a"))===null||K===void 0?void 0:K[0])==="a"}catch(S){bn=!1}var Qn=le?function(te,Se,Pe){return te.startsWith(Se,Pe)}:function(te,Se,Pe){return te.slice(Pe,Pe+Se.length)===Se},Ce=Oe?String.fromCodePoint:function(){for(var te=[],Se=0;SeAn;){if(Ye=te[An++],Ye>1114111)throw RangeError(Ye+" is not a valid code point");Pe+=Ye<65536?String.fromCharCode(Ye):String.fromCharCode(((Ye-=65536)>>10)+55296,Ye%1024+56320)}return Pe},ve=ae?Object.fromEntries:function(te){for(var Se={},Pe=0,Me=te;Pe=Pe)){var Me=te.charCodeAt(Se),An;return Me<55296||Me>56319||Se+1===Pe||(An=te.charCodeAt(Se+1))<56320||An>57343?Me:(Me-55296<<10)+(An-56320)+65536}},se=re?function(te){return te.trimStart()}:function(te){return te.replace(Ie,"")},_e=Ve?function(te){return te.trimEnd()}:function(te){return te.replace(Ne,"")};function ie(S,te){return new RegExp(S,te)}var ce;if(bn){var be=ie("([^\\p{White_Space}\\p{Pattern_Syntax}]*)","yu");ce=function(te,Se){var Pe;be.lastIndex=Se;var Me=be.exec(te);return(Pe=Me[1])!==null&&Pe!==void 0?Pe:""}}else ce=function(te,Se){for(var Pe=[];;){var Me=xe(te,Se);if(Me===void 0||ln(Me)||mn(Me))break;Pe.push(Me),Se+=Me>=65536?2:1}return Ce.apply(void 0,Pe)};var Re=function(){function S(te,Se){Se===void 0&&(Se={}),this.message=te,this.position={offset:0,line:1,column:1},this.ignoreTag=!!Se.ignoreTag,this.locale=Se.locale,this.requiresOtherClause=!!Se.requiresOtherClause,this.shouldParseSkeletons=!!Se.shouldParseSkeletons}return S.prototype.parse=function(){if(this.offset()!==0)throw Error("parser can only be used once");return this.parseMessage(0,"",!1)},S.prototype.parseMessage=function(te,Se,Pe){for(var Me=[];!this.isEOF();){var An=this.char();if(An===123){var Ye=this.parseArgument(te,Pe);if(Ye.err)return Ye;Me.push(Ye.val)}else{if(An===125&&te>0)break;if(An===35&&(Se==="plural"||Se==="selectordinal")){var Xn=this.clonePosition();this.bump(),Me.push({type:i.pound,location:ye(Xn,this.clonePosition())})}else if(An===60&&!this.ignoreTag&&this.peek()===47){if(Pe)break;return this.error(o.UNMATCHED_CLOSING_TAG,ye(this.clonePosition(),this.clonePosition()))}else if(An===60&&!this.ignoreTag&&We(this.peek()||0)){var Ye=this.parseTag(te,Se);if(Ye.err)return Ye;Me.push(Ye.val)}else{var Ye=this.parseLiteral(te,Se);if(Ye.err)return Ye;Me.push(Ye.val)}}}return{val:Me,err:null}},S.prototype.parseTag=function(te,Se){var Pe=this.clonePosition();this.bump();var Me=this.parseTagName();if(this.bumpSpace(),this.bumpIf("/>"))return{val:{type:i.literal,value:"<".concat(Me,"/>"),location:ye(Pe,this.clonePosition())},err:null};if(this.bumpIf(">")){var An=this.parseMessage(te+1,Se,!0);if(An.err)return An;var Ye=An.val,Xn=this.clonePosition();if(this.bumpIf("")){if(this.isEOF()||!We(this.char()))return this.error(o.INVALID_TAG,ye(Xn,this.clonePosition()));var et=this.clonePosition(),Bn=this.parseTagName();return Me!==Bn?this.error(o.UNMATCHED_CLOSING_TAG,ye(et,this.clonePosition())):(this.bumpSpace(),this.bumpIf(">")?{val:{type:i.tag,value:Me,children:Ye,location:ye(Pe,this.clonePosition())},err:null}:this.error(o.INVALID_TAG,ye(Xn,this.clonePosition())))}else return this.error(o.UNCLOSED_TAG,ye(Pe,this.clonePosition()))}else return this.error(o.INVALID_TAG,ye(Pe,this.clonePosition()))},S.prototype.parseTagName=function(){var te=this.offset();for(this.bump();!this.isEOF()&&Xe(this.char());)this.bump();return this.message.slice(te,this.offset())},S.prototype.parseLiteral=function(te,Se){for(var Pe=this.clonePosition(),Me="";;){var An=this.tryParseQuote(Se);if(An){Me+=An;continue}var Ye=this.tryParseUnquoted(te,Se);if(Ye){Me+=Ye;continue}var Xn=this.tryParseLeftAngleBracket();if(Xn){Me+=Xn;continue}break}var et=ye(Pe,this.clonePosition());return{val:{type:i.literal,value:Me,location:et},err:null}},S.prototype.tryParseLeftAngleBracket=function(){return!this.isEOF()&&this.char()===60&&(this.ignoreTag||!pn(this.peek()||0))?(this.bump(),"<"):null},S.prototype.tryParseQuote=function(te){if(this.isEOF()||this.char()!==39)return null;switch(this.peek()){case 39:return this.bump(),this.bump(),"'";case 123:case 60:case 62:case 125:break;case 35:if(te==="plural"||te==="selectordinal")break;return null;default:return null}this.bump();var Se=[this.char()];for(this.bump();!this.isEOF();){var Pe=this.char();if(Pe===39)if(this.peek()===39)Se.push(39),this.bump();else{this.bump();break}else Se.push(Pe);this.bump()}return Ce.apply(void 0,Se)},S.prototype.tryParseUnquoted=function(te,Se){if(this.isEOF())return null;var Pe=this.char();return Pe===60||Pe===123||Pe===35&&(Se==="plural"||Se==="selectordinal")||Pe===125&&te>0?null:(this.bump(),Ce(Pe))},S.prototype.parseArgument=function(te,Se){var Pe=this.clonePosition();if(this.bump(),this.bumpSpace(),this.isEOF())return this.error(o.EXPECT_ARGUMENT_CLOSING_BRACE,ye(Pe,this.clonePosition()));if(this.char()===125)return this.bump(),this.error(o.EMPTY_ARGUMENT,ye(Pe,this.clonePosition()));var Me=this.parseIdentifierIfPossible().value;if(!Me)return this.error(o.MALFORMED_ARGUMENT,ye(Pe,this.clonePosition()));if(this.bumpSpace(),this.isEOF())return this.error(o.EXPECT_ARGUMENT_CLOSING_BRACE,ye(Pe,this.clonePosition()));switch(this.char()){case 125:return this.bump(),{val:{type:i.argument,value:Me,location:ye(Pe,this.clonePosition())},err:null};case 44:return this.bump(),this.bumpSpace(),this.isEOF()?this.error(o.EXPECT_ARGUMENT_CLOSING_BRACE,ye(Pe,this.clonePosition())):this.parseArgumentOptions(te,Se,Me,Pe);default:return this.error(o.MALFORMED_ARGUMENT,ye(Pe,this.clonePosition()))}},S.prototype.parseIdentifierIfPossible=function(){var te=this.clonePosition(),Se=this.offset(),Pe=ce(this.message,Se),Me=Se+Pe.length;this.bumpTo(Me);var An=this.clonePosition(),Ye=ye(te,An);return{value:Pe,location:Ye}},S.prototype.parseArgumentOptions=function(te,Se,Pe,Me){var An,Ye=this.clonePosition(),Xn=this.parseIdentifierIfPossible().value,et=this.clonePosition();switch(Xn){case"":return this.error(o.EXPECT_ARGUMENT_TYPE,ye(Ye,et));case"number":case"date":case"time":{this.bumpSpace();var Bn=null;if(this.bumpIf(",")){this.bumpSpace();var kt=this.clonePosition(),Un=this.parseSimpleArgStyleIfPossible();if(Un.err)return Un;var nt=_e(Un.val);if(nt.length===0)return this.error(o.EXPECT_ARGUMENT_STYLE,ye(this.clonePosition(),this.clonePosition()));var ir=ye(kt,this.clonePosition());Bn={style:nt,styleLocation:ir}}var Mt=this.tryParseArgumentClose(Me);if(Mt.err)return Mt;var Ar=ye(Me,this.clonePosition());if(Bn&&Qn(Bn==null?void 0:Bn.style,"::",0)){var Cr=se(Bn.style.slice(2));if(Xn==="number"){var Un=this.parseNumberSkeletonFromString(Cr,Bn.styleLocation);return Un.err?Un:{val:{type:i.number,value:Pe,location:Ar,style:Un.val},err:null}}else{if(Cr.length===0)return this.error(o.EXPECT_DATE_TIME_SKELETON,Ar);var Oa=Cr;this.locale&&(Oa=W(Cr,this.locale));var nt={type:l.dateTime,pattern:Oa,location:Bn.styleLocation,parsedOptions:this.shouldParseSkeletons?P(Oa):{}},sa=Xn==="date"?i.date:i.time;return{val:{type:sa,value:Pe,location:Ar,style:nt},err:null}}}return{val:{type:Xn==="number"?i.number:Xn==="date"?i.date:i.time,value:Pe,location:Ar,style:(An=Bn==null?void 0:Bn.style)!==null&&An!==void 0?An:null},err:null}}case"plural":case"selectordinal":case"select":{var Wa=this.clonePosition();if(this.bumpSpace(),!this.bumpIf(","))return this.error(o.EXPECT_SELECT_ARGUMENT_OPTIONS,ye(Wa,(0,a.pi)({},Wa)));this.bumpSpace();var da=this.parseIdentifierIfPossible(),no=0;if(Xn!=="select"&&da.value==="offset"){if(!this.bumpIf(":"))return this.error(o.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE,ye(this.clonePosition(),this.clonePosition()));this.bumpSpace();var Un=this.tryParseDecimalInteger(o.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE,o.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE);if(Un.err)return Un;this.bumpSpace(),da=this.parseIdentifierIfPossible(),no=Un.val}var ta=this.tryParsePluralOrSelectOptions(te,Xn,Se,da);if(ta.err)return ta;var Mt=this.tryParseArgumentClose(Me);if(Mt.err)return Mt;var ma=ye(Me,this.clonePosition());return Xn==="select"?{val:{type:i.select,value:Pe,options:ve(ta.val),location:ma},err:null}:{val:{type:i.plural,value:Pe,options:ve(ta.val),offset:no,pluralType:Xn==="plural"?"cardinal":"ordinal",location:ma},err:null}}default:return this.error(o.INVALID_ARGUMENT_TYPE,ye(Ye,et))}},S.prototype.tryParseArgumentClose=function(te){return this.isEOF()||this.char()!==125?this.error(o.EXPECT_ARGUMENT_CLOSING_BRACE,ye(te,this.clonePosition())):(this.bump(),{val:!0,err:null})},S.prototype.parseSimpleArgStyleIfPossible=function(){for(var te=0,Se=this.clonePosition();!this.isEOF();){var Pe=this.char();switch(Pe){case 39:{this.bump();var Me=this.clonePosition();if(!this.bumpUntil("'"))return this.error(o.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE,ye(Me,this.clonePosition()));this.bump();break}case 123:{te+=1,this.bump();break}case 125:{if(te>0)te-=1;else return{val:this.message.slice(Se.offset,this.offset()),err:null};break}default:this.bump();break}}return{val:this.message.slice(Se.offset,this.offset()),err:null}},S.prototype.parseNumberSkeletonFromString=function(te,Se){var Pe=[];try{Pe=G(te)}catch(Me){return this.error(o.INVALID_NUMBER_SKELETON,Se)}return{val:{type:l.number,tokens:Pe,location:Se,parsedOptions:this.shouldParseSkeletons?k(Pe):{}},err:null}},S.prototype.tryParsePluralOrSelectOptions=function(te,Se,Pe,Me){for(var An,Ye=!1,Xn=[],et=new Set,Bn=Me.value,kt=Me.location;;){if(Bn.length===0){var Un=this.clonePosition();if(Se!=="select"&&this.bumpIf("=")){var nt=this.tryParseDecimalInteger(o.EXPECT_PLURAL_ARGUMENT_SELECTOR,o.INVALID_PLURAL_ARGUMENT_SELECTOR);if(nt.err)return nt;kt=ye(Un,this.clonePosition()),Bn=this.message.slice(Un.offset,this.offset())}else break}if(et.has(Bn))return this.error(Se==="select"?o.DUPLICATE_SELECT_ARGUMENT_SELECTOR:o.DUPLICATE_PLURAL_ARGUMENT_SELECTOR,kt);Bn==="other"&&(Ye=!0),this.bumpSpace();var ir=this.clonePosition();if(!this.bumpIf("{"))return this.error(Se==="select"?o.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT:o.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT,ye(this.clonePosition(),this.clonePosition()));var Mt=this.parseMessage(te+1,Se,Pe);if(Mt.err)return Mt;var Ar=this.tryParseArgumentClose(ir);if(Ar.err)return Ar;Xn.push([Bn,{value:Mt.val,location:ye(ir,this.clonePosition())}]),et.add(Bn),this.bumpSpace(),An=this.parseIdentifierIfPossible(),Bn=An.value,kt=An.location}return Xn.length===0?this.error(Se==="select"?o.EXPECT_SELECT_ARGUMENT_SELECTOR:o.EXPECT_PLURAL_ARGUMENT_SELECTOR,ye(this.clonePosition(),this.clonePosition())):this.requiresOtherClause&&!Ye?this.error(o.MISSING_OTHER_CLAUSE,ye(this.clonePosition(),this.clonePosition())):{val:Xn,err:null}},S.prototype.tryParseDecimalInteger=function(te,Se){var Pe=1,Me=this.clonePosition();this.bumpIf("+")||this.bumpIf("-")&&(Pe=-1);for(var An=!1,Ye=0;!this.isEOF();){var Xn=this.char();if(Xn>=48&&Xn<=57)An=!0,Ye=Ye*10+(Xn-48),this.bump();else break}var et=ye(Me,this.clonePosition());return An?(Ye*=Pe,tn(Ye)?{val:Ye,err:null}:this.error(Se,et)):this.error(te,et)},S.prototype.offset=function(){return this.position.offset},S.prototype.isEOF=function(){return this.offset()===this.message.length},S.prototype.clonePosition=function(){return{offset:this.position.offset,line:this.position.line,column:this.position.column}},S.prototype.char=function(){var te=this.position.offset;if(te>=this.message.length)throw Error("out of bound");var Se=xe(this.message,te);if(Se===void 0)throw Error("Offset ".concat(te," is at invalid UTF-16 code unit boundary"));return Se},S.prototype.error=function(te,Se){return{val:null,err:{kind:te,message:this.message,location:Se}}},S.prototype.bump=function(){if(!this.isEOF()){var te=this.char();te===10?(this.position.line+=1,this.position.column=1,this.position.offset+=1):(this.position.column+=1,this.position.offset+=te<65536?1:2)}},S.prototype.bumpIf=function(te){if(Qn(this.message,te,this.offset())){for(var Se=0;Se=0?(this.bumpTo(Pe),!0):(this.bumpTo(this.message.length),!1)},S.prototype.bumpTo=function(te){if(this.offset()>te)throw Error("targetOffset ".concat(te," must be greater than or equal to the current offset ").concat(this.offset()));for(te=Math.min(te,this.message.length);;){var Se=this.offset();if(Se===te)break;if(Se>te)throw Error("targetOffset ".concat(te," is at invalid UTF-16 code unit boundary"));if(this.bump(),this.isEOF())break}},S.prototype.bumpSpace=function(){for(;!this.isEOF()&&ln(this.char());)this.bump()},S.prototype.peek=function(){if(this.isEOF())return null;var te=this.char(),Se=this.offset(),Pe=this.message.charCodeAt(Se+(te>=65536?2:1));return Pe!=null?Pe:null},S}();function We(S){return S>=97&&S<=122||S>=65&&S<=90}function pn(S){return We(S)||S===47}function Xe(S){return S===45||S===46||S>=48&&S<=57||S===95||S>=97&&S<=122||S>=65&&S<=90||S==183||S>=192&&S<=214||S>=216&&S<=246||S>=248&&S<=893||S>=895&&S<=8191||S>=8204&&S<=8205||S>=8255&&S<=8256||S>=8304&&S<=8591||S>=11264&&S<=12271||S>=12289&&S<=55295||S>=63744&&S<=64975||S>=65008&&S<=65533||S>=65536&&S<=983039}function ln(S){return S>=9&&S<=13||S===32||S===133||S>=8206&&S<=8207||S===8232||S===8233}function mn(S){return S>=33&&S<=35||S===36||S>=37&&S<=39||S===40||S===41||S===42||S===43||S===44||S===45||S>=46&&S<=47||S>=58&&S<=59||S>=60&&S<=62||S>=63&&S<=64||S===91||S===92||S===93||S===94||S===96||S===123||S===124||S===125||S===126||S===161||S>=162&&S<=165||S===166||S===167||S===169||S===171||S===172||S===174||S===176||S===177||S===182||S===187||S===191||S===215||S===247||S>=8208&&S<=8213||S>=8214&&S<=8215||S===8216||S===8217||S===8218||S>=8219&&S<=8220||S===8221||S===8222||S===8223||S>=8224&&S<=8231||S>=8240&&S<=8248||S===8249||S===8250||S>=8251&&S<=8254||S>=8257&&S<=8259||S===8260||S===8261||S===8262||S>=8263&&S<=8273||S===8274||S===8275||S>=8277&&S<=8286||S>=8592&&S<=8596||S>=8597&&S<=8601||S>=8602&&S<=8603||S>=8604&&S<=8607||S===8608||S>=8609&&S<=8610||S===8611||S>=8612&&S<=8613||S===8614||S>=8615&&S<=8621||S===8622||S>=8623&&S<=8653||S>=8654&&S<=8655||S>=8656&&S<=8657||S===8658||S===8659||S===8660||S>=8661&&S<=8691||S>=8692&&S<=8959||S>=8960&&S<=8967||S===8968||S===8969||S===8970||S===8971||S>=8972&&S<=8991||S>=8992&&S<=8993||S>=8994&&S<=9e3||S===9001||S===9002||S>=9003&&S<=9083||S===9084||S>=9085&&S<=9114||S>=9115&&S<=9139||S>=9140&&S<=9179||S>=9180&&S<=9185||S>=9186&&S<=9254||S>=9255&&S<=9279||S>=9280&&S<=9290||S>=9291&&S<=9311||S>=9472&&S<=9654||S===9655||S>=9656&&S<=9664||S===9665||S>=9666&&S<=9719||S>=9720&&S<=9727||S>=9728&&S<=9838||S===9839||S>=9840&&S<=10087||S===10088||S===10089||S===10090||S===10091||S===10092||S===10093||S===10094||S===10095||S===10096||S===10097||S===10098||S===10099||S===10100||S===10101||S>=10132&&S<=10175||S>=10176&&S<=10180||S===10181||S===10182||S>=10183&&S<=10213||S===10214||S===10215||S===10216||S===10217||S===10218||S===10219||S===10220||S===10221||S===10222||S===10223||S>=10224&&S<=10239||S>=10240&&S<=10495||S>=10496&&S<=10626||S===10627||S===10628||S===10629||S===10630||S===10631||S===10632||S===10633||S===10634||S===10635||S===10636||S===10637||S===10638||S===10639||S===10640||S===10641||S===10642||S===10643||S===10644||S===10645||S===10646||S===10647||S===10648||S>=10649&&S<=10711||S===10712||S===10713||S===10714||S===10715||S>=10716&&S<=10747||S===10748||S===10749||S>=10750&&S<=11007||S>=11008&&S<=11055||S>=11056&&S<=11076||S>=11077&&S<=11078||S>=11079&&S<=11084||S>=11085&&S<=11123||S>=11124&&S<=11125||S>=11126&&S<=11157||S===11158||S>=11159&&S<=11263||S>=11776&&S<=11777||S===11778||S===11779||S===11780||S===11781||S>=11782&&S<=11784||S===11785||S===11786||S===11787||S===11788||S===11789||S>=11790&&S<=11798||S===11799||S>=11800&&S<=11801||S===11802||S===11803||S===11804||S===11805||S>=11806&&S<=11807||S===11808||S===11809||S===11810||S===11811||S===11812||S===11813||S===11814||S===11815||S===11816||S===11817||S>=11818&&S<=11822||S===11823||S>=11824&&S<=11833||S>=11834&&S<=11835||S>=11836&&S<=11839||S===11840||S===11841||S===11842||S>=11843&&S<=11855||S>=11856&&S<=11857||S===11858||S>=11859&&S<=11903||S>=12289&&S<=12291||S===12296||S===12297||S===12298||S===12299||S===12300||S===12301||S===12302||S===12303||S===12304||S===12305||S>=12306&&S<=12307||S===12308||S===12309||S===12310||S===12311||S===12312||S===12313||S===12314||S===12315||S===12316||S===12317||S>=12318&&S<=12319||S===12320||S===12336||S===64830||S===64831||S>=65093&&S<=65094}function Mn(S){S.forEach(function(te){if(delete te.location,I(te)||m(te))for(var Se in te.options)delete te.options[Se].location,Mn(te.options[Se].value);else p(te)&&b(te.style)||(v(te)||x(te))&&C(te.style)?delete te.style.location:y(te)&&Mn(te.children)})}function Sn(S,te){te===void 0&&(te={}),te=(0,a.pi)({shouldParseSkeletons:!0,requiresOtherClause:!0},te);var Se=new Re(S,te).parse();if(Se.err){var Pe=SyntaxError(o[Se.err.kind]);throw Pe.location=Se.err.location,Pe.originalMessage=Se.err.message,Pe}return te!=null&&te.captureLocation||Mn(Se.val),Se.val}var gn=null},94879:function(c,h,n){"use strict";n.d(h,{$6:function(){return x},OV:function(){return u},Qe:function(){return p},Rw:function(){return i},X9:function(){return v},bc:function(){return o},gb:function(){return f},wI:function(){return l}});var a=n(96583),o;(function(I){I.FORMAT_ERROR="FORMAT_ERROR",I.UNSUPPORTED_FORMATTER="UNSUPPORTED_FORMATTER",I.INVALID_CONFIG="INVALID_CONFIG",I.MISSING_DATA="MISSING_DATA",I.MISSING_TRANSLATION="MISSING_TRANSLATION"})(o||(o={}));var i=function(I){(0,a.ZT)(m,I);function m(w,y,b){var C=this,N=b?b instanceof Error?b:new Error(String(b)):void 0;return C=I.call(this,"[@formatjs/intl Error ".concat(w,"] ").concat(y,`
+`).concat(N?`
+`.concat(N.message,`
+`).concat(N.stack):""))||this,C.code=w,typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(C,m),C}return m}(Error),l=function(I){(0,a.ZT)(m,I);function m(w,y){return I.call(this,o.UNSUPPORTED_FORMATTER,w,y)||this}return m}(i),u=function(I){(0,a.ZT)(m,I);function m(w,y){return I.call(this,o.INVALID_CONFIG,w,y)||this}return m}(i),f=function(I){(0,a.ZT)(m,I);function m(w,y){return I.call(this,o.MISSING_DATA,w,y)||this}return m}(i),p=function(I){(0,a.ZT)(m,I);function m(w,y,b){return I.call(this,o.FORMAT_ERROR,"".concat(w,`
+Locale: `).concat(y,`
+`),b)||this}return m}(i),v=function(I){(0,a.ZT)(m,I);function m(w,y,b,C){var N=I.call(this,"".concat(w,`
+MessageID: `).concat(b==null?void 0:b.id,`
+Default Message: `).concat(b==null?void 0:b.defaultMessage,`
+Description: `).concat(b==null?void 0:b.description,`
+`),y,C)||this;return N.descriptor=b,N}return m}(p),x=function(I){(0,a.ZT)(m,I);function m(w,y){var b=I.call(this,o.MISSING_TRANSLATION,'Missing message: "'.concat(w.id,'" for locale "').concat(y,'", using ').concat(w.defaultMessage?"default message (".concat(typeof w.defaultMessage=="string"?w.defaultMessage:w.defaultMessage.map(function(C){var N;return(N=C.value)!==null&&N!==void 0?N:JSON.stringify(C)}).join(),")"):"id"," as fallback."))||this;return b.descriptor=w,b}return m}(i)},73324:function(c,h,n){"use strict";n.d(h,{L6:function(){return u},Sn:function(){return x},TB:function(){return w},Z0:function(){return v},ax:function(){return m}});var a=n(96583),o=n(48551),i=n(19956),l=n(94879);function u(y,b,C){return C===void 0&&(C={}),b.reduce(function(N,E){return E in y?N[E]=y[E]:E in C&&(N[E]=C[E]),N},{})}var f=function(y){},p=function(y){},v={formats:{},messages:{},timeZone:void 0,defaultLocale:"en",defaultFormats:{},fallbackOnEmptyString:!0,onError:f,onWarn:p};function x(){return{dateTime:{},number:{},message:{},relativeTime:{},pluralRules:{},list:{},displayNames:{}}}function I(y){return{create:function(){return{get:function(b){return y[b]},set:function(b,C){y[b]=C}}}}}function m(y){y===void 0&&(y=x());var b=Intl.RelativeTimeFormat,C=Intl.ListFormat,N=Intl.DisplayNames,E=(0,i.Z)(function(){for(var H,P=[],U=0;UB.length)&&(Y=B.length);for(var V=0,fe=new Array(Y);V1&&(typeof window=="undefined"||window.innerWidth>1024)){for(var ct=0;ctB.length)&&(Y=B.length);for(var V=0,fe=new Array(Y);VB.length)&&(Y=B.length);for(var V=0,fe=new Array(Y);VB.length)&&(Y=B.length);for(var V=0,fe=new Array(Y);V',isBinary:!1},yn[Hn]={content:genReactRenderCode(_n.react),isBinary:!1},getParameters({files:yn})}var xe=function(Y,V){var fe,Ae=document.createElement("form"),Ke=document.createElement("input"),qe=ve(Y);Ae.method="POST",Ae.target="_blank",Ae.style.display="none",Ae.action=(V==null?void 0:V.api)||Ce,Ae.appendChild(Ke),Ae.setAttribute("data-demo",((fe=Y.assets)===null||fe===void 0?void 0:fe.id)||""),Ke.name="parameters",Ke.value=qe,document.body.appendChild(Ae),Ae.submit(),Ae.remove()},se=["angular-cli","create-react-app","html","javascript","node","polymer","typescript","vue"],_e={clickToLoad:function(B){return ce("ctl",B)},devToolsHeight:function(B){return be("devtoolsheight",B)},forceEmbedLayout:function(B){return ce("embed",B)},hideDevTools:function(B){return ce("hidedevtools",B)},hideExplorer:function(B){return ce("hideExplorer",B)},hideNavigation:function(B){return ce("hideNavigation",B)},showSidebar:function(B){return function(Y,V){return typeof V=="boolean"?"showSidebar="+(V?"1":"0"):""}(0,B)},openFile:function(B){return function(Y,V){return(Array.isArray(V)?V:[V]).filter(function(fe){return typeof fe=="string"&&fe.trim()!==""}).map(function(fe){return"file="+encodeURIComponent(fe.trim())})}(0,B).join("&")},terminalHeight:function(B){return be("terminalHeight",B)},theme:function(B){return Re("theme",["light","dark"],B)},view:function(B){return Re("view",["preview","editor"],B)}};function ie(B){B===void 0&&(B={});var Y=Object.entries(B).map(function(V){var fe=V[0],Ae=V[1];return Ae!=null&&_e.hasOwnProperty(fe)?_e[fe](Ae):""}).filter(Boolean);return Y.length?"?"+Y.join("&"):""}function ce(B,Y){return Y===!0?B+"=1":""}function be(B,Y){return typeof Y=="number"&&Y>=0&&Y<=100?B+"="+Math.round(Y):""}function Re(B,Y,V){return typeof V=="string"&&Y.includes(V)?B+"="+V:""}function We(){return Math.random().toString(36).slice(2,6)+Math.random().toString(36).slice(2,6)}function pn(B,Y){return""+ln(Y)+B+ie(Y)}function Xe(B,Y){var V={forceEmbedLayout:!0};return Y&&typeof Y=="object"&&Object.assign(V,Y),""+ln(V)+B+ie(V)}function ln(B){return B===void 0&&(B={}),typeof B.origin=="string"?B.origin:"https://stackblitz.com"}function mn(B,Y,V){if(!Y||!B||!B.parentNode)throw new Error("Invalid Element");B.id&&(Y.id=B.id),B.className&&(Y.className=B.className),function(fe,Ae){Ae&&typeof Ae=="object"&&(Object.hasOwnProperty.call(Ae,"height")&&(fe.height=""+Ae.height),Object.hasOwnProperty.call(Ae,"width")&&(fe.width=""+Ae.width)),fe.height||(fe.height="300"),fe.width||fe.setAttribute("style","width:100%;")}(Y,V),B.parentNode.replaceChild(Y,B)}function Mn(B){if(typeof B=="string"){var Y=document.getElementById(B);if(!Y)throw new Error("Could not find element with id '"+B+"'");return Y}if(B instanceof HTMLElement)return B;throw new Error("Invalid element: "+B)}function Sn(B){return B&&B.newWindow===!1?"_self":"_blank"}function gn(){return gn=Object.assign||function(B){for(var Y=1;Y=20)return qe(),fe("Timeout: Unable to establish a connection with the StackBlitz VM"),void Se.forEach(function(_n,Hn){_n.id===Y.id&&Se.splice(Hn,1)});on++,Ke()}},500)}),Se.push(this)};function Me(B,Y){var V=document.createElement("input");return V.type="hidden",V.name=B,V.value=Y,V}function An(B){if(!se.includes(B.template)){var Y=se.map(function(Ae){return"'"+Ae+"'"}).join(", ");console.warn("Unsupported project.template: must be one of "+Y)}var V=B.template==="node",fe=document.createElement("form");return fe.method="POST",fe.setAttribute("style","display:none!important;"),fe.appendChild(Me("project[title]",B.title)),fe.appendChild(Me("project[description]",B.description)),fe.appendChild(Me("project[template]",B.template)),B.dependencies&&(V?console.warn("Invalid project.dependencies: dependencies must be provided as a 'package.json' file when using the 'node' template."):fe.appendChild(Me("project[dependencies]",JSON.stringify(B.dependencies)))),B.settings&&fe.appendChild(Me("project[settings]",JSON.stringify(B.settings))),Object.keys(B.files).forEach(function(Ae){var Ke="project[files]"+function(on){return"["+on.replace(/\[/g,"%5B").replace(/\]/g,"%5D")+"]"}(Ae),qe=B.files[Ae];typeof qe=="string"&&fe.appendChild(Me(Ke,qe))}),fe}function Ye(B){var Y,V,fe,Ae;return B!=null&&B.contentWindow?(Ae=(V=B)instanceof Element?"element":"id",(Y=(fe=Se.find(function(Ke){return Ke[Ae]===V}))!=null?fe:null)!=null?Y:new Pe(B)).pending:Promise.reject("Provided element is not an iframe.")}var Xn={connect:Ye,embedGithubProject:function(B,Y,V){var fe=Mn(B),Ae=document.createElement("iframe");return Ae.src=Xe("/github/"+Y,V),mn(fe,Ae,V),Ye(Ae)},embedProject:function(B,Y,V){var fe,Ae=Mn(B),Ke=function(on,yn){var _n=An(on);return _n.action=Xe("/run",yn),_n.id="sb"," "+_n.outerHTML+"
+
+
\ No newline at end of file