Load homepage 3D directly and preload below-fold media (#2014)

This commit is contained in:
Yudong Jin
2026-11-04 02:02:14 +08:00
committed by GitHub
parent 9add126dd5
commit 78328cd538
11 changed files with 968 additions and 312 deletions
+137 -48
View File
@@ -1,8 +1,8 @@
<!-- Generated from the shared homepage template and locale configuration. -->
<link href="assets/home/ad8bb1cc4c28091c/hero-motion.css" rel="stylesheet"/>
<link href="assets/home/8e54cf1d70453241/hero-motion.css" rel="stylesheet"/>
<noscript>
<style>
[data-home-src], video[data-home-poster] { display: none; }
[data-home-src], video[data-home-poster], [data-hero-fallback] { display: none; }
</style>
</noscript>
<section class="home-div home-universe-bg" data-md-color-primary="grey" data-md-color-scheme="slate">
@@ -11,88 +11,127 @@
</div>
</div>
<div class="hero-div" data-home-layout="universe">
<img alt="" data-hero-asset="ground" data-source-height="380" data-source-width="881" height="380" loading="lazy" src="assets/home/ad8bb1cc4c28091c/../shared/images/567306c070a6a7e2/ground.webp" style="position: absolute; width: auto; height: 26.445%; left: 28.211%; top: 54.145%;" width="881"/>
<img alt="" data-hero-asset="links" data-source-height="1134" data-source-width="1562" height="1134" loading="lazy" src="assets/home/ad8bb1cc4c28091c/../shared/images/3e50f38a325c1cb5/links.webp" style="position: absolute; width: auto; height: 78.751%; left: 10.545%; top: 7.326%;" width="1562"/>
<img alt="" data-hero-asset="ground" data-source-height="380" data-source-width="881" height="380" loading="lazy" src="assets/home/8e54cf1d70453241/../shared/images/567306c070a6a7e2/ground.webp" style="position: absolute; width: auto; height: 26.445%; left: 28.211%; top: 54.145%;; aspect-ratio: 881 / 380" width="881"/>
<img alt="" data-hero-asset="links" data-source-height="1134" data-source-width="1562" height="1134" loading="lazy" src="assets/home/8e54cf1d70453241/../shared/images/3e50f38a325c1cb5/links.webp" style="position: absolute; width: auto; height: 78.751%; left: 10.545%; top: 7.326%;; aspect-ratio: 1562 / 1134" width="1562"/>
<a href="chapter_introduction/">
<img alt="" data-hero-asset="astronaut" data-source-height="672" data-source-width="515" height="672" src="assets/home/ad8bb1cc4c28091c/../shared/images/8e5eb3b3e3ebd9f7/astronaut.webp" style="height: 46.673%; left: 35.413%; top: 24.343%;" width="515"/>
<img alt="" data-hero-asset="astronaut" data-source-height="672" data-source-width="515" height="672" src="assets/home/8e54cf1d70453241/../shared/images/8e5eb3b3e3ebd9f7/astronaut.webp" style="height: 46.673%; left: 35.413%; top: 24.343%;; aspect-ratio: 515 / 672" width="515"/>
<span style="left: 52.244%; top: 20.919%;">
初识算法
</span>
</a>
<a href="chapter_computational_complexity/">
<img alt="" data-hero-asset="chapter_computational_complexity" data-source-height="178" data-source-width="113" height="178" src="assets/home/ad8bb1cc4c28091c/../shared/images/2fb425426d1f8d86/chapter_computational_complexity.webp" style="height: 12.347%; left: 36.267%; top: 37.653%;" width="113"/>
<img alt="" data-hero-asset="chapter_computational_complexity" data-hero-fallback="assets/home/8e54cf1d70453241/../shared/images/2fb425426d1f8d86/chapter_computational_complexity.webp" data-source-height="178" data-source-width="113" height="178" style="height: 12.347%; left: 36.267%; top: 37.653%;; aspect-ratio: 113 / 178" width="113"/>
<noscript>
<img alt="" height="178" src="assets/home/8e54cf1d70453241/../shared/images/2fb425426d1f8d86/chapter_computational_complexity.webp" style="height: 12.347%; left: 36.267%; top: 37.653%;" width="113"/>
</noscript>
<span style="left: 39.244%; top: 33.919%;">
复杂度
</span>
</a>
<a href="chapter_array_and_linkedlist/">
<img alt="" data-hero-asset="chapter_array_and_linkedlist" data-source-height="319" data-source-width="468" height="319" src="assets/home/ad8bb1cc4c28091c/../shared/images/5cbbdf7be555d3ef/chapter_array_and_linkedlist.webp" style="height: 22.242%; left: 73.242%; top: 52.481%;" width="468"/>
<img alt="" data-hero-asset="chapter_array_and_linkedlist" data-hero-fallback="assets/home/8e54cf1d70453241/../shared/images/5cbbdf7be555d3ef/chapter_array_and_linkedlist.webp" data-source-height="319" data-source-width="468" height="319" style="height: 22.242%; left: 73.242%; top: 52.481%;; aspect-ratio: 468 / 319" width="468"/>
<noscript>
<img alt="" height="319" src="assets/home/8e54cf1d70453241/../shared/images/5cbbdf7be555d3ef/chapter_array_and_linkedlist.webp" style="height: 22.242%; left: 73.242%; top: 52.481%;" width="468"/>
</noscript>
<span style="left: 90.897%; top: 76.259%;">
数组与链表
</span>
</a>
<a href="chapter_stack_and_queue/">
<img alt="" data-hero-asset="chapter_stack_and_queue" data-source-height="204" data-source-width="204" height="204" src="assets/home/ad8bb1cc4c28091c/../shared/images/e2667767cf7481bd/chapter_stack_and_queue.webp" style="height: 14.302%; left: 62.646%; top: 77.875%;" width="204"/>
<img alt="" data-hero-asset="chapter_stack_and_queue" data-hero-fallback="assets/home/8e54cf1d70453241/../shared/images/e2667767cf7481bd/chapter_stack_and_queue.webp" data-source-height="204" data-source-width="204" height="204" style="height: 14.302%; left: 62.646%; top: 77.875%;; aspect-ratio: 204 / 204" width="204"/>
<noscript>
<img alt="" height="204" src="assets/home/8e54cf1d70453241/../shared/images/e2667767cf7481bd/chapter_stack_and_queue.webp" style="height: 14.302%; left: 62.646%; top: 77.875%;" width="204"/>
</noscript>
<span style="left: 77.571%; top: 91.25%;">
栈与队列
</span>
</a>
<a href="chapter_hashing/">
<img alt="" data-hero-asset="chapter_hashing" data-source-height="218" data-source-width="218" height="218" src="assets/home/ad8bb1cc4c28091c/../shared/images/b108d70a537714cb/chapter_hashing.webp" style="height: 15.266%; left: 63.281%; top: 27.933%;" width="218"/>
<img alt="" data-hero-asset="chapter_hashing" data-hero-fallback="assets/home/8e54cf1d70453241/../shared/images/b108d70a537714cb/chapter_hashing.webp" data-source-height="218" data-source-width="218" height="218" style="height: 15.266%; left: 63.281%; top: 27.933%;; aspect-ratio: 218 / 218" width="218"/>
<noscript>
<img alt="" height="218" src="assets/home/8e54cf1d70453241/../shared/images/b108d70a537714cb/chapter_hashing.webp" style="height: 15.266%; left: 63.281%; top: 27.933%;" width="218"/>
</noscript>
<span style="left: 68.862%; top: 46.292%;">
哈希表
</span>
</a>
<a href="chapter_tree/">
<img alt="" data-hero-asset="chapter_tree" data-source-height="281" data-source-width="280" height="281" src="assets/home/ad8bb1cc4c28091c/../shared/images/8138bb0acecedec4/chapter_tree.webp" style="height: 19.615%; left: 80.137%; top: 26.678%;" width="280"/>
<img alt="" data-hero-asset="chapter_tree" data-hero-fallback="assets/home/8e54cf1d70453241/../shared/images/8138bb0acecedec4/chapter_tree.webp" data-source-height="281" data-source-width="280" height="281" style="height: 19.615%; left: 80.137%; top: 26.678%;; aspect-ratio: 280 / 281" width="280"/>
<noscript>
<img alt="" height="281" src="assets/home/8e54cf1d70453241/../shared/images/8138bb0acecedec4/chapter_tree.webp" style="height: 19.615%; left: 80.137%; top: 26.678%;" width="280"/>
</noscript>
<span style="left: 96.159%; top: 44.8%;">
树
</span>
</a>
<a href="chapter_heap/">
<img alt="" data-hero-asset="chapter_heap" data-source-height="152" data-source-width="151" height="152" src="assets/home/ad8bb1cc4c28091c/../shared/images/7586281e6691807a/chapter_heap.webp" style="height: 10.566%; left: 77.226%; top: 11.559%;" width="151"/>
<img alt="" data-hero-asset="chapter_heap" data-hero-fallback="assets/home/8e54cf1d70453241/../shared/images/7586281e6691807a/chapter_heap.webp" data-source-height="152" data-source-width="151" height="152" style="height: 10.566%; left: 77.226%; top: 11.559%;; aspect-ratio: 151 / 152" width="151"/>
<noscript>
<img alt="" height="152" src="assets/home/8e54cf1d70453241/../shared/images/7586281e6691807a/chapter_heap.webp" style="height: 10.566%; left: 77.226%; top: 11.559%;" width="151"/>
</noscript>
<span style="left: 88.103%; top: 15.422%;">
堆
</span>
</a>
<a href="chapter_graph/">
<img alt="" data-hero-asset="chapter_graph" data-source-height="272" data-source-width="542" height="272" src="assets/home/ad8bb1cc4c28091c/../shared/images/175a7f2e7c3cf5f0/chapter_graph.webp" style="height: 16.112%; left: 51.854%; top: 5.575%;" width="542"/>
<img alt="" data-hero-asset="chapter_graph" data-hero-fallback="assets/home/8e54cf1d70453241/../shared/images/175a7f2e7c3cf5f0/chapter_graph.webp" data-source-height="272" data-source-width="542" height="272" style="height: 16.112%; left: 51.854%; top: 5.575%;; aspect-ratio: 542 / 272" width="542"/>
<noscript>
<img alt="" height="272" src="assets/home/8e54cf1d70453241/../shared/images/175a7f2e7c3cf5f0/chapter_graph.webp" style="height: 16.112%; left: 51.854%; top: 5.575%;" width="542"/>
</noscript>
<span style="left: 71.195%; top: 6.503%;">
图
</span>
</a>
<a href="chapter_searching/">
<img alt="" data-hero-asset="chapter_searching" data-source-height="216" data-source-width="216" height="216" src="assets/home/ad8bb1cc4c28091c/../shared/images/ebfe2b953dbb9d90/chapter_searching.webp" style="height: 15.149%; left: 18.185%; top: 16.404%;" width="216"/>
<img alt="" data-hero-asset="chapter_searching" data-hero-fallback="assets/home/8e54cf1d70453241/../shared/images/ebfe2b953dbb9d90/chapter_searching.webp" data-source-height="216" data-source-width="216" height="216" style="height: 15.149%; left: 18.185%; top: 16.404%;; aspect-ratio: 216 / 216" width="216"/>
<noscript>
<img alt="" height="216" src="assets/home/8e54cf1d70453241/../shared/images/ebfe2b953dbb9d90/chapter_searching.webp" style="height: 15.149%; left: 18.185%; top: 16.404%;" width="216"/>
</noscript>
<span style="left: 14.556%; top: 20.876%;">
搜索
</span>
</a>
<a href="chapter_sorting/">
<img alt="" data-hero-asset="chapter_sorting" data-source-height="137" data-source-width="138" height="137" src="assets/home/ad8bb1cc4c28091c/../shared/images/9d4be68b2680967c/chapter_sorting.webp" style="height: 9.574%; left: 25.409%; top: 40.747%;" width="138"/>
<img alt="" data-hero-asset="chapter_sorting" data-hero-fallback="assets/home/8e54cf1d70453241/../shared/images/9d4be68b2680967c/chapter_sorting.webp" data-source-height="137" data-source-width="138" height="137" style="height: 9.574%; left: 25.409%; top: 40.747%;; aspect-ratio: 138 / 137" width="138"/>
<noscript>
<img alt="" height="137" src="assets/home/8e54cf1d70453241/../shared/images/9d4be68b2680967c/chapter_sorting.webp" style="height: 9.574%; left: 25.409%; top: 40.747%;" width="138"/>
</noscript>
<span style="left: 28.805%; top: 53.808%;">
排序
</span>
</a>
<a href="chapter_divide_and_conquer/">
<img alt="" data-hero-asset="chapter_divide_and_conquer" data-source-height="269" data-source-width="407" height="269" src="assets/home/ad8bb1cc4c28091c/../shared/images/6f5766ca9385cd2e/chapter_divide_and_conquer.webp" style="height: 18.681%; left: 32.721%; top: 4.816%;" width="407"/>
<img alt="" data-hero-asset="chapter_divide_and_conquer" data-hero-fallback="assets/home/8e54cf1d70453241/../shared/images/6f5766ca9385cd2e/chapter_divide_and_conquer.webp" data-source-height="269" data-source-width="407" height="269" style="height: 18.681%; left: 32.721%; top: 4.816%;; aspect-ratio: 407 / 269" width="407"/>
<noscript>
<img alt="" height="269" src="assets/home/8e54cf1d70453241/../shared/images/6f5766ca9385cd2e/chapter_divide_and_conquer.webp" style="height: 18.681%; left: 32.721%; top: 4.816%;" width="407"/>
</noscript>
<span style="left: 31.42%; top: 8.679%;">
分治
</span>
</a>
<a href="chapter_backtracking/">
<img alt="" data-hero-asset="chapter_backtracking" data-source-height="249" data-source-width="345" height="249" src="assets/home/ad8bb1cc4c28091c/../shared/images/176675e685febf11/chapter_backtracking.webp" style="height: 17.338%; left: 4.875%; top: 32.925%;" width="345"/>
<img alt="" data-hero-asset="chapter_backtracking" data-hero-fallback="assets/home/8e54cf1d70453241/../shared/images/176675e685febf11/chapter_backtracking.webp" data-source-height="249" data-source-width="345" height="249" style="height: 17.338%; left: 4.875%; top: 32.925%;; aspect-ratio: 345 / 249" width="345"/>
<noscript>
<img alt="" height="249" src="assets/home/8e54cf1d70453241/../shared/images/176675e685febf11/chapter_backtracking.webp" style="height: 17.338%; left: 4.875%; top: 32.925%;" width="345"/>
</noscript>
<span style="left: 4.742%; top: 50.113%;">
回溯
</span>
</a>
<a href="chapter_dynamic_programming/">
<img alt="" data-hero-asset="chapter_dynamic_programming" data-source-height="268" data-source-width="267" height="268" src="assets/home/ad8bb1cc4c28091c/../shared/images/06264b1ffd05b08e/chapter_dynamic_programming.webp" style="height: 15.47%; left: 9.406%; top: 57.472%;" width="267"/>
<img alt="" data-hero-asset="chapter_dynamic_programming" data-hero-fallback="assets/home/8e54cf1d70453241/../shared/images/06264b1ffd05b08e/chapter_dynamic_programming.webp" data-source-height="268" data-source-width="267" height="268" style="height: 15.47%; left: 9.406%; top: 57.472%;; aspect-ratio: 267 / 268" width="267"/>
<noscript>
<img alt="" height="268" src="assets/home/8e54cf1d70453241/../shared/images/06264b1ffd05b08e/chapter_dynamic_programming.webp" style="height: 15.47%; left: 9.406%; top: 57.472%;" width="267"/>
</noscript>
<span style="left: 8.561%; top: 75.351%;">
动态规划
</span>
</a>
<a href="chapter_greedy/">
<img alt="" data-hero-asset="chapter_greedy" data-source-height="202" data-source-width="265" height="202" src="assets/home/ad8bb1cc4c28091c/../shared/images/2ce6caaac951c40b/chapter_greedy.webp" style="height: 14.127%; left: 23.132%; top: 75.803%;" width="265"/>
<img alt="" data-hero-asset="chapter_greedy" data-hero-fallback="assets/home/8e54cf1d70453241/../shared/images/2ce6caaac951c40b/chapter_greedy.webp" data-source-height="202" data-source-width="265" height="202" style="height: 14.127%; left: 23.132%; top: 75.803%;; aspect-ratio: 265 / 202" width="265"/>
<noscript>
<img alt="" height="202" src="assets/home/8e54cf1d70453241/../shared/images/2ce6caaac951c40b/chapter_greedy.webp" style="height: 14.127%; left: 23.132%; top: 75.803%;" width="265"/>
</noscript>
<span style="left: 21.619%; top: 86.85%;">
贪心
</span>
@@ -139,9 +178,9 @@
<a href="chapter_paperbook/">
<div style="height: 8.17%;">
</div>
<img alt="Cover" class="device-on-hover" data-home-src="assets/home/ad8bb1cc4c28091c/../shared/images/dc5be783cea3a262/cover_render.webp" decoding="async" height="720" style="height: 66.83%;" width="535"/>
<img alt="Cover" class="device-on-hover" data-home-src="assets/home/8e54cf1d70453241/../shared/images/dc5be783cea3a262/cover_render.webp" decoding="async" height="720" style="height: 66.83%;" width="535"/>
<noscript>
<img alt="Cover" class="device-on-hover" height="720" loading="lazy" src="assets/home/ad8bb1cc4c28091c/../shared/images/dc5be783cea3a262/cover_render.webp" style="height: 66.83%;" width="535"/>
<img alt="Cover" class="device-on-hover" height="720" loading="lazy" src="assets/home/8e54cf1d70453241/../shared/images/dc5be783cea3a262/cover_render.webp" style="height: 66.83%;" width="535"/>
</noscript>
<div class="text-button">
<span>
@@ -158,9 +197,9 @@
<a href="chapter_hello_algo/">
<div style="height: 4.34%;">
</div>
<img alt="" class="device-on-hover" data-home-src="assets/home/ad8bb1cc4c28091c/../shared/images/5b64cf7672ec5ec6/web_mac_iphone.webp" decoding="async" height="965" style="height: 66.31%;" width="1598"/>
<img alt="" class="device-on-hover" data-home-src="assets/home/8e54cf1d70453241/../shared/images/5b64cf7672ec5ec6/web_mac_iphone.webp" decoding="async" height="965" style="height: 66.31%;" width="1598"/>
<noscript>
<img alt="" class="device-on-hover" height="965" loading="lazy" src="assets/home/ad8bb1cc4c28091c/../shared/images/5b64cf7672ec5ec6/web_mac_iphone.webp" style="height: 66.31%;" width="1598"/>
<img alt="" class="device-on-hover" height="965" loading="lazy" src="assets/home/8e54cf1d70453241/../shared/images/5b64cf7672ec5ec6/web_mac_iphone.webp" style="height: 66.31%;" width="1598"/>
</noscript>
<div style="height: 4.34%;">
</div>
@@ -177,9 +216,9 @@
</div>
<div class="media-block">
<a href="https://github.com/krahets/hello-algo/releases">
<img alt="" class="device-on-hover" data-home-src="assets/home/ad8bb1cc4c28091c/../shared/images/66baa2f9bf3abec7/pdf_ipad.webp" decoding="async" height="960" style="height: 75%;" width="812"/>
<img alt="" class="device-on-hover" data-home-src="assets/home/8e54cf1d70453241/../shared/images/66baa2f9bf3abec7/pdf_ipad.webp" decoding="async" height="960" style="height: 75%;" width="812"/>
<noscript>
<img alt="" class="device-on-hover" height="960" loading="lazy" src="assets/home/ad8bb1cc4c28091c/../shared/images/66baa2f9bf3abec7/pdf_ipad.webp" style="height: 75%;" width="812"/>
<img alt="" class="device-on-hover" height="960" loading="lazy" src="assets/home/8e54cf1d70453241/../shared/images/66baa2f9bf3abec7/pdf_ipad.webp" style="height: 75%;" width="812"/>
</noscript>
<div class="text-button">
<span>
@@ -247,21 +286,21 @@
</p>
</div>
</div>
<video aria-label="Animation example" class="intro-image" data-home-poster="assets/home/ad8bb1cc4c28091c/../shared/images/9e5f39bf33afc70f/animation-poster.webp" data-home-video="assets/home/ad8bb1cc4c28091c/../shared/media/6c70de2b2bf4eef7/animation.mp4" height="1080" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1600 / 1080" width="1600">
<video aria-label="Animation example" class="intro-image" data-home-poster="assets/home/8e54cf1d70453241/../shared/images/9e5f39bf33afc70f/animation-poster.webp" data-home-video="assets/home/8e54cf1d70453241/../shared/media/6c70de2b2bf4eef7/animation.mp4" height="1080" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1600 / 1080" width="1600">
</video>
<noscript>
<a href="assets/home/ad8bb1cc4c28091c/../shared/media/6c70de2b2bf4eef7/animation.mp4">
<img alt="Animation example" class="intro-image" height="1080" src="assets/home/ad8bb1cc4c28091c/../shared/images/9e5f39bf33afc70f/animation-poster.webp" width="1600"/>
<a href="assets/home/8e54cf1d70453241/../shared/media/6c70de2b2bf4eef7/animation.mp4">
<img alt="Animation example" class="intro-image" height="1080" src="assets/home/8e54cf1d70453241/../shared/images/9e5f39bf33afc70f/animation-poster.webp" width="1600"/>
动画图解
</a>
</noscript>
</div>
<div class="intro-container">
<video aria-label="Running code example" class="intro-image" data-home-poster="assets/home/ad8bb1cc4c28091c/../shared/images/f33a13e8331245ae/running_code-poster.webp" data-home-video="assets/home/ad8bb1cc4c28091c/../shared/media/bb169a96ca8316da/running_code.mp4" height="1082" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1600 / 1082" width="1600">
<video aria-label="Running code example" class="intro-image" data-home-poster="assets/home/8e54cf1d70453241/../shared/images/f33a13e8331245ae/running_code-poster.webp" data-home-video="assets/home/8e54cf1d70453241/../shared/media/bb169a96ca8316da/running_code.mp4" height="1082" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1600 / 1082" width="1600">
</video>
<noscript>
<a href="assets/home/ad8bb1cc4c28091c/../shared/media/bb169a96ca8316da/running_code.mp4">
<img alt="Running code example" class="intro-image" height="1082" src="assets/home/ad8bb1cc4c28091c/../shared/images/f33a13e8331245ae/running_code-poster.webp" width="1600"/>
<a href="assets/home/8e54cf1d70453241/../shared/media/bb169a96ca8316da/running_code.mp4">
<img alt="Running code example" class="intro-image" height="1082" src="assets/home/8e54cf1d70453241/../shared/images/f33a13e8331245ae/running_code-poster.webp" width="1600"/>
一键运行
</a>
</noscript>
@@ -309,11 +348,11 @@
</p>
</div>
</div>
<video aria-label="Comments example" class="intro-image" data-home-poster="assets/home/ad8bb1cc4c28091c/../shared/images/f9ac69536a7582f5/comment-poster.webp" data-home-video="assets/home/ad8bb1cc4c28091c/../shared/media/62aa0b8d351c63a7/comment.mp4" height="1080" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1600 / 1080" width="1600">
<video aria-label="Comments example" class="intro-image" data-home-poster="assets/home/8e54cf1d70453241/../shared/images/f9ac69536a7582f5/comment-poster.webp" data-home-video="assets/home/8e54cf1d70453241/../shared/media/62aa0b8d351c63a7/comment.mp4" height="1080" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1600 / 1080" width="1600">
</video>
<noscript>
<a href="assets/home/ad8bb1cc4c28091c/../shared/media/62aa0b8d351c63a7/comment.mp4">
<img alt="Comments example" class="intro-image" height="1080" src="assets/home/ad8bb1cc4c28091c/../shared/images/f9ac69536a7582f5/comment-poster.webp" width="1600"/>
<a href="assets/home/8e54cf1d70453241/../shared/media/62aa0b8d351c63a7/comment.mp4">
<img alt="Comments example" class="intro-image" height="1080" src="assets/home/8e54cf1d70453241/../shared/images/f9ac69536a7582f5/comment-poster.webp" width="1600"/>
互助学习
</a>
</noscript>
@@ -329,7 +368,10 @@
<div class="profile-div">
<div class="profile-cell">
<a href="https://github.com/krahets">
<img alt="Author: yudongjin" class="profile-img" height="512" loading="lazy" src="assets/home/ad8bb1cc4c28091c/../shared/images/02348410d40f7665/avatar_yudongjin.webp" width="512"/>
<img alt="Author: yudongjin" class="profile-img" data-home-src="assets/home/8e54cf1d70453241/../shared/images/02348410d40f7665/avatar_yudongjin.webp" decoding="async" height="512" width="512"/>
<noscript>
<img alt="Author: yudongjin" class="profile-img" height="512" loading="lazy" src="assets/home/8e54cf1d70453241/../shared/images/02348410d40f7665/avatar_yudongjin.webp" width="512"/>
</noscript>
<br/>
<b>
靳宇栋(@krahets)
@@ -348,7 +390,10 @@
<div class="profile-div">
<div class="profile-cell">
<a href="https://github.com/coderonion">
<img alt="Reviewer: coderonion" class="profile-img" height="384" loading="lazy" src="assets/home/ad8bb1cc4c28091c/../shared/images/db606f27971eae34/avatar_coderonion.webp" width="384"/>
<img alt="Reviewer: coderonion" class="profile-img" data-home-src="assets/home/8e54cf1d70453241/../shared/images/db606f27971eae34/avatar_coderonion.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: coderonion" class="profile-img" height="384" loading="lazy" src="assets/home/8e54cf1d70453241/../shared/images/db606f27971eae34/avatar_coderonion.webp" width="384"/>
</noscript>
<br/>
<b>
coderonion
@@ -361,7 +406,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/curtishd">
<img alt="Reviewer: curtishd" class="profile-img" height="384" loading="lazy" src="assets/home/ad8bb1cc4c28091c/../shared/images/feedb0e547ea31fc/avatar_curtishd.webp" width="384"/>
<img alt="Reviewer: curtishd" class="profile-img" data-home-src="assets/home/8e54cf1d70453241/../shared/images/feedb0e547ea31fc/avatar_curtishd.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: curtishd" class="profile-img" height="384" loading="lazy" src="assets/home/8e54cf1d70453241/../shared/images/feedb0e547ea31fc/avatar_curtishd.webp" width="384"/>
</noscript>
<br/>
<b>
curtishd
@@ -374,7 +422,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/Gonglja">
<img alt="Reviewer: Gonglja" class="profile-img" height="384" loading="lazy" src="assets/home/ad8bb1cc4c28091c/../shared/images/cdcf023b032b8d30/avatar_Gonglja.webp" width="384"/>
<img alt="Reviewer: Gonglja" class="profile-img" data-home-src="assets/home/8e54cf1d70453241/../shared/images/cdcf023b032b8d30/avatar_Gonglja.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: Gonglja" class="profile-img" height="384" loading="lazy" src="assets/home/8e54cf1d70453241/../shared/images/cdcf023b032b8d30/avatar_Gonglja.webp" width="384"/>
</noscript>
<br/>
<b>
Gonglja
@@ -387,7 +438,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/gvenusleo">
<img alt="Reviewer: gvenusleo" class="profile-img" height="384" loading="lazy" src="assets/home/ad8bb1cc4c28091c/../shared/images/464e2d351b9263ec/avatar_gvenusleo.webp" width="384"/>
<img alt="Reviewer: gvenusleo" class="profile-img" data-home-src="assets/home/8e54cf1d70453241/../shared/images/464e2d351b9263ec/avatar_gvenusleo.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: gvenusleo" class="profile-img" height="384" loading="lazy" src="assets/home/8e54cf1d70453241/../shared/images/464e2d351b9263ec/avatar_gvenusleo.webp" width="384"/>
</noscript>
<br/>
<b>
gvenusleo
@@ -400,7 +454,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/hpstory">
<img alt="Reviewer: hpstory" class="profile-img" height="384" loading="lazy" src="assets/home/ad8bb1cc4c28091c/../shared/images/7b6478acdab6b845/avatar_hpstory.webp" width="384"/>
<img alt="Reviewer: hpstory" class="profile-img" data-home-src="assets/home/8e54cf1d70453241/../shared/images/7b6478acdab6b845/avatar_hpstory.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: hpstory" class="profile-img" height="384" loading="lazy" src="assets/home/8e54cf1d70453241/../shared/images/7b6478acdab6b845/avatar_hpstory.webp" width="384"/>
</noscript>
<br/>
<b>
hpstory
@@ -413,7 +470,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/justin-tse">
<img alt="Reviewer: justin-tse" class="profile-img" height="384" loading="lazy" src="assets/home/ad8bb1cc4c28091c/../shared/images/208ee5aae490eefa/avatar_justin-tse.webp" width="384"/>
<img alt="Reviewer: justin-tse" class="profile-img" data-home-src="assets/home/8e54cf1d70453241/../shared/images/208ee5aae490eefa/avatar_justin-tse.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: justin-tse" class="profile-img" height="384" loading="lazy" src="assets/home/8e54cf1d70453241/../shared/images/208ee5aae490eefa/avatar_justin-tse.webp" width="384"/>
</noscript>
<br/>
<b>
justin-tse
@@ -426,7 +486,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/khoaxuantu">
<img alt="Reviewer: khoaxuantu" class="profile-img" height="384" loading="lazy" src="assets/home/ad8bb1cc4c28091c/../shared/images/9d3f1a21ff51de78/avatar_khoaxuantu.webp" width="384"/>
<img alt="Reviewer: khoaxuantu" class="profile-img" data-home-src="assets/home/8e54cf1d70453241/../shared/images/9d3f1a21ff51de78/avatar_khoaxuantu.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: khoaxuantu" class="profile-img" height="384" loading="lazy" src="assets/home/8e54cf1d70453241/../shared/images/9d3f1a21ff51de78/avatar_khoaxuantu.webp" width="384"/>
</noscript>
<br/>
<b>
khoaxuantu
@@ -439,7 +502,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/krahets">
<img alt="Reviewer: krahets" class="profile-img" height="384" loading="lazy" src="assets/home/ad8bb1cc4c28091c/../shared/images/e321f9a3ac2739e0/avatar_krahets.webp" width="384"/>
<img alt="Reviewer: krahets" class="profile-img" data-home-src="assets/home/8e54cf1d70453241/../shared/images/e321f9a3ac2739e0/avatar_krahets.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: krahets" class="profile-img" height="384" loading="lazy" src="assets/home/8e54cf1d70453241/../shared/images/e321f9a3ac2739e0/avatar_krahets.webp" width="384"/>
</noscript>
<br/>
<b>
krahets
@@ -452,7 +518,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/night-cruise">
<img alt="Reviewer: night-cruise" class="profile-img" height="384" loading="lazy" src="assets/home/ad8bb1cc4c28091c/../shared/images/960b489efa22abd4/avatar_night-cruise.jpg" width="384"/>
<img alt="Reviewer: night-cruise" class="profile-img" data-home-src="assets/home/8e54cf1d70453241/../shared/images/960b489efa22abd4/avatar_night-cruise.jpg" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: night-cruise" class="profile-img" height="384" loading="lazy" src="assets/home/8e54cf1d70453241/../shared/images/960b489efa22abd4/avatar_night-cruise.jpg" width="384"/>
</noscript>
<br/>
<b>
night-cruise
@@ -465,7 +534,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/nuomi1">
<img alt="Reviewer: nuomi1" class="profile-img" height="384" loading="lazy" src="assets/home/ad8bb1cc4c28091c/../shared/images/7316a9eb4429b259/avatar_nuomi1.webp" width="384"/>
<img alt="Reviewer: nuomi1" class="profile-img" data-home-src="assets/home/8e54cf1d70453241/../shared/images/7316a9eb4429b259/avatar_nuomi1.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: nuomi1" class="profile-img" height="384" loading="lazy" src="assets/home/8e54cf1d70453241/../shared/images/7316a9eb4429b259/avatar_nuomi1.webp" width="384"/>
</noscript>
<br/>
<b>
nuomi1
@@ -478,7 +550,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/Reanon">
<img alt="Reviewer: Reanon" class="profile-img" height="384" loading="lazy" src="assets/home/ad8bb1cc4c28091c/../shared/images/dcc15aa68cc793c7/avatar_Reanon.webp" width="384"/>
<img alt="Reviewer: Reanon" class="profile-img" data-home-src="assets/home/8e54cf1d70453241/../shared/images/dcc15aa68cc793c7/avatar_Reanon.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: Reanon" class="profile-img" height="384" loading="lazy" src="assets/home/8e54cf1d70453241/../shared/images/dcc15aa68cc793c7/avatar_Reanon.webp" width="384"/>
</noscript>
<br/>
<b>
Reanon
@@ -491,7 +566,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/rongyi">
<img alt="Reviewer: rongyi" class="profile-img" height="384" loading="lazy" src="assets/home/ad8bb1cc4c28091c/../shared/images/5dc6c4b1d8bfe0ac/avatar_rongyi.webp" width="384"/>
<img alt="Reviewer: rongyi" class="profile-img" data-home-src="assets/home/8e54cf1d70453241/../shared/images/5dc6c4b1d8bfe0ac/avatar_rongyi.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: rongyi" class="profile-img" height="384" loading="lazy" src="assets/home/8e54cf1d70453241/../shared/images/5dc6c4b1d8bfe0ac/avatar_rongyi.webp" width="384"/>
</noscript>
<br/>
<b>
rongyi
@@ -512,11 +590,22 @@
本书在开源社区 200 多位贡献者的共同努力下不断完善,感谢他们付出的时间与精力!
</p>
<a href="https://github.com/krahets/hello-algo/graphs/contributors">
<img alt="Contributors" loading="lazy" src="https://contrib.rocks/image?repo=krahets/hello-algo&amp;max=300&amp;columns=12" style="width: 100%; max-width: 38.5em;"/>
<img alt="Contributors" data-home-src="https://contrib.rocks/image?repo=krahets/hello-algo&amp;max=300&amp;columns=12" decoding="async" style="width: 100%; max-width: 38.5em;"/>
<noscript>
<img alt="Contributors" loading="lazy" src="https://contrib.rocks/image?repo=krahets/hello-algo&amp;max=300&amp;columns=12" style="width: 100%; max-width: 38.5em;"/>
</noscript>
</a>
</div>
</div>
</section>
<!-- This independent fallback also works when the deferred loader cannot be fetched. -->
<script defer="" onerror="document.querySelectorAll('[data-home-src], [data-home-poster]').forEach(function(el) { if (el.dataset.homeSrc) el.src = el.dataset.homeSrc; if (el.dataset.homePoster) el.poster = el.dataset.homePoster; });" src="assets/home/ad8bb1cc4c28091c/javascripts/homepage-media.js">
<script defer="" onerror="document.querySelectorAll('[data-home-src], [data-home-poster]').forEach(function(el) { if (el.dataset.homeSrc) el.src = el.dataset.homeSrc; if (el.dataset.homePoster) el.poster = el.dataset.homePoster; });" src="assets/home/8e54cf1d70453241/javascripts/homepage-media.js">
</script>
<script>
// If the scene entry point itself fails, still provide chapter illustrations.
addEventListener('load', function () {
if (!window.Starfield) document.querySelectorAll('[data-hero-fallback]').forEach(function (image) {
image.src = image.dataset.heroFallback;
});
}, {once: true});
</script>
+135 -46
View File
@@ -1,8 +1,8 @@
<!-- Generated from the shared homepage template and locale configuration. -->
<link href="../assets/home/ad8bb1cc4c28091c/hero-motion.css" rel="stylesheet"/>
<link href="../assets/home/8e54cf1d70453241/hero-motion.css" rel="stylesheet"/>
<noscript>
<style>
[data-home-src], video[data-home-poster] { display: none; }
[data-home-src], video[data-home-poster], [data-hero-fallback] { display: none; }
</style>
</noscript>
<section class="home-div home-universe-bg" data-md-color-primary="grey" data-md-color-scheme="slate">
@@ -11,88 +11,127 @@
</div>
</div>
<div class="hero-div hero-div--en" data-home-layout="list">
<img alt="" data-hero-asset="ground" data-source-height="380" data-source-width="881" height="380" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/567306c070a6a7e2/ground.webp" style="position: absolute; width: auto; height: 26.445%; left: 28.211%; top: 54.145%;" width="881"/>
<img alt="" data-hero-asset="links" data-source-height="1134" data-source-width="1562" height="1134" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/3e50f38a325c1cb5/links.webp" style="position: absolute; width: auto; height: 78.751%; left: 10.545%; top: 7.326%;" width="1562"/>
<img alt="" data-hero-asset="ground" data-source-height="380" data-source-width="881" height="380" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/567306c070a6a7e2/ground.webp" style="position: absolute; width: auto; height: 26.445%; left: 28.211%; top: 54.145%;; aspect-ratio: 881 / 380" width="881"/>
<img alt="" data-hero-asset="links" data-source-height="1134" data-source-width="1562" height="1134" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/3e50f38a325c1cb5/links.webp" style="position: absolute; width: auto; height: 78.751%; left: 10.545%; top: 7.326%;; aspect-ratio: 1562 / 1134" width="1562"/>
<a href="chapter_introduction/">
<img alt="" data-hero-asset="astronaut" data-source-height="672" data-source-width="515" height="672" src="../assets/home/ad8bb1cc4c28091c/../shared/images/8e5eb3b3e3ebd9f7/astronaut.webp" style="height: 46.673%; left: 35.413%; top: 24.343%;" width="515"/>
<img alt="" data-hero-asset="astronaut" data-source-height="672" data-source-width="515" height="672" src="../assets/home/8e54cf1d70453241/../shared/images/8e5eb3b3e3ebd9f7/astronaut.webp" style="height: 46.673%; left: 35.413%; top: 24.343%;; aspect-ratio: 515 / 672" width="515"/>
<span style="left: 52.244%; top: 20.919%;">
Getting to know algorithms
</span>
</a>
<a href="chapter_computational_complexity/">
<img alt="" data-hero-asset="chapter_computational_complexity" data-source-height="178" data-source-width="113" height="178" src="../assets/home/ad8bb1cc4c28091c/../shared/images/2fb425426d1f8d86/chapter_computational_complexity.webp" style="height: 12.347%; left: 36.267%; top: 37.653%;" width="113"/>
<img alt="" data-hero-asset="chapter_computational_complexity" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/2fb425426d1f8d86/chapter_computational_complexity.webp" data-source-height="178" data-source-width="113" height="178" style="height: 12.347%; left: 36.267%; top: 37.653%;; aspect-ratio: 113 / 178" width="113"/>
<noscript>
<img alt="" height="178" src="../assets/home/8e54cf1d70453241/../shared/images/2fb425426d1f8d86/chapter_computational_complexity.webp" style="height: 12.347%; left: 36.267%; top: 37.653%;" width="113"/>
</noscript>
<span style="left: 39.244%; top: 33.919%;">
Complexity
</span>
</a>
<a href="chapter_array_and_linkedlist/">
<img alt="" data-hero-asset="chapter_array_and_linkedlist" data-source-height="319" data-source-width="468" height="319" src="../assets/home/ad8bb1cc4c28091c/../shared/images/5cbbdf7be555d3ef/chapter_array_and_linkedlist.webp" style="height: 22.242%; left: 73.242%; top: 52.481%;" width="468"/>
<img alt="" data-hero-asset="chapter_array_and_linkedlist" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/5cbbdf7be555d3ef/chapter_array_and_linkedlist.webp" data-source-height="319" data-source-width="468" height="319" style="height: 22.242%; left: 73.242%; top: 52.481%;; aspect-ratio: 468 / 319" width="468"/>
<noscript>
<img alt="" height="319" src="../assets/home/8e54cf1d70453241/../shared/images/5cbbdf7be555d3ef/chapter_array_and_linkedlist.webp" style="height: 22.242%; left: 73.242%; top: 52.481%;" width="468"/>
</noscript>
<span style="left: 90.897%; top: 76.259%;">
Arrays and linked lists
</span>
</a>
<a href="chapter_stack_and_queue/">
<img alt="" data-hero-asset="chapter_stack_and_queue" data-source-height="204" data-source-width="204" height="204" src="../assets/home/ad8bb1cc4c28091c/../shared/images/e2667767cf7481bd/chapter_stack_and_queue.webp" style="height: 14.302%; left: 62.646%; top: 77.875%;" width="204"/>
<img alt="" data-hero-asset="chapter_stack_and_queue" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/e2667767cf7481bd/chapter_stack_and_queue.webp" data-source-height="204" data-source-width="204" height="204" style="height: 14.302%; left: 62.646%; top: 77.875%;; aspect-ratio: 204 / 204" width="204"/>
<noscript>
<img alt="" height="204" src="../assets/home/8e54cf1d70453241/../shared/images/e2667767cf7481bd/chapter_stack_and_queue.webp" style="height: 14.302%; left: 62.646%; top: 77.875%;" width="204"/>
</noscript>
<span style="left: 77.571%; top: 91.25%;">
Stacks and queues
</span>
</a>
<a href="chapter_hashing/">
<img alt="" data-hero-asset="chapter_hashing" data-source-height="218" data-source-width="218" height="218" src="../assets/home/ad8bb1cc4c28091c/../shared/images/b108d70a537714cb/chapter_hashing.webp" style="height: 15.266%; left: 63.281%; top: 27.933%;" width="218"/>
<img alt="" data-hero-asset="chapter_hashing" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/b108d70a537714cb/chapter_hashing.webp" data-source-height="218" data-source-width="218" height="218" style="height: 15.266%; left: 63.281%; top: 27.933%;; aspect-ratio: 218 / 218" width="218"/>
<noscript>
<img alt="" height="218" src="../assets/home/8e54cf1d70453241/../shared/images/b108d70a537714cb/chapter_hashing.webp" style="height: 15.266%; left: 63.281%; top: 27.933%;" width="218"/>
</noscript>
<span style="left: 68.862%; top: 46.292%;">
Hash tables
</span>
</a>
<a href="chapter_tree/">
<img alt="" data-hero-asset="chapter_tree" data-source-height="281" data-source-width="280" height="281" src="../assets/home/ad8bb1cc4c28091c/../shared/images/8138bb0acecedec4/chapter_tree.webp" style="height: 19.615%; left: 80.137%; top: 26.678%;" width="280"/>
<img alt="" data-hero-asset="chapter_tree" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/8138bb0acecedec4/chapter_tree.webp" data-source-height="281" data-source-width="280" height="281" style="height: 19.615%; left: 80.137%; top: 26.678%;; aspect-ratio: 280 / 281" width="280"/>
<noscript>
<img alt="" height="281" src="../assets/home/8e54cf1d70453241/../shared/images/8138bb0acecedec4/chapter_tree.webp" style="height: 19.615%; left: 80.137%; top: 26.678%;" width="280"/>
</noscript>
<span style="left: 96.159%; top: 44.8%;">
Trees
</span>
</a>
<a href="chapter_heap/">
<img alt="" data-hero-asset="chapter_heap" data-source-height="152" data-source-width="151" height="152" src="../assets/home/ad8bb1cc4c28091c/../shared/images/7586281e6691807a/chapter_heap.webp" style="height: 10.566%; left: 77.226%; top: 11.559%;" width="151"/>
<img alt="" data-hero-asset="chapter_heap" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/7586281e6691807a/chapter_heap.webp" data-source-height="152" data-source-width="151" height="152" style="height: 10.566%; left: 77.226%; top: 11.559%;; aspect-ratio: 151 / 152" width="151"/>
<noscript>
<img alt="" height="152" src="../assets/home/8e54cf1d70453241/../shared/images/7586281e6691807a/chapter_heap.webp" style="height: 10.566%; left: 77.226%; top: 11.559%;" width="151"/>
</noscript>
<span style="left: 88.103%; top: 15.422%;">
Heaps
</span>
</a>
<a href="chapter_graph/">
<img alt="" data-hero-asset="chapter_graph" data-source-height="272" data-source-width="542" height="272" src="../assets/home/ad8bb1cc4c28091c/../shared/images/175a7f2e7c3cf5f0/chapter_graph.webp" style="height: 16.112%; left: 51.854%; top: 5.575%;" width="542"/>
<img alt="" data-hero-asset="chapter_graph" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/175a7f2e7c3cf5f0/chapter_graph.webp" data-source-height="272" data-source-width="542" height="272" style="height: 16.112%; left: 51.854%; top: 5.575%;; aspect-ratio: 542 / 272" width="542"/>
<noscript>
<img alt="" height="272" src="../assets/home/8e54cf1d70453241/../shared/images/175a7f2e7c3cf5f0/chapter_graph.webp" style="height: 16.112%; left: 51.854%; top: 5.575%;" width="542"/>
</noscript>
<span style="left: 71.195%; top: 6.503%;">
Graphs
</span>
</a>
<a href="chapter_searching/">
<img alt="" data-hero-asset="chapter_searching" data-source-height="216" data-source-width="216" height="216" src="../assets/home/ad8bb1cc4c28091c/../shared/images/ebfe2b953dbb9d90/chapter_searching.webp" style="height: 15.149%; left: 18.185%; top: 16.404%;" width="216"/>
<img alt="" data-hero-asset="chapter_searching" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/ebfe2b953dbb9d90/chapter_searching.webp" data-source-height="216" data-source-width="216" height="216" style="height: 15.149%; left: 18.185%; top: 16.404%;; aspect-ratio: 216 / 216" width="216"/>
<noscript>
<img alt="" height="216" src="../assets/home/8e54cf1d70453241/../shared/images/ebfe2b953dbb9d90/chapter_searching.webp" style="height: 15.149%; left: 18.185%; top: 16.404%;" width="216"/>
</noscript>
<span style="left: 14.556%; top: 20.876%;">
Searching
</span>
</a>
<a href="chapter_sorting/">
<img alt="" data-hero-asset="chapter_sorting" data-source-height="137" data-source-width="138" height="137" src="../assets/home/ad8bb1cc4c28091c/../shared/images/9d4be68b2680967c/chapter_sorting.webp" style="height: 9.574%; left: 25.409%; top: 40.747%;" width="138"/>
<img alt="" data-hero-asset="chapter_sorting" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/9d4be68b2680967c/chapter_sorting.webp" data-source-height="137" data-source-width="138" height="137" style="height: 9.574%; left: 25.409%; top: 40.747%;; aspect-ratio: 138 / 137" width="138"/>
<noscript>
<img alt="" height="137" src="../assets/home/8e54cf1d70453241/../shared/images/9d4be68b2680967c/chapter_sorting.webp" style="height: 9.574%; left: 25.409%; top: 40.747%;" width="138"/>
</noscript>
<span style="left: 28.805%; top: 53.808%;">
Sorting
</span>
</a>
<a href="chapter_divide_and_conquer/">
<img alt="" data-hero-asset="chapter_divide_and_conquer" data-source-height="269" data-source-width="407" height="269" src="../assets/home/ad8bb1cc4c28091c/../shared/images/6f5766ca9385cd2e/chapter_divide_and_conquer.webp" style="height: 18.681%; left: 32.721%; top: 4.816%;" width="407"/>
<img alt="" data-hero-asset="chapter_divide_and_conquer" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/6f5766ca9385cd2e/chapter_divide_and_conquer.webp" data-source-height="269" data-source-width="407" height="269" style="height: 18.681%; left: 32.721%; top: 4.816%;; aspect-ratio: 407 / 269" width="407"/>
<noscript>
<img alt="" height="269" src="../assets/home/8e54cf1d70453241/../shared/images/6f5766ca9385cd2e/chapter_divide_and_conquer.webp" style="height: 18.681%; left: 32.721%; top: 4.816%;" width="407"/>
</noscript>
<span style="left: 31.42%; top: 8.679%;">
Divide and conquer
</span>
</a>
<a href="chapter_backtracking/">
<img alt="" data-hero-asset="chapter_backtracking" data-source-height="249" data-source-width="345" height="249" src="../assets/home/ad8bb1cc4c28091c/../shared/images/176675e685febf11/chapter_backtracking.webp" style="height: 17.338%; left: 4.875%; top: 32.925%;" width="345"/>
<img alt="" data-hero-asset="chapter_backtracking" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/176675e685febf11/chapter_backtracking.webp" data-source-height="249" data-source-width="345" height="249" style="height: 17.338%; left: 4.875%; top: 32.925%;; aspect-ratio: 345 / 249" width="345"/>
<noscript>
<img alt="" height="249" src="../assets/home/8e54cf1d70453241/../shared/images/176675e685febf11/chapter_backtracking.webp" style="height: 17.338%; left: 4.875%; top: 32.925%;" width="345"/>
</noscript>
<span style="left: 4.742%; top: 50.113%;">
Backtracking
</span>
</a>
<a href="chapter_dynamic_programming/">
<img alt="" data-hero-asset="chapter_dynamic_programming" data-source-height="268" data-source-width="267" height="268" src="../assets/home/ad8bb1cc4c28091c/../shared/images/06264b1ffd05b08e/chapter_dynamic_programming.webp" style="height: 15.47%; left: 9.406%; top: 57.472%;" width="267"/>
<img alt="" data-hero-asset="chapter_dynamic_programming" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/06264b1ffd05b08e/chapter_dynamic_programming.webp" data-source-height="268" data-source-width="267" height="268" style="height: 15.47%; left: 9.406%; top: 57.472%;; aspect-ratio: 267 / 268" width="267"/>
<noscript>
<img alt="" height="268" src="../assets/home/8e54cf1d70453241/../shared/images/06264b1ffd05b08e/chapter_dynamic_programming.webp" style="height: 15.47%; left: 9.406%; top: 57.472%;" width="267"/>
</noscript>
<span style="left: 8.561%; top: 75.351%;">
Dynamic programming
</span>
</a>
<a href="chapter_greedy/">
<img alt="" data-hero-asset="chapter_greedy" data-source-height="202" data-source-width="265" height="202" src="../assets/home/ad8bb1cc4c28091c/../shared/images/2ce6caaac951c40b/chapter_greedy.webp" style="height: 14.127%; left: 23.132%; top: 75.803%;" width="265"/>
<img alt="" data-hero-asset="chapter_greedy" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/2ce6caaac951c40b/chapter_greedy.webp" data-source-height="202" data-source-width="265" height="202" style="height: 14.127%; left: 23.132%; top: 75.803%;; aspect-ratio: 265 / 202" width="265"/>
<noscript>
<img alt="" height="202" src="../assets/home/8e54cf1d70453241/../shared/images/2ce6caaac951c40b/chapter_greedy.webp" style="height: 14.127%; left: 23.132%; top: 75.803%;" width="265"/>
</noscript>
<span style="left: 21.619%; top: 86.85%;">
Greedy algorithms
</span>
@@ -139,9 +178,9 @@
<a href="chapter_hello_algo/">
<div style="height: 4.34%;">
</div>
<img alt="Web reading on a computer and phone" class="device-on-hover" data-home-src="../assets/home/ad8bb1cc4c28091c/../shared/images/5b64cf7672ec5ec6/web_mac_iphone.webp" decoding="async" height="965" style="height: 66.31%;" width="1598"/>
<img alt="Web reading on a computer and phone" class="device-on-hover" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/5b64cf7672ec5ec6/web_mac_iphone.webp" decoding="async" height="965" style="height: 66.31%;" width="1598"/>
<noscript>
<img alt="Web reading on a computer and phone" class="device-on-hover" height="965" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/5b64cf7672ec5ec6/web_mac_iphone.webp" style="height: 66.31%;" width="1598"/>
<img alt="Web reading on a computer and phone" class="device-on-hover" height="965" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/5b64cf7672ec5ec6/web_mac_iphone.webp" style="height: 66.31%;" width="1598"/>
</noscript>
<div style="height: 4.34%;">
</div>
@@ -158,9 +197,9 @@
</div>
<div class="media-block">
<a href="https://github.com/krahets/hello-algo/releases">
<img alt="PDF reading on a tablet" class="device-on-hover" data-home-src="../assets/home/ad8bb1cc4c28091c/../shared/images/66baa2f9bf3abec7/pdf_ipad.webp" decoding="async" height="960" style="height: 75%;" width="812"/>
<img alt="PDF reading on a tablet" class="device-on-hover" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/66baa2f9bf3abec7/pdf_ipad.webp" decoding="async" height="960" style="height: 75%;" width="812"/>
<noscript>
<img alt="PDF reading on a tablet" class="device-on-hover" height="960" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/66baa2f9bf3abec7/pdf_ipad.webp" style="height: 75%;" width="812"/>
<img alt="PDF reading on a tablet" class="device-on-hover" height="960" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/66baa2f9bf3abec7/pdf_ipad.webp" style="height: 75%;" width="812"/>
</noscript>
<div class="text-button">
<span>
@@ -226,21 +265,21 @@
</p>
</div>
</div>
<video aria-label="Animation example" class="intro-image" data-home-poster="../assets/home/ad8bb1cc4c28091c/../shared/images/325eedad7e336423/en_animation-poster.webp" data-home-video="../assets/home/ad8bb1cc4c28091c/../shared/media/99db238804bedf45/en_animation.mp4" height="864" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1280 / 864" width="1280">
<video aria-label="Animation example" class="intro-image" data-home-poster="../assets/home/8e54cf1d70453241/../shared/images/325eedad7e336423/en_animation-poster.webp" data-home-video="../assets/home/8e54cf1d70453241/../shared/media/99db238804bedf45/en_animation.mp4" height="864" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1280 / 864" width="1280">
</video>
<noscript>
<a href="../assets/home/ad8bb1cc4c28091c/../shared/media/99db238804bedf45/en_animation.mp4">
<img alt="Animation example" class="intro-image" height="864" src="../assets/home/ad8bb1cc4c28091c/../shared/images/325eedad7e336423/en_animation-poster.webp" width="1280"/>
<a href="../assets/home/8e54cf1d70453241/../shared/media/99db238804bedf45/en_animation.mp4">
<img alt="Animation example" class="intro-image" height="864" src="../assets/home/8e54cf1d70453241/../shared/images/325eedad7e336423/en_animation-poster.webp" width="1280"/>
Animated illustrations
</a>
</noscript>
</div>
<div class="intro-container">
<video aria-label="Running code example" class="intro-image" data-home-poster="../assets/home/ad8bb1cc4c28091c/../shared/images/615e2bcba0901fda/en_running_code-poster.webp" data-home-video="../assets/home/ad8bb1cc4c28091c/../shared/media/8a8d9283cb37b664/en_running_code.mp4" height="864" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1280 / 864" width="1280">
<video aria-label="Running code example" class="intro-image" data-home-poster="../assets/home/8e54cf1d70453241/../shared/images/615e2bcba0901fda/en_running_code-poster.webp" data-home-video="../assets/home/8e54cf1d70453241/../shared/media/8a8d9283cb37b664/en_running_code.mp4" height="864" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1280 / 864" width="1280">
</video>
<noscript>
<a href="../assets/home/ad8bb1cc4c28091c/../shared/media/8a8d9283cb37b664/en_running_code.mp4">
<img alt="Running code example" class="intro-image" height="864" src="../assets/home/ad8bb1cc4c28091c/../shared/images/615e2bcba0901fda/en_running_code-poster.webp" width="1280"/>
<a href="../assets/home/8e54cf1d70453241/../shared/media/8a8d9283cb37b664/en_running_code.mp4">
<img alt="Running code example" class="intro-image" height="864" src="../assets/home/8e54cf1d70453241/../shared/images/615e2bcba0901fda/en_running_code-poster.webp" width="1280"/>
Run code with one click
</a>
</noscript>
@@ -284,11 +323,11 @@
</p>
</div>
</div>
<video aria-label="Comments example" class="intro-image" data-home-poster="../assets/home/ad8bb1cc4c28091c/../shared/images/ef67d25d9c7ff1b5/en_comment-poster.webp" data-home-video="../assets/home/ad8bb1cc4c28091c/../shared/media/ea699aff8bc08558/en_comment.mp4" height="864" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1280 / 864" width="1280">
<video aria-label="Comments example" class="intro-image" data-home-poster="../assets/home/8e54cf1d70453241/../shared/images/ef67d25d9c7ff1b5/en_comment-poster.webp" data-home-video="../assets/home/8e54cf1d70453241/../shared/media/ea699aff8bc08558/en_comment.mp4" height="864" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1280 / 864" width="1280">
</video>
<noscript>
<a href="../assets/home/ad8bb1cc4c28091c/../shared/media/ea699aff8bc08558/en_comment.mp4">
<img alt="Comments example" class="intro-image" height="864" src="../assets/home/ad8bb1cc4c28091c/../shared/images/ef67d25d9c7ff1b5/en_comment-poster.webp" width="1280"/>
<a href="../assets/home/8e54cf1d70453241/../shared/media/ea699aff8bc08558/en_comment.mp4">
<img alt="Comments example" class="intro-image" height="864" src="../assets/home/8e54cf1d70453241/../shared/images/ef67d25d9c7ff1b5/en_comment-poster.webp" width="1280"/>
Learn together
</a>
</noscript>
@@ -304,7 +343,10 @@
<div class="profile-div">
<div class="profile-cell">
<a href="https://github.com/krahets">
<img alt="Author: yudongjin" class="profile-img" height="512" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/02348410d40f7665/avatar_yudongjin.webp" width="512"/>
<img alt="Author: yudongjin" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/02348410d40f7665/avatar_yudongjin.webp" decoding="async" height="512" width="512"/>
<noscript>
<img alt="Author: yudongjin" class="profile-img" height="512" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/02348410d40f7665/avatar_yudongjin.webp" width="512"/>
</noscript>
<br/>
<b>
Yudong Jin (@krahets)
@@ -323,7 +365,10 @@
<div class="profile-div">
<div class="profile-cell">
<a href="https://github.com/coderonion">
<img alt="Reviewer: coderonion" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/db606f27971eae34/avatar_coderonion.webp" width="384"/>
<img alt="Reviewer: coderonion" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/db606f27971eae34/avatar_coderonion.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: coderonion" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/db606f27971eae34/avatar_coderonion.webp" width="384"/>
</noscript>
<br/>
<b>
coderonion
@@ -336,7 +381,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/curtishd">
<img alt="Reviewer: curtishd" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/feedb0e547ea31fc/avatar_curtishd.webp" width="384"/>
<img alt="Reviewer: curtishd" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/feedb0e547ea31fc/avatar_curtishd.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: curtishd" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/feedb0e547ea31fc/avatar_curtishd.webp" width="384"/>
</noscript>
<br/>
<b>
curtishd
@@ -349,7 +397,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/Gonglja">
<img alt="Reviewer: Gonglja" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/cdcf023b032b8d30/avatar_Gonglja.webp" width="384"/>
<img alt="Reviewer: Gonglja" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/cdcf023b032b8d30/avatar_Gonglja.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: Gonglja" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/cdcf023b032b8d30/avatar_Gonglja.webp" width="384"/>
</noscript>
<br/>
<b>
Gonglja
@@ -362,7 +413,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/gvenusleo">
<img alt="Reviewer: gvenusleo" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/464e2d351b9263ec/avatar_gvenusleo.webp" width="384"/>
<img alt="Reviewer: gvenusleo" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/464e2d351b9263ec/avatar_gvenusleo.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: gvenusleo" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/464e2d351b9263ec/avatar_gvenusleo.webp" width="384"/>
</noscript>
<br/>
<b>
gvenusleo
@@ -375,7 +429,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/hpstory">
<img alt="Reviewer: hpstory" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/7b6478acdab6b845/avatar_hpstory.webp" width="384"/>
<img alt="Reviewer: hpstory" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/7b6478acdab6b845/avatar_hpstory.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: hpstory" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/7b6478acdab6b845/avatar_hpstory.webp" width="384"/>
</noscript>
<br/>
<b>
hpstory
@@ -388,7 +445,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/justin-tse">
<img alt="Reviewer: justin-tse" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/208ee5aae490eefa/avatar_justin-tse.webp" width="384"/>
<img alt="Reviewer: justin-tse" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/208ee5aae490eefa/avatar_justin-tse.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: justin-tse" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/208ee5aae490eefa/avatar_justin-tse.webp" width="384"/>
</noscript>
<br/>
<b>
justin-tse
@@ -401,7 +461,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/khoaxuantu">
<img alt="Reviewer: khoaxuantu" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/9d3f1a21ff51de78/avatar_khoaxuantu.webp" width="384"/>
<img alt="Reviewer: khoaxuantu" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/9d3f1a21ff51de78/avatar_khoaxuantu.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: khoaxuantu" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/9d3f1a21ff51de78/avatar_khoaxuantu.webp" width="384"/>
</noscript>
<br/>
<b>
khoaxuantu
@@ -414,7 +477,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/krahets">
<img alt="Reviewer: krahets" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/e321f9a3ac2739e0/avatar_krahets.webp" width="384"/>
<img alt="Reviewer: krahets" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/e321f9a3ac2739e0/avatar_krahets.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: krahets" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/e321f9a3ac2739e0/avatar_krahets.webp" width="384"/>
</noscript>
<br/>
<b>
krahets
@@ -427,7 +493,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/night-cruise">
<img alt="Reviewer: night-cruise" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/960b489efa22abd4/avatar_night-cruise.jpg" width="384"/>
<img alt="Reviewer: night-cruise" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/960b489efa22abd4/avatar_night-cruise.jpg" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: night-cruise" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/960b489efa22abd4/avatar_night-cruise.jpg" width="384"/>
</noscript>
<br/>
<b>
night-cruise
@@ -440,7 +509,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/nuomi1">
<img alt="Reviewer: nuomi1" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/7316a9eb4429b259/avatar_nuomi1.webp" width="384"/>
<img alt="Reviewer: nuomi1" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/7316a9eb4429b259/avatar_nuomi1.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: nuomi1" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/7316a9eb4429b259/avatar_nuomi1.webp" width="384"/>
</noscript>
<br/>
<b>
nuomi1
@@ -453,7 +525,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/Reanon">
<img alt="Reviewer: Reanon" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/dcc15aa68cc793c7/avatar_Reanon.webp" width="384"/>
<img alt="Reviewer: Reanon" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/dcc15aa68cc793c7/avatar_Reanon.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: Reanon" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/dcc15aa68cc793c7/avatar_Reanon.webp" width="384"/>
</noscript>
<br/>
<b>
Reanon
@@ -466,7 +541,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/rongyi">
<img alt="Reviewer: rongyi" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/5dc6c4b1d8bfe0ac/avatar_rongyi.webp" width="384"/>
<img alt="Reviewer: rongyi" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/5dc6c4b1d8bfe0ac/avatar_rongyi.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: rongyi" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/5dc6c4b1d8bfe0ac/avatar_rongyi.webp" width="384"/>
</noscript>
<br/>
<b>
rongyi
@@ -487,11 +565,22 @@
More than 200 open-source contributors have helped improve this book. Thank you for your time and effort!
</p>
<a href="https://github.com/krahets/hello-algo/graphs/contributors">
<img alt="Contributors" loading="lazy" src="https://contrib.rocks/image?repo=krahets/hello-algo&amp;max=300&amp;columns=12" style="width: 100%; max-width: 38.5em;"/>
<img alt="Contributors" data-home-src="https://contrib.rocks/image?repo=krahets/hello-algo&amp;max=300&amp;columns=12" decoding="async" style="width: 100%; max-width: 38.5em;"/>
<noscript>
<img alt="Contributors" loading="lazy" src="https://contrib.rocks/image?repo=krahets/hello-algo&amp;max=300&amp;columns=12" style="width: 100%; max-width: 38.5em;"/>
</noscript>
</a>
</div>
</div>
</section>
<!-- This independent fallback also works when the deferred loader cannot be fetched. -->
<script defer="" onerror="document.querySelectorAll('[data-home-src], [data-home-poster]').forEach(function(el) { if (el.dataset.homeSrc) el.src = el.dataset.homeSrc; if (el.dataset.homePoster) el.poster = el.dataset.homePoster; });" src="../assets/home/ad8bb1cc4c28091c/javascripts/homepage-media.js">
<script defer="" onerror="document.querySelectorAll('[data-home-src], [data-home-poster]').forEach(function(el) { if (el.dataset.homeSrc) el.src = el.dataset.homeSrc; if (el.dataset.homePoster) el.poster = el.dataset.homePoster; });" src="../assets/home/8e54cf1d70453241/javascripts/homepage-media.js">
</script>
<script>
// If the scene entry point itself fails, still provide chapter illustrations.
addEventListener('load', function () {
if (!window.Starfield) document.querySelectorAll('[data-hero-fallback]').forEach(function (image) {
image.src = image.dataset.heroFallback;
});
}, {once: true});
</script>
+135 -46
View File
@@ -1,8 +1,8 @@
<!-- Generated from the shared homepage template and locale configuration. -->
<link href="../assets/home/ad8bb1cc4c28091c/hero-motion.css" rel="stylesheet"/>
<link href="../assets/home/8e54cf1d70453241/hero-motion.css" rel="stylesheet"/>
<noscript>
<style>
[data-home-src], video[data-home-poster] { display: none; }
[data-home-src], video[data-home-poster], [data-hero-fallback] { display: none; }
</style>
</noscript>
<section class="home-div home-universe-bg" data-md-color-primary="grey" data-md-color-scheme="slate">
@@ -11,88 +11,127 @@
</div>
</div>
<div class="hero-div hero-div--ja" data-home-layout="list">
<img alt="" data-hero-asset="ground" data-source-height="380" data-source-width="881" height="380" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/567306c070a6a7e2/ground.webp" style="position: absolute; width: auto; height: 26.445%; left: 28.211%; top: 54.145%;" width="881"/>
<img alt="" data-hero-asset="links" data-source-height="1134" data-source-width="1562" height="1134" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/3e50f38a325c1cb5/links.webp" style="position: absolute; width: auto; height: 78.751%; left: 10.545%; top: 7.326%;" width="1562"/>
<img alt="" data-hero-asset="ground" data-source-height="380" data-source-width="881" height="380" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/567306c070a6a7e2/ground.webp" style="position: absolute; width: auto; height: 26.445%; left: 28.211%; top: 54.145%;; aspect-ratio: 881 / 380" width="881"/>
<img alt="" data-hero-asset="links" data-source-height="1134" data-source-width="1562" height="1134" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/3e50f38a325c1cb5/links.webp" style="position: absolute; width: auto; height: 78.751%; left: 10.545%; top: 7.326%;; aspect-ratio: 1562 / 1134" width="1562"/>
<a href="chapter_introduction/">
<img alt="" data-hero-asset="astronaut" data-source-height="672" data-source-width="515" height="672" src="../assets/home/ad8bb1cc4c28091c/../shared/images/8e5eb3b3e3ebd9f7/astronaut.webp" style="height: 46.673%; left: 35.413%; top: 24.343%;" width="515"/>
<img alt="" data-hero-asset="astronaut" data-source-height="672" data-source-width="515" height="672" src="../assets/home/8e54cf1d70453241/../shared/images/8e5eb3b3e3ebd9f7/astronaut.webp" style="height: 46.673%; left: 35.413%; top: 24.343%;; aspect-ratio: 515 / 672" width="515"/>
<span style="left: 52.244%; top: 20.919%;">
アルゴリズム入門
</span>
</a>
<a href="chapter_computational_complexity/">
<img alt="" data-hero-asset="chapter_computational_complexity" data-source-height="178" data-source-width="113" height="178" src="../assets/home/ad8bb1cc4c28091c/../shared/images/2fb425426d1f8d86/chapter_computational_complexity.webp" style="height: 12.347%; left: 36.267%; top: 37.653%;" width="113"/>
<img alt="" data-hero-asset="chapter_computational_complexity" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/2fb425426d1f8d86/chapter_computational_complexity.webp" data-source-height="178" data-source-width="113" height="178" style="height: 12.347%; left: 36.267%; top: 37.653%;; aspect-ratio: 113 / 178" width="113"/>
<noscript>
<img alt="" height="178" src="../assets/home/8e54cf1d70453241/../shared/images/2fb425426d1f8d86/chapter_computational_complexity.webp" style="height: 12.347%; left: 36.267%; top: 37.653%;" width="113"/>
</noscript>
<span style="left: 39.244%; top: 33.919%;">
計算量
</span>
</a>
<a href="chapter_array_and_linkedlist/">
<img alt="" data-hero-asset="chapter_array_and_linkedlist" data-source-height="319" data-source-width="468" height="319" src="../assets/home/ad8bb1cc4c28091c/../shared/images/5cbbdf7be555d3ef/chapter_array_and_linkedlist.webp" style="height: 22.242%; left: 73.242%; top: 52.481%;" width="468"/>
<img alt="" data-hero-asset="chapter_array_and_linkedlist" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/5cbbdf7be555d3ef/chapter_array_and_linkedlist.webp" data-source-height="319" data-source-width="468" height="319" style="height: 22.242%; left: 73.242%; top: 52.481%;; aspect-ratio: 468 / 319" width="468"/>
<noscript>
<img alt="" height="319" src="../assets/home/8e54cf1d70453241/../shared/images/5cbbdf7be555d3ef/chapter_array_and_linkedlist.webp" style="height: 22.242%; left: 73.242%; top: 52.481%;" width="468"/>
</noscript>
<span style="left: 90.897%; top: 76.259%;">
配列と連結リスト
</span>
</a>
<a href="chapter_stack_and_queue/">
<img alt="" data-hero-asset="chapter_stack_and_queue" data-source-height="204" data-source-width="204" height="204" src="../assets/home/ad8bb1cc4c28091c/../shared/images/e2667767cf7481bd/chapter_stack_and_queue.webp" style="height: 14.302%; left: 62.646%; top: 77.875%;" width="204"/>
<img alt="" data-hero-asset="chapter_stack_and_queue" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/e2667767cf7481bd/chapter_stack_and_queue.webp" data-source-height="204" data-source-width="204" height="204" style="height: 14.302%; left: 62.646%; top: 77.875%;; aspect-ratio: 204 / 204" width="204"/>
<noscript>
<img alt="" height="204" src="../assets/home/8e54cf1d70453241/../shared/images/e2667767cf7481bd/chapter_stack_and_queue.webp" style="height: 14.302%; left: 62.646%; top: 77.875%;" width="204"/>
</noscript>
<span style="left: 77.571%; top: 91.25%;">
スタックとキュー
</span>
</a>
<a href="chapter_hashing/">
<img alt="" data-hero-asset="chapter_hashing" data-source-height="218" data-source-width="218" height="218" src="../assets/home/ad8bb1cc4c28091c/../shared/images/b108d70a537714cb/chapter_hashing.webp" style="height: 15.266%; left: 63.281%; top: 27.933%;" width="218"/>
<img alt="" data-hero-asset="chapter_hashing" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/b108d70a537714cb/chapter_hashing.webp" data-source-height="218" data-source-width="218" height="218" style="height: 15.266%; left: 63.281%; top: 27.933%;; aspect-ratio: 218 / 218" width="218"/>
<noscript>
<img alt="" height="218" src="../assets/home/8e54cf1d70453241/../shared/images/b108d70a537714cb/chapter_hashing.webp" style="height: 15.266%; left: 63.281%; top: 27.933%;" width="218"/>
</noscript>
<span style="left: 68.862%; top: 46.292%;">
ハッシュテーブル
</span>
</a>
<a href="chapter_tree/">
<img alt="" data-hero-asset="chapter_tree" data-source-height="281" data-source-width="280" height="281" src="../assets/home/ad8bb1cc4c28091c/../shared/images/8138bb0acecedec4/chapter_tree.webp" style="height: 19.615%; left: 80.137%; top: 26.678%;" width="280"/>
<img alt="" data-hero-asset="chapter_tree" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/8138bb0acecedec4/chapter_tree.webp" data-source-height="281" data-source-width="280" height="281" style="height: 19.615%; left: 80.137%; top: 26.678%;; aspect-ratio: 280 / 281" width="280"/>
<noscript>
<img alt="" height="281" src="../assets/home/8e54cf1d70453241/../shared/images/8138bb0acecedec4/chapter_tree.webp" style="height: 19.615%; left: 80.137%; top: 26.678%;" width="280"/>
</noscript>
<span style="left: 96.159%; top: 44.8%;">
木
</span>
</a>
<a href="chapter_heap/">
<img alt="" data-hero-asset="chapter_heap" data-source-height="152" data-source-width="151" height="152" src="../assets/home/ad8bb1cc4c28091c/../shared/images/7586281e6691807a/chapter_heap.webp" style="height: 10.566%; left: 77.226%; top: 11.559%;" width="151"/>
<img alt="" data-hero-asset="chapter_heap" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/7586281e6691807a/chapter_heap.webp" data-source-height="152" data-source-width="151" height="152" style="height: 10.566%; left: 77.226%; top: 11.559%;; aspect-ratio: 151 / 152" width="151"/>
<noscript>
<img alt="" height="152" src="../assets/home/8e54cf1d70453241/../shared/images/7586281e6691807a/chapter_heap.webp" style="height: 10.566%; left: 77.226%; top: 11.559%;" width="151"/>
</noscript>
<span style="left: 88.103%; top: 15.422%;">
ヒープ
</span>
</a>
<a href="chapter_graph/">
<img alt="" data-hero-asset="chapter_graph" data-source-height="272" data-source-width="542" height="272" src="../assets/home/ad8bb1cc4c28091c/../shared/images/175a7f2e7c3cf5f0/chapter_graph.webp" style="height: 16.112%; left: 51.854%; top: 5.575%;" width="542"/>
<img alt="" data-hero-asset="chapter_graph" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/175a7f2e7c3cf5f0/chapter_graph.webp" data-source-height="272" data-source-width="542" height="272" style="height: 16.112%; left: 51.854%; top: 5.575%;; aspect-ratio: 542 / 272" width="542"/>
<noscript>
<img alt="" height="272" src="../assets/home/8e54cf1d70453241/../shared/images/175a7f2e7c3cf5f0/chapter_graph.webp" style="height: 16.112%; left: 51.854%; top: 5.575%;" width="542"/>
</noscript>
<span style="left: 71.195%; top: 6.503%;">
グラフ
</span>
</a>
<a href="chapter_searching/">
<img alt="" data-hero-asset="chapter_searching" data-source-height="216" data-source-width="216" height="216" src="../assets/home/ad8bb1cc4c28091c/../shared/images/ebfe2b953dbb9d90/chapter_searching.webp" style="height: 15.149%; left: 18.185%; top: 16.404%;" width="216"/>
<img alt="" data-hero-asset="chapter_searching" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/ebfe2b953dbb9d90/chapter_searching.webp" data-source-height="216" data-source-width="216" height="216" style="height: 15.149%; left: 18.185%; top: 16.404%;; aspect-ratio: 216 / 216" width="216"/>
<noscript>
<img alt="" height="216" src="../assets/home/8e54cf1d70453241/../shared/images/ebfe2b953dbb9d90/chapter_searching.webp" style="height: 15.149%; left: 18.185%; top: 16.404%;" width="216"/>
</noscript>
<span style="left: 14.556%; top: 20.876%;">
探索
</span>
</a>
<a href="chapter_sorting/">
<img alt="" data-hero-asset="chapter_sorting" data-source-height="137" data-source-width="138" height="137" src="../assets/home/ad8bb1cc4c28091c/../shared/images/9d4be68b2680967c/chapter_sorting.webp" style="height: 9.574%; left: 25.409%; top: 40.747%;" width="138"/>
<img alt="" data-hero-asset="chapter_sorting" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/9d4be68b2680967c/chapter_sorting.webp" data-source-height="137" data-source-width="138" height="137" style="height: 9.574%; left: 25.409%; top: 40.747%;; aspect-ratio: 138 / 137" width="138"/>
<noscript>
<img alt="" height="137" src="../assets/home/8e54cf1d70453241/../shared/images/9d4be68b2680967c/chapter_sorting.webp" style="height: 9.574%; left: 25.409%; top: 40.747%;" width="138"/>
</noscript>
<span style="left: 28.805%; top: 53.808%;">
ソート
</span>
</a>
<a href="chapter_divide_and_conquer/">
<img alt="" data-hero-asset="chapter_divide_and_conquer" data-source-height="269" data-source-width="407" height="269" src="../assets/home/ad8bb1cc4c28091c/../shared/images/6f5766ca9385cd2e/chapter_divide_and_conquer.webp" style="height: 18.681%; left: 32.721%; top: 4.816%;" width="407"/>
<img alt="" data-hero-asset="chapter_divide_and_conquer" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/6f5766ca9385cd2e/chapter_divide_and_conquer.webp" data-source-height="269" data-source-width="407" height="269" style="height: 18.681%; left: 32.721%; top: 4.816%;; aspect-ratio: 407 / 269" width="407"/>
<noscript>
<img alt="" height="269" src="../assets/home/8e54cf1d70453241/../shared/images/6f5766ca9385cd2e/chapter_divide_and_conquer.webp" style="height: 18.681%; left: 32.721%; top: 4.816%;" width="407"/>
</noscript>
<span style="left: 31.42%; top: 8.679%;">
分割統治
</span>
</a>
<a href="chapter_backtracking/">
<img alt="" data-hero-asset="chapter_backtracking" data-source-height="249" data-source-width="345" height="249" src="../assets/home/ad8bb1cc4c28091c/../shared/images/176675e685febf11/chapter_backtracking.webp" style="height: 17.338%; left: 4.875%; top: 32.925%;" width="345"/>
<img alt="" data-hero-asset="chapter_backtracking" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/176675e685febf11/chapter_backtracking.webp" data-source-height="249" data-source-width="345" height="249" style="height: 17.338%; left: 4.875%; top: 32.925%;; aspect-ratio: 345 / 249" width="345"/>
<noscript>
<img alt="" height="249" src="../assets/home/8e54cf1d70453241/../shared/images/176675e685febf11/chapter_backtracking.webp" style="height: 17.338%; left: 4.875%; top: 32.925%;" width="345"/>
</noscript>
<span style="left: 4.742%; top: 50.113%;">
バックトラッキング
</span>
</a>
<a href="chapter_dynamic_programming/">
<img alt="" data-hero-asset="chapter_dynamic_programming" data-source-height="268" data-source-width="267" height="268" src="../assets/home/ad8bb1cc4c28091c/../shared/images/06264b1ffd05b08e/chapter_dynamic_programming.webp" style="height: 15.47%; left: 9.406%; top: 57.472%;" width="267"/>
<img alt="" data-hero-asset="chapter_dynamic_programming" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/06264b1ffd05b08e/chapter_dynamic_programming.webp" data-source-height="268" data-source-width="267" height="268" style="height: 15.47%; left: 9.406%; top: 57.472%;; aspect-ratio: 267 / 268" width="267"/>
<noscript>
<img alt="" height="268" src="../assets/home/8e54cf1d70453241/../shared/images/06264b1ffd05b08e/chapter_dynamic_programming.webp" style="height: 15.47%; left: 9.406%; top: 57.472%;" width="267"/>
</noscript>
<span style="left: 8.561%; top: 75.351%;">
動的計画法
</span>
</a>
<a href="chapter_greedy/">
<img alt="" data-hero-asset="chapter_greedy" data-source-height="202" data-source-width="265" height="202" src="../assets/home/ad8bb1cc4c28091c/../shared/images/2ce6caaac951c40b/chapter_greedy.webp" style="height: 14.127%; left: 23.132%; top: 75.803%;" width="265"/>
<img alt="" data-hero-asset="chapter_greedy" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/2ce6caaac951c40b/chapter_greedy.webp" data-source-height="202" data-source-width="265" height="202" style="height: 14.127%; left: 23.132%; top: 75.803%;; aspect-ratio: 265 / 202" width="265"/>
<noscript>
<img alt="" height="202" src="../assets/home/8e54cf1d70453241/../shared/images/2ce6caaac951c40b/chapter_greedy.webp" style="height: 14.127%; left: 23.132%; top: 75.803%;" width="265"/>
</noscript>
<span style="left: 21.619%; top: 86.85%;">
貪欲法
</span>
@@ -139,9 +178,9 @@
<a href="chapter_hello_algo/">
<div style="height: 4.34%;">
</div>
<img alt="" class="device-on-hover" data-home-src="../assets/home/ad8bb1cc4c28091c/../shared/images/5b64cf7672ec5ec6/web_mac_iphone.webp" decoding="async" height="965" style="height: 66.31%;" width="1598"/>
<img alt="" class="device-on-hover" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/5b64cf7672ec5ec6/web_mac_iphone.webp" decoding="async" height="965" style="height: 66.31%;" width="1598"/>
<noscript>
<img alt="" class="device-on-hover" height="965" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/5b64cf7672ec5ec6/web_mac_iphone.webp" style="height: 66.31%;" width="1598"/>
<img alt="" class="device-on-hover" height="965" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/5b64cf7672ec5ec6/web_mac_iphone.webp" style="height: 66.31%;" width="1598"/>
</noscript>
<div style="height: 4.34%;">
</div>
@@ -158,9 +197,9 @@
</div>
<div class="media-block">
<a href="https://github.com/krahets/hello-algo/releases">
<img alt="" class="device-on-hover" data-home-src="../assets/home/ad8bb1cc4c28091c/../shared/images/66baa2f9bf3abec7/pdf_ipad.webp" decoding="async" height="960" style="height: 75%;" width="812"/>
<img alt="" class="device-on-hover" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/66baa2f9bf3abec7/pdf_ipad.webp" decoding="async" height="960" style="height: 75%;" width="812"/>
<noscript>
<img alt="" class="device-on-hover" height="960" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/66baa2f9bf3abec7/pdf_ipad.webp" style="height: 75%;" width="812"/>
<img alt="" class="device-on-hover" height="960" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/66baa2f9bf3abec7/pdf_ipad.webp" style="height: 75%;" width="812"/>
</noscript>
<div class="text-button">
<span>
@@ -231,21 +270,21 @@
</p>
</div>
</div>
<video aria-label="アルゴリズムの動きを示すアニメーション" class="intro-image" data-home-poster="../assets/home/ad8bb1cc4c28091c/../shared/images/9e5f39bf33afc70f/animation-poster.webp" data-home-video="../assets/home/ad8bb1cc4c28091c/../shared/media/6c70de2b2bf4eef7/animation.mp4" height="1080" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1600 / 1080" width="1600">
<video aria-label="アルゴリズムの動きを示すアニメーション" class="intro-image" data-home-poster="../assets/home/8e54cf1d70453241/../shared/images/9e5f39bf33afc70f/animation-poster.webp" data-home-video="../assets/home/8e54cf1d70453241/../shared/media/6c70de2b2bf4eef7/animation.mp4" height="1080" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1600 / 1080" width="1600">
</video>
<noscript>
<a href="../assets/home/ad8bb1cc4c28091c/../shared/media/6c70de2b2bf4eef7/animation.mp4">
<img alt="アルゴリズムの動きを示すアニメーション" class="intro-image" height="1080" src="../assets/home/ad8bb1cc4c28091c/../shared/images/9e5f39bf33afc70f/animation-poster.webp" width="1600"/>
<a href="../assets/home/8e54cf1d70453241/../shared/media/6c70de2b2bf4eef7/animation.mp4">
<img alt="アルゴリズムの動きを示すアニメーション" class="intro-image" height="1080" src="../assets/home/8e54cf1d70453241/../shared/images/9e5f39bf33afc70f/animation-poster.webp" width="1600"/>
アニメーションによる図解
</a>
</noscript>
</div>
<div class="intro-container">
<video aria-label="コードを実行する例" class="intro-image" data-home-poster="../assets/home/ad8bb1cc4c28091c/../shared/images/f33a13e8331245ae/running_code-poster.webp" data-home-video="../assets/home/ad8bb1cc4c28091c/../shared/media/bb169a96ca8316da/running_code.mp4" height="1082" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1600 / 1082" width="1600">
<video aria-label="コードを実行する例" class="intro-image" data-home-poster="../assets/home/8e54cf1d70453241/../shared/images/f33a13e8331245ae/running_code-poster.webp" data-home-video="../assets/home/8e54cf1d70453241/../shared/media/bb169a96ca8316da/running_code.mp4" height="1082" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1600 / 1082" width="1600">
</video>
<noscript>
<a href="../assets/home/ad8bb1cc4c28091c/../shared/media/bb169a96ca8316da/running_code.mp4">
<img alt="コードを実行する例" class="intro-image" height="1082" src="../assets/home/ad8bb1cc4c28091c/../shared/images/f33a13e8331245ae/running_code-poster.webp" width="1600"/>
<a href="../assets/home/8e54cf1d70453241/../shared/media/bb169a96ca8316da/running_code.mp4">
<img alt="コードを実行する例" class="intro-image" height="1082" src="../assets/home/8e54cf1d70453241/../shared/images/f33a13e8331245ae/running_code-poster.webp" width="1600"/>
ワンクリックで実行
</a>
</noscript>
@@ -293,11 +332,11 @@
</p>
</div>
</div>
<video aria-label="コメントで学び合う例" class="intro-image" data-home-poster="../assets/home/ad8bb1cc4c28091c/../shared/images/f9ac69536a7582f5/comment-poster.webp" data-home-video="../assets/home/ad8bb1cc4c28091c/../shared/media/62aa0b8d351c63a7/comment.mp4" height="1080" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1600 / 1080" width="1600">
<video aria-label="コメントで学び合う例" class="intro-image" data-home-poster="../assets/home/8e54cf1d70453241/../shared/images/f9ac69536a7582f5/comment-poster.webp" data-home-video="../assets/home/8e54cf1d70453241/../shared/media/62aa0b8d351c63a7/comment.mp4" height="1080" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1600 / 1080" width="1600">
</video>
<noscript>
<a href="../assets/home/ad8bb1cc4c28091c/../shared/media/62aa0b8d351c63a7/comment.mp4">
<img alt="コメントで学び合う例" class="intro-image" height="1080" src="../assets/home/ad8bb1cc4c28091c/../shared/images/f9ac69536a7582f5/comment-poster.webp" width="1600"/>
<a href="../assets/home/8e54cf1d70453241/../shared/media/62aa0b8d351c63a7/comment.mp4">
<img alt="コメントで学び合う例" class="intro-image" height="1080" src="../assets/home/8e54cf1d70453241/../shared/images/f9ac69536a7582f5/comment-poster.webp" width="1600"/>
読者同士で学び合う
</a>
</noscript>
@@ -313,7 +352,10 @@
<div class="profile-div">
<div class="profile-cell">
<a href="https://github.com/krahets">
<img alt="著者:yudongjin" class="profile-img" height="512" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/02348410d40f7665/avatar_yudongjin.webp" width="512"/>
<img alt="著者:yudongjin" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/02348410d40f7665/avatar_yudongjin.webp" decoding="async" height="512" width="512"/>
<noscript>
<img alt="著者:yudongjin" class="profile-img" height="512" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/02348410d40f7665/avatar_yudongjin.webp" width="512"/>
</noscript>
<br/>
<b>
靳宇栋(@krahets)
@@ -332,7 +374,10 @@
<div class="profile-div">
<div class="profile-cell">
<a href="https://github.com/coderonion">
<img alt="コードのレビュー担当者:coderonion" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/db606f27971eae34/avatar_coderonion.webp" width="384"/>
<img alt="コードのレビュー担当者:coderonion" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/db606f27971eae34/avatar_coderonion.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="コードのレビュー担当者:coderonion" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/db606f27971eae34/avatar_coderonion.webp" width="384"/>
</noscript>
<br/>
<b>
coderonion
@@ -345,7 +390,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/curtishd">
<img alt="コードのレビュー担当者:curtishd" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/feedb0e547ea31fc/avatar_curtishd.webp" width="384"/>
<img alt="コードのレビュー担当者:curtishd" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/feedb0e547ea31fc/avatar_curtishd.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="コードのレビュー担当者:curtishd" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/feedb0e547ea31fc/avatar_curtishd.webp" width="384"/>
</noscript>
<br/>
<b>
curtishd
@@ -358,7 +406,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/Gonglja">
<img alt="コードのレビュー担当者:Gonglja" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/cdcf023b032b8d30/avatar_Gonglja.webp" width="384"/>
<img alt="コードのレビュー担当者:Gonglja" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/cdcf023b032b8d30/avatar_Gonglja.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="コードのレビュー担当者:Gonglja" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/cdcf023b032b8d30/avatar_Gonglja.webp" width="384"/>
</noscript>
<br/>
<b>
Gonglja
@@ -371,7 +422,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/gvenusleo">
<img alt="コードのレビュー担当者:gvenusleo" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/464e2d351b9263ec/avatar_gvenusleo.webp" width="384"/>
<img alt="コードのレビュー担当者:gvenusleo" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/464e2d351b9263ec/avatar_gvenusleo.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="コードのレビュー担当者:gvenusleo" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/464e2d351b9263ec/avatar_gvenusleo.webp" width="384"/>
</noscript>
<br/>
<b>
gvenusleo
@@ -384,7 +438,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/hpstory">
<img alt="コードのレビュー担当者:hpstory" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/7b6478acdab6b845/avatar_hpstory.webp" width="384"/>
<img alt="コードのレビュー担当者:hpstory" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/7b6478acdab6b845/avatar_hpstory.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="コードのレビュー担当者:hpstory" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/7b6478acdab6b845/avatar_hpstory.webp" width="384"/>
</noscript>
<br/>
<b>
hpstory
@@ -397,7 +454,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/justin-tse">
<img alt="コードのレビュー担当者:justin-tse" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/208ee5aae490eefa/avatar_justin-tse.webp" width="384"/>
<img alt="コードのレビュー担当者:justin-tse" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/208ee5aae490eefa/avatar_justin-tse.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="コードのレビュー担当者:justin-tse" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/208ee5aae490eefa/avatar_justin-tse.webp" width="384"/>
</noscript>
<br/>
<b>
justin-tse
@@ -410,7 +470,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/khoaxuantu">
<img alt="コードのレビュー担当者:khoaxuantu" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/9d3f1a21ff51de78/avatar_khoaxuantu.webp" width="384"/>
<img alt="コードのレビュー担当者:khoaxuantu" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/9d3f1a21ff51de78/avatar_khoaxuantu.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="コードのレビュー担当者:khoaxuantu" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/9d3f1a21ff51de78/avatar_khoaxuantu.webp" width="384"/>
</noscript>
<br/>
<b>
khoaxuantu
@@ -423,7 +486,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/krahets">
<img alt="コードのレビュー担当者:krahets" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/e321f9a3ac2739e0/avatar_krahets.webp" width="384"/>
<img alt="コードのレビュー担当者:krahets" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/e321f9a3ac2739e0/avatar_krahets.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="コードのレビュー担当者:krahets" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/e321f9a3ac2739e0/avatar_krahets.webp" width="384"/>
</noscript>
<br/>
<b>
krahets
@@ -436,7 +502,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/night-cruise">
<img alt="コードのレビュー担当者:night-cruise" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/960b489efa22abd4/avatar_night-cruise.jpg" width="384"/>
<img alt="コードのレビュー担当者:night-cruise" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/960b489efa22abd4/avatar_night-cruise.jpg" decoding="async" height="384" width="384"/>
<noscript>
<img alt="コードのレビュー担当者:night-cruise" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/960b489efa22abd4/avatar_night-cruise.jpg" width="384"/>
</noscript>
<br/>
<b>
night-cruise
@@ -449,7 +518,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/nuomi1">
<img alt="コードのレビュー担当者:nuomi1" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/7316a9eb4429b259/avatar_nuomi1.webp" width="384"/>
<img alt="コードのレビュー担当者:nuomi1" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/7316a9eb4429b259/avatar_nuomi1.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="コードのレビュー担当者:nuomi1" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/7316a9eb4429b259/avatar_nuomi1.webp" width="384"/>
</noscript>
<br/>
<b>
nuomi1
@@ -462,7 +534,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/Reanon">
<img alt="コードのレビュー担当者:Reanon" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/dcc15aa68cc793c7/avatar_Reanon.webp" width="384"/>
<img alt="コードのレビュー担当者:Reanon" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/dcc15aa68cc793c7/avatar_Reanon.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="コードのレビュー担当者:Reanon" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/dcc15aa68cc793c7/avatar_Reanon.webp" width="384"/>
</noscript>
<br/>
<b>
Reanon
@@ -475,7 +550,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/rongyi">
<img alt="コードのレビュー担当者:rongyi" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/5dc6c4b1d8bfe0ac/avatar_rongyi.webp" width="384"/>
<img alt="コードのレビュー担当者:rongyi" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/5dc6c4b1d8bfe0ac/avatar_rongyi.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="コードのレビュー担当者:rongyi" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/5dc6c4b1d8bfe0ac/avatar_rongyi.webp" width="384"/>
</noscript>
<br/>
<b>
rongyi
@@ -496,11 +574,22 @@
本書は、オープンソースコミュニティの 200 人以上の貢献者の協力により、改善を重ねています。時間と労力を注いでくださった皆さんに感謝します!
</p>
<a href="https://github.com/krahets/hello-algo/graphs/contributors">
<img alt="貢献者の皆さん" loading="lazy" src="https://contrib.rocks/image?repo=krahets/hello-algo&amp;max=300&amp;columns=12" style="width: 100%; max-width: 38.5em;"/>
<img alt="貢献者の皆さん" data-home-src="https://contrib.rocks/image?repo=krahets/hello-algo&amp;max=300&amp;columns=12" decoding="async" style="width: 100%; max-width: 38.5em;"/>
<noscript>
<img alt="貢献者の皆さん" loading="lazy" src="https://contrib.rocks/image?repo=krahets/hello-algo&amp;max=300&amp;columns=12" style="width: 100%; max-width: 38.5em;"/>
</noscript>
</a>
</div>
</div>
</section>
<!-- This independent fallback also works when the deferred loader cannot be fetched. -->
<script defer="" onerror="document.querySelectorAll('[data-home-src], [data-home-poster]').forEach(function(el) { if (el.dataset.homeSrc) el.src = el.dataset.homeSrc; if (el.dataset.homePoster) el.poster = el.dataset.homePoster; });" src="../assets/home/ad8bb1cc4c28091c/javascripts/homepage-media.js">
<script defer="" onerror="document.querySelectorAll('[data-home-src], [data-home-poster]').forEach(function(el) { if (el.dataset.homeSrc) el.src = el.dataset.homeSrc; if (el.dataset.homePoster) el.poster = el.dataset.homePoster; });" src="../assets/home/8e54cf1d70453241/javascripts/homepage-media.js">
</script>
<script>
// If the scene entry point itself fails, still provide chapter illustrations.
addEventListener('load', function () {
if (!window.Starfield) document.querySelectorAll('[data-hero-fallback]').forEach(function (image) {
image.src = image.dataset.heroFallback;
});
}, {once: true});
</script>
+135 -46
View File
@@ -1,8 +1,8 @@
<!-- Generated from the shared homepage template and locale configuration. -->
<link href="../assets/home/ad8bb1cc4c28091c/hero-motion.css" rel="stylesheet"/>
<link href="../assets/home/8e54cf1d70453241/hero-motion.css" rel="stylesheet"/>
<noscript>
<style>
[data-home-src], video[data-home-poster] { display: none; }
[data-home-src], video[data-home-poster], [data-hero-fallback] { display: none; }
</style>
</noscript>
<section class="home-div home-universe-bg" data-md-color-primary="grey" data-md-color-scheme="slate">
@@ -11,88 +11,127 @@
</div>
</div>
<div class="hero-div hero-div--ko" data-home-layout="universe">
<img alt="" data-hero-asset="ground" data-source-height="380" data-source-width="881" height="380" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/567306c070a6a7e2/ground.webp" style="position: absolute; width: auto; height: 26.445%; left: 28.211%; top: 54.145%;" width="881"/>
<img alt="" data-hero-asset="links" data-source-height="1134" data-source-width="1562" height="1134" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/3e50f38a325c1cb5/links.webp" style="position: absolute; width: auto; height: 78.751%; left: 10.545%; top: 7.326%;" width="1562"/>
<img alt="" data-hero-asset="ground" data-source-height="380" data-source-width="881" height="380" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/567306c070a6a7e2/ground.webp" style="position: absolute; width: auto; height: 26.445%; left: 28.211%; top: 54.145%;; aspect-ratio: 881 / 380" width="881"/>
<img alt="" data-hero-asset="links" data-source-height="1134" data-source-width="1562" height="1134" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/3e50f38a325c1cb5/links.webp" style="position: absolute; width: auto; height: 78.751%; left: 10.545%; top: 7.326%;; aspect-ratio: 1562 / 1134" width="1562"/>
<a href="chapter_introduction/">
<img alt="" data-hero-asset="astronaut" data-source-height="672" data-source-width="515" height="672" src="../assets/home/ad8bb1cc4c28091c/../shared/images/8e5eb3b3e3ebd9f7/astronaut.webp" style="height: 46.673%; left: 35.413%; top: 24.343%;" width="515"/>
<img alt="" data-hero-asset="astronaut" data-source-height="672" data-source-width="515" height="672" src="../assets/home/8e54cf1d70453241/../shared/images/8e5eb3b3e3ebd9f7/astronaut.webp" style="height: 46.673%; left: 35.413%; top: 24.343%;; aspect-ratio: 515 / 672" width="515"/>
<span style="left: 52.244%; top: 20.919%;">
알고리즘과의 첫 만남
</span>
</a>
<a href="chapter_computational_complexity/">
<img alt="" data-hero-asset="chapter_computational_complexity" data-source-height="178" data-source-width="113" height="178" src="../assets/home/ad8bb1cc4c28091c/../shared/images/2fb425426d1f8d86/chapter_computational_complexity.webp" style="height: 12.347%; left: 36.267%; top: 37.653%;" width="113"/>
<img alt="" data-hero-asset="chapter_computational_complexity" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/2fb425426d1f8d86/chapter_computational_complexity.webp" data-source-height="178" data-source-width="113" height="178" style="height: 12.347%; left: 36.267%; top: 37.653%;; aspect-ratio: 113 / 178" width="113"/>
<noscript>
<img alt="" height="178" src="../assets/home/8e54cf1d70453241/../shared/images/2fb425426d1f8d86/chapter_computational_complexity.webp" style="height: 12.347%; left: 36.267%; top: 37.653%;" width="113"/>
</noscript>
<span style="left: 39.244%; top: 33.919%;">
복잡도
</span>
</a>
<a href="chapter_array_and_linkedlist/">
<img alt="" data-hero-asset="chapter_array_and_linkedlist" data-source-height="319" data-source-width="468" height="319" src="../assets/home/ad8bb1cc4c28091c/../shared/images/5cbbdf7be555d3ef/chapter_array_and_linkedlist.webp" style="height: 22.242%; left: 73.242%; top: 52.481%;" width="468"/>
<img alt="" data-hero-asset="chapter_array_and_linkedlist" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/5cbbdf7be555d3ef/chapter_array_and_linkedlist.webp" data-source-height="319" data-source-width="468" height="319" style="height: 22.242%; left: 73.242%; top: 52.481%;; aspect-ratio: 468 / 319" width="468"/>
<noscript>
<img alt="" height="319" src="../assets/home/8e54cf1d70453241/../shared/images/5cbbdf7be555d3ef/chapter_array_and_linkedlist.webp" style="height: 22.242%; left: 73.242%; top: 52.481%;" width="468"/>
</noscript>
<span style="left: 90.897%; top: 76.259%;">
배열과 연결 리스트
</span>
</a>
<a href="chapter_stack_and_queue/">
<img alt="" data-hero-asset="chapter_stack_and_queue" data-source-height="204" data-source-width="204" height="204" src="../assets/home/ad8bb1cc4c28091c/../shared/images/e2667767cf7481bd/chapter_stack_and_queue.webp" style="height: 14.302%; left: 62.646%; top: 77.875%;" width="204"/>
<img alt="" data-hero-asset="chapter_stack_and_queue" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/e2667767cf7481bd/chapter_stack_and_queue.webp" data-source-height="204" data-source-width="204" height="204" style="height: 14.302%; left: 62.646%; top: 77.875%;; aspect-ratio: 204 / 204" width="204"/>
<noscript>
<img alt="" height="204" src="../assets/home/8e54cf1d70453241/../shared/images/e2667767cf7481bd/chapter_stack_and_queue.webp" style="height: 14.302%; left: 62.646%; top: 77.875%;" width="204"/>
</noscript>
<span style="left: 77.571%; top: 91.25%;">
스택과 큐
</span>
</a>
<a href="chapter_hashing/">
<img alt="" data-hero-asset="chapter_hashing" data-source-height="218" data-source-width="218" height="218" src="../assets/home/ad8bb1cc4c28091c/../shared/images/b108d70a537714cb/chapter_hashing.webp" style="height: 15.266%; left: 63.281%; top: 27.933%;" width="218"/>
<img alt="" data-hero-asset="chapter_hashing" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/b108d70a537714cb/chapter_hashing.webp" data-source-height="218" data-source-width="218" height="218" style="height: 15.266%; left: 63.281%; top: 27.933%;; aspect-ratio: 218 / 218" width="218"/>
<noscript>
<img alt="" height="218" src="../assets/home/8e54cf1d70453241/../shared/images/b108d70a537714cb/chapter_hashing.webp" style="height: 15.266%; left: 63.281%; top: 27.933%;" width="218"/>
</noscript>
<span style="left: 68.862%; top: 46.292%;">
해시 테이블
</span>
</a>
<a href="chapter_tree/">
<img alt="" data-hero-asset="chapter_tree" data-source-height="281" data-source-width="280" height="281" src="../assets/home/ad8bb1cc4c28091c/../shared/images/8138bb0acecedec4/chapter_tree.webp" style="height: 19.615%; left: 80.137%; top: 26.678%;" width="280"/>
<img alt="" data-hero-asset="chapter_tree" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/8138bb0acecedec4/chapter_tree.webp" data-source-height="281" data-source-width="280" height="281" style="height: 19.615%; left: 80.137%; top: 26.678%;; aspect-ratio: 280 / 281" width="280"/>
<noscript>
<img alt="" height="281" src="../assets/home/8e54cf1d70453241/../shared/images/8138bb0acecedec4/chapter_tree.webp" style="height: 19.615%; left: 80.137%; top: 26.678%;" width="280"/>
</noscript>
<span style="left: 96.159%; top: 44.8%;">
트리
</span>
</a>
<a href="chapter_heap/">
<img alt="" data-hero-asset="chapter_heap" data-source-height="152" data-source-width="151" height="152" src="../assets/home/ad8bb1cc4c28091c/../shared/images/7586281e6691807a/chapter_heap.webp" style="height: 10.566%; left: 77.226%; top: 11.559%;" width="151"/>
<img alt="" data-hero-asset="chapter_heap" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/7586281e6691807a/chapter_heap.webp" data-source-height="152" data-source-width="151" height="152" style="height: 10.566%; left: 77.226%; top: 11.559%;; aspect-ratio: 151 / 152" width="151"/>
<noscript>
<img alt="" height="152" src="../assets/home/8e54cf1d70453241/../shared/images/7586281e6691807a/chapter_heap.webp" style="height: 10.566%; left: 77.226%; top: 11.559%;" width="151"/>
</noscript>
<span style="left: 88.103%; top: 15.422%;">
힙
</span>
</a>
<a href="chapter_graph/">
<img alt="" data-hero-asset="chapter_graph" data-source-height="272" data-source-width="542" height="272" src="../assets/home/ad8bb1cc4c28091c/../shared/images/175a7f2e7c3cf5f0/chapter_graph.webp" style="height: 16.112%; left: 51.854%; top: 5.575%;" width="542"/>
<img alt="" data-hero-asset="chapter_graph" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/175a7f2e7c3cf5f0/chapter_graph.webp" data-source-height="272" data-source-width="542" height="272" style="height: 16.112%; left: 51.854%; top: 5.575%;; aspect-ratio: 542 / 272" width="542"/>
<noscript>
<img alt="" height="272" src="../assets/home/8e54cf1d70453241/../shared/images/175a7f2e7c3cf5f0/chapter_graph.webp" style="height: 16.112%; left: 51.854%; top: 5.575%;" width="542"/>
</noscript>
<span style="left: 71.195%; top: 6.503%;">
그래프
</span>
</a>
<a href="chapter_searching/">
<img alt="" data-hero-asset="chapter_searching" data-source-height="216" data-source-width="216" height="216" src="../assets/home/ad8bb1cc4c28091c/../shared/images/ebfe2b953dbb9d90/chapter_searching.webp" style="height: 15.149%; left: 18.185%; top: 16.404%;" width="216"/>
<img alt="" data-hero-asset="chapter_searching" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/ebfe2b953dbb9d90/chapter_searching.webp" data-source-height="216" data-source-width="216" height="216" style="height: 15.149%; left: 18.185%; top: 16.404%;; aspect-ratio: 216 / 216" width="216"/>
<noscript>
<img alt="" height="216" src="../assets/home/8e54cf1d70453241/../shared/images/ebfe2b953dbb9d90/chapter_searching.webp" style="height: 15.149%; left: 18.185%; top: 16.404%;" width="216"/>
</noscript>
<span style="left: 14.556%; top: 20.876%;">
탐색
</span>
</a>
<a href="chapter_sorting/">
<img alt="" data-hero-asset="chapter_sorting" data-source-height="137" data-source-width="138" height="137" src="../assets/home/ad8bb1cc4c28091c/../shared/images/9d4be68b2680967c/chapter_sorting.webp" style="height: 9.574%; left: 25.409%; top: 40.747%;" width="138"/>
<img alt="" data-hero-asset="chapter_sorting" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/9d4be68b2680967c/chapter_sorting.webp" data-source-height="137" data-source-width="138" height="137" style="height: 9.574%; left: 25.409%; top: 40.747%;; aspect-ratio: 138 / 137" width="138"/>
<noscript>
<img alt="" height="137" src="../assets/home/8e54cf1d70453241/../shared/images/9d4be68b2680967c/chapter_sorting.webp" style="height: 9.574%; left: 25.409%; top: 40.747%;" width="138"/>
</noscript>
<span style="left: 28.805%; top: 53.808%;">
정렬
</span>
</a>
<a href="chapter_divide_and_conquer/">
<img alt="" data-hero-asset="chapter_divide_and_conquer" data-source-height="269" data-source-width="407" height="269" src="../assets/home/ad8bb1cc4c28091c/../shared/images/6f5766ca9385cd2e/chapter_divide_and_conquer.webp" style="height: 18.681%; left: 32.721%; top: 4.816%;" width="407"/>
<img alt="" data-hero-asset="chapter_divide_and_conquer" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/6f5766ca9385cd2e/chapter_divide_and_conquer.webp" data-source-height="269" data-source-width="407" height="269" style="height: 18.681%; left: 32.721%; top: 4.816%;; aspect-ratio: 407 / 269" width="407"/>
<noscript>
<img alt="" height="269" src="../assets/home/8e54cf1d70453241/../shared/images/6f5766ca9385cd2e/chapter_divide_and_conquer.webp" style="height: 18.681%; left: 32.721%; top: 4.816%;" width="407"/>
</noscript>
<span style="left: 31.42%; top: 8.679%;">
분할 정복
</span>
</a>
<a href="chapter_backtracking/">
<img alt="" data-hero-asset="chapter_backtracking" data-source-height="249" data-source-width="345" height="249" src="../assets/home/ad8bb1cc4c28091c/../shared/images/176675e685febf11/chapter_backtracking.webp" style="height: 17.338%; left: 4.875%; top: 32.925%;" width="345"/>
<img alt="" data-hero-asset="chapter_backtracking" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/176675e685febf11/chapter_backtracking.webp" data-source-height="249" data-source-width="345" height="249" style="height: 17.338%; left: 4.875%; top: 32.925%;; aspect-ratio: 345 / 249" width="345"/>
<noscript>
<img alt="" height="249" src="../assets/home/8e54cf1d70453241/../shared/images/176675e685febf11/chapter_backtracking.webp" style="height: 17.338%; left: 4.875%; top: 32.925%;" width="345"/>
</noscript>
<span style="left: 4.742%; top: 50.113%;">
백트래킹
</span>
</a>
<a href="chapter_dynamic_programming/">
<img alt="" data-hero-asset="chapter_dynamic_programming" data-source-height="268" data-source-width="267" height="268" src="../assets/home/ad8bb1cc4c28091c/../shared/images/06264b1ffd05b08e/chapter_dynamic_programming.webp" style="height: 15.47%; left: 9.406%; top: 57.472%;" width="267"/>
<img alt="" data-hero-asset="chapter_dynamic_programming" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/06264b1ffd05b08e/chapter_dynamic_programming.webp" data-source-height="268" data-source-width="267" height="268" style="height: 15.47%; left: 9.406%; top: 57.472%;; aspect-ratio: 267 / 268" width="267"/>
<noscript>
<img alt="" height="268" src="../assets/home/8e54cf1d70453241/../shared/images/06264b1ffd05b08e/chapter_dynamic_programming.webp" style="height: 15.47%; left: 9.406%; top: 57.472%;" width="267"/>
</noscript>
<span style="left: 8.561%; top: 75.351%;">
동적 계획법
</span>
</a>
<a href="chapter_greedy/">
<img alt="" data-hero-asset="chapter_greedy" data-source-height="202" data-source-width="265" height="202" src="../assets/home/ad8bb1cc4c28091c/../shared/images/2ce6caaac951c40b/chapter_greedy.webp" style="height: 14.127%; left: 23.132%; top: 75.803%;" width="265"/>
<img alt="" data-hero-asset="chapter_greedy" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/2ce6caaac951c40b/chapter_greedy.webp" data-source-height="202" data-source-width="265" height="202" style="height: 14.127%; left: 23.132%; top: 75.803%;; aspect-ratio: 265 / 202" width="265"/>
<noscript>
<img alt="" height="202" src="../assets/home/8e54cf1d70453241/../shared/images/2ce6caaac951c40b/chapter_greedy.webp" style="height: 14.127%; left: 23.132%; top: 75.803%;" width="265"/>
</noscript>
<span style="left: 21.619%; top: 86.85%;">
탐욕
</span>
@@ -139,9 +178,9 @@
<a href="chapter_hello_algo/">
<div style="height: 4.34%;">
</div>
<img alt="" class="device-on-hover" data-home-src="../assets/home/ad8bb1cc4c28091c/../shared/images/5b64cf7672ec5ec6/web_mac_iphone.webp" decoding="async" height="965" style="height: 66.31%;" width="1598"/>
<img alt="" class="device-on-hover" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/5b64cf7672ec5ec6/web_mac_iphone.webp" decoding="async" height="965" style="height: 66.31%;" width="1598"/>
<noscript>
<img alt="" class="device-on-hover" height="965" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/5b64cf7672ec5ec6/web_mac_iphone.webp" style="height: 66.31%;" width="1598"/>
<img alt="" class="device-on-hover" height="965" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/5b64cf7672ec5ec6/web_mac_iphone.webp" style="height: 66.31%;" width="1598"/>
</noscript>
<div style="height: 4.34%;">
</div>
@@ -158,9 +197,9 @@
</div>
<div class="media-block">
<a href="https://github.com/krahets/hello-algo/releases">
<img alt="" class="device-on-hover" data-home-src="../assets/home/ad8bb1cc4c28091c/../shared/images/66baa2f9bf3abec7/pdf_ipad.webp" decoding="async" height="960" style="height: 75%;" width="812"/>
<img alt="" class="device-on-hover" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/66baa2f9bf3abec7/pdf_ipad.webp" decoding="async" height="960" style="height: 75%;" width="812"/>
<noscript>
<img alt="" class="device-on-hover" height="960" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/66baa2f9bf3abec7/pdf_ipad.webp" style="height: 75%;" width="812"/>
<img alt="" class="device-on-hover" height="960" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/66baa2f9bf3abec7/pdf_ipad.webp" style="height: 75%;" width="812"/>
</noscript>
<div class="text-button">
<span>
@@ -228,21 +267,21 @@
</p>
</div>
</div>
<video aria-label="애니메이션 예제" class="intro-image" data-home-poster="../assets/home/ad8bb1cc4c28091c/../shared/images/9e5f39bf33afc70f/animation-poster.webp" data-home-video="../assets/home/ad8bb1cc4c28091c/../shared/media/6c70de2b2bf4eef7/animation.mp4" height="1080" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1600 / 1080" width="1600">
<video aria-label="애니메이션 예제" class="intro-image" data-home-poster="../assets/home/8e54cf1d70453241/../shared/images/9e5f39bf33afc70f/animation-poster.webp" data-home-video="../assets/home/8e54cf1d70453241/../shared/media/6c70de2b2bf4eef7/animation.mp4" height="1080" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1600 / 1080" width="1600">
</video>
<noscript>
<a href="../assets/home/ad8bb1cc4c28091c/../shared/media/6c70de2b2bf4eef7/animation.mp4">
<img alt="애니메이션 예제" class="intro-image" height="1080" src="../assets/home/ad8bb1cc4c28091c/../shared/images/9e5f39bf33afc70f/animation-poster.webp" width="1600"/>
<a href="../assets/home/8e54cf1d70453241/../shared/media/6c70de2b2bf4eef7/animation.mp4">
<img alt="애니메이션 예제" class="intro-image" height="1080" src="../assets/home/8e54cf1d70453241/../shared/images/9e5f39bf33afc70f/animation-poster.webp" width="1600"/>
애니메이션 그림
</a>
</noscript>
</div>
<div class="intro-container">
<video aria-label="코드 실행 예제" class="intro-image" data-home-poster="../assets/home/ad8bb1cc4c28091c/../shared/images/f33a13e8331245ae/running_code-poster.webp" data-home-video="../assets/home/ad8bb1cc4c28091c/../shared/media/bb169a96ca8316da/running_code.mp4" height="1082" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1600 / 1082" width="1600">
<video aria-label="코드 실행 예제" class="intro-image" data-home-poster="../assets/home/8e54cf1d70453241/../shared/images/f33a13e8331245ae/running_code-poster.webp" data-home-video="../assets/home/8e54cf1d70453241/../shared/media/bb169a96ca8316da/running_code.mp4" height="1082" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1600 / 1082" width="1600">
</video>
<noscript>
<a href="../assets/home/ad8bb1cc4c28091c/../shared/media/bb169a96ca8316da/running_code.mp4">
<img alt="코드 실행 예제" class="intro-image" height="1082" src="../assets/home/ad8bb1cc4c28091c/../shared/images/f33a13e8331245ae/running_code-poster.webp" width="1600"/>
<a href="../assets/home/8e54cf1d70453241/../shared/media/bb169a96ca8316da/running_code.mp4">
<img alt="코드 실행 예제" class="intro-image" height="1082" src="../assets/home/8e54cf1d70453241/../shared/images/f33a13e8331245ae/running_code-poster.webp" width="1600"/>
클릭 한 번으로 실행
</a>
</noscript>
@@ -290,11 +329,11 @@
</p>
</div>
</div>
<video aria-label="댓글 예제" class="intro-image" data-home-poster="../assets/home/ad8bb1cc4c28091c/../shared/images/f9ac69536a7582f5/comment-poster.webp" data-home-video="../assets/home/ad8bb1cc4c28091c/../shared/media/62aa0b8d351c63a7/comment.mp4" height="1080" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1600 / 1080" width="1600">
<video aria-label="댓글 예제" class="intro-image" data-home-poster="../assets/home/8e54cf1d70453241/../shared/images/f9ac69536a7582f5/comment-poster.webp" data-home-video="../assets/home/8e54cf1d70453241/../shared/media/62aa0b8d351c63a7/comment.mp4" height="1080" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1600 / 1080" width="1600">
</video>
<noscript>
<a href="../assets/home/ad8bb1cc4c28091c/../shared/media/62aa0b8d351c63a7/comment.mp4">
<img alt="댓글 예제" class="intro-image" height="1080" src="../assets/home/ad8bb1cc4c28091c/../shared/images/f9ac69536a7582f5/comment-poster.webp" width="1600"/>
<a href="../assets/home/8e54cf1d70453241/../shared/media/62aa0b8d351c63a7/comment.mp4">
<img alt="댓글 예제" class="intro-image" height="1080" src="../assets/home/8e54cf1d70453241/../shared/images/f9ac69536a7582f5/comment-poster.webp" width="1600"/>
함께 배우기
</a>
</noscript>
@@ -310,7 +349,10 @@
<div class="profile-div">
<div class="profile-cell">
<a href="https://github.com/krahets">
<img alt="저자: yudongjin" class="profile-img" height="512" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/02348410d40f7665/avatar_yudongjin.webp" width="512"/>
<img alt="저자: yudongjin" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/02348410d40f7665/avatar_yudongjin.webp" decoding="async" height="512" width="512"/>
<noscript>
<img alt="저자: yudongjin" class="profile-img" height="512" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/02348410d40f7665/avatar_yudongjin.webp" width="512"/>
</noscript>
<br/>
<b>
진위둥(@krahets)
@@ -329,7 +371,10 @@
<div class="profile-div">
<div class="profile-cell">
<a href="https://github.com/coderonion">
<img alt="검토자: coderonion" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/db606f27971eae34/avatar_coderonion.webp" width="384"/>
<img alt="검토자: coderonion" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/db606f27971eae34/avatar_coderonion.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="검토자: coderonion" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/db606f27971eae34/avatar_coderonion.webp" width="384"/>
</noscript>
<br/>
<b>
coderonion
@@ -342,7 +387,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/curtishd">
<img alt="검토자: curtishd" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/feedb0e547ea31fc/avatar_curtishd.webp" width="384"/>
<img alt="검토자: curtishd" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/feedb0e547ea31fc/avatar_curtishd.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="검토자: curtishd" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/feedb0e547ea31fc/avatar_curtishd.webp" width="384"/>
</noscript>
<br/>
<b>
curtishd
@@ -355,7 +403,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/Gonglja">
<img alt="검토자: Gonglja" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/cdcf023b032b8d30/avatar_Gonglja.webp" width="384"/>
<img alt="검토자: Gonglja" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/cdcf023b032b8d30/avatar_Gonglja.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="검토자: Gonglja" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/cdcf023b032b8d30/avatar_Gonglja.webp" width="384"/>
</noscript>
<br/>
<b>
Gonglja
@@ -368,7 +419,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/gvenusleo">
<img alt="검토자: gvenusleo" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/464e2d351b9263ec/avatar_gvenusleo.webp" width="384"/>
<img alt="검토자: gvenusleo" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/464e2d351b9263ec/avatar_gvenusleo.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="검토자: gvenusleo" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/464e2d351b9263ec/avatar_gvenusleo.webp" width="384"/>
</noscript>
<br/>
<b>
gvenusleo
@@ -381,7 +435,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/hpstory">
<img alt="검토자: hpstory" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/7b6478acdab6b845/avatar_hpstory.webp" width="384"/>
<img alt="검토자: hpstory" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/7b6478acdab6b845/avatar_hpstory.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="검토자: hpstory" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/7b6478acdab6b845/avatar_hpstory.webp" width="384"/>
</noscript>
<br/>
<b>
hpstory
@@ -394,7 +451,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/justin-tse">
<img alt="검토자: justin-tse" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/208ee5aae490eefa/avatar_justin-tse.webp" width="384"/>
<img alt="검토자: justin-tse" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/208ee5aae490eefa/avatar_justin-tse.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="검토자: justin-tse" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/208ee5aae490eefa/avatar_justin-tse.webp" width="384"/>
</noscript>
<br/>
<b>
justin-tse
@@ -407,7 +467,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/khoaxuantu">
<img alt="검토자: khoaxuantu" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/9d3f1a21ff51de78/avatar_khoaxuantu.webp" width="384"/>
<img alt="검토자: khoaxuantu" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/9d3f1a21ff51de78/avatar_khoaxuantu.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="검토자: khoaxuantu" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/9d3f1a21ff51de78/avatar_khoaxuantu.webp" width="384"/>
</noscript>
<br/>
<b>
khoaxuantu
@@ -420,7 +483,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/krahets">
<img alt="검토자: krahets" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/e321f9a3ac2739e0/avatar_krahets.webp" width="384"/>
<img alt="검토자: krahets" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/e321f9a3ac2739e0/avatar_krahets.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="검토자: krahets" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/e321f9a3ac2739e0/avatar_krahets.webp" width="384"/>
</noscript>
<br/>
<b>
krahets
@@ -433,7 +499,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/night-cruise">
<img alt="검토자: night-cruise" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/960b489efa22abd4/avatar_night-cruise.jpg" width="384"/>
<img alt="검토자: night-cruise" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/960b489efa22abd4/avatar_night-cruise.jpg" decoding="async" height="384" width="384"/>
<noscript>
<img alt="검토자: night-cruise" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/960b489efa22abd4/avatar_night-cruise.jpg" width="384"/>
</noscript>
<br/>
<b>
night-cruise
@@ -446,7 +515,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/nuomi1">
<img alt="검토자: nuomi1" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/7316a9eb4429b259/avatar_nuomi1.webp" width="384"/>
<img alt="검토자: nuomi1" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/7316a9eb4429b259/avatar_nuomi1.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="검토자: nuomi1" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/7316a9eb4429b259/avatar_nuomi1.webp" width="384"/>
</noscript>
<br/>
<b>
nuomi1
@@ -459,7 +531,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/Reanon">
<img alt="검토자: Reanon" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/dcc15aa68cc793c7/avatar_Reanon.webp" width="384"/>
<img alt="검토자: Reanon" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/dcc15aa68cc793c7/avatar_Reanon.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="검토자: Reanon" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/dcc15aa68cc793c7/avatar_Reanon.webp" width="384"/>
</noscript>
<br/>
<b>
Reanon
@@ -472,7 +547,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/rongyi">
<img alt="검토자: rongyi" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/5dc6c4b1d8bfe0ac/avatar_rongyi.webp" width="384"/>
<img alt="검토자: rongyi" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/5dc6c4b1d8bfe0ac/avatar_rongyi.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="검토자: rongyi" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/5dc6c4b1d8bfe0ac/avatar_rongyi.webp" width="384"/>
</noscript>
<br/>
<b>
rongyi
@@ -493,11 +571,22 @@
이 책은 오픈 소스 커뮤니티의 200명이 넘는 기여자가 함께 노력한 덕분에 꾸준히 발전하고 있다. 시간과 노력을 들여 준 모든 분께 감사드린다!
</p>
<a href="https://github.com/krahets/hello-algo/graphs/contributors">
<img alt="기여자" loading="lazy" src="https://contrib.rocks/image?repo=krahets/hello-algo&amp;max=300&amp;columns=12" style="width: 100%; max-width: 38.5em;"/>
<img alt="기여자" data-home-src="https://contrib.rocks/image?repo=krahets/hello-algo&amp;max=300&amp;columns=12" decoding="async" style="width: 100%; max-width: 38.5em;"/>
<noscript>
<img alt="기여자" loading="lazy" src="https://contrib.rocks/image?repo=krahets/hello-algo&amp;max=300&amp;columns=12" style="width: 100%; max-width: 38.5em;"/>
</noscript>
</a>
</div>
</div>
</section>
<!-- This independent fallback also works when the deferred loader cannot be fetched. -->
<script defer="" onerror="document.querySelectorAll('[data-home-src], [data-home-poster]').forEach(function(el) { if (el.dataset.homeSrc) el.src = el.dataset.homeSrc; if (el.dataset.homePoster) el.poster = el.dataset.homePoster; });" src="../assets/home/ad8bb1cc4c28091c/javascripts/homepage-media.js">
<script defer="" onerror="document.querySelectorAll('[data-home-src], [data-home-poster]').forEach(function(el) { if (el.dataset.homeSrc) el.src = el.dataset.homeSrc; if (el.dataset.homePoster) el.poster = el.dataset.homePoster; });" src="../assets/home/8e54cf1d70453241/javascripts/homepage-media.js">
</script>
<script>
// If the scene entry point itself fails, still provide chapter illustrations.
addEventListener('load', function () {
if (!window.Starfield) document.querySelectorAll('[data-hero-fallback]').forEach(function (image) {
image.src = image.dataset.heroFallback;
});
}, {once: true});
</script>
+15 -4
View File
@@ -1,13 +1,14 @@
{% import 'icons.html.j2' as icons %}
<!-- Generated from the shared homepage template and locale configuration. -->
<link rel="stylesheet" href="{{ runtime('hero-motion.css') }}">
<noscript><style>[data-home-src], video[data-home-poster] { display: none; }</style></noscript>
<noscript><style>[data-home-src], video[data-home-poster], [data-hero-fallback] { display: none; }</style></noscript>
<section data-md-color-scheme="slate" data-md-color-primary="grey" class="home-div home-universe-bg">
<div class="starfield"><div class="starfield-origin"></div></div>
<div class="{{ locale.hero_class }}" data-home-layout="{{ 'list' if locale.list_layout else 'universe' }}">
{% for object in objects %}
{% if object.href %}<a href="{{ object.href }}">{% endif %}
<img {{ hero_image(object.id)|safe }} alt="" style="{{ object.style }}">
<img {{ hero_image(object.id)|safe }} alt="" style="{{ object.style }}; aspect-ratio: {{ assets[object.id].width }} / {{ assets[object.id].height }}">
{% if object.id.startswith('chapter_') %}<noscript><img {{ image(object.id)|safe }} alt="" style="{{ object.style }}"></noscript>{% endif %}
{% if object.href %}<span style="{{ locale.label_styles[object.id] }}">{{ locale.labels[object.id] }}</span></a>{% endif %}
{% endfor %}
</div>
@@ -77,15 +78,25 @@
{% for person in group.profiles %}
<div class="{{ person.class }}">
{% if person.href %}<a href="{{ person.href }}">{% endif %}
<img class="profile-img" {{ image(person.asset)|safe }} alt="{{ person.alt }}" loading="lazy">
<img class="profile-img" {{ image(person.asset, true)|safe }} alt="{{ person.alt }}" decoding="async">
<noscript><img class="profile-img" {{ image(person.asset)|safe }} alt="{{ person.alt }}" loading="lazy"></noscript>
<br><b>{{ person.name }}</b>{% if person.detail %}<br><sub>{{ person.detail }}</sub>{% endif %}
{% if person.href %}</a>{% endif %}
</div>
{% endfor %}
</div>{% else %}<a href="{{ group.banner.href }}"><img src="{{ group.banner.url }}" alt="{{ group.banner.alt }}" style="{{ group.banner.style }}" loading="lazy"></a>{% endif %}
</div>{% else %}<a href="{{ group.banner.href }}"><img data-home-src="{{ group.banner.url }}" alt="{{ group.banner.alt }}" style="{{ group.banner.style }}" decoding="async"><noscript><img src="{{ group.banner.url }}" alt="{{ group.banner.alt }}" style="{{ group.banner.style }}" loading="lazy"></noscript></a>{% endif %}
</div>
{% endfor %}
</div>
</section>
<!-- This independent fallback also works when the deferred loader cannot be fetched. -->
<script src="{{ runtime('homepage-media.js') }}" defer onerror="document.querySelectorAll('[data-home-src], [data-home-poster]').forEach(function(el) { if (el.dataset.homeSrc) el.src = el.dataset.homeSrc; if (el.dataset.homePoster) el.poster = el.dataset.homePoster; });"></script>
<script>
// If the scene entry point itself fails, still provide chapter illustrations.
addEventListener('load', function () {
if (!window.Starfield) document.querySelectorAll('[data-hero-fallback]').forEach(function (image) {
image.src = image.dataset.heroFallback;
});
}, {once: true});
</script>
+11 -9
View File
@@ -2,7 +2,7 @@ import * as THREE from "./vendor/three/three.module.min.js";
import { planets, createPlanet, loadPlanetPaint, disposePlanetPaint } from "./hero-surfaces.js";
// The illustration supplies composition; each globe is independently lit and rotates fully.
export function createPlanets(map, items, onRestore) {
export function createPlanets(map, items, onRestore, restoreImage = () => {}) {
const targets=planets.map(d=>({...d,item:items.find(i=>i.image.dataset.heroAsset === 'chapter_'+d.name)})).filter(d=>d.item);
const hero=map.closest('.home-div');
const renderer=new THREE.WebGLRenderer({alpha:true,antialias:true,powerPreference:'low-power'});
@@ -12,8 +12,9 @@ export function createPlanets(map, items, onRestore) {
const scene=new THREE.Scene(),camera=new THREE.OrthographicCamera(-1,1,1,-1,.1,5000);
camera.position.z=2000;
map.insertBefore(renderer.domElement,map.querySelector(':scope > a'));
let width=0,height=0,lost=false,disposed=false,ready=false,lastTime=0;
const showOriginal=show=>{
let width=0,height=0,lost=false,disposed=false,ready=false,lastTime=0,startTime=null;
const showOriginal=(show,load=false)=>{
if(load)targets.forEach(({item})=>restoreImage(item.image));
renderer.domElement.hidden=show;hero.classList.toggle('hero-three-active',!show);
targets.forEach(({item})=>item.image.classList.toggle('hero-replaced',!show));
};
@@ -27,14 +28,15 @@ export function createPlanets(map, items, onRestore) {
}
function render(time,enabled,pointer={x:0,y:0}){
if(disposed)return;
if(!enabled||lost||!ready||!width||!height){showOriginal(true);return;}
if(!enabled||lost||!ready||!width||!height){showOriginal(true,!enabled||lost);return;}
if(startTime===null)startTime=time;
const emphasisBlend=time===lastTime?1:1-Math.exp(-Math.min(.1,Math.abs(time-lastTime))*10);lastTime=time;
for(const target of targets){
const {item,rect,root,sphere,material}=target,selected=item.anchor.classList.contains('hero-selected');
root.scale.setScalar(rect.height/Number(item.image.dataset.sourceHeight || item.image.naturalHeight));
root.position.set(rect.x+rect.width/2+item.x-width/2,height/2-rect.y-rect.height/2-item.y,0);
root.rotation.set(pointer.y*.035,pointer.x*.045,-item.angle*Math.PI/180);
sphere.rotation.y=time*Math.PI*2/target.period;
sphere.rotation.y=(time-startTime)*Math.PI*2/target.period;
if(target.moon)target.moon.rotation.y=sphere.rotation.y*2;
material.uniforms.emphasis.value+=((selected?1:0)-material.uniforms.emphasis.value)*emphasisBlend;
}
@@ -42,18 +44,18 @@ export function createPlanets(map, items, onRestore) {
Object.assign(renderer.domElement.dataset,{drawCalls:String(renderer.info.render.calls),triangles:String(renderer.info.render.triangles),
art:'reference-authored-albedo',network:'original-brushwork',rotation:'continuous-360'});
}
const onLost=event=>{event.preventDefault();lost=true;showOriginal(true);};
const onLost=event=>{event.preventDefault();lost=true;showOriginal(true,true);};
const onRestored=()=>{lost=false;resize();onRestore();};
renderer.domElement.addEventListener('webglcontextlost',onLost);renderer.domElement.addEventListener('webglcontextrestored',onRestored);
showOriginal(true);resize();
const readyPromise=Promise.allSettled(targets.map(async t=>{await t.item.image.decode();const map=await loadPlanetPaint(t);if(disposed){disposePlanetPaint(map);return;}t.paintMap=map;})).then(results=>{
const readyPromise=Promise.allSettled(targets.map(async t=>{const map=await loadPlanetPaint(t);if(disposed){disposePlanetPaint(map);return;}t.paintMap=map;})).then(results=>{
const failure=results.find(r=>r.status==='rejected');if(failure)throw failure.reason;
if(disposed)return;
for(const target of targets){Object.assign(target,createPlanet(target.item.image,target,target.paintMap));scene.add(target.root);}
ready=true;resize();onRestore();
}).catch(error=>{if(!disposed){targets.forEach(t=>{disposePlanetPaint(t.paintMap);t.paintMap=null;});showOriginal(true);console.warn('Original planets retained: paint unavailable.',error);}});
}).catch(error=>{if(!disposed){targets.forEach(t=>{disposePlanetPaint(t.paintMap);t.paintMap=null;});showOriginal(true,true);console.warn('Original planets retained: paint unavailable.',error);}});
return {resize,render,ready:readyPromise,dispose(){
disposed=true;showOriginal(true);
disposed=true;showOriginal(true,true);
renderer.domElement.removeEventListener('webglcontextlost',onLost);renderer.domElement.removeEventListener('webglcontextrestored',onRestored);
const geometries=new Set(),materials=new Set();scene.traverse(o=>{if(o.geometry)geometries.add(o.geometry);if(o.material)materials.add(o.material);});
geometries.forEach(g=>g.dispose());materials.forEach(m=>m.dispose());targets.forEach(t=>disposePlanetPaint(t.paintMap));renderer.dispose();renderer.forceContextLoss();renderer.domElement.remove();
+74 -7
View File
@@ -1,16 +1,36 @@
/* Below-fold demos load near the viewport and never animate in reduced motion. */
/* Load the first view first, then prepare below-fold media without requiring scroll. */
(() => {
const reduced = matchMedia('(prefers-reduced-motion: reduce)');
let observer;
const videos = [...document.querySelectorAll('[data-home-video]')];
const images = [...document.querySelectorAll('[data-home-src]')];
const visible = new Set();
let observer, preloadTask = null;
// A broken or stalled resource must not block everything below it.
function settled(element, events, start, timeout = 10000) {
return new Promise(resolve => {
const finish = () => {
clearTimeout(timer);
events.forEach(event => element.removeEventListener(event, finish));
resolve();
};
const timer = setTimeout(finish, timeout);
events.forEach(event => element.addEventListener(event, finish));
start();
if (element instanceof HTMLImageElement && element.complete) finish();
if (element instanceof HTMLVideoElement && element.readyState >= 4) finish();
});
}
function reveal(element) {
if (element.dataset.homeSrc && !element.getAttribute('src')) element.src = element.dataset.homeSrc;
if (element.dataset.homeSrc && !element.getAttribute('src')) {
element.loading = 'eager';
element.src = element.dataset.homeSrc;
}
if (element.dataset.homePoster && !element.getAttribute('poster')) element.poster = element.dataset.homePoster;
}
function load(video) {
if (!video.getAttribute('src')) {
video.preload = 'auto';
video.src = video.dataset.homeVideo;
video.load();
}
@@ -18,12 +38,52 @@
function update() {
for (const video of videos) {
if (document.hidden || reduced.matches || !visible.has(video)) video.pause();
else { load(video); video.play().catch(() => {}); }
else { reveal(video); load(video); video.play().catch(() => {}); }
}
}
async function foreground() {
if (!document.hidden) return;
await new Promise(resolve => {
const resume = () => {
if (document.hidden) return;
document.removeEventListener('visibilitychange', resume);
resolve();
};
document.addEventListener('visibilitychange', resume);
});
}
function preload() {
if (!preloadTask) preloadTask = prepare().finally(() => { preloadTask = null; });
return preloadTask;
}
async function prepare() {
const heroReady = document.querySelector('.home-universe-bg')?.homeReady;
// Covers missing scene scripts or a stalled texture without holding the page forever.
await new Promise(resolve => {
const timer = setTimeout(resolve, 10000);
Promise.resolve(heroReady).then(() => { clearTimeout(timer); resolve(); });
});
// Still images in document order first, so videos cannot delay portraits and covers.
for (const element of document.querySelectorAll('[data-home-src], [data-home-poster]')) {
await foreground();
if (element.dataset.homePoster) {
const poster = new Image();
await settled(poster, ['load', 'error'], () => { reveal(element); poster.src = element.dataset.homePoster; });
} else {
await settled(element, ['load', 'error'], () => reveal(element));
}
}
for (const video of videos) {
await foreground();
if (reduced.matches) continue;
// preload is a browser hint; it may limit buffering on constrained connections.
await settled(video, ['canplaythrough', 'error'], () => load(video));
}
}
function start() {
observer?.disconnect();
if (!('IntersectionObserver' in window)) { [...images, ...videos].forEach(reveal); return; }
if (!('IntersectionObserver' in window)) return;
// Scrolling ahead bypasses the background queue; playback requires actual visibility.
observer = new IntersectionObserver(entries => {
for (const entry of entries) {
const element = entry.target;
@@ -33,12 +93,19 @@
} else if (entry.isIntersecting) observer.unobserve(element);
}
update();
}, {rootMargin: '120px 0px'});
});
[...images, ...videos].forEach(element => observer.observe(element));
}
document.addEventListener('visibilitychange', update);
reduced.addEventListener('change', update);
reduced.addEventListener('change', () => {
update();
if (!reduced.matches) (preloadTask || Promise.resolve()).then(() => {
if (!reduced.matches) preload();
});
});
addEventListener('pagehide', () => {observer?.disconnect();visible.clear();update();});
addEventListener('pageshow', start);
if (document.readyState === 'complete') preload();
else addEventListener('load', preload, {once: true});
start();
})();
+31 -7
View File
@@ -3,6 +3,9 @@
"use strict";
let dispose = () => {};
const restoreImage = image => {
if (image?.dataset.heroFallback && !image.getAttribute('src')) image.src = image.dataset.heroFallback;
};
const moduleBase = new URL(".", document.currentScript.src);
function setup(config = {}) {
@@ -11,6 +14,9 @@
const hero = container?.closest(".home-div");
const map = hero?.querySelector(".hero-div");
if (!map) return;
// Below-fold preloading waits for the enhancement (or its static fallback).
let settleReady;
hero.homeReady = new Promise(resolve => { settleReady = resolve; });
const reduced = matchMedia("(prefers-reduced-motion: reduce)");
const finePointer = matchMedia("(hover: hover) and (pointer: fine)");
@@ -74,11 +80,13 @@
function renderObjects() {
const enabled = !reduced.matches && !listLayout();
if (!enabled) items.forEach(item => restoreImage(item.image));
if (planets) {
try { planets.render(time, enabled, pointer); }
catch (error) {
planets.dispose();
planets = null;
items.filter(item => item.image.dataset.heroAsset !== 'chapter_computational_complexity').forEach(item => restoreImage(item.image));
console.warn("Planet rendering unavailable; keeping the original illustrations.", error);
}
}
@@ -88,18 +96,25 @@
function loadObjects() {
if (objectsRequested || destroyed || !visible || reduced.matches || listLayout()) return;
objectsRequested = true;
import(new URL("hero-planets.js", moduleBase).href).then(module => {
const planetReady = import(new URL("hero-planets.js", moduleBase).href).then(module => {
if (destroyed) return;
planets = module.createPlanets(map, items, updatePlayback);
planets = module.createPlanets(map, items, updatePlayback, restoreImage);
renderObjects();
resize();
}).catch(error => console.warn("3D enhancement unavailable; keeping the original planets.", error));
import(new URL("hero-hourglass.js", moduleBase).href).then(module => {
return planets.ready;
}).catch(error => {
items.filter(item => item.image.dataset.heroAsset !== 'chapter_computational_complexity').forEach(item => restoreImage(item.image));
console.warn("3D enhancement unavailable; loading fallback planets.", error);
});
const hourglassReady = import(new URL("hero-hourglass.js", moduleBase).href).then(module => {
if (destroyed) return;
hourglass = module.createHourglass(items);
renderObjects();
}).catch(error => console.warn("Hourglass enhancement unavailable; keeping the original illustration.", error));
}).catch(error => {
restoreImage(items.find(item => item.image.dataset.heroAsset === 'chapter_computational_complexity')?.image);
console.warn("Hourglass enhancement unavailable; loading fallback illustration.", error);
});
Promise.allSettled([planetReady, hourglassReady]).then(settleReady);
}
function drawStars() {
@@ -287,11 +302,13 @@
const intersectionObserver = new IntersectionObserver(entries => {
visible = entries[0].isIntersecting;
updatePlayback();
if (!objectsRequested && (!visible || reduced.matches || listLayout())) settleReady();
});
intersectionObserver.observe(hero);
dispose = () => {
destroyed = true;
settleReady();
cancelAnimationFrame(raf);
resizeObserver.disconnect();
intersectionObserver.disconnect();
@@ -317,5 +334,12 @@
}
// Retain the build hook's entry point; all motion shares one cancellable loop.
root.Starfield = { setup, cleanup: () => dispose() };
root.Starfield = { setup: config => {
try { setup(config); }
catch (error) {
dispose();
document.querySelectorAll('[data-hero-fallback]').forEach(restoreImage);
console.warn('Scene unavailable; loading fallback illustrations.', error);
}
}, cleanup: () => dispose() };
})(window);
+7 -1
View File
@@ -178,12 +178,17 @@
}
}
/* The PNG boxes remain the native link hit targets and responsive layout anchors. */
/* Metadata-only boxes reserve layout and native hit targets without downloading fallback art. */
.hero-div > a > noscript > img { width: auto; position: absolute; }
.hero-div img[data-hero-fallback]:not([src]) { opacity: 0 !important; }
@keyframes hero-object-reveal { from { opacity: 0; } to { opacity: 1; } }
.hero-universe .hero-div > a > img.hero-replaced {
opacity: 0;
}
.hero-universe .hero-objects-canvas {
animation: hero-object-reveal 400ms ease-out both;
position: absolute;
inset: 0;
width: 100%;
@@ -240,6 +245,7 @@
.home-div > :is(.hero-div--en, .hero-div--ru, .hero-div--ja) { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .35rem .5rem; width: calc(100% - 1.5rem); height: auto; margin: .5rem auto 1rem; }
.home-div > :is(.hero-div--en, .hero-div--ru, .hero-div--ja) > img { display: none; }
.home-div > :is(.hero-div--en, .hero-div--ru, .hero-div--ja) > a { display: flex; align-items: center; gap: .4rem; min-width: 0; min-height: 48px; padding: .3rem .15rem; text-align: left; }
.home-div > :is(.hero-div--en, .hero-div--ru, .hero-div--ja) > a > noscript > img,
.home-div > :is(.hero-div--en, .hero-div--ru, .hero-div--ja) > a > img { position: static; flex-shrink: 0; width: 32px !important; height: 32px !important; object-fit: contain; }
.home-div > :is(.hero-div--en, .hero-div--ru, .hero-div--ja) > a > span { position: static; min-width: 0; transform: none; white-space: normal; font-size: 13px; line-height: 1.3; }
.home-div > :is(.hero-div--en, .hero-div--ru, .hero-div--ja) + .heading-div { position: relative; left: auto; bottom: auto; transform: none; padding: 0 .75rem; }
+143 -48
View File
@@ -1,8 +1,8 @@
<!-- Generated from the shared homepage template and locale configuration. -->
<link href="../assets/home/ad8bb1cc4c28091c/hero-motion.css" rel="stylesheet"/>
<link href="../assets/home/8e54cf1d70453241/hero-motion.css" rel="stylesheet"/>
<noscript>
<style>
[data-home-src], video[data-home-poster] { display: none; }
[data-home-src], video[data-home-poster], [data-hero-fallback] { display: none; }
</style>
</noscript>
<section class="home-div home-universe-bg" data-md-color-primary="grey" data-md-color-scheme="slate">
@@ -11,88 +11,127 @@
</div>
</div>
<div class="hero-div hero-div--ru" data-home-layout="list">
<img alt="" data-hero-asset="ground" data-source-height="380" data-source-width="881" height="380" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/567306c070a6a7e2/ground.webp" style="position: absolute; width: auto; height: 26.445%; left: 28.211%; top: 54.145%;" width="881"/>
<img alt="" data-hero-asset="links" data-source-height="1134" data-source-width="1562" height="1134" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/3e50f38a325c1cb5/links.webp" style="position: absolute; width: auto; height: 78.751%; left: 10.545%; top: 7.326%;" width="1562"/>
<img alt="" data-hero-asset="ground" data-source-height="380" data-source-width="881" height="380" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/567306c070a6a7e2/ground.webp" style="position: absolute; width: auto; height: 26.445%; left: 28.211%; top: 54.145%;; aspect-ratio: 881 / 380" width="881"/>
<img alt="" data-hero-asset="links" data-source-height="1134" data-source-width="1562" height="1134" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/3e50f38a325c1cb5/links.webp" style="position: absolute; width: auto; height: 78.751%; left: 10.545%; top: 7.326%;; aspect-ratio: 1562 / 1134" width="1562"/>
<a href="chapter_introduction/">
<img alt="" data-hero-asset="astronaut" data-source-height="672" data-source-width="515" height="672" src="../assets/home/ad8bb1cc4c28091c/../shared/images/8e5eb3b3e3ebd9f7/astronaut.webp" style="height: 46.673%; left: 35.413%; top: 24.343%;" width="515"/>
<img alt="" data-hero-asset="astronaut" data-source-height="672" data-source-width="515" height="672" src="../assets/home/8e54cf1d70453241/../shared/images/8e5eb3b3e3ebd9f7/astronaut.webp" style="height: 46.673%; left: 35.413%; top: 24.343%;; aspect-ratio: 515 / 672" width="515"/>
<span style="left: 49.244%; top: 22.2%;">
Первое знакомство с алгоритмами
</span>
</a>
<a href="chapter_computational_complexity/">
<img alt="" data-hero-asset="chapter_computational_complexity" data-source-height="178" data-source-width="113" height="178" src="../assets/home/ad8bb1cc4c28091c/../shared/images/2fb425426d1f8d86/chapter_computational_complexity.webp" style="height: 12.347%; left: 36.267%; top: 37.653%;" width="113"/>
<img alt="" data-hero-asset="chapter_computational_complexity" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/2fb425426d1f8d86/chapter_computational_complexity.webp" data-source-height="178" data-source-width="113" height="178" style="height: 12.347%; left: 36.267%; top: 37.653%;; aspect-ratio: 113 / 178" width="113"/>
<noscript>
<img alt="" height="178" src="../assets/home/8e54cf1d70453241/../shared/images/2fb425426d1f8d86/chapter_computational_complexity.webp" style="height: 12.347%; left: 36.267%; top: 37.653%;" width="113"/>
</noscript>
<span style="left: 34.244%; top: 33.919%;">
Сложность
</span>
</a>
<a href="chapter_array_and_linkedlist/">
<img alt="" data-hero-asset="chapter_array_and_linkedlist" data-source-height="319" data-source-width="468" height="319" src="../assets/home/ad8bb1cc4c28091c/../shared/images/5cbbdf7be555d3ef/chapter_array_and_linkedlist.webp" style="height: 22.242%; left: 73.242%; top: 52.481%;" width="468"/>
<img alt="" data-hero-asset="chapter_array_and_linkedlist" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/5cbbdf7be555d3ef/chapter_array_and_linkedlist.webp" data-source-height="319" data-source-width="468" height="319" style="height: 22.242%; left: 73.242%; top: 52.481%;; aspect-ratio: 468 / 319" width="468"/>
<noscript>
<img alt="" height="319" src="../assets/home/8e54cf1d70453241/../shared/images/5cbbdf7be555d3ef/chapter_array_and_linkedlist.webp" style="height: 22.242%; left: 73.242%; top: 52.481%;" width="468"/>
</noscript>
<span style="left: 83.897%; top: 76.259%;">
Массивы и списки
</span>
</a>
<a href="chapter_stack_and_queue/">
<img alt="" data-hero-asset="chapter_stack_and_queue" data-source-height="204" data-source-width="204" height="204" src="../assets/home/ad8bb1cc4c28091c/../shared/images/e2667767cf7481bd/chapter_stack_and_queue.webp" style="height: 14.302%; left: 62.646%; top: 77.875%;" width="204"/>
<img alt="" data-hero-asset="chapter_stack_and_queue" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/e2667767cf7481bd/chapter_stack_and_queue.webp" data-source-height="204" data-source-width="204" height="204" style="height: 14.302%; left: 62.646%; top: 77.875%;; aspect-ratio: 204 / 204" width="204"/>
<noscript>
<img alt="" height="204" src="../assets/home/8e54cf1d70453241/../shared/images/e2667767cf7481bd/chapter_stack_and_queue.webp" style="height: 14.302%; left: 62.646%; top: 77.875%;" width="204"/>
</noscript>
<span style="left: 77.571%; top: 91.25%;">
Стеки и очереди
</span>
</a>
<a href="chapter_hashing/">
<img alt="" data-hero-asset="chapter_hashing" data-source-height="218" data-source-width="218" height="218" src="../assets/home/ad8bb1cc4c28091c/../shared/images/b108d70a537714cb/chapter_hashing.webp" style="height: 15.266%; left: 63.281%; top: 27.933%;" width="218"/>
<img alt="" data-hero-asset="chapter_hashing" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/b108d70a537714cb/chapter_hashing.webp" data-source-height="218" data-source-width="218" height="218" style="height: 15.266%; left: 63.281%; top: 27.933%;; aspect-ratio: 218 / 218" width="218"/>
<noscript>
<img alt="" height="218" src="../assets/home/8e54cf1d70453241/../shared/images/b108d70a537714cb/chapter_hashing.webp" style="height: 15.266%; left: 63.281%; top: 27.933%;" width="218"/>
</noscript>
<span style="left: 68.862%; top: 46.292%;">
Хеш-таблицы
</span>
</a>
<a href="chapter_tree/">
<img alt="" data-hero-asset="chapter_tree" data-source-height="281" data-source-width="280" height="281" src="../assets/home/ad8bb1cc4c28091c/../shared/images/8138bb0acecedec4/chapter_tree.webp" style="height: 19.615%; left: 80.137%; top: 26.678%;" width="280"/>
<img alt="" data-hero-asset="chapter_tree" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/8138bb0acecedec4/chapter_tree.webp" data-source-height="281" data-source-width="280" height="281" style="height: 19.615%; left: 80.137%; top: 26.678%;; aspect-ratio: 280 / 281" width="280"/>
<noscript>
<img alt="" height="281" src="../assets/home/8e54cf1d70453241/../shared/images/8138bb0acecedec4/chapter_tree.webp" style="height: 19.615%; left: 80.137%; top: 26.678%;" width="280"/>
</noscript>
<span style="left: 96.159%; top: 44.8%;">
Деревья
</span>
</a>
<a href="chapter_heap/">
<img alt="" data-hero-asset="chapter_heap" data-source-height="152" data-source-width="151" height="152" src="../assets/home/ad8bb1cc4c28091c/../shared/images/7586281e6691807a/chapter_heap.webp" style="height: 10.566%; left: 77.226%; top: 11.559%;" width="151"/>
<img alt="" data-hero-asset="chapter_heap" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/7586281e6691807a/chapter_heap.webp" data-source-height="152" data-source-width="151" height="152" style="height: 10.566%; left: 77.226%; top: 11.559%;; aspect-ratio: 151 / 152" width="151"/>
<noscript>
<img alt="" height="152" src="../assets/home/8e54cf1d70453241/../shared/images/7586281e6691807a/chapter_heap.webp" style="height: 10.566%; left: 77.226%; top: 11.559%;" width="151"/>
</noscript>
<span style="left: 88.103%; top: 15.422%;">
Кучи
</span>
</a>
<a href="chapter_graph/">
<img alt="" data-hero-asset="chapter_graph" data-source-height="272" data-source-width="542" height="272" src="../assets/home/ad8bb1cc4c28091c/../shared/images/175a7f2e7c3cf5f0/chapter_graph.webp" style="height: 16.112%; left: 51.854%; top: 5.575%;" width="542"/>
<img alt="" data-hero-asset="chapter_graph" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/175a7f2e7c3cf5f0/chapter_graph.webp" data-source-height="272" data-source-width="542" height="272" style="height: 16.112%; left: 51.854%; top: 5.575%;; aspect-ratio: 542 / 272" width="542"/>
<noscript>
<img alt="" height="272" src="../assets/home/8e54cf1d70453241/../shared/images/175a7f2e7c3cf5f0/chapter_graph.webp" style="height: 16.112%; left: 51.854%; top: 5.575%;" width="542"/>
</noscript>
<span style="left: 71.195%; top: 6.503%;">
Графы
</span>
</a>
<a href="chapter_searching/">
<img alt="" data-hero-asset="chapter_searching" data-source-height="216" data-source-width="216" height="216" src="../assets/home/ad8bb1cc4c28091c/../shared/images/ebfe2b953dbb9d90/chapter_searching.webp" style="height: 15.149%; left: 18.185%; top: 16.404%;" width="216"/>
<img alt="" data-hero-asset="chapter_searching" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/ebfe2b953dbb9d90/chapter_searching.webp" data-source-height="216" data-source-width="216" height="216" style="height: 15.149%; left: 18.185%; top: 16.404%;; aspect-ratio: 216 / 216" width="216"/>
<noscript>
<img alt="" height="216" src="../assets/home/8e54cf1d70453241/../shared/images/ebfe2b953dbb9d90/chapter_searching.webp" style="height: 15.149%; left: 18.185%; top: 16.404%;" width="216"/>
</noscript>
<span style="left: 14.556%; top: 20.876%;">
Поиск
</span>
</a>
<a href="chapter_sorting/">
<img alt="" data-hero-asset="chapter_sorting" data-source-height="137" data-source-width="138" height="137" src="../assets/home/ad8bb1cc4c28091c/../shared/images/9d4be68b2680967c/chapter_sorting.webp" style="height: 9.574%; left: 25.409%; top: 40.747%;" width="138"/>
<img alt="" data-hero-asset="chapter_sorting" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/9d4be68b2680967c/chapter_sorting.webp" data-source-height="137" data-source-width="138" height="137" style="height: 9.574%; left: 25.409%; top: 40.747%;; aspect-ratio: 138 / 137" width="138"/>
<noscript>
<img alt="" height="137" src="../assets/home/8e54cf1d70453241/../shared/images/9d4be68b2680967c/chapter_sorting.webp" style="height: 9.574%; left: 25.409%; top: 40.747%;" width="138"/>
</noscript>
<span style="left: 28.805%; top: 53.808%;">
Сортировка
</span>
</a>
<a href="chapter_divide_and_conquer/">
<img alt="" data-hero-asset="chapter_divide_and_conquer" data-source-height="269" data-source-width="407" height="269" src="../assets/home/ad8bb1cc4c28091c/../shared/images/6f5766ca9385cd2e/chapter_divide_and_conquer.webp" style="height: 18.681%; left: 32.721%; top: 4.816%;" width="407"/>
<img alt="" data-hero-asset="chapter_divide_and_conquer" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/6f5766ca9385cd2e/chapter_divide_and_conquer.webp" data-source-height="269" data-source-width="407" height="269" style="height: 18.681%; left: 32.721%; top: 4.816%;; aspect-ratio: 407 / 269" width="407"/>
<noscript>
<img alt="" height="269" src="../assets/home/8e54cf1d70453241/../shared/images/6f5766ca9385cd2e/chapter_divide_and_conquer.webp" style="height: 18.681%; left: 32.721%; top: 4.816%;" width="407"/>
</noscript>
<span style="left: 28.42%; top: 8.679%;">
Разделяй и властвуй
</span>
</a>
<a href="chapter_backtracking/">
<img alt="" data-hero-asset="chapter_backtracking" data-source-height="249" data-source-width="345" height="249" src="../assets/home/ad8bb1cc4c28091c/../shared/images/176675e685febf11/chapter_backtracking.webp" style="height: 17.338%; left: 4.875%; top: 32.925%;" width="345"/>
<img alt="" data-hero-asset="chapter_backtracking" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/176675e685febf11/chapter_backtracking.webp" data-source-height="249" data-source-width="345" height="249" style="height: 17.338%; left: 4.875%; top: 32.925%;; aspect-ratio: 345 / 249" width="345"/>
<noscript>
<img alt="" height="249" src="../assets/home/8e54cf1d70453241/../shared/images/176675e685febf11/chapter_backtracking.webp" style="height: 17.338%; left: 4.875%; top: 32.925%;" width="345"/>
</noscript>
<span style="left: 4.742%; top: 50.113%;">
Поиск с возвратом
</span>
</a>
<a href="chapter_dynamic_programming/">
<img alt="" data-hero-asset="chapter_dynamic_programming" data-source-height="268" data-source-width="267" height="268" src="../assets/home/ad8bb1cc4c28091c/../shared/images/06264b1ffd05b08e/chapter_dynamic_programming.webp" style="height: 15.47%; left: 9.406%; top: 57.472%;" width="267"/>
<img alt="" data-hero-asset="chapter_dynamic_programming" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/06264b1ffd05b08e/chapter_dynamic_programming.webp" data-source-height="268" data-source-width="267" height="268" style="height: 15.47%; left: 9.406%; top: 57.472%;; aspect-ratio: 267 / 268" width="267"/>
<noscript>
<img alt="" height="268" src="../assets/home/8e54cf1d70453241/../shared/images/06264b1ffd05b08e/chapter_dynamic_programming.webp" style="height: 15.47%; left: 9.406%; top: 57.472%;" width="267"/>
</noscript>
<span style="left: 6.561%; top: 75.351%;">
Динамическое программирование
</span>
</a>
<a href="chapter_greedy/">
<img alt="" data-hero-asset="chapter_greedy" data-source-height="202" data-source-width="265" height="202" src="../assets/home/ad8bb1cc4c28091c/../shared/images/2ce6caaac951c40b/chapter_greedy.webp" style="height: 14.127%; left: 23.132%; top: 75.803%;" width="265"/>
<img alt="" data-hero-asset="chapter_greedy" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/2ce6caaac951c40b/chapter_greedy.webp" data-source-height="202" data-source-width="265" height="202" style="height: 14.127%; left: 23.132%; top: 75.803%;; aspect-ratio: 265 / 202" width="265"/>
<noscript>
<img alt="" height="202" src="../assets/home/8e54cf1d70453241/../shared/images/2ce6caaac951c40b/chapter_greedy.webp" style="height: 14.127%; left: 23.132%; top: 75.803%;" width="265"/>
</noscript>
<span style="left: 20.619%; top: 86.85%;">
Жадные алгоритмы
</span>
@@ -139,9 +178,9 @@
<a href="chapter_hello_algo/">
<div style="height: 4.34%;">
</div>
<img alt="" class="device-on-hover" data-home-src="../assets/home/ad8bb1cc4c28091c/../shared/images/5b64cf7672ec5ec6/web_mac_iphone.webp" decoding="async" height="965" style="height: 66.31%;" width="1598"/>
<img alt="" class="device-on-hover" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/5b64cf7672ec5ec6/web_mac_iphone.webp" decoding="async" height="965" style="height: 66.31%;" width="1598"/>
<noscript>
<img alt="" class="device-on-hover" height="965" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/5b64cf7672ec5ec6/web_mac_iphone.webp" style="height: 66.31%;" width="1598"/>
<img alt="" class="device-on-hover" height="965" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/5b64cf7672ec5ec6/web_mac_iphone.webp" style="height: 66.31%;" width="1598"/>
</noscript>
<div style="height: 4.34%;">
</div>
@@ -158,9 +197,9 @@
</div>
<div class="media-block">
<a href="https://github.com/krahets/hello-algo/releases">
<img alt="" class="device-on-hover" data-home-src="../assets/home/ad8bb1cc4c28091c/../shared/images/66baa2f9bf3abec7/pdf_ipad.webp" decoding="async" height="960" style="height: 75%;" width="812"/>
<img alt="" class="device-on-hover" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/66baa2f9bf3abec7/pdf_ipad.webp" decoding="async" height="960" style="height: 75%;" width="812"/>
<noscript>
<img alt="" class="device-on-hover" height="960" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/66baa2f9bf3abec7/pdf_ipad.webp" style="height: 75%;" width="812"/>
<img alt="" class="device-on-hover" height="960" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/66baa2f9bf3abec7/pdf_ipad.webp" style="height: 75%;" width="812"/>
</noscript>
<div class="text-button">
<span>
@@ -228,21 +267,21 @@
</p>
</div>
</div>
<video aria-label="Animation example" class="intro-image" data-home-poster="../assets/home/ad8bb1cc4c28091c/../shared/images/9e5f39bf33afc70f/animation-poster.webp" data-home-video="../assets/home/ad8bb1cc4c28091c/../shared/media/6c70de2b2bf4eef7/animation.mp4" height="1080" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1600 / 1080" width="1600">
<video aria-label="Animation example" class="intro-image" data-home-poster="../assets/home/8e54cf1d70453241/../shared/images/9e5f39bf33afc70f/animation-poster.webp" data-home-video="../assets/home/8e54cf1d70453241/../shared/media/6c70de2b2bf4eef7/animation.mp4" height="1080" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1600 / 1080" width="1600">
</video>
<noscript>
<a href="../assets/home/ad8bb1cc4c28091c/../shared/media/6c70de2b2bf4eef7/animation.mp4">
<img alt="Animation example" class="intro-image" height="1080" src="../assets/home/ad8bb1cc4c28091c/../shared/images/9e5f39bf33afc70f/animation-poster.webp" width="1600"/>
<a href="../assets/home/8e54cf1d70453241/../shared/media/6c70de2b2bf4eef7/animation.mp4">
<img alt="Animation example" class="intro-image" height="1080" src="../assets/home/8e54cf1d70453241/../shared/images/9e5f39bf33afc70f/animation-poster.webp" width="1600"/>
Анимированные схемы
</a>
</noscript>
</div>
<div class="intro-container">
<video aria-label="Running code example" class="intro-image" data-home-poster="../assets/home/ad8bb1cc4c28091c/../shared/images/f33a13e8331245ae/running_code-poster.webp" data-home-video="../assets/home/ad8bb1cc4c28091c/../shared/media/bb169a96ca8316da/running_code.mp4" height="1082" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1600 / 1082" width="1600">
<video aria-label="Running code example" class="intro-image" data-home-poster="../assets/home/8e54cf1d70453241/../shared/images/f33a13e8331245ae/running_code-poster.webp" data-home-video="../assets/home/8e54cf1d70453241/../shared/media/bb169a96ca8316da/running_code.mp4" height="1082" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1600 / 1082" width="1600">
</video>
<noscript>
<a href="../assets/home/ad8bb1cc4c28091c/../shared/media/bb169a96ca8316da/running_code.mp4">
<img alt="Running code example" class="intro-image" height="1082" src="../assets/home/ad8bb1cc4c28091c/../shared/images/f33a13e8331245ae/running_code-poster.webp" width="1600"/>
<a href="../assets/home/8e54cf1d70453241/../shared/media/bb169a96ca8316da/running_code.mp4">
<img alt="Running code example" class="intro-image" height="1082" src="../assets/home/8e54cf1d70453241/../shared/images/f33a13e8331245ae/running_code-poster.webp" width="1600"/>
Запуск в один клик
</a>
</noscript>
@@ -290,11 +329,11 @@
</p>
</div>
</div>
<video aria-label="Comments example" class="intro-image" data-home-poster="../assets/home/ad8bb1cc4c28091c/../shared/images/f9ac69536a7582f5/comment-poster.webp" data-home-video="../assets/home/ad8bb1cc4c28091c/../shared/media/62aa0b8d351c63a7/comment.mp4" height="1080" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1600 / 1080" width="1600">
<video aria-label="Comments example" class="intro-image" data-home-poster="../assets/home/8e54cf1d70453241/../shared/images/f9ac69536a7582f5/comment-poster.webp" data-home-video="../assets/home/8e54cf1d70453241/../shared/media/62aa0b8d351c63a7/comment.mp4" height="1080" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1600 / 1080" width="1600">
</video>
<noscript>
<a href="../assets/home/ad8bb1cc4c28091c/../shared/media/62aa0b8d351c63a7/comment.mp4">
<img alt="Comments example" class="intro-image" height="1080" src="../assets/home/ad8bb1cc4c28091c/../shared/images/f9ac69536a7582f5/comment-poster.webp" width="1600"/>
<a href="../assets/home/8e54cf1d70453241/../shared/media/62aa0b8d351c63a7/comment.mp4">
<img alt="Comments example" class="intro-image" height="1080" src="../assets/home/8e54cf1d70453241/../shared/images/f9ac69536a7582f5/comment-poster.webp" width="1600"/>
Учимся вместе
</a>
</noscript>
@@ -310,7 +349,10 @@
<div class="profile-div">
<div class="profile-cell">
<a href="https://github.com/krahets">
<img alt="Author: yudongjin" class="profile-img" height="512" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/02348410d40f7665/avatar_yudongjin.webp" width="512"/>
<img alt="Author: yudongjin" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/02348410d40f7665/avatar_yudongjin.webp" decoding="async" height="512" width="512"/>
<noscript>
<img alt="Author: yudongjin" class="profile-img" height="512" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/02348410d40f7665/avatar_yudongjin.webp" width="512"/>
</noscript>
<br/>
<b>
Yudong Jin (@krahets)
@@ -328,7 +370,10 @@
</p>
<div class="profile-div">
<div class="profile-cell translator-profile-cell">
<img alt="Translator: shevkun" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/91019a79d7ac4441/avatar_shevkun.webp" width="384"/>
<img alt="Translator: shevkun" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/91019a79d7ac4441/avatar_shevkun.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Translator: shevkun" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/91019a79d7ac4441/avatar_shevkun.webp" width="384"/>
</noscript>
<br/>
<b>
И. А. Шевкун
@@ -336,7 +381,10 @@
</div>
<div class="profile-cell translator-profile-cell">
<a href="https://github.com/veronicahuang2977">
<img alt="Translator: yuyanhuang" class="profile-img" height="512" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/f2c06730dacd8659/avatar_yuyanhuang.webp" width="512"/>
<img alt="Translator: yuyanhuang" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/f2c06730dacd8659/avatar_yuyanhuang.webp" decoding="async" height="512" width="512"/>
<noscript>
<img alt="Translator: yuyanhuang" class="profile-img" height="512" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/f2c06730dacd8659/avatar_yuyanhuang.webp" width="512"/>
</noscript>
<br/>
<b>
Yuyan Huang
@@ -355,7 +403,10 @@
<div class="profile-div">
<div class="profile-cell">
<a href="https://github.com/coderonion">
<img alt="Reviewer: coderonion" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/db606f27971eae34/avatar_coderonion.webp" width="384"/>
<img alt="Reviewer: coderonion" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/db606f27971eae34/avatar_coderonion.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: coderonion" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/db606f27971eae34/avatar_coderonion.webp" width="384"/>
</noscript>
<br/>
<b>
coderonion
@@ -368,7 +419,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/curtishd">
<img alt="Reviewer: curtishd" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/feedb0e547ea31fc/avatar_curtishd.webp" width="384"/>
<img alt="Reviewer: curtishd" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/feedb0e547ea31fc/avatar_curtishd.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: curtishd" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/feedb0e547ea31fc/avatar_curtishd.webp" width="384"/>
</noscript>
<br/>
<b>
curtishd
@@ -381,7 +435,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/Gonglja">
<img alt="Reviewer: Gonglja" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/cdcf023b032b8d30/avatar_Gonglja.webp" width="384"/>
<img alt="Reviewer: Gonglja" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/cdcf023b032b8d30/avatar_Gonglja.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: Gonglja" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/cdcf023b032b8d30/avatar_Gonglja.webp" width="384"/>
</noscript>
<br/>
<b>
Gonglja
@@ -394,7 +451,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/gvenusleo">
<img alt="Reviewer: gvenusleo" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/464e2d351b9263ec/avatar_gvenusleo.webp" width="384"/>
<img alt="Reviewer: gvenusleo" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/464e2d351b9263ec/avatar_gvenusleo.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: gvenusleo" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/464e2d351b9263ec/avatar_gvenusleo.webp" width="384"/>
</noscript>
<br/>
<b>
gvenusleo
@@ -407,7 +467,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/hpstory">
<img alt="Reviewer: hpstory" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/7b6478acdab6b845/avatar_hpstory.webp" width="384"/>
<img alt="Reviewer: hpstory" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/7b6478acdab6b845/avatar_hpstory.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: hpstory" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/7b6478acdab6b845/avatar_hpstory.webp" width="384"/>
</noscript>
<br/>
<b>
hpstory
@@ -420,7 +483,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/justin-tse">
<img alt="Reviewer: justin-tse" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/208ee5aae490eefa/avatar_justin-tse.webp" width="384"/>
<img alt="Reviewer: justin-tse" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/208ee5aae490eefa/avatar_justin-tse.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: justin-tse" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/208ee5aae490eefa/avatar_justin-tse.webp" width="384"/>
</noscript>
<br/>
<b>
justin-tse
@@ -433,7 +499,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/khoaxuantu">
<img alt="Reviewer: khoaxuantu" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/9d3f1a21ff51de78/avatar_khoaxuantu.webp" width="384"/>
<img alt="Reviewer: khoaxuantu" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/9d3f1a21ff51de78/avatar_khoaxuantu.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: khoaxuantu" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/9d3f1a21ff51de78/avatar_khoaxuantu.webp" width="384"/>
</noscript>
<br/>
<b>
khoaxuantu
@@ -446,7 +515,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/krahets">
<img alt="Reviewer: krahets" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/e321f9a3ac2739e0/avatar_krahets.webp" width="384"/>
<img alt="Reviewer: krahets" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/e321f9a3ac2739e0/avatar_krahets.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: krahets" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/e321f9a3ac2739e0/avatar_krahets.webp" width="384"/>
</noscript>
<br/>
<b>
krahets
@@ -459,7 +531,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/night-cruise">
<img alt="Reviewer: night-cruise" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/960b489efa22abd4/avatar_night-cruise.jpg" width="384"/>
<img alt="Reviewer: night-cruise" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/960b489efa22abd4/avatar_night-cruise.jpg" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: night-cruise" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/960b489efa22abd4/avatar_night-cruise.jpg" width="384"/>
</noscript>
<br/>
<b>
night-cruise
@@ -472,7 +547,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/nuomi1">
<img alt="Reviewer: nuomi1" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/7316a9eb4429b259/avatar_nuomi1.webp" width="384"/>
<img alt="Reviewer: nuomi1" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/7316a9eb4429b259/avatar_nuomi1.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: nuomi1" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/7316a9eb4429b259/avatar_nuomi1.webp" width="384"/>
</noscript>
<br/>
<b>
nuomi1
@@ -485,7 +563,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/Reanon">
<img alt="Reviewer: Reanon" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/dcc15aa68cc793c7/avatar_Reanon.webp" width="384"/>
<img alt="Reviewer: Reanon" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/dcc15aa68cc793c7/avatar_Reanon.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: Reanon" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/dcc15aa68cc793c7/avatar_Reanon.webp" width="384"/>
</noscript>
<br/>
<b>
Reanon
@@ -498,7 +579,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/rongyi">
<img alt="Reviewer: rongyi" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/5dc6c4b1d8bfe0ac/avatar_rongyi.webp" width="384"/>
<img alt="Reviewer: rongyi" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/5dc6c4b1d8bfe0ac/avatar_rongyi.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: rongyi" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/5dc6c4b1d8bfe0ac/avatar_rongyi.webp" width="384"/>
</noscript>
<br/>
<b>
rongyi
@@ -519,11 +603,22 @@
Книга постоянно совершенствуется благодаря совместным усилиям более чем 200 участников сообщества. Спасибо им за время и вклад!
</p>
<a href="https://github.com/krahets/hello-algo/graphs/contributors">
<img alt="Contributors" loading="lazy" src="https://contrib.rocks/image?repo=krahets/hello-algo&amp;max=300&amp;columns=12" style="width: 100%; max-width: 38.5em;"/>
<img alt="Contributors" data-home-src="https://contrib.rocks/image?repo=krahets/hello-algo&amp;max=300&amp;columns=12" decoding="async" style="width: 100%; max-width: 38.5em;"/>
<noscript>
<img alt="Contributors" loading="lazy" src="https://contrib.rocks/image?repo=krahets/hello-algo&amp;max=300&amp;columns=12" style="width: 100%; max-width: 38.5em;"/>
</noscript>
</a>
</div>
</div>
</section>
<!-- This independent fallback also works when the deferred loader cannot be fetched. -->
<script defer="" onerror="document.querySelectorAll('[data-home-src], [data-home-poster]').forEach(function(el) { if (el.dataset.homeSrc) el.src = el.dataset.homeSrc; if (el.dataset.homePoster) el.poster = el.dataset.homePoster; });" src="../assets/home/ad8bb1cc4c28091c/javascripts/homepage-media.js">
<script defer="" onerror="document.querySelectorAll('[data-home-src], [data-home-poster]').forEach(function(el) { if (el.dataset.homeSrc) el.src = el.dataset.homeSrc; if (el.dataset.homePoster) el.poster = el.dataset.homePoster; });" src="../assets/home/8e54cf1d70453241/javascripts/homepage-media.js">
</script>
<script>
// If the scene entry point itself fails, still provide chapter illustrations.
addEventListener('load', function () {
if (!window.Starfield) document.querySelectorAll('[data-hero-fallback]').forEach(function (image) {
image.src = image.dataset.heroFallback;
});
}, {once: true});
</script>
+145 -50
View File
@@ -1,8 +1,8 @@
<!-- Generated from the shared homepage template and locale configuration. -->
<link href="../assets/home/ad8bb1cc4c28091c/hero-motion.css" rel="stylesheet"/>
<link href="../assets/home/8e54cf1d70453241/hero-motion.css" rel="stylesheet"/>
<noscript>
<style>
[data-home-src], video[data-home-poster] { display: none; }
[data-home-src], video[data-home-poster], [data-hero-fallback] { display: none; }
</style>
</noscript>
<section class="home-div home-universe-bg" data-md-color-primary="grey" data-md-color-scheme="slate">
@@ -11,88 +11,127 @@
</div>
</div>
<div class="hero-div" data-home-layout="universe">
<img alt="" data-hero-asset="ground" data-source-height="380" data-source-width="881" height="380" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/567306c070a6a7e2/ground.webp" style="position: absolute; width: auto; height: 26.445%; left: 28.211%; top: 54.145%;" width="881"/>
<img alt="" data-hero-asset="links" data-source-height="1134" data-source-width="1562" height="1134" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/3e50f38a325c1cb5/links.webp" style="position: absolute; width: auto; height: 78.751%; left: 10.545%; top: 7.326%;" width="1562"/>
<img alt="" data-hero-asset="ground" data-source-height="380" data-source-width="881" height="380" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/567306c070a6a7e2/ground.webp" style="position: absolute; width: auto; height: 26.445%; left: 28.211%; top: 54.145%;; aspect-ratio: 881 / 380" width="881"/>
<img alt="" data-hero-asset="links" data-source-height="1134" data-source-width="1562" height="1134" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/3e50f38a325c1cb5/links.webp" style="position: absolute; width: auto; height: 78.751%; left: 10.545%; top: 7.326%;; aspect-ratio: 1562 / 1134" width="1562"/>
<a href="chapter_introduction/">
<img alt="" data-hero-asset="astronaut" data-source-height="672" data-source-width="515" height="672" src="../assets/home/ad8bb1cc4c28091c/../shared/images/8e5eb3b3e3ebd9f7/astronaut.webp" style="height: 46.673%; left: 35.413%; top: 24.343%;" width="515"/>
<img alt="" data-hero-asset="astronaut" data-source-height="672" data-source-width="515" height="672" src="../assets/home/8e54cf1d70453241/../shared/images/8e5eb3b3e3ebd9f7/astronaut.webp" style="height: 46.673%; left: 35.413%; top: 24.343%;; aspect-ratio: 515 / 672" width="515"/>
<span style="left: 52.244%; top: 20.919%;">
初識演算法
</span>
</a>
<a href="chapter_computational_complexity/">
<img alt="" data-hero-asset="chapter_computational_complexity" data-source-height="178" data-source-width="113" height="178" src="../assets/home/ad8bb1cc4c28091c/../shared/images/2fb425426d1f8d86/chapter_computational_complexity.webp" style="height: 12.347%; left: 36.267%; top: 37.653%;" width="113"/>
<img alt="" data-hero-asset="chapter_computational_complexity" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/2fb425426d1f8d86/chapter_computational_complexity.webp" data-source-height="178" data-source-width="113" height="178" style="height: 12.347%; left: 36.267%; top: 37.653%;; aspect-ratio: 113 / 178" width="113"/>
<noscript>
<img alt="" height="178" src="../assets/home/8e54cf1d70453241/../shared/images/2fb425426d1f8d86/chapter_computational_complexity.webp" style="height: 12.347%; left: 36.267%; top: 37.653%;" width="113"/>
</noscript>
<span style="left: 39.244%; top: 33.919%;">
複雜度
</span>
</a>
<a href="chapter_array_and_linkedlist/">
<img alt="" data-hero-asset="chapter_array_and_linkedlist" data-source-height="319" data-source-width="468" height="319" src="../assets/home/ad8bb1cc4c28091c/../shared/images/5cbbdf7be555d3ef/chapter_array_and_linkedlist.webp" style="height: 22.242%; left: 73.242%; top: 52.481%;" width="468"/>
<img alt="" data-hero-asset="chapter_array_and_linkedlist" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/5cbbdf7be555d3ef/chapter_array_and_linkedlist.webp" data-source-height="319" data-source-width="468" height="319" style="height: 22.242%; left: 73.242%; top: 52.481%;; aspect-ratio: 468 / 319" width="468"/>
<noscript>
<img alt="" height="319" src="../assets/home/8e54cf1d70453241/../shared/images/5cbbdf7be555d3ef/chapter_array_and_linkedlist.webp" style="height: 22.242%; left: 73.242%; top: 52.481%;" width="468"/>
</noscript>
<span style="left: 90.897%; top: 76.259%;">
陣列與鏈結串列
</span>
</a>
<a href="chapter_stack_and_queue/">
<img alt="" data-hero-asset="chapter_stack_and_queue" data-source-height="204" data-source-width="204" height="204" src="../assets/home/ad8bb1cc4c28091c/../shared/images/e2667767cf7481bd/chapter_stack_and_queue.webp" style="height: 14.302%; left: 62.646%; top: 77.875%;" width="204"/>
<img alt="" data-hero-asset="chapter_stack_and_queue" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/e2667767cf7481bd/chapter_stack_and_queue.webp" data-source-height="204" data-source-width="204" height="204" style="height: 14.302%; left: 62.646%; top: 77.875%;; aspect-ratio: 204 / 204" width="204"/>
<noscript>
<img alt="" height="204" src="../assets/home/8e54cf1d70453241/../shared/images/e2667767cf7481bd/chapter_stack_and_queue.webp" style="height: 14.302%; left: 62.646%; top: 77.875%;" width="204"/>
</noscript>
<span style="left: 77.571%; top: 91.25%;">
堆疊與佇列
</span>
</a>
<a href="chapter_hashing/">
<img alt="" data-hero-asset="chapter_hashing" data-source-height="218" data-source-width="218" height="218" src="../assets/home/ad8bb1cc4c28091c/../shared/images/b108d70a537714cb/chapter_hashing.webp" style="height: 15.266%; left: 63.281%; top: 27.933%;" width="218"/>
<img alt="" data-hero-asset="chapter_hashing" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/b108d70a537714cb/chapter_hashing.webp" data-source-height="218" data-source-width="218" height="218" style="height: 15.266%; left: 63.281%; top: 27.933%;; aspect-ratio: 218 / 218" width="218"/>
<noscript>
<img alt="" height="218" src="../assets/home/8e54cf1d70453241/../shared/images/b108d70a537714cb/chapter_hashing.webp" style="height: 15.266%; left: 63.281%; top: 27.933%;" width="218"/>
</noscript>
<span style="left: 68.862%; top: 46.292%;">
雜湊表
</span>
</a>
<a href="chapter_tree/">
<img alt="" data-hero-asset="chapter_tree" data-source-height="281" data-source-width="280" height="281" src="../assets/home/ad8bb1cc4c28091c/../shared/images/8138bb0acecedec4/chapter_tree.webp" style="height: 19.615%; left: 80.137%; top: 26.678%;" width="280"/>
<img alt="" data-hero-asset="chapter_tree" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/8138bb0acecedec4/chapter_tree.webp" data-source-height="281" data-source-width="280" height="281" style="height: 19.615%; left: 80.137%; top: 26.678%;; aspect-ratio: 280 / 281" width="280"/>
<noscript>
<img alt="" height="281" src="../assets/home/8e54cf1d70453241/../shared/images/8138bb0acecedec4/chapter_tree.webp" style="height: 19.615%; left: 80.137%; top: 26.678%;" width="280"/>
</noscript>
<span style="left: 96.159%; top: 44.8%;">
樹
</span>
</a>
<a href="chapter_heap/">
<img alt="" data-hero-asset="chapter_heap" data-source-height="152" data-source-width="151" height="152" src="../assets/home/ad8bb1cc4c28091c/../shared/images/7586281e6691807a/chapter_heap.webp" style="height: 10.566%; left: 77.226%; top: 11.559%;" width="151"/>
<img alt="" data-hero-asset="chapter_heap" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/7586281e6691807a/chapter_heap.webp" data-source-height="152" data-source-width="151" height="152" style="height: 10.566%; left: 77.226%; top: 11.559%;; aspect-ratio: 151 / 152" width="151"/>
<noscript>
<img alt="" height="152" src="../assets/home/8e54cf1d70453241/../shared/images/7586281e6691807a/chapter_heap.webp" style="height: 10.566%; left: 77.226%; top: 11.559%;" width="151"/>
</noscript>
<span style="left: 88.103%; top: 15.422%;">
堆積
</span>
</a>
<a href="chapter_graph/">
<img alt="" data-hero-asset="chapter_graph" data-source-height="272" data-source-width="542" height="272" src="../assets/home/ad8bb1cc4c28091c/../shared/images/175a7f2e7c3cf5f0/chapter_graph.webp" style="height: 16.112%; left: 51.854%; top: 5.575%;" width="542"/>
<img alt="" data-hero-asset="chapter_graph" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/175a7f2e7c3cf5f0/chapter_graph.webp" data-source-height="272" data-source-width="542" height="272" style="height: 16.112%; left: 51.854%; top: 5.575%;; aspect-ratio: 542 / 272" width="542"/>
<noscript>
<img alt="" height="272" src="../assets/home/8e54cf1d70453241/../shared/images/175a7f2e7c3cf5f0/chapter_graph.webp" style="height: 16.112%; left: 51.854%; top: 5.575%;" width="542"/>
</noscript>
<span style="left: 71.195%; top: 6.503%;">
圖
</span>
</a>
<a href="chapter_searching/">
<img alt="" data-hero-asset="chapter_searching" data-source-height="216" data-source-width="216" height="216" src="../assets/home/ad8bb1cc4c28091c/../shared/images/ebfe2b953dbb9d90/chapter_searching.webp" style="height: 15.149%; left: 18.185%; top: 16.404%;" width="216"/>
<img alt="" data-hero-asset="chapter_searching" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/ebfe2b953dbb9d90/chapter_searching.webp" data-source-height="216" data-source-width="216" height="216" style="height: 15.149%; left: 18.185%; top: 16.404%;; aspect-ratio: 216 / 216" width="216"/>
<noscript>
<img alt="" height="216" src="../assets/home/8e54cf1d70453241/../shared/images/ebfe2b953dbb9d90/chapter_searching.webp" style="height: 15.149%; left: 18.185%; top: 16.404%;" width="216"/>
</noscript>
<span style="left: 14.556%; top: 20.876%;">
搜尋
</span>
</a>
<a href="chapter_sorting/">
<img alt="" data-hero-asset="chapter_sorting" data-source-height="137" data-source-width="138" height="137" src="../assets/home/ad8bb1cc4c28091c/../shared/images/9d4be68b2680967c/chapter_sorting.webp" style="height: 9.574%; left: 25.409%; top: 40.747%;" width="138"/>
<img alt="" data-hero-asset="chapter_sorting" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/9d4be68b2680967c/chapter_sorting.webp" data-source-height="137" data-source-width="138" height="137" style="height: 9.574%; left: 25.409%; top: 40.747%;; aspect-ratio: 138 / 137" width="138"/>
<noscript>
<img alt="" height="137" src="../assets/home/8e54cf1d70453241/../shared/images/9d4be68b2680967c/chapter_sorting.webp" style="height: 9.574%; left: 25.409%; top: 40.747%;" width="138"/>
</noscript>
<span style="left: 28.805%; top: 53.808%;">
排序
</span>
</a>
<a href="chapter_divide_and_conquer/">
<img alt="" data-hero-asset="chapter_divide_and_conquer" data-source-height="269" data-source-width="407" height="269" src="../assets/home/ad8bb1cc4c28091c/../shared/images/6f5766ca9385cd2e/chapter_divide_and_conquer.webp" style="height: 18.681%; left: 32.721%; top: 4.816%;" width="407"/>
<img alt="" data-hero-asset="chapter_divide_and_conquer" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/6f5766ca9385cd2e/chapter_divide_and_conquer.webp" data-source-height="269" data-source-width="407" height="269" style="height: 18.681%; left: 32.721%; top: 4.816%;; aspect-ratio: 407 / 269" width="407"/>
<noscript>
<img alt="" height="269" src="../assets/home/8e54cf1d70453241/../shared/images/6f5766ca9385cd2e/chapter_divide_and_conquer.webp" style="height: 18.681%; left: 32.721%; top: 4.816%;" width="407"/>
</noscript>
<span style="left: 31.42%; top: 8.679%;">
分治
</span>
</a>
<a href="chapter_backtracking/">
<img alt="" data-hero-asset="chapter_backtracking" data-source-height="249" data-source-width="345" height="249" src="../assets/home/ad8bb1cc4c28091c/../shared/images/176675e685febf11/chapter_backtracking.webp" style="height: 17.338%; left: 4.875%; top: 32.925%;" width="345"/>
<img alt="" data-hero-asset="chapter_backtracking" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/176675e685febf11/chapter_backtracking.webp" data-source-height="249" data-source-width="345" height="249" style="height: 17.338%; left: 4.875%; top: 32.925%;; aspect-ratio: 345 / 249" width="345"/>
<noscript>
<img alt="" height="249" src="../assets/home/8e54cf1d70453241/../shared/images/176675e685febf11/chapter_backtracking.webp" style="height: 17.338%; left: 4.875%; top: 32.925%;" width="345"/>
</noscript>
<span style="left: 4.742%; top: 50.113%;">
回溯
</span>
</a>
<a href="chapter_dynamic_programming/">
<img alt="" data-hero-asset="chapter_dynamic_programming" data-source-height="268" data-source-width="267" height="268" src="../assets/home/ad8bb1cc4c28091c/../shared/images/06264b1ffd05b08e/chapter_dynamic_programming.webp" style="height: 15.47%; left: 9.406%; top: 57.472%;" width="267"/>
<img alt="" data-hero-asset="chapter_dynamic_programming" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/06264b1ffd05b08e/chapter_dynamic_programming.webp" data-source-height="268" data-source-width="267" height="268" style="height: 15.47%; left: 9.406%; top: 57.472%;; aspect-ratio: 267 / 268" width="267"/>
<noscript>
<img alt="" height="268" src="../assets/home/8e54cf1d70453241/../shared/images/06264b1ffd05b08e/chapter_dynamic_programming.webp" style="height: 15.47%; left: 9.406%; top: 57.472%;" width="267"/>
</noscript>
<span style="left: 8.561%; top: 75.351%;">
動態規劃
</span>
</a>
<a href="chapter_greedy/">
<img alt="" data-hero-asset="chapter_greedy" data-source-height="202" data-source-width="265" height="202" src="../assets/home/ad8bb1cc4c28091c/../shared/images/2ce6caaac951c40b/chapter_greedy.webp" style="height: 14.127%; left: 23.132%; top: 75.803%;" width="265"/>
<img alt="" data-hero-asset="chapter_greedy" data-hero-fallback="../assets/home/8e54cf1d70453241/../shared/images/2ce6caaac951c40b/chapter_greedy.webp" data-source-height="202" data-source-width="265" height="202" style="height: 14.127%; left: 23.132%; top: 75.803%;; aspect-ratio: 265 / 202" width="265"/>
<noscript>
<img alt="" height="202" src="../assets/home/8e54cf1d70453241/../shared/images/2ce6caaac951c40b/chapter_greedy.webp" style="height: 14.127%; left: 23.132%; top: 75.803%;" width="265"/>
</noscript>
<span style="left: 21.619%; top: 86.85%;">
貪婪
</span>
@@ -139,9 +178,9 @@
<a href="/chapter_paperbook/">
<div style="height: 8.17%;">
</div>
<img alt="Cover" class="device-on-hover" data-home-src="../assets/home/ad8bb1cc4c28091c/../shared/images/dc5be783cea3a262/cover_render.webp" decoding="async" height="720" style="height: 66.83%;" width="535"/>
<img alt="Cover" class="device-on-hover" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/dc5be783cea3a262/cover_render.webp" decoding="async" height="720" style="height: 66.83%;" width="535"/>
<noscript>
<img alt="Cover" class="device-on-hover" height="720" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/dc5be783cea3a262/cover_render.webp" style="height: 66.83%;" width="535"/>
<img alt="Cover" class="device-on-hover" height="720" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/dc5be783cea3a262/cover_render.webp" style="height: 66.83%;" width="535"/>
</noscript>
<div class="text-button">
<span>
@@ -158,9 +197,9 @@
<a href="chapter_hello_algo/">
<div style="height: 4.34%;">
</div>
<img alt="" class="device-on-hover" data-home-src="../assets/home/ad8bb1cc4c28091c/../shared/images/5b64cf7672ec5ec6/web_mac_iphone.webp" decoding="async" height="965" style="height: 66.31%;" width="1598"/>
<img alt="" class="device-on-hover" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/5b64cf7672ec5ec6/web_mac_iphone.webp" decoding="async" height="965" style="height: 66.31%;" width="1598"/>
<noscript>
<img alt="" class="device-on-hover" height="965" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/5b64cf7672ec5ec6/web_mac_iphone.webp" style="height: 66.31%;" width="1598"/>
<img alt="" class="device-on-hover" height="965" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/5b64cf7672ec5ec6/web_mac_iphone.webp" style="height: 66.31%;" width="1598"/>
</noscript>
<div style="height: 4.34%;">
</div>
@@ -177,9 +216,9 @@
</div>
<div class="media-block">
<a href="https://github.com/krahets/hello-algo/releases">
<img alt="" class="device-on-hover" data-home-src="../assets/home/ad8bb1cc4c28091c/../shared/images/66baa2f9bf3abec7/pdf_ipad.webp" decoding="async" height="960" style="height: 75%;" width="812"/>
<img alt="" class="device-on-hover" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/66baa2f9bf3abec7/pdf_ipad.webp" decoding="async" height="960" style="height: 75%;" width="812"/>
<noscript>
<img alt="" class="device-on-hover" height="960" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/66baa2f9bf3abec7/pdf_ipad.webp" style="height: 75%;" width="812"/>
<img alt="" class="device-on-hover" height="960" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/66baa2f9bf3abec7/pdf_ipad.webp" style="height: 75%;" width="812"/>
</noscript>
<div class="text-button">
<span>
@@ -247,21 +286,21 @@
</p>
</div>
</div>
<video aria-label="Animation example" class="intro-image" data-home-poster="../assets/home/ad8bb1cc4c28091c/../shared/images/9e5f39bf33afc70f/animation-poster.webp" data-home-video="../assets/home/ad8bb1cc4c28091c/../shared/media/6c70de2b2bf4eef7/animation.mp4" height="1080" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1600 / 1080" width="1600">
<video aria-label="Animation example" class="intro-image" data-home-poster="../assets/home/8e54cf1d70453241/../shared/images/9e5f39bf33afc70f/animation-poster.webp" data-home-video="../assets/home/8e54cf1d70453241/../shared/media/6c70de2b2bf4eef7/animation.mp4" height="1080" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1600 / 1080" width="1600">
</video>
<noscript>
<a href="../assets/home/ad8bb1cc4c28091c/../shared/media/6c70de2b2bf4eef7/animation.mp4">
<img alt="Animation example" class="intro-image" height="1080" src="../assets/home/ad8bb1cc4c28091c/../shared/images/9e5f39bf33afc70f/animation-poster.webp" width="1600"/>
<a href="../assets/home/8e54cf1d70453241/../shared/media/6c70de2b2bf4eef7/animation.mp4">
<img alt="Animation example" class="intro-image" height="1080" src="../assets/home/8e54cf1d70453241/../shared/images/9e5f39bf33afc70f/animation-poster.webp" width="1600"/>
動畫圖解
</a>
</noscript>
</div>
<div class="intro-container">
<video aria-label="Running code example" class="intro-image" data-home-poster="../assets/home/ad8bb1cc4c28091c/../shared/images/f33a13e8331245ae/running_code-poster.webp" data-home-video="../assets/home/ad8bb1cc4c28091c/../shared/media/bb169a96ca8316da/running_code.mp4" height="1082" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1600 / 1082" width="1600">
<video aria-label="Running code example" class="intro-image" data-home-poster="../assets/home/8e54cf1d70453241/../shared/images/f33a13e8331245ae/running_code-poster.webp" data-home-video="../assets/home/8e54cf1d70453241/../shared/media/bb169a96ca8316da/running_code.mp4" height="1082" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1600 / 1082" width="1600">
</video>
<noscript>
<a href="../assets/home/ad8bb1cc4c28091c/../shared/media/bb169a96ca8316da/running_code.mp4">
<img alt="Running code example" class="intro-image" height="1082" src="../assets/home/ad8bb1cc4c28091c/../shared/images/f33a13e8331245ae/running_code-poster.webp" width="1600"/>
<a href="../assets/home/8e54cf1d70453241/../shared/media/bb169a96ca8316da/running_code.mp4">
<img alt="Running code example" class="intro-image" height="1082" src="../assets/home/8e54cf1d70453241/../shared/images/f33a13e8331245ae/running_code-poster.webp" width="1600"/>
一鍵執行
</a>
</noscript>
@@ -309,11 +348,11 @@
</p>
</div>
</div>
<video aria-label="Comments example" class="intro-image" data-home-poster="../assets/home/ad8bb1cc4c28091c/../shared/images/f9ac69536a7582f5/comment-poster.webp" data-home-video="../assets/home/ad8bb1cc4c28091c/../shared/media/62aa0b8d351c63a7/comment.mp4" height="1080" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1600 / 1080" width="1600">
<video aria-label="Comments example" class="intro-image" data-home-poster="../assets/home/8e54cf1d70453241/../shared/images/f9ac69536a7582f5/comment-poster.webp" data-home-video="../assets/home/8e54cf1d70453241/../shared/media/62aa0b8d351c63a7/comment.mp4" height="1080" loop="" muted="" playsinline="" preload="none" style="aspect-ratio: 1600 / 1080" width="1600">
</video>
<noscript>
<a href="../assets/home/ad8bb1cc4c28091c/../shared/media/62aa0b8d351c63a7/comment.mp4">
<img alt="Comments example" class="intro-image" height="1080" src="../assets/home/ad8bb1cc4c28091c/../shared/images/f9ac69536a7582f5/comment-poster.webp" width="1600"/>
<a href="../assets/home/8e54cf1d70453241/../shared/media/62aa0b8d351c63a7/comment.mp4">
<img alt="Comments example" class="intro-image" height="1080" src="../assets/home/8e54cf1d70453241/../shared/images/f9ac69536a7582f5/comment-poster.webp" width="1600"/>
互助學習
</a>
</noscript>
@@ -329,7 +368,10 @@
<div class="profile-div">
<div class="profile-cell">
<a href="https://github.com/krahets">
<img alt="Author: yudongjin" class="profile-img" height="512" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/02348410d40f7665/avatar_yudongjin.webp" width="512"/>
<img alt="Author: yudongjin" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/02348410d40f7665/avatar_yudongjin.webp" decoding="async" height="512" width="512"/>
<noscript>
<img alt="Author: yudongjin" class="profile-img" height="512" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/02348410d40f7665/avatar_yudongjin.webp" width="512"/>
</noscript>
<br/>
<b>
靳宇棟(@krahets)
@@ -348,7 +390,10 @@
<div class="profile-div">
<div class="profile-cell translator-profile-cell">
<a href="https://github.com/Shyam-Chen">
<img alt="Reviewer: Shyam-Chen" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/a635319ad4eaf2e9/avatar_Shyam-Chen.webp" width="384"/>
<img alt="Reviewer: Shyam-Chen" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/a635319ad4eaf2e9/avatar_Shyam-Chen.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: Shyam-Chen" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/a635319ad4eaf2e9/avatar_Shyam-Chen.webp" width="384"/>
</noscript>
<br/>
<b>
Shyam-Chen
@@ -357,7 +402,10 @@
</div>
<div class="profile-cell translator-profile-cell">
<a href="https://github.com/Dr-XYZ">
<img alt="Reviewer: Dr-XYZ" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/b5b4c188d159778c/avatar_Dr-XYZ.webp" width="384"/>
<img alt="Reviewer: Dr-XYZ" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/b5b4c188d159778c/avatar_Dr-XYZ.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: Dr-XYZ" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/b5b4c188d159778c/avatar_Dr-XYZ.webp" width="384"/>
</noscript>
<br/>
<b>
Dr-XYZ
@@ -376,7 +424,10 @@
<div class="profile-div">
<div class="profile-cell">
<a href="https://github.com/coderonion">
<img alt="Reviewer: coderonion" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/db606f27971eae34/avatar_coderonion.webp" width="384"/>
<img alt="Reviewer: coderonion" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/db606f27971eae34/avatar_coderonion.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: coderonion" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/db606f27971eae34/avatar_coderonion.webp" width="384"/>
</noscript>
<br/>
<b>
coderonion
@@ -389,7 +440,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/curtishd">
<img alt="Reviewer: curtishd" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/feedb0e547ea31fc/avatar_curtishd.webp" width="384"/>
<img alt="Reviewer: curtishd" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/feedb0e547ea31fc/avatar_curtishd.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: curtishd" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/feedb0e547ea31fc/avatar_curtishd.webp" width="384"/>
</noscript>
<br/>
<b>
curtishd
@@ -402,7 +456,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/Gonglja">
<img alt="Reviewer: Gonglja" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/cdcf023b032b8d30/avatar_Gonglja.webp" width="384"/>
<img alt="Reviewer: Gonglja" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/cdcf023b032b8d30/avatar_Gonglja.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: Gonglja" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/cdcf023b032b8d30/avatar_Gonglja.webp" width="384"/>
</noscript>
<br/>
<b>
Gonglja
@@ -415,7 +472,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/gvenusleo">
<img alt="Reviewer: gvenusleo" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/464e2d351b9263ec/avatar_gvenusleo.webp" width="384"/>
<img alt="Reviewer: gvenusleo" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/464e2d351b9263ec/avatar_gvenusleo.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: gvenusleo" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/464e2d351b9263ec/avatar_gvenusleo.webp" width="384"/>
</noscript>
<br/>
<b>
gvenusleo
@@ -428,7 +488,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/hpstory">
<img alt="Reviewer: hpstory" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/7b6478acdab6b845/avatar_hpstory.webp" width="384"/>
<img alt="Reviewer: hpstory" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/7b6478acdab6b845/avatar_hpstory.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: hpstory" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/7b6478acdab6b845/avatar_hpstory.webp" width="384"/>
</noscript>
<br/>
<b>
hpstory
@@ -441,7 +504,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/justin-tse">
<img alt="Reviewer: justin-tse" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/208ee5aae490eefa/avatar_justin-tse.webp" width="384"/>
<img alt="Reviewer: justin-tse" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/208ee5aae490eefa/avatar_justin-tse.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: justin-tse" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/208ee5aae490eefa/avatar_justin-tse.webp" width="384"/>
</noscript>
<br/>
<b>
justin-tse
@@ -454,7 +520,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/khoaxuantu">
<img alt="Reviewer: khoaxuantu" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/9d3f1a21ff51de78/avatar_khoaxuantu.webp" width="384"/>
<img alt="Reviewer: khoaxuantu" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/9d3f1a21ff51de78/avatar_khoaxuantu.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: khoaxuantu" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/9d3f1a21ff51de78/avatar_khoaxuantu.webp" width="384"/>
</noscript>
<br/>
<b>
khoaxuantu
@@ -467,7 +536,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/krahets">
<img alt="Reviewer: krahets" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/e321f9a3ac2739e0/avatar_krahets.webp" width="384"/>
<img alt="Reviewer: krahets" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/e321f9a3ac2739e0/avatar_krahets.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: krahets" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/e321f9a3ac2739e0/avatar_krahets.webp" width="384"/>
</noscript>
<br/>
<b>
krahets
@@ -480,7 +552,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/night-cruise">
<img alt="Reviewer: night-cruise" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/960b489efa22abd4/avatar_night-cruise.jpg" width="384"/>
<img alt="Reviewer: night-cruise" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/960b489efa22abd4/avatar_night-cruise.jpg" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: night-cruise" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/960b489efa22abd4/avatar_night-cruise.jpg" width="384"/>
</noscript>
<br/>
<b>
night-cruise
@@ -493,7 +568,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/nuomi1">
<img alt="Reviewer: nuomi1" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/7316a9eb4429b259/avatar_nuomi1.webp" width="384"/>
<img alt="Reviewer: nuomi1" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/7316a9eb4429b259/avatar_nuomi1.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: nuomi1" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/7316a9eb4429b259/avatar_nuomi1.webp" width="384"/>
</noscript>
<br/>
<b>
nuomi1
@@ -506,7 +584,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/Reanon">
<img alt="Reviewer: Reanon" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/dcc15aa68cc793c7/avatar_Reanon.webp" width="384"/>
<img alt="Reviewer: Reanon" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/dcc15aa68cc793c7/avatar_Reanon.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: Reanon" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/dcc15aa68cc793c7/avatar_Reanon.webp" width="384"/>
</noscript>
<br/>
<b>
Reanon
@@ -519,7 +600,10 @@
</div>
<div class="profile-cell">
<a href="https://github.com/rongyi">
<img alt="Reviewer: rongyi" class="profile-img" height="384" loading="lazy" src="../assets/home/ad8bb1cc4c28091c/../shared/images/5dc6c4b1d8bfe0ac/avatar_rongyi.webp" width="384"/>
<img alt="Reviewer: rongyi" class="profile-img" data-home-src="../assets/home/8e54cf1d70453241/../shared/images/5dc6c4b1d8bfe0ac/avatar_rongyi.webp" decoding="async" height="384" width="384"/>
<noscript>
<img alt="Reviewer: rongyi" class="profile-img" height="384" loading="lazy" src="../assets/home/8e54cf1d70453241/../shared/images/5dc6c4b1d8bfe0ac/avatar_rongyi.webp" width="384"/>
</noscript>
<br/>
<b>
rongyi
@@ -540,11 +624,22 @@
本書在開源社群 200 多位貢獻者的共同努力下不斷完善,感謝他們付出的時間與精力!
</p>
<a href="https://github.com/krahets/hello-algo/graphs/contributors">
<img alt="Contributors" loading="lazy" src="https://contrib.rocks/image?repo=krahets/hello-algo&amp;max=300&amp;columns=12" style="width: 100%; max-width: 38.5em;"/>
<img alt="Contributors" data-home-src="https://contrib.rocks/image?repo=krahets/hello-algo&amp;max=300&amp;columns=12" decoding="async" style="width: 100%; max-width: 38.5em;"/>
<noscript>
<img alt="Contributors" loading="lazy" src="https://contrib.rocks/image?repo=krahets/hello-algo&amp;max=300&amp;columns=12" style="width: 100%; max-width: 38.5em;"/>
</noscript>
</a>
</div>
</div>
</section>
<!-- This independent fallback also works when the deferred loader cannot be fetched. -->
<script defer="" onerror="document.querySelectorAll('[data-home-src], [data-home-poster]').forEach(function(el) { if (el.dataset.homeSrc) el.src = el.dataset.homeSrc; if (el.dataset.homePoster) el.poster = el.dataset.homePoster; });" src="../assets/home/ad8bb1cc4c28091c/javascripts/homepage-media.js">
<script defer="" onerror="document.querySelectorAll('[data-home-src], [data-home-poster]').forEach(function(el) { if (el.dataset.homeSrc) el.src = el.dataset.homeSrc; if (el.dataset.homePoster) el.poster = el.dataset.homePoster; });" src="../assets/home/8e54cf1d70453241/javascripts/homepage-media.js">
</script>
<script>
// If the scene entry point itself fails, still provide chapter illustrations.
addEventListener('load', function () {
if (!window.Starfield) document.querySelectorAll('[data-hero-fallback]').forEach(function (image) {
image.src = image.dataset.heroFallback;
});
}, {once: true});
</script>