|
5 | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
6 | 6 | <title>LeetCode: Snail Traversal - 蛇行パターンで1D→2D配列変換</title> |
7 | 7 |
|
8 | | - <!-- Tailwind CSS --> |
9 | | - <script |
10 | | - src="https://cdn.tailwindcss.com/3.4.1" |
11 | | - crossorigin="anonymous" |
12 | | - ></script> |
| 8 | + <!-- Tailwind CSS (Play CDN - SRI非対応) --> |
| 9 | + <script src="https://cdn.tailwindcss.com"></script> |
13 | 10 |
|
14 | 11 | <!-- Google Fonts --> |
15 | 12 | <link rel="preconnect" href="https://fonts.googleapis.com" /> |
|
23 | 20 | <link |
24 | 21 | href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-tomorrow.min.css" |
25 | 22 | rel="stylesheet" |
26 | | - integrity="sha384-wFjoQjtV1y5jVHbt0p35Ui8aV8GVpEZkyF99OXWqP/eNJDU93D3Ugxkoyh6Y2I4" |
| 23 | + integrity="sha384-wFjoQjtV1y5jVHbt0p35Ui8aV8GVpEZkyF99OXWqP/eNJDU93D3Ugxkoyh6Y2I4A" |
27 | 24 | crossorigin="anonymous" |
28 | 25 | /> |
29 | 26 | <link |
30 | 27 | href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/line-numbers/prism-line-numbers.min.css" |
31 | 28 | rel="stylesheet" |
32 | | - integrity="sha384-AnUkTNLI8COlMCRJ0FHIdX76If83145OTCLUx4gQyfnO0gGeO/sD9czGEUBxtkUU" |
| 29 | + integrity="sha384-nUkTNLI8COlMCRJ0FHIdX76If83145OTCLUx4gQyfnO0gGeO/sD9czGEUBxtkcUv" |
33 | 30 | crossorigin="anonymous" |
34 | 31 | /> |
35 | 32 | <link |
36 | 33 | href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/toolbar/prism-toolbar.min.css" |
37 | 34 | rel="stylesheet" |
38 | | - integrity="sha384-vEUzJ34/1CCeefTGUKLgvA5Z/vYIwi+Jyu8aAaCfFDxfwZ3Xs3OfkkIeegsLRM11" |
| 35 | + integrity="sha384-EUzJ34/1CCeefTGUKLgvA5Z/vYIwi+Jyu8aAaCfFDxfwZ3Xs3OfkkIeegsLRM11e" |
39 | 36 | crossorigin="anonymous" |
40 | 37 | /> |
41 | 38 |
|
@@ -251,8 +248,10 @@ <h3 class="text-xl font-semibold text-teal-800 mt-6 mb-3">戦略のポイント< |
251 | 248 | TypeScript実装(最適化版) |
252 | 249 | </h2> |
253 | 250 |
|
254 | | - <pre class="line-numbers"><code class="language-typescript">declare interface Array<T> { |
255 | | - snail(rowsCount: number, colsCount: number): T[][]; |
| 251 | + <pre class="line-numbers"><code class="language-typescript">declare global { |
| 252 | + interface Array<T> { |
| 253 | + snail(this: T[], rowsCount: number, colsCount: number): T[][]; |
| 254 | + } |
256 | 255 | } |
257 | 256 |
|
258 | 257 | /** |
@@ -1297,18 +1296,20 @@ <h3 class="text-xl font-semibold text-teal-800 mt-8 mb-4">実装方法の比較< |
1297 | 1296 | <p className="font-semibold text-emerald-900"> |
1298 | 1297 | Snail Traversalパターン: |
1299 | 1298 | </p> |
1300 | | - {visual.result2d[0].map((_, colIdx) => { |
1301 | | - const isEvenCol = colIdx % 2 === 0; |
1302 | | - const colValues = isEvenCol |
1303 | | - ? visual.result2d.map(r => r[colIdx]) |
1304 | | - : [...visual.result2d].reverse().map(r => r[colIdx]); |
1305 | | - |
1306 | | - return ( |
1307 | | - <li key={colIdx}> |
1308 | | - • 列{colIdx}: {isEvenCol ? '上から下' : '下から上'} [{colValues.join(', ')}] |
1309 | | - </li> |
1310 | | - ); |
1311 | | - })} |
| 1299 | + <ul> |
| 1300 | + {visual.result2d[0].map((_, colIdx) => { |
| 1301 | + const isEvenCol = colIdx % 2 === 0; |
| 1302 | + const colValues = isEvenCol |
| 1303 | + ? visual.result2d.map(r => r[colIdx]) |
| 1304 | + : [...visual.result2d].reverse().map(r => r[colIdx]); |
| 1305 | + |
| 1306 | + return ( |
| 1307 | + <li key={colIdx}> |
| 1308 | + • 列{colIdx}: {isEvenCol ? '上から下' : '下から上'} [{colValues.join(', ')}] |
| 1309 | + </li> |
| 1310 | + ); |
| 1311 | + })} |
| 1312 | + </ul> |
1312 | 1313 | </div> |
1313 | 1314 | </div> |
1314 | 1315 | )} |
@@ -1619,10 +1620,5 @@ <h3 className="mt-0 text-teal-800 text-xl font-semibold"> |
1619 | 1620 | const root = ReactDOM.createRoot(document.getElementById('react-root')); |
1620 | 1621 | root.render(<SnailTraversalSteps />); |
1621 | 1622 | </script> |
1622 | | - <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js"></script> |
1623 | | - <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-typescript.min.js"></script> |
1624 | | - <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/line-numbers/prism-line-numbers.min.js"></script> |
1625 | | - <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/toolbar/prism-toolbar.min.js"></script> |
1626 | | - <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js"></script> |
1627 | 1623 | </body> |
1628 | 1624 | </html> |
0 commit comments