feat: LeetCode Hot 100 - 100道题完整交互式图解页面
Deploy / deploy (push) Successful in 7s

This commit is contained in:
2026-08-24 04:35:13 +00:00
parent e4fe5afb80
commit 4f830ad352
114 changed files with 32137 additions and 82 deletions
+150
View File
@@ -0,0 +1,150 @@
/* ===== Illustrated Algorithm – Shared Styles ===== */
:root {
--bg: #0f1117;
--surface: #1a1d27;
--surface2: #242836;
--border: #2e3347;
--text: #e4e6f0;
--text2: #9499b3;
--accent: #6c7eff;
--accent2: #5a6adf;
--green: #3dd68c;
--green-dim: rgba(61,214,140,.15);
--red: #f06060;
--red-dim: rgba(240,96,96,.15);
--orange: #f5a623;
--orange-dim: rgba(245,166,35,.15);
--blue: #4da6ff;
--blue-dim: rgba(77,166,255,.15);
--purple: #b47aff;
--purple-dim: rgba(180,122,255,.15);
--cyan: #22d3ee;
--yellow: #facc15;
--font: 'Inter','SF Pro Display',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
--mono: 'JetBrains Mono','Fira Code','SF Mono',Menlo,Consolas,monospace;
--radius: 8px;
--shadow: 0 2px 12px rgba(0,0,0,.35);
}
*{margin:0;padding:0;box-sizing:border-box;}
html{font-size:15px;-webkit-font-smoothing:antialiased;}
body{background:var(--bg);color:var(--text);font-family:var(--font);line-height:1.6;padding:0 0 48px;}
.container{max-width:1080px;margin:0 auto;padding:24px 20px;}
h1{font-size:1.7rem;font-weight:700;margin-bottom:6px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.badge{font-size:.7rem;font-weight:600;padding:2px 10px;border-radius:20px;letter-spacing:.5px;text-transform:uppercase;vertical-align:middle;}
.badge.easy{background:var(--green-dim);color:var(--green);}
.badge.medium{background:var(--orange-dim);color:var(--orange);}
.badge.hard{background:var(--red-dim);color:var(--red);}
.subtitle{color:var(--text2);font-size:.85rem;margin-bottom:18px;}
/* Controls */
.controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:14px;background:var(--surface);padding:10px 14px;border-radius:var(--radius);border:1px solid var(--border);}
.controls label{font-size:.82rem;color:var(--text2);}
.controls input[type=text]{background:var(--surface2);border:1px solid var(--border);color:var(--text);padding:6px 10px;border-radius:6px;font-family:var(--mono);font-size:.82rem;width:180px;}
.controls select{background:var(--surface2);border:1px solid var(--border);color:var(--text);padding:5px 8px;border-radius:6px;font-size:.82rem;}
.controls button{padding:6px 14px;border:none;border-radius:6px;font-size:.82rem;cursor:pointer;font-weight:600;transition:all .15s;}
.controls button.primary{background:var(--accent);color:#fff;}
.controls button.primary:hover{background:var(--accent2);}
.controls button:not(.primary){background:var(--surface2);color:var(--text);border:1px solid var(--border);}
.controls button:not(.primary):hover{background:var(--border);}
/* Pipeline */
.pipeline{display:flex;gap:3px;margin-bottom:10px;flex-wrap:wrap;}
.pipeline .step-dot{width:28px;height:6px;border-radius:3px;background:var(--surface2);transition:background .2s;}
.pipeline .step-dot.done{background:var(--accent);}
.pipeline .step-dot.active{background:var(--orange);}
/* Hint */
.hint{padding:10px 14px;border-radius:var(--radius);margin-bottom:14px;font-size:.85rem;line-height:1.6;}
.hint.info{background:var(--blue-dim);color:var(--blue);border:1px solid rgba(77,166,255,.25);}
.hint #stepInfo{font-weight:700;}
/* Panels */
.panels{display:grid;grid-template-columns:1fr;gap:14px;margin-bottom:14px;}
.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;}
.panel h3{font-size:.9rem;font-weight:700;margin-bottom:10px;color:var(--text2);}
.panel-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
@media(max-width:700px){.panel-grid{grid-template-columns:1fr;}}
/* Vis area */
.vis-area{min-height:120px;position:relative;}
.vis-area svg{display:block;margin:0 auto;}
/* Array rendering */
.arr-row{display:flex;align-items:flex-end;gap:4px;justify-content:center;margin:8px 0;}
.arr-cell{display:flex;flex-direction:column;align-items:center;min-width:36px;}
.arr-val{font-family:var(--mono);font-size:.82rem;padding:3px 0;color:var(--text);}
.arr-bar{width:30px;border-radius:4px 4px 0 0;background:var(--accent);transition:all .25s;}
.arr-idx{font-family:var(--mono);font-size:.68rem;color:var(--text2);margin-top:2px;}
.arr-bar.min-price{background:var(--green);box-shadow:0 0 8px var(--green);}
.arr-bar.current{background:var(--orange);box-shadow:0 0 8px var(--orange);}
.arr-bar.checking{background:var(--purple);box-shadow:0 0 6px var(--purple);}
.arr-bar.covered{background:var(--blue);opacity:.7;}
.arr-bar.best{background:var(--green);box-shadow:0 0 8px var(--green);}
.arr-cell .tag{font-size:.6rem;font-weight:700;margin-top:1px;}
/* Grid rendering */
.grid-vis{display:inline-grid;gap:3px;margin:8px auto;}
.grid-cell{width:48px;height:48px;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:.82rem;border-radius:4px;background:var(--surface2);border:1px solid var(--border);transition:all .25s;position:relative;}
.grid-cell.highlight{background:var(--accent);color:#fff;border-color:var(--accent);}
.grid-cell.path{background:var(--green);color:#fff;border-color:var(--green);box-shadow:0 0 6px var(--green);}
.grid-cell.computing{background:var(--orange-dim);border-color:var(--orange);}
.grid-cell.origin{background:var(--purple-dim);border-color:var(--purple);}
/* String rendering */
.str-row{display:flex;gap:2px;justify-content:center;margin:8px 0;flex-wrap:wrap;}
.str-cell{width:32px;height:44px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:var(--mono);font-size:.9rem;border-radius:4px;background:var(--surface2);border:2px solid transparent;transition:all .2s;}
.str-cell.center{border-color:var(--orange);background:var(--orange-dim);}
.str-cell.expand{border-color:var(--purple);background:var(--purple-dim);}
.str-cell.palindrome{background:var(--green-dim);border-color:var(--green);}
.str-cell.best{background:var(--green);color:#fff;border-color:var(--green);}
.str-cell .str-idx{font-size:.55rem;color:var(--text2);}
/* Partition colors */
.part-0{background:var(--accent)!important;border-color:var(--accent)!important;}
.part-1{background:var(--green)!important;border-color:var(--green)!important;}
.part-2{background:var(--orange)!important;border-color:var(--orange)!important;}
.part-3{background:var(--purple)!important;border-color:var(--purple)!important;}
.part-4{background:var(--cyan)!important;border-color:var(--cyan)!important;}
.part-5{background:var(--yellow)!important;border-color:var(--yellow)!important;color:#222!important;}
.part-6{background:var(--red)!important;border-color:var(--red)!important;}
.part-7{background:var(--blue)!important;border-color:var(--blue)!important;}
/* Jump vis */
.jump-row{display:flex;gap:3px;align-items:center;justify-content:center;margin:8px 0;flex-wrap:wrap;}
.jump-cell{display:flex;flex-direction:column;align-items:center;min-width:38px;padding:4px 2px;border-radius:6px;transition:all .2s;}
.jump-cell .j-val{font-family:var(--mono);font-size:.9rem;font-weight:600;}
.jump-cell .j-idx{font-size:.6rem;color:var(--text2);}
.jump-cell.reachable{background:var(--blue-dim);border:1px solid var(--blue);}
.jump-cell.current{background:var(--orange-dim);border:2px solid var(--orange);}
.jump-cell.max-reach{background:var(--green-dim);border:2px solid var(--green);}
.jump-cell.step-start{border-bottom:3px solid var(--orange);}
.jump-cell .j-chip{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700;background:var(--surface2);border:2px solid var(--border);}
/* Code */
.code-section{margin-top:16px;}
pre.code-block{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;overflow-x:auto;font-family:var(--mono);font-size:.8rem;line-height:1.7;white-space:pre;color:var(--text2);}
pre.code-block .hl{background:var(--orange-dim);display:inline-block;width:calc(100% + 24px);margin:0 -12px;padding:0 12px;border-left:3px solid var(--orange);}
pre.code-block .kw{color:var(--purple);}
pre.code-block .fn{color:var(--blue);}
pre.code-block .str{color:var(--green);}
pre.code-block .num{color:var(--orange);}
pre.code-block .cmt{color:#555;font-style:italic;}
/* Result */
.result-box{background:var(--green-dim);border:1px solid rgba(61,214,140,.3);border-radius:var(--radius);padding:12px 16px;font-size:.9rem;color:var(--green);}
.result-box .val{font-size:1.3rem;font-weight:700;}
/* Footer */
footer{text-align:center;color:var(--text2);font-size:.72rem;margin-top:32px;opacity:.5;}
/* Misc */
.flex-center{display:flex;align-items:center;justify-content:center;}
.mt-8{margin-top:8px;}
.mb-8{margin-bottom:8px;}
.tag-green{color:var(--green);font-weight:700;font-size:.75rem;}
.tag-orange{color:var(--orange);font-weight:700;font-size:.75rem;}
.tag-red{color:var(--red);font-weight:700;font-size:.75rem;}
.tag-blue{color:var(--blue);font-weight:700;font-size:.75rem;}
.legend{display:flex;gap:12px;flex-wrap:wrap;margin:8px 0;font-size:.75rem;color:var(--text2);}
.legend-item{display:flex;align-items:center;gap:4px;}
.legend-dot{width:10px;height:10px;border-radius:3px;}