Files
hello-algo/ja/search/search_index.json
krahets 9e8c0cb36c deploy
2026-03-29 02:26:07 +08:00

1 line
1.8 MiB

{"config":{"lang":["ja"],"separator":"[\\s\\-\u3000\u3001\u3002\uff0c\uff0e]+","pipeline":["stemmer"],"fields":{"title":{"boost":1000.0},"text":{"boost":1.0},"tags":{"boost":1000000.0}}},"docs":[{"location":"chapter_appendix/","title":"\u7b2c 16 \u7ae0 \u00a0 \u4ed8\u9332","text":""},{"location":"chapter_appendix/#_1","title":"\u7ae0\u306e\u5185\u5bb9","text":"<ul> <li>16.1 \u00a0 \u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u74b0\u5883\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb</li> <li>16.2 \u00a0 \u4e00\u7dd2\u306b\u5275\u4f5c\u306b\u53c2\u52a0\u3059\u308b</li> <li>16.3 \u00a0 \u7528\u8a9e\u96c6</li> </ul>"},{"location":"chapter_appendix/contribution/","title":"16.2 \u00a0 \u30b3\u30f3\u30c8\u30ea\u30d3\u30e5\u30fc\u30b7\u30e7\u30f3","text":"<p>\u8457\u8005\u306e\u80fd\u529b\u306b\u9650\u308a\u304c\u3042\u308b\u305f\u3081\u3001\u672c\u66f8\u306b\u306f\u3044\u304f\u3064\u304b\u306e\u7701\u7565\u3084\u8aa4\u308a\u304c\u907f\u3051\u3089\u308c\u307e\u305b\u3093\u3002\u3054\u7406\u89e3\u3092\u304a\u9858\u3044\u3057\u307e\u3059\u3002\u8aa4\u5b57\u3001\u30ea\u30f3\u30af\u5207\u308c\u3001\u5185\u5bb9\u306e\u6b20\u843d\u3001\u6587\u7ae0\u306e\u66d6\u6627\u3055\u3001\u8aac\u660e\u306e\u4e0d\u660e\u78ba\u3055\u3001\u307e\u305f\u306f\u4e0d\u5408\u7406\u306a\u6587\u7ae0\u69cb\u9020\u3092\u767a\u898b\u3055\u308c\u305f\u5834\u5408\u306f\u3001\u8aad\u8005\u306b\u3088\u308a\u826f\u8cea\u306a\u5b66\u7fd2\u30ea\u30bd\u30fc\u30b9\u3092\u63d0\u4f9b\u3059\u308b\u305f\u3081\u3001\u4fee\u6b63\u306b\u3054\u5354\u529b\u304f\u3060\u3055\u3044\u3002</p> <p>\u3059\u3079\u3066\u306e\u30b3\u30f3\u30c8\u30ea\u30d3\u30e5\u30fc\u30bf\u30fc\u306eGitHub ID\u306f\u3001\u672c\u66f8\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u3001\u30a6\u30a7\u30d6\u3001PDF\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u30db\u30fc\u30e0\u30da\u30fc\u30b8\u306b\u8868\u793a\u3055\u308c\u3001\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3078\u306e\u7121\u79c1\u306e\u8ca2\u732e\u306b\u611f\u8b1d\u3044\u305f\u3057\u307e\u3059\u3002</p> <p>\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u9b45\u529b</p> <p>\u7d19\u306e\u672c\u306e2\u3064\u306e\u5370\u5237\u7248\u306e\u9593\u9694\u306f\u3057\u3070\u3057\u3070\u9577\u304f\u3001\u5185\u5bb9\u306e\u66f4\u65b0\u304c\u975e\u5e38\u306b\u4e0d\u4fbf\u3067\u3059\u3002</p> <p>\u3057\u304b\u3057\u3001\u3053\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u672c\u3067\u306f\u3001\u5185\u5bb9\u306e\u66f4\u65b0\u30b5\u30a4\u30af\u30eb\u306f\u6570\u65e5\u3001\u3055\u3089\u306b\u306f\u6570\u6642\u9593\u306b\u77ed\u7e2e\u3055\u308c\u307e\u3059\u3002</p>"},{"location":"chapter_appendix/contribution/#1","title":"1. \u00a0 \u5185\u5bb9\u306e\u5fae\u8abf\u6574","text":"<p>\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u5404\u30da\u30fc\u30b8\u306e\u53f3\u4e0a\u89d2\u306b\u300c\u7de8\u96c6\u30a2\u30a4\u30b3\u30f3\u300d\u304c\u3042\u308a\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u624b\u9806\u306b\u5f93\u3063\u3066\u30c6\u30ad\u30b9\u30c8\u3084\u30b3\u30fc\u30c9\u3092\u4fee\u6b63\u3067\u304d\u307e\u3059\u3002</p> <ol> <li>\u300c\u7de8\u96c6\u30a2\u30a4\u30b3\u30f3\u300d\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002\u300c\u3053\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u30d5\u30a9\u30fc\u30af\u3057\u307e\u3059\u304b\u300d\u3068\u4fc3\u3055\u308c\u305f\u5834\u5408\u306f\u3001\u540c\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002</li> <li>Markdown\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9\u3092\u4fee\u6b63\u3057\u3001\u5185\u5bb9\u306e\u6b63\u78ba\u6027\u3092\u78ba\u8a8d\u3057\u3001\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306e\u4e00\u8cab\u6027\u3092\u4fdd\u3064\u3088\u3046\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002</li> <li>\u30da\u30fc\u30b8\u306e\u4e0b\u90e8\u3067\u4fee\u6b63\u8aac\u660e\u3092\u8a18\u5165\u3057\u3001\u300cPropose file change\u300d\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002\u30da\u30fc\u30b8\u304c\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3055\u308c\u305f\u5f8c\u3001\u300cCreate pull request\u300d\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u958b\u59cb\u3057\u307e\u3059\u3002</li> </ol> <p></p> <p> \u56f3 16-3 \u00a0 \u30da\u30fc\u30b8\u7de8\u96c6\u30dc\u30bf\u30f3 </p> <p>\u56f3\u306f\u76f4\u63a5\u4fee\u6b63\u3067\u304d\u306a\u3044\u305f\u3081\u3001\u65b0\u3057\u3044Issue\u3092\u4f5c\u6210\u3059\u308b\u304b\u3001\u554f\u984c\u3092\u8aac\u660e\u3059\u308b\u30b3\u30e1\u30f3\u30c8\u304c\u5fc5\u8981\u3067\u3059\u3002\u3067\u304d\u308b\u3060\u3051\u65e9\u304f\u56f3\u3092\u518d\u63cf\u753b\u3057\u3066\u7f6e\u304d\u63db\u3048\u307e\u3059\u3002</p>"},{"location":"chapter_appendix/contribution/#2","title":"2. \u00a0 \u5185\u5bb9\u306e\u4f5c\u6210","text":"<p>\u3053\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u53c2\u52a0\u306b\u8208\u5473\u304c\u3042\u308b\u5834\u5408\u3001\u30b3\u30fc\u30c9\u3092\u4ed6\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306b\u7ffb\u8a33\u3057\u305f\u308a\u3001\u8a18\u4e8b\u306e\u5185\u5bb9\u3092\u62e1\u5f35\u3057\u305f\u308a\u3059\u308b\u3053\u3068\u3092\u542b\u3081\u3066\u3001\u4ee5\u4e0b\u306e\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u3092\u5b9f\u88c5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</p> <ol> <li>GitHub\u306b\u30ed\u30b0\u30a4\u30f3\u3057\u3001\u672c\u66f8\u306e\u30b3\u30fc\u30c9\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u500b\u4eba\u30a2\u30ab\u30a6\u30f3\u30c8\u306b\u30d5\u30a9\u30fc\u30af\u3057\u307e\u3059\u3002</li> <li>\u30d5\u30a9\u30fc\u30af\u3057\u305f\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30a6\u30a7\u30d6\u30da\u30fc\u30b8\u306b\u79fb\u52d5\u3057\u3001<code>git clone</code>\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u30ed\u30fc\u30ab\u30eb\u30de\u30b7\u30f3\u306b\u30af\u30ed\u30fc\u30f3\u3057\u307e\u3059\u3002</li> <li>\u30ed\u30fc\u30ab\u30eb\u3067\u5185\u5bb9\u3092\u4f5c\u6210\u3057\u3001\u5b8c\u5168\u306a\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u3066\u30b3\u30fc\u30c9\u306e\u6b63\u78ba\u6027\u3092\u691c\u8a3c\u3057\u307e\u3059\u3002</li> <li>\u30ed\u30fc\u30ab\u30eb\u3067\u884c\u3063\u305f\u5909\u66f4\u3092\u30b3\u30df\u30c3\u30c8\u3057\u3001\u30ea\u30e2\u30fc\u30c8\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002</li> <li>\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30a6\u30a7\u30d6\u30da\u30fc\u30b8\u3092\u66f4\u65b0\u3057\u3001\u300cCreate pull request\u300d\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u958b\u59cb\u3057\u307e\u3059\u3002</li> </ol>"},{"location":"chapter_appendix/contribution/#3-docker","title":"3. \u00a0 Docker\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8","text":"<p><code>hello-algo</code>\u30eb\u30fc\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3067\u3001\u4ee5\u4e0b\u306eDocker\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u5b9f\u884c\u3057\u3066<code>http://localhost:8000</code>\u3067\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3057\u307e\u3059\uff1a</p> <pre><code>docker-compose up -d\n</code></pre> <p>\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3092\u524a\u9664\u3057\u307e\u3059\uff1a</p> <pre><code>docker-compose down\n</code></pre>"},{"location":"chapter_appendix/installation/","title":"16.1 \u00a0 \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":""},{"location":"chapter_appendix/installation/#1611-ide","title":"16.1.1 \u00a0 IDE\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"<p>\u30ed\u30fc\u30ab\u30eb\u306e\u7d71\u5408\u958b\u767a\u74b0\u5883\uff08IDE\uff09\u3068\u3057\u3066\u3001\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u3067\u8efd\u91cf\u306aVS Code\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002VS Code\u516c\u5f0f\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3001\u304a\u4f7f\u3044\u306e\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\u306b\u9069\u3057\u305fVS Code\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u9078\u629e\u3057\u3066\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <p></p> <p> \u56f3 16-1 \u00a0 \u516c\u5f0f\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u304b\u3089VS Code\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 </p> <p>VS Code\u306b\u306f\u5f37\u529b\u306a\u62e1\u5f35\u6a5f\u80fd\u30a8\u30b3\u30b7\u30b9\u30c6\u30e0\u304c\u3042\u308a\u3001\u307b\u3068\u3093\u3069\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306e\u5b9f\u884c\u3068\u30c7\u30d0\u30c3\u30b0\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u300cPython Extension Pack\u300d\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305f\u5f8c\u3001Python\u30b3\u30fc\u30c9\u3092\u30c7\u30d0\u30c3\u30b0\u3067\u304d\u307e\u3059\u3002\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u624b\u9806\u3092\u4e0b\u306e\u56f3\u306b\u793a\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 16-2 \u00a0 VS Code\u62e1\u5f35\u6a5f\u80fd\u30d1\u30c3\u30af\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb </p>"},{"location":"chapter_appendix/installation/#1612","title":"16.1.2 \u00a0 \u8a00\u8a9e\u74b0\u5883\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":""},{"location":"chapter_appendix/installation/#1-python","title":"1. \u00a0 Python\u74b0\u5883","text":"<ol> <li>Miniconda3\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002Python 3.10\u4ee5\u964d\u304c\u5fc5\u8981\u3067\u3059\u3002</li> <li>VS Code\u62e1\u5f35\u6a5f\u80fd\u30de\u30fc\u30b1\u30c3\u30c8\u30d7\u30ec\u30a4\u30b9\u3067<code>python</code>\u3092\u691c\u7d22\u3057\u3001Python Extension Pack\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002</li> <li>\uff08\u30aa\u30d7\u30b7\u30e7\u30f3\uff09\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u3067<code>pip install black</code>\u3092\u5165\u529b\u3057\u3066\u3001\u30b3\u30fc\u30c9\u30d5\u30a9\u30fc\u30de\u30c3\u30c6\u30a3\u30f3\u30b0\u30c4\u30fc\u30eb\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002</li> </ol>"},{"location":"chapter_appendix/installation/#2-cc","title":"2. \u00a0 C/C++\u74b0\u5883","text":"<ol> <li>Windows\u30b7\u30b9\u30c6\u30e0\u3067\u306fMinGW\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff08\u8a2d\u5b9a\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\uff09\u3002MacOS\u306b\u306fClang\u304c\u4ed8\u5c5e\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306f\u4e0d\u8981\u3067\u3059\u3002</li> <li>VS Code\u62e1\u5f35\u6a5f\u80fd\u30de\u30fc\u30b1\u30c3\u30c8\u30d7\u30ec\u30a4\u30b9\u3067<code>c++</code>\u3092\u691c\u7d22\u3057\u3001C/C++ Extension Pack\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002</li> <li>\uff08\u30aa\u30d7\u30b7\u30e7\u30f3\uff09\u8a2d\u5b9a\u30da\u30fc\u30b8\u3092\u958b\u304d\u3001<code>Clang_format_fallback Style</code>\u30b3\u30fc\u30c9\u30d5\u30a9\u30fc\u30de\u30c3\u30c6\u30a3\u30f3\u30b0\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u691c\u7d22\u3057\u3001<code>{ BasedOnStyle: Microsoft, BreakBeforeBraces: Attach }</code>\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002</li> </ol>"},{"location":"chapter_appendix/installation/#3-java","title":"3. \u00a0 Java\u74b0\u5883","text":"<ol> <li>OpenJDK\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\uff08\u30d0\u30fc\u30b8\u30e7\u30f3\u306fJDK 9\u3088\u308a\u65b0\u3057\u3044\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff09\u3002</li> <li>VS Code\u62e1\u5f35\u6a5f\u80fd\u30de\u30fc\u30b1\u30c3\u30c8\u30d7\u30ec\u30a4\u30b9\u3067<code>java</code>\u3092\u691c\u7d22\u3057\u3001Extension Pack for Java\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002</li> </ol>"},{"location":"chapter_appendix/installation/#4-c","title":"4. \u00a0 C#\u74b0\u5883","text":"<ol> <li>.Net 8.0\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002</li> <li>VS Code\u62e1\u5f35\u6a5f\u80fd\u30de\u30fc\u30b1\u30c3\u30c8\u30d7\u30ec\u30a4\u30b9\u3067<code>C# Dev Kit</code>\u3092\u691c\u7d22\u3057\u3001C# Dev Kit\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\uff08\u8a2d\u5b9a\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\uff09\u3002</li> <li>Visual Studio\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\uff08\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\uff09\u3002</li> </ol>"},{"location":"chapter_appendix/installation/#5-go","title":"5. \u00a0 Go\u74b0\u5883","text":"<ol> <li>go\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002</li> <li>VS Code\u62e1\u5f35\u6a5f\u80fd\u30de\u30fc\u30b1\u30c3\u30c8\u30d7\u30ec\u30a4\u30b9\u3067<code>go</code>\u3092\u691c\u7d22\u3057\u3001Go\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002</li> <li><code>Ctrl + Shift + P</code>\u3092\u62bc\u3057\u3066\u30b3\u30de\u30f3\u30c9\u30d0\u30fc\u3092\u547c\u3073\u51fa\u3057\u3001go\u3068\u5165\u529b\u3057\u3001<code>Go: Install/Update Tools</code>\u3092\u9078\u629e\u3057\u3001\u3059\u3079\u3066\u3092\u9078\u629e\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002</li> </ol>"},{"location":"chapter_appendix/installation/#6-swift","title":"6. \u00a0 Swift\u74b0\u5883","text":"<ol> <li>Swift\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002</li> <li>VS Code\u62e1\u5f35\u6a5f\u80fd\u30de\u30fc\u30b1\u30c3\u30c8\u30d7\u30ec\u30a4\u30b9\u3067<code>swift</code>\u3092\u691c\u7d22\u3057\u3001Swift for Visual Studio Code\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002</li> </ol>"},{"location":"chapter_appendix/installation/#7-javascript","title":"7. \u00a0 JavaScript\u74b0\u5883","text":"<ol> <li>Node.js\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002</li> <li>\uff08\u30aa\u30d7\u30b7\u30e7\u30f3\uff09VS Code\u62e1\u5f35\u6a5f\u80fd\u30de\u30fc\u30b1\u30c3\u30c8\u30d7\u30ec\u30a4\u30b9\u3067<code>Prettier</code>\u3092\u691c\u7d22\u3057\u3001\u30b3\u30fc\u30c9\u30d5\u30a9\u30fc\u30de\u30c3\u30c6\u30a3\u30f3\u30b0\u30c4\u30fc\u30eb\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002</li> </ol>"},{"location":"chapter_appendix/installation/#8-typescript","title":"8. \u00a0 TypeScript\u74b0\u5883","text":"<ol> <li>JavaScript\u74b0\u5883\u3068\u540c\u3058\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u624b\u9806\u306b\u5f93\u3044\u307e\u3059\u3002</li> <li>TypeScript Execute (tsx)\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002</li> <li>VS Code\u62e1\u5f35\u6a5f\u80fd\u30de\u30fc\u30b1\u30c3\u30c8\u30d7\u30ec\u30a4\u30b9\u3067<code>typescript</code>\u3092\u691c\u7d22\u3057\u3001Pretty TypeScript Errors\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002</li> </ol>"},{"location":"chapter_appendix/installation/#9-dart","title":"9. \u00a0 Dart\u74b0\u5883","text":"<ol> <li>Dart\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002</li> <li>VS Code\u62e1\u5f35\u6a5f\u80fd\u30de\u30fc\u30b1\u30c3\u30c8\u30d7\u30ec\u30a4\u30b9\u3067<code>dart</code>\u3092\u691c\u7d22\u3057\u3001Dart\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002</li> </ol>"},{"location":"chapter_appendix/installation/#10-rust","title":"10. \u00a0 Rust\u74b0\u5883","text":"<ol> <li>Rust\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002</li> <li>VS Code\u62e1\u5f35\u6a5f\u80fd\u30de\u30fc\u30b1\u30c3\u30c8\u30d7\u30ec\u30a4\u30b9\u3067<code>rust</code>\u3092\u691c\u7d22\u3057\u3001rust-analyzer\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002</li> </ol>"},{"location":"chapter_appendix/terminology/","title":"16.3 \u00a0 \u7528\u8a9e\u96c6","text":"<p>\u4e0b\u306e\u8868\u306f\u672c\u66f8\u306b\u767b\u5834\u3059\u308b\u91cd\u8981\u306a\u7528\u8a9e\u3092\u30ea\u30b9\u30c8\u30a2\u30c3\u30d7\u3057\u3066\u304a\u308a\u3001\u4ee5\u4e0b\u306e\u70b9\u306b\u6ce8\u610f\u3059\u308b\u4fa1\u5024\u304c\u3042\u308a\u307e\u3059\u3002</p> <ul> <li>\u82f1\u8a9e\u6587\u732e\u3092\u8aad\u307f\u3084\u3059\u304f\u3059\u308b\u305f\u3081\u3001\u7528\u8a9e\u306e\u82f1\u8a9e\u540d\u3092\u899a\u3048\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002</li> <li>\u4e00\u90e8\u306e\u7528\u8a9e\u306f\u7c21\u4f53\u5b57\u4e2d\u56fd\u8a9e\u3068\u7e41\u4f53\u5b57\u4e2d\u56fd\u8a9e\u3067\u7570\u306a\u308b\u540d\u524d\u3092\u6301\u3061\u307e\u3059\u3002</li> </ul> <p> \u8868 16-1 \u00a0 \u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u91cd\u8981\u7528\u8a9e </p> English \u65e5\u672c\u8a9e \u7b80\u4f53\u4e2d\u6587 \u7e41\u4f53\u4e2d\u6587 algorithm \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0 \u7b97\u6cd5 \u6f14\u7b97\u6cd5 data structure \u30c7\u30fc\u30bf\u69cb\u9020 \u6570\u636e\u7ed3\u6784 \u8cc7\u6599\u7d50\u69cb code \u30b3\u30fc\u30c9 \u4ee3\u7801 \u7a0b\u5f0f\u78bc file \u30d5\u30a1\u30a4\u30eb \u6587\u4ef6 \u6a94\u6848 function \u95a2\u6570 \u51fd\u6570 \u51fd\u5f0f method \u30e1\u30bd\u30c3\u30c9 \u65b9\u6cd5 \u65b9\u6cd5 variable \u5909\u6570 \u53d8\u91cf \u8b8a\u6578 asymptotic complexity analysis \u6f38\u8fd1\u8a08\u7b97\u91cf\u89e3\u6790 \u6e10\u8fd1\u590d\u6742\u5ea6\u5206\u6790 \u6f38\u8fd1\u8907\u96dc\u5ea6\u5206\u6790 time complexity \u6642\u9593\u8a08\u7b97\u91cf \u65f6\u95f4\u590d\u6742\u5ea6 \u6642\u9593\u8907\u96dc\u5ea6 space complexity \u7a7a\u9593\u8a08\u7b97\u91cf \u7a7a\u95f4\u590d\u6742\u5ea6 \u7a7a\u9593\u8907\u96dc\u5ea6 loop \u30eb\u30fc\u30d7 \u5faa\u73af \u8ff4\u5708 iteration \u53cd\u5fa9 \u8fed\u4ee3 \u8fed\u4ee3 recursion \u518d\u5e30 \u9012\u5f52 \u905e\u8ff4 tail recursion \u672b\u5c3e\u518d\u5e30 \u5c3e\u9012\u5f52 \u5c3e\u905e\u8ff4 recursion tree \u518d\u5e30\u6728 \u9012\u5f52\u6811 \u905e\u8ff4\u6a39 big-\\(O\\) notation \u30d3\u30c3\u30b0O\u8a18\u6cd5 \u5927 \\(O\\) \u8bb0\u53f7 \u5927 \\(O\\) \u8a18\u865f asymptotic upper bound \u6f38\u8fd1\u4e0a\u754c \u6e10\u8fd1\u4e0a\u754c \u6f38\u8fd1\u4e0a\u754c sign-magnitude \u7b26\u53f7\u3068\u7d76\u5bfe\u5024 \u539f\u7801 \u539f\u78bc 1's complement 1\u306e\u88dc\u6570 \u53cd\u7801 \u4e00\u88dc\u6578 2's complement 2\u306e\u88dc\u6570 \u8865\u7801 \u4e8c\u88dc\u6578 array \u914d\u5217 \u6570\u7ec4 \u9663\u5217 index \u30a4\u30f3\u30c7\u30c3\u30af\u30b9 \u7d22\u5f15 \u7d22\u5f15 linked list \u9023\u7d50\u30ea\u30b9\u30c8 \u94fe\u8868 \u93c8\u7d50\u4e32\u5217 linked list node, list node \u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9 \u94fe\u8868\u8282\u70b9 \u93c8\u7d50\u4e32\u5217\u7bc0\u9ede head node \u5148\u982d\u30ce\u30fc\u30c9 \u5934\u8282\u70b9 \u982d\u7bc0\u9ede tail node \u672b\u5c3e\u30ce\u30fc\u30c9 \u5c3e\u8282\u70b9 \u5c3e\u7bc0\u9ede list \u30ea\u30b9\u30c8 \u5217\u8868 \u4e32\u5217 dynamic array \u52d5\u7684\u914d\u5217 \u52a8\u6001\u6570\u7ec4 \u52d5\u614b\u9663\u5217 hard disk \u30cf\u30fc\u30c9\u30c7\u30a3\u30b9\u30af \u786c\u76d8 \u786c\u789f random-access memory (RAM) \u30e1\u30e2\u30ea \u5185\u5b58 \u8a18\u61b6\u9ad4 cache memory \u30ad\u30e3\u30c3\u30b7\u30e5\u30e1\u30e2\u30ea \u7f13\u5b58 \u5feb\u53d6 cache miss \u30ad\u30e3\u30c3\u30b7\u30e5\u30df\u30b9 \u7f13\u5b58\u672a\u547d\u4e2d \u5feb\u53d6\u672a\u547d\u4e2d cache hit rate \u30ad\u30e3\u30c3\u30b7\u30e5\u30d2\u30c3\u30c8\u7387 \u7f13\u5b58\u547d\u4e2d\u7387 \u5feb\u53d6\u547d\u4e2d\u7387 stack \u30b9\u30bf\u30c3\u30af \u6808 \u5806\u758a top of the stack \u30b9\u30bf\u30c3\u30af\u30c8\u30c3\u30d7 \u6808\u9876 \u5806\u758a\u9802 bottom of the stack \u30b9\u30bf\u30c3\u30af\u30dc\u30c8\u30e0 \u6808\u5e95 \u5806\u758a\u5e95 queue \u30ad\u30e5\u30fc \u961f\u5217 \u4f47\u5217 double-ended queue \u4e21\u7aef\u30ad\u30e5\u30fc \u53cc\u5411\u961f\u5217 \u96d9\u5411\u4f47\u5217 front of the queue \u30ad\u30e5\u30fc\u306e\u5148\u982d \u961f\u9996 \u4f47\u5217\u9996 rear of the queue \u30ad\u30e5\u30fc\u306e\u672b\u5c3e \u961f\u5c3e \u4f47\u5217\u5c3e hash table \u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb \u54c8\u5e0c\u8868 \u96dc\u6e4a\u8868 hash set \u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8 \u54c8\u5e0c\u96c6\u5408 \u96dc\u6e4a\u96c6\u5408 bucket \u30d0\u30b1\u30c3\u30c8 \u6876 \u6876 hash function \u30cf\u30c3\u30b7\u30e5\u95a2\u6570 \u54c8\u5e0c\u51fd\u6570 \u96dc\u6e4a\u51fd\u5f0f hash collision \u30cf\u30c3\u30b7\u30e5\u885d\u7a81 \u54c8\u5e0c\u51b2\u7a81 \u96dc\u6e4a\u885d\u7a81 load factor \u8ca0\u8377\u7387 \u8d1f\u8f7d\u56e0\u5b50 \u8ca0\u8f09\u56e0\u5b50 separate chaining \u30c1\u30a7\u30a4\u30f3\u6cd5 \u94fe\u5f0f\u5730\u5740 \u93c8\u7d50\u4f4d\u5740 open addressing \u30aa\u30fc\u30d7\u30f3\u30a2\u30c9\u30ec\u30b9\u6cd5 \u5f00\u653e\u5bfb\u5740 \u958b\u653e\u5b9a\u5740 linear probing \u7dda\u5f62\u30d7\u30ed\u30fc\u30d6\u6cd5 \u7ebf\u6027\u63a2\u6d4b \u7dda\u6027\u63a2\u67e5 lazy deletion \u9045\u5ef6\u524a\u9664 \u61d2\u5220\u9664 \u61f6\u522a\u9664 binary tree \u4e8c\u5206\u6728 \u4e8c\u53c9\u6811 \u4e8c\u5143\u6a39 tree node \u6728\u306e\u30ce\u30fc\u30c9 \u6811\u8282\u70b9 \u6a39\u7bc0\u9ede left-child node \u5de6\u306e\u5b50\u30ce\u30fc\u30c9 \u5de6\u5b50\u8282\u70b9 \u5de6\u5b50\u7bc0\u9ede right-child node \u53f3\u306e\u5b50\u30ce\u30fc\u30c9 \u53f3\u5b50\u8282\u70b9 \u53f3\u5b50\u7bc0\u9ede parent node \u89aa\u30ce\u30fc\u30c9 \u7236\u8282\u70b9 \u7236\u7bc0\u9ede left subtree \u5de6\u306e\u90e8\u5206\u6728 \u5de6\u5b50\u6811 \u5de6\u5b50\u6a39 right subtree \u53f3\u306e\u90e8\u5206\u6728 \u53f3\u5b50\u6811 \u53f3\u5b50\u6a39 root node \u30eb\u30fc\u30c8\u30ce\u30fc\u30c9 \u6839\u8282\u70b9 \u6839\u7bc0\u9ede leaf node \u8449\u30ce\u30fc\u30c9 \u53f6\u8282\u70b9 \u8449\u7bc0\u9ede edge \u30a8\u30c3\u30b8 \u8fb9 \u908a level \u30ec\u30d9\u30eb \u5c42 \u5c64 degree \u6b21\u6570 \u5ea6 \u5ea6 height \u9ad8\u3055 \u9ad8\u5ea6 \u9ad8\u5ea6 depth \u6df1\u3055 \u6df1\u5ea6 \u6df1\u5ea6 perfect binary tree \u5b8c\u5168\u4e8c\u5206\u6728 \u5b8c\u7f8e\u4e8c\u53c9\u6811 \u5b8c\u7f8e\u4e8c\u5143\u6a39 complete binary tree \u5b8c\u5168\u4e8c\u5206\u6728 \u5b8c\u5168\u4e8c\u53c9\u6811 \u5b8c\u5168\u4e8c\u5143\u6a39 full binary tree \u6e80\u4e8c\u5206\u6728 \u5b8c\u6ee1\u4e8c\u53c9\u6811 \u5b8c\u6eff\u4e8c\u5143\u6a39 balanced binary tree \u5e73\u8861\u4e8c\u5206\u6728 \u5e73\u8861\u4e8c\u53c9\u6811 \u5e73\u8861\u4e8c\u5143\u6a39 binary search tree \u4e8c\u5206\u63a2\u7d22\u6728 \u4e8c\u53c9\u641c\u7d22\u6811 \u4e8c\u5143\u641c\u5c0b\u6a39 AVL tree AVL\u6728 AVL \u6811 AVL \u6a39 red-black tree \u8d64\u9ed2\u6728 \u7ea2\u9ed1\u6811 \u7d05\u9ed1\u6a39 level-order traversal \u30ec\u30d9\u30eb\u9806\u8d70\u67fb \u5c42\u5e8f\u904d\u5386 \u5c64\u5e8f\u8d70\u8a2a breadth-first traversal \u5e45\u512a\u5148\u8d70\u67fb \u5e7f\u5ea6\u4f18\u5148\u904d\u5386 \u5ee3\u5ea6\u512a\u5148\u8d70\u8a2a depth-first traversal \u6df1\u3055\u512a\u5148\u8d70\u67fb \u6df1\u5ea6\u4f18\u5148\u904d\u5386 \u6df1\u5ea6\u512a\u5148\u8d70\u8a2a binary search tree \u4e8c\u5206\u63a2\u7d22\u6728 \u4e8c\u53c9\u641c\u7d22\u6811 \u4e8c\u5143\u641c\u5c0b\u6a39 balanced binary search tree \u5e73\u8861\u4e8c\u5206\u63a2\u7d22\u6728 \u5e73\u8861\u4e8c\u53c9\u641c\u7d22\u6811 \u5e73\u8861\u4e8c\u5143\u641c\u5c0b\u6a39 balance factor \u5e73\u8861\u56e0\u5b50 \u5e73\u8861\u56e0\u5b50 \u5e73\u8861\u56e0\u5b50 heap \u30d2\u30fc\u30d7 \u5806 \u5806\u7a4d max heap \u6700\u5927\u30d2\u30fc\u30d7 \u5927\u9876\u5806 \u5927\u9802\u5806\u7a4d min heap \u6700\u5c0f\u30d2\u30fc\u30d7 \u5c0f\u9876\u5806 \u5c0f\u9802\u5806\u7a4d priority queue \u512a\u5148\u5ea6\u30ad\u30e5\u30fc \u4f18\u5148\u961f\u5217 \u512a\u5148\u4f47\u5217 heapify \u30d2\u30fc\u30d7\u5316 \u5806\u5316 \u5806\u7a4d\u5316 top-\\(k\\) problem Top-\\(k\\) \u554f\u984c Top-\\(k\\) \u95ee\u9898 Top-\\(k\\) \u554f\u984c graph \u30b0\u30e9\u30d5 \u56fe \u5716 vertex \u9802\u70b9 \u9876\u70b9 \u9802\u9ede undirected graph \u7121\u5411\u30b0\u30e9\u30d5 \u65e0\u5411\u56fe \u7121\u5411\u5716 directed graph \u6709\u5411\u30b0\u30e9\u30d5 \u6709\u5411\u56fe \u6709\u5411\u5716 connected graph \u9023\u7d50\u30b0\u30e9\u30d5 \u8fde\u901a\u56fe \u9023\u901a\u5716 disconnected graph \u975e\u9023\u7d50\u30b0\u30e9\u30d5 \u975e\u8fde\u901a\u56fe \u975e\u9023\u901a\u5716 weighted graph \u91cd\u307f\u4ed8\u304d\u30b0\u30e9\u30d5 \u6709\u6743\u56fe \u6709\u6b0a\u5716 adjacency \u96a3\u63a5 \u90bb\u63a5 \u9130\u63a5 path \u30d1\u30b9 \u8def\u5f84 \u8def\u5f91 in-degree \u5165\u6b21\u6570 \u5165\u5ea6 \u5165\u5ea6 out-degree \u51fa\u6b21\u6570 \u51fa\u5ea6 \u51fa\u5ea6 adjacency matrix \u96a3\u63a5\u884c\u5217 \u90bb\u63a5\u77e9\u9635 \u9130\u63a5\u77e9\u9663 adjacency list \u96a3\u63a5\u30ea\u30b9\u30c8 \u90bb\u63a5\u8868 \u9130\u63a5\u8868 breadth-first search \u5e45\u512a\u5148\u63a2\u7d22 \u5e7f\u5ea6\u4f18\u5148\u641c\u7d22 \u5ee3\u5ea6\u512a\u5148\u641c\u5c0b depth-first search \u6df1\u3055\u512a\u5148\u63a2\u7d22 \u6df1\u5ea6\u4f18\u5148\u641c\u7d22 \u6df1\u5ea6\u512a\u5148\u641c\u5c0b binary search \u4e8c\u5206\u63a2\u7d22 \u4e8c\u5206\u67e5\u627e \u4e8c\u5206\u641c\u5c0b searching algorithm \u63a2\u7d22\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0 \u641c\u7d22\u7b97\u6cd5 \u641c\u5c0b\u6f14\u7b97\u6cd5 sorting algorithm \u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0 \u6392\u5e8f\u7b97\u6cd5 \u6392\u5e8f\u6f14\u7b97\u6cd5 selection sort \u9078\u629e\u30bd\u30fc\u30c8 \u9009\u62e9\u6392\u5e8f \u9078\u64c7\u6392\u5e8f bubble sort \u30d0\u30d6\u30eb\u30bd\u30fc\u30c8 \u5192\u6ce1\u6392\u5e8f \u6ce1\u6cab\u6392\u5e8f insertion sort \u633f\u5165\u30bd\u30fc\u30c8 \u63d2\u5165\u6392\u5e8f \u63d2\u5165\u6392\u5e8f quick sort \u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8 \u5feb\u901f\u6392\u5e8f \u5feb\u901f\u6392\u5e8f merge sort \u30de\u30fc\u30b8\u30bd\u30fc\u30c8 \u5f52\u5e76\u6392\u5e8f \u5408\u4f75\u6392\u5e8f heap sort \u30d2\u30fc\u30d7\u30bd\u30fc\u30c8 \u5806\u6392\u5e8f \u5806\u7a4d\u6392\u5e8f bucket sort \u30d0\u30b1\u30c3\u30c8\u30bd\u30fc\u30c8 \u6876\u6392\u5e8f \u6876\u6392\u5e8f counting sort \u8a08\u6570\u30bd\u30fc\u30c8 \u8ba1\u6570\u6392\u5e8f \u8a08\u6578\u6392\u5e8f radix sort \u57fa\u6570\u30bd\u30fc\u30c8 \u57fa\u6570\u6392\u5e8f \u57fa\u6578\u6392\u5e8f divide and conquer \u5206\u5272\u7d71\u6cbb\u6cd5 \u5206\u6cbb \u5206\u6cbb hanota problem \u30cf\u30ce\u30a4\u306e\u5854\u554f\u984c \u6c49\u8bfa\u5854\u95ee\u9898 \u6cb3\u5167\u5854\u554f\u984c backtracking algorithm \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0 \u56de\u6eaf\u7b97\u6cd5 \u56de\u6eaf\u6f14\u7b97\u6cd5 constraint \u5236\u7d04 \u7ea6\u675f \u7d04\u675f solution \u89e3 \u89e3 \u89e3 state \u72b6\u614b \u72b6\u6001 \u72c0\u614b pruning \u679d\u5208\u308a \u526a\u679d \u526a\u679d permutations problem \u9806\u5217\u554f\u984c \u5168\u6392\u5217\u95ee\u9898 \u5168\u6392\u5217\u554f\u984c subset-sum problem \u90e8\u5206\u96c6\u5408\u548c\u554f\u984c \u5b50\u96c6\u548c\u95ee\u9898 \u5b50\u96c6\u5408\u554f\u984c \\(n\\)-queens problem \\(n\\) \u30af\u30a4\u30fc\u30f3\u554f\u984c \\(n\\) \u7687\u540e\u95ee\u9898 \\(n\\) \u7687\u540e\u554f\u984c dynamic programming \u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 \u52a8\u6001\u89c4\u5212 \u52d5\u614b\u898f\u5283 initial state \u521d\u671f\u72b6\u614b \u521d\u59cb\u72b6\u6001 \u521d\u59cb\u72c0\u614b state-transition equation \u72b6\u614b\u9077\u79fb\u65b9\u7a0b\u5f0f \u72b6\u6001\u8f6c\u79fb\u65b9\u7a0b \u72c0\u614b\u8f49\u79fb\u65b9\u7a0b knapsack problem \u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c \u80cc\u5305\u95ee\u9898 \u80cc\u5305\u554f\u984c edit distance problem \u7de8\u96c6\u8ddd\u96e2\u554f\u984c \u7f16\u8f91\u8ddd\u79bb\u95ee\u9898 \u7de8\u8f2f\u8ddd\u96e2\u554f\u984c greedy algorithm \u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0 \u8d2a\u5fc3\u7b97\u6cd5 \u8caa\u5a6a\u6f14\u7b97\u6cd5"},{"location":"chapter_array_and_linkedlist/","title":"\u7b2c 4 \u7ae0 \u00a0 \u914d\u5217\u3068\u9023\u7d50\u30ea\u30b9\u30c8","text":"<p>Abstract</p> <p>\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u4e16\u754c\u306f\u9811\u4e08\u306a\u30ec\u30f3\u30ac\u306e\u58c1\u306b\u4f3c\u3066\u3044\u307e\u3059\u3002</p> <p>\u914d\u5217\u3067\u306f\u3001\u30ec\u30f3\u30ac\u304c\u3074\u3063\u305f\u308a\u3068\u6574\u5217\u3057\u3001\u305d\u308c\u305e\u308c\u304c\u6b21\u306e\u3082\u306e\u3068\u7d99\u304e\u76ee\u306a\u304f\u96a3\u308a\u5408\u3063\u3066\u3001\u7d71\u4e00\u3055\u308c\u305f\u5f62\u6210\u3092\u4f5c\u3063\u3066\u3044\u308b\u59ff\u3092\u60f3\u50cf\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u65b9\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u30ec\u30f3\u30ac\u304c\u81ea\u7531\u306b\u6563\u3089\u3070\u308a\u3001\u305d\u308c\u3089\u306e\u9593\u3092\u512a\u96c5\u306b\u7de8\u307f\u8fbc\u3080\u8526\u306b\u62b1\u304b\u308c\u3066\u3044\u307e\u3059\u3002</p>"},{"location":"chapter_array_and_linkedlist/#_1","title":"\u7ae0\u306e\u5185\u5bb9","text":"<ul> <li>4.1 \u00a0 \u914d\u5217</li> <li>4.2 \u00a0 \u9023\u7d50\u30ea\u30b9\u30c8</li> <li>4.3 \u00a0 \u30ea\u30b9\u30c8</li> <li>4.4 \u00a0 \u30e1\u30e2\u30ea\u3068\u30ad\u30e3\u30c3\u30b7\u30e5 *</li> <li>4.5 \u00a0 \u307e\u3068\u3081</li> </ul>"},{"location":"chapter_array_and_linkedlist/array/","title":"4.1 \u00a0 \u914d\u5217","text":"<p>\u914d\u5217\u306f\u7dda\u5f62\u30c7\u30fc\u30bf\u69cb\u9020\u3067\u3001\u540c\u3058\u3088\u3046\u306a\u9805\u76ee\u304c\u4e26\u3093\u3067\u3044\u308b\u3088\u3046\u306a\u3082\u306e\u3067\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u306e\u30e1\u30e2\u30ea\u5185\u306e\u9023\u7d9a\u3057\u305f\u7a7a\u9593\u306b\u4e00\u7dd2\u306b\u683c\u7d0d\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306f\u6574\u7406\u3055\u308c\u305f\u683c\u7d0d\u3092\u7dad\u6301\u3059\u308b\u30b7\u30fc\u30b1\u30f3\u30b9\u306e\u3088\u3046\u306a\u3082\u306e\u3067\u3059\u3002\u3053\u306e\u4e26\u3073\u306e\u5404\u9805\u76ee\u306b\u306f\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3068\u3057\u3066\u77e5\u3089\u308c\u308b\u72ec\u81ea\u306e\u300c\u4f4d\u7f6e\u300d\u304c\u3042\u308a\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u56f3\u3092\u53c2\u7167\u3057\u3066\u3001\u914d\u5217\u306e\u52d5\u4f5c\u3092\u89b3\u5bdf\u3057\u3001\u3053\u308c\u3089\u306e\u91cd\u8981\u306a\u7528\u8a9e\u3092\u7406\u89e3\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <p></p> <p> \u56f3 4-1 \u00a0 \u914d\u5217\u306e\u5b9a\u7fa9\u3068\u683c\u7d0d\u65b9\u6cd5 </p>"},{"location":"chapter_array_and_linkedlist/array/#411","title":"4.1.1 \u00a0 \u914d\u5217\u306e\u4e00\u822c\u7684\u306a\u64cd\u4f5c","text":""},{"location":"chapter_array_and_linkedlist/array/#1","title":"1. \u00a0 \u914d\u5217\u306e\u521d\u671f\u5316","text":"<p>\u914d\u5217\u306f\u5fc5\u8981\u306b\u5fdc\u3058\u30662\u3064\u306e\u65b9\u6cd5\u3067\u521d\u671f\u5316\u3067\u304d\u307e\u3059\uff1a\u521d\u671f\u5024\u306a\u3057\u307e\u305f\u306f\u6307\u5b9a\u3055\u308c\u305f\u521d\u671f\u5024\u4ed8\u304d\u3067\u3059\u3002\u521d\u671f\u5024\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001\u307b\u3068\u3093\u3069\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306f\u914d\u5217\u8981\u7d20\u3092\\(0\\)\u306b\u8a2d\u5b9a\u3057\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlin array.py<pre><code># \u914d\u5217\u3092\u521d\u671f\u5316\narr: list[int] = [0] * 5 # [ 0, 0, 0, 0, 0 ]\nnums: list[int] = [1, 3, 2, 5, 4]\n</code></pre> array.cpp<pre><code>/* \u914d\u5217\u3092\u521d\u671f\u5316 */\n// \u30b9\u30bf\u30c3\u30af\u306b\u683c\u7d0d\nint arr[5];\nint nums[5] = { 1, 3, 2, 5, 4 };\n// \u30d2\u30fc\u30d7\u306b\u683c\u7d0d\uff08\u624b\u52d5\u3067\u306e\u30e1\u30e2\u30ea\u89e3\u653e\u304c\u5fc5\u8981\uff09\nint* arr1 = new int[5];\nint* nums1 = new int[5] { 1, 3, 2, 5, 4 };\n</code></pre> array.java<pre><code>/* \u914d\u5217\u3092\u521d\u671f\u5316 */\nint[] arr = new int[5]; // { 0, 0, 0, 0, 0 }\nint[] nums = { 1, 3, 2, 5, 4 };\n</code></pre> array.cs<pre><code>/* \u914d\u5217\u3092\u521d\u671f\u5316 */\nint[] arr = new int[5]; // [ 0, 0, 0, 0, 0 ]\nint[] nums = [1, 3, 2, 5, 4];\n</code></pre> array.go<pre><code>/* \u914d\u5217\u3092\u521d\u671f\u5316 */\nvar arr [5]int\n// Go\u3067\u306f\u3001\u9577\u3055\u3092\u6307\u5b9a\uff08[5]int\uff09\u3059\u308b\u3068\u914d\u5217\u3092\u793a\u3057\u3001\u6307\u5b9a\u3057\u306a\u3044\uff08[]int\uff09\u3068\u30b9\u30e9\u30a4\u30b9\u3092\u793a\u3057\u307e\u3059\u3002\n// Go\u306e\u914d\u5217\u306f\u30b3\u30f3\u30d1\u30a4\u30eb\u6642\u306b\u56fa\u5b9a\u9577\u3092\u6301\u3064\u3088\u3046\u8a2d\u8a08\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u9577\u3055\u306e\u6307\u5b9a\u306b\u306f\u5b9a\u6570\u306e\u307f\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\n// extend()\u30e1\u30bd\u30c3\u30c9\u306e\u5b9f\u88c5\u306e\u4fbf\u5b9c\u4e0a\u3001\u3053\u3053\u3067\u306fSlice\u3092\u914d\u5217\u3068\u3057\u3066\u6271\u3044\u307e\u3059\u3002\nnums := []int{1, 3, 2, 5, 4}\n</code></pre> array.swift<pre><code>/* \u914d\u5217\u3092\u521d\u671f\u5316 */\nlet arr = Array(repeating: 0, count: 5) // [0, 0, 0, 0, 0]\nlet nums = [1, 3, 2, 5, 4]\n</code></pre> array.js<pre><code>/* \u914d\u5217\u3092\u521d\u671f\u5316 */\nvar arr = new Array(5).fill(0);\nvar nums = [1, 3, 2, 5, 4];\n</code></pre> array.ts<pre><code>/* \u914d\u5217\u3092\u521d\u671f\u5316 */\nlet arr: number[] = new Array(5).fill(0);\nlet nums: number[] = [1, 3, 2, 5, 4];\n</code></pre> array.dart<pre><code>/* \u914d\u5217\u3092\u521d\u671f\u5316 */\nList&lt;int&gt; arr = List.filled(5, 0); // [0, 0, 0, 0, 0]\nList&lt;int&gt; nums = [1, 3, 2, 5, 4];\n</code></pre> array.rs<pre><code>/* \u914d\u5217\u3092\u521d\u671f\u5316 */\nlet arr: [i32; 5] = [0; 5]; // [0, 0, 0, 0, 0]\nlet slice: &amp;[i32] = &amp;[0; 5];\n// Rust\u3067\u306f\u3001\u9577\u3055\u3092\u6307\u5b9a\uff08[i32; 5]\uff09\u3059\u308b\u3068\u914d\u5217\u3092\u793a\u3057\u3001\u6307\u5b9a\u3057\u306a\u3044\uff08&amp;[i32]\uff09\u3068\u30b9\u30e9\u30a4\u30b9\u3092\u793a\u3057\u307e\u3059\u3002\n// Rust\u306e\u914d\u5217\u306f\u30b3\u30f3\u30d1\u30a4\u30eb\u6642\u306b\u56fa\u5b9a\u9577\u3092\u6301\u3064\u3088\u3046\u8a2d\u8a08\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u9577\u3055\u306e\u6307\u5b9a\u306b\u306f\u5b9a\u6570\u306e\u307f\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\n// \u4e00\u822c\u7684\u306bRust\u3067\u306f\u52d5\u7684\u914d\u5217\u3068\u3057\u3066Vector\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\n// extend()\u30e1\u30bd\u30c3\u30c9\u306e\u5b9f\u88c5\u306e\u4fbf\u5b9c\u4e0a\u3001\u3053\u3053\u3067\u306f\u30d9\u30af\u30bf\u30fc\u3092\u914d\u5217\u3068\u3057\u3066\u6271\u3044\u307e\u3059\u3002\nlet nums: Vec&lt;i32&gt; = vec![1, 3, 2, 5, 4];\n</code></pre> array.c<pre><code>/* \u914d\u5217\u3092\u521d\u671f\u5316 */\nint arr[5] = { 0 }; // { 0, 0, 0, 0, 0 }\nint nums[5] = { 1, 3, 2, 5, 4 };\n</code></pre> array.kt<pre><code>\n</code></pre>"},{"location":"chapter_array_and_linkedlist/array/#2","title":"2. \u00a0 \u8981\u7d20\u3078\u306e\u30a2\u30af\u30bb\u30b9","text":"<p>\u914d\u5217\u5185\u306e\u8981\u7d20\u306f\u9023\u7d9a\u3057\u305f\u30e1\u30e2\u30ea\u7a7a\u9593\u306b\u683c\u7d0d\u3055\u308c\u308b\u305f\u3081\u3001\u5404\u8981\u7d20\u306e\u30e1\u30e2\u30ea\u30a2\u30c9\u30ec\u30b9\u3092\u8a08\u7b97\u3059\u308b\u3053\u3068\u304c\u7c21\u5358\u306b\u306a\u308a\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3055\u308c\u3066\u3044\u308b\u516c\u5f0f\u306f\u3001\u914d\u5217\u306e\u30e1\u30e2\u30ea\u30a2\u30c9\u30ec\u30b9\uff08\u7279\u306b\u3001\u6700\u521d\u306e\u8981\u7d20\u306e\u30a2\u30c9\u30ec\u30b9\uff09\u3068\u8981\u7d20\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u5229\u7528\u3057\u3066\u3001\u8981\u7d20\u306e\u30e1\u30e2\u30ea\u30a2\u30c9\u30ec\u30b9\u3092\u6c7a\u5b9a\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002\u3053\u306e\u8a08\u7b97\u306b\u3088\u308a\u3001\u76ee\u7684\u306e\u8981\u7d20\u3078\u306e\u76f4\u63a5\u30a2\u30af\u30bb\u30b9\u304c\u5408\u7406\u5316\u3055\u308c\u307e\u3059\u3002</p> <p></p> <p> \u56f3 4-2 \u00a0 \u914d\u5217\u8981\u7d20\u306e\u30e1\u30e2\u30ea\u30a2\u30c9\u30ec\u30b9\u8a08\u7b97 </p> <p>\u4e0a\u306e\u56f3\u3067\u89b3\u5bdf\u3055\u308c\u308b\u3088\u3046\u306b\u3001\u914d\u5217\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306f\u6163\u4f8b\u7684\u306b\\(0\\)\u304b\u3089\u59cb\u307e\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u76f4\u611f\u306b\u53cd\u3059\u308b\u3088\u3046\u306b\u898b\u3048\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u6570\u3092\u6570\u3048\u308b\u306e\u306f\u901a\u5e38\\(1\\)\u304b\u3089\u59cb\u307e\u308b\u305f\u3081\u3067\u3059\u304c\u3001\u30a2\u30c9\u30ec\u30b9\u8a08\u7b97\u516c\u5f0f\u5185\u3067\u306f\u3001**\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306f\u672c\u8cea\u7684\u306b\u30e1\u30e2\u30ea\u30a2\u30c9\u30ec\u30b9\u304b\u3089\u306e\u30aa\u30d5\u30bb\u30c3\u30c8**\u3067\u3059\u3002\u6700\u521d\u306e\u8981\u7d20\u306e\u30a2\u30c9\u30ec\u30b9\u3067\u306f\u3001\u3053\u306e\u30aa\u30d5\u30bb\u30c3\u30c8\u306f\\(0\\)\u3067\u3001\u305d\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\\(0\\)\u3067\u3042\u308b\u3053\u3068\u3092\u691c\u8a3c\u3057\u3066\u3044\u307e\u3059\u3002</p> <p>\u914d\u5217\u5185\u306e\u8981\u7d20\u3078\u306e\u30a2\u30af\u30bb\u30b9\u306f\u975e\u5e38\u306b\u52b9\u7387\u7684\u3067\u3001\\(O(1)\\)\u6642\u9593\u3067\u4efb\u610f\u306e\u8981\u7d20\u306b\u30e9\u30f3\u30c0\u30e0\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby array.py<pre><code>def random_access(nums: list[int]) -&gt; int:\n \"\"\"\u8981\u7d20\u3078\u306e\u30e9\u30f3\u30c0\u30e0\u30a2\u30af\u30bb\u30b9\"\"\"\n # \u533a\u9593 [0, len(nums)-1] \u304b\u3089\u6570\u5024\u3092\u30e9\u30f3\u30c0\u30e0\u306b\u9078\u629e\n random_index = random.randint(0, len(nums) - 1)\n # \u30e9\u30f3\u30c0\u30e0\u306a\u8981\u7d20\u3092\u53d6\u5f97\u3057\u3066\u8fd4\u3059\n random_num = nums[random_index]\n return random_num\n</code></pre> array.cpp<pre><code>/* \u8981\u7d20\u3078\u306e\u4e71\u6570\u30a2\u30af\u30bb\u30b9 */\nint randomAccess(int *nums, int size) {\n // [0, size)\u306e\u7bc4\u56f2\u3067\u4e71\u6570\u3092\u9078\u629e\n int randomIndex = rand() % size;\n // \u4e71\u6570\u8981\u7d20\u3092\u53d6\u5f97\u3057\u3066\u8fd4\u5374\n int randomNum = nums[randomIndex];\n return randomNum;\n}\n</code></pre> array.java<pre><code>/* \u8981\u7d20\u3078\u306e\u30e9\u30f3\u30c0\u30e0\u30a2\u30af\u30bb\u30b9 */\nint randomAccess(int[] nums) {\n // \u533a\u9593 [0, nums.length) \u304b\u3089\u30e9\u30f3\u30c0\u30e0\u306b\u6570\u3092\u9078\u629e\n int randomIndex = ThreadLocalRandom.current().nextInt(0, nums.length);\n // \u30e9\u30f3\u30c0\u30e0\u8981\u7d20\u3092\u53d6\u5f97\u3057\u3066\u8fd4\u3059\n int randomNum = nums[randomIndex];\n return randomNum;\n}\n</code></pre> array.cs<pre><code>[class]{array}-[func]{RandomAccess}\n</code></pre> array.go<pre><code>[class]{}-[func]{randomAccess}\n</code></pre> array.swift<pre><code>[class]{}-[func]{randomAccess}\n</code></pre> array.js<pre><code>[class]{}-[func]{randomAccess}\n</code></pre> array.ts<pre><code>[class]{}-[func]{randomAccess}\n</code></pre> array.dart<pre><code>[class]{}-[func]{randomAccess}\n</code></pre> array.rs<pre><code>[class]{}-[func]{random_access}\n</code></pre> array.c<pre><code>[class]{}-[func]{randomAccess}\n</code></pre> array.kt<pre><code>[class]{}-[func]{randomAccess}\n</code></pre> array.rb<pre><code>[class]{}-[func]{random_access}\n</code></pre>"},{"location":"chapter_array_and_linkedlist/array/#3","title":"3. \u00a0 \u8981\u7d20\u306e\u633f\u5165","text":"<p>\u914d\u5217\u8981\u7d20\u306f\u30e1\u30e2\u30ea\u5185\u3067\u5bc6\u306b\u8a70\u307e\u3063\u3066\u304a\u308a\u3001\u305d\u308c\u3089\u306e\u9593\u306b\u8ffd\u52a0\u30c7\u30fc\u30bf\u3092\u53ce\u5bb9\u3059\u308b\u305f\u3081\u306e\u7a7a\u9593\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u914d\u5217\u306e\u4e2d\u592e\u306b\u8981\u7d20\u3092\u633f\u5165\u3059\u308b\u306b\u306f\u3001\u5f8c\u7d9a\u306e\u3059\u3079\u3066\u306e\u8981\u7d20\u30921\u3064\u305a\u3064\u5f8c\u308d\u306b\u30b7\u30d5\u30c8\u3057\u3066\u3001\u65b0\u3057\u3044\u8981\u7d20\u306e\u305f\u3081\u306e\u7a7a\u9593\u3092\u4f5c\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</p> <p></p> <p> \u56f3 4-3 \u00a0 \u914d\u5217\u8981\u7d20\u633f\u5165\u306e\u4f8b </p> <p>\u914d\u5217\u306e\u9577\u3055\u304c\u56fa\u5b9a\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u8981\u7d20\u3092\u633f\u5165\u3059\u308b\u3068\u5fc5\u7136\u7684\u306b\u914d\u5217\u306e\u6700\u5f8c\u306e\u8981\u7d20\u304c\u5931\u308f\u308c\u308b\u3053\u3068\u306b\u6ce8\u610f\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002\u3053\u306e\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u65b9\u6cd5\u306f\u300c\u30ea\u30b9\u30c8\u300d\u306e\u7ae0\u3067\u63a2\u6c42\u3055\u308c\u307e\u3059\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby array.py<pre><code>def insert(nums: list[int], num: int, index: int):\n \"\"\"\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 index \u306b\u8981\u7d20 num \u3092\u633f\u5165\"\"\"\n # \u30a4\u30f3\u30c7\u30c3\u30af\u30b9 index \u3088\u308a\u5f8c\u306e\u3059\u3079\u3066\u306e\u8981\u7d20\u30921\u3064\u5f8c\u308d\u306b\u79fb\u52d5\n for i in range(len(nums) - 1, index, -1):\n nums[i] = nums[i - 1]\n # num \u3092 index \u306e\u4f4d\u7f6e\u306e\u8981\u7d20\u306b\u4ee3\u5165\n nums[index] = num\n</code></pre> array.cpp<pre><code>/* `index`\u306b\u8981\u7d20num\u3092\u633f\u5165 */\nvoid insert(int *nums, int size, int num, int index) {\n // `index`\u3088\u308a\u5f8c\u306e\u3059\u3079\u3066\u306e\u8981\u7d20\u30921\u3064\u5f8c\u308d\u306b\u79fb\u52d5\n for (int i = size - 1; i &gt; index; i--) {\n nums[i] = nums[i - 1];\n }\n // index\u306e\u4f4d\u7f6e\u306bnum\u3092\u4ee3\u5165\n nums[index] = num;\n}\n</code></pre> array.java<pre><code>/* `index` \u306b\u8981\u7d20 num \u3092\u633f\u5165 */\nvoid insert(int[] nums, int num, int index) {\n // `index` \u3088\u308a\u5f8c\u306e\u3059\u3079\u3066\u306e\u8981\u7d20\u30921\u3064\u5f8c\u308d\u306b\u79fb\u52d5\n for (int i = nums.length - 1; i &gt; index; i--) {\n nums[i] = nums[i - 1];\n }\n // index \u306e\u8981\u7d20\u306b num \u3092\u4ee3\u5165\n nums[index] = num;\n}\n</code></pre> array.cs<pre><code>[class]{array}-[func]{Insert}\n</code></pre> array.go<pre><code>[class]{}-[func]{insert}\n</code></pre> array.swift<pre><code>[class]{}-[func]{insert}\n</code></pre> array.js<pre><code>[class]{}-[func]{insert}\n</code></pre> array.ts<pre><code>[class]{}-[func]{insert}\n</code></pre> array.dart<pre><code>[class]{}-[func]{insert}\n</code></pre> array.rs<pre><code>[class]{}-[func]{insert}\n</code></pre> array.c<pre><code>[class]{}-[func]{insert}\n</code></pre> array.kt<pre><code>[class]{}-[func]{insert}\n</code></pre> array.rb<pre><code>[class]{}-[func]{insert}\n</code></pre>"},{"location":"chapter_array_and_linkedlist/array/#4","title":"4. \u00a0 \u8981\u7d20\u306e\u524a\u9664","text":"<p>\u540c\u69d8\u306b\u3001\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\\(i\\)\u306e\u8981\u7d20\u3092\u524a\u9664\u3059\u308b\u306b\u306f\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\\(i\\)\u306b\u7d9a\u304f\u3059\u3079\u3066\u306e\u8981\u7d20\u30921\u3064\u305a\u3064\u524d\u306b\u79fb\u52d5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</p> <p></p> <p> \u56f3 4-4 \u00a0 \u914d\u5217\u8981\u7d20\u524a\u9664\u306e\u4f8b </p> <p>\u524a\u9664\u5f8c\u3001\u5143\u306e\u6700\u5f8c\u306e\u8981\u7d20\u306f\u300c\u610f\u5473\u304c\u306a\u3044\u300d\u3082\u306e\u306b\u306a\u308b\u305f\u3081\u3001\u7279\u5b9a\u306e\u4fee\u6b63\u306f\u5fc5\u8981\u306a\u3044\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby array.py<pre><code>def remove(nums: list[int], index: int):\n \"\"\"\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 index \u306e\u8981\u7d20\u3092\u524a\u9664\"\"\"\n # \u30a4\u30f3\u30c7\u30c3\u30af\u30b9 index \u3088\u308a\u5f8c\u306e\u3059\u3079\u3066\u306e\u8981\u7d20\u30921\u3064\u524d\u306b\u79fb\u52d5\n for i in range(index, len(nums) - 1):\n nums[i] = nums[i + 1]\n</code></pre> array.cpp<pre><code>/* `index`\u306e\u8981\u7d20\u3092\u524a\u9664 */\nvoid remove(int *nums, int size, int index) {\n // `index`\u3088\u308a\u5f8c\u306e\u3059\u3079\u3066\u306e\u8981\u7d20\u30921\u3064\u524d\u306b\u79fb\u52d5\n for (int i = index; i &lt; size - 1; i++) {\n nums[i] = nums[i + 1];\n }\n}\n</code></pre> array.java<pre><code>/* `index` \u306e\u8981\u7d20\u3092\u524a\u9664 */\nvoid remove(int[] nums, int index) {\n // `index` \u3088\u308a\u5f8c\u306e\u3059\u3079\u3066\u306e\u8981\u7d20\u30921\u3064\u524d\u306b\u79fb\u52d5\n for (int i = index; i &lt; nums.length - 1; i++) {\n nums[i] = nums[i + 1];\n }\n}\n</code></pre> array.cs<pre><code>[class]{array}-[func]{Remove}\n</code></pre> array.go<pre><code>[class]{}-[func]{remove}\n</code></pre> array.swift<pre><code>[class]{}-[func]{remove}\n</code></pre> array.js<pre><code>[class]{}-[func]{remove}\n</code></pre> array.ts<pre><code>[class]{}-[func]{remove}\n</code></pre> array.dart<pre><code>[class]{}-[func]{remove}\n</code></pre> array.rs<pre><code>[class]{}-[func]{remove}\n</code></pre> array.c<pre><code>[class]{}-[func]{removeItem}\n</code></pre> array.kt<pre><code>[class]{}-[func]{remove}\n</code></pre> array.rb<pre><code>[class]{}-[func]{remove}\n</code></pre> <p>\u8981\u7d04\u3059\u308b\u3068\u3001\u914d\u5217\u306e\u633f\u5165\u3068\u524a\u9664\u64cd\u4f5c\u306b\u306f\u4ee5\u4e0b\u306e\u6b20\u70b9\u304c\u3042\u308a\u307e\u3059\uff1a</p> <ul> <li>\u9ad8\u3044\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u914d\u5217\u306e\u633f\u5165\u3068\u524a\u9664\u306e\u4e21\u65b9\u306e\u5e73\u5747\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n)\\)\u3067\u3001\u3053\u3053\u3067\\(n\\)\u306f\u914d\u5217\u306e\u9577\u3055\u3067\u3059\u3002</li> <li>\u8981\u7d20\u306e\u640d\u5931\uff1a\u914d\u5217\u306e\u9577\u3055\u304c\u56fa\u5b9a\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u633f\u5165\u6642\u306b\u914d\u5217\u306e\u5bb9\u91cf\u3092\u8d85\u3048\u308b\u8981\u7d20\u306f\u5931\u308f\u308c\u307e\u3059\u3002</li> <li>\u30e1\u30e2\u30ea\u306e\u7121\u99c4\uff1a\u3088\u308a\u9577\u3044\u914d\u5217\u3092\u521d\u671f\u5316\u3057\u3066\u524d\u90e8\u5206\u306e\u307f\u3092\u5229\u7528\u3059\u308b\u3068\u3001\u633f\u5165\u6642\u306b\u300c\u610f\u5473\u306e\u306a\u3044\u300d\u672b\u5c3e\u8981\u7d20\u304c\u751f\u3058\u3001\u30e1\u30e2\u30ea\u7a7a\u9593\u306e\u7121\u99c4\u306b\u3064\u306a\u304c\u308a\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_array_and_linkedlist/array/#5","title":"5. \u00a0 \u914d\u5217\u306e\u8d70\u67fb","text":"<p>\u307b\u3068\u3093\u3069\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u306f\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u4f7f\u7528\u3059\u308b\u304b\u3001\u5404\u8981\u7d20\u3092\u76f4\u63a5\u53cd\u5fa9\u3059\u308b\u3053\u3068\u3067\u914d\u5217\u3092\u8d70\u67fb\u3067\u304d\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby array.py<pre><code>def traverse(nums: list[int]):\n \"\"\"\u914d\u5217\u306e\u8d70\u67fb\"\"\"\n count = 0\n # \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u3088\u308b\u914d\u5217\u306e\u8d70\u67fb\n for i in range(len(nums)):\n count += nums[i]\n # \u914d\u5217\u8981\u7d20\u306e\u8d70\u67fb\n for num in nums:\n count += num\n # \u30c7\u30fc\u30bf\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3068\u8981\u7d20\u306e\u4e21\u65b9\u3092\u8d70\u67fb\n for i, num in enumerate(nums):\n count += nums[i]\n count += num\n</code></pre> array.cpp<pre><code>/* \u914d\u5217\u306e\u8d70\u67fb */\nvoid traverse(int *nums, int size) {\n int count = 0;\n // \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u3088\u308b\u914d\u5217\u306e\u8d70\u67fb\n for (int i = 0; i &lt; size; i++) {\n count += nums[i];\n }\n}\n</code></pre> array.java<pre><code>/* \u914d\u5217\u3092\u8d70\u67fb */\nvoid traverse(int[] nums) {\n int count = 0;\n // \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u3088\u308b\u914d\u5217\u306e\u8d70\u67fb\n for (int i = 0; i &lt; nums.length; i++) {\n count += nums[i];\n }\n // \u914d\u5217\u8981\u7d20\u306e\u8d70\u67fb\n for (int num : nums) {\n count += num;\n }\n}\n</code></pre> array.cs<pre><code>[class]{array}-[func]{Traverse}\n</code></pre> array.go<pre><code>[class]{}-[func]{traverse}\n</code></pre> array.swift<pre><code>[class]{}-[func]{traverse}\n</code></pre> array.js<pre><code>[class]{}-[func]{traverse}\n</code></pre> array.ts<pre><code>[class]{}-[func]{traverse}\n</code></pre> array.dart<pre><code>[class]{}-[func]{traverse}\n</code></pre> array.rs<pre><code>[class]{}-[func]{traverse}\n</code></pre> array.c<pre><code>[class]{}-[func]{traverse}\n</code></pre> array.kt<pre><code>[class]{}-[func]{traverse}\n</code></pre> array.rb<pre><code>[class]{}-[func]{traverse}\n</code></pre>"},{"location":"chapter_array_and_linkedlist/array/#6","title":"6. \u00a0 \u8981\u7d20\u306e\u691c\u7d22","text":"<p>\u914d\u5217\u5185\u306e\u7279\u5b9a\u306e\u8981\u7d20\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u306f\u3001\u914d\u5217\u3092\u53cd\u5fa9\u3057\u3001\u5404\u8981\u7d20\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u76ee\u7684\u306e\u5024\u3068\u4e00\u81f4\u3059\u308b\u304b\u3069\u3046\u304b\u3092\u6c7a\u5b9a\u3059\u308b\u3053\u3068\u3092\u542b\u307f\u307e\u3059\u3002</p> <p>\u914d\u5217\u306f\u7dda\u5f62\u30c7\u30fc\u30bf\u69cb\u9020\u3067\u3042\u308b\u305f\u3081\u3001\u3053\u306e\u64cd\u4f5c\u306f\u4e00\u822c\u7684\u306b\u300c\u7dda\u5f62\u63a2\u7d22\u300d\u3068\u547c\u3070\u308c\u307e\u3059\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby array.py<pre><code>def find(nums: list[int], target: int) -&gt; int:\n \"\"\"\u914d\u5217\u5185\u306e\u6307\u5b9a\u3055\u308c\u305f\u8981\u7d20\u3092\u691c\u7d22\"\"\"\n for i in range(len(nums)):\n if nums[i] == target:\n return i\n return -1\n</code></pre> array.cpp<pre><code>/* \u914d\u5217\u5185\u306e\u6307\u5b9a\u8981\u7d20\u3092\u691c\u7d22 */\nint find(int *nums, int size, int target) {\n for (int i = 0; i &lt; size; i++) {\n if (nums[i] == target)\n return i;\n }\n return -1;\n}\n</code></pre> array.java<pre><code>/* \u914d\u5217\u5185\u3067\u6307\u5b9a\u3055\u308c\u305f\u8981\u7d20\u3092\u691c\u7d22 */\nint find(int[] nums, int target) {\n for (int i = 0; i &lt; nums.length; i++) {\n if (nums[i] == target)\n return i;\n }\n return -1;\n}\n</code></pre> array.cs<pre><code>[class]{array}-[func]{Find}\n</code></pre> array.go<pre><code>[class]{}-[func]{find}\n</code></pre> array.swift<pre><code>[class]{}-[func]{find}\n</code></pre> array.js<pre><code>[class]{}-[func]{find}\n</code></pre> array.ts<pre><code>[class]{}-[func]{find}\n</code></pre> array.dart<pre><code>[class]{}-[func]{find}\n</code></pre> array.rs<pre><code>[class]{}-[func]{find}\n</code></pre> array.c<pre><code>[class]{}-[func]{find}\n</code></pre> array.kt<pre><code>[class]{}-[func]{find}\n</code></pre> array.rb<pre><code>[class]{}-[func]{find}\n</code></pre>"},{"location":"chapter_array_and_linkedlist/array/#7","title":"7. \u00a0 \u914d\u5217\u306e\u62e1\u5f35","text":"<p>\u8907\u96d1\u306a\u30b7\u30b9\u30c6\u30e0\u74b0\u5883\u3067\u306f\u3001\u5b89\u5168\u306a\u5bb9\u91cf\u62e1\u5f35\u306e\u305f\u3081\u306b\u914d\u5217\u306e\u5f8c\u306b\u30e1\u30e2\u30ea\u7a7a\u9593\u306e\u53ef\u7528\u6027\u3092\u78ba\u4fdd\u3059\u308b\u3053\u3068\u304c\u56f0\u96e3\u306b\u306a\u308a\u307e\u3059\u3002\u305d\u306e\u7d50\u679c\u3001\u307b\u3068\u3093\u3069\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u306f\u3001**\u914d\u5217\u306e\u9577\u3055\u306f\u4e0d\u5909**\u3067\u3059\u3002</p> <p>\u914d\u5217\u3092\u62e1\u5f35\u3059\u308b\u306b\u306f\u3001\u3088\u308a\u5927\u304d\u306a\u914d\u5217\u3092\u4f5c\u6210\u3057\u3001\u5143\u306e\u914d\u5217\u304b\u3089\u8981\u7d20\u3092\u30b3\u30d4\u30fc\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u64cd\u4f5c\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n)\\)\u3067\u3001\u5927\u304d\u306a\u914d\u5217\u3067\u306f\u6642\u9593\u304c\u304b\u304b\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby array.py<pre><code>def extend(nums: list[int], enlarge: int) -&gt; list[int]:\n \"\"\"\u914d\u5217\u306e\u9577\u3055\u3092\u62e1\u5f35\"\"\"\n # \u62e1\u5f35\u3055\u308c\u305f\u9577\u3055\u306e\u914d\u5217\u3092\u521d\u671f\u5316\n res = [0] * (len(nums) + enlarge)\n # \u5143\u306e\u914d\u5217\u306e\u3059\u3079\u3066\u306e\u8981\u7d20\u3092\u65b0\u3057\u3044\u914d\u5217\u306b\u30b3\u30d4\u30fc\n for i in range(len(nums)):\n res[i] = nums[i]\n # \u62e1\u5f35\u5f8c\u306e\u65b0\u3057\u3044\u914d\u5217\u3092\u8fd4\u3059\n return res\n</code></pre> array.cpp<pre><code>/* \u914d\u5217\u9577\u306e\u62e1\u5f35 */\nint *extend(int *nums, int size, int enlarge) {\n // \u62e1\u5f35\u3055\u308c\u305f\u9577\u3055\u306e\u914d\u5217\u3092\u521d\u671f\u5316\n int *res = new int[size + enlarge];\n // \u5143\u306e\u914d\u5217\u306e\u5168\u8981\u7d20\u3092\u65b0\u3057\u3044\u914d\u5217\u306b\u30b3\u30d4\u30fc\n for (int i = 0; i &lt; size; i++) {\n res[i] = nums[i];\n }\n // \u30e1\u30e2\u30ea\u3092\u89e3\u653e\n delete[] nums;\n // \u62e1\u5f35\u5f8c\u306e\u65b0\u3057\u3044\u914d\u5217\u3092\u8fd4\u5374\n return res;\n}\n</code></pre> array.java<pre><code>/* \u914d\u5217\u9577\u306e\u62e1\u5f35 */\nint[] extend(int[] nums, int enlarge) {\n // \u62e1\u5f35\u3055\u308c\u305f\u9577\u3055\u306e\u914d\u5217\u3092\u521d\u671f\u5316\n int[] res = new int[nums.length + enlarge];\n // \u5143\u306e\u914d\u5217\u306e\u3059\u3079\u3066\u306e\u8981\u7d20\u3092\u65b0\u3057\u3044\u914d\u5217\u306b\u30b3\u30d4\u30fc\n for (int i = 0; i &lt; nums.length; i++) {\n res[i] = nums[i];\n }\n // \u62e1\u5f35\u5f8c\u306e\u65b0\u3057\u3044\u914d\u5217\u3092\u8fd4\u3059\n return res;\n}\n</code></pre> array.cs<pre><code>[class]{array}-[func]{Extend}\n</code></pre> array.go<pre><code>[class]{}-[func]{extend}\n</code></pre> array.swift<pre><code>[class]{}-[func]{extend}\n</code></pre> array.js<pre><code>[class]{}-[func]{extend}\n</code></pre> array.ts<pre><code>[class]{}-[func]{extend}\n</code></pre> array.dart<pre><code>[class]{}-[func]{extend}\n</code></pre> array.rs<pre><code>[class]{}-[func]{extend}\n</code></pre> array.c<pre><code>[class]{}-[func]{extend}\n</code></pre> array.kt<pre><code>[class]{}-[func]{extend}\n</code></pre> array.rb<pre><code>[class]{}-[func]{extend}\n</code></pre>"},{"location":"chapter_array_and_linkedlist/array/#412","title":"4.1.2 \u00a0 \u914d\u5217\u306e\u5229\u70b9\u3068\u5236\u9650","text":"<p>\u914d\u5217\u306f\u9023\u7d9a\u3057\u305f\u30e1\u30e2\u30ea\u7a7a\u9593\u306b\u683c\u7d0d\u3055\u308c\u3001\u540c\u3058\u578b\u306e\u8981\u7d20\u3067\u69cb\u6210\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306f\u3001\u30b7\u30b9\u30c6\u30e0\u304c\u30c7\u30fc\u30bf\u69cb\u9020\u64cd\u4f5c\u306e\u52b9\u7387\u3092\u6700\u9069\u5316\u3059\u308b\u305f\u3081\u306b\u6d3b\u7528\u3067\u304d\u308b\u5b9f\u8cea\u7684\u306a\u4e8b\u524d\u60c5\u5831\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002</p> <ul> <li>\u9ad8\u3044\u7a7a\u9593\u52b9\u7387\uff1a\u914d\u5217\u306f\u30c7\u30fc\u30bf\u306e\u305f\u3081\u306e\u9023\u7d9a\u3057\u305f\u30e1\u30e2\u30ea\u30d6\u30ed\u30c3\u30af\u3092\u5272\u308a\u5f53\u3066\u3001\u8ffd\u52a0\u306e\u69cb\u9020\u7684\u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9\u306e\u5fc5\u8981\u6027\u3092\u6392\u9664\u3057\u307e\u3059\u3002</li> <li>\u30e9\u30f3\u30c0\u30e0\u30a2\u30af\u30bb\u30b9\u306e\u30b5\u30dd\u30fc\u30c8\uff1a\u914d\u5217\u306f\u4efb\u610f\u306e\u8981\u7d20\u3078\u306e\\(O(1)\\)\u6642\u9593\u30a2\u30af\u30bb\u30b9\u3092\u53ef\u80fd\u306b\u3057\u307e\u3059\u3002</li> <li>\u30ad\u30e3\u30c3\u30b7\u30e5\u5c40\u6240\u6027\uff1a\u914d\u5217\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3068\u304d\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u306f\u305d\u308c\u3089\u3092\u8aad\u307f\u8fbc\u3080\u3060\u3051\u3067\u306a\u304f\u3001\u5468\u56f2\u306e\u30c7\u30fc\u30bf\u3082\u30ad\u30e3\u30c3\u30b7\u30e5\u3057\u3001\u9ad8\u901f\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u5229\u7528\u3057\u3066\u5f8c\u7d9a\u306e\u64cd\u4f5c\u901f\u5ea6\u3092\u5411\u4e0a\u3055\u305b\u307e\u3059\u3002</li> </ul> <p>\u3057\u304b\u3057\u3001\u9023\u7d9a\u7a7a\u9593\u683c\u7d0d\u306f\u8af8\u5203\u306e\u5263\u3067\u3001\u4ee5\u4e0b\u306e\u5236\u9650\u304c\u3042\u308a\u307e\u3059\uff1a</p> <ul> <li>\u633f\u5165\u3068\u524a\u9664\u306e\u52b9\u7387\u304c\u4f4e\u3044\uff1a\u914d\u5217\u306b\u591a\u304f\u306e\u8981\u7d20\u304c\u84c4\u7a4d\u3055\u308c\u308b\u3068\u3001\u8981\u7d20\u306e\u633f\u5165\u3084\u524a\u9664\u306b\u306f\u5927\u91cf\u306e\u8981\u7d20\u3092\u30b7\u30d5\u30c8\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u56fa\u5b9a\u9577\uff1a\u914d\u5217\u306e\u9577\u3055\u306f\u521d\u671f\u5316\u5f8c\u306b\u56fa\u5b9a\u3055\u308c\u307e\u3059\u3002\u914d\u5217\u3092\u62e1\u5f35\u3059\u308b\u306b\u306f\u3001\u3059\u3079\u3066\u306e\u30c7\u30fc\u30bf\u3092\u65b0\u3057\u3044\u914d\u5217\u306b\u30b3\u30d4\u30fc\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u5927\u304d\u306a\u30b3\u30b9\u30c8\u304c\u304b\u304b\u308a\u307e\u3059\u3002</li> <li>\u7a7a\u9593\u306e\u7121\u99c4\uff1a\u5272\u308a\u5f53\u3066\u3089\u308c\u305f\u914d\u5217\u30b5\u30a4\u30ba\u304c\u5fc5\u8981\u4ee5\u4e0a\u306b\u5927\u304d\u3044\u5834\u5408\u3001\u4f59\u5206\u306a\u7a7a\u9593\u304c\u7121\u99c4\u306b\u306a\u308a\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_array_and_linkedlist/array/#413","title":"4.1.3 \u00a0 \u914d\u5217\u306e\u5178\u578b\u7684\u306a\u5fdc\u7528","text":"<p>\u914d\u5217\u306f\u57fa\u672c\u7684\u3067\u5e83\u304f\u4f7f\u7528\u3055\u308c\u308b\u30c7\u30fc\u30bf\u69cb\u9020\u3067\u3059\u3002\u69d8\u3005\u306a\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u983b\u7e41\u306b\u5fdc\u7528\u3055\u308c\u3001\u8907\u96d1\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u5b9f\u88c5\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002</p> <ul> <li>\u30e9\u30f3\u30c0\u30e0\u30a2\u30af\u30bb\u30b9\uff1a\u914d\u5217\u306f\u30e9\u30f3\u30c0\u30e0\u30b5\u30f3\u30d7\u30ea\u30f3\u30b0\u304c\u5fc5\u8981\u306a\u3068\u304d\u306e\u30c7\u30fc\u30bf\u683c\u7d0d\u306b\u7406\u60f3\u7684\u3067\u3059\u3002\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u57fa\u3065\u3044\u3066\u30e9\u30f3\u30c0\u30e0\u30b7\u30fc\u30b1\u30f3\u30b9\u3092\u751f\u6210\u3059\u308b\u3053\u3068\u3067\u3001\u52b9\u7387\u7684\u306b\u30e9\u30f3\u30c0\u30e0\u30b5\u30f3\u30d7\u30ea\u30f3\u30b0\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002</li> <li>\u30bd\u30fc\u30c8\u3068\u691c\u7d22\uff1a\u914d\u5217\u306f\u30bd\u30fc\u30c8\u3068\u691c\u7d22\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u6700\u3082\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u30c7\u30fc\u30bf\u69cb\u9020\u3067\u3059\u3002\u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\u3001\u30de\u30fc\u30b8\u30bd\u30fc\u30c8\u3001\u4e8c\u5206\u63a2\u7d22\u306a\u3069\u306e\u6280\u8853\u306f\u4e3b\u306b\u914d\u5217\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002</li> <li>\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u30c6\u30fc\u30d6\u30eb\uff1a\u914d\u5217\u306f\u8fc5\u901f\u306a\u8981\u7d20\u3084\u95a2\u4fc2\u306e\u53d6\u5f97\u306e\u305f\u3081\u306e\u52b9\u7387\u7684\u306a\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u30c6\u30fc\u30d6\u30eb\u3068\u3057\u3066\u6a5f\u80fd\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u6587\u5b57\u3092ASCII\u30b3\u30fc\u30c9\u306b\u30de\u30c3\u30d4\u30f3\u30b0\u3059\u308b\u3053\u3068\u306f\u3001ASCII\u30b3\u30fc\u30c9\u5024\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3068\u3057\u3066\u4f7f\u7528\u3057\u3001\u5bfe\u5fdc\u3059\u308b\u8981\u7d20\u3092\u914d\u5217\u306b\u683c\u7d0d\u3059\u308b\u3053\u3068\u3067\u7c21\u5358\u306b\u306a\u308a\u307e\u3059\u3002</li> <li>\u6a5f\u68b0\u5b66\u7fd2\uff1a\u30cb\u30e5\u30fc\u30e9\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u9818\u57df\u3067\u306f\u3001\u914d\u5217\u306f\u30d9\u30af\u30c8\u30eb\u3001\u884c\u5217\u3001\u30c6\u30f3\u30bd\u30eb\u3092\u542b\u3080\u91cd\u8981\u306a\u7dda\u5f62\u4ee3\u6570\u6f14\u7b97\u306e\u5b9f\u884c\u306b\u304a\u3044\u3066\u91cd\u8981\u306a\u5f79\u5272\u3092\u679c\u305f\u3057\u307e\u3059\u3002\u914d\u5217\u306f\u30cb\u30e5\u30fc\u30e9\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306b\u304a\u3044\u3066\u4e3b\u8981\u304b\u3064\u6700\u3082\u5e83\u7bc4\u56f2\u306b\u4f7f\u7528\u3055\u308c\u308b\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u3057\u3066\u6a5f\u80fd\u3057\u307e\u3059\u3002</li> <li>\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u5b9f\u88c5\uff1a\u914d\u5217\u306f\u3001\u30b9\u30bf\u30c3\u30af\u3001\u30ad\u30e5\u30fc\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u3001\u30d2\u30fc\u30d7\u3001\u30b0\u30e9\u30d5\u306a\u3069\u3001\u69d8\u3005\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u5b9f\u88c5\u3059\u308b\u305f\u3081\u306e\u69cb\u6210\u8981\u7d20\u3068\u3057\u3066\u6a5f\u80fd\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u30b0\u30e9\u30d5\u306e\u96a3\u63a5\u884c\u5217\u8868\u73fe\u306f\u672c\u8cea\u7684\u306b\u4e8c\u6b21\u5143\u914d\u5217\u3067\u3059\u3002</li> </ul>"},{"location":"chapter_array_and_linkedlist/linked_list/","title":"4.2 \u00a0 \u9023\u7d50\u30ea\u30b9\u30c8","text":"<p>\u30e1\u30e2\u30ea\u7a7a\u9593\u306f\u3001\u3059\u3079\u3066\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u9593\u3067\u5171\u6709\u3055\u308c\u308b\u30ea\u30bd\u30fc\u30b9\u3067\u3059\u3002\u8907\u96d1\u306a\u30b7\u30b9\u30c6\u30e0\u74b0\u5883\u3067\u306f\u3001\u4f7f\u7528\u53ef\u80fd\u306a\u30e1\u30e2\u30ea\u304c\u30e1\u30e2\u30ea\u7a7a\u9593\u5168\u4f53\u306b\u5206\u6563\u3057\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u914d\u5217\u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u308b\u30e1\u30e2\u30ea\u306f\u9023\u7d9a\u3057\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u3092\u7406\u89e3\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u975e\u5e38\u306b\u5927\u304d\u306a\u914d\u5217\u306e\u5834\u5408\u3001\u5341\u5206\u306a\u5927\u304d\u3055\u306e\u9023\u7d9a\u30e1\u30e2\u30ea\u7a7a\u9593\u3092\u898b\u3064\u3051\u308b\u306e\u306f\u56f0\u96e3\u306a\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u3053\u3067\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u67d4\u8edf\u306a\u5229\u70b9\u304c\u660e\u3089\u304b\u306b\u306a\u308a\u307e\u3059\u3002</p> <p>\u9023\u7d50\u30ea\u30b9\u30c8\u306f\u7dda\u5f62\u30c7\u30fc\u30bf\u69cb\u9020\u3067\u3042\u308a\u3001\u5404\u8981\u7d20\u306f\u30ce\u30fc\u30c9\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3067\u3001\u30ce\u30fc\u30c9\u306f\u300c\u53c2\u7167\u300d\u3092\u901a\u3058\u3066\u76f8\u4e92\u63a5\u7d9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u53c2\u7167\u306f\u5f8c\u7d9a\u30ce\u30fc\u30c9\u306e\u30e1\u30e2\u30ea\u30a2\u30c9\u30ec\u30b9\u3092\u4fdd\u6301\u3057\u30011\u3064\u306e\u30ce\u30fc\u30c9\u304b\u3089\u6b21\u306e\u30ce\u30fc\u30c9\u3078\u306e\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u3092\u53ef\u80fd\u306b\u3057\u307e\u3059\u3002</p> <p>\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u8a2d\u8a08\u3067\u306f\u3001\u30ce\u30fc\u30c9\u3092\u9023\u7d9a\u3059\u308b\u30e1\u30e2\u30ea\u30a2\u30c9\u30ec\u30b9\u3092\u5fc5\u8981\u3068\u305b\u305a\u306b\u3001\u30e1\u30e2\u30ea\u4f4d\u7f6e\u5168\u4f53\u306b\u5206\u6563\u914d\u7f6e\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</p> <p></p> <p> \u56f3 4-5 \u00a0 \u9023\u7d50\u30ea\u30b9\u30c8\u306e\u5b9a\u7fa9\u3068\u683c\u7d0d\u65b9\u6cd5 </p> <p>\u4e0a\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u57fa\u672c\u7684\u306a\u69cb\u6210\u8981\u7d20\u306f\u30ce\u30fc\u30c9\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3067\u3059\u3002\u5404\u30ce\u30fc\u30c9\u306f2\u3064\u306e\u4e3b\u8981\u306a\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3067\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u3059\uff1a\u30ce\u30fc\u30c9\u306e\u300c\u5024\u300d\u3068\u6b21\u306e\u30ce\u30fc\u30c9\u3078\u306e\u300c\u53c2\u7167\u300d\u3067\u3059\u3002</p> <ul> <li>\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u6700\u521d\u306e\u30ce\u30fc\u30c9\u306f\u300c\u30d8\u30c3\u30c9\u30ce\u30fc\u30c9\u300d\u3001\u6700\u5f8c\u306e\u30ce\u30fc\u30c9\u306f\u300c\u30c6\u30fc\u30eb\u30ce\u30fc\u30c9\u300d\u3067\u3059\u3002</li> <li>\u30c6\u30fc\u30eb\u30ce\u30fc\u30c9\u306f\u300cnull\u300d\u3092\u6307\u3057\u3001Java\u3067\u306f<code>null</code>\u3001C++\u3067\u306f<code>nullptr</code>\u3001Python\u3067\u306f<code>None</code>\u3068\u3057\u3066\u6307\u5b9a\u3055\u308c\u307e\u3059\u3002</li> <li>C\u3001C++\u3001Go\u3001Rust\u306a\u3069\u306e\u30dd\u30a4\u30f3\u30bf\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u8a00\u8a9e\u3067\u306f\u3001\u3053\u306e\u300c\u53c2\u7167\u300d\u306f\u901a\u5e38\u300c\u30dd\u30a4\u30f3\u30bf\u300d\u3068\u3057\u3066\u5b9f\u88c5\u3055\u308c\u307e\u3059\u3002</li> </ul> <p>\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u304c\u793a\u3059\u3088\u3046\u306b\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306e<code>ListNode</code>\u306f\u5024\u3092\u4fdd\u6301\u3059\u308b\u3060\u3051\u3067\u306a\u304f\u3001\u8ffd\u52a0\u306e\u53c2\u7167\uff08\u307e\u305f\u306f\u30dd\u30a4\u30f3\u30bf\uff09\u3082\u7dad\u6301\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306f\u540c\u3058\u91cf\u306e\u30c7\u30fc\u30bf\u3092\u683c\u7d0d\u3059\u308b\u5834\u5408\u3001\u914d\u5217\u3088\u308a\u3082\u591a\u304f\u306e\u30e1\u30e2\u30ea\u7a7a\u9593\u3092\u5360\u6709\u3057\u307e\u3059\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlin <pre><code>class ListNode:\n \"\"\"\u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9\u30af\u30e9\u30b9\"\"\"\n def __init__(self, val: int):\n self.val: int = val # \u30ce\u30fc\u30c9\u5024\n self.next: ListNode | None = None # \u6b21\u306e\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n</code></pre> <pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9\u69cb\u9020\u4f53 */\nstruct ListNode {\n int val; // \u30ce\u30fc\u30c9\u5024\n ListNode *next; // \u6b21\u306e\u30ce\u30fc\u30c9\u3078\u306e\u30dd\u30a4\u30f3\u30bf\n ListNode(int x) : val(x), next(nullptr) {} // \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\n};\n</code></pre> <pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9\u30af\u30e9\u30b9 */\nclass ListNode {\n int val; // \u30ce\u30fc\u30c9\u5024\n ListNode next; // \u6b21\u306e\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n ListNode(int x) { val = x; } // \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\n}\n</code></pre> <pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9\u30af\u30e9\u30b9 */\nclass ListNode(int x) { // \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\n int val = x; // \u30ce\u30fc\u30c9\u5024\n ListNode? next; // \u6b21\u306e\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n}\n</code></pre> <pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9\u69cb\u9020\u4f53 */\ntype ListNode struct {\n Val int // \u30ce\u30fc\u30c9\u5024\n Next *ListNode // \u6b21\u306e\u30ce\u30fc\u30c9\u3078\u306e\u30dd\u30a4\u30f3\u30bf\n}\n\n// NewListNode \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3001\u65b0\u3057\u3044\u9023\u7d50\u30ea\u30b9\u30c8\u3092\u4f5c\u6210\nfunc NewListNode(val int) *ListNode {\n return &amp;ListNode{\n Val: val,\n Next: nil,\n }\n}\n</code></pre> <pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9\u30af\u30e9\u30b9 */\nclass ListNode {\n var val: Int // \u30ce\u30fc\u30c9\u5024\n var next: ListNode? // \u6b21\u306e\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n\n init(x: Int) { // \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\n val = x\n }\n}\n</code></pre> <pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9\u30af\u30e9\u30b9 */\nclass ListNode {\n constructor(val, next) {\n this.val = (val === undefined ? 0 : val); // \u30ce\u30fc\u30c9\u5024\n this.next = (next === undefined ? null : next); // \u6b21\u306e\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n }\n}\n</code></pre> <pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9\u30af\u30e9\u30b9 */\nclass ListNode {\n val: number;\n next: ListNode | null;\n constructor(val?: number, next?: ListNode | null) {\n this.val = val === undefined ? 0 : val; // \u30ce\u30fc\u30c9\u5024\n this.next = next === undefined ? null : next; // \u6b21\u306e\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n }\n}\n</code></pre> <pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9\u30af\u30e9\u30b9 */\nclass ListNode {\n int val; // \u30ce\u30fc\u30c9\u5024\n ListNode? next; // \u6b21\u306e\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n ListNode(this.val, [this.next]); // \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\n}\n</code></pre> <pre><code>use std::rc::Rc;\nuse std::cell::RefCell;\n/* \u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9\u30af\u30e9\u30b9 */\n#[derive(Debug)]\nstruct ListNode {\n val: i32, // \u30ce\u30fc\u30c9\u5024\n next: Option&lt;Rc&lt;RefCell&lt;ListNode&gt;&gt;&gt;, // \u6b21\u306e\u30ce\u30fc\u30c9\u3078\u306e\u30dd\u30a4\u30f3\u30bf\n}\n</code></pre> <pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9\u69cb\u9020\u4f53 */\ntypedef struct ListNode {\n int val; // \u30ce\u30fc\u30c9\u5024\n struct ListNode *next; // \u6b21\u306e\u30ce\u30fc\u30c9\u3078\u306e\u30dd\u30a4\u30f3\u30bf\n} ListNode;\n\n/* \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf */\nListNode *newListNode(int val) {\n ListNode *node;\n node = (ListNode *) malloc(sizeof(ListNode));\n node-&gt;val = val;\n node-&gt;next = NULL;\n return node;\n}\n</code></pre> <pre><code>\n</code></pre>"},{"location":"chapter_array_and_linkedlist/linked_list/#421","title":"4.2.1 \u00a0 \u9023\u7d50\u30ea\u30b9\u30c8\u306e\u4e00\u822c\u7684\u306a\u64cd\u4f5c","text":""},{"location":"chapter_array_and_linkedlist/linked_list/#1","title":"1. \u00a0 \u9023\u7d50\u30ea\u30b9\u30c8\u306e\u521d\u671f\u5316","text":"<p>\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u69cb\u7bc9\u306f2\u6bb5\u968e\u306e\u30d7\u30ed\u30bb\u30b9\u3067\u3059\uff1a\u307e\u305a\u5404\u30ce\u30fc\u30c9\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u521d\u671f\u5316\u3057\u3001\u6b21\u306b\u30ce\u30fc\u30c9\u9593\u306e\u53c2\u7167\u30ea\u30f3\u30af\u3092\u5f62\u6210\u3057\u307e\u3059\u3002\u521d\u671f\u5316\u5f8c\u3001\u30d8\u30c3\u30c9\u30ce\u30fc\u30c9\u304b\u3089<code>next</code>\u53c2\u7167\u3092\u305f\u3069\u3063\u3066\u3059\u3079\u3066\u306e\u30ce\u30fc\u30c9\u3092\u9806\u6b21\u5de1\u56de\u3067\u304d\u307e\u3059\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlin linked_list.py<pre><code># \u9023\u7d50\u30ea\u30b9\u30c8\u3092\u521d\u671f\u5316: 1 -&gt; 3 -&gt; 2 -&gt; 5 -&gt; 4\n# \u5404\u30ce\u30fc\u30c9\u3092\u521d\u671f\u5316\nn0 = ListNode(1)\nn1 = ListNode(3)\nn2 = ListNode(2)\nn3 = ListNode(5)\nn4 = ListNode(4)\n# \u30ce\u30fc\u30c9\u9593\u306e\u53c2\u7167\u3092\u69cb\u7bc9\nn0.next = n1\nn1.next = n2\nn2.next = n3\nn3.next = n4\n</code></pre> linked_list.cpp<pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u3092\u521d\u671f\u5316: 1 -&gt; 3 -&gt; 2 -&gt; 5 -&gt; 4 */\n// \u5404\u30ce\u30fc\u30c9\u3092\u521d\u671f\u5316\nListNode* n0 = new ListNode(1);\nListNode* n1 = new ListNode(3);\nListNode* n2 = new ListNode(2);\nListNode* n3 = new ListNode(5);\nListNode* n4 = new ListNode(4);\n// \u30ce\u30fc\u30c9\u9593\u306e\u53c2\u7167\u3092\u69cb\u7bc9\nn0-&gt;next = n1;\nn1-&gt;next = n2;\nn2-&gt;next = n3;\nn3-&gt;next = n4;\n</code></pre> linked_list.java<pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u3092\u521d\u671f\u5316: 1 -&gt; 3 -&gt; 2 -&gt; 5 -&gt; 4 */\n// \u5404\u30ce\u30fc\u30c9\u3092\u521d\u671f\u5316\nListNode n0 = new ListNode(1);\nListNode n1 = new ListNode(3);\nListNode n2 = new ListNode(2);\nListNode n3 = new ListNode(5);\nListNode n4 = new ListNode(4);\n// \u30ce\u30fc\u30c9\u9593\u306e\u53c2\u7167\u3092\u69cb\u7bc9\nn0.next = n1;\nn1.next = n2;\nn2.next = n3;\nn3.next = n4;\n</code></pre> linked_list.cs<pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u3092\u521d\u671f\u5316: 1 -&gt; 3 -&gt; 2 -&gt; 5 -&gt; 4 */\n// \u5404\u30ce\u30fc\u30c9\u3092\u521d\u671f\u5316\nListNode n0 = new(1);\nListNode n1 = new(3);\nListNode n2 = new(2);\nListNode n3 = new(5);\nListNode n4 = new(4);\n// \u30ce\u30fc\u30c9\u9593\u306e\u53c2\u7167\u3092\u69cb\u7bc9\nn0.next = n1;\nn1.next = n2;\nn2.next = n3;\nn3.next = n4;\n</code></pre> linked_list.go<pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u3092\u521d\u671f\u5316: 1 -&gt; 3 -&gt; 2 -&gt; 5 -&gt; 4 */\n// \u5404\u30ce\u30fc\u30c9\u3092\u521d\u671f\u5316\nn0 := NewListNode(1)\nn1 := NewListNode(3)\nn2 := NewListNode(2)\nn3 := NewListNode(5)\nn4 := NewListNode(4)\n// \u30ce\u30fc\u30c9\u9593\u306e\u53c2\u7167\u3092\u69cb\u7bc9\nn0.Next = n1\nn1.Next = n2\nn2.Next = n3\nn3.Next = n4\n</code></pre> linked_list.swift<pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u3092\u521d\u671f\u5316: 1 -&gt; 3 -&gt; 2 -&gt; 5 -&gt; 4 */\n// \u5404\u30ce\u30fc\u30c9\u3092\u521d\u671f\u5316\nlet n0 = ListNode(x: 1)\nlet n1 = ListNode(x: 3)\nlet n2 = ListNode(x: 2)\nlet n3 = ListNode(x: 5)\nlet n4 = ListNode(x: 4)\n// \u30ce\u30fc\u30c9\u9593\u306e\u53c2\u7167\u3092\u69cb\u7bc9\nn0.next = n1\nn1.next = n2\nn2.next = n3\nn3.next = n4\n</code></pre> linked_list.js<pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u3092\u521d\u671f\u5316: 1 -&gt; 3 -&gt; 2 -&gt; 5 -&gt; 4 */\n// \u5404\u30ce\u30fc\u30c9\u3092\u521d\u671f\u5316\nconst n0 = new ListNode(1);\nconst n1 = new ListNode(3);\nconst n2 = new ListNode(2);\nconst n3 = new ListNode(5);\nconst n4 = new ListNode(4);\n// \u30ce\u30fc\u30c9\u9593\u306e\u53c2\u7167\u3092\u69cb\u7bc9\nn0.next = n1;\nn1.next = n2;\nn2.next = n3;\nn3.next = n4;\n</code></pre> linked_list.ts<pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u3092\u521d\u671f\u5316: 1 -&gt; 3 -&gt; 2 -&gt; 5 -&gt; 4 */\n// \u5404\u30ce\u30fc\u30c9\u3092\u521d\u671f\u5316\nconst n0 = new ListNode(1);\nconst n1 = new ListNode(3);\nconst n2 = new ListNode(2);\nconst n3 = new ListNode(5);\nconst n4 = new ListNode(4);\n// \u30ce\u30fc\u30c9\u9593\u306e\u53c2\u7167\u3092\u69cb\u7bc9\nn0.next = n1;\nn1.next = n2;\nn2.next = n3;\nn3.next = n4;\n</code></pre> linked_list.dart<pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u3092\u521d\u671f\u5316: 1 -&gt; 3 -&gt; 2 -&gt; 5 -&gt; 4 */\n// \u5404\u30ce\u30fc\u30c9\u3092\u521d\u671f\u5316\nListNode n0 = ListNode(1);\nListNode n1 = ListNode(3);\nListNode n2 = ListNode(2);\nListNode n3 = ListNode(5);\nListNode n4 = ListNode(4);\n// \u30ce\u30fc\u30c9\u9593\u306e\u53c2\u7167\u3092\u69cb\u7bc9\nn0.next = n1;\nn1.next = n2;\nn2.next = n3;\nn3.next = n4;\n</code></pre> linked_list.rs<pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u3092\u521d\u671f\u5316: 1 -&gt; 3 -&gt; 2 -&gt; 5 -&gt; 4 */\n// \u5404\u30ce\u30fc\u30c9\u3092\u521d\u671f\u5316\nlet n0 = Rc::new(RefCell::new(ListNode { val: 1, next: None }));\nlet n1 = Rc::new(RefCell::new(ListNode { val: 3, next: None }));\nlet n2 = Rc::new(RefCell::new(ListNode { val: 2, next: None }));\nlet n3 = Rc::new(RefCell::new(ListNode { val: 5, next: None }));\nlet n4 = Rc::new(RefCell::new(ListNode { val: 4, next: None }));\n\n// \u30ce\u30fc\u30c9\u9593\u306e\u53c2\u7167\u3092\u69cb\u7bc9\nn0.borrow_mut().next = Some(n1.clone());\nn1.borrow_mut().next = Some(n2.clone());\nn2.borrow_mut().next = Some(n3.clone());\nn3.borrow_mut().next = Some(n4.clone());\n</code></pre> linked_list.c<pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u3092\u521d\u671f\u5316: 1 -&gt; 3 -&gt; 2 -&gt; 5 -&gt; 4 */\n// \u5404\u30ce\u30fc\u30c9\u3092\u521d\u671f\u5316\nListNode* n0 = newListNode(1);\nListNode* n1 = newListNode(3);\nListNode* n2 = newListNode(2);\nListNode* n3 = newListNode(5);\nListNode* n4 = newListNode(4);\n// \u30ce\u30fc\u30c9\u9593\u306e\u53c2\u7167\u3092\u69cb\u7bc9\nn0-&gt;next = n1;\nn1-&gt;next = n2;\nn2-&gt;next = n3;\nn3-&gt;next = n4;\n</code></pre> linked_list.kt<pre><code>\n</code></pre> <p>\u914d\u5217\u5168\u4f53\u306f1\u3064\u306e\u5909\u6570\u3067\u3059\u3002\u4f8b\u3048\u3070\u3001\u914d\u5217<code>nums</code>\u306b\u306f<code>nums[0]</code>\u3001<code>nums[1]</code>\u306a\u3069\u306e\u8981\u7d20\u304c\u542b\u307e\u308c\u307e\u3059\u304c\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306f\u8907\u6570\u306e\u7570\u306a\u308b\u30ce\u30fc\u30c9\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3067\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u901a\u5e38\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306f\u305d\u306e\u30d8\u30c3\u30c9\u30ce\u30fc\u30c9\u3067\u53c2\u7167\u3055\u308c\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u524d\u306e\u30b3\u30fc\u30c9\u30b9\u30cb\u30da\u30c3\u30c8\u306e\u9023\u7d50\u30ea\u30b9\u30c8\u306f<code>n0</code>\u3068\u3057\u3066\u53c2\u7167\u3055\u308c\u307e\u3059\u3002</p>"},{"location":"chapter_array_and_linkedlist/linked_list/#2","title":"2. \u00a0 \u30ce\u30fc\u30c9\u306e\u633f\u5165","text":"<p>\u9023\u7d50\u30ea\u30b9\u30c8\u306b\u30ce\u30fc\u30c9\u3092\u633f\u5165\u3059\u308b\u306e\u306f\u975e\u5e38\u306b\u7c21\u5358\u3067\u3059\u3002\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u96a3\u63a5\u3059\u308b2\u3064\u306e\u30ce\u30fc\u30c9<code>n0</code>\u3068<code>n1</code>\u306e\u9593\u306b\u65b0\u3057\u3044\u30ce\u30fc\u30c9<code>P</code>\u3092\u633f\u5165\u3059\u308b\u3053\u3068\u3092\u76ee\u6307\u3059\u3068\u3057\u307e\u3059\u3002\u3053\u308c\u306f2\u3064\u306e\u30ce\u30fc\u30c9\u53c2\u7167\uff08\u30dd\u30a4\u30f3\u30bf\uff09\u3092\u5909\u66f4\u3059\u308b\u3060\u3051\u3067\u5b9f\u73fe\u3067\u304d\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(1)\\)\u3067\u3059\u3002</p> <p>\u6bd4\u8f03\u3059\u308b\u3068\u3001\u914d\u5217\u306b\u8981\u7d20\u3092\u633f\u5165\u3059\u308b\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n)\\)\u3067\u3042\u308a\u3001\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u3092\u6271\u3046\u5834\u5408\u306b\u306f\u52b9\u7387\u304c\u60aa\u304f\u306a\u308a\u307e\u3059\u3002</p> <p></p> <p> \u56f3 4-6 \u00a0 \u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9\u633f\u5165\u306e\u4f8b </p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby linked_list.py<pre><code>def insert(n0: ListNode, P: ListNode):\n \"\"\"\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u30ce\u30fc\u30c9 n0 \u306e\u5f8c\u306b\u30ce\u30fc\u30c9 P \u3092\u633f\u5165\"\"\"\n n1 = n0.next\n P.next = n1\n n0.next = P\n</code></pre> linked_list.cpp<pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u306e\u30ce\u30fc\u30c9n0\u306e\u5f8c\u306b\u30ce\u30fc\u30c9P\u3092\u633f\u5165 */\nvoid insert(ListNode *n0, ListNode *P) {\n ListNode *n1 = n0-&gt;next;\n P-&gt;next = n1;\n n0-&gt;next = P;\n}\n</code></pre> linked_list.java<pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u3067\u30ce\u30fc\u30c9 n0 \u306e\u5f8c\u306b\u30ce\u30fc\u30c9 P \u3092\u633f\u5165 */\nvoid insert(ListNode n0, ListNode P) {\n ListNode n1 = n0.next;\n P.next = n1;\n n0.next = P;\n}\n</code></pre> linked_list.cs<pre><code>[class]{linked_list}-[func]{Insert}\n</code></pre> linked_list.go<pre><code>[class]{}-[func]{insertNode}\n</code></pre> linked_list.swift<pre><code>[class]{}-[func]{insert}\n</code></pre> linked_list.js<pre><code>[class]{}-[func]{insert}\n</code></pre> linked_list.ts<pre><code>[class]{}-[func]{insert}\n</code></pre> linked_list.dart<pre><code>[class]{}-[func]{insert}\n</code></pre> linked_list.rs<pre><code>[class]{}-[func]{insert}\n</code></pre> linked_list.c<pre><code>[class]{}-[func]{insert}\n</code></pre> linked_list.kt<pre><code>[class]{}-[func]{insert}\n</code></pre> linked_list.rb<pre><code>[class]{}-[func]{insert}\n</code></pre>"},{"location":"chapter_array_and_linkedlist/linked_list/#3","title":"3. \u00a0 \u30ce\u30fc\u30c9\u306e\u524a\u9664","text":"<p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u304b\u3089\u30ce\u30fc\u30c9\u3092\u524a\u9664\u3059\u308b\u3053\u3068\u3082\u975e\u5e38\u306b\u7c21\u5358\u3067\u30011\u3064\u306e\u30ce\u30fc\u30c9\u306e\u53c2\u7167\uff08\u30dd\u30a4\u30f3\u30bf\uff09\u3092\u5909\u66f4\u3059\u308b\u3060\u3051\u3067\u3059\u3002</p> <p>\u91cd\u8981\u306a\u70b9\u306f\u3001\u30ce\u30fc\u30c9<code>P</code>\u304c\u524a\u9664\u3055\u308c\u305f\u5f8c\u3082<code>n1</code>\u3092\u6307\u3057\u7d9a\u3051\u3066\u3044\u308b\u3053\u3068\u3067\u3059\u304c\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u5de1\u56de\u4e2d\u306b\u306f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u306a\u304f\u306a\u308b\u3053\u3068\u3067\u3059\u3002\u3053\u308c\u306f\u4e8b\u5b9f\u4e0a\u3001<code>P</code>\u304c\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u4e00\u90e8\u3067\u306f\u306a\u304f\u306a\u3063\u305f\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 4-7 \u00a0 \u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9\u306e\u524a\u9664 </p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby linked_list.py<pre><code>def remove(n0: ListNode):\n \"\"\"\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u30ce\u30fc\u30c9 n0 \u306e\u5f8c\u306e\u6700\u521d\u306e\u30ce\u30fc\u30c9\u3092\u524a\u9664\"\"\"\n if not n0.next:\n return\n # n0 -&gt; P -&gt; n1\n P = n0.next\n n1 = P.next\n n0.next = n1\n</code></pre> linked_list.cpp<pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u306e\u30ce\u30fc\u30c9n0\u306e\u5f8c\u306e\u6700\u521d\u306e\u30ce\u30fc\u30c9\u3092\u524a\u9664 */\nvoid remove(ListNode *n0) {\n if (n0-&gt;next == nullptr)\n return;\n // n0 -&gt; P -&gt; n1\n ListNode *P = n0-&gt;next;\n ListNode *n1 = P-&gt;next;\n n0-&gt;next = n1;\n // \u30e1\u30e2\u30ea\u3092\u89e3\u653e\n delete P;\n}\n</code></pre> linked_list.java<pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u3067\u30ce\u30fc\u30c9 n0 \u306e\u5f8c\u306e\u6700\u521d\u306e\u30ce\u30fc\u30c9\u3092\u524a\u9664 */\nvoid remove(ListNode n0) {\n if (n0.next == null)\n return;\n // n0 -&gt; P -&gt; n1\n ListNode P = n0.next;\n ListNode n1 = P.next;\n n0.next = n1;\n}\n</code></pre> linked_list.cs<pre><code>[class]{linked_list}-[func]{Remove}\n</code></pre> linked_list.go<pre><code>[class]{}-[func]{removeItem}\n</code></pre> linked_list.swift<pre><code>[class]{}-[func]{remove}\n</code></pre> linked_list.js<pre><code>[class]{}-[func]{remove}\n</code></pre> linked_list.ts<pre><code>[class]{}-[func]{remove}\n</code></pre> linked_list.dart<pre><code>[class]{}-[func]{remove}\n</code></pre> linked_list.rs<pre><code>[class]{}-[func]{remove}\n</code></pre> linked_list.c<pre><code>[class]{}-[func]{removeItem}\n</code></pre> linked_list.kt<pre><code>[class]{}-[func]{remove}\n</code></pre> linked_list.rb<pre><code>[class]{}-[func]{remove}\n</code></pre>"},{"location":"chapter_array_and_linkedlist/linked_list/#4","title":"4. \u00a0 \u30ce\u30fc\u30c9\u3078\u306e\u30a2\u30af\u30bb\u30b9","text":"<p>\u9023\u7d50\u30ea\u30b9\u30c8\u3067\u306e\u30ce\u30fc\u30c9\u3078\u306e\u30a2\u30af\u30bb\u30b9\u306f\u52b9\u7387\u304c\u60aa\u3044\u3067\u3059\u3002\u524d\u8ff0\u3057\u305f\u3088\u3046\u306b\u3001\u914d\u5217\u306e\u4efb\u610f\u306e\u8981\u7d20\u306b\u306f\\(O(1)\\)\u6642\u9593\u3067\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002\u5bfe\u7167\u7684\u306b\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u3067\u306f\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u306f\u30d8\u30c3\u30c9\u30ce\u30fc\u30c9\u304b\u3089\u958b\u59cb\u3057\u3066\u76ee\u7684\u306e\u30ce\u30fc\u30c9\u304c\u898b\u3064\u304b\u308b\u307e\u3067\u9806\u6b21\u30ce\u30fc\u30c9\u3092\u5de1\u56de\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3064\u307e\u308a\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306e\\(i\\)\u756a\u76ee\u306e\u30ce\u30fc\u30c9\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u306b\u306f\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u306f\\(i - 1\\)\u500b\u306e\u30ce\u30fc\u30c9\u3092\u53cd\u5fa9\u51e6\u7406\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n)\\)\u306b\u306a\u308a\u307e\u3059\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby linked_list.py<pre><code>def access(head: ListNode, index: int) -&gt; ListNode | None:\n \"\"\"\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 index \u306e\u30ce\u30fc\u30c9\u306b\u30a2\u30af\u30bb\u30b9\"\"\"\n for _ in range(index):\n if not head:\n return None\n head = head.next\n return head\n</code></pre> linked_list.cpp<pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u306e`index`\u756a\u76ee\u306e\u30ce\u30fc\u30c9\u306b\u30a2\u30af\u30bb\u30b9 */\nListNode *access(ListNode *head, int index) {\n for (int i = 0; i &lt; index; i++) {\n if (head == nullptr)\n return nullptr;\n head = head-&gt;next;\n }\n return head;\n}\n</code></pre> linked_list.java<pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u306e `index` \u306e\u30ce\u30fc\u30c9\u306b\u30a2\u30af\u30bb\u30b9 */\nListNode access(ListNode head, int index) {\n for (int i = 0; i &lt; index; i++) {\n if (head == null)\n return null;\n head = head.next;\n }\n return head;\n}\n</code></pre> linked_list.cs<pre><code>[class]{linked_list}-[func]{Access}\n</code></pre> linked_list.go<pre><code>[class]{}-[func]{access}\n</code></pre> linked_list.swift<pre><code>[class]{}-[func]{access}\n</code></pre> linked_list.js<pre><code>[class]{}-[func]{access}\n</code></pre> linked_list.ts<pre><code>[class]{}-[func]{access}\n</code></pre> linked_list.dart<pre><code>[class]{}-[func]{access}\n</code></pre> linked_list.rs<pre><code>[class]{}-[func]{access}\n</code></pre> linked_list.c<pre><code>[class]{}-[func]{access}\n</code></pre> linked_list.kt<pre><code>[class]{}-[func]{access}\n</code></pre> linked_list.rb<pre><code>[class]{}-[func]{access}\n</code></pre>"},{"location":"chapter_array_and_linkedlist/linked_list/#5","title":"5. \u00a0 \u30ce\u30fc\u30c9\u306e\u691c\u7d22","text":"<p>\u9023\u7d50\u30ea\u30b9\u30c8\u3092\u5de1\u56de\u3057\u3066\u3001\u5024\u304c<code>target</code>\u306b\u4e00\u81f4\u3059\u308b\u30ce\u30fc\u30c9\u3092\u898b\u3064\u3051\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u5185\u3067\u306e\u305d\u306e\u30ce\u30fc\u30c9\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u51fa\u529b\u3057\u307e\u3059\u3002\u3053\u306e\u624b\u9806\u3082\u7dda\u5f62\u691c\u7d22\u306e\u4f8b\u3067\u3059\u3002\u5bfe\u5fdc\u3059\u308b\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u3068\u304a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby linked_list.py<pre><code>def find(head: ListNode, target: int) -&gt; int:\n \"\"\"\u9023\u7d50\u30ea\u30b9\u30c8\u3067\u5024 target \u3092\u6301\u3064\u6700\u521d\u306e\u30ce\u30fc\u30c9\u3092\u691c\u7d22\"\"\"\n index = 0\n while head:\n if head.val == target:\n return index\n head = head.next\n index += 1\n return -1\n</code></pre> linked_list.cpp<pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u3067\u5024\u304ctarget\u306e\u6700\u521d\u306e\u30ce\u30fc\u30c9\u3092\u691c\u7d22 */\nint find(ListNode *head, int target) {\n int index = 0;\n while (head != nullptr) {\n if (head-&gt;val == target)\n return index;\n head = head-&gt;next;\n index++;\n }\n return -1;\n}\n</code></pre> linked_list.java<pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u3067\u5024 target \u3092\u6301\u3064\u6700\u521d\u306e\u30ce\u30fc\u30c9\u3092\u691c\u7d22 */\nint find(ListNode head, int target) {\n int index = 0;\n while (head != null) {\n if (head.val == target)\n return index;\n head = head.next;\n index++;\n }\n return -1;\n}\n</code></pre> linked_list.cs<pre><code>[class]{linked_list}-[func]{Find}\n</code></pre> linked_list.go<pre><code>[class]{}-[func]{findNode}\n</code></pre> linked_list.swift<pre><code>[class]{}-[func]{find}\n</code></pre> linked_list.js<pre><code>[class]{}-[func]{find}\n</code></pre> linked_list.ts<pre><code>[class]{}-[func]{find}\n</code></pre> linked_list.dart<pre><code>[class]{}-[func]{find}\n</code></pre> linked_list.rs<pre><code>[class]{}-[func]{find}\n</code></pre> linked_list.c<pre><code>[class]{}-[func]{find}\n</code></pre> linked_list.kt<pre><code>[class]{}-[func]{find}\n</code></pre> linked_list.rb<pre><code>[class]{}-[func]{find}\n</code></pre>"},{"location":"chapter_array_and_linkedlist/linked_list/#422-vs","title":"4.2.2 \u00a0 \u914d\u5217 vs. \u9023\u7d50\u30ea\u30b9\u30c8","text":"<p>\u4e0b\u8868\u306f\u914d\u5217\u3068\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u7279\u6027\u3092\u307e\u3068\u3081\u3001\u69d8\u3005\u306a\u64cd\u4f5c\u306b\u304a\u3051\u308b\u52b9\u7387\u3082\u6bd4\u8f03\u3057\u3066\u3044\u307e\u3059\u3002\u305d\u308c\u305e\u308c\u304c\u5bfe\u7167\u7684\u306a\u683c\u7d0d\u6226\u7565\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u3001\u305d\u308c\u305e\u308c\u306e\u7279\u6027\u3068\u64cd\u4f5c\u52b9\u7387\u306f\u660e\u78ba\u306b\u5bfe\u6bd4\u3055\u308c\u3066\u3044\u307e\u3059\u3002</p> <p> \u8868 4-1 \u00a0 \u914d\u5217\u3068\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u52b9\u7387\u6bd4\u8f03 </p> \u914d\u5217 \u9023\u7d50\u30ea\u30b9\u30c8 \u683c\u7d0d\u65b9\u5f0f \u9023\u7d9a\u30e1\u30e2\u30ea\u7a7a\u9593 \u5206\u6563\u30e1\u30e2\u30ea\u7a7a\u9593 \u5bb9\u91cf\u62e1\u5f35 \u56fa\u5b9a\u9577 \u67d4\u8edf\u306a\u62e1\u5f35 \u30e1\u30e2\u30ea\u52b9\u7387 \u8981\u7d20\u3042\u305f\u308a\u306e\u30e1\u30e2\u30ea\u5c11\u3001\u6f5c\u5728\u7684\u306a\u7a7a\u9593\u306e\u7121\u99c4 \u8981\u7d20\u3042\u305f\u308a\u306e\u30e1\u30e2\u30ea\u591a \u8981\u7d20\u3078\u306e\u30a2\u30af\u30bb\u30b9 \\(O(1)\\) \\(O(n)\\) \u8981\u7d20\u306e\u8ffd\u52a0 \\(O(n)\\) \\(O(1)\\) \u8981\u7d20\u306e\u524a\u9664 \\(O(n)\\) \\(O(1)\\)"},{"location":"chapter_array_and_linkedlist/linked_list/#423","title":"4.2.3 \u00a0 \u9023\u7d50\u30ea\u30b9\u30c8\u306e\u4e00\u822c\u7684\u306a\u7a2e\u985e","text":"<p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306b\u306f3\u3064\u306e\u4e00\u822c\u7684\u306a\u7a2e\u985e\u304c\u3042\u308a\u307e\u3059\u3002</p> <ul> <li>\u5358\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\uff1a\u3053\u308c\u306f\u524d\u8ff0\u3057\u305f\u6a19\u6e96\u7684\u306a\u9023\u7d50\u30ea\u30b9\u30c8\u3067\u3059\u3002\u5358\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u30ce\u30fc\u30c9\u306b\u306f\u5024\u3068\u6b21\u306e\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\u304c\u542b\u307e\u308c\u307e\u3059\u3002\u6700\u521d\u306e\u30ce\u30fc\u30c9\u306f\u30d8\u30c3\u30c9\u30ce\u30fc\u30c9\u3068\u547c\u3070\u308c\u3001null\uff08<code>None</code>\uff09\u3092\u6307\u3059\u6700\u5f8c\u306e\u30ce\u30fc\u30c9\u306f\u30c6\u30fc\u30eb\u30ce\u30fc\u30c9\u3067\u3059\u3002</li> <li>\u5faa\u74b0\u9023\u7d50\u30ea\u30b9\u30c8\uff1a\u3053\u308c\u306f\u5358\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u30c6\u30fc\u30eb\u30ce\u30fc\u30c9\u304c\u30d8\u30c3\u30c9\u30ce\u30fc\u30c9\u3092\u6307\u3057\u3066\u30eb\u30fc\u30d7\u3092\u4f5c\u308b\u3053\u3068\u3067\u5f62\u6210\u3055\u308c\u307e\u3059\u3002\u5faa\u74b0\u9023\u7d50\u30ea\u30b9\u30c8\u3067\u306f\u3001\u4efb\u610f\u306e\u30ce\u30fc\u30c9\u304c\u30d8\u30c3\u30c9\u30ce\u30fc\u30c9\u3068\u3057\u3066\u6a5f\u80fd\u3067\u304d\u307e\u3059\u3002</li> <li>\u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\uff1a\u5358\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u3068\u306f\u5bfe\u7167\u7684\u306b\u3001\u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u306f2\u3064\u306e\u65b9\u5411\u3067\u53c2\u7167\u3092\u7dad\u6301\u3057\u307e\u3059\u3002\u5404\u30ce\u30fc\u30c9\u306b\u306f\u5f8c\u7d9a\u8005\uff08\u6b21\u306e\u30ce\u30fc\u30c9\uff09\u3068\u524d\u4efb\u8005\uff08\u524d\u306e\u30ce\u30fc\u30c9\uff09\u306e\u4e21\u65b9\u3078\u306e\u53c2\u7167\uff08\u30dd\u30a4\u30f3\u30bf\uff09\u304c\u542b\u307e\u308c\u307e\u3059\u3002\u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u306f\u3069\u3061\u3089\u306e\u65b9\u5411\u306b\u3082\u5de1\u56de\u3067\u304d\u308b\u3088\u308a\u591a\u304f\u306e\u67d4\u8edf\u6027\u3092\u63d0\u4f9b\u3057\u307e\u3059\u304c\u3001\u3088\u308a\u591a\u304f\u306e\u30e1\u30e2\u30ea\u7a7a\u9593\u3082\u6d88\u8cbb\u3057\u307e\u3059\u3002</li> </ul> PythonC++JavaC#GoSwiftJSTSDartRustCKotlin <pre><code>class ListNode:\n \"\"\"\u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9\u30af\u30e9\u30b9\"\"\"\n def __init__(self, val: int):\n self.val: int = val # \u30ce\u30fc\u30c9\u5024\n self.next: ListNode | None = None # \u5f8c\u7d9a\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n self.prev: ListNode | None = None # \u524d\u4efb\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n</code></pre> <pre><code>/* \u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9\u69cb\u9020\u4f53 */\nstruct ListNode {\n int val; // \u30ce\u30fc\u30c9\u5024\n ListNode *next; // \u5f8c\u7d9a\u30ce\u30fc\u30c9\u3078\u306e\u30dd\u30a4\u30f3\u30bf\n ListNode *prev; // \u524d\u4efb\u30ce\u30fc\u30c9\u3078\u306e\u30dd\u30a4\u30f3\u30bf\n ListNode(int x) : val(x), next(nullptr), prev(nullptr) {} // \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\n};\n</code></pre> <pre><code>/* \u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9\u30af\u30e9\u30b9 */\nclass ListNode {\n int val; // \u30ce\u30fc\u30c9\u5024\n ListNode next; // \u6b21\u306e\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n ListNode prev; // \u524d\u4efb\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n ListNode(int x) { val = x; } // \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\n}\n</code></pre> <pre><code>/* \u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9\u30af\u30e9\u30b9 */\nclass ListNode(int x) { // \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\n int val = x; // \u30ce\u30fc\u30c9\u5024\n ListNode next; // \u6b21\u306e\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n ListNode prev; // \u524d\u4efb\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n}\n</code></pre> <pre><code>/* \u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9\u69cb\u9020\u4f53 */\ntype DoublyListNode struct {\n Val int // \u30ce\u30fc\u30c9\u5024\n Next *DoublyListNode // \u5f8c\u7d9a\u30ce\u30fc\u30c9\u3078\u306e\u30dd\u30a4\u30f3\u30bf\n Prev *DoublyListNode // \u524d\u4efb\u30ce\u30fc\u30c9\u3078\u306e\u30dd\u30a4\u30f3\u30bf\n}\n\n// NewDoublyListNode \u521d\u671f\u5316\nfunc NewDoublyListNode(val int) *DoublyListNode {\n return &amp;DoublyListNode{\n Val: val,\n Next: nil,\n Prev: nil,\n }\n}\n</code></pre> <pre><code>/* \u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9\u30af\u30e9\u30b9 */\nclass ListNode {\n var val: Int // \u30ce\u30fc\u30c9\u5024\n var next: ListNode? // \u6b21\u306e\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n var prev: ListNode? // \u524d\u4efb\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n\n init(x: Int) { // \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\n val = x\n }\n}\n</code></pre> <pre><code>/* \u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9\u30af\u30e9\u30b9 */\nclass ListNode {\n constructor(val, next, prev) {\n this.val = val === undefined ? 0 : val; // \u30ce\u30fc\u30c9\u5024\n this.next = next === undefined ? null : next; // \u5f8c\u7d9a\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n this.prev = prev === undefined ? null : prev; // \u524d\u4efb\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n }\n}\n</code></pre> <pre><code>/* \u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9\u30af\u30e9\u30b9 */\nclass ListNode {\n val: number;\n next: ListNode | null;\n prev: ListNode | null;\n constructor(val?: number, next?: ListNode | null, prev?: ListNode | null) {\n this.val = val === undefined ? 0 : val; // \u30ce\u30fc\u30c9\u5024\n this.next = next === undefined ? null : next; // \u5f8c\u7d9a\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n this.prev = prev === undefined ? null : prev; // \u524d\u4efb\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n }\n}\n</code></pre> <pre><code>/* \u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9\u30af\u30e9\u30b9 */\nclass ListNode {\n int val; // \u30ce\u30fc\u30c9\u5024\n ListNode next; // \u6b21\u306e\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n ListNode prev; // \u524d\u4efb\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n ListNode(this.val, [this.next, this.prev]); // \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\n}\n</code></pre> <pre><code>use std::rc::Rc;\nuse std::cell::RefCell;\n\n/* \u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9\u578b */\n#[derive(Debug)]\nstruct ListNode {\n val: i32, // \u30ce\u30fc\u30c9\u5024\n next: Option&lt;Rc&lt;RefCell&lt;ListNode&gt;&gt;&gt;, // \u5f8c\u7d9a\u30ce\u30fc\u30c9\u3078\u306e\u30dd\u30a4\u30f3\u30bf\n prev: Option&lt;Rc&lt;RefCell&lt;ListNode&gt;&gt;&gt;, // \u524d\u4efb\u30ce\u30fc\u30c9\u3078\u306e\u30dd\u30a4\u30f3\u30bf\n}\n\n/* \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf */\nimpl ListNode {\n fn new(val: i32) -&gt; Self {\n ListNode {\n val,\n next: None,\n prev: None,\n }\n }\n}\n</code></pre> <pre><code>/* \u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9\u69cb\u9020\u4f53 */\ntypedef struct ListNode {\n int val; // \u30ce\u30fc\u30c9\u5024\n struct ListNode *next; // \u5f8c\u7d9a\u30ce\u30fc\u30c9\u3078\u306e\u30dd\u30a4\u30f3\u30bf\n struct ListNode *prev; // \u524d\u4efb\u30ce\u30fc\u30c9\u3078\u306e\u30dd\u30a4\u30f3\u30bf\n} ListNode;\n\n/* \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf */\nListNode *newListNode(int val) {\n ListNode *node, *next;\n node = (ListNode *) malloc(sizeof(ListNode));\n node-&gt;val = val;\n node-&gt;next = NULL;\n node-&gt;prev = NULL;\n return node;\n}\n</code></pre> <pre><code>\n</code></pre> <p></p> <p> \u56f3 4-8 \u00a0 \u9023\u7d50\u30ea\u30b9\u30c8\u306e\u4e00\u822c\u7684\u306a\u7a2e\u985e </p>"},{"location":"chapter_array_and_linkedlist/linked_list/#424","title":"4.2.4 \u00a0 \u9023\u7d50\u30ea\u30b9\u30c8\u306e\u5178\u578b\u7684\u306a\u5fdc\u7528","text":"<p>\u5358\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u306f\u3001\u30b9\u30bf\u30c3\u30af\u3001\u30ad\u30e5\u30fc\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u3001\u30b0\u30e9\u30d5\u306e\u5b9f\u88c5\u306b\u3088\u304f\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002</p> <ul> <li>\u30b9\u30bf\u30c3\u30af\u3068\u30ad\u30e5\u30fc\uff1a\u5358\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u3067\u3001\u633f\u5165\u3068\u524a\u9664\u304c\u540c\u3058\u7aef\u3067\u884c\u308f\u308c\u308b\u5834\u5408\u3001\u30b9\u30bf\u30c3\u30af\uff08\u5f8c\u5165\u5148\u51fa\uff09\u306e\u3088\u3046\u306b\u52d5\u4f5c\u3057\u307e\u3059\u3002\u9006\u306b\u3001\u633f\u5165\u304c\u4e00\u65b9\u306e\u7aef\u3067\u3001\u524a\u9664\u304c\u3082\u3046\u4e00\u65b9\u306e\u7aef\u3067\u884c\u308f\u308c\u308b\u5834\u5408\u3001\u30ad\u30e5\u30fc\uff08\u5148\u5165\u5148\u51fa\uff09\u306e\u3088\u3046\u306b\u6a5f\u80fd\u3057\u307e\u3059\u3002</li> <li>\u30cf\u30c3\u30b7\u30e5\u8868\uff1a\u9023\u7d50\u30ea\u30b9\u30c8\u306f\u3001\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u3092\u89e3\u6c7a\u3059\u308b\u4eba\u6c17\u306e\u65b9\u6cd5\u3067\u3042\u308b\u9023\u9396\u6cd5\u3067\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u3053\u3053\u3067\u306f\u3001\u3059\u3079\u3066\u306e\u885d\u7a81\u3057\u305f\u8981\u7d20\u304c\u9023\u7d50\u30ea\u30b9\u30c8\u306b\u30b0\u30eb\u30fc\u30d7\u5316\u3055\u308c\u307e\u3059\u3002</li> <li>\u30b0\u30e9\u30d5\uff1a\u30b0\u30e9\u30d5\u8868\u73fe\u306e\u6a19\u6e96\u7684\u306a\u65b9\u6cd5\u3067\u3042\u308b\u96a3\u63a5\u30ea\u30b9\u30c8\u306f\u3001\u5404\u30b0\u30e9\u30d5\u9802\u70b9\u3092\u9023\u7d50\u30ea\u30b9\u30c8\u306b\u95a2\u9023\u4ed8\u3051\u307e\u3059\u3002\u3053\u306e\u30ea\u30b9\u30c8\u306b\u306f\u3001\u5bfe\u5fdc\u3059\u308b\u9802\u70b9\u306b\u63a5\u7d9a\u3055\u308c\u305f\u9802\u70b9\u3092\u8868\u3059\u8981\u7d20\u304c\u542b\u307e\u308c\u307e\u3059\u3002</li> </ul> <p>\u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u306f\u3001\u524d\u5f8c\u306e\u8981\u7d20\u3078\u306e\u9ad8\u901f\u30a2\u30af\u30bb\u30b9\u304c\u5fc5\u8981\u306a\u30b7\u30ca\u30ea\u30aa\u306b\u6700\u9069\u3067\u3059\u3002</p> <ul> <li>\u9ad8\u5ea6\u306a\u30c7\u30fc\u30bf\u69cb\u9020\uff1a\u8d64\u9ed2\u6728\u3084B\u6728\u306a\u3069\u306e\u69cb\u9020\u3067\u306f\u3001\u30ce\u30fc\u30c9\u306e\u89aa\u3078\u306e\u30a2\u30af\u30bb\u30b9\u304c\u91cd\u8981\u3067\u3059\u3002\u3053\u308c\u306f\u5404\u30ce\u30fc\u30c9\u306b\u89aa\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\u3092\u7d44\u307f\u8fbc\u3080\u3053\u3068\u3067\u5b9f\u73fe\u3055\u308c\u3001\u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u306b\u4f3c\u3066\u3044\u307e\u3059\u3002</li> <li>\u30d6\u30e9\u30a6\u30b6\u5c65\u6b74\uff1aWeb\u30d6\u30e9\u30a6\u30b6\u3067\u306f\u3001\u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u306b\u3088\u308a\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u524d\u9032\u307e\u305f\u306f\u5f8c\u9000\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u305f\u3068\u304d\u306e\u8a2a\u554f\u30da\u30fc\u30b8\u306e\u5c65\u6b74\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u304c\u5bb9\u6613\u306b\u306a\u308a\u307e\u3059\u3002</li> <li>LRU\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff1a\u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u306f\u3001\u6700\u8fd1\u6700\u5c11\u4f7f\u7528\uff08LRU\uff09\u30ad\u30e3\u30c3\u30b7\u30e5\u524a\u9664\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306b\u9069\u3057\u3066\u304a\u308a\u3001\u6700\u8fd1\u6700\u5c11\u4f7f\u7528\u30c7\u30fc\u30bf\u306e\u8fc5\u901f\u306a\u8b58\u5225\u3068\u3001\u9ad8\u901f\u306a\u30ce\u30fc\u30c9\u8ffd\u52a0\u30fb\u524a\u9664\u3092\u53ef\u80fd\u306b\u3057\u307e\u3059\u3002</li> </ul> <p>\u5faa\u74b0\u9023\u7d50\u30ea\u30b9\u30c8\u306f\u3001\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\u3067\u306e\u30ea\u30bd\u30fc\u30b9\u30b9\u30b1\u30b8\u30e5\u30fc\u30ea\u30f3\u30b0\u306a\u3069\u3001\u5468\u671f\u7684\u306a\u64cd\u4f5c\u304c\u5fc5\u8981\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u6700\u9069\u3067\u3059\u3002</p> <ul> <li>\u30e9\u30a6\u30f3\u30c9\u30ed\u30d3\u30f3\u30b9\u30b1\u30b8\u30e5\u30fc\u30ea\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff1a\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\u3067\u306f\u3001\u30e9\u30a6\u30f3\u30c9\u30ed\u30d3\u30f3\u30b9\u30b1\u30b8\u30e5\u30fc\u30ea\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u4e00\u822c\u7684\u306aCPU\u30b9\u30b1\u30b8\u30e5\u30fc\u30ea\u30f3\u30b0\u65b9\u6cd5\u3067\u3042\u308a\u3001\u30d7\u30ed\u30bb\u30b9\u306e\u30b0\u30eb\u30fc\u30d7\u3092\u5faa\u74b0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u5404\u30d7\u30ed\u30bb\u30b9\u306b\u306f\u30bf\u30a4\u30e0\u30b9\u30e9\u30a4\u30b9\u304c\u5272\u308a\u5f53\u3066\u3089\u308c\u3001\u671f\u9650\u5207\u308c\u306b\u306a\u308b\u3068CPU\u306f\u6b21\u306e\u30d7\u30ed\u30bb\u30b9\u306b\u56de\u8ee2\u3057\u307e\u3059\u3002\u3053\u306e\u5faa\u74b0\u64cd\u4f5c\u306f\u5faa\u74b0\u9023\u7d50\u30ea\u30b9\u30c8\u3092\u4f7f\u7528\u3057\u3066\u52b9\u7387\u7684\u306b\u5b9f\u73fe\u3067\u304d\u3001\u3059\u3079\u3066\u306e\u30d7\u30ed\u30bb\u30b9\u9593\u3067\u516c\u5e73\u304b\u3064\u6642\u5206\u5272\u30b7\u30b9\u30c6\u30e0\u3092\u53ef\u80fd\u306b\u3057\u307e\u3059\u3002</li> <li>\u30c7\u30fc\u30bf\u30d0\u30c3\u30d5\u30a1\uff1a\u5faa\u74b0\u9023\u7d50\u30ea\u30b9\u30c8\u306f\u3001\u30aa\u30fc\u30c7\u30a3\u30aa\u3084\u30d3\u30c7\u30aa\u30d7\u30ec\u30fc\u30e4\u30fc\u306a\u3069\u306e\u30c7\u30fc\u30bf\u30d0\u30c3\u30d5\u30a1\u3067\u3082\u4f7f\u7528\u3055\u308c\u3001\u30c7\u30fc\u30bf\u30b9\u30c8\u30ea\u30fc\u30e0\u304c\u8907\u6570\u306e\u30d0\u30c3\u30d5\u30a1\u30d6\u30ed\u30c3\u30af\u306b\u5206\u5272\u3055\u308c\u3001\u30b7\u30fc\u30e0\u30ec\u30b9\u306a\u518d\u751f\u306e\u305f\u3081\u306b\u5faa\u74b0\u65b9\u5f0f\u3067\u914d\u7f6e\u3055\u308c\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_array_and_linkedlist/list/","title":"4.3 \u00a0 \u30ea\u30b9\u30c8","text":"<p>\u30ea\u30b9\u30c8\u306f\u3001\u8981\u7d20\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3001\u5909\u66f4\u3001\u8ffd\u52a0\u3001\u524a\u9664\u3001\u8d70\u67fb\u306a\u3069\u306e\u64cd\u4f5c\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u3001\u9806\u5e8f\u4ed8\u3051\u3089\u308c\u305f\u8981\u7d20\u306e\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3092\u8868\u3059\u62bd\u8c61\u7684\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u6982\u5ff5\u3067\u3042\u308a\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u5bb9\u91cf\u5236\u9650\u3092\u8003\u616e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u305b\u3093\u3002\u30ea\u30b9\u30c8\u306f\u9023\u7d50\u30ea\u30b9\u30c8\u307e\u305f\u306f\u914d\u5217\u306b\u57fa\u3065\u3044\u3066\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002</p> <ul> <li>\u9023\u7d50\u30ea\u30b9\u30c8\u306f\u672c\u8cea\u7684\u306b\u30ea\u30b9\u30c8\u3068\u3057\u3066\u6a5f\u80fd\u3057\u3001\u8981\u7d20\u306e\u8ffd\u52a0\u3001\u524a\u9664\u3001\u691c\u7d22\u3001\u5909\u66f4\u306e\u64cd\u4f5c\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3001\u30b5\u30a4\u30ba\u3092\u52d5\u7684\u306b\u8abf\u6574\u3059\u308b\u67d4\u8edf\u6027\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u914d\u5217\u3082\u3053\u308c\u3089\u306e\u64cd\u4f5c\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059\u304c\u3001\u9577\u3055\u304c\u4e0d\u5909\u3067\u3042\u308b\u305f\u3081\u3001\u9577\u3055\u5236\u9650\u306e\u3042\u308b\u30ea\u30b9\u30c8\u3068\u8003\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</li> </ul> <p>\u914d\u5217\u3092\u4f7f\u7528\u3057\u3066\u30ea\u30b9\u30c8\u3092\u5b9f\u88c5\u3059\u308b\u5834\u5408\u3001\u9577\u3055\u306e\u4e0d\u5909\u6027\u306b\u3088\u308a\u30ea\u30b9\u30c8\u306e\u5b9f\u7528\u6027\u304c\u4f4e\u4e0b\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u4e8b\u524d\u306b\u683c\u7d0d\u3059\u308b\u30c7\u30fc\u30bf\u91cf\u3092\u4e88\u6e2c\u3059\u308b\u3053\u3068\u304c\u56f0\u96e3\u306a\u5834\u5408\u304c\u591a\u304f\u3001\u9069\u5207\u306a\u30ea\u30b9\u30c8\u9577\u3092\u9078\u629e\u3059\u308b\u3053\u3068\u304c\u56f0\u96e3\u3067\u3042\u308b\u305f\u3081\u3067\u3059\u3002\u9577\u3055\u304c\u5c0f\u3055\u3059\u304e\u308b\u3068\u8981\u4ef6\u3092\u6e80\u305f\u3055\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u3001\u5927\u304d\u3059\u304e\u308b\u3068\u30e1\u30e2\u30ea\u7a7a\u9593\u3092\u7121\u99c4\u306b\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>\u3053\u306e\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306b\u3001\u52d5\u7684\u914d\u5217\u3092\u4f7f\u7528\u3057\u3066\u30ea\u30b9\u30c8\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u914d\u5217\u306e\u5229\u70b9\u3092\u7d99\u627f\u3057\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u5b9f\u884c\u4e2d\u306b\u52d5\u7684\u306b\u62e1\u5f35\u3067\u304d\u307e\u3059\u3002</p> <p>\u5b9f\u969b\u3001\u591a\u304f\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306e\u6a19\u6e96\u30e9\u30a4\u30d6\u30e9\u30ea\u306f\u52d5\u7684\u914d\u5217\u3092\u4f7f\u7528\u3057\u3066\u30ea\u30b9\u30c8\u3092\u5b9f\u88c5\u3057\u3066\u3044\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001Python\u306e<code>list</code>\u3001Java\u306e<code>ArrayList</code>\u3001C++\u306e<code>vector</code>\u3001C#\u306e<code>List</code>\u306a\u3069\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u8b70\u8ad6\u3067\u306f\u3001\u300c\u30ea\u30b9\u30c8\u300d\u3068\u300c\u52d5\u7684\u914d\u5217\u300d\u3092\u540c\u7fa9\u306e\u6982\u5ff5\u3068\u3057\u3066\u6271\u3044\u307e\u3059\u3002</p>"},{"location":"chapter_array_and_linkedlist/list/#431","title":"4.3.1 \u00a0 \u30ea\u30b9\u30c8\u306e\u4e00\u822c\u7684\u306a\u64cd\u4f5c","text":""},{"location":"chapter_array_and_linkedlist/list/#1","title":"1. \u00a0 \u30ea\u30b9\u30c8\u306e\u521d\u671f\u5316","text":"<p>\u901a\u5e38\u3001\u300c\u521d\u671f\u5024\u306a\u3057\u300d\u3068\u300c\u521d\u671f\u5024\u3042\u308a\u300d\u306e2\u3064\u306e\u521d\u671f\u5316\u65b9\u6cd5\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlin list.py<pre><code># \u30ea\u30b9\u30c8\u3092\u521d\u671f\u5316\n# \u521d\u671f\u5024\u306a\u3057\nnums1: list[int] = []\n# \u521d\u671f\u5024\u3042\u308a\nnums: list[int] = [1, 3, 2, 5, 4]\n</code></pre> list.cpp<pre><code>/* \u30ea\u30b9\u30c8\u3092\u521d\u671f\u5316 */\n// \u6ce8\u610f: C++\u3067\u306f\u3001vector\u304c\u3053\u3053\u3067\u8aac\u660e\u3055\u308c\u3066\u3044\u308bnums\u306b\u76f8\u5f53\u3057\u307e\u3059\n// \u521d\u671f\u5024\u306a\u3057\nvector&lt;int&gt; nums1;\n// \u521d\u671f\u5024\u3042\u308a\nvector&lt;int&gt; nums = { 1, 3, 2, 5, 4 };\n</code></pre> list.java<pre><code>/* \u30ea\u30b9\u30c8\u3092\u521d\u671f\u5316 */\n// \u521d\u671f\u5024\u306a\u3057\nList&lt;Integer&gt; nums1 = new ArrayList&lt;&gt;();\n// \u521d\u671f\u5024\u3042\u308a\uff08\u8981\u7d20\u578b\u306fint[]\u306e\u30e9\u30c3\u30d1\u30fc\u30af\u30e9\u30b9Integer[]\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff09\nInteger[] numbers = new Integer[] { 1, 3, 2, 5, 4 };\nList&lt;Integer&gt; nums = new ArrayList&lt;&gt;(Arrays.asList(numbers));\n</code></pre> list.cs<pre><code>/* \u30ea\u30b9\u30c8\u3092\u521d\u671f\u5316 */\n// \u521d\u671f\u5024\u306a\u3057\nList&lt;int&gt; nums1 = [];\n// \u521d\u671f\u5024\u3042\u308a\nint[] numbers = [1, 3, 2, 5, 4];\nList&lt;int&gt; nums = [.. numbers];\n</code></pre> list_test.go<pre><code>/* \u30ea\u30b9\u30c8\u3092\u521d\u671f\u5316 */\n// \u521d\u671f\u5024\u306a\u3057\nnums1 := []int{}\n// \u521d\u671f\u5024\u3042\u308a\nnums := []int{1, 3, 2, 5, 4}\n</code></pre> list.swift<pre><code>/* \u30ea\u30b9\u30c8\u3092\u521d\u671f\u5316 */\n// \u521d\u671f\u5024\u306a\u3057\nlet nums1: [Int] = []\n// \u521d\u671f\u5024\u3042\u308a\nvar nums = [1, 3, 2, 5, 4]\n</code></pre> list.js<pre><code>/* \u30ea\u30b9\u30c8\u3092\u521d\u671f\u5316 */\n// \u521d\u671f\u5024\u306a\u3057\nconst nums1 = [];\n// \u521d\u671f\u5024\u3042\u308a\nconst nums = [1, 3, 2, 5, 4];\n</code></pre> list.ts<pre><code>/* \u30ea\u30b9\u30c8\u3092\u521d\u671f\u5316 */\n// \u521d\u671f\u5024\u306a\u3057\nconst nums1: number[] = [];\n// \u521d\u671f\u5024\u3042\u308a\nconst nums: number[] = [1, 3, 2, 5, 4];\n</code></pre> list.dart<pre><code>/* \u30ea\u30b9\u30c8\u3092\u521d\u671f\u5316 */\n// \u521d\u671f\u5024\u306a\u3057\nList&lt;int&gt; nums1 = [];\n// \u521d\u671f\u5024\u3042\u308a\nList&lt;int&gt; nums = [1, 3, 2, 5, 4];\n</code></pre> list.rs<pre><code>/* \u30ea\u30b9\u30c8\u3092\u521d\u671f\u5316 */\n// \u521d\u671f\u5024\u306a\u3057\nlet nums1: Vec&lt;i32&gt; = Vec::new();\n// \u521d\u671f\u5024\u3042\u308a\nlet nums: Vec&lt;i32&gt; = vec![1, 3, 2, 5, 4];\n</code></pre> list.c<pre><code>// C\u306f\u7d44\u307f\u8fbc\u307f\u306e\u52d5\u7684\u914d\u5217\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u305b\u3093\n</code></pre> list.kt<pre><code>\n</code></pre>"},{"location":"chapter_array_and_linkedlist/list/#2","title":"2. \u00a0 \u8981\u7d20\u3078\u306e\u30a2\u30af\u30bb\u30b9","text":"<p>\u30ea\u30b9\u30c8\u306f\u672c\u8cea\u7684\u306b\u914d\u5217\u3067\u3042\u308b\u305f\u3081\u3001\\(O(1)\\)\u6642\u9593\u3067\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\u3057\u66f4\u65b0\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u975e\u5e38\u306b\u52b9\u7387\u7684\u3067\u3059\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlin list.py<pre><code># \u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\nnum: int = nums[1] # \u30a4\u30f3\u30c7\u30c3\u30af\u30b91\u306e\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\n\n# \u8981\u7d20\u3092\u66f4\u65b0\nnums[1] = 0 # \u30a4\u30f3\u30c7\u30c3\u30af\u30b91\u306e\u8981\u7d20\u30920\u306b\u66f4\u65b0\n</code></pre> list.cpp<pre><code>/* \u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nint num = nums[1]; // \u30a4\u30f3\u30c7\u30c3\u30af\u30b91\u306e\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\n\n/* \u8981\u7d20\u3092\u66f4\u65b0 */\nnums[1] = 0; // \u30a4\u30f3\u30c7\u30c3\u30af\u30b91\u306e\u8981\u7d20\u30920\u306b\u66f4\u65b0\n</code></pre> list.java<pre><code>/* \u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nint num = nums.get(1); // \u30a4\u30f3\u30c7\u30c3\u30af\u30b91\u306e\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\n\n/* \u8981\u7d20\u3092\u66f4\u65b0 */\nnums.set(1, 0); // \u30a4\u30f3\u30c7\u30c3\u30af\u30b91\u306e\u8981\u7d20\u30920\u306b\u66f4\u65b0\n</code></pre> list.cs<pre><code>/* \u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nint num = nums[1]; // \u30a4\u30f3\u30c7\u30c3\u30af\u30b91\u306e\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\n\n/* \u8981\u7d20\u3092\u66f4\u65b0 */\nnums[1] = 0; // \u30a4\u30f3\u30c7\u30c3\u30af\u30b91\u306e\u8981\u7d20\u30920\u306b\u66f4\u65b0\n</code></pre> list_test.go<pre><code>/* \u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nnum := nums[1] // \u30a4\u30f3\u30c7\u30c3\u30af\u30b91\u306e\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\n\n/* \u8981\u7d20\u3092\u66f4\u65b0 */\nnums[1] = 0 // \u30a4\u30f3\u30c7\u30c3\u30af\u30b91\u306e\u8981\u7d20\u30920\u306b\u66f4\u65b0\n</code></pre> list.swift<pre><code>/* \u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nlet num = nums[1] // \u30a4\u30f3\u30c7\u30c3\u30af\u30b91\u306e\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\n\n/* \u8981\u7d20\u3092\u66f4\u65b0 */\nnums[1] = 0 // \u30a4\u30f3\u30c7\u30c3\u30af\u30b91\u306e\u8981\u7d20\u30920\u306b\u66f4\u65b0\n</code></pre> list.js<pre><code>/* \u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nconst num = nums[1]; // \u30a4\u30f3\u30c7\u30c3\u30af\u30b91\u306e\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\n\n/* \u8981\u7d20\u3092\u66f4\u65b0 */\nnums[1] = 0; // \u30a4\u30f3\u30c7\u30c3\u30af\u30b91\u306e\u8981\u7d20\u30920\u306b\u66f4\u65b0\n</code></pre> list.ts<pre><code>/* \u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nconst num: number = nums[1]; // \u30a4\u30f3\u30c7\u30c3\u30af\u30b91\u306e\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\n\n/* \u8981\u7d20\u3092\u66f4\u65b0 */\nnums[1] = 0; // \u30a4\u30f3\u30c7\u30c3\u30af\u30b91\u306e\u8981\u7d20\u30920\u306b\u66f4\u65b0\n</code></pre> list.dart<pre><code>/* \u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nint num = nums[1]; // \u30a4\u30f3\u30c7\u30c3\u30af\u30b91\u306e\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\n\n/* \u8981\u7d20\u3092\u66f4\u65b0 */\nnums[1] = 0; // \u30a4\u30f3\u30c7\u30c3\u30af\u30b91\u306e\u8981\u7d20\u30920\u306b\u66f4\u65b0\n</code></pre> list.rs<pre><code>/* \u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nlet num: i32 = nums[1]; // \u30a4\u30f3\u30c7\u30c3\u30af\u30b91\u306e\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\n/* \u8981\u7d20\u3092\u66f4\u65b0 */\nnums[1] = 0; // \u30a4\u30f3\u30c7\u30c3\u30af\u30b91\u306e\u8981\u7d20\u30920\u306b\u66f4\u65b0\n</code></pre> list.c<pre><code>// C\u306f\u7d44\u307f\u8fbc\u307f\u306e\u52d5\u7684\u914d\u5217\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u305b\u3093\n</code></pre> list.kt<pre><code>\n</code></pre>"},{"location":"chapter_array_and_linkedlist/list/#3","title":"3. \u00a0 \u8981\u7d20\u306e\u633f\u5165\u3068\u524a\u9664","text":"<p>\u914d\u5217\u3068\u6bd4\u8f03\u3057\u3066\u3001\u30ea\u30b9\u30c8\u306f\u8981\u7d20\u306e\u8ffd\u52a0\u3068\u524a\u9664\u306b\u304a\u3044\u3066\u3088\u308a\u67d4\u8edf\u6027\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u30ea\u30b9\u30c8\u306e\u672b\u5c3e\u3078\u306e\u8981\u7d20\u8ffd\u52a0\u306f\\(O(1)\\)\u64cd\u4f5c\u3067\u3059\u304c\u3001\u30ea\u30b9\u30c8\u306e\u4ed6\u306e\u5834\u6240\u3067\u306e\u8981\u7d20\u306e\u633f\u5165\u3068\u524a\u9664\u306e\u52b9\u7387\u306f\u914d\u5217\u3068\u540c\u3058\u307e\u307e\u3067\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n)\\)\u3067\u3059\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlin list.py<pre><code># \u30ea\u30b9\u30c8\u3092\u30af\u30ea\u30a2\nnums.clear()\n\n# \u672b\u5c3e\u306b\u8981\u7d20\u3092\u8ffd\u52a0\nnums.append(1)\nnums.append(3)\nnums.append(2)\nnums.append(5)\nnums.append(4)\n\n# \u4e2d\u9593\u306b\u8981\u7d20\u3092\u633f\u5165\nnums.insert(3, 6) # \u30a4\u30f3\u30c7\u30c3\u30af\u30b93\u306b\u6570\u50246\u3092\u633f\u5165\n\n# \u8981\u7d20\u3092\u524a\u9664\nnums.pop(3) # \u30a4\u30f3\u30c7\u30c3\u30af\u30b93\u306e\u8981\u7d20\u3092\u524a\u9664\n</code></pre> list.cpp<pre><code>/* \u30ea\u30b9\u30c8\u3092\u30af\u30ea\u30a2 */\nnums.clear();\n\n/* \u672b\u5c3e\u306b\u8981\u7d20\u3092\u8ffd\u52a0 */\nnums.push_back(1);\nnums.push_back(3);\nnums.push_back(2);\nnums.push_back(5);\nnums.push_back(4);\n\n/* \u4e2d\u9593\u306b\u8981\u7d20\u3092\u633f\u5165 */\nnums.insert(nums.begin() + 3, 6); // \u30a4\u30f3\u30c7\u30c3\u30af\u30b93\u306b\u6570\u50246\u3092\u633f\u5165\n\n/* \u8981\u7d20\u3092\u524a\u9664 */\nnums.erase(nums.begin() + 3); // \u30a4\u30f3\u30c7\u30c3\u30af\u30b93\u306e\u8981\u7d20\u3092\u524a\u9664\n</code></pre> list.java<pre><code>/* \u30ea\u30b9\u30c8\u3092\u30af\u30ea\u30a2 */\nnums.clear();\n\n/* \u672b\u5c3e\u306b\u8981\u7d20\u3092\u8ffd\u52a0 */\nnums.add(1);\nnums.add(3);\nnums.add(2);\nnums.add(5);\nnums.add(4);\n\n/* \u4e2d\u9593\u306b\u8981\u7d20\u3092\u633f\u5165 */\nnums.add(3, 6); // \u30a4\u30f3\u30c7\u30c3\u30af\u30b93\u306b\u6570\u50246\u3092\u633f\u5165\n\n/* \u8981\u7d20\u3092\u524a\u9664 */\nnums.remove(3); // \u30a4\u30f3\u30c7\u30c3\u30af\u30b93\u306e\u8981\u7d20\u3092\u524a\u9664\n</code></pre> list.cs<pre><code>/* \u30ea\u30b9\u30c8\u3092\u30af\u30ea\u30a2 */\nnums.Clear();\n\n/* \u672b\u5c3e\u306b\u8981\u7d20\u3092\u8ffd\u52a0 */\nnums.Add(1);\nnums.Add(3);\nnums.Add(2);\nnums.Add(5);\nnums.Add(4);\n\n/* \u4e2d\u9593\u306b\u8981\u7d20\u3092\u633f\u5165 */\nnums.Insert(3, 6);\n\n/* \u8981\u7d20\u3092\u524a\u9664 */\nnums.RemoveAt(3);\n</code></pre> list_test.go<pre><code>/* \u30ea\u30b9\u30c8\u3092\u30af\u30ea\u30a2 */\nnums = nil\n\n/* \u672b\u5c3e\u306b\u8981\u7d20\u3092\u8ffd\u52a0 */\nnums = append(nums, 1)\nnums = append(nums, 3)\nnums = append(nums, 2)\nnums = append(nums, 5)\nnums = append(nums, 4)\n\n/* \u4e2d\u9593\u306b\u8981\u7d20\u3092\u633f\u5165 */\nnums = append(nums[:3], append([]int{6}, nums[3:]...)...) // \u30a4\u30f3\u30c7\u30c3\u30af\u30b93\u306b\u6570\u50246\u3092\u633f\u5165\n\n/* \u8981\u7d20\u3092\u524a\u9664 */\nnums = append(nums[:3], nums[4:]...) // \u30a4\u30f3\u30c7\u30c3\u30af\u30b93\u306e\u8981\u7d20\u3092\u524a\u9664\n</code></pre> list.swift<pre><code>/* \u30ea\u30b9\u30c8\u3092\u30af\u30ea\u30a2 */\nnums.removeAll()\n\n/* \u672b\u5c3e\u306b\u8981\u7d20\u3092\u8ffd\u52a0 */\nnums.append(1)\nnums.append(3)\nnums.append(2)\nnums.append(5)\nnums.append(4)\n\n/* \u4e2d\u9593\u306b\u8981\u7d20\u3092\u633f\u5165 */\nnums.insert(6, at: 3) // \u30a4\u30f3\u30c7\u30c3\u30af\u30b93\u306b\u6570\u50246\u3092\u633f\u5165\n\n/* \u8981\u7d20\u3092\u524a\u9664 */\nnums.remove(at: 3) // \u30a4\u30f3\u30c7\u30c3\u30af\u30b93\u306e\u8981\u7d20\u3092\u524a\u9664\n</code></pre> list.js<pre><code>/* \u30ea\u30b9\u30c8\u3092\u30af\u30ea\u30a2 */\nnums.length = 0;\n\n/* \u672b\u5c3e\u306b\u8981\u7d20\u3092\u8ffd\u52a0 */\nnums.push(1);\nnums.push(3);\nnums.push(2);\nnums.push(5);\nnums.push(4);\n\n/* \u4e2d\u9593\u306b\u8981\u7d20\u3092\u633f\u5165 */\nnums.splice(3, 0, 6);\n\n/* \u8981\u7d20\u3092\u524a\u9664 */\nnums.splice(3, 1);\n</code></pre> list.ts<pre><code>/* \u30ea\u30b9\u30c8\u3092\u30af\u30ea\u30a2 */\nnums.length = 0;\n\n/* \u672b\u5c3e\u306b\u8981\u7d20\u3092\u8ffd\u52a0 */\nnums.push(1);\nnums.push(3);\nnums.push(2);\nnums.push(5);\nnums.push(4);\n\n/* \u4e2d\u9593\u306b\u8981\u7d20\u3092\u633f\u5165 */\nnums.splice(3, 0, 6);\n\n/* \u8981\u7d20\u3092\u524a\u9664 */\nnums.splice(3, 1);\n</code></pre> list.dart<pre><code>/* \u30ea\u30b9\u30c8\u3092\u30af\u30ea\u30a2 */\nnums.clear();\n\n/* \u672b\u5c3e\u306b\u8981\u7d20\u3092\u8ffd\u52a0 */\nnums.add(1);\nnums.add(3);\nnums.add(2);\nnums.add(5);\nnums.add(4);\n\n/* \u4e2d\u9593\u306b\u8981\u7d20\u3092\u633f\u5165 */\nnums.insert(3, 6); // \u30a4\u30f3\u30c7\u30c3\u30af\u30b93\u306b\u6570\u50246\u3092\u633f\u5165\n\n/* \u8981\u7d20\u3092\u524a\u9664 */\nnums.removeAt(3); // \u30a4\u30f3\u30c7\u30c3\u30af\u30b93\u306e\u8981\u7d20\u3092\u524a\u9664\n</code></pre> list.rs<pre><code>/* \u30ea\u30b9\u30c8\u3092\u30af\u30ea\u30a2 */\nnums.clear();\n\n/* \u672b\u5c3e\u306b\u8981\u7d20\u3092\u8ffd\u52a0 */\nnums.push(1);\nnums.push(3);\nnums.push(2);\nnums.push(5);\nnums.push(4);\n\n/* \u4e2d\u9593\u306b\u8981\u7d20\u3092\u633f\u5165 */\nnums.insert(3, 6); // \u30a4\u30f3\u30c7\u30c3\u30af\u30b93\u306b\u6570\u50246\u3092\u633f\u5165\n\n/* \u8981\u7d20\u3092\u524a\u9664 */\nnums.remove(3); // \u30a4\u30f3\u30c7\u30c3\u30af\u30b93\u306e\u8981\u7d20\u3092\u524a\u9664\n</code></pre> list.c<pre><code>// C\u306f\u7d44\u307f\u8fbc\u307f\u306e\u52d5\u7684\u914d\u5217\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u305b\u3093\n</code></pre> list.kt<pre><code>\n</code></pre>"},{"location":"chapter_array_and_linkedlist/list/#4","title":"4. \u00a0 \u30ea\u30b9\u30c8\u306e\u53cd\u5fa9","text":"<p>\u914d\u5217\u3068\u540c\u69d8\u306b\u3001\u30ea\u30b9\u30c8\u306f\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u4f7f\u7528\u3057\u3066\u53cd\u5fa9\u3059\u308b\u3053\u3068\u3082\u3001\u5404\u8981\u7d20\u3092\u76f4\u63a5\u53cd\u5fa9\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlin list.py<pre><code># \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u30ea\u30b9\u30c8\u3092\u53cd\u5fa9\ncount = 0\nfor i in range(len(nums)):\n count += nums[i]\n\n# \u30ea\u30b9\u30c8\u8981\u7d20\u3092\u76f4\u63a5\u53cd\u5fa9\nfor num in nums:\n count += num\n</code></pre> list.cpp<pre><code>/* \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u30ea\u30b9\u30c8\u3092\u53cd\u5fa9 */\nint count = 0;\nfor (int i = 0; i &lt; nums.size(); i++) {\n count += nums[i];\n}\n\n/* \u30ea\u30b9\u30c8\u8981\u7d20\u3092\u76f4\u63a5\u53cd\u5fa9 */\ncount = 0;\nfor (int num : nums) {\n count += num;\n}\n</code></pre> list.java<pre><code>/* \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u30ea\u30b9\u30c8\u3092\u53cd\u5fa9 */\nint count = 0;\nfor (int i = 0; i &lt; nums.size(); i++) {\n count += nums.get(i);\n}\n\n/* \u30ea\u30b9\u30c8\u8981\u7d20\u3092\u76f4\u63a5\u53cd\u5fa9 */\nfor (int num : nums) {\n count += num;\n}\n</code></pre> list.cs<pre><code>/* \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u30ea\u30b9\u30c8\u3092\u53cd\u5fa9 */\nint count = 0;\nfor (int i = 0; i &lt; nums.Count; i++) {\n count += nums[i];\n}\n\n/* \u30ea\u30b9\u30c8\u8981\u7d20\u3092\u76f4\u63a5\u53cd\u5fa9 */\ncount = 0;\nforeach (int num in nums) {\n count += num;\n}\n</code></pre> list_test.go<pre><code>/* \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u30ea\u30b9\u30c8\u3092\u53cd\u5fa9 */\ncount := 0\nfor i := 0; i &lt; len(nums); i++ {\n count += nums[i]\n}\n\n/* \u30ea\u30b9\u30c8\u8981\u7d20\u3092\u76f4\u63a5\u53cd\u5fa9 */\ncount = 0\nfor _, num := range nums {\n count += num\n}\n</code></pre> list.swift<pre><code>/* \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u30ea\u30b9\u30c8\u3092\u53cd\u5fa9 */\nvar count = 0\nfor i in nums.indices {\n count += nums[i]\n}\n\n/* \u30ea\u30b9\u30c8\u8981\u7d20\u3092\u76f4\u63a5\u53cd\u5fa9 */\ncount = 0\nfor num in nums {\n count += num\n}\n</code></pre> list.js<pre><code>/* \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u30ea\u30b9\u30c8\u3092\u53cd\u5fa9 */\nlet count = 0;\nfor (let i = 0; i &lt; nums.length; i++) {\n count += nums[i];\n}\n\n/* \u30ea\u30b9\u30c8\u8981\u7d20\u3092\u76f4\u63a5\u53cd\u5fa9 */\ncount = 0;\nfor (const num of nums) {\n count += num;\n}\n</code></pre> list.ts<pre><code>/* \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u30ea\u30b9\u30c8\u3092\u53cd\u5fa9 */\nlet count = 0;\nfor (let i = 0; i &lt; nums.length; i++) {\n count += nums[i];\n}\n\n/* \u30ea\u30b9\u30c8\u8981\u7d20\u3092\u76f4\u63a5\u53cd\u5fa9 */\ncount = 0;\nfor (const num of nums) {\n count += num;\n}\n</code></pre> list.dart<pre><code>/* \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u30ea\u30b9\u30c8\u3092\u53cd\u5fa9 */\nint count = 0;\nfor (var i = 0; i &lt; nums.length; i++) {\n count += nums[i];\n}\n\n/* \u30ea\u30b9\u30c8\u8981\u7d20\u3092\u76f4\u63a5\u53cd\u5fa9 */\ncount = 0;\nfor (var num in nums) {\n count += num;\n}\n</code></pre> list.rs<pre><code>// \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u30ea\u30b9\u30c8\u3092\u53cd\u5fa9\nlet mut _count = 0;\nfor i in 0..nums.len() {\n _count += nums[i];\n}\n\n// \u30ea\u30b9\u30c8\u8981\u7d20\u3092\u76f4\u63a5\u53cd\u5fa9\n_count = 0;\nfor num in &amp;nums {\n _count += num;\n}\n</code></pre> list.c<pre><code>// C\u306f\u7d44\u307f\u8fbc\u307f\u306e\u52d5\u7684\u914d\u5217\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u305b\u3093\n</code></pre> list.kt<pre><code>\n</code></pre>"},{"location":"chapter_array_and_linkedlist/list/#5","title":"5. \u00a0 \u30ea\u30b9\u30c8\u306e\u9023\u7d50","text":"<p>\u65b0\u3057\u3044\u30ea\u30b9\u30c8<code>nums1</code>\u304c\u4e0e\u3048\u3089\u308c\u305f\u3068\u304d\u3001\u305d\u308c\u3092\u5143\u306e\u30ea\u30b9\u30c8\u306e\u672b\u5c3e\u306b\u8ffd\u52a0\u3067\u304d\u307e\u3059\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlin list.py<pre><code># 2\u3064\u306e\u30ea\u30b9\u30c8\u3092\u9023\u7d50\nnums1: list[int] = [6, 8, 7, 10, 9]\nnums += nums1 # nums1\u3092nums\u306e\u672b\u5c3e\u306b\u9023\u7d50\n</code></pre> list.cpp<pre><code>/* 2\u3064\u306e\u30ea\u30b9\u30c8\u3092\u9023\u7d50 */\nvector&lt;int&gt; nums1 = { 6, 8, 7, 10, 9 };\n// nums1\u3092nums\u306e\u672b\u5c3e\u306b\u9023\u7d50\nnums.insert(nums.end(), nums1.begin(), nums1.end());\n</code></pre> list.java<pre><code>/* 2\u3064\u306e\u30ea\u30b9\u30c8\u3092\u9023\u7d50 */\nList&lt;Integer&gt; nums1 = new ArrayList&lt;&gt;(Arrays.asList(new Integer[] { 6, 8, 7, 10, 9 }));\nnums.addAll(nums1); // nums1\u3092nums\u306e\u672b\u5c3e\u306b\u9023\u7d50\n</code></pre> list.cs<pre><code>/* 2\u3064\u306e\u30ea\u30b9\u30c8\u3092\u9023\u7d50 */\nList&lt;int&gt; nums1 = [6, 8, 7, 10, 9];\nnums.AddRange(nums1); // nums1\u3092nums\u306e\u672b\u5c3e\u306b\u9023\u7d50\n</code></pre> list_test.go<pre><code>/* 2\u3064\u306e\u30ea\u30b9\u30c8\u3092\u9023\u7d50 */\nnums1 := []int{6, 8, 7, 10, 9}\nnums = append(nums, nums1...) // nums1\u3092nums\u306e\u672b\u5c3e\u306b\u9023\u7d50\n</code></pre> list.swift<pre><code>/* 2\u3064\u306e\u30ea\u30b9\u30c8\u3092\u9023\u7d50 */\nlet nums1 = [6, 8, 7, 10, 9]\nnums.append(contentsOf: nums1) // nums1\u3092nums\u306e\u672b\u5c3e\u306b\u9023\u7d50\n</code></pre> list.js<pre><code>/* 2\u3064\u306e\u30ea\u30b9\u30c8\u3092\u9023\u7d50 */\nconst nums1 = [6, 8, 7, 10, 9];\nnums.push(...nums1); // nums1\u3092nums\u306e\u672b\u5c3e\u306b\u9023\u7d50\n</code></pre> list.ts<pre><code>/* 2\u3064\u306e\u30ea\u30b9\u30c8\u3092\u9023\u7d50 */\nconst nums1: number[] = [6, 8, 7, 10, 9];\nnums.push(...nums1); // nums1\u3092nums\u306e\u672b\u5c3e\u306b\u9023\u7d50\n</code></pre> list.dart<pre><code>/* 2\u3064\u306e\u30ea\u30b9\u30c8\u3092\u9023\u7d50 */\nList&lt;int&gt; nums1 = [6, 8, 7, 10, 9];\nnums.addAll(nums1); // nums1\u3092nums\u306e\u672b\u5c3e\u306b\u9023\u7d50\n</code></pre> list.rs<pre><code>/* 2\u3064\u306e\u30ea\u30b9\u30c8\u3092\u9023\u7d50 */\nlet nums1: Vec&lt;i32&gt; = vec![6, 8, 7, 10, 9];\nnums.extend(nums1);\n</code></pre> list.c<pre><code>// C\u306f\u7d44\u307f\u8fbc\u307f\u306e\u52d5\u7684\u914d\u5217\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u305b\u3093\n</code></pre> list.kt<pre><code>\n</code></pre>"},{"location":"chapter_array_and_linkedlist/list/#6","title":"6. \u00a0 \u30ea\u30b9\u30c8\u306e\u30bd\u30fc\u30c8","text":"<p>\u30ea\u30b9\u30c8\u304c\u30bd\u30fc\u30c8\u3055\u308c\u308b\u3068\u3001\u300c\u4e8c\u5206\u63a2\u7d22\u300d\u3084\u300c\u53cc\u30dd\u30a4\u30f3\u30bf\u300d\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306a\u3069\u3001\u914d\u5217\u95a2\u9023\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u554f\u984c\u3067\u3088\u304f\u4f7f\u7528\u3055\u308c\u308b\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlin list.py<pre><code># \u30ea\u30b9\u30c8\u3092\u30bd\u30fc\u30c8\nnums.sort() # \u30bd\u30fc\u30c8\u5f8c\u3001\u30ea\u30b9\u30c8\u8981\u7d20\u306f\u6607\u9806\u306b\u306a\u308a\u307e\u3059\n</code></pre> list.cpp<pre><code>/* \u30ea\u30b9\u30c8\u3092\u30bd\u30fc\u30c8 */\nsort(nums.begin(), nums.end()); // \u30bd\u30fc\u30c8\u5f8c\u3001\u30ea\u30b9\u30c8\u8981\u7d20\u306f\u6607\u9806\u306b\u306a\u308a\u307e\u3059\n</code></pre> list.java<pre><code>/* \u30ea\u30b9\u30c8\u3092\u30bd\u30fc\u30c8 */\nCollections.sort(nums); // \u30bd\u30fc\u30c8\u5f8c\u3001\u30ea\u30b9\u30c8\u8981\u7d20\u306f\u6607\u9806\u306b\u306a\u308a\u307e\u3059\n</code></pre> list.cs<pre><code>/* \u30ea\u30b9\u30c8\u3092\u30bd\u30fc\u30c8 */\nnums.Sort(); // \u30bd\u30fc\u30c8\u5f8c\u3001\u30ea\u30b9\u30c8\u8981\u7d20\u306f\u6607\u9806\u306b\u306a\u308a\u307e\u3059\n</code></pre> list_test.go<pre><code>/* \u30ea\u30b9\u30c8\u3092\u30bd\u30fc\u30c8 */\nsort.Ints(nums) // \u30bd\u30fc\u30c8\u5f8c\u3001\u30ea\u30b9\u30c8\u8981\u7d20\u306f\u6607\u9806\u306b\u306a\u308a\u307e\u3059\n</code></pre> list.swift<pre><code>/* \u30ea\u30b9\u30c8\u3092\u30bd\u30fc\u30c8 */\nnums.sort() // \u30bd\u30fc\u30c8\u5f8c\u3001\u30ea\u30b9\u30c8\u8981\u7d20\u306f\u6607\u9806\u306b\u306a\u308a\u307e\u3059\n</code></pre> list.js<pre><code>/* \u30ea\u30b9\u30c8\u3092\u30bd\u30fc\u30c8 */\nnums.sort((a, b) =&gt; a - b); // \u30bd\u30fc\u30c8\u5f8c\u3001\u30ea\u30b9\u30c8\u8981\u7d20\u306f\u6607\u9806\u306b\u306a\u308a\u307e\u3059\n</code></pre> list.ts<pre><code>/* \u30ea\u30b9\u30c8\u3092\u30bd\u30fc\u30c8 */\nnums.sort((a, b) =&gt; a - b); // \u30bd\u30fc\u30c8\u5f8c\u3001\u30ea\u30b9\u30c8\u8981\u7d20\u306f\u6607\u9806\u306b\u306a\u308a\u307e\u3059\n</code></pre> list.dart<pre><code>/* \u30ea\u30b9\u30c8\u3092\u30bd\u30fc\u30c8 */\nnums.sort(); // \u30bd\u30fc\u30c8\u5f8c\u3001\u30ea\u30b9\u30c8\u8981\u7d20\u306f\u6607\u9806\u306b\u306a\u308a\u307e\u3059\n</code></pre> list.rs<pre><code>/* \u30ea\u30b9\u30c8\u3092\u30bd\u30fc\u30c8 */\nnums.sort(); // \u30bd\u30fc\u30c8\u5f8c\u3001\u30ea\u30b9\u30c8\u8981\u7d20\u306f\u6607\u9806\u306b\u306a\u308a\u307e\u3059\n</code></pre> list.c<pre><code>// C\u306f\u7d44\u307f\u8fbc\u307f\u306e\u52d5\u7684\u914d\u5217\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u305b\u3093\n</code></pre> list.kt<pre><code>\n</code></pre>"},{"location":"chapter_array_and_linkedlist/list/#432","title":"4.3.2 \u00a0 \u30ea\u30b9\u30c8\u306e\u5b9f\u88c5","text":"<p>\u591a\u304f\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306b\u306f\u3001Java\u3001C++\u3001Python\u306a\u3069\u3092\u542b\u3080\u7d44\u307f\u8fbc\u307f\u30ea\u30b9\u30c8\u304c\u4ed8\u5c5e\u3057\u3066\u3044\u307e\u3059\u3002\u305d\u308c\u3089\u306e\u5b9f\u88c5\u306f\u3001\u521d\u671f\u5bb9\u91cf\u3084\u62e1\u5f35\u4fc2\u6570\u306a\u3069\u306e\u69d8\u3005\u306a\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u614e\u91cd\u306b\u8003\u616e\u3057\u305f\u8a2d\u5b9a\u3067\u3001\u8907\u96d1\u306b\u306a\u308a\u304c\u3061\u3067\u3059\u3002\u8208\u5473\u306e\u3042\u308b\u8aad\u8005\u306f\u3001\u3055\u3089\u306a\u308b\u5b66\u7fd2\u306e\u305f\u3081\u306b\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092\u8abf\u3079\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</p> <p>\u30ea\u30b9\u30c8\u304c\u3069\u306e\u3088\u3046\u306b\u52d5\u4f5c\u3059\u308b\u304b\u306e\u7406\u89e3\u3092\u6df1\u3081\u308b\u305f\u3081\u306b\u30013\u3064\u306e\u91cd\u8981\u306a\u8a2d\u8a08\u5074\u9762\u306b\u7126\u70b9\u3092\u5f53\u3066\u3066\u3001\u7c21\u7565\u5316\u3055\u308c\u305f\u30ea\u30b9\u30c8\u306e\u5b9f\u88c5\u3092\u8a66\u307f\u307e\u3059\uff1a</p> <ul> <li>\u521d\u671f\u5bb9\u91cf\uff1a\u914d\u5217\u306b\u5408\u7406\u7684\u306a\u521d\u671f\u5bb9\u91cf\u3092\u9078\u629e\u3057\u307e\u3059\u3002\u3053\u306e\u4f8b\u3067\u306f\u3001\u521d\u671f\u5bb9\u91cf\u3068\u3057\u306610\u3092\u9078\u629e\u3057\u307e\u3059\u3002</li> <li>\u30b5\u30a4\u30ba\u8a18\u9332\uff1a\u30ea\u30b9\u30c8\u5185\u306e\u73fe\u5728\u306e\u8981\u7d20\u6570\u3092\u8a18\u9332\u3059\u308b\u5909\u6570<code>size</code>\u3092\u5ba3\u8a00\u3057\u3001\u8981\u7d20\u306e\u633f\u5165\u3068\u524a\u9664\u3067\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u306b\u66f4\u65b0\u3057\u307e\u3059\u3002\u3053\u306e\u5909\u6570\u306b\u3088\u308a\u3001\u30ea\u30b9\u30c8\u306e\u672b\u5c3e\u3092\u7279\u5b9a\u3057\u3001\u62e1\u5f35\u304c\u5fc5\u8981\u304b\u3069\u3046\u304b\u3092\u5224\u65ad\u3067\u304d\u307e\u3059\u3002</li> <li>\u62e1\u5f35\u30e1\u30ab\u30cb\u30ba\u30e0\uff1a\u8981\u7d20\u633f\u5165\u6642\u306b\u30ea\u30b9\u30c8\u304c\u6e80\u676f\u306b\u9054\u3057\u305f\u5834\u5408\u3001\u62e1\u5f35\u30d7\u30ed\u30bb\u30b9\u304c\u5fc5\u8981\u3067\u3059\u3002\u3053\u308c\u306b\u306f\u62e1\u5f35\u4fc2\u6570\u306b\u57fa\u3065\u3044\u3066\u3088\u308a\u5927\u304d\u306a\u914d\u5217\u3092\u4f5c\u6210\u3057\u3001\u73fe\u5728\u306e\u914d\u5217\u304b\u3089\u3059\u3079\u3066\u306e\u8981\u7d20\u3092\u65b0\u3057\u3044\u914d\u5217\u306b\u8ee2\u9001\u3059\u308b\u3053\u3068\u304c\u542b\u307e\u308c\u307e\u3059\u3002\u3053\u306e\u4f8b\u3067\u306f\u3001\u62e1\u5f35\u306e\u305f\u3073\u306b\u914d\u5217\u30b5\u30a4\u30ba\u30922\u500d\u306b\u3059\u308b\u3053\u3068\u3092\u898f\u5b9a\u3057\u307e\u3059\u3002</li> </ul> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby my_list.py<pre><code>class MyList:\n \"\"\"\u30ea\u30b9\u30c8\u30af\u30e9\u30b9\"\"\"\n\n def __init__(self):\n \"\"\"\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\"\"\"\n self._capacity: int = 10 # \u30ea\u30b9\u30c8\u306e\u5bb9\u91cf\n self._arr: list[int] = [0] * self._capacity # \u914d\u5217\uff08\u30ea\u30b9\u30c8\u8981\u7d20\u3092\u683c\u7d0d\uff09\n self._size: int = 0 # \u30ea\u30b9\u30c8\u306e\u9577\u3055\uff08\u73fe\u5728\u306e\u8981\u7d20\u6570\uff09\n self._extend_ratio: int = 2 # \u5404\u30ea\u30b9\u30c8\u62e1\u5f35\u306e\u500d\u6570\n\n def size(self) -&gt; int:\n \"\"\"\u30ea\u30b9\u30c8\u306e\u9577\u3055\uff08\u73fe\u5728\u306e\u8981\u7d20\u6570\uff09\u3092\u53d6\u5f97\"\"\"\n return self._size\n\n def capacity(self) -&gt; int:\n \"\"\"\u30ea\u30b9\u30c8\u306e\u5bb9\u91cf\u3092\u53d6\u5f97\"\"\"\n return self._capacity\n\n def get(self, index: int) -&gt; int:\n \"\"\"\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\"\"\"\n # \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\u7bc4\u56f2\u5916\u306e\u5834\u5408\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u4f8b\u5916\u3092\u30b9\u30ed\u30fc\n if index &lt; 0 or index &gt;= self._size:\n raise IndexError(\"Index out of bounds\")\n return self._arr[index]\n\n def set(self, num: int, index: int):\n \"\"\"\u8981\u7d20\u3092\u66f4\u65b0\"\"\"\n if index &lt; 0 or index &gt;= self._size:\n raise IndexError(\"Index out of bounds\")\n self._arr[index] = num\n\n def add(self, num: int):\n \"\"\"\u672b\u5c3e\u306b\u8981\u7d20\u3092\u8ffd\u52a0\"\"\"\n # \u8981\u7d20\u6570\u304c\u5bb9\u91cf\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u62e1\u5f35\u30e1\u30ab\u30cb\u30ba\u30e0\u3092\u30c8\u30ea\u30ac\u30fc\n if self.size() == self.capacity():\n self.extend_capacity()\n self._arr[self._size] = num\n self._size += 1\n\n def insert(self, num: int, index: int):\n \"\"\"\u4e2d\u9593\u306b\u8981\u7d20\u3092\u633f\u5165\"\"\"\n if index &lt; 0 or index &gt;= self._size:\n raise IndexError(\"Index out of bounds\")\n # \u8981\u7d20\u6570\u304c\u5bb9\u91cf\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u62e1\u5f35\u30e1\u30ab\u30cb\u30ba\u30e0\u3092\u30c8\u30ea\u30ac\u30fc\n if self._size == self.capacity():\n self.extend_capacity()\n # \u30a4\u30f3\u30c7\u30c3\u30af\u30b9 index \u3088\u308a\u5f8c\u306e\u3059\u3079\u3066\u306e\u8981\u7d20\u30921\u3064\u5f8c\u308d\u306b\u79fb\u52d5\n for j in range(self._size - 1, index - 1, -1):\n self._arr[j + 1] = self._arr[j]\n self._arr[index] = num\n # \u8981\u7d20\u6570\u3092\u66f4\u65b0\n self._size += 1\n\n def remove(self, index: int) -&gt; int:\n \"\"\"\u8981\u7d20\u3092\u524a\u9664\"\"\"\n if index &lt; 0 or index &gt;= self._size:\n raise IndexError(\"Index out of bounds\")\n num = self._arr[index]\n # \u30a4\u30f3\u30c7\u30c3\u30af\u30b9 index \u3088\u308a\u5f8c\u306e\u3059\u3079\u3066\u306e\u8981\u7d20\u30921\u3064\u524d\u306b\u79fb\u52d5\n for j in range(index, self._size - 1):\n self._arr[j] = self._arr[j + 1]\n # \u8981\u7d20\u6570\u3092\u66f4\u65b0\n self._size -= 1\n # \u524a\u9664\u3055\u308c\u305f\u8981\u7d20\u3092\u8fd4\u3059\n return num\n\n def extend_capacity(self):\n \"\"\"\u30ea\u30b9\u30c8\u3092\u62e1\u5f35\"\"\"\n # \u5143\u306e\u914d\u5217\u306e _extend_ratio \u500d\u306e\u9577\u3055\u306e\u65b0\u3057\u3044\u914d\u5217\u3092\u4f5c\u6210\u3057\u3001\u5143\u306e\u914d\u5217\u3092\u65b0\u3057\u3044\u914d\u5217\u306b\u30b3\u30d4\u30fc\n self._arr = self._arr + [0] * self.capacity() * (self._extend_ratio - 1)\n # \u30ea\u30b9\u30c8\u306e\u5bb9\u91cf\u3092\u66f4\u65b0\n self._capacity = len(self._arr)\n\n def to_array(self) -&gt; list[int]:\n \"\"\"\u6709\u52b9\u306a\u9577\u3055\u306e\u30ea\u30b9\u30c8\u3092\u8fd4\u3059\"\"\"\n return self._arr[: self._size]\n</code></pre> my_list.cpp<pre><code>/* \u30ea\u30b9\u30c8\u30af\u30e9\u30b9 */\nclass MyList {\n private:\n int *arr; // \u914d\u5217\uff08\u30ea\u30b9\u30c8\u8981\u7d20\u3092\u683c\u7d0d\uff09\n int arrCapacity = 10; // \u30ea\u30b9\u30c8\u306e\u5bb9\u91cf\n int arrSize = 0; // \u30ea\u30b9\u30c8\u306e\u9577\u3055\uff08\u73fe\u5728\u306e\u8981\u7d20\u6570\uff09\n int extendRatio = 2; // \u30ea\u30b9\u30c8\u62e1\u5f35\u6642\u306e\u500d\u7387\n\n public:\n /* \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf */\n MyList() {\n arr = new int[arrCapacity];\n }\n\n /* \u30c7\u30b9\u30c8\u30e9\u30af\u30bf */\n ~MyList() {\n delete[] arr;\n }\n\n /* \u30ea\u30b9\u30c8\u306e\u9577\u3055\u3092\u53d6\u5f97\uff08\u73fe\u5728\u306e\u8981\u7d20\u6570\uff09*/\n int size() {\n return arrSize;\n }\n\n /* \u30ea\u30b9\u30c8\u306e\u5bb9\u91cf\u3092\u53d6\u5f97 */\n int capacity() {\n return arrCapacity;\n }\n\n /* \u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\n int get(int index) {\n // \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\u7bc4\u56f2\u5916\u306e\u5834\u5408\u3001\u4f8b\u5916\u3092\u30b9\u30ed\u30fc\uff08\u4ee5\u4e0b\u540c\u69d8\uff09\n if (index &lt; 0 || index &gt;= size())\n throw out_of_range(\"Index out of bounds\");\n return arr[index];\n }\n\n /* \u8981\u7d20\u3092\u66f4\u65b0 */\n void set(int index, int num) {\n if (index &lt; 0 || index &gt;= size())\n throw out_of_range(\"Index out of bounds\");\n arr[index] = num;\n }\n\n /* \u672b\u5c3e\u306b\u8981\u7d20\u3092\u8ffd\u52a0 */\n void add(int num) {\n // \u8981\u7d20\u6570\u304c\u5bb9\u91cf\u3092\u8d85\u3048\u305f\u5834\u5408\u3001\u62e1\u5f35\u30e1\u30ab\u30cb\u30ba\u30e0\u3092\u30c8\u30ea\u30ac\u30fc\n if (size() == capacity())\n extendCapacity();\n arr[size()] = num;\n // \u8981\u7d20\u6570\u3092\u66f4\u65b0\n arrSize++;\n }\n\n /* \u4e2d\u9593\u306b\u8981\u7d20\u3092\u633f\u5165 */\n void insert(int index, int num) {\n if (index &lt; 0 || index &gt;= size())\n throw out_of_range(\"Index out of bounds\");\n // \u8981\u7d20\u6570\u304c\u5bb9\u91cf\u3092\u8d85\u3048\u305f\u5834\u5408\u3001\u62e1\u5f35\u30e1\u30ab\u30cb\u30ba\u30e0\u3092\u30c8\u30ea\u30ac\u30fc\n if (size() == capacity())\n extendCapacity();\n // `index`\u3088\u308a\u5f8c\u306e\u3059\u3079\u3066\u306e\u8981\u7d20\u30921\u3064\u5f8c\u308d\u306b\u79fb\u52d5\n for (int j = size() - 1; j &gt;= index; j--) {\n arr[j + 1] = arr[j];\n }\n arr[index] = num;\n // \u8981\u7d20\u6570\u3092\u66f4\u65b0\n arrSize++;\n }\n\n /* \u8981\u7d20\u3092\u524a\u9664 */\n int remove(int index) {\n if (index &lt; 0 || index &gt;= size())\n throw out_of_range(\"Index out of bounds\");\n int num = arr[index];\n // `index`\u3088\u308a\u5f8c\u306e\u3059\u3079\u3066\u306e\u8981\u7d20\u30921\u3064\u524d\u306b\u79fb\u52d5\n for (int j = index; j &lt; size() - 1; j++) {\n arr[j] = arr[j + 1];\n }\n // \u8981\u7d20\u6570\u3092\u66f4\u65b0\n arrSize--;\n // \u524a\u9664\u3055\u308c\u305f\u8981\u7d20\u3092\u8fd4\u5374\n return num;\n }\n\n /* \u30ea\u30b9\u30c8\u3092\u62e1\u5f35 */\n void extendCapacity() {\n // \u5143\u306e\u914d\u5217\u306eextendRatio\u500d\u306e\u9577\u3055\u3067\u65b0\u3057\u3044\u914d\u5217\u3092\u4f5c\u6210\n int newCapacity = capacity() * extendRatio;\n int *tmp = arr;\n arr = new int[newCapacity];\n // \u5143\u306e\u914d\u5217\u306e\u3059\u3079\u3066\u306e\u8981\u7d20\u3092\u65b0\u3057\u3044\u914d\u5217\u306b\u30b3\u30d4\u30fc\n for (int i = 0; i &lt; size(); i++) {\n arr[i] = tmp[i];\n }\n // \u30e1\u30e2\u30ea\u3092\u89e3\u653e\n delete[] tmp;\n arrCapacity = newCapacity;\n }\n\n /* \u30ea\u30b9\u30c8\u3092Vector\u306b\u5909\u63db\u3057\u3066\u5370\u5237\u7528\u306b\u4f7f\u7528 */\n vector&lt;int&gt; toVector() {\n // \u6709\u52b9\u306a\u9577\u3055\u7bc4\u56f2\u5185\u306e\u8981\u7d20\u306e\u307f\u3092\u5909\u63db\n vector&lt;int&gt; vec(size());\n for (int i = 0; i &lt; size(); i++) {\n vec[i] = arr[i];\n }\n return vec;\n }\n};\n</code></pre> my_list.java<pre><code>/* \u30ea\u30b9\u30c8\u30af\u30e9\u30b9 */\nclass MyList {\n private int[] arr; // \u914d\u5217\uff08\u30ea\u30b9\u30c8\u8981\u7d20\u3092\u683c\u7d0d\uff09\n private int capacity = 10; // \u30ea\u30b9\u30c8\u5bb9\u91cf\n private int size = 0; // \u30ea\u30b9\u30c8\u9577\uff08\u73fe\u5728\u306e\u8981\u7d20\u6570\uff09\n private int extendRatio = 2; // \u30ea\u30b9\u30c8\u306e\u5404\u62e1\u5f35\u500d\u7387\n\n /* \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf */\n public MyList() {\n arr = new int[capacity];\n }\n\n /* \u30ea\u30b9\u30c8\u9577\u3092\u53d6\u5f97\uff08\u73fe\u5728\u306e\u8981\u7d20\u6570\uff09 */\n public int size() {\n return size;\n }\n\n /* \u30ea\u30b9\u30c8\u5bb9\u91cf\u3092\u53d6\u5f97 */\n public int capacity() {\n return capacity;\n }\n\n /* \u8981\u7d20\u3078\u306e\u30a2\u30af\u30bb\u30b9 */\n public int get(int index) {\n // \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\u7bc4\u56f2\u5916\u306e\u5834\u5408\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u4f8b\u5916\u3092\u30b9\u30ed\u30fc\n if (index &lt; 0 || index &gt;= size)\n throw new IndexOutOfBoundsException(\"\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\u7bc4\u56f2\u5916\u3067\u3059\");\n return arr[index];\n }\n\n /* \u8981\u7d20\u306e\u66f4\u65b0 */\n public void set(int index, int num) {\n if (index &lt; 0 || index &gt;= size)\n throw new IndexOutOfBoundsException(\"\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\u7bc4\u56f2\u5916\u3067\u3059\");\n arr[index] = num;\n }\n\n /* \u672b\u5c3e\u306b\u8981\u7d20\u3092\u8ffd\u52a0 */\n public void add(int num) {\n // \u8981\u7d20\u6570\u304c\u5bb9\u91cf\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u62e1\u5f35\u30e1\u30ab\u30cb\u30ba\u30e0\u3092\u5b9f\u884c\n if (size == capacity())\n extendCapacity();\n arr[size] = num;\n // \u8981\u7d20\u6570\u3092\u66f4\u65b0\n size++;\n }\n\n /* \u4e2d\u9593\u306b\u8981\u7d20\u3092\u633f\u5165 */\n public void insert(int index, int num) {\n if (index &lt; 0 || index &gt;= size)\n throw new IndexOutOfBoundsException(\"\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\u7bc4\u56f2\u5916\u3067\u3059\");\n // \u8981\u7d20\u6570\u304c\u5bb9\u91cf\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u62e1\u5f35\u30e1\u30ab\u30cb\u30ba\u30e0\u3092\u5b9f\u884c\n if (size == capacity())\n extendCapacity();\n // `index` \u3088\u308a\u5f8c\u306e\u3059\u3079\u3066\u306e\u8981\u7d20\u30921\u3064\u5f8c\u308d\u306b\u79fb\u52d5\n for (int j = size - 1; j &gt;= index; j--) {\n arr[j + 1] = arr[j];\n }\n arr[index] = num;\n // \u8981\u7d20\u6570\u3092\u66f4\u65b0\n size++;\n }\n\n /* \u8981\u7d20\u306e\u524a\u9664 */\n public int remove(int index) {\n if (index &lt; 0 || index &gt;= size)\n throw new IndexOutOfBoundsException(\"\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\u7bc4\u56f2\u5916\u3067\u3059\");\n int num = arr[index];\n // `index` \u3088\u308a\u5f8c\u306e\u3059\u3079\u3066\u306e\u8981\u7d20\u30921\u3064\u524d\u306b\u79fb\u52d5\n for (int j = index; j &lt; size - 1; j++) {\n arr[j] = arr[j + 1];\n }\n // \u8981\u7d20\u6570\u3092\u66f4\u65b0\n size--;\n // \u524a\u9664\u3055\u308c\u305f\u8981\u7d20\u3092\u8fd4\u3059\n return num;\n }\n\n /* \u30ea\u30b9\u30c8\u3092\u62e1\u5f35 */\n public void extendCapacity() {\n // \u5143\u306e\u914d\u5217\u306e\u9577\u3055\u3092 extendRatio \u500d\u3057\u305f\u65b0\u3057\u3044\u914d\u5217\u3092\u4f5c\u6210\u3057\u3001\u5143\u306e\u914d\u5217\u3092\u65b0\u3057\u3044\u914d\u5217\u306b\u30b3\u30d4\u30fc\n arr = Arrays.copyOf(arr, capacity() * extendRatio);\n // \u30ea\u30b9\u30c8\u5bb9\u91cf\u3092\u66f4\u65b0\n capacity = arr.length;\n }\n\n /* \u30ea\u30b9\u30c8\u3092\u914d\u5217\u306b\u5909\u63db */\n public int[] toArray() {\n int size = size();\n // \u6709\u52b9\u306a\u9577\u3055\u7bc4\u56f2\u5185\u306e\u8981\u7d20\u306e\u307f\u3092\u5909\u63db\n int[] arr = new int[size];\n for (int i = 0; i &lt; size; i++) {\n arr[i] = get(i);\n }\n return arr;\n }\n}\n</code></pre> my_list.cs<pre><code>[class]{MyList}-[func]{}\n</code></pre> my_list.go<pre><code>[class]{myList}-[func]{}\n</code></pre> my_list.swift<pre><code>[class]{MyList}-[func]{}\n</code></pre> my_list.js<pre><code>[class]{MyList}-[func]{}\n</code></pre> my_list.ts<pre><code>[class]{MyList}-[func]{}\n</code></pre> my_list.dart<pre><code>[class]{MyList}-[func]{}\n</code></pre> my_list.rs<pre><code>[class]{MyList}-[func]{}\n</code></pre> my_list.c<pre><code>[class]{MyList}-[func]{}\n</code></pre> my_list.kt<pre><code>[class]{MyList}-[func]{}\n</code></pre> my_list.rb<pre><code>[class]{MyList}-[func]{}\n</code></pre>"},{"location":"chapter_array_and_linkedlist/ram_and_cache/","title":"4.4 \u00a0 \u30e1\u30e2\u30ea\u3068\u30ad\u30e3\u30c3\u30b7\u30e5 *","text":"<p>\u3053\u306e\u7ae0\u306e\u6700\u521d\u306e2\u3064\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u300c\u9023\u7d9a\u683c\u7d0d\u300d\u3068\u300c\u5206\u6563\u683c\u7d0d\u300d\u3092\u305d\u308c\u305e\u308c\u8868\u73fe\u3059\u308b2\u3064\u306e\u57fa\u672c\u7684\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u3067\u3042\u308b\u914d\u5217\u3068\u9023\u7d50\u30ea\u30b9\u30c8\u3092\u63a2\u7a76\u3057\u307e\u3057\u305f\u3002</p> <p>\u5b9f\u969b\u3001\u7269\u7406\u69cb\u9020\u306f\u30d7\u30ed\u30b0\u30e9\u30e0\u304c\u30e1\u30e2\u30ea\u3068\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u3069\u306e\u7a0b\u5ea6\u52b9\u7387\u7684\u306b\u5229\u7528\u3059\u308b\u304b\u3092\u5927\u304d\u304f\u6c7a\u5b9a\u3057\u3001\u3053\u308c\u304c\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5168\u4f53\u7684\u306a\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306b\u5f71\u97ff\u3092\u4e0e\u3048\u307e\u3059\u3002</p>"},{"location":"chapter_array_and_linkedlist/ram_and_cache/#441","title":"4.4.1 \u00a0 \u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u8a18\u61b6\u88c5\u7f6e","text":"<p>\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u306b\u306f3\u7a2e\u985e\u306e\u8a18\u61b6\u88c5\u7f6e\u304c\u3042\u308a\u307e\u3059\uff1a\u30cf\u30fc\u30c9\u30c7\u30a3\u30b9\u30af\u3001\u30e9\u30f3\u30c0\u30e0\u30a2\u30af\u30bb\u30b9\u30e1\u30e2\u30ea\uff08RAM\uff09\u3001\u304a\u3088\u3073\u30ad\u30e3\u30c3\u30b7\u30e5\u30e1\u30e2\u30ea\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u8868\u306f\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30b7\u30b9\u30c6\u30e0\u306b\u304a\u3051\u308b\u305d\u308c\u305e\u308c\u306e\u5f79\u5272\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u7279\u6027\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002</p> <p> \u8868 4-2 \u00a0 \u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u8a18\u61b6\u88c5\u7f6e </p> \u30cf\u30fc\u30c9\u30c7\u30a3\u30b9\u30af \u30e1\u30e2\u30ea \u30ad\u30e3\u30c3\u30b7\u30e5 \u7528\u9014 OS\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u3001\u30d5\u30a1\u30a4\u30eb\u306a\u3069\u306e\u30c7\u30fc\u30bf\u306e\u9577\u671f\u4fdd\u5b58 \u73fe\u5728\u5b9f\u884c\u4e2d\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u3068\u51e6\u7406\u4e2d\u306e\u30c7\u30fc\u30bf\u306e\u4e00\u6642\u4fdd\u5b58 \u983b\u7e41\u306b\u30a2\u30af\u30bb\u30b9\u3055\u308c\u308b\u30c7\u30fc\u30bf\u3068\u547d\u4ee4\u3092\u4fdd\u5b58\u3057\u3001CPU\u306e\u30e1\u30e2\u30ea\u3078\u306e\u30a2\u30af\u30bb\u30b9\u6570\u3092\u524a\u6e1b \u63ee\u767a\u6027 \u96fb\u6e90\u30aa\u30d5\u5f8c\u3082\u30c7\u30fc\u30bf\u306f\u5931\u308f\u308c\u306a\u3044 \u96fb\u6e90\u30aa\u30d5\u5f8c\u306b\u30c7\u30fc\u30bf\u306f\u5931\u308f\u308c\u308b \u96fb\u6e90\u30aa\u30d5\u5f8c\u306b\u30c7\u30fc\u30bf\u306f\u5931\u308f\u308c\u308b \u5bb9\u91cf \u3088\u308a\u5927\u304d\u3044\u3001TB\u30ec\u30d9\u30eb \u3088\u308a\u5c0f\u3055\u3044\u3001GB\u30ec\u30d9\u30eb \u975e\u5e38\u306b\u5c0f\u3055\u3044\u3001MB\u30ec\u30d9\u30eb \u901f\u5ea6 \u3088\u308a\u9045\u3044\u3001\u6570\u767e\u304b\u3089\u6570\u5343MB/s \u3088\u308a\u9ad8\u901f\u3001\u6570\u5341GB/s \u975e\u5e38\u306b\u9ad8\u901f\u3001\u6570\u5341\u304b\u3089\u6570\u767eGB/s \u4fa1\u683c\uff08USD\uff09 \u3088\u308a\u5b89\u4fa1\u3001\u6570\u30bb\u30f3\u30c8/GB \u3088\u308a\u9ad8\u4fa1\u3001\u6570\u30c9\u30eb/GB \u975e\u5e38\u306b\u9ad8\u4fa1\u3001CPU\u3068\u4e00\u7dd2\u306b\u4fa1\u683c\u8a2d\u5b9a <p>\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u8a18\u61b6\u30b7\u30b9\u30c6\u30e0\u306f\u3001\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u30d4\u30e9\u30df\u30c3\u30c9\u3068\u3057\u3066\u8996\u899a\u5316\u3067\u304d\u307e\u3059\u3002\u30d4\u30e9\u30df\u30c3\u30c9\u306e\u4e0a\u90e8\u306b\u3042\u308b\u8a18\u61b6\u88c5\u7f6e\u307b\u3069\u9ad8\u901f\u3067\u3001\u5bb9\u91cf\u304c\u5c0f\u3055\u304f\u3001\u3088\u308a\u9ad8\u4fa1\u3067\u3059\u3002\u3053\u306e\u30de\u30eb\u30c1\u30ec\u30d9\u30eb\u8a2d\u8a08\u306f\u5076\u7136\u3067\u306f\u306a\u304f\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u79d1\u5b66\u8005\u3068\u30a8\u30f3\u30b8\u30cb\u30a2\u306b\u3088\u308b\u614e\u91cd\u306a\u691c\u8a0e\u306e\u7d50\u679c\u3067\u3059\u3002</p> <ul> <li>\u30cf\u30fc\u30c9\u30c7\u30a3\u30b9\u30af\u3092\u30e1\u30e2\u30ea\u306b\u7f6e\u304d\u63db\u3048\u308b\u306e\u306f\u56f0\u96e3\u3067\u3059\u3002\u7b2c\u4e00\u306b\u3001\u30e1\u30e2\u30ea\u5185\u306e\u30c7\u30fc\u30bf\u306f\u96fb\u6e90\u30aa\u30d5\u5f8c\u306b\u5931\u308f\u308c\u308b\u305f\u3081\u3001\u9577\u671f\u30c7\u30fc\u30bf\u4fdd\u5b58\u306b\u306f\u9069\u3057\u3066\u3044\u307e\u305b\u3093\u3002\u7b2c\u4e8c\u306b\u3001\u30e1\u30e2\u30ea\u306f\u30cf\u30fc\u30c9\u30c7\u30a3\u30b9\u30af\u3088\u308a\u3082\u5927\u5e45\u306b\u9ad8\u4fa1\u3067\u3001\u6d88\u8cbb\u8005\u5e02\u5834\u3067\u306e\u5e83\u7bc4\u56f2\u306a\u4f7f\u7528\u306e\u5b9f\u73fe\u53ef\u80fd\u6027\u3092\u5236\u9650\u3057\u3066\u3044\u307e\u3059\u3002</li> <li>\u30ad\u30e3\u30c3\u30b7\u30e5\u306f\u5927\u5bb9\u91cf\u3068\u9ad8\u901f\u306e\u30c8\u30ec\u30fc\u30c9\u30aa\u30d5\u306b\u76f4\u9762\u3057\u3066\u3044\u307e\u3059\u3002L1\u3001L2\u3001L3\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u5bb9\u91cf\u304c\u5897\u52a0\u3059\u308b\u306b\u3064\u308c\u3066\u3001\u305d\u306e\u7269\u7406\u30b5\u30a4\u30ba\u304c\u5927\u304d\u304f\u306a\u308a\u3001CPU\u30b3\u30a2\u304b\u3089\u306e\u8ddd\u96e2\u304c\u5897\u52a0\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u30c7\u30fc\u30bf\u8ee2\u9001\u6642\u9593\u304c\u9577\u304f\u306a\u308a\u3001\u30a2\u30af\u30bb\u30b9\u9045\u5ef6\u304c\u9ad8\u304f\u306a\u308a\u307e\u3059\u3002\u73fe\u5728\u306e\u6280\u8853\u3067\u306f\u3001\u30de\u30eb\u30c1\u30ec\u30d9\u30eb\u30ad\u30e3\u30c3\u30b7\u30e5\u69cb\u9020\u304c\u5bb9\u91cf\u3001\u901f\u5ea6\u3001\u30b3\u30b9\u30c8\u306e\u9593\u306e\u6700\u9069\u306a\u30d0\u30e9\u30f3\u30b9\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002</li> </ul> <p></p> <p> \u56f3 4-9 \u00a0 \u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u8a18\u61b6\u30b7\u30b9\u30c6\u30e0 </p> <p>Tip</p> <p>\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u306e\u8a18\u61b6\u968e\u5c64\u306f\u3001\u901f\u5ea6\u3001\u5bb9\u91cf\u3001\u30b3\u30b9\u30c8\u306e\u9593\u306e\u614e\u91cd\u306a\u30d0\u30e9\u30f3\u30b9\u3092\u53cd\u6620\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u30bf\u30a4\u30d7\u306e\u30c8\u30ec\u30fc\u30c9\u30aa\u30d5\u306f\u69d8\u3005\u306a\u696d\u754c\u3067\u4e00\u822c\u7684\u3067\u3042\u308a\u3001\u5229\u76ca\u3068\u5236\u9650\u306e\u9593\u306e\u6700\u9069\u306a\u30d0\u30e9\u30f3\u30b9\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002</p> <p>\u5168\u4f53\u7684\u306b\u3001\u30cf\u30fc\u30c9\u30c7\u30a3\u30b9\u30af\u306f\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u306e\u9577\u671f\u4fdd\u5b58\u3092\u63d0\u4f9b\u3057\u3001\u30e1\u30e2\u30ea\u306f\u30d7\u30ed\u30b0\u30e9\u30e0\u5b9f\u884c\u4e2d\u306b\u51e6\u7406\u3055\u308c\u308b\u30c7\u30fc\u30bf\u306e\u4e00\u6642\u4fdd\u5b58\u3068\u3057\u3066\u6a5f\u80fd\u3057\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u306f\u983b\u7e41\u306b\u30a2\u30af\u30bb\u30b9\u3055\u308c\u308b\u30c7\u30fc\u30bf\u3068\u547d\u4ee4\u3092\u4fdd\u5b58\u3057\u3066\u5b9f\u884c\u52b9\u7387\u3092\u5411\u4e0a\u3055\u305b\u307e\u3059\u3002\u305d\u308c\u3089\u306f\u4e00\u7dd2\u306b\u306a\u3063\u3066\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30b7\u30b9\u30c6\u30e0\u306e\u52b9\u7387\u7684\u306a\u52d5\u4f5c\u3092\u4fdd\u8a3c\u3057\u307e\u3059\u3002</p> <p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u5b9f\u884c\u4e2d\u3001\u30c7\u30fc\u30bf\u306f\u30cf\u30fc\u30c9\u30c7\u30a3\u30b9\u30af\u304b\u3089\u30e1\u30e2\u30ea\u306b\u8aad\u307f\u8fbc\u307e\u308c\u3001CPU\u8a08\u7b97\u304c\u884c\u308f\u308c\u307e\u3059\u3002CPU\u306e\u62e1\u5f35\u3068\u3057\u3066\u6a5f\u80fd\u3059\u308b\u30ad\u30e3\u30c3\u30b7\u30e5\u306f\u3001**\u30e1\u30e2\u30ea\u304b\u3089\u30a4\u30f3\u30c6\u30ea\u30b8\u30a7\u30f3\u30c8\u306b\u30c7\u30fc\u30bf\u3092\u5148\u8aad\u307f**\u3057\u3001CPU\u306e\u3088\u308a\u9ad8\u901f\u306a\u30c7\u30fc\u30bf\u30a2\u30af\u30bb\u30b9\u3092\u53ef\u80fd\u306b\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u30d7\u30ed\u30b0\u30e9\u30e0\u5b9f\u884c\u52b9\u7387\u304c\u5927\u5e45\u306b\u5411\u4e0a\u3057\u3001\u4f4e\u901f\u306a\u30e1\u30e2\u30ea\u3078\u306e\u4f9d\u5b58\u304c\u6e1b\u5c11\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 4-10 \u00a0 \u30cf\u30fc\u30c9\u30c7\u30a3\u30b9\u30af\u3001\u30e1\u30e2\u30ea\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u9593\u306e\u30c7\u30fc\u30bf\u30d5\u30ed\u30fc </p>"},{"location":"chapter_array_and_linkedlist/ram_and_cache/#442","title":"4.4.2 \u00a0 \u30c7\u30fc\u30bf\u69cb\u9020\u306e\u30e1\u30e2\u30ea\u52b9\u7387","text":"<p>\u30e1\u30e2\u30ea\u7a7a\u9593\u5229\u7528\u306e\u89b3\u70b9\u304b\u3089\u3001\u914d\u5217\u3068\u9023\u7d50\u30ea\u30b9\u30c8\u306b\u306f\u305d\u308c\u305e\u308c\u5229\u70b9\u3068\u5236\u9650\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>\u4e00\u65b9\u3067\u3001**\u30e1\u30e2\u30ea\u306f\u9650\u3089\u308c\u3066\u304a\u308a\u3001\u8907\u6570\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u9593\u3067\u5171\u6709\u3067\u304d\u306a\u3044**\u305f\u3081\u3001\u30c7\u30fc\u30bf\u69cb\u9020\u3067\u306e\u7a7a\u9593\u4f7f\u7528\u306e\u6700\u9069\u5316\u306f\u91cd\u8981\u3067\u3059\u3002\u914d\u5217\u306f\u8981\u7d20\u304c\u5bc6\u63a5\u306b\u30d1\u30c3\u30af\u3055\u308c\u3066\u304a\u308a\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u3088\u3046\u306b\u53c2\u7167\uff08\u30dd\u30a4\u30f3\u30bf\uff09\u306e\u305f\u3081\u306e\u8ffd\u52a0\u30e1\u30e2\u30ea\u3092\u5fc5\u8981\u3068\u3057\u306a\u3044\u305f\u3081\u3001\u7a7a\u9593\u52b9\u7387\u7684\u3067\u3059\u3002\u3057\u304b\u3057\u3001\u914d\u5217\u306f\u9023\u7d9a\u3057\u305f\u30e1\u30e2\u30ea\u30d6\u30ed\u30c3\u30af\u3092\u4e8b\u524d\u306b\u5272\u308a\u5f53\u3066\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u5272\u308a\u5f53\u3066\u3089\u308c\u305f\u7a7a\u9593\u304c\u5b9f\u969b\u306e\u5fc5\u8981\u91cf\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u7121\u99c4\u306b\u3064\u306a\u304c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u914d\u5217\u306e\u62e1\u5f35\u3082\u8ffd\u52a0\u306e\u6642\u9593\u3068\u7a7a\u9593\u306e\u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9\u3092\u4f34\u3044\u307e\u3059\u3002\u5bfe\u7167\u7684\u306b\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306f\u5404\u30ce\u30fc\u30c9\u306b\u5bfe\u3057\u3066\u30e1\u30e2\u30ea\u3092\u52d5\u7684\u306b\u5272\u308a\u5f53\u3066\u30fb\u89e3\u653e\u3057\u3001\u30dd\u30a4\u30f3\u30bf\u306e\u305f\u3081\u306e\u8ffd\u52a0\u30e1\u30e2\u30ea\u306e\u30b3\u30b9\u30c8\u3067\u3088\u308a\u5927\u304d\u306a\u67d4\u8edf\u6027\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002</p> <p>\u4e00\u65b9\u3067\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u5b9f\u884c\u4e2d\u3001\u7e70\u308a\u8fd4\u3055\u308c\u308b\u30e1\u30e2\u30ea\u306e\u5272\u308a\u5f53\u3066\u3068\u89e3\u653e\u306f\u30e1\u30e2\u30ea\u306e\u65ad\u7247\u5316\u3092\u5897\u52a0\u3055\u305b\u3001\u30e1\u30e2\u30ea\u5229\u7528\u52b9\u7387\u3092\u4f4e\u4e0b\u3055\u305b\u307e\u3059\u3002\u914d\u5217\u306f\u9023\u7d9a\u8a18\u61b6\u65b9\u5f0f\u306b\u3088\u308a\u3001\u30e1\u30e2\u30ea\u65ad\u7247\u5316\u3092\u5f15\u304d\u8d77\u3053\u3059\u53ef\u80fd\u6027\u304c\u6bd4\u8f03\u7684\u4f4e\u3044\u3067\u3059\u3002\u5bfe\u7167\u7684\u306b\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306f\u8981\u7d20\u3092\u975e\u9023\u7d9a\u306e\u5834\u6240\u306b\u4fdd\u5b58\u3057\u3001\u983b\u7e41\u306a\u633f\u5165\u3068\u524a\u9664\u306f\u30e1\u30e2\u30ea\u65ad\u7247\u5316\u3092\u60aa\u5316\u3055\u305b\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</p>"},{"location":"chapter_array_and_linkedlist/ram_and_cache/#443","title":"4.4.3 \u00a0 \u30c7\u30fc\u30bf\u69cb\u9020\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u52b9\u7387","text":"<p>\u30ad\u30e3\u30c3\u30b7\u30e5\u306f\u30e1\u30e2\u30ea\u3088\u308a\u3082\u7a7a\u9593\u5bb9\u91cf\u304c\u306f\u308b\u304b\u306b\u5c0f\u3055\u3044\u3067\u3059\u304c\u3001\u306f\u308b\u304b\u306b\u9ad8\u901f\u3067\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u5b9f\u884c\u901f\u5ea6\u306b\u304a\u3044\u3066\u91cd\u8981\u306a\u5f79\u5272\u3092\u679c\u305f\u3057\u307e\u3059\u3002\u9650\u3089\u308c\u305f\u5bb9\u91cf\u306e\u305f\u3081\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u306f\u983b\u7e41\u306b\u30a2\u30af\u30bb\u30b9\u3055\u308c\u308b\u30c7\u30fc\u30bf\u306e\u30b5\u30d6\u30bb\u30c3\u30c8\u306e\u307f\u3092\u4fdd\u5b58\u3067\u304d\u307e\u3059\u3002CPU\u304c\u30ad\u30e3\u30c3\u30b7\u30e5\u306b\u5b58\u5728\u3057\u306a\u3044\u30c7\u30fc\u30bf\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3088\u3046\u3068\u3059\u308b\u3068\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u30df\u30b9\u304c\u767a\u751f\u3057\u3001CPU\u306f\u4f4e\u901f\u306a\u30e1\u30e2\u30ea\u304b\u3089\u5fc5\u8981\u306a\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306b\u5f71\u97ff\u3092\u4e0e\u3048\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>\u660e\u3089\u304b\u306b\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u30df\u30b9\u304c\u5c11\u306a\u3044\u307b\u3069\u3001CPU\u306e\u30c7\u30fc\u30bf\u8aad\u307f\u66f8\u304d\u52b9\u7387\u304c\u9ad8\u304f\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002CPU\u304c\u30ad\u30e3\u30c3\u30b7\u30e5\u304b\u3089\u30c7\u30fc\u30bf\u3092\u6b63\u5e38\u306b\u53d6\u5f97\u3059\u308b\u5272\u5408\u306f\u30ad\u30e3\u30c3\u30b7\u30e5\u30d2\u30c3\u30c8\u7387\u3068\u547c\u3070\u308c\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u52b9\u7387\u3092\u6e2c\u5b9a\u3059\u308b\u305f\u3081\u306b\u3088\u304f\u4f7f\u7528\u3055\u308c\u308b\u6307\u6a19\u3067\u3059\u3002</p> <p>\u3088\u308a\u9ad8\u3044\u52b9\u7387\u3092\u9054\u6210\u3059\u308b\u305f\u3081\u306b\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u306f\u4ee5\u4e0b\u306e\u30c7\u30fc\u30bf\u30ed\u30fc\u30c9\u30e1\u30ab\u30cb\u30ba\u30e0\u3092\u63a1\u7528\u3057\u307e\u3059\u3002</p> <ul> <li>\u30ad\u30e3\u30c3\u30b7\u30e5\u30e9\u30a4\u30f3\uff1a\u30ad\u30e3\u30c3\u30b7\u30e5\u306f\u500b\u3005\u306e\u30d0\u30a4\u30c8\u3067\u306f\u306a\u304f\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u30e9\u30a4\u30f3\u3068\u547c\u3070\u308c\u308b\u5358\u4f4d\u3067\u30c7\u30fc\u30bf\u3092\u4fdd\u5b58\u30fb\u30ed\u30fc\u30c9\u3057\u3066\u52d5\u4f5c\u3057\u307e\u3059\u3002\u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306f\u3001\u4e00\u5ea6\u306b\u3088\u308a\u5927\u304d\u306a\u30c7\u30fc\u30bf\u30d6\u30ed\u30c3\u30af\u3092\u8ee2\u9001\u3059\u308b\u3053\u3068\u3067\u52b9\u7387\u3092\u5411\u4e0a\u3055\u305b\u307e\u3059\u3002</li> <li>\u5148\u8aad\u307f\u30e1\u30ab\u30cb\u30ba\u30e0\uff1a\u30d7\u30ed\u30bb\u30c3\u30b5\u306f\u30c7\u30fc\u30bf\u30a2\u30af\u30bb\u30b9\u30d1\u30bf\u30fc\u30f3\uff08\u4f8b\uff1a\u9023\u7d9a\u307e\u305f\u306f\u56fa\u5b9a\u30b9\u30c8\u30e9\u30a4\u30c9\u30a2\u30af\u30bb\u30b9\uff09\u3092\u4e88\u6e2c\u3057\u3001\u3053\u308c\u3089\u306e\u30d1\u30bf\u30fc\u30f3\u306b\u57fa\u3065\u3044\u3066\u30c7\u30fc\u30bf\u3092\u30ad\u30e3\u30c3\u30b7\u30e5\u306b\u5148\u8aad\u307f\u3057\u3066\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u30d2\u30c3\u30c8\u7387\u3092\u5411\u4e0a\u3055\u305b\u307e\u3059\u3002</li> <li>\u7a7a\u9593\u7684\u5c40\u6240\u6027\uff1a\u7279\u5b9a\u306e\u30c7\u30fc\u30bf\u304c\u30a2\u30af\u30bb\u30b9\u3055\u308c\u308b\u3068\u3001\u8fd1\u304f\u306e\u30c7\u30fc\u30bf\u3082\u307e\u3082\u306a\u304f\u30a2\u30af\u30bb\u30b9\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u3092\u6d3b\u7528\u3059\u308b\u305f\u3081\u306b\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u306f\u8981\u6c42\u3055\u308c\u305f\u30c7\u30fc\u30bf\u3068\u4e00\u7dd2\u306b\u96a3\u63a5\u3059\u308b\u30c7\u30fc\u30bf\u3092\u30ed\u30fc\u30c9\u3057\u3001\u30d2\u30c3\u30c8\u7387\u3092\u5411\u4e0a\u3055\u305b\u307e\u3059\u3002</li> <li>\u6642\u9593\u7684\u5c40\u6240\u6027\uff1a\u30c7\u30fc\u30bf\u304c\u30a2\u30af\u30bb\u30b9\u3055\u308c\u305f\u5834\u5408\u3001\u8fd1\u3044\u5c06\u6765\u306b\u518d\u3073\u30a2\u30af\u30bb\u30b9\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u30ad\u30e3\u30c3\u30b7\u30e5\u306f\u3053\u306e\u539f\u7406\u3092\u4f7f\u7528\u3057\u3066\u3001\u6700\u8fd1\u30a2\u30af\u30bb\u30b9\u3055\u308c\u305f\u30c7\u30fc\u30bf\u3092\u4fdd\u6301\u3057\u3066\u30d2\u30c3\u30c8\u7387\u3092\u5411\u4e0a\u3055\u305b\u307e\u3059\u3002</li> </ul> <p>\u5b9f\u969b\u3001\u914d\u5217\u3068\u9023\u7d50\u30ea\u30b9\u30c8\u306f\u7570\u306a\u308b\u30ad\u30e3\u30c3\u30b7\u30e5\u5229\u7528\u52b9\u7387\u3092\u6301\u3061\u3001\u3053\u308c\u306f\u4e3b\u306b\u4ee5\u4e0b\u306e\u5074\u9762\u306b\u53cd\u6620\u3055\u308c\u307e\u3059\u3002</p> <ul> <li>\u5360\u6709\u7a7a\u9593\uff1a\u9023\u7d50\u30ea\u30b9\u30c8\u8981\u7d20\u306f\u914d\u5217\u8981\u7d20\u3088\u308a\u3082\u591a\u304f\u306e\u7a7a\u9593\u3092\u5360\u6709\u3059\u308b\u305f\u3081\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u306b\u4fdd\u6301\u3055\u308c\u308b\u6709\u52b9\u30c7\u30fc\u30bf\u304c\u5c11\u306a\u304f\u306a\u308a\u307e\u3059\u3002</li> <li>\u30ad\u30e3\u30c3\u30b7\u30e5\u30e9\u30a4\u30f3\uff1a\u9023\u7d50\u30ea\u30b9\u30c8\u30c7\u30fc\u30bf\u306f\u30e1\u30e2\u30ea\u5168\u4f53\u306b\u6563\u5728\u3057\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u306f\u300c\u884c\u5358\u4f4d\u3067\u30ed\u30fc\u30c9\u300d\u3055\u308c\u308b\u305f\u3081\u3001\u30ed\u30fc\u30c9\u3055\u308c\u308b\u7121\u52b9\u30c7\u30fc\u30bf\u306e\u5272\u5408\u304c\u9ad8\u304f\u306a\u308a\u307e\u3059\u3002</li> <li>\u5148\u8aad\u307f\u30e1\u30ab\u30cb\u30ba\u30e0\uff1a\u914d\u5217\u306e\u30c7\u30fc\u30bf\u30a2\u30af\u30bb\u30b9\u30d1\u30bf\u30fc\u30f3\u306f\u9023\u7d50\u30ea\u30b9\u30c8\u3088\u308a\u3082\u300c\u4e88\u6e2c\u53ef\u80fd\u300d\u3067\u3001\u3064\u307e\u308a\u30b7\u30b9\u30c6\u30e0\u304c\u3053\u308c\u304b\u3089\u30ed\u30fc\u30c9\u3055\u308c\u308b\u30c7\u30fc\u30bf\u3092\u63a8\u6e2c\u3057\u3084\u3059\u3044\u3067\u3059\u3002</li> <li>\u7a7a\u9593\u7684\u5c40\u6240\u6027\uff1a\u914d\u5217\u306f\u9023\u7d9a\u3057\u305f\u30e1\u30e2\u30ea\u7a7a\u9593\u306b\u4fdd\u5b58\u3055\u308c\u308b\u305f\u3081\u3001\u30ed\u30fc\u30c9\u3055\u308c\u3066\u3044\u308b\u30c7\u30fc\u30bf\u306e\u8fd1\u304f\u306e\u30c7\u30fc\u30bf\u304c\u307e\u3082\u306a\u304f\u30a2\u30af\u30bb\u30b9\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u9ad8\u304f\u306a\u308a\u307e\u3059\u3002</li> </ul> <p>\u5168\u4f53\u7684\u306b\u3001\u914d\u5217\u306f\u3088\u308a\u9ad8\u3044\u30ad\u30e3\u30c3\u30b7\u30e5\u30d2\u30c3\u30c8\u7387\u3092\u6301\u3061\u3001\u4e00\u822c\u7684\u306b\u9023\u7d50\u30ea\u30b9\u30c8\u3088\u308a\u3082\u64cd\u4f5c\u52b9\u7387\u304c\u9ad8\u3044\u3067\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u914d\u5217\u306b\u57fa\u3065\u304f\u30c7\u30fc\u30bf\u69cb\u9020\u306f\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u554f\u984c\u306e\u89e3\u6c7a\u306b\u304a\u3044\u3066\u4eba\u6c17\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>**\u9ad8\u3044\u30ad\u30e3\u30c3\u30b7\u30e5\u52b9\u7387\u304c\u914d\u5217\u304c\u5e38\u306b\u9023\u7d50\u30ea\u30b9\u30c8\u3088\u308a\u512a\u308c\u3066\u3044\u308b\u3068\u3044\u3046\u610f\u5473\u3067\u306f\u306a\u3044**\u3053\u3068\u306b\u6ce8\u610f\u3059\u3079\u304d\u3067\u3059\u3002\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u9078\u629e\u306f\u7279\u5b9a\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u8981\u4ef6\u306b\u4f9d\u5b58\u3059\u3079\u304d\u3067\u3059\u3002\u4f8b\u3048\u3070\u3001\u914d\u5217\u3068\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u4e21\u65b9\u304c\u300c\u30b9\u30bf\u30c3\u30af\u300d\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u304c\uff08\u6b21\u7ae0\u3067\u8a73\u7d30\u8aac\u660e\uff09\u3001\u305d\u308c\u3089\u306f\u7570\u306a\u308b\u30b7\u30ca\u30ea\u30aa\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002</p> <ul> <li>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u554f\u984c\u3067\u306f\u3001\u3088\u308a\u9ad8\u3044\u64cd\u4f5c\u52b9\u7387\u3068\u30e9\u30f3\u30c0\u30e0\u30a2\u30af\u30bb\u30b9\u6a5f\u80fd\u3092\u63d0\u4f9b\u3059\u308b\u305f\u3081\u3001\u914d\u5217\u306b\u57fa\u3065\u304f\u30b9\u30bf\u30c3\u30af\u3092\u9078\u629e\u3059\u308b\u50be\u5411\u304c\u3042\u308a\u307e\u3059\u3002\u552f\u4e00\u306e\u30b3\u30b9\u30c8\u306f\u914d\u5217\u306b\u5bfe\u3057\u3066\u4e00\u5b9a\u91cf\u306e\u30e1\u30e2\u30ea\u7a7a\u9593\u3092\u4e8b\u524d\u306b\u5272\u308a\u5f53\u3066\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u3067\u3059\u3002</li> <li>\u30c7\u30fc\u30bf\u91cf\u304c\u975e\u5e38\u306b\u5927\u304d\u304f\u3001\u9ad8\u5ea6\u306b\u52d5\u7684\u3067\u3001\u30b9\u30bf\u30c3\u30af\u306e\u4e88\u60f3\u30b5\u30a4\u30ba\u3092\u63a8\u5b9a\u3059\u308b\u306e\u304c\u56f0\u96e3\u306a\u5834\u5408\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306b\u57fa\u3065\u304f\u30b9\u30bf\u30c3\u30af\u304c\u3088\u308a\u826f\u3044\u9078\u629e\u3067\u3059\u3002\u9023\u7d50\u30ea\u30b9\u30c8\u306f\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u3092\u30e1\u30e2\u30ea\u306e\u7570\u306a\u308b\u90e8\u5206\u306b\u5206\u6563\u3067\u304d\u3001\u914d\u5217\u62e1\u5f35\u306e\u8ffd\u52a0\u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9\u3092\u56de\u907f\u3067\u304d\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_array_and_linkedlist/summary/","title":"4.5 \u00a0 \u307e\u3068\u3081","text":""},{"location":"chapter_array_and_linkedlist/summary/#1","title":"1. \u00a0 \u91cd\u8981\u306a\u5fa9\u7fd2","text":"<ul> <li>\u914d\u5217\u3068\u9023\u7d50\u30ea\u30b9\u30c8\u306f2\u3064\u306e\u57fa\u672c\u7684\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u3067\u3042\u308a\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30e1\u30e2\u30ea\u306b\u304a\u3051\u308b2\u3064\u306e\u683c\u7d0d\u65b9\u6cd5\u3092\u8868\u3057\u3066\u3044\u307e\u3059\uff1a\u9023\u7d9a\u7a7a\u9593\u683c\u7d0d\u3068\u975e\u9023\u7d9a\u7a7a\u9593\u683c\u7d0d\u3067\u3059\u3002\u305d\u308c\u3089\u306e\u7279\u6027\u306f\u4e92\u3044\u306b\u88dc\u5b8c\u3057\u5408\u3044\u307e\u3059\u3002</li> <li>\u914d\u5217\u306f\u30e9\u30f3\u30c0\u30e0\u30a2\u30af\u30bb\u30b9\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3001\u4f7f\u7528\u3059\u308b\u30e1\u30e2\u30ea\u304c\u5c11\u306a\u3044\u4e00\u65b9\u3067\u3001\u8981\u7d20\u306e\u633f\u5165\u3068\u524a\u9664\u306f\u975e\u52b9\u7387\u7684\u3067\u3001\u521d\u671f\u5316\u5f8c\u306e\u9577\u3055\u304c\u56fa\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002</li> <li>\u9023\u7d50\u30ea\u30b9\u30c8\u306f\u53c2\u7167\uff08\u30dd\u30a4\u30f3\u30bf\uff09\u306e\u5909\u66f4\u306b\u3088\u3063\u3066\u52b9\u7387\u7684\u306a\u30ce\u30fc\u30c9\u306e\u633f\u5165\u3068\u524a\u9664\u3092\u5b9f\u88c5\u3057\u3001\u9577\u3055\u3092\u67d4\u8edf\u306b\u8abf\u6574\u3067\u304d\u307e\u3059\u304c\u3001\u30ce\u30fc\u30c9\u30a2\u30af\u30bb\u30b9\u52b9\u7387\u304c\u4f4e\u304f\u3001\u3088\u308a\u591a\u304f\u306e\u30e1\u30e2\u30ea\u3092\u6d88\u8cbb\u3057\u307e\u3059\u3002</li> <li>\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u4e00\u822c\u7684\u306a\u7a2e\u985e\u306b\u306f\u3001\u5358\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u3001\u5faa\u74b0\u9023\u7d50\u30ea\u30b9\u30c8\u3001\u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u304c\u3042\u308a\u3001\u305d\u308c\u305e\u308c\u306b\u72ec\u81ea\u306e\u5fdc\u7528\u30b7\u30ca\u30ea\u30aa\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u30ea\u30b9\u30c8\u306f\u8981\u7d20\u306e\u9806\u5e8f\u4ed8\u3051\u3089\u308c\u305f\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3067\u3001\u8ffd\u52a0\u3001\u524a\u9664\u3001\u5909\u66f4\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3001\u901a\u5e38\u306f\u52d5\u7684\u914d\u5217\u306b\u57fa\u3065\u3044\u3066\u5b9f\u88c5\u3055\u308c\u3001\u914d\u5217\u306e\u5229\u70b9\u3092\u4fdd\u6301\u3057\u306a\u304c\u3089\u67d4\u8edf\u306a\u9577\u3055\u8abf\u6574\u3092\u53ef\u80fd\u306b\u3057\u307e\u3059\u3002</li> <li>\u30ea\u30b9\u30c8\u306e\u51fa\u73fe\u306b\u3088\u308a\u914d\u5217\u306e\u5b9f\u7528\u6027\u304c\u5927\u5e45\u306b\u5411\u4e0a\u3057\u307e\u3057\u305f\u304c\u3001\u4e00\u90e8\u306e\u30e1\u30e2\u30ea\u7a7a\u9593\u306e\u7121\u99c4\u306b\u3064\u306a\u304c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u30d7\u30ed\u30b0\u30e9\u30e0\u5b9f\u884c\u4e2d\u3001\u30c7\u30fc\u30bf\u306f\u4e3b\u306b\u30e1\u30e2\u30ea\u306b\u683c\u7d0d\u3055\u308c\u307e\u3059\u3002\u914d\u5217\u306f\u3088\u308a\u9ad8\u3044\u30e1\u30e2\u30ea\u7a7a\u9593\u52b9\u7387\u3092\u63d0\u4f9b\u3057\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306f\u30e1\u30e2\u30ea\u4f7f\u7528\u306b\u304a\u3044\u3066\u3088\u308a\u67d4\u8edf\u3067\u3059\u3002</li> <li>\u30ad\u30e3\u30c3\u30b7\u30e5\u306f\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u30e9\u30a4\u30f3\u3001\u5148\u8aad\u307f\u3001\u7a7a\u9593\u7684\u5c40\u6240\u6027\u3001\u6642\u9593\u7684\u5c40\u6240\u6027\u306a\u3069\u306e\u30e1\u30ab\u30cb\u30ba\u30e0\u3092\u901a\u3058\u3066CPU\u306b\u9ad8\u901f\u30c7\u30fc\u30bf\u30a2\u30af\u30bb\u30b9\u3092\u63d0\u4f9b\u3057\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u5b9f\u884c\u52b9\u7387\u3092\u5927\u5e45\u306b\u5411\u4e0a\u3055\u305b\u307e\u3059\u3002</li> <li>\u3088\u308a\u9ad8\u3044\u30ad\u30e3\u30c3\u30b7\u30e5\u30d2\u30c3\u30c8\u7387\u306b\u3088\u308a\u3001\u914d\u5217\u306f\u4e00\u822c\u7684\u306b\u9023\u7d50\u30ea\u30b9\u30c8\u3088\u308a\u3082\u52b9\u7387\u7684\u3067\u3059\u3002\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u9078\u629e\u3059\u308b\u969b\u306f\u3001\u7279\u5b9a\u306e\u30cb\u30fc\u30ba\u3068\u30b7\u30ca\u30ea\u30aa\u306b\u57fa\u3065\u3044\u3066\u9069\u5207\u306a\u9078\u629e\u3092\u3059\u3079\u304d\u3067\u3059\u3002</li> </ul>"},{"location":"chapter_array_and_linkedlist/summary/#2-q-a","title":"2. \u00a0 Q &amp; A","text":"<p>Q\uff1a\u914d\u5217\u3092\u30b9\u30bf\u30c3\u30af\u306b\u683c\u7d0d\u3059\u308b\u304b\u30d2\u30fc\u30d7\u306b\u683c\u7d0d\u3059\u308b\u304b\u306f\u3001\u6642\u9593\u3068\u7a7a\u9593\u52b9\u7387\u306b\u5f71\u97ff\u3057\u307e\u3059\u304b\uff1f</p> <p>\u30b9\u30bf\u30c3\u30af\u3068\u30d2\u30fc\u30d7\u306e\u4e21\u65b9\u306b\u683c\u7d0d\u3055\u308c\u308b\u914d\u5217\u306f\u9023\u7d9a\u3057\u305f\u30e1\u30e2\u30ea\u7a7a\u9593\u306b\u683c\u7d0d\u3055\u308c\u3001\u30c7\u30fc\u30bf\u64cd\u4f5c\u52b9\u7387\u306f\u672c\u8cea\u7684\u306b\u540c\u3058\u3067\u3059\u3002\u3057\u304b\u3057\u3001\u30b9\u30bf\u30c3\u30af\u3068\u30d2\u30fc\u30d7\u306b\u306f\u72ec\u81ea\u306e\u7279\u6027\u304c\u3042\u308a\u3001\u4ee5\u4e0b\u306e\u9055\u3044\u304c\u751f\u3058\u307e\u3059\u3002</p> <ol> <li>\u5272\u308a\u5f53\u3066\u3068\u89e3\u653e\u52b9\u7387\uff1a\u30b9\u30bf\u30c3\u30af\u306f\u3088\u308a\u5c0f\u3055\u306a\u30e1\u30e2\u30ea\u30d6\u30ed\u30c3\u30af\u3067\u3001\u30b3\u30f3\u30d1\u30a4\u30e9\u306b\u3088\u3063\u3066\u81ea\u52d5\u7684\u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u307e\u3059\u3002\u30d2\u30fc\u30d7\u30e1\u30e2\u30ea\u306f\u6bd4\u8f03\u7684\u5927\u304d\u304f\u3001\u30b3\u30fc\u30c9\u3067\u52d5\u7684\u306b\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u65ad\u7247\u5316\u3057\u3084\u3059\u3044\u3067\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30d2\u30fc\u30d7\u3067\u306e\u5272\u308a\u5f53\u3066\u3068\u89e3\u653e\u64cd\u4f5c\u306f\u4e00\u822c\u7684\u306b\u30b9\u30bf\u30c3\u30af\u3088\u308a\u3082\u9045\u304f\u306a\u308a\u307e\u3059\u3002</li> <li>\u30b5\u30a4\u30ba\u5236\u9650\uff1a\u30b9\u30bf\u30c3\u30af\u30e1\u30e2\u30ea\u306f\u6bd4\u8f03\u7684\u5c0f\u3055\u304f\u3001\u30d2\u30fc\u30d7\u30b5\u30a4\u30ba\u306f\u4e00\u822c\u7684\u306b\u5229\u7528\u53ef\u80fd\u306a\u30e1\u30e2\u30ea\u306b\u3088\u3063\u3066\u5236\u9650\u3055\u308c\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30d2\u30fc\u30d7\u306f\u5927\u304d\u306a\u914d\u5217\u306e\u683c\u7d0d\u306b\u3088\u308a\u9069\u3057\u3066\u3044\u307e\u3059\u3002</li> <li>\u67d4\u8edf\u6027\uff1a\u30b9\u30bf\u30c3\u30af\u4e0a\u306e\u914d\u5217\u306e\u30b5\u30a4\u30ba\u306f\u30b3\u30f3\u30d1\u30a4\u30eb\u6642\u306b\u6c7a\u5b9a\u3055\u308c\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u30d2\u30fc\u30d7\u4e0a\u306e\u914d\u5217\u306e\u30b5\u30a4\u30ba\u306f\u5b9f\u884c\u6642\u306b\u52d5\u7684\u306b\u6c7a\u5b9a\u3067\u304d\u307e\u3059\u3002</li> </ol> <p>Q\uff1a\u306a\u305c\u914d\u5217\u306f\u540c\u3058\u578b\u306e\u8981\u7d20\u3092\u5fc5\u8981\u3068\u3057\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306f\u540c\u3058\u578b\u306e\u8981\u7d20\u3092\u5f37\u8abf\u3057\u306a\u3044\u306e\u3067\u3059\u304b\uff1f</p> <p>\u9023\u7d50\u30ea\u30b9\u30c8\u306f\u53c2\u7167\uff08\u30dd\u30a4\u30f3\u30bf\uff09\u306b\u3088\u3063\u3066\u63a5\u7d9a\u3055\u308c\u305f\u30ce\u30fc\u30c9\u3067\u69cb\u6210\u3055\u308c\u3001\u5404\u30ce\u30fc\u30c9\u306fint\u3001double\u3001string\u3001object\u306a\u3069\u3001\u7570\u306a\u308b\u578b\u306e\u30c7\u30fc\u30bf\u3092\u683c\u7d0d\u3067\u304d\u307e\u3059\u3002</p> <p>\u5bfe\u7167\u7684\u306b\u3001\u914d\u5217\u8981\u7d20\u306f\u540c\u3058\u578b\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u3053\u308c\u306b\u3088\u308a\u5bfe\u5fdc\u3059\u308b\u8981\u7d20\u4f4d\u7f6e\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306e\u30aa\u30d5\u30bb\u30c3\u30c8\u3092\u8a08\u7b97\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001int\u3068long\u578b\u306e\u4e21\u65b9\u3092\u542b\u3080\u914d\u5217\u3067\u3001\u5358\u4e00\u8981\u7d20\u304c\u305d\u308c\u305e\u308c4\u30d0\u30a4\u30c8\u30688\u30d0\u30a4\u30c8\u3092\u5360\u6709\u3059\u308b\u5834\u5408\u3001\u914d\u5217\u306b2\u3064\u306e\u7570\u306a\u308b\u9577\u3055\u306e\u8981\u7d20\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u4ee5\u4e0b\u306e\u5f0f\u3092\u4f7f\u7528\u3057\u3066\u30aa\u30d5\u30bb\u30c3\u30c8\u3092\u8a08\u7b97\u3067\u304d\u307e\u305b\u3093\u3002</p> <pre><code># \u8981\u7d20\u30e1\u30e2\u30ea\u30a2\u30c9\u30ec\u30b9 = \u914d\u5217\u30e1\u30e2\u30ea\u30a2\u30c9\u30ec\u30b9 + \u8981\u7d20\u9577 * \u8981\u7d20\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\n</code></pre> <p>Q\uff1a\u30ce\u30fc\u30c9\u3092\u524a\u9664\u3057\u305f\u5f8c\u3001<code>P.next</code>\u3092<code>None</code>\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u304b\uff1f</p> <p><code>P.next</code>\u3092\u5909\u66f4\u3057\u306a\u304f\u3066\u3082\u554f\u984c\u3042\u308a\u307e\u305b\u3093\u3002\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u89b3\u70b9\u304b\u3089\u3001\u30d8\u30c3\u30c9\u30ce\u30fc\u30c9\u304b\u3089\u30c6\u30fc\u30eb\u30ce\u30fc\u30c9\u307e\u3067\u306e\u5de1\u56de\u3067<code>P</code>\u306b\u906d\u9047\u3059\u308b\u3053\u3068\u306f\u3082\u3046\u3042\u308a\u307e\u305b\u3093\u3002\u3053\u308c\u306f\u3001\u30ce\u30fc\u30c9<code>P</code>\u304c\u30ea\u30b9\u30c8\u304b\u3089\u52b9\u679c\u7684\u306b\u524a\u9664\u3055\u308c\u305f\u3053\u3068\u3092\u610f\u5473\u3057\u3001<code>P</code>\u304c\u6307\u3059\u5834\u6240\u306f\u3082\u306f\u3084\u30ea\u30b9\u30c8\u306b\u5f71\u97ff\u3057\u307e\u305b\u3093\u3002</p> <p>\u30ac\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u306e\u89b3\u70b9\u304b\u3089\u3001Java\u3001Python\u3001Go\u306a\u3069\u306e\u81ea\u52d5\u30ac\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u30e1\u30ab\u30cb\u30ba\u30e0\u3092\u6301\u3064\u8a00\u8a9e\u3067\u306f\u3001\u30ce\u30fc\u30c9<code>P</code>\u304c\u53ce\u96c6\u3055\u308c\u308b\u304b\u3069\u3046\u304b\u306f\u3001\u305d\u308c\u3092\u6307\u3059\u53c2\u7167\u304c\u307e\u3060\u3042\u308b\u304b\u3069\u3046\u304b\u306b\u4f9d\u5b58\u3057\u3001<code>P.next</code>\u306e\u5024\u306b\u306f\u4f9d\u5b58\u3057\u307e\u305b\u3093\u3002C\u3084C++\u306a\u3069\u306e\u8a00\u8a9e\u3067\u306f\u3001\u30ce\u30fc\u30c9\u306e\u30e1\u30e2\u30ea\u3092\u624b\u52d5\u3067\u89e3\u653e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>Q\uff1a\u9023\u7d50\u30ea\u30b9\u30c8\u3067\u306f\u3001\u633f\u5165\u3068\u524a\u9664\u64cd\u4f5c\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f<code>O(1)</code>\u3067\u3059\u3002\u3057\u304b\u3057\u3001\u633f\u5165\u3084\u524a\u9664\u524d\u306e\u8981\u7d20\u691c\u7d22\u306b\u306f<code>O(n)</code>\u6642\u9593\u304c\u304b\u304b\u308b\u306e\u3067\u3001\u306a\u305c\u6642\u9593\u8a08\u7b97\u91cf\u306f<code>O(n)</code>\u3067\u306f\u306a\u3044\u306e\u3067\u3059\u304b\uff1f</p> <p>\u8981\u7d20\u3092\u6700\u521d\u306b\u691c\u7d22\u3057\u3066\u304b\u3089\u524a\u9664\u3059\u308b\u5834\u5408\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f\u78ba\u304b\u306b<code>O(n)</code>\u3067\u3059\u3002\u3057\u304b\u3057\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u633f\u5165\u3068\u524a\u9664\u306b\u304a\u3051\u308b<code>O(1)</code>\u306e\u5229\u70b9\u306f\u4ed6\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u3092\u4f7f\u7528\u3057\u305f\u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u5b9f\u88c5\u3067\u306f\u3001\u5e38\u306b\u30d8\u30c3\u30c9\u3068\u30c6\u30fc\u30eb\u30ce\u30fc\u30c9\u3092\u6307\u3059\u30dd\u30a4\u30f3\u30bf\u3092\u7dad\u6301\u3057\u3001\u5404\u633f\u5165\u3068\u524a\u9664\u64cd\u4f5c\u3092<code>O(1)</code>\u306b\u3057\u307e\u3059\u3002</p> <p>Q\uff1a\u300c\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u5b9a\u7fa9\u3068\u683c\u7d0d\u65b9\u6cd5\u300d\u306e\u56f3\u3067\u3001\u8584\u9752\u8272\u306e\u683c\u7d0d\u30ce\u30fc\u30c9\u306f\u5358\u4e00\u306e\u30e1\u30e2\u30ea\u30a2\u30c9\u30ec\u30b9\u3092\u5360\u6709\u3057\u307e\u3059\u304b\u3001\u305d\u308c\u3068\u3082\u30ce\u30fc\u30c9\u5024\u3068\u534a\u5206\u3092\u5171\u6709\u3057\u307e\u3059\u304b\uff1f</p> <p>\u56f3\u306f\u5358\u306a\u308b\u5b9a\u6027\u7684\u306a\u8868\u73fe\u3067\u3042\u308a\u3001\u5b9a\u91cf\u7684\u5206\u6790\u306f\u7279\u5b9a\u306e\u72b6\u6cc1\u306b\u4f9d\u5b58\u3057\u307e\u3059\u3002</p> <ul> <li>\u7570\u306a\u308b\u578b\u306e\u30ce\u30fc\u30c9\u5024\u306f\u7570\u306a\u308b\u91cf\u306e\u7a7a\u9593\u3092\u5360\u6709\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001int\u3001long\u3001double\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3067\u3059\u3002</li> <li>\u30dd\u30a4\u30f3\u30bf\u5909\u6570\u306b\u3088\u3063\u3066\u5360\u6709\u3055\u308c\u308b\u30e1\u30e2\u30ea\u7a7a\u9593\u306f\u3001\u4f7f\u7528\u3055\u308c\u308b\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\u3068\u30b3\u30f3\u30d1\u30a4\u30eb\u74b0\u5883\u306b\u4f9d\u5b58\u3057\u3001\u901a\u5e388\u30d0\u30a4\u30c8\u307e\u305f\u306f4\u30d0\u30a4\u30c8\u3067\u3059\u3002</li> </ul> <p>Q\uff1a\u30ea\u30b9\u30c8\u306e\u672b\u5c3e\u3078\u306e\u8981\u7d20\u8ffd\u52a0\u306f\u5e38\u306b<code>O(1)</code>\u3067\u3059\u304b\uff1f</p> <p>\u8981\u7d20\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3067\u30ea\u30b9\u30c8\u9577\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u30ea\u30b9\u30c8\u306f\u6700\u521d\u306b\u62e1\u5f35\u3055\u308c\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30b7\u30b9\u30c6\u30e0\u306f\u65b0\u3057\u3044\u30e1\u30e2\u30ea\u30d6\u30ed\u30c3\u30af\u3092\u8981\u6c42\u3057\u3001\u5143\u306e\u30ea\u30b9\u30c8\u306e\u3059\u3079\u3066\u306e\u8981\u7d20\u3092\u79fb\u52d5\u3059\u308b\u305f\u3081\u3001\u3053\u306e\u5834\u5408\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f<code>O(n)</code>\u306b\u306a\u308a\u307e\u3059\u3002</p> <p>Q\uff1a\u300c\u30ea\u30b9\u30c8\u306e\u51fa\u73fe\u306b\u3088\u308a\u914d\u5217\u306e\u5b9f\u7528\u6027\u304c\u5927\u5e45\u306b\u5411\u4e0a\u3057\u307e\u3057\u305f\u304c\u3001\u4e00\u90e8\u306e\u30e1\u30e2\u30ea\u7a7a\u9593\u306e\u7121\u99c4\u306b\u3064\u306a\u304c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u300d\u3068\u3044\u3046\u6587\u306f\u3001\u5bb9\u91cf\u3001\u9577\u3055\u3001\u62e1\u5f35\u4fc2\u6570\u306a\u3069\u306e\u8ffd\u52a0\u5909\u6570\u306b\u3088\u3063\u3066\u5360\u6709\u3055\u308c\u308b\u30e1\u30e2\u30ea\u3092\u6307\u3057\u3066\u3044\u307e\u3059\u304b\uff1f</p> <p>\u3053\u3053\u3067\u306e\u7a7a\u9593\u306e\u7121\u99c4\u306f\u4e3b\u306b2\u3064\u306e\u5074\u9762\u3092\u6307\u3057\u307e\u3059\uff1a\u4e00\u65b9\u3067\u3001\u30ea\u30b9\u30c8\u306f\u521d\u671f\u9577\u3067\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u304c\u3001\u5e38\u306b\u5fc5\u8981\u3068\u306f\u9650\u308a\u307e\u305b\u3093\u3002\u4ed6\u65b9\u3067\u3001\u983b\u7e41\u306a\u62e1\u5f35\u3092\u9632\u3050\u305f\u3081\u3001\u62e1\u5f35\u306f\u901a\u5e38\\(\\times 1.5\\)\u306a\u3069\u306e\u4fc2\u6570\u3067\u4e57\u7b97\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u591a\u304f\u306e\u7a7a\u304d\u30b9\u30ed\u30c3\u30c8\u304c\u751f\u307e\u308c\u3001\u901a\u5e38\u306f\u5b8c\u5168\u306b\u57cb\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002</p> <p>Q\uff1aPython\u3067<code>n = [1, 2, 3]</code>\u3092\u521d\u671f\u5316\u3057\u305f\u5f8c\u3001\u3053\u308c\u30893\u3064\u306e\u8981\u7d20\u306e\u30a2\u30c9\u30ec\u30b9\u306f\u9023\u7d9a\u3057\u3066\u3044\u307e\u3059\u304c\u3001<code>m = [2, 1, 3]</code>\u3092\u521d\u671f\u5316\u3059\u308b\u3068\u3001\u5404\u8981\u7d20\u306e<code>id</code>\u306f\u9023\u7d9a\u3057\u3066\u3044\u306a\u3044\u304c<code>n</code>\u306e\u3082\u306e\u3068\u540c\u4e00\u3067\u3059\u3002\u3053\u308c\u3089\u306e\u8981\u7d20\u306e\u30a2\u30c9\u30ec\u30b9\u304c\u9023\u7d9a\u3057\u3066\u3044\u306a\u3044\u5834\u5408\u3001<code>m</code>\u306f\u307e\u3060\u914d\u5217\u3067\u3059\u304b\uff1f</p> <p>\u30ea\u30b9\u30c8\u8981\u7d20\u3092\u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9<code>n = [n1, n2, n3, n4, n5]</code>\u306b\u7f6e\u304d\u63db\u3048\u308b\u5834\u5408\u3001\u3053\u308c\u30895\u3064\u306e\u30ce\u30fc\u30c9\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3082\u901a\u5e38\u30e1\u30e2\u30ea\u5168\u4f53\u306b\u5206\u6563\u3057\u3066\u3044\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u30ea\u30b9\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\u4e0e\u3048\u3089\u308c\u308c\u3070\u3001<code>O(1)</code>\u6642\u9593\u3067\u30ce\u30fc\u30c9\u306e\u30e1\u30e2\u30ea\u30a2\u30c9\u30ec\u30b9\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u3001\u5bfe\u5fdc\u3059\u308b\u30ce\u30fc\u30c9\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u914d\u5217\u304c\u30ce\u30fc\u30c9\u81ea\u4f53\u3067\u306f\u306a\u304f\u3001\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\u3092\u683c\u7d0d\u3059\u308b\u305f\u3081\u3067\u3059\u3002</p> <p>\u591a\u304f\u306e\u8a00\u8a9e\u3068\u306f\u7570\u306a\u308a\u3001Python\u3067\u306f\u6570\u5024\u3082\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3068\u3057\u3066\u30e9\u30c3\u30d7\u3055\u308c\u3001\u30ea\u30b9\u30c8\u306f\u6570\u5024\u81ea\u4f53\u3067\u306f\u306a\u304f\u3001\u3053\u308c\u3089\u306e\u6570\u5024\u3078\u306e\u53c2\u7167\u3092\u683c\u7d0d\u3057\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u30012\u3064\u306e\u914d\u5217\u306e\u540c\u3058\u6570\u5024\u304c\u540c\u3058<code>id</code>\u3092\u6301\u3061\u3001\u3053\u308c\u3089\u306e\u6570\u5024\u306e\u30e1\u30e2\u30ea\u30a2\u30c9\u30ec\u30b9\u306f\u9023\u7d9a\u3067\u3042\u308b\u5fc5\u8981\u304c\u306a\u3044\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3059\u3002</p> <p>Q\uff1aC++ STL\u306e<code>std::list</code>\u306f\u3059\u3067\u306b\u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u3092\u5b9f\u88c5\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u4e00\u90e8\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u66f8\u7c4d\u3067\u306f\u76f4\u63a5\u4f7f\u7528\u3057\u3066\u3044\u306a\u3044\u3088\u3046\u3067\u3059\u3002\u4f55\u304b\u5236\u9650\u304c\u3042\u308a\u307e\u3059\u304b\uff1f</p> <p>\u4e00\u65b9\u3067\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u5b9f\u88c5\u3059\u308b\u969b\u306f\u914d\u5217\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u597d\u307f\u3001\u5fc5\u8981\u306a\u5834\u5408\u306e\u307f\u9023\u7d50\u30ea\u30b9\u30c8\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u4e3b\u306b2\u3064\u306e\u7406\u7531\u304c\u3042\u308a\u307e\u3059\u3002</p> <ul> <li>\u7a7a\u9593\u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9\uff1a\u5404\u8981\u7d20\u306b2\u3064\u306e\u8ffd\u52a0\u30dd\u30a4\u30f3\u30bf\uff08\u524d\u306e\u8981\u7d20\u7528\u3068\u6b21\u306e\u8981\u7d20\u7528\uff09\u304c\u5fc5\u8981\u306a\u305f\u3081\u3001<code>std::list</code>\u306f\u901a\u5e38<code>std::vector</code>\u3088\u308a\u3082\u591a\u304f\u306e\u7a7a\u9593\u3092\u5360\u6709\u3057\u307e\u3059\u3002</li> <li>\u30ad\u30e3\u30c3\u30b7\u30e5\u975e\u53cb\u597d\u7684\uff1a\u30c7\u30fc\u30bf\u304c\u9023\u7d9a\u3057\u3066\u683c\u7d0d\u3055\u308c\u3066\u3044\u306a\u3044\u305f\u3081\u3001<code>std::list</code>\u306f\u30ad\u30e3\u30c3\u30b7\u30e5\u5229\u7528\u7387\u304c\u4f4e\u304f\u306a\u308a\u307e\u3059\u3002\u4e00\u822c\u7684\u306b\u3001<code>std::vector</code>\u306e\u65b9\u304c\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u304c\u512a\u308c\u3066\u3044\u307e\u3059\u3002</li> </ul> <p>\u4ed6\u65b9\u3067\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306f\u4e3b\u306b\u4e8c\u5206\u6728\u3068\u30b0\u30e9\u30d5\u306b\u5fc5\u8981\u3067\u3059\u3002\u30b9\u30bf\u30c3\u30af\u3068\u30ad\u30e5\u30fc\u306f\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u3067\u306f\u306a\u304f\u3001\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306e<code>stack</code>\u3068<code>queue</code>\u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3057\u3066\u5b9f\u88c5\u3055\u308c\u308b\u3053\u3068\u304c\u591a\u3044\u3067\u3059\u3002</p> <p>Q\uff1a\u30ea\u30b9\u30c8<code>res = [0] * self.size()</code>\u3092\u521d\u671f\u5316\u3059\u308b\u3068\u3001<code>res</code>\u306e\u5404\u8981\u7d20\u306f\u540c\u3058\u30a2\u30c9\u30ec\u30b9\u3092\u53c2\u7167\u3057\u307e\u3059\u304b\uff1f</p> <p>\u3044\u3044\u3048\u3002\u3057\u304b\u3057\u3001\u3053\u306e\u554f\u984c\u306f\u4e8c\u6b21\u5143\u914d\u5217\u3067\u767a\u751f\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u4e8c\u6b21\u5143\u30ea\u30b9\u30c8<code>res = [[0]] * self.size()</code>\u3092\u521d\u671f\u5316\u3059\u308b\u3068\u3001\u540c\u3058\u30ea\u30b9\u30c8<code>[0]</code>\u3092\u8907\u6570\u56de\u53c2\u7167\u3059\u308b\u3053\u3068\u306b\u306a\u308a\u307e\u3059\u3002</p> <p>Q\uff1a\u30ce\u30fc\u30c9\u3092\u524a\u9664\u3059\u308b\u969b\u3001\u305d\u306e\u5f8c\u7d9a\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\u3092\u65ad\u3064\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u304b\uff1f</p> <p>\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff08\u554f\u984c\u89e3\u6c7a\uff09\u306e\u89b3\u70b9\u304b\u3089\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u30ed\u30b8\u30c3\u30af\u304c\u6b63\u3057\u3044\u9650\u308a\u3001\u30ea\u30f3\u30af\u3092\u65ad\u305f\u306a\u304f\u3066\u3082\u554f\u984c\u3042\u308a\u307e\u305b\u3093\u3002\u6a19\u6e96\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u89b3\u70b9\u304b\u3089\u3001\u30ea\u30f3\u30af\u3092\u65ad\u3064\u65b9\u304c\u5b89\u5168\u3067\u8ad6\u7406\u7684\u306b\u660e\u78ba\u3067\u3059\u3002\u30ea\u30f3\u30af\u3092\u65ad\u305f\u305a\u3001\u524a\u9664\u3055\u308c\u305f\u30ce\u30fc\u30c9\u304c\u9069\u5207\u306b\u30ea\u30b5\u30a4\u30af\u30eb\u3055\u308c\u306a\u3044\u5834\u5408\u3001\u5f8c\u7d9a\u30ce\u30fc\u30c9\u306e\u30e1\u30e2\u30ea\u306e\u30ea\u30b5\u30a4\u30af\u30eb\u306b\u5f71\u97ff\u3092\u4e0e\u3048\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</p>"},{"location":"chapter_backtracking/","title":"\u7b2c 13 \u7ae0 \u00a0 \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0","text":"<p>Abstract</p> <p>\u8ff7\u8def\u306e\u63a2\u691c\u5bb6\u306e\u3088\u3046\u306b\u3001\u79c1\u305f\u3061\u306f\u524d\u9032\u3059\u308b\u9053\u3067\u969c\u5bb3\u306b\u906d\u9047\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u306e\u529b\u306f\u3001\u79c1\u305f\u3061\u306b\u65b0\u3057\u304f\u59cb\u3081\u308b\u3053\u3068\u3001\u8a66\u3057\u7d9a\u3051\u308b\u3053\u3068\u3001\u305d\u3057\u3066\u6700\u7d42\u7684\u306b\u5149\u3078\u306e\u51fa\u53e3\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u3092\u53ef\u80fd\u306b\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_backtracking/#_1","title":"\u7ae0\u306e\u5185\u5bb9","text":"<ul> <li>13.1 \u00a0 \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0</li> <li>13.2 \u00a0 \u5168\u9806\u5217\u554f\u984c</li> <li>13.3 \u00a0 \u90e8\u5206\u96c6\u5408\u548c\u554f\u984c</li> <li>13.4 \u00a0 N\u30af\u30a4\u30fc\u30f3\u554f\u984c</li> <li>13.5 \u00a0 \u307e\u3068\u3081</li> </ul>"},{"location":"chapter_backtracking/backtracking_algorithm/","title":"13.1 \u00a0 \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0","text":"<p>\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u5168\u6570\u63a2\u7d22\u306b\u3088\u3063\u3066\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u65b9\u6cd5\u3067\u3059\u3002\u305d\u306e\u6838\u5fc3\u6982\u5ff5\u306f\u3001\u521d\u671f\u72b6\u614b\u304b\u3089\u958b\u59cb\u3057\u3066\u3059\u3079\u3066\u306e\u53ef\u80fd\u306a\u89e3\u3092\u7dcf\u5f53\u305f\u308a\u3067\u63a2\u7d22\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u6b63\u3057\u3044\u3082\u306e\u3092\u8a18\u9332\u3057\u3001\u89e3\u304c\u898b\u3064\u304b\u308b\u304b\u3001\u3059\u3079\u3066\u306e\u53ef\u80fd\u306a\u89e3\u304c\u8a66\u3055\u308c\u305f\u304c\u89e3\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u307e\u3067\u7d9a\u3051\u307e\u3059\u3002</p> <p>\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u306f\u901a\u5e38\u300c\u6df1\u3055\u512a\u5148\u63a2\u7d22\u300d\u3092\u4f7f\u7528\u3057\u3066\u89e3\u7a7a\u9593\u3092\u8d70\u67fb\u3057\u307e\u3059\u3002\u300c\u4e8c\u5206\u6728\u300d\u306e\u7ae0\u3067\u3001\u524d\u9806\u3001\u4e2d\u9806\u3001\u5f8c\u9806\u8d70\u67fb\u306f\u3059\u3079\u3066\u6df1\u3055\u512a\u5148\u63a2\u7d22\u3067\u3042\u308b\u3053\u3068\u3092\u8ff0\u3079\u307e\u3057\u305f\u3002\u6b21\u306b\u3001\u524d\u9806\u8d70\u67fb\u3092\u4f7f\u7528\u3057\u3066\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u554f\u984c\u3092\u89e3\u6c7a\u3057\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u52d5\u4f5c\u3092\u6bb5\u968e\u7684\u306b\u7406\u89e3\u3057\u3066\u3044\u304d\u307e\u3059\u3002</p> <p>\u4f8b1</p> <p>\u4e8c\u5206\u6728\u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u3001\u5024\u304c \\(7\\) \u306e\u3059\u3079\u3066\u306e\u30ce\u30fc\u30c9\u3092\u691c\u7d22\u3057\u3066\u8a18\u9332\u3057\u3001\u30ea\u30b9\u30c8\u3067\u8fd4\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <p>\u3053\u306e\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306b\u3001\u3053\u306e\u6728\u3092\u524d\u9806\u3067\u8d70\u67fb\u3057\u3001\u73fe\u5728\u306e\u30ce\u30fc\u30c9\u306e\u5024\u304c \\(7\\) \u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\u305d\u3046\u3067\u3042\u308c\u3070\u3001\u30ce\u30fc\u30c9\u306e\u5024\u3092\u7d50\u679c\u30ea\u30b9\u30c8 <code>res</code> \u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002\u30d7\u30ed\u30bb\u30b9\u306f\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3055\u308c\u3066\u3044\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby preorder_traversal_i_compact.py<pre><code>def pre_order(root: TreeNode):\n \"\"\"\u524d\u9806\u8d70\u67fb\uff1a\u4f8b\u4e00\"\"\"\n if root is None:\n return\n if root.val == 7:\n # \u89e3\u3092\u8a18\u9332\n res.append(root)\n pre_order(root.left)\n pre_order(root.right)\n</code></pre> preorder_traversal_i_compact.cpp<pre><code>/* \u524d\u9806\u8d70\u67fb\uff1a\u4f8b\uff11 */\nvoid preOrder(TreeNode *root) {\n if (root == nullptr) {\n return;\n }\n if (root-&gt;val == 7) {\n // \u89e3\u3092\u8a18\u9332\n res.push_back(root);\n }\n preOrder(root-&gt;left);\n preOrder(root-&gt;right);\n}\n</code></pre> preorder_traversal_i_compact.java<pre><code>/* \u524d\u9806\u8d70\u67fb\uff1a\u4f8b\uff11 */\nvoid preOrder(TreeNode root) {\n if (root == null) {\n return;\n }\n if (root.val == 7) {\n // \u89e3\u3092\u8a18\u9332\n res.add(root);\n }\n preOrder(root.left);\n preOrder(root.right);\n}\n</code></pre> preorder_traversal_i_compact.cs<pre><code>[class]{preorder_traversal_i_compact}-[func]{PreOrder}\n</code></pre> preorder_traversal_i_compact.go<pre><code>[class]{}-[func]{preOrderI}\n</code></pre> preorder_traversal_i_compact.swift<pre><code>[class]{}-[func]{preOrder}\n</code></pre> preorder_traversal_i_compact.js<pre><code>[class]{}-[func]{preOrder}\n</code></pre> preorder_traversal_i_compact.ts<pre><code>[class]{}-[func]{preOrder}\n</code></pre> preorder_traversal_i_compact.dart<pre><code>[class]{}-[func]{preOrder}\n</code></pre> preorder_traversal_i_compact.rs<pre><code>[class]{}-[func]{pre_order}\n</code></pre> preorder_traversal_i_compact.c<pre><code>[class]{}-[func]{preOrder}\n</code></pre> preorder_traversal_i_compact.kt<pre><code>[class]{}-[func]{preOrder}\n</code></pre> preorder_traversal_i_compact.rb<pre><code>[class]{}-[func]{pre_order}\n</code></pre> <p></p> <p> \u56f3 13-1 \u00a0 \u524d\u9806\u8d70\u67fb\u3067\u306e\u30ce\u30fc\u30c9\u691c\u7d22 </p>"},{"location":"chapter_backtracking/backtracking_algorithm/#1311","title":"13.1.1 \u00a0 \u8a66\u884c\u3068\u5f8c\u9000","text":"<p>\u89e3\u7a7a\u9593\u3092\u63a2\u7d22\u3059\u308b\u969b\u306b\u300c\u8a66\u884c\u300d\u3068\u300c\u5f8c\u9000\u300d\u6226\u7565\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u3001\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3068\u547c\u3070\u308c\u307e\u3059\u3002\u63a2\u7d22\u4e2d\u3001\u6e80\u8db3\u306e\u3044\u304f\u89e3\u3092\u5f97\u308b\u305f\u3081\u306b\u3082\u306f\u3084\u9032\u3081\u306a\u3044\u72b6\u614b\u306b\u906d\u9047\u3059\u308b\u305f\u3073\u306b\u3001\u524d\u306e\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3066\u524d\u306e\u72b6\u614b\u306b\u623b\u308a\u3001\u6b21\u306e\u8a66\u884c\u306e\u305f\u3081\u306b\u4ed6\u306e\u53ef\u80fd\u306a\u9078\u629e\u3092\u9078\u629e\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002</p> <p>\u4f8b1\u3067\u306f\u3001\u5404\u30ce\u30fc\u30c9\u306e\u8a2a\u554f\u304c\u300c\u8a66\u884c\u300d\u3092\u958b\u59cb\u3057\u307e\u3059\u3002\u305d\u3057\u3066\u8449\u30ce\u30fc\u30c9\u3092\u901a\u904e\u3059\u308b\u304b\u3001<code>return</code> \u6587\u3067\u89aa\u30ce\u30fc\u30c9\u306b\u623b\u308b\u3053\u3068\u304c\u300c\u5f8c\u9000\u300d\u3092\u793a\u5506\u3057\u307e\u3059\u3002</p> <p>\u5f8c\u9000\u306f\u5358\u306b\u95a2\u6570\u306e\u623b\u308a\u5024\u3067\u306f\u306a\u3044\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4f8b1\u306e\u554f\u984c\u3092\u5c11\u3057\u62e1\u5f35\u3057\u3066\u3001\u305d\u308c\u304c\u4f55\u3092\u610f\u5473\u3059\u308b\u304b\u3092\u8aac\u660e\u3057\u307e\u3059\u3002</p> <p>\u4f8b2</p> <p>\u4e8c\u5206\u6728\u3067\u3001\u5024\u304c \\(7\\) \u306e\u3059\u3079\u3066\u306e\u30ce\u30fc\u30c9\u3092\u691c\u7d22\u3057\u3001\u3059\u3079\u3066\u306e\u30de\u30c3\u30c1\u30f3\u30b0\u30ce\u30fc\u30c9\u306b\u3064\u3044\u3066\u3001\u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u304b\u3089\u305d\u306e\u30ce\u30fc\u30c9\u307e\u3067\u306e\u30d1\u30b9\u3092\u8fd4\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <p>\u4f8b1\u306e\u30b3\u30fc\u30c9\u306b\u57fa\u3065\u3044\u3066\u3001\u8a2a\u554f\u3057\u305f\u30ce\u30fc\u30c9\u30d1\u30b9\u3092\u8a18\u9332\u3059\u308b\u305f\u3081\u306b <code>path</code> \u3068\u3044\u3046\u30ea\u30b9\u30c8\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u5024\u304c \\(7\\) \u306e\u30ce\u30fc\u30c9\u306b\u5230\u9054\u3059\u308b\u3068\u3001<code>path</code> \u3092\u30b3\u30d4\u30fc\u3057\u3066\u7d50\u679c\u30ea\u30b9\u30c8 <code>res</code> \u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002\u8d70\u67fb\u5f8c\u3001<code>res</code> \u306b\u306f\u3059\u3079\u3066\u306e\u89e3\u304c\u4fdd\u6301\u3055\u308c\u307e\u3059\u3002\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby preorder_traversal_ii_compact.py<pre><code>def pre_order(root: TreeNode):\n \"\"\"\u524d\u9806\u8d70\u67fb\uff1a\u4f8b\u4e8c\"\"\"\n if root is None:\n return\n # \u8a66\u884c\n path.append(root)\n if root.val == 7:\n # \u89e3\u3092\u8a18\u9332\n res.append(list(path))\n pre_order(root.left)\n pre_order(root.right)\n # \u64a4\u56de\n path.pop()\n</code></pre> preorder_traversal_ii_compact.cpp<pre><code>/* \u524d\u9806\u8d70\u67fb\uff1a\u4f8b\uff12 */\nvoid preOrder(TreeNode *root) {\n if (root == nullptr) {\n return;\n }\n // \u8a66\u884c\n path.push_back(root);\n if (root-&gt;val == 7) {\n // \u89e3\u3092\u8a18\u9332\n res.push_back(path);\n }\n preOrder(root-&gt;left);\n preOrder(root-&gt;right);\n // \u56de\u9000\n path.pop_back();\n}\n</code></pre> preorder_traversal_ii_compact.java<pre><code>/* \u524d\u9806\u8d70\u67fb\uff1a\u4f8b\uff12 */\nvoid preOrder(TreeNode root) {\n if (root == null) {\n return;\n }\n // \u8a66\u884c\n path.add(root);\n if (root.val == 7) {\n // \u89e3\u3092\u8a18\u9332\n res.add(new ArrayList&lt;&gt;(path));\n }\n preOrder(root.left);\n preOrder(root.right);\n // \u56de\u9000\n path.remove(path.size() - 1);\n}\n</code></pre> preorder_traversal_ii_compact.cs<pre><code>[class]{preorder_traversal_ii_compact}-[func]{PreOrder}\n</code></pre> preorder_traversal_ii_compact.go<pre><code>[class]{}-[func]{preOrderII}\n</code></pre> preorder_traversal_ii_compact.swift<pre><code>[class]{}-[func]{preOrder}\n</code></pre> preorder_traversal_ii_compact.js<pre><code>[class]{}-[func]{preOrder}\n</code></pre> preorder_traversal_ii_compact.ts<pre><code>[class]{}-[func]{preOrder}\n</code></pre> preorder_traversal_ii_compact.dart<pre><code>[class]{}-[func]{preOrder}\n</code></pre> preorder_traversal_ii_compact.rs<pre><code>[class]{}-[func]{pre_order}\n</code></pre> preorder_traversal_ii_compact.c<pre><code>[class]{}-[func]{preOrder}\n</code></pre> preorder_traversal_ii_compact.kt<pre><code>[class]{}-[func]{preOrder}\n</code></pre> preorder_traversal_ii_compact.rb<pre><code>[class]{}-[func]{pre_order}\n</code></pre> <p>\u5404\u300c\u8a66\u884c\u300d\u3067\u3001\u73fe\u5728\u306e\u30ce\u30fc\u30c9\u3092 <code>path</code> \u306b\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3067\u30d1\u30b9\u3092\u8a18\u9332\u3057\u307e\u3059\u3002\u300c\u5f8c\u9000\u300d\u304c\u5fc5\u8981\u306a\u3068\u304d\u306f\u3044\u3064\u3067\u3082\u3001<code>path</code> \u304b\u3089\u30ce\u30fc\u30c9\u3092\u30dd\u30c3\u30d7\u3057\u3066**\u3053\u306e\u5931\u6557\u3057\u305f\u8a66\u884c\u524d\u306e\u72b6\u614b\u3092\u5fa9\u5143\u3057\u307e\u3059**\u3002</p> <p>\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3059\u30d7\u30ed\u30bb\u30b9\u3092\u89b3\u5bdf\u3059\u308b\u3053\u3068\u3067\u3001\u8a66\u884c\u306f\u300c\u524d\u9032\u300d\u306e\u3088\u3046\u3067\u3001\u5f8c\u9000\u306f\u300c\u5143\u306b\u623b\u3059\u300d\u306e\u3088\u3046\u3067\u3059\u3002\u5f8c\u8005\u306e\u30da\u30a2\u306f\u3001\u5bfe\u5fdc\u3059\u308b\u3082\u306e\u306b\u5bfe\u3059\u308b\u9006\u64cd\u4f5c\u3068\u898b\u306a\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</p> &lt;1&gt;&lt;2&gt;&lt;3&gt;&lt;4&gt;&lt;5&gt;&lt;6&gt;&lt;7&gt;&lt;8&gt;&lt;9&gt;&lt;10&gt;&lt;11&gt; <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p> \u56f3 13-2 \u00a0 \u8a66\u884c\u3068\u5f8c\u9000 </p>"},{"location":"chapter_backtracking/backtracking_algorithm/#1312","title":"13.1.2 \u00a0 \u526a\u5b9a","text":"<p>\u8907\u96d1\u306a\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u554f\u984c\u306f\u901a\u5e381\u3064\u4ee5\u4e0a\u306e\u5236\u7d04\u3092\u542b\u307f\u3001\u3053\u308c\u3089\u306f\u300c\u526a\u5b9a\u300d\u306b\u3088\u304f\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002</p> <p>\u4f8b3</p> <p>\u4e8c\u5206\u6728\u3067\u3001\u5024\u304c \\(7\\) \u306e\u3059\u3079\u3066\u306e\u30ce\u30fc\u30c9\u3092\u691c\u7d22\u3057\u3001\u30eb\u30fc\u30c8\u304b\u3089\u3053\u308c\u3089\u306e\u30ce\u30fc\u30c9\u307e\u3067\u306e\u30d1\u30b9\u3092\u8fd4\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u305f\u3060\u3057\u3001\u30d1\u30b9\u306b\u306f\u5024\u304c \\(3\\) \u306e\u30ce\u30fc\u30c9\u3092\u542b\u307e\u306a\u3044\u3068\u3044\u3046\u5236\u9650\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>\u4e0a\u8a18\u306e\u5236\u7d04\u3092\u6e80\u305f\u3059\u305f\u3081\u306b\u3001\u526a\u5b9a\u64cd\u4f5c\u3092\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff1a\u691c\u7d22\u30d7\u30ed\u30bb\u30b9\u4e2d\u306b\u3001\u5024\u304c \\(3\\) \u306e\u30ce\u30fc\u30c9\u306b\u906d\u9047\u3057\u305f\u5834\u5408\u3001\u305d\u306e\u30d1\u30b9\u3092\u901a\u3058\u3066\u3055\u3089\u306b\u691c\u7d22\u3059\u308b\u3053\u3068\u3092\u5373\u5ea7\u306b\u4e2d\u6b62\u3057\u307e\u3059\u3002\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby preorder_traversal_iii_compact.py<pre><code>def pre_order(root: TreeNode):\n \"\"\"\u524d\u9806\u8d70\u67fb\uff1a\u4f8b\u4e09\"\"\"\n # \u679d\u5208\u308a\n if root is None or root.val == 3:\n return\n # \u8a66\u884c\n path.append(root)\n if root.val == 7:\n # \u89e3\u3092\u8a18\u9332\n res.append(list(path))\n pre_order(root.left)\n pre_order(root.right)\n # \u64a4\u56de\n path.pop()\n</code></pre> preorder_traversal_iii_compact.cpp<pre><code>/* \u524d\u9806\u8d70\u67fb\uff1a\u4f8b\uff13 */\nvoid preOrder(TreeNode *root) {\n // \u526a\u5b9a\n if (root == nullptr || root-&gt;val == 3) {\n return;\n }\n // \u8a66\u884c\n path.push_back(root);\n if (root-&gt;val == 7) {\n // \u89e3\u3092\u8a18\u9332\n res.push_back(path);\n }\n preOrder(root-&gt;left);\n preOrder(root-&gt;right);\n // \u56de\u9000\n path.pop_back();\n}\n</code></pre> preorder_traversal_iii_compact.java<pre><code>/* \u524d\u9806\u8d70\u67fb\uff1a\u4f8b\uff13 */\nvoid preOrder(TreeNode root) {\n // \u526a\u5b9a\n if (root == null || root.val == 3) {\n return;\n }\n // \u8a66\u884c\n path.add(root);\n if (root.val == 7) {\n // \u89e3\u3092\u8a18\u9332\n res.add(new ArrayList&lt;&gt;(path));\n }\n preOrder(root.left);\n preOrder(root.right);\n // \u56de\u9000\n path.remove(path.size() - 1);\n}\n</code></pre> preorder_traversal_iii_compact.cs<pre><code>[class]{preorder_traversal_iii_compact}-[func]{PreOrder}\n</code></pre> preorder_traversal_iii_compact.go<pre><code>[class]{}-[func]{preOrderIII}\n</code></pre> preorder_traversal_iii_compact.swift<pre><code>[class]{}-[func]{preOrder}\n</code></pre> preorder_traversal_iii_compact.js<pre><code>[class]{}-[func]{preOrder}\n</code></pre> preorder_traversal_iii_compact.ts<pre><code>[class]{}-[func]{preOrder}\n</code></pre> preorder_traversal_iii_compact.dart<pre><code>[class]{}-[func]{preOrder}\n</code></pre> preorder_traversal_iii_compact.rs<pre><code>[class]{}-[func]{pre_order}\n</code></pre> preorder_traversal_iii_compact.c<pre><code>[class]{}-[func]{preOrder}\n</code></pre> preorder_traversal_iii_compact.kt<pre><code>[class]{}-[func]{preOrder}\n</code></pre> preorder_traversal_iii_compact.rb<pre><code>[class]{}-[func]{pre_order}\n</code></pre> <p>\u300c\u526a\u5b9a\u300d\u306f\u975e\u5e38\u306b\u751f\u304d\u751f\u304d\u3068\u3057\u305f\u540d\u8a5e\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u691c\u7d22\u30d7\u30ed\u30bb\u30b9\u3067\u3001\u5236\u7d04\u3092\u6e80\u305f\u3055\u306a\u3044\u691c\u7d22\u5206\u5c90\u3092\u300c\u5207\u308a\u53d6\u308a\u300d\u307e\u3059\u3002\u3055\u3089\u306a\u308b\u4e0d\u8981\u306a\u8a66\u884c\u3092\u907f\u3051\u3001\u691c\u7d22\u52b9\u7387\u3092\u5411\u4e0a\u3055\u305b\u307e\u3059\u3002</p> <p></p> <p> \u56f3 13-3 \u00a0 \u5236\u7d04\u306b\u57fa\u3065\u304f\u526a\u5b9a </p>"},{"location":"chapter_backtracking/backtracking_algorithm/#1313","title":"13.1.3 \u00a0 \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u30b3\u30fc\u30c9","text":"<p>\u4eca\u5ea6\u306f\u3001\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u304b\u3089\u300c\u8a66\u884c\u3001\u5f8c\u9000\u3001\u526a\u5b9a\u300d\u306e\u4e3b\u8981\u306a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u62bd\u51fa\u3057\u3066\u3001\u30b3\u30fc\u30c9\u306e\u6c4e\u7528\u6027\u3092\u5411\u4e0a\u3055\u305b\u3066\u307f\u307e\u3057\u3087\u3046\u3002</p> <p>\u4ee5\u4e0b\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u30b3\u30fc\u30c9\u3067\u306f\u3001<code>state</code> \u306f\u554f\u984c\u306e\u73fe\u5728\u306e\u72b6\u614b\u3092\u8868\u3057\u3001<code>choices</code> \u306f\u73fe\u5728\u306e\u72b6\u614b\u3067\u5229\u7528\u53ef\u80fd\u306a\u9078\u629e\u80a2\u3092\u8868\u3057\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby <pre><code>def backtrack(state: State, choices: list[choice], res: list[state]):\n \"\"\"\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\"\"\"\n # \u89e3\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\n if is_solution(state):\n # \u89e3\u3092\u8a18\u9332\n record_solution(state, res)\n # \u691c\u7d22\u3092\u505c\u6b62\n return\n # \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u53cd\u5fa9\n for choice in choices:\n # \u526a\u5b9a\uff1a\u9078\u629e\u80a2\u304c\u6709\u52b9\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\n if is_valid(state, choice):\n # \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001\u72b6\u614b\u3092\u66f4\u65b0\n make_choice(state, choice)\n backtrack(state, choices, res)\n # \u5f8c\u9000\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u623b\u3059\n undo_choice(state, choice)\n</code></pre> <pre><code>/* \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af */\nvoid backtrack(State *state, vector&lt;Choice *&gt; &amp;choices, vector&lt;State *&gt; &amp;res) {\n // \u89e3\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\n if (isSolution(state)) {\n // \u89e3\u3092\u8a18\u9332\n recordSolution(state, res);\n // \u691c\u7d22\u3092\u505c\u6b62\n return;\n }\n // \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u53cd\u5fa9\n for (Choice choice : choices) {\n // \u526a\u5b9a\uff1a\u9078\u629e\u80a2\u304c\u6709\u52b9\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\n if (isValid(state, choice)) {\n // \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001\u72b6\u614b\u3092\u66f4\u65b0\n makeChoice(state, choice);\n backtrack(state, choices, res);\n // \u5f8c\u9000\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u623b\u3059\n undoChoice(state, choice);\n }\n }\n}\n</code></pre> <pre><code>/* \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af */\nvoid backtrack(State state, List&lt;Choice&gt; choices, List&lt;State&gt; res) {\n // \u89e3\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\n if (isSolution(state)) {\n // \u89e3\u3092\u8a18\u9332\n recordSolution(state, res);\n // \u691c\u7d22\u3092\u505c\u6b62\n return;\n }\n // \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u53cd\u5fa9\n for (Choice choice : choices) {\n // \u526a\u5b9a\uff1a\u9078\u629e\u80a2\u304c\u6709\u52b9\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\n if (isValid(state, choice)) {\n // \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001\u72b6\u614b\u3092\u66f4\u65b0\n makeChoice(state, choice);\n backtrack(state, choices, res);\n // \u5f8c\u9000\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u623b\u3059\n undoChoice(state, choice);\n }\n }\n}\n</code></pre> <pre><code>/* \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af */\nvoid Backtrack(State state, List&lt;Choice&gt; choices, List&lt;State&gt; res) {\n // \u89e3\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\n if (IsSolution(state)) {\n // \u89e3\u3092\u8a18\u9332\n RecordSolution(state, res);\n // \u691c\u7d22\u3092\u505c\u6b62\n return;\n }\n // \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u53cd\u5fa9\n foreach (Choice choice in choices) {\n // \u526a\u5b9a\uff1a\u9078\u629e\u80a2\u304c\u6709\u52b9\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\n if (IsValid(state, choice)) {\n // \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001\u72b6\u614b\u3092\u66f4\u65b0\n MakeChoice(state, choice);\n Backtrack(state, choices, res);\n // \u5f8c\u9000\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u623b\u3059\n UndoChoice(state, choice);\n }\n }\n}\n</code></pre> <pre><code>/* \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af */\nfunc backtrack(state *State, choices []Choice, res *[]State) {\n // \u89e3\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\n if isSolution(state) {\n // \u89e3\u3092\u8a18\u9332\n recordSolution(state, res)\n // \u691c\u7d22\u3092\u505c\u6b62\n return\n }\n // \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u53cd\u5fa9\n for _, choice := range choices {\n // \u526a\u5b9a\uff1a\u9078\u629e\u80a2\u304c\u6709\u52b9\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\n if isValid(state, choice) {\n // \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001\u72b6\u614b\u3092\u66f4\u65b0\n makeChoice(state, choice)\n backtrack(state, choices, res)\n // \u5f8c\u9000\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u623b\u3059\n undoChoice(state, choice)\n }\n }\n}\n</code></pre> <pre><code>/* \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af */\nfunc backtrack(state: inout State, choices: [Choice], res: inout [State]) {\n // \u89e3\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\n if isSolution(state: state) {\n // \u89e3\u3092\u8a18\u9332\n recordSolution(state: state, res: &amp;res)\n // \u691c\u7d22\u3092\u505c\u6b62\n return\n }\n // \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u53cd\u5fa9\n for choice in choices {\n // \u526a\u5b9a\uff1a\u9078\u629e\u80a2\u304c\u6709\u52b9\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\n if isValid(state: state, choice: choice) {\n // \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001\u72b6\u614b\u3092\u66f4\u65b0\n makeChoice(state: &amp;state, choice: choice)\n backtrack(state: &amp;state, choices: choices, res: &amp;res)\n // \u5f8c\u9000\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u623b\u3059\n undoChoice(state: &amp;state, choice: choice)\n }\n }\n}\n</code></pre> <pre><code>/* \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af */\nfunction backtrack(state, choices, res) {\n // \u89e3\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\n if (isSolution(state)) {\n // \u89e3\u3092\u8a18\u9332\n recordSolution(state, res);\n // \u691c\u7d22\u3092\u505c\u6b62\n return;\n }\n // \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u53cd\u5fa9\n for (let choice of choices) {\n // \u526a\u5b9a\uff1a\u9078\u629e\u80a2\u304c\u6709\u52b9\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\n if (isValid(state, choice)) {\n // \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001\u72b6\u614b\u3092\u66f4\u65b0\n makeChoice(state, choice);\n backtrack(state, choices, res);\n // \u5f8c\u9000\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u623b\u3059\n undoChoice(state, choice);\n }\n }\n}\n</code></pre> <pre><code>/* \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af */\nfunction backtrack(state: State, choices: Choice[], res: State[]): void {\n // \u89e3\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\n if (isSolution(state)) {\n // \u89e3\u3092\u8a18\u9332\n recordSolution(state, res);\n // \u691c\u7d22\u3092\u505c\u6b62\n return;\n }\n // \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u53cd\u5fa9\n for (let choice of choices) {\n // \u526a\u5b9a\uff1a\u9078\u629e\u80a2\u304c\u6709\u52b9\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\n if (isValid(state, choice)) {\n // \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001\u72b6\u614b\u3092\u66f4\u65b0\n makeChoice(state, choice);\n backtrack(state, choices, res);\n // \u5f8c\u9000\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u623b\u3059\n undoChoice(state, choice);\n }\n }\n}\n</code></pre> <pre><code>/* \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af */\nvoid backtrack(State state, List&lt;Choice&gt;, List&lt;State&gt; res) {\n // \u89e3\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\n if (isSolution(state)) {\n // \u89e3\u3092\u8a18\u9332\n recordSolution(state, res);\n // \u691c\u7d22\u3092\u505c\u6b62\n return;\n }\n // \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u53cd\u5fa9\n for (Choice choice in choices) {\n // \u526a\u5b9a\uff1a\u9078\u629e\u80a2\u304c\u6709\u52b9\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\n if (isValid(state, choice)) {\n // \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001\u72b6\u614b\u3092\u66f4\u65b0\n makeChoice(state, choice);\n backtrack(state, choices, res);\n // \u5f8c\u9000\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u623b\u3059\n undoChoice(state, choice);\n }\n }\n}\n</code></pre> <pre><code>/* \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af */\nfn backtrack(state: &amp;mut State, choices: &amp;Vec&lt;Choice&gt;, res: &amp;mut Vec&lt;State&gt;) {\n // \u89e3\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\n if is_solution(state) {\n // \u89e3\u3092\u8a18\u9332\n record_solution(state, res);\n // \u691c\u7d22\u3092\u505c\u6b62\n return;\n }\n // \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u53cd\u5fa9\n for choice in choices {\n // \u526a\u5b9a\uff1a\u9078\u629e\u80a2\u304c\u6709\u52b9\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\n if is_valid(state, choice) {\n // \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001\u72b6\u614b\u3092\u66f4\u65b0\n make_choice(state, choice);\n backtrack(state, choices, res);\n // \u5f8c\u9000\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u623b\u3059\n undo_choice(state, choice);\n }\n }\n}\n</code></pre> <pre><code>/* \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af */\nvoid backtrack(State *state, Choice *choices, int numChoices, State *res, int numRes) {\n // \u89e3\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\n if (isSolution(state)) {\n // \u89e3\u3092\u8a18\u9332\n recordSolution(state, res, numRes);\n // \u691c\u7d22\u3092\u505c\u6b62\n return;\n }\n // \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u53cd\u5fa9\n for (int i = 0; i &lt; numChoices; i++) {\n // \u526a\u5b9a\uff1a\u9078\u629e\u80a2\u304c\u6709\u52b9\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\n if (isValid(state, &amp;choices[i])) {\n // \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001\u72b6\u614b\u3092\u66f4\u65b0\n makeChoice(state, &amp;choices[i]);\n backtrack(state, choices, numChoices, res, numRes);\n // \u5f8c\u9000\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u623b\u3059\n undoChoice(state, &amp;choices[i]);\n }\n }\n}\n</code></pre> <pre><code>/* \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af */\nfun backtrack(state: State?, choices: List&lt;Choice?&gt;, res: List&lt;State?&gt;?) {\n // \u89e3\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\n if (isSolution(state)) {\n // \u89e3\u3092\u8a18\u9332\n recordSolution(state, res)\n // \u691c\u7d22\u3092\u505c\u6b62\n return\n }\n // \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u53cd\u5fa9\n for (choice in choices) {\n // \u526a\u5b9a\uff1a\u9078\u629e\u80a2\u304c\u6709\u52b9\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\n if (isValid(state, choice)) {\n // \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001\u72b6\u614b\u3092\u66f4\u65b0\n makeChoice(state, choice)\n backtrack(state, choices, res)\n // \u5f8c\u9000\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u623b\u3059\n undoChoice(state, choice)\n }\n }\n}\n</code></pre> <pre><code>### \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af ###\ndef backtrack(state, choices, res)\n # \u89e3\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\n if is_solution?(state)\n # \u89e3\u3092\u8a18\u9332\n record_solution(state, res)\n return\n end\n\n # \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u53cd\u5fa9\n for choice in choices\n # \u526a\u5b9a\uff1a\u9078\u629e\u80a2\u304c\u6709\u52b9\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\n if is_valid?(state, choice)\n # \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001\u72b6\u614b\u3092\u66f4\u65b0\n make_choice(state, choice)\n backtrack(state, choices, res)\n # \u5f8c\u9000\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u623b\u3059\n undo_choice(state, choice)\n end\n end\nend\n</code></pre> <p>\u6b21\u306b\u3001\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u30b3\u30fc\u30c9\u306b\u57fa\u3065\u3044\u3066\u4f8b\u984c 3 \u3092\u89e3\u304d\u307e\u3059\u3002\u72b6\u614b <code>state</code> \u306f\u30ce\u30fc\u30c9\u306e\u8d70\u67fb\u7d4c\u8def\u3092\u8868\u3057\u3001\u9078\u629e\u80a2 <code>choices</code> \u306f\u73fe\u5728\u30ce\u30fc\u30c9\u306e\u5de6\u5b50\u30ce\u30fc\u30c9\u3068\u53f3\u5b50\u30ce\u30fc\u30c9\u3001\u7d50\u679c <code>res</code> \u306f\u7d4c\u8def\u30ea\u30b9\u30c8\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby preorder_traversal_iii_template.py<pre><code>def is_solution(state: list[TreeNode]) -&gt; bool:\n \"\"\"\u73fe\u5728\u306e\u72b6\u614b\u304c\u89e3\u304b\u3069\u3046\u304b\u3092\u5224\u5b9a\"\"\"\n return state and state[-1].val == 7\n\ndef record_solution(state: list[TreeNode], res: list[list[TreeNode]]):\n \"\"\"\u89e3\u3092\u8a18\u9332\"\"\"\n res.append(list(state))\n\ndef is_valid(state: list[TreeNode], choice: TreeNode) -&gt; bool:\n \"\"\"\u73fe\u5728\u306e\u72b6\u614b\u4e0b\u3067\u9078\u629e\u304c\u5408\u6cd5\u304b\u3069\u3046\u304b\u3092\u5224\u5b9a\"\"\"\n return choice is not None and choice.val != 3\n\ndef make_choice(state: list[TreeNode], choice: TreeNode):\n \"\"\"\u72b6\u614b\u3092\u66f4\u65b0\"\"\"\n state.append(choice)\n\ndef undo_choice(state: list[TreeNode], choice: TreeNode):\n \"\"\"\u72b6\u614b\u3092\u5fa9\u5143\"\"\"\n state.pop()\n\ndef backtrack(\n state: list[TreeNode], choices: list[TreeNode], res: list[list[TreeNode]]\n):\n \"\"\"\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff1a\u4f8b\u4e09\"\"\"\n # \u89e3\u304b\u3069\u3046\u304b\u3092\u30c1\u30a7\u30c3\u30af\n if is_solution(state):\n # \u89e3\u3092\u8a18\u9332\n record_solution(state, res)\n # \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u8d70\u67fb\n for choice in choices:\n # \u679d\u5208\u308a\uff1a\u9078\u629e\u304c\u5408\u6cd5\u304b\u3069\u3046\u304b\u3092\u30c1\u30a7\u30c3\u30af\n if is_valid(state, choice):\n # \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001\u72b6\u614b\u3092\u66f4\u65b0\n make_choice(state, choice)\n # \u6b21\u306e\u9078\u629e\u30e9\u30a6\u30f3\u30c9\u306b\u9032\u3080\n backtrack(state, [choice.left, choice.right], res)\n # \u64a4\u56de\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u5fa9\u5143\n undo_choice(state, choice)\n</code></pre> preorder_traversal_iii_template.cpp<pre><code>/* \u73fe\u5728\u306e\u72b6\u614b\u304c\u89e3\u304b\u3069\u3046\u304b\u3092\u5224\u5b9a */\nbool isSolution(vector&lt;TreeNode *&gt; &amp;state) {\n return !state.empty() &amp;&amp; state.back()-&gt;val == 7;\n}\n\n/* \u89e3\u3092\u8a18\u9332 */\nvoid recordSolution(vector&lt;TreeNode *&gt; &amp;state, vector&lt;vector&lt;TreeNode *&gt;&gt; &amp;res) {\n res.push_back(state);\n}\n\n/* \u73fe\u5728\u306e\u72b6\u614b\u4e0b\u3067\u9078\u629e\u304c\u5408\u6cd5\u304b\u3069\u3046\u304b\u3092\u5224\u5b9a */\nbool isValid(vector&lt;TreeNode *&gt; &amp;state, TreeNode *choice) {\n return choice != nullptr &amp;&amp; choice-&gt;val != 3;\n}\n\n/* \u72b6\u614b\u3092\u66f4\u65b0 */\nvoid makeChoice(vector&lt;TreeNode *&gt; &amp;state, TreeNode *choice) {\n state.push_back(choice);\n}\n\n/* \u72b6\u614b\u3092\u5fa9\u5143 */\nvoid undoChoice(vector&lt;TreeNode *&gt; &amp;state, TreeNode *choice) {\n state.pop_back();\n}\n\n/* \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff1a\u4f8b\uff13 */\nvoid backtrack(vector&lt;TreeNode *&gt; &amp;state, vector&lt;TreeNode *&gt; &amp;choices, vector&lt;vector&lt;TreeNode *&gt;&gt; &amp;res) {\n // \u89e3\u304b\u3069\u3046\u304b\u3092\u30c1\u30a7\u30c3\u30af\n if (isSolution(state)) {\n // \u89e3\u3092\u8a18\u9332\n recordSolution(state, res);\n }\n // \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u8d70\u67fb\n for (TreeNode *choice : choices) {\n // \u526a\u5b9a\uff1a\u9078\u629e\u304c\u5408\u6cd5\u304b\u3069\u3046\u304b\u3092\u30c1\u30a7\u30c3\u30af\n if (isValid(state, choice)) {\n // \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001\u72b6\u614b\u3092\u66f4\u65b0\n makeChoice(state, choice);\n // \u6b21\u306e\u30e9\u30a6\u30f3\u30c9\u306e\u9078\u629e\u306b\u9032\u3080\n vector&lt;TreeNode *&gt; nextChoices{choice-&gt;left, choice-&gt;right};\n backtrack(state, nextChoices, res);\n // \u56de\u9000\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u5fa9\u5143\n undoChoice(state, choice);\n }\n }\n}\n</code></pre> preorder_traversal_iii_template.java<pre><code>/* \u73fe\u5728\u306e\u72b6\u614b\u304c\u89e3\u304b\u3069\u3046\u304b\u3092\u5224\u5b9a */\nboolean isSolution(List&lt;TreeNode&gt; state) {\n return !state.isEmpty() &amp;&amp; state.get(state.size() - 1).val == 7;\n}\n\n/* \u89e3\u3092\u8a18\u9332 */\nvoid recordSolution(List&lt;TreeNode&gt; state, List&lt;List&lt;TreeNode&gt;&gt; res) {\n res.add(new ArrayList&lt;&gt;(state));\n}\n\n/* \u73fe\u5728\u306e\u72b6\u614b\u4e0b\u3067\u9078\u629e\u304c\u5408\u6cd5\u304b\u3069\u3046\u304b\u3092\u5224\u5b9a */\nboolean isValid(List&lt;TreeNode&gt; state, TreeNode choice) {\n return choice != null &amp;&amp; choice.val != 3;\n}\n\n/* \u72b6\u614b\u3092\u66f4\u65b0 */\nvoid makeChoice(List&lt;TreeNode&gt; state, TreeNode choice) {\n state.add(choice);\n}\n\n/* \u72b6\u614b\u3092\u5fa9\u5143 */\nvoid undoChoice(List&lt;TreeNode&gt; state, TreeNode choice) {\n state.remove(state.size() - 1);\n}\n\n/* \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff1a\u4f8b\uff13 */\nvoid backtrack(List&lt;TreeNode&gt; state, List&lt;TreeNode&gt; choices, List&lt;List&lt;TreeNode&gt;&gt; res) {\n // \u89e3\u304b\u3069\u3046\u304b\u3092\u30c1\u30a7\u30c3\u30af\n if (isSolution(state)) {\n // \u89e3\u3092\u8a18\u9332\n recordSolution(state, res);\n }\n // \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u8d70\u67fb\n for (TreeNode choice : choices) {\n // \u526a\u5b9a\uff1a\u9078\u629e\u304c\u5408\u6cd5\u304b\u3069\u3046\u304b\u3092\u30c1\u30a7\u30c3\u30af\n if (isValid(state, choice)) {\n // \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001\u72b6\u614b\u3092\u66f4\u65b0\n makeChoice(state, choice);\n // \u6b21\u306e\u30e9\u30a6\u30f3\u30c9\u306e\u9078\u629e\u306b\u9032\u3080\n backtrack(state, Arrays.asList(choice.left, choice.right), res);\n // \u56de\u9000\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u5fa9\u5143\n undoChoice(state, choice);\n }\n }\n}\n</code></pre> preorder_traversal_iii_template.cs<pre><code>[class]{preorder_traversal_iii_template}-[func]{IsSolution}\n\n[class]{preorder_traversal_iii_template}-[func]{RecordSolution}\n\n[class]{preorder_traversal_iii_template}-[func]{IsValid}\n\n[class]{preorder_traversal_iii_template}-[func]{MakeChoice}\n\n[class]{preorder_traversal_iii_template}-[func]{UndoChoice}\n\n[class]{preorder_traversal_iii_template}-[func]{Backtrack}\n</code></pre> preorder_traversal_iii_template.go<pre><code>[class]{}-[func]{isSolution}\n\n[class]{}-[func]{recordSolution}\n\n[class]{}-[func]{isValid}\n\n[class]{}-[func]{makeChoice}\n\n[class]{}-[func]{undoChoice}\n\n[class]{}-[func]{backtrackIII}\n</code></pre> preorder_traversal_iii_template.swift<pre><code>[class]{}-[func]{isSolution}\n\n[class]{}-[func]{recordSolution}\n\n[class]{}-[func]{isValid}\n\n[class]{}-[func]{makeChoice}\n\n[class]{}-[func]{undoChoice}\n\n[class]{}-[func]{backtrack}\n</code></pre> preorder_traversal_iii_template.js<pre><code>[class]{}-[func]{isSolution}\n\n[class]{}-[func]{recordSolution}\n\n[class]{}-[func]{isValid}\n\n[class]{}-[func]{makeChoice}\n\n[class]{}-[func]{undoChoice}\n\n[class]{}-[func]{backtrack}\n</code></pre> preorder_traversal_iii_template.ts<pre><code>[class]{}-[func]{isSolution}\n\n[class]{}-[func]{recordSolution}\n\n[class]{}-[func]{isValid}\n\n[class]{}-[func]{makeChoice}\n\n[class]{}-[func]{undoChoice}\n\n[class]{}-[func]{backtrack}\n</code></pre> preorder_traversal_iii_template.dart<pre><code>[class]{}-[func]{isSolution}\n\n[class]{}-[func]{recordSolution}\n\n[class]{}-[func]{isValid}\n\n[class]{}-[func]{makeChoice}\n\n[class]{}-[func]{undoChoice}\n\n[class]{}-[func]{backtrack}\n</code></pre> preorder_traversal_iii_template.rs<pre><code>[class]{}-[func]{is_solution}\n\n[class]{}-[func]{record_solution}\n\n[class]{}-[func]{is_valid}\n\n[class]{}-[func]{make_choice}\n\n[class]{}-[func]{undo_choice}\n\n[class]{}-[func]{backtrack}\n</code></pre> preorder_traversal_iii_template.c<pre><code>[class]{}-[func]{isSolution}\n\n[class]{}-[func]{recordSolution}\n\n[class]{}-[func]{isValid}\n\n[class]{}-[func]{makeChoice}\n\n[class]{}-[func]{undoChoice}\n\n[class]{}-[func]{backtrack}\n</code></pre> preorder_traversal_iii_template.kt<pre><code>[class]{}-[func]{isSolution}\n\n[class]{}-[func]{recordSolution}\n\n[class]{}-[func]{isValid}\n\n[class]{}-[func]{makeChoice}\n\n[class]{}-[func]{undoChoice}\n\n[class]{}-[func]{backtrack}\n</code></pre> preorder_traversal_iii_template.rb<pre><code>[class]{}-[func]{is_solution}\n\n[class]{}-[func]{record_solution}\n\n[class]{}-[func]{is_valid}\n\n[class]{}-[func]{make_choice}\n\n[class]{}-[func]{undo_choice}\n\n[class]{}-[func]{backtrack}\n</code></pre> <p>\u554f\u984c\u6587\u306e\u610f\u5473\u306b\u5f93\u3044\u3001\u5024\u304c \\(7\\) \u306e\u30ce\u30fc\u30c9\u3092\u898b\u3064\u3051\u305f\u5f8c\u3082\u63a2\u7d22\u3092\u7d9a\u3051\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u89e3\u3092\u8a18\u9332\u3057\u305f\u5f8c\u306e <code>return</code> \u6587\u3092\u524a\u9664\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u6b21\u306e\u56f3\u306f\u3001<code>return</code> \u6587\u3092\u4fdd\u6301\u3059\u308b\u5834\u5408\u3068\u524a\u9664\u3059\u308b\u5834\u5408\u306e\u63a2\u7d22\u904e\u7a0b\u306e\u6bd4\u8f03\u3067\u3059\u3002</p> <p></p> <p> \u56f3 13-4 \u00a0 return\u3092\u4fdd\u6301\u3059\u308b\u5834\u5408\u3068\u524a\u9664\u3059\u308b\u5834\u5408\u306e\u63a2\u7d22\u904e\u7a0b\u306e\u6bd4\u8f03 </p> <p>\u524d\u9806\u8d70\u67fb\u306b\u57fa\u3065\u304f\u30b3\u30fc\u30c9\u5b9f\u88c5\u3068\u6bd4\u3079\u308b\u3068\u3001\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306b\u57fa\u3065\u304f\u5b9f\u88c5\u306f\u3084\u3084\u5197\u9577\u306b\u898b\u3048\u307e\u3059\u304c\u3001\u6c4e\u7528\u6027\u306f\u3088\u308a\u9ad8\u3044\u3067\u3059\u3002\u5b9f\u969b\u3001\u591a\u304f\u306e\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u554f\u984c\u306f\u3053\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u4e0b\u3067\u89e3\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u5177\u4f53\u7684\u306a\u554f\u984c\u306b\u5fdc\u3058\u3066 <code>state</code> \u3068 <code>choices</code> \u3092\u5b9a\u7fa9\u3057\u3001\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u5185\u306e\u5404\u30e1\u30bd\u30c3\u30c9\u3092\u5b9f\u88c5\u3059\u308c\u3070\u3088\u3044\u306e\u3067\u3059\u3002</p>"},{"location":"chapter_backtracking/backtracking_algorithm/#1314","title":"13.1.4 \u00a0 \u3088\u304f\u4f7f\u308f\u308c\u308b\u7528\u8a9e","text":"<p>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u554f\u984c\u3092\u3088\u308a\u660e\u78ba\u306b\u5206\u6790\u3059\u308b\u305f\u3081\u306b\u3001\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u3088\u304f\u4f7f\u308f\u308c\u308b\u7528\u8a9e\u306e\u610f\u5473\u3092\u307e\u3068\u3081\u3001\u4f8b\u984c 3 \u306e\u5bfe\u5fdc\u4f8b\u3092\u4ee5\u4e0b\u306e\u8868\u306b\u793a\u3057\u307e\u3059\u3002</p> <p> \u8868 13-1 \u00a0 \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u3088\u304f\u4f7f\u308f\u308c\u308b\u7528\u8a9e </p> \u540d\u79f0 \u5b9a\u7fa9 \u4f8b\u984c 3 \u89e3\uff08solution\uff09 \u89e3\u306f\u554f\u984c\u306e\u7279\u5b9a\u6761\u4ef6\u3092\u6e80\u305f\u3059\u7b54\u3048\u3067\u3042\u308a\u30011 \u3064\u307e\u305f\u306f\u8907\u6570\u5b58\u5728\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b \u6839\u30ce\u30fc\u30c9\u304b\u3089\u30ce\u30fc\u30c9 \\(7\\) \u307e\u3067\u306e\u5236\u7d04\u6761\u4ef6\u3092\u6e80\u305f\u3059\u3059\u3079\u3066\u306e\u7d4c\u8def \u5236\u7d04\u6761\u4ef6\uff08constraint\uff09 \u5236\u7d04\u6761\u4ef6\u306f\u3001\u89e3\u306e\u5b9f\u73fe\u53ef\u80fd\u6027\u3092\u5236\u9650\u3059\u308b\u6761\u4ef6\u3067\u3042\u308a\u3001\u901a\u5e38\u306f\u679d\u5208\u308a\u306b\u4f7f\u7528\u3055\u308c\u308b \u7d4c\u8def\u306b\u30ce\u30fc\u30c9 \\(3\\) \u3092\u542b\u307e\u306a\u3044 \u72b6\u614b\uff08state\uff09 \u72b6\u614b\u306f\u3001\u3042\u308b\u6642\u70b9\u3067\u306e\u554f\u984c\u306e\u72b6\u6cc1\u3092\u8868\u3057\u3001\u3053\u308c\u307e\u3067\u306b\u884c\u3063\u305f\u9078\u629e\u3092\u542b\u3080 \u73fe\u5728\u8a2a\u554f\u3057\u305f\u30ce\u30fc\u30c9\u7d4c\u8def\u3001\u3059\u306a\u308f\u3061 <code>path</code> \u30ce\u30fc\u30c9\u30ea\u30b9\u30c8 \u8a66\u884c\uff08attempt\uff09 \u8a66\u884c\u306f\u3001\u5229\u7528\u53ef\u80fd\u306a\u9078\u629e\u80a2\u306b\u57fa\u3065\u3044\u3066\u89e3\u7a7a\u9593\u3092\u63a2\u7d22\u3059\u308b\u904e\u7a0b\u3067\u3042\u308a\u3001\u9078\u629e\u3092\u884c\u3044\u3001\u72b6\u614b\u3092\u66f4\u65b0\u3057\u3001\u89e3\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3059\u308b \u5de6\uff08\u53f3\uff09\u5b50\u30ce\u30fc\u30c9\u3092\u518d\u5e30\u7684\u306b\u8a2a\u554f\u3057\u3001\u30ce\u30fc\u30c9\u3092 <code>path</code> \u306b\u8ffd\u52a0\u3057\u3001\u30ce\u30fc\u30c9\u306e\u5024\u304c \\(7\\) \u304b\u3092\u78ba\u8a8d\u3059\u308b \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30af\uff08backtracking\uff09 \u5236\u7d04\u6761\u4ef6\u3092\u6e80\u305f\u3055\u306a\u3044\u72b6\u614b\u306b\u906d\u9047\u3057\u305f\u5834\u5408\u3001\u4ee5\u524d\u306e\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3066\u524d\u306e\u72b6\u614b\u306b\u623b\u308b\u3053\u3068 \u8449\u30ce\u30fc\u30c9\u3092\u8d8a\u3048\u305f\u3068\u304d\u3001\u63a2\u7d22\u7d42\u4e86\u3001\u5024\u304c \\(3\\) \u306e\u30ce\u30fc\u30c9\u306b\u906d\u9047\u3057\u305f\u3068\u304d\u63a2\u7d22\u3092\u7d42\u4e86\u3057\u3001\u95a2\u6570\u304c\u623b\u308b \u679d\u5208\u308a\uff08pruning\uff09 \u554f\u984c\u306e\u7279\u6027\u3084\u5236\u7d04\u6761\u4ef6\u306b\u57fa\u3065\u304d\u3001\u7121\u610f\u5473\u306a\u63a2\u7d22\u7d4c\u8def\u3092\u907f\u3051\u308b\u65b9\u6cd5\u3067\u3042\u308a\u3001\u63a2\u7d22\u52b9\u7387\u3092\u5411\u4e0a\u3055\u305b\u308b \u5024\u304c \\(3\\) \u306e\u30ce\u30fc\u30c9\u306b\u906d\u9047\u3057\u305f\u5834\u5408\u3001\u305d\u308c\u4ee5\u4e0a\u63a2\u7d22\u3057\u306a\u3044 <p>Tip</p> <p>\u554f\u984c\u3001\u89e3\u3001\u72b6\u614b\u306a\u3069\u306e\u6982\u5ff5\u306f\u4e00\u822c\u7684\u306a\u3082\u306e\u3067\u3042\u308a\u3001\u5206\u5272\u7d71\u6cbb\u3001\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u3001\u52d5\u7684\u8a08\u753b\u6cd5\u3001\u8caa\u6b32\u6cd5\u306a\u3069\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306b\u3082\u95a2\u4fc2\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_backtracking/backtracking_algorithm/#1315","title":"13.1.5 \u00a0 \u9577\u6240\u3068\u9650\u754c","text":"<p>\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u672c\u8cea\u7684\u306b\u6df1\u3055\u512a\u5148\u63a2\u7d22\uff08DFS\uff09\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u4e00\u7a2e\u3067\u3042\u308a\u3001\u6761\u4ef6\u3092\u6e80\u305f\u3059\u89e3\u3092\u898b\u3064\u3051\u308b\u307e\u3067\u3042\u3089\u3086\u308b\u53ef\u80fd\u306a\u89e3\u3092\u8a66\u307f\u307e\u3059\u3002\u3053\u306e\u65b9\u6cd5\u306e\u5229\u70b9\u306f\u3001\u3059\u3079\u3066\u306e\u53ef\u80fd\u306a\u89e3\u3092\u898b\u3064\u3051\u3089\u308c\u308b\u70b9\u3067\u3042\u308a\u3001\u9069\u5207\u306a\u679d\u5208\u308a\u3092\u884c\u3048\u3070\u52b9\u7387\u304c\u9ad8\u3044\u3053\u3068\u3067\u3059\u3002</p> <p>\u3057\u304b\u3057\u3001\u5927\u898f\u6a21\u307e\u305f\u306f\u8907\u96d1\u306a\u554f\u984c\u3092\u6271\u3046\u5834\u5408\u3001\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5b9f\u884c\u52b9\u7387\u306f\u8a31\u5bb9\u3067\u304d\u306a\u3044\u307b\u3069\u4f4e\u4e0b\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</p> <ul> <li>\u6642\u9593\uff1a\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u901a\u5e38\u3001\u72b6\u614b\u7a7a\u9593\u306e\u3059\u3079\u3066\u306e\u53ef\u80fd\u6027\u3092\u63a2\u7d22\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f\u6307\u6570\u30aa\u30fc\u30c0\u30fc\u307e\u305f\u306f\u968e\u4e57\u30aa\u30fc\u30c0\u30fc\u306b\u9054\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u7a7a\u9593\uff1a\u518d\u5e30\u547c\u3073\u51fa\u3057\u4e2d\u306b\u73fe\u5728\u306e\u72b6\u614b\uff08\u4f8b\uff1a\u7d4c\u8def\u3001\u679d\u5208\u308a\u7528\u306e\u88dc\u52a9\u5909\u6570\u306a\u3069\uff09\u3092\u4fdd\u5b58\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u6df1\u3055\u304c\u5927\u304d\u3044\u5834\u5408\u3001\u7a7a\u9593\u306e\u4f7f\u7528\u91cf\u304c\u5897\u52a0\u3057\u307e\u3059\u3002</li> </ul> <p>\u305d\u308c\u3067\u3082\u306a\u304a\u3001\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u7279\u5b9a\u306e\u63a2\u7d22\u554f\u984c\u3084\u5236\u7d04\u6e80\u8db3\u554f\u984c\u306e\u6700\u826f\u306e\u89e3\u6cd5\u3067\u3042\u308b\u3053\u3068\u304c\u591a\u3044\u3067\u3059\u3002\u3053\u308c\u3089\u306e\u554f\u984c\u3067\u306f\u3001\u3069\u306e\u9078\u629e\u304c\u6709\u52b9\u306a\u89e3\u3092\u751f\u6210\u3059\u308b\u304b\u3092\u4e88\u6e2c\u3067\u304d\u306a\u3044\u305f\u3081\u3001\u3059\u3079\u3066\u306e\u53ef\u80fd\u306a\u9078\u629e\u3092\u8a66\u3059\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u3088\u3046\u306a\u5834\u5408\u3001**\u52b9\u7387\u306e\u6700\u9069\u5316\u304c\u9375**\u3068\u306a\u308a\u307e\u3059\u3002\u4e00\u822c\u7684\u306a\u6700\u9069\u5316\u624b\u6cd5\u306f\u6b21\u306e 2 \u3064\u3067\u3059\u3002</p> <ul> <li>\u679d\u5208\u308a\uff1a\u89e3\u3092\u751f\u6210\u3057\u306a\u3044\u3053\u3068\u304c\u78ba\u5b9f\u306a\u7d4c\u8def\u3092\u907f\u3051\u308b\u3053\u3068\u3067\u3001\u6642\u9593\u3068\u7a7a\u9593\u3092\u7bc0\u7d04\u3057\u307e\u3059\u3002</li> <li>\u30d2\u30e5\u30fc\u30ea\u30b9\u30c6\u30a3\u30c3\u30af\u63a2\u7d22\uff1a\u63a2\u7d22\u4e2d\u306b\u6226\u7565\u3084\u8a55\u4fa1\u5024\u3092\u5c0e\u5165\u3057\u3001\u6709\u52b9\u306a\u89e3\u3092\u751f\u6210\u3059\u308b\u53ef\u80fd\u6027\u304c\u9ad8\u3044\u7d4c\u8def\u3092\u512a\u5148\u7684\u306b\u63a2\u7d22\u3057\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_backtracking/backtracking_algorithm/#1316","title":"13.1.6 \u00a0 \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u306e\u5178\u578b\u7684\u306a\u4f8b\u984c","text":"<p>\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u3001\u591a\u304f\u306e\u63a2\u7d22\u554f\u984c\u3001\u5236\u7d04\u6e80\u8db3\u554f\u984c\u3001\u7d44\u5408\u305b\u6700\u9069\u5316\u554f\u984c\u3092\u89e3\u304f\u306e\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002</p> <p>\u63a2\u7d22\u554f\u984c\uff1a\u3053\u306e\u7a2e\u306e\u554f\u984c\u306e\u76ee\u6a19\u306f\u3001\u7279\u5b9a\u306e\u6761\u4ef6\u3092\u6e80\u305f\u3059\u89e3\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u3067\u3059\u3002</p> <ul> <li>\u5168\u9806\u5217\u554f\u984c\uff1a\u4e0e\u3048\u3089\u308c\u305f\u96c6\u5408\u306e\u3059\u3079\u3066\u306e\u53ef\u80fd\u306a\u9806\u5217\u3092\u6c42\u3081\u308b\u3002</li> <li>\u90e8\u5206\u548c\u554f\u984c\uff1a\u4e0e\u3048\u3089\u308c\u305f\u96c6\u5408\u3068\u76ee\u6a19\u548c\u306b\u5bfe\u3057\u3066\u3001\u548c\u304c\u76ee\u6a19\u5024\u306b\u306a\u308b\u3059\u3079\u3066\u306e\u90e8\u5206\u96c6\u5408\u3092\u6c42\u3081\u308b\u3002</li> <li>\u30cf\u30ce\u30a4\u306e\u5854\uff1a3 \u672c\u306e\u67f1\u3068\u7570\u306a\u308b\u30b5\u30a4\u30ba\u306e\u5186\u76e4\u304c\u3042\u308a\u3001\u3059\u3079\u3066\u306e\u5186\u76e4\u3092 1 \u672c\u306e\u67f1\u304b\u3089\u5225\u306e\u67f1\u306b\u79fb\u3059\u30021 \u56de\u306b 1 \u679a\u3057\u304b\u52d5\u304b\u305b\u305a\u3001\u5927\u304d\u306a\u5186\u76e4\u3092\u5c0f\u3055\u3044\u5186\u76e4\u306e\u4e0a\u306b\u7f6e\u304f\u3053\u3068\u306f\u3067\u304d\u306a\u3044\u3002</li> </ul> <p>\u5236\u7d04\u6e80\u8db3\u554f\u984c\uff1a\u3053\u306e\u7a2e\u306e\u554f\u984c\u306e\u76ee\u6a19\u306f\u3001\u3059\u3079\u3066\u306e\u5236\u7d04\u6761\u4ef6\u3092\u6e80\u305f\u3059\u89e3\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u3067\u3059\u3002</p> <ul> <li>\\(n\\) \u30af\u30a4\u30fc\u30f3\u554f\u984c\uff1a\\(n imes n\\) \u306e\u30c1\u30a7\u30b9\u76e4\u306b \\(n\\) \u500b\u306e\u30af\u30a4\u30fc\u30f3\u3092\u914d\u7f6e\u3057\u3001\u4e92\u3044\u306b\u653b\u6483\u3057\u306a\u3044\u3088\u3046\u306b\u3059\u308b\u3002</li> <li>\u6570\u72ec\uff1a\\(9 imes 9\\) \u306e\u30b0\u30ea\u30c3\u30c9\u306b\u6570\u5b57 \\(1\\) ~ \\(9\\) \u3092\u5165\u529b\u3057\u3001\u5404\u884c\u3001\u5217\u3001\\(3 imes 3\\) \u306e\u30b5\u30d6\u30b0\u30ea\u30c3\u30c9\u306b\u91cd\u8907\u304c\u306a\u3044\u3088\u3046\u306b\u3059\u308b\u3002</li> <li>\u30b0\u30e9\u30d5\u5f69\u8272\u554f\u984c\uff1a\u4e0e\u3048\u3089\u308c\u305f\u7121\u5411\u30b0\u30e9\u30d5\u306b\u5bfe\u3057\u3001\u96a3\u63a5\u9802\u70b9\u304c\u7570\u306a\u308b\u8272\u306b\u306a\u308b\u3088\u3046\u306b\u6700\u5c0f\u9650\u306e\u8272\u3067\u5f69\u8272\u3059\u308b\u3002</li> </ul> <p>\u7d44\u5408\u305b\u6700\u9069\u5316\u554f\u984c\uff1a\u3053\u306e\u7a2e\u306e\u554f\u984c\u306e\u76ee\u6a19\u306f\u3001\u7d44\u5408\u305b\u7a7a\u9593\u5185\u3067\u7279\u5b9a\u306e\u6761\u4ef6\u3092\u6e80\u305f\u3059\u6700\u9069\u89e3\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u3067\u3059\u3002</p> <ul> <li>0-1 \u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\uff1a\u4e0e\u3048\u3089\u308c\u305f\u7269\u54c1\u7fa4\u3068\u30d0\u30c3\u30af\u30d1\u30c3\u30af\u304c\u3042\u308a\u3001\u5404\u7269\u54c1\u306b\u306f\u4fa1\u5024\u3068\u91cd\u3055\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3002\u30d0\u30c3\u30af\u30d1\u30c3\u30af\u306e\u5bb9\u91cf\u5236\u9650\u5185\u3067\u3001\u7dcf\u4fa1\u5024\u3092\u6700\u5927\u5316\u3059\u308b\u7269\u54c1\u306e\u9078\u629e\u3092\u6c42\u3081\u308b\u3002</li> <li>\u65c5\u884c\u30bb\u30fc\u30eb\u30b9\u30de\u30f3\u554f\u984c\uff1a\u30b0\u30e9\u30d5\u4e0a\u3067\u30011 \u3064\u306e\u70b9\u304b\u3089\u51fa\u767a\u3057\u3001\u3059\u3079\u3066\u306e\u4ed6\u306e\u70b9\u3092 1 \u56de\u305a\u3064\u8a2a\u554f\u3057\u3066\u51fa\u767a\u70b9\u306b\u623b\u308b\u6700\u77ed\u7d4c\u8def\u3092\u6c42\u3081\u308b\u3002</li> <li>\u6700\u5927\u30af\u30ea\u30fc\u30af\u554f\u984c\uff1a\u4e0e\u3048\u3089\u308c\u305f\u7121\u5411\u30b0\u30e9\u30d5\u306e\u4e2d\u3067\u3001\u4efb\u610f\u306e 2 \u9802\u70b9\u9593\u306b\u8fba\u304c\u5b58\u5728\u3059\u308b\u6700\u5927\u306e\u5b8c\u5168\u90e8\u5206\u30b0\u30e9\u30d5\u3092\u898b\u3064\u3051\u308b\u3002</li> </ul> <p>\u6ce8\u610f\u3059\u3079\u304d\u306f\u3001\u591a\u304f\u306e\u7d44\u5408\u305b\u6700\u9069\u5316\u554f\u984c\u306b\u5bfe\u3057\u3066\u3001\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u304c\u6700\u9069\u89e3\u6cd5\u3067\u306f\u306a\u3044\u3068\u3044\u3046\u3053\u3068\u3067\u3059\u3002</p> <ul> <li>0-1 \u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u306f\u3001\u6642\u9593\u52b9\u7387\u3092\u9ad8\u3081\u308b\u305f\u3081\u306b\u52d5\u7684\u8a08\u753b\u6cd5\u304c\u3088\u304f\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002</li> <li>\u65c5\u884c\u30bb\u30fc\u30eb\u30b9\u30de\u30f3\u554f\u984c\u306f\u6709\u540d\u306a NP-Hard \u554f\u984c\u3067\u3042\u308a\u3001\u907a\u4f1d\u7684\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3084\u30a2\u30f3\u30c8\u30b3\u30ed\u30cb\u30fc\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306a\u3069\u306e\u624b\u6cd5\u304c\u3088\u304f\u4f7f\u308f\u308c\u307e\u3059\u3002</li> <li>\u6700\u5927\u30af\u30ea\u30fc\u30af\u554f\u984c\u306f\u30b0\u30e9\u30d5\u7406\u8ad6\u306e\u53e4\u5178\u7684\u306a\u554f\u984c\u3067\u3042\u308a\u3001\u8caa\u6b32\u6cd5\u306a\u3069\u306e\u30d2\u30e5\u30fc\u30ea\u30b9\u30c6\u30a3\u30c3\u30af\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u89e3\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_backtracking/n_queens_problem/","title":"13.4 \u00a0 N\u30af\u30a4\u30fc\u30f3\u554f\u984c","text":"<p>Question</p> <p>\u30c1\u30a7\u30b9\u306e\u30eb\u30fc\u30eb\u306b\u3088\u308b\u3068\u3001\u30af\u30a4\u30fc\u30f3\u306f\u540c\u3058\u884c\u3001\u5217\u3001\u307e\u305f\u306f\u5bfe\u89d2\u7dda\u4e0a\u306e\u99d2\u3092\u653b\u6483\u3067\u304d\u307e\u3059\u3002\\(n\\) \u500b\u306e\u30af\u30a4\u30fc\u30f3\u3068 \\(n \\times n\\) \u306e\u30c1\u30a7\u30b9\u30dc\u30fc\u30c9\u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u30012\u3064\u306e\u30af\u30a4\u30fc\u30f3\u304c\u4e92\u3044\u306b\u653b\u6483\u3067\u304d\u306a\u3044\u914d\u7f6e\u3092\u898b\u3064\u3051\u3066\u304f\u3060\u3055\u3044\u3002</p> <p>\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\\(n = 4\\) \u306e\u5834\u5408\u30012\u3064\u306e\u89e3\u304c\u3042\u308a\u307e\u3059\u3002\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u89b3\u70b9\u304b\u3089\u3001\\(n \\times n\\) \u306e\u30c1\u30a7\u30b9\u30dc\u30fc\u30c9\u306b\u306f \\(n^2\\) \u500b\u306e\u30de\u30b9\u304c\u3042\u308a\u3001\u3059\u3079\u3066\u306e\u53ef\u80fd\u306a\u9078\u629e\u80a2 <code>choices</code> \u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u30c1\u30a7\u30b9\u30dc\u30fc\u30c9\u306e\u72b6\u614b <code>state</code> \u306f\u3001\u5404\u30af\u30a4\u30fc\u30f3\u304c\u914d\u7f6e\u3055\u308c\u308b\u306b\u3064\u308c\u3066\u7d99\u7d9a\u7684\u306b\u5909\u5316\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 13-15 \u00a0 4\u30af\u30a4\u30fc\u30f3\u554f\u984c\u306e\u89e3 </p> <p>\u4ee5\u4e0b\u306e\u56f3\u306f\u3001\u3053\u306e\u554f\u984c\u306e3\u3064\u306e\u5236\u7d04\u3092\u793a\u3057\u3066\u3044\u307e\u3059\uff1a\u8907\u6570\u306e\u30af\u30a4\u30fc\u30f3\u306f\u540c\u3058\u884c\u3001\u5217\u3001\u307e\u305f\u306f\u5bfe\u89d2\u7dda\u3092\u5360\u6709\u3067\u304d\u307e\u305b\u3093\u3002\u5bfe\u89d2\u7dda\u306f\u4e3b\u5bfe\u89d2\u7dda <code>\\</code> \u3068\u526f\u5bfe\u89d2\u7dda <code>/</code> \u306b\u5206\u304b\u308c\u308b\u3053\u3068\u306b\u6ce8\u610f\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002</p> <p></p> <p> \u56f3 13-16 \u00a0 N\u30af\u30a4\u30fc\u30f3\u554f\u984c\u306e\u5236\u7d04 </p>"},{"location":"chapter_backtracking/n_queens_problem/#1","title":"1. \u00a0 \u884c\u3054\u3068\u306e\u914d\u7f6e\u6226\u7565","text":"<p>\u30af\u30a4\u30fc\u30f3\u306e\u6570\u304c\u30c1\u30a7\u30b9\u30dc\u30fc\u30c9\u306e\u884c\u6570\u3068\u7b49\u3057\u304f\u3001\u3069\u3061\u3089\u3082 \\(n\\) \u3067\u3042\u308b\u305f\u3081\u3001**\u30c1\u30a7\u30b9\u30dc\u30fc\u30c9\u306e\u5404\u884c\u306b\u306f1\u3064\u306e\u30af\u30a4\u30fc\u30f3\u306e\u307f\u304c\u914d\u7f6e\u3067\u304d\u308b\u3053\u3068\u304c**\u5bb9\u6613\u306b\u7d50\u8ad6\u4ed8\u3051\u3089\u308c\u307e\u3059\u3002</p> <p>\u3053\u308c\u306f\u3001\u884c\u3054\u3068\u306e\u914d\u7f6e\u6226\u7565\u3092\u63a1\u7528\u3067\u304d\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\uff1a\u6700\u521d\u306e\u884c\u304b\u3089\u958b\u59cb\u3057\u3066\u3001\u6700\u5f8c\u306e\u884c\u306b\u5230\u9054\u3059\u308b\u307e\u3067\u884c\u3054\u3068\u306b1\u3064\u306e\u30af\u30a4\u30fc\u30f3\u3092\u914d\u7f6e\u3057\u307e\u3059\u3002</p> <p>\u4ee5\u4e0b\u306e\u56f3\u306f\u30014\u30af\u30a4\u30fc\u30f3\u554f\u984c\u306e\u884c\u3054\u3068\u306e\u914d\u7f6e\u30d7\u30ed\u30bb\u30b9\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u30b9\u30da\u30fc\u30b9\u306e\u5236\u9650\u306b\u3088\u308a\u3001\u56f3\u306f\u6700\u521d\u306e\u884c\u306e1\u3064\u306e\u691c\u7d22\u5206\u5c90\u306e\u307f\u3092\u5c55\u958b\u3057\u3001\u5217\u3068\u5bfe\u89d2\u7dda\u306e\u5236\u7d04\u3092\u6e80\u305f\u3055\u306a\u3044\u914d\u7f6e\u3092\u526a\u5b9a\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 13-17 \u00a0 \u884c\u3054\u3068\u306e\u914d\u7f6e\u6226\u7565 </p> <p>\u672c\u8cea\u7684\u306b\u3001\u884c\u3054\u3068\u306e\u914d\u7f6e\u6226\u7565\u306f\u526a\u5b9a\u95a2\u6570\u3068\u3057\u3066\u6a5f\u80fd\u3057\u3001\u540c\u3058\u884c\u306b\u8907\u6570\u306e\u30af\u30a4\u30fc\u30f3\u3092\u914d\u7f6e\u3059\u308b\u3059\u3079\u3066\u306e\u691c\u7d22\u5206\u5c90\u3092\u9664\u53bb\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_backtracking/n_queens_problem/#2","title":"2. \u00a0 \u5217\u3068\u5bfe\u89d2\u7dda\u306e\u526a\u5b9a","text":"<p>\u5217\u306e\u5236\u7d04\u3092\u6e80\u305f\u3059\u305f\u3081\u306b\u3001\u9577\u3055 \\(n\\) \u306e\u30d6\u30fc\u30eb\u914d\u5217 <code>cols</code> \u3092\u4f7f\u7528\u3057\u3066\u3001\u5404\u5217\u306b\u30af\u30a4\u30fc\u30f3\u304c\u5360\u6709\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u8ffd\u8de1\u3067\u304d\u307e\u3059\u3002\u5404\u914d\u7f6e\u6c7a\u5b9a\u306e\u524d\u306b\u3001<code>cols</code> \u3092\u4f7f\u7528\u3057\u3066\u3059\u3067\u306b\u30af\u30a4\u30fc\u30f3\u304c\u3042\u308b\u5217\u3092\u526a\u5b9a\u3057\u3001\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u4e2d\u306b\u52d5\u7684\u306b\u66f4\u65b0\u3055\u308c\u307e\u3059\u3002</p> <p>Tip</p> <p>\u884c\u5217\u306e\u539f\u70b9\u306f\u5de6\u4e0a\u9685\u306b\u3042\u308a\u3001\u884c\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306f\u4e0a\u304b\u3089\u4e0b\u306b\u5897\u52a0\u3057\u3001\u5217\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306f\u5de6\u304b\u3089\u53f3\u306b\u5897\u52a0\u3059\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <p>\u5bfe\u89d2\u7dda\u306e\u5236\u7d04\u306f\u3069\u3046\u3067\u3057\u3087\u3046\u304b\uff1f\u30c1\u30a7\u30b9\u30dc\u30fc\u30c9\u4e0a\u306e\u7279\u5b9a\u306e\u30bb\u30eb\u306e\u884c\u3068\u5217\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092 \\((row, col)\\) \u3068\u3057\u307e\u3059\u3002\u7279\u5b9a\u306e\u4e3b\u5bfe\u89d2\u7dda\u3092\u9078\u629e\u3059\u308b\u3053\u3068\u3067\u3001\u305d\u306e\u5bfe\u89d2\u7dda\u4e0a\u306e\u3059\u3079\u3066\u306e\u30bb\u30eb\u3067\u5dee \\(row - col\\) \u304c\u540c\u3058\u3067\u3042\u308b\u3053\u3068\u306b\u6c17\u4ed8\u304d\u307e\u3059\u3002\u3064\u307e\u308a\u3001\\(row - col\\) \u306f\u4e3b\u5bfe\u89d2\u7dda\u4e0a\u3067\u5b9a\u6570\u5024\u3067\u3059\u3002</p> <p>\u8a00\u3044\u63db\u3048\u308b\u3068\u30012\u3064\u306e\u30bb\u30eb\u304c \\(row_1 - col_1 = row_2 - col_2\\) \u3092\u6e80\u305f\u3059\u5834\u5408\u3001\u305d\u308c\u3089\u306f\u78ba\u5b9f\u306b\u540c\u3058\u4e3b\u5bfe\u89d2\u7dda\u4e0a\u306b\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u30d1\u30bf\u30fc\u30f3\u3092\u4f7f\u7528\u3057\u3066\u3001\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3059\u914d\u5217 <code>diags1</code> \u3092\u5229\u7528\u3057\u3066\u3001\u30af\u30a4\u30fc\u30f3\u304c\u4e3b\u5bfe\u89d2\u7dda\u4e0a\u306b\u3042\u308b\u304b\u3069\u3046\u304b\u3092\u8ffd\u8de1\u3067\u304d\u307e\u3059\u3002</p> <p>\u540c\u69d8\u306b\u3001\\(row + col\\) \u306e\u548c\u306f\u526f\u5bfe\u89d2\u7dda\u4e0a\u306e\u3059\u3079\u3066\u306e\u30bb\u30eb\u3067\u5b9a\u6570\u5024\u3067\u3059\u3002\u914d\u5217 <code>diags2</code> \u3092\u4f7f\u7528\u3057\u3066\u526f\u5bfe\u89d2\u7dda\u306e\u5236\u7d04\u3082\u51e6\u7406\u3067\u304d\u307e\u3059\u3002</p> <p></p> <p> \u56f3 13-18 \u00a0 \u5217\u3068\u5bfe\u89d2\u7dda\u306e\u5236\u7d04\u306e\u51e6\u7406 </p>"},{"location":"chapter_backtracking/n_queens_problem/#3","title":"3. \u00a0 \u30b3\u30fc\u30c9\u5b9f\u88c5","text":"<p>\\(n\\) \u6b21\u5143\u306e\u6b63\u65b9\u884c\u5217\u3067\u306f\u3001\\(row - col\\) \u306e\u7bc4\u56f2\u306f \\([-n + 1, n - 1]\\) \u3067\u3001\\(row + col\\) \u306e\u7bc4\u56f2\u306f \\([0, 2n - 2]\\) \u3067\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u4e3b\u5bfe\u89d2\u7dda\u3068\u526f\u5bfe\u89d2\u7dda\u306e\u6570\u306f\u3069\u3061\u3089\u3082 \\(2n - 1\\) \u3067\u3001\u914d\u5217 <code>diags1</code> \u3068 <code>diags2</code> \u306e\u9577\u3055\u306f \\(2n - 1\\) \u3067\u3059\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby n_queens.py<pre><code>def backtrack(\n row: int,\n n: int,\n state: list[list[str]],\n res: list[list[list[str]]],\n cols: list[bool],\n diags1: list[bool],\n diags2: list[bool],\n):\n \"\"\"\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff1an \u30af\u30a4\u30fc\u30f3\"\"\"\n # \u3059\u3079\u3066\u306e\u884c\u304c\u914d\u7f6e\u3055\u308c\u305f\u3089\u3001\u89e3\u3092\u8a18\u9332\n if row == n:\n res.append([list(row) for row in state])\n return\n # \u3059\u3079\u3066\u306e\u5217\u3092\u8d70\u67fb\n for col in range(n):\n # \u30bb\u30eb\u306b\u5bfe\u5fdc\u3059\u308b\u4e3b\u5bfe\u89d2\u7dda\u3068\u526f\u5bfe\u89d2\u7dda\u3092\u8a08\u7b97\n diag1 = row - col + n - 1\n diag2 = row + col\n # \u679d\u5208\u308a\uff1a\u30bb\u30eb\u306e\u5217\u3001\u4e3b\u5bfe\u89d2\u7dda\u3001\u526f\u5bfe\u89d2\u7dda\u306b\u30af\u30a4\u30fc\u30f3\u3092\u914d\u7f6e\u3057\u306a\u3044\n if not cols[col] and not diags1[diag1] and not diags2[diag2]:\n # \u8a66\u884c\uff1a\u30bb\u30eb\u306b\u30af\u30a4\u30fc\u30f3\u3092\u914d\u7f6e\n state[row][col] = \"Q\"\n cols[col] = diags1[diag1] = diags2[diag2] = True\n # \u6b21\u306e\u884c\u3092\u914d\u7f6e\n backtrack(row + 1, n, state, res, cols, diags1, diags2)\n # \u64a4\u56de\uff1a\u30bb\u30eb\u3092\u7a7a\u306e\u30b9\u30dd\u30c3\u30c8\u306b\u5fa9\u5143\n state[row][col] = \"#\"\n cols[col] = diags1[diag1] = diags2[diag2] = False\n\ndef n_queens(n: int) -&gt; list[list[list[str]]]:\n \"\"\"n \u30af\u30a4\u30fc\u30f3\u3092\u89e3\u304f\"\"\"\n # n*n \u30b5\u30a4\u30ba\u306e\u30c1\u30a7\u30b9\u30dc\u30fc\u30c9\u3092\u521d\u671f\u5316\u3001'Q' \u306f\u30af\u30a4\u30fc\u30f3\u3092\u8868\u3057\u3001'#' \u306f\u7a7a\u306e\u30b9\u30dd\u30c3\u30c8\u3092\u8868\u3059\n state = [[\"#\" for _ in range(n)] for _ in range(n)]\n cols = [False] * n # \u30af\u30a4\u30fc\u30f3\u304c\u3042\u308b\u5217\u3092\u8a18\u9332\n diags1 = [False] * (2 * n - 1) # \u30af\u30a4\u30fc\u30f3\u304c\u3042\u308b\u4e3b\u5bfe\u89d2\u7dda\u3092\u8a18\u9332\n diags2 = [False] * (2 * n - 1) # \u30af\u30a4\u30fc\u30f3\u304c\u3042\u308b\u526f\u5bfe\u89d2\u7dda\u3092\u8a18\u9332\n res = []\n backtrack(0, n, state, res, cols, diags1, diags2)\n\n return res\n</code></pre> n_queens.cpp<pre><code>/* \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff1an \u30af\u30a4\u30fc\u30f3 */\nvoid backtrack(int row, int n, vector&lt;vector&lt;string&gt;&gt; &amp;state, vector&lt;vector&lt;vector&lt;string&gt;&gt;&gt; &amp;res, vector&lt;bool&gt; &amp;cols,\n vector&lt;bool&gt; &amp;diags1, vector&lt;bool&gt; &amp;diags2) {\n // \u3059\u3079\u3066\u306e\u884c\u304c\u914d\u7f6e\u3055\u308c\u305f\u3089\u3001\u89e3\u3092\u8a18\u9332\n if (row == n) {\n res.push_back(state);\n return;\n }\n // \u3059\u3079\u3066\u306e\u5217\u3092\u8d70\u67fb\n for (int col = 0; col &lt; n; col++) {\n // \u30bb\u30eb\u306b\u5bfe\u5fdc\u3059\u308b\u4e3b\u5bfe\u89d2\u7dda\u3068\u526f\u5bfe\u89d2\u7dda\u3092\u8a08\u7b97\n int diag1 = row - col + n - 1;\n int diag2 = row + col;\n // \u526a\u5b9a\uff1a\u30bb\u30eb\u306e\u5217\u3001\u4e3b\u5bfe\u89d2\u7dda\u3001\u526f\u5bfe\u89d2\u7dda\u306b\u30af\u30a4\u30fc\u30f3\u3092\u914d\u7f6e\u3059\u308b\u3053\u3068\u3092\u8a31\u53ef\u3057\u306a\u3044\n if (!cols[col] &amp;&amp; !diags1[diag1] &amp;&amp; !diags2[diag2]) {\n // \u8a66\u884c\uff1a\u30bb\u30eb\u306b\u30af\u30a4\u30fc\u30f3\u3092\u914d\u7f6e\n state[row][col] = \"Q\";\n cols[col] = diags1[diag1] = diags2[diag2] = true;\n // \u6b21\u306e\u884c\u3092\u914d\u7f6e\n backtrack(row + 1, n, state, res, cols, diags1, diags2);\n // \u56de\u9000\uff1a\u30bb\u30eb\u3092\u7a7a\u306e\u30b9\u30dd\u30c3\u30c8\u306b\u5fa9\u5143\n state[row][col] = \"#\";\n cols[col] = diags1[diag1] = diags2[diag2] = false;\n }\n }\n}\n\n/* n \u30af\u30a4\u30fc\u30f3\u3092\u89e3\u304f */\nvector&lt;vector&lt;vector&lt;string&gt;&gt;&gt; nQueens(int n) {\n // n*n \u30b5\u30a4\u30ba\u306e\u30c1\u30a7\u30b9\u30dc\u30fc\u30c9\u3092\u521d\u671f\u5316\u3001'Q' \u306f\u30af\u30a4\u30fc\u30f3\u3092\u8868\u3057\u3001'#' \u306f\u7a7a\u306e\u30b9\u30dd\u30c3\u30c8\u3092\u8868\u3059\n vector&lt;vector&lt;string&gt;&gt; state(n, vector&lt;string&gt;(n, \"#\"));\n vector&lt;bool&gt; cols(n, false); // \u30af\u30a4\u30fc\u30f3\u306e\u3042\u308b\u5217\u3092\u8a18\u9332\n vector&lt;bool&gt; diags1(2 * n - 1, false); // \u30af\u30a4\u30fc\u30f3\u306e\u3042\u308b\u4e3b\u5bfe\u89d2\u7dda\u3092\u8a18\u9332\n vector&lt;bool&gt; diags2(2 * n - 1, false); // \u30af\u30a4\u30fc\u30f3\u306e\u3042\u308b\u526f\u5bfe\u89d2\u7dda\u3092\u8a18\u9332\n vector&lt;vector&lt;vector&lt;string&gt;&gt;&gt; res;\n\n backtrack(0, n, state, res, cols, diags1, diags2);\n\n return res;\n}\n</code></pre> n_queens.java<pre><code>/* \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff1an \u30af\u30a4\u30fc\u30f3 */\nvoid backtrack(int row, int n, List&lt;List&lt;String&gt;&gt; state, List&lt;List&lt;List&lt;String&gt;&gt;&gt; res,\n boolean[] cols, boolean[] diags1, boolean[] diags2) {\n // \u3059\u3079\u3066\u306e\u884c\u304c\u914d\u7f6e\u3055\u308c\u305f\u3089\u3001\u89e3\u3092\u8a18\u9332\n if (row == n) {\n List&lt;List&lt;String&gt;&gt; copyState = new ArrayList&lt;&gt;();\n for (List&lt;String&gt; sRow : state) {\n copyState.add(new ArrayList&lt;&gt;(sRow));\n }\n res.add(copyState);\n return;\n }\n // \u3059\u3079\u3066\u306e\u5217\u3092\u8d70\u67fb\n for (int col = 0; col &lt; n; col++) {\n // \u30bb\u30eb\u306b\u5bfe\u5fdc\u3059\u308b\u4e3b\u5bfe\u89d2\u7dda\u3068\u526f\u5bfe\u89d2\u7dda\u3092\u8a08\u7b97\n int diag1 = row - col + n - 1;\n int diag2 = row + col;\n // \u526a\u5b9a\uff1a\u30bb\u30eb\u306e\u5217\u3001\u4e3b\u5bfe\u89d2\u7dda\u3001\u526f\u5bfe\u89d2\u7dda\u306b\u30af\u30a4\u30fc\u30f3\u3092\u914d\u7f6e\u3059\u308b\u3053\u3068\u3092\u8a31\u53ef\u3057\u306a\u3044\n if (!cols[col] &amp;&amp; !diags1[diag1] &amp;&amp; !diags2[diag2]) {\n // \u8a66\u884c\uff1a\u30bb\u30eb\u306b\u30af\u30a4\u30fc\u30f3\u3092\u914d\u7f6e\n state.get(row).set(col, \"Q\");\n cols[col] = diags1[diag1] = diags2[diag2] = true;\n // \u6b21\u306e\u884c\u3092\u914d\u7f6e\n backtrack(row + 1, n, state, res, cols, diags1, diags2);\n // \u56de\u9000\uff1a\u30bb\u30eb\u3092\u7a7a\u306e\u30b9\u30dd\u30c3\u30c8\u306b\u5fa9\u5143\n state.get(row).set(col, \"#\");\n cols[col] = diags1[diag1] = diags2[diag2] = false;\n }\n }\n}\n\n/* n \u30af\u30a4\u30fc\u30f3\u3092\u89e3\u304f */\nList&lt;List&lt;List&lt;String&gt;&gt;&gt; nQueens(int n) {\n // n*n \u30b5\u30a4\u30ba\u306e\u30c1\u30a7\u30b9\u30dc\u30fc\u30c9\u3092\u521d\u671f\u5316\u3001'Q' \u306f\u30af\u30a4\u30fc\u30f3\u3092\u8868\u3057\u3001'#' \u306f\u7a7a\u306e\u30b9\u30dd\u30c3\u30c8\u3092\u8868\u3059\n List&lt;List&lt;String&gt;&gt; state = new ArrayList&lt;&gt;();\n for (int i = 0; i &lt; n; i++) {\n List&lt;String&gt; row = new ArrayList&lt;&gt;();\n for (int j = 0; j &lt; n; j++) {\n row.add(\"#\");\n }\n state.add(row);\n }\n boolean[] cols = new boolean[n]; // \u30af\u30a4\u30fc\u30f3\u306e\u3042\u308b\u5217\u3092\u8a18\u9332\n boolean[] diags1 = new boolean[2 * n - 1]; // \u30af\u30a4\u30fc\u30f3\u306e\u3042\u308b\u4e3b\u5bfe\u89d2\u7dda\u3092\u8a18\u9332\n boolean[] diags2 = new boolean[2 * n - 1]; // \u30af\u30a4\u30fc\u30f3\u306e\u3042\u308b\u526f\u5bfe\u89d2\u7dda\u3092\u8a18\u9332\n List&lt;List&lt;List&lt;String&gt;&gt;&gt; res = new ArrayList&lt;&gt;();\n\n backtrack(0, n, state, res, cols, diags1, diags2);\n\n return res;\n}\n</code></pre> n_queens.cs<pre><code>[class]{n_queens}-[func]{Backtrack}\n\n[class]{n_queens}-[func]{NQueens}\n</code></pre> n_queens.go<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{nQueens}\n</code></pre> n_queens.swift<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{nQueens}\n</code></pre> n_queens.js<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{nQueens}\n</code></pre> n_queens.ts<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{nQueens}\n</code></pre> n_queens.dart<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{nQueens}\n</code></pre> n_queens.rs<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{n_queens}\n</code></pre> n_queens.c<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{nQueens}\n</code></pre> n_queens.kt<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{nQueens}\n</code></pre> n_queens.rb<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{n_queens}\n</code></pre> <p>\\(n\\) \u500b\u306e\u30af\u30a4\u30fc\u30f3\u3092\u884c\u3054\u3068\u306b\u914d\u7f6e\u3057\u3001\u5217\u306e\u5236\u7d04\u3092\u8003\u616e\u3057\u3066\u3001\u6700\u521d\u306e\u884c\u304b\u3089\u6700\u5f8c\u306e\u884c\u307e\u3067\u3001\\(n\\)\u3001\\(n-1\\)\u3001\\(\\dots\\)\u3001\\(2\\)\u3001\\(1\\) \u306e\u9078\u629e\u80a2\u304c\u3042\u308a\u3001\\(O(n!)\\) \u6642\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u89e3\u3092\u8a18\u9332\u3059\u308b\u969b\u3001\u884c\u5217 <code>state</code> \u3092\u30b3\u30d4\u30fc\u3057\u3066 <code>res</code> \u306b\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u30b3\u30d4\u30fc\u64cd\u4f5c\u306f \\(O(n^2)\\) \u6642\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u5168\u4f53\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(n! \\cdot n^2)\\) \u3067\u3059\u3002\u5b9f\u969b\u306b\u306f\u3001\u5bfe\u89d2\u7dda\u5236\u7d04\u306b\u57fa\u3065\u304f\u526a\u5b9a\u306b\u3088\u308a\u691c\u7d22\u7a7a\u9593\u3092\u5927\u5e45\u306b\u524a\u6e1b\u3067\u304d\u308b\u305f\u3081\u3001\u591a\u304f\u306e\u5834\u5408\u3001\u691c\u7d22\u52b9\u7387\u306f\u4e0a\u8a18\u306e\u6642\u9593\u8a08\u7b97\u91cf\u3088\u308a\u3082\u512a\u308c\u3066\u3044\u307e\u3059\u3002</p> <p>\u914d\u5217 <code>state</code> \u306f \\(O(n^2)\\) \u7a7a\u9593\u3092\u4f7f\u7528\u3057\u3001\u914d\u5217 <code>cols</code>\u3001<code>diags1</code>\u3001<code>diags2</code> \u306f\u305d\u308c\u305e\u308c \\(O(n)\\) \u7a7a\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u6700\u5927\u518d\u5e30\u6df1\u5ea6\u306f \\(n\\) \u3067\u3001\\(O(n)\\) \u306e\u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u7a7a\u9593\u8a08\u7b97\u91cf\u306f \\(O(n^2)\\) \u3067\u3059\u3002</p>"},{"location":"chapter_backtracking/permutations_problem/","title":"13.2 \u00a0 \u9806\u5217\u554f\u984c","text":"<p>\u9806\u5217\u554f\u984c\u306f\u3001\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5178\u578b\u7684\u306a\u5fdc\u7528\u3067\u3059\u3002\u3053\u308c\u306f\u3001\u914d\u5217\u3084\u6587\u5b57\u5217\u306a\u3069\u306e\u4e0e\u3048\u3089\u308c\u305f\u96c6\u5408\u304b\u3089\u8981\u7d20\u306e\u3059\u3079\u3066\u306e\u53ef\u80fd\u306a\u914d\u7f6e\uff08\u9806\u5217\uff09\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u3092\u542b\u307f\u307e\u3059\u3002</p> <p>\u4ee5\u4e0b\u306e\u8868\u306f\u3001\u5165\u529b\u914d\u5217\u3068\u305d\u306e\u5bfe\u5fdc\u3059\u308b\u9806\u5217\u3092\u542b\u3080\u3044\u304f\u3064\u304b\u306e\u4f8b\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002</p> <p> \u8868 13-2 \u00a0 \u9806\u5217\u306e\u4f8b </p> \u5165\u529b\u914d\u5217 \u9806\u5217 \\([1]\\) \\([1]\\) \\([1, 2]\\) \\([1, 2], [2, 1]\\) \\([1, 2, 3]\\) \\([1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]\\)"},{"location":"chapter_backtracking/permutations_problem/#1321","title":"13.2.1 \u00a0 \u91cd\u8907\u8981\u7d20\u304c\u306a\u3044\u5834\u5408","text":"<p>Question</p> <p>\u91cd\u8907\u8981\u7d20\u306e\u306a\u3044\u6574\u6570\u914d\u5217\u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u3001\u3059\u3079\u3066\u306e\u53ef\u80fd\u306a\u9806\u5217\u3092\u8fd4\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <p>\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u306e\u89b3\u70b9\u304b\u3089\u3001\u9806\u5217\u3092\u751f\u6210\u3059\u308b\u30d7\u30ed\u30bb\u30b9\u3092\u4e00\u9023\u306e\u9078\u629e\u3068\u3057\u3066\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u5165\u529b\u914d\u5217\u304c \\([1, 2, 3]\\) \u3060\u3068\u3057\u307e\u3059\u3002\u6700\u521d\u306b \\(1\\) \u3092\u9078\u629e\u3057\u3001\u6b21\u306b \\(3\\)\u3001\u6700\u5f8c\u306b \\(2\\) \u3092\u9078\u629e\u3059\u308b\u3068\u3001\u9806\u5217 \\([1, 3, 2]\\) \u304c\u5f97\u3089\u308c\u307e\u3059\u3002\u300c\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u300d\u306f\u524d\u306e\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3066\u3001\u4ee3\u66ff\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u63a2\u7d22\u3059\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002</p> <p>\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u306e\u89b3\u70b9\u304b\u3089\u3001\u5019\u88dc\u96c6\u5408 <code>choices</code> \u306f\u5165\u529b\u914d\u5217\u306e\u3059\u3079\u3066\u306e\u8981\u7d20\u3067\u69cb\u6210\u3055\u308c\u3001<code>state</code> \u306f\u3053\u308c\u307e\u3067\u306b\u9078\u629e\u3055\u308c\u305f\u8981\u7d20\u3092\u4fdd\u6301\u3057\u307e\u3059\u3002\u5404\u8981\u7d20\u306f\u4e00\u5ea6\u3060\u3051\u9078\u629e\u3067\u304d\u308b\u305f\u3081\u3001<code>state</code> \u306e\u3059\u3079\u3066\u306e\u8981\u7d20\u306f\u4e00\u610f\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u691c\u7d22\u30d7\u30ed\u30bb\u30b9\u3092\u518d\u5e30\u6728\u306b\u5c55\u958b\u3067\u304d\u307e\u3059\u3002\u5404\u30ce\u30fc\u30c9\u306f\u73fe\u5728\u306e <code>state</code> \u3092\u8868\u3057\u307e\u3059\u3002\u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u304b\u3089\u958b\u59cb\u3057\u3066\u30013\u56de\u306e\u9078\u629e\u306e\u5f8c\u3001\u8449\u30ce\u30fc\u30c9\u306b\u5230\u9054\u3057\u307e\u3059\u2014\u305d\u308c\u305e\u308c\u304c\u9806\u5217\u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 13-5 \u00a0 \u9806\u5217\u306e\u518d\u5e30\u6728 </p>"},{"location":"chapter_backtracking/permutations_problem/#1","title":"1. \u00a0 \u91cd\u8907\u9078\u629e\u306e\u526a\u5b9a","text":"<p>\u5404\u8981\u7d20\u304c\u4e00\u5ea6\u3060\u3051\u9078\u629e\u3055\u308c\u308b\u3053\u3068\u3092\u4fdd\u8a3c\u3059\u308b\u305f\u3081\u306b\u3001\u30d6\u30fc\u30eb\u914d\u5217 <code>selected</code> \u3092\u5c0e\u5165\u3057\u307e\u3059\u3002\u3053\u3053\u3067 <code>selected[i]</code> \u306f <code>choices[i]</code> \u304c\u9078\u629e\u3055\u308c\u305f\u304b\u3069\u3046\u304b\u3092\u793a\u3057\u307e\u3059\u3002\u6b21\u306b\u3001\u3053\u306e\u914d\u5217\u306b\u57fa\u3065\u3044\u3066\u526a\u5b9a\u30b9\u30c6\u30c3\u30d7\u3092\u5b9f\u884c\u3057\u307e\u3059\uff1a</p> <ul> <li><code>choice[i]</code> \u3092\u9078\u629e\u3057\u305f\u5f8c\u3001<code>selected[i]</code> \u3092 \\(\\text{True}\\) \u306b\u8a2d\u5b9a\u3057\u3066\u9078\u629e\u3055\u308c\u305f\u3068\u30de\u30fc\u30af\u3057\u307e\u3059\u3002</li> <li><code>choices</code> \u3092\u53cd\u5fa9\u51e6\u7406\u3059\u308b\u969b\u3001\u9078\u629e\u3055\u308c\u305f\u3068\u30de\u30fc\u30af\u3055\u308c\u305f\u3059\u3079\u3066\u306e\u8981\u7d20\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u307e\u3059\uff08\u3064\u307e\u308a\u3001\u305d\u308c\u3089\u306e\u5206\u5c90\u3092\u526a\u5b9a\u3057\u307e\u3059\uff09\u3002</li> </ul> <p>\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u6700\u521d\u306e\u30e9\u30a6\u30f3\u30c9\u30671\u3092\u9078\u629e\u3057\u30012\u756a\u76ee\u306e\u30e9\u30a6\u30f3\u30c9\u30673\u3092\u9078\u629e\u3057\u3001\u6700\u5f8c\u306e\u30e9\u30a6\u30f3\u30c9\u30672\u3092\u9078\u629e\u3059\u308b\u3068\u3057\u307e\u3059\u30022\u756a\u76ee\u306e\u30e9\u30a6\u30f3\u30c9\u3067\u8981\u7d201\u306e\u5206\u5c90\u3068\u30013\u756a\u76ee\u306e\u30e9\u30a6\u30f3\u30c9\u3067\u8981\u7d201\u30683\u306e\u5206\u5c90\u3092\u526a\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</p> <p></p> <p> \u56f3 13-6 \u00a0 \u9806\u5217\u306e\u526a\u5b9a\u4f8b </p> <p>\u56f3\u304b\u3089\u3001\u3053\u306e\u526a\u5b9a\u30d7\u30ed\u30bb\u30b9\u304c\u691c\u7d22\u7a7a\u9593\u3092 \\(O(n^n)\\) \u304b\u3089 \\(O(n!)\\) \u306b\u524a\u6e1b\u3059\u308b\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3059\u3002</p>"},{"location":"chapter_backtracking/permutations_problem/#2","title":"2. \u00a0 \u30b3\u30fc\u30c9\u5b9f\u88c5","text":"<p>\u3053\u306e\u7406\u89e3\u306b\u3088\u308a\u3001\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u30b3\u30fc\u30c9\u306e\u300c\u7a7a\u6b04\u3092\u57cb\u3081\u308b\u300d\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u5168\u4f53\u306e\u30b3\u30fc\u30c9\u3092\u7c21\u6f54\u306b\u4fdd\u3064\u305f\u3081\u3001\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u5404\u90e8\u5206\u3092\u500b\u5225\u306b\u5b9f\u88c5\u305b\u305a\u3001\u4ee3\u308f\u308a\u306b <code>backtrack()</code> \u95a2\u6570\u3067\u3059\u3079\u3066\u3092\u5c55\u958b\u3057\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby permutations_i.py<pre><code>def backtrack(\n state: list[int], choices: list[int], selected: list[bool], res: list[list[int]]\n):\n \"\"\"\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff1a\u9806\u5217 I\"\"\"\n # \u72b6\u614b\u306e\u9577\u3055\u304c\u8981\u7d20\u6570\u3068\u7b49\u3057\u3044\u3068\u304d\u3001\u89e3\u3092\u8a18\u9332\n if len(state) == len(choices):\n res.append(list(state))\n return\n # \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u8d70\u67fb\n for i, choice in enumerate(choices):\n # \u679d\u5208\u308a\uff1a\u8981\u7d20\u306e\u91cd\u8907\u9078\u629e\u3092\u8a31\u53ef\u3057\u306a\u3044\n if not selected[i]:\n # \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001\u72b6\u614b\u3092\u66f4\u65b0\n selected[i] = True\n state.append(choice)\n # \u6b21\u306e\u9078\u629e\u30e9\u30a6\u30f3\u30c9\u306b\u9032\u3080\n backtrack(state, choices, selected, res)\n # \u64a4\u56de\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u5fa9\u5143\n selected[i] = False\n state.pop()\n\ndef permutations_i(nums: list[int]) -&gt; list[list[int]]:\n \"\"\"\u9806\u5217 I\"\"\"\n res = []\n backtrack(state=[], choices=nums, selected=[False] * len(nums), res=res)\n return res\n</code></pre> permutations_i.cpp<pre><code>/* \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff1a\u9806\u5217 I */\nvoid backtrack(vector&lt;int&gt; &amp;state, const vector&lt;int&gt; &amp;choices, vector&lt;bool&gt; &amp;selected, vector&lt;vector&lt;int&gt;&gt; &amp;res) {\n // \u72b6\u614b\u306e\u9577\u3055\u304c\u8981\u7d20\u6570\u3068\u7b49\u3057\u304f\u306a\u3063\u305f\u3089\u3001\u89e3\u3092\u8a18\u9332\n if (state.size() == choices.size()) {\n res.push_back(state);\n return;\n }\n // \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u8d70\u67fb\n for (int i = 0; i &lt; choices.size(); i++) {\n int choice = choices[i];\n // \u526a\u5b9a\uff1a\u8981\u7d20\u306e\u91cd\u8907\u9078\u629e\u3092\u8a31\u53ef\u3057\u306a\u3044\n if (!selected[i]) {\n // \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001\u72b6\u614b\u3092\u66f4\u65b0\n selected[i] = true;\n state.push_back(choice);\n // \u6b21\u306e\u30e9\u30a6\u30f3\u30c9\u306e\u9078\u629e\u306b\u9032\u3080\n backtrack(state, choices, selected, res);\n // \u56de\u9000\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u5fa9\u5143\n selected[i] = false;\n state.pop_back();\n }\n }\n}\n\n/* \u9806\u5217 I */\nvector&lt;vector&lt;int&gt;&gt; permutationsI(vector&lt;int&gt; nums) {\n vector&lt;int&gt; state;\n vector&lt;bool&gt; selected(nums.size(), false);\n vector&lt;vector&lt;int&gt;&gt; res;\n backtrack(state, nums, selected, res);\n return res;\n}\n</code></pre> permutations_i.java<pre><code>/* \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff1a\u9806\u5217 I */\nvoid backtrack(List&lt;Integer&gt; state, int[] choices, boolean[] selected, List&lt;List&lt;Integer&gt;&gt; res) {\n // \u72b6\u614b\u306e\u9577\u3055\u304c\u8981\u7d20\u6570\u3068\u7b49\u3057\u304f\u306a\u3063\u305f\u3089\u3001\u89e3\u3092\u8a18\u9332\n if (state.size() == choices.length) {\n res.add(new ArrayList&lt;Integer&gt;(state));\n return;\n }\n // \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u8d70\u67fb\n for (int i = 0; i &lt; choices.length; i++) {\n int choice = choices[i];\n // \u526a\u5b9a\uff1a\u8981\u7d20\u306e\u91cd\u8907\u9078\u629e\u3092\u8a31\u53ef\u3057\u306a\u3044\n if (!selected[i]) {\n // \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001\u72b6\u614b\u3092\u66f4\u65b0\n selected[i] = true;\n state.add(choice);\n // \u6b21\u306e\u30e9\u30a6\u30f3\u30c9\u306e\u9078\u629e\u306b\u9032\u3080\n backtrack(state, choices, selected, res);\n // \u56de\u9000\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u5fa9\u5143\n selected[i] = false;\n state.remove(state.size() - 1);\n }\n }\n}\n\n/* \u9806\u5217 I */\nList&lt;List&lt;Integer&gt;&gt; permutationsI(int[] nums) {\n List&lt;List&lt;Integer&gt;&gt; res = new ArrayList&lt;List&lt;Integer&gt;&gt;();\n backtrack(new ArrayList&lt;Integer&gt;(), nums, new boolean[nums.length], res);\n return res;\n}\n</code></pre> permutations_i.cs<pre><code>[class]{permutations_i}-[func]{Backtrack}\n\n[class]{permutations_i}-[func]{PermutationsI}\n</code></pre> permutations_i.go<pre><code>[class]{}-[func]{backtrackI}\n\n[class]{}-[func]{permutationsI}\n</code></pre> permutations_i.swift<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{permutationsI}\n</code></pre> permutations_i.js<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{permutationsI}\n</code></pre> permutations_i.ts<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{permutationsI}\n</code></pre> permutations_i.dart<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{permutationsI}\n</code></pre> permutations_i.rs<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{permutations_i}\n</code></pre> permutations_i.c<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{permutationsI}\n</code></pre> permutations_i.kt<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{permutationsI}\n</code></pre> permutations_i.rb<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{permutations_i}\n</code></pre>"},{"location":"chapter_backtracking/permutations_problem/#1322","title":"13.2.2 \u00a0 \u91cd\u8907\u8981\u7d20\u3092\u8003\u616e\u3059\u308b\u5834\u5408","text":"<p>Question</p> <p>**\u91cd\u8907\u8981\u7d20\u3092\u542b\u3080\u53ef\u80fd\u6027\u306e\u3042\u308b**\u6574\u6570\u914d\u5217\u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u3001\u3059\u3079\u3066\u306e\u4e00\u610f\u306e\u9806\u5217\u3092\u8fd4\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <p>\u5165\u529b\u914d\u5217\u304c \\([1, 1, 2]\\) \u3060\u3068\u3057\u307e\u3059\u30022\u3064\u306e\u540c\u4e00\u8981\u7d20 \\(1\\) \u3092\u533a\u5225\u3059\u308b\u305f\u3081\u306b\u30012\u756a\u76ee\u3092 \\(\\hat{1}\\) \u3068\u30e9\u30d9\u30eb\u4ed8\u3051\u3057\u307e\u3059\u3002</p> <p>\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u3053\u306e\u65b9\u6cd5\u3067\u751f\u6210\u3055\u308c\u308b\u9806\u5217\u306e\u534a\u5206\u306f\u91cd\u8907\u3067\u3059\uff1a</p> <p></p> <p> \u56f3 13-7 \u00a0 \u91cd\u8907\u9806\u5217 </p> <p>\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u91cd\u8907\u9806\u5217\u3092\u3069\u306e\u3088\u3046\u306b\u9664\u53bb\u3067\u304d\u308b\u3067\u3057\u3087\u3046\u304b\uff1f\u4e00\u3064\u306e\u76f4\u63a5\u7684\u306a\u30a2\u30d7\u30ed\u30fc\u30c1\u306f\u3001\u3059\u3079\u3066\u306e\u9806\u5217\u3092\u751f\u6210\u3057\u305f\u5f8c\u306b\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3092\u4f7f\u7528\u3057\u3066\u91cd\u8907\u3092\u9664\u53bb\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u3057\u304b\u3057\u3001\u3053\u308c\u306f\u3042\u307e\u308a\u512a\u96c5\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u91cd\u8907\u3092\u751f\u6210\u3059\u308b\u5206\u5c90\u306f\u672c\u6765\u4e0d\u8981\u3067\u3042\u308a\u3001\u4e8b\u524d\u306b\u526a\u5b9a\u3055\u308c\u308b\u3079\u304d\u3060\u304b\u3089\u3067\u3059\u3001\u3053\u308c\u306b\u3088\u308a\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u52b9\u7387\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_backtracking/permutations_problem/#1_1","title":"1. \u00a0 \u7b49\u5024\u8981\u7d20\u306e\u526a\u5b9a","text":"<p>\u4ee5\u4e0b\u306e\u56f3\u3092\u898b\u308b\u3068\u3001\u6700\u521d\u306e\u30e9\u30a6\u30f3\u30c9\u3067 \\(1\\) \u307e\u305f\u306f \\(\\hat{1}\\) \u3092\u9078\u629e\u3059\u308b\u3068\u540c\u3058\u9806\u5217\u306b\u3064\u306a\u304c\u308b\u305f\u3081\u3001\\(\\hat{1}\\) \u3092\u526a\u5b9a\u3057\u307e\u3059\u3002</p> <p>\u540c\u69d8\u306b\u3001\u6700\u521d\u306e\u30e9\u30a6\u30f3\u30c9\u3067 \\(2\\) \u3092\u9078\u629e\u3057\u305f\u5f8c\u30012\u756a\u76ee\u306e\u30e9\u30a6\u30f3\u30c9\u3067 \\(1\\) \u307e\u305f\u306f \\(\\hat{1}\\) \u3092\u9078\u629e\u3057\u3066\u3082\u91cd\u8907\u5206\u5c90\u306b\u3064\u306a\u304c\u308b\u305f\u3081\u3001\u305d\u306e\u6642\u3082 \\(\\hat{1}\\) \u3092\u526a\u5b9a\u3057\u307e\u3059\u3002</p> <p>\u672c\u8cea\u7684\u306b\u3001\u79c1\u305f\u3061\u306e\u76ee\u6a19\u306f\u3001\u8907\u6570\u306e\u540c\u4e00\u8981\u7d20\u304c\u9078\u629e\u306e\u5404\u30e9\u30a6\u30f3\u30c9\u3067\u4e00\u5ea6\u3060\u3051\u9078\u629e\u3055\u308c\u308b\u3053\u3068\u3092\u4fdd\u8a3c\u3059\u308b\u3053\u3068\u3067\u3059\u3002</p> <p></p> <p> \u56f3 13-8 \u00a0 \u91cd\u8907\u9806\u5217\u306e\u526a\u5b9a </p>"},{"location":"chapter_backtracking/permutations_problem/#2_1","title":"2. \u00a0 \u30b3\u30fc\u30c9\u5b9f\u88c5","text":"<p>\u524d\u306e\u554f\u984c\u306e\u30b3\u30fc\u30c9\u306b\u57fa\u3065\u3044\u3066\u3001\u5404\u30e9\u30a6\u30f3\u30c9\u3067\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8 <code>duplicated</code> \u3092\u5c0e\u5165\u3057\u307e\u3059\u3002\u3053\u306e\u30bb\u30c3\u30c8\u306f\u3001\u3059\u3067\u306b\u8a66\u884c\u3057\u305f\u8981\u7d20\u3092\u8ffd\u8de1\u3057\u3001\u91cd\u8907\u3092\u526a\u5b9a\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby permutations_ii.py<pre><code>def backtrack(\n state: list[int], choices: list[int], selected: list[bool], res: list[list[int]]\n):\n \"\"\"\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff1a\u9806\u5217 II\"\"\"\n # \u72b6\u614b\u306e\u9577\u3055\u304c\u8981\u7d20\u6570\u3068\u7b49\u3057\u3044\u3068\u304d\u3001\u89e3\u3092\u8a18\u9332\n if len(state) == len(choices):\n res.append(list(state))\n return\n # \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u8d70\u67fb\n duplicated = set[int]()\n for i, choice in enumerate(choices):\n # \u679d\u5208\u308a\uff1a\u8981\u7d20\u306e\u91cd\u8907\u9078\u629e\u3092\u8a31\u53ef\u305b\u305a\u3001\u7b49\u3057\u3044\u8981\u7d20\u306e\u91cd\u8907\u9078\u629e\u3082\u8a31\u53ef\u3057\u306a\u3044\n if not selected[i] and choice not in duplicated:\n # \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001\u72b6\u614b\u3092\u66f4\u65b0\n duplicated.add(choice) # \u9078\u629e\u3055\u308c\u305f\u8981\u7d20\u5024\u3092\u8a18\u9332\n selected[i] = True\n state.append(choice)\n # \u6b21\u306e\u9078\u629e\u30e9\u30a6\u30f3\u30c9\u306b\u9032\u3080\n backtrack(state, choices, selected, res)\n # \u64a4\u56de\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u5fa9\u5143\n selected[i] = False\n state.pop()\n\ndef permutations_ii(nums: list[int]) -&gt; list[list[int]]:\n \"\"\"\u9806\u5217 II\"\"\"\n res = []\n backtrack(state=[], choices=nums, selected=[False] * len(nums), res=res)\n return res\n</code></pre> permutations_ii.cpp<pre><code>/* \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff1a\u9806\u5217 II */\nvoid backtrack(vector&lt;int&gt; &amp;state, const vector&lt;int&gt; &amp;choices, vector&lt;bool&gt; &amp;selected, vector&lt;vector&lt;int&gt;&gt; &amp;res) {\n // \u72b6\u614b\u306e\u9577\u3055\u304c\u8981\u7d20\u6570\u3068\u7b49\u3057\u304f\u306a\u3063\u305f\u3089\u3001\u89e3\u3092\u8a18\u9332\n if (state.size() == choices.size()) {\n res.push_back(state);\n return;\n }\n // \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u8d70\u67fb\n unordered_set&lt;int&gt; duplicated;\n for (int i = 0; i &lt; choices.size(); i++) {\n int choice = choices[i];\n // \u526a\u5b9a\uff1a\u8981\u7d20\u306e\u91cd\u8907\u9078\u629e\u3092\u8a31\u53ef\u305b\u305a\u3001\u7b49\u3057\u3044\u8981\u7d20\u306e\u91cd\u8907\u9078\u629e\u3082\u8a31\u53ef\u3057\u306a\u3044\n if (!selected[i] &amp;&amp; duplicated.find(choice) == duplicated.end()) {\n // \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001\u72b6\u614b\u3092\u66f4\u65b0\n duplicated.emplace(choice); // \u9078\u629e\u3055\u308c\u305f\u8981\u7d20\u5024\u3092\u8a18\u9332\n selected[i] = true;\n state.push_back(choice);\n // \u6b21\u306e\u30e9\u30a6\u30f3\u30c9\u306e\u9078\u629e\u306b\u9032\u3080\n backtrack(state, choices, selected, res);\n // \u56de\u9000\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u5fa9\u5143\n selected[i] = false;\n state.pop_back();\n }\n }\n}\n\n/* \u9806\u5217 II */\nvector&lt;vector&lt;int&gt;&gt; permutationsII(vector&lt;int&gt; nums) {\n vector&lt;int&gt; state;\n vector&lt;bool&gt; selected(nums.size(), false);\n vector&lt;vector&lt;int&gt;&gt; res;\n backtrack(state, nums, selected, res);\n return res;\n}\n</code></pre> permutations_ii.java<pre><code>/* \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff1a\u9806\u5217 II */\nvoid backtrack(List&lt;Integer&gt; state, int[] choices, boolean[] selected, List&lt;List&lt;Integer&gt;&gt; res) {\n // \u72b6\u614b\u306e\u9577\u3055\u304c\u8981\u7d20\u6570\u3068\u7b49\u3057\u304f\u306a\u3063\u305f\u3089\u3001\u89e3\u3092\u8a18\u9332\n if (state.size() == choices.length) {\n res.add(new ArrayList&lt;Integer&gt;(state));\n return;\n }\n // \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u8d70\u67fb\n Set&lt;Integer&gt; duplicated = new HashSet&lt;Integer&gt;();\n for (int i = 0; i &lt; choices.length; i++) {\n int choice = choices[i];\n // \u526a\u5b9a\uff1a\u8981\u7d20\u306e\u91cd\u8907\u9078\u629e\u3092\u8a31\u53ef\u305b\u305a\u3001\u7b49\u3057\u3044\u8981\u7d20\u306e\u91cd\u8907\u9078\u629e\u3082\u8a31\u53ef\u3057\u306a\u3044\n if (!selected[i] &amp;&amp; !duplicated.contains(choice)) {\n // \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001\u72b6\u614b\u3092\u66f4\u65b0\n duplicated.add(choice); // \u9078\u629e\u3055\u308c\u305f\u8981\u7d20\u5024\u3092\u8a18\u9332\n selected[i] = true;\n state.add(choice);\n // \u6b21\u306e\u30e9\u30a6\u30f3\u30c9\u306e\u9078\u629e\u306b\u9032\u3080\n backtrack(state, choices, selected, res);\n // \u56de\u9000\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u5fa9\u5143\n selected[i] = false;\n state.remove(state.size() - 1);\n }\n }\n}\n\n/* \u9806\u5217 II */\nList&lt;List&lt;Integer&gt;&gt; permutationsII(int[] nums) {\n List&lt;List&lt;Integer&gt;&gt; res = new ArrayList&lt;List&lt;Integer&gt;&gt;();\n backtrack(new ArrayList&lt;Integer&gt;(), nums, new boolean[nums.length], res);\n return res;\n}\n</code></pre> permutations_ii.cs<pre><code>[class]{permutations_ii}-[func]{Backtrack}\n\n[class]{permutations_ii}-[func]{PermutationsII}\n</code></pre> permutations_ii.go<pre><code>[class]{}-[func]{backtrackII}\n\n[class]{}-[func]{permutationsII}\n</code></pre> permutations_ii.swift<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{permutationsII}\n</code></pre> permutations_ii.js<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{permutationsII}\n</code></pre> permutations_ii.ts<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{permutationsII}\n</code></pre> permutations_ii.dart<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{permutationsII}\n</code></pre> permutations_ii.rs<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{permutations_ii}\n</code></pre> permutations_ii.c<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{permutationsII}\n</code></pre> permutations_ii.kt<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{permutationsII}\n</code></pre> permutations_ii.rb<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{permutations_ii}\n</code></pre> <p>\u3059\u3079\u3066\u306e\u8981\u7d20\u304c\u7570\u306a\u308b\u3068\u4eee\u5b9a\u3059\u308b\u3068\u3001\\(n\\) \u500b\u306e\u8981\u7d20\u306e\u9806\u5217\u306f \\(n!\\) \uff08\u968e\u4e57\uff09\u500b\u3042\u308a\u307e\u3059\u3002\u5404\u7d50\u679c\u3092\u8a18\u9332\u3059\u308b\u306b\u306f\u9577\u3055 \\(n\\) \u306e\u30ea\u30b9\u30c8\u3092\u30b3\u30d4\u30fc\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u3053\u308c\u306b\u306f \\(O(n)\\) \u6642\u9593\u304c\u304b\u304b\u308a\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u7dcf\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(n!n)\\) \u3067\u3059\u3002</p> <p>\u6700\u5927\u518d\u5e30\u6df1\u5ea6\u306f \\(n\\) \u3067\u3001\\(O(n)\\) \u306e\u30b9\u30bf\u30c3\u30af\u7a7a\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<code>selected</code> \u914d\u5217\u3082 \\(O(n)\\) \u7a7a\u9593\u304c\u5fc5\u8981\u3067\u3059\u3002\u4e00\u5ea6\u306b\u6700\u5927 \\(n\\) \u500b\u306e\u500b\u5225\u306e <code>duplicated</code> \u30bb\u30c3\u30c8\u304c\u5b58\u5728\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u305d\u308c\u3089\u306f\u96c6\u5408\u7684\u306b \\(O(n^2)\\) \u7a7a\u9593\u3092\u5360\u6709\u3057\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u7a7a\u9593\u8a08\u7b97\u91cf\u306f \\(O(n^2)\\) \u3067\u3059\u3002</p>"},{"location":"chapter_backtracking/permutations_problem/#3-2","title":"3. \u00a0 2\u3064\u306e\u526a\u5b9a\u65b9\u6cd5\u306e\u6bd4\u8f03","text":"<p><code>selected</code> \u3068 <code>duplicated</code> \u306f\u3069\u3061\u3089\u3082\u526a\u5b9a\u30e1\u30ab\u30cb\u30ba\u30e0\u3068\u3057\u3066\u6a5f\u80fd\u3057\u307e\u3059\u304c\u3001\u7570\u306a\u308b\u554f\u984c\u3092\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u3057\u3066\u3044\u307e\u3059\uff1a</p> <ul> <li>\u91cd\u8907\u9078\u629e\u306e\u526a\u5b9a\uff08<code>selected</code> \u7d4c\u7531\uff09\uff1a\u691c\u7d22\u5168\u4f53\u306b\u5358\u4e00\u306e <code>selected</code> \u914d\u5217\u304c\u3042\u308a\u3001\u73fe\u5728\u306e\u72b6\u614b\u306b\u3059\u3067\u306b\u3042\u308b\u8981\u7d20\u3092\u793a\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u540c\u3058\u8981\u7d20\u304c <code>state</code> \u306b\u8907\u6570\u56de\u73fe\u308c\u308b\u3053\u3068\u3092\u9632\u304e\u307e\u3059\u3002</li> <li>\u7b49\u5024\u8981\u7d20\u306e\u526a\u5b9a\uff08<code>duplicated</code> \u7d4c\u7531\uff09\uff1a<code>backtrack</code> \u95a2\u6570\u306e\u5404\u547c\u3073\u51fa\u3057\u306f\u72ec\u81ea\u306e <code>duplicated</code> \u30bb\u30c3\u30c8\u3092\u4f7f\u7528\u3057\u3001\u305d\u306e\u7279\u5b9a\u306e\u53cd\u5fa9\uff08<code>for</code> \u30eb\u30fc\u30d7\uff09\u3067\u3059\u3067\u306b\u9078\u629e\u3055\u308c\u305f\u8981\u7d20\u3092\u8a18\u9332\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u7b49\u3057\u3044\u8981\u7d20\u304c\u9078\u629e\u306e\u5404\u30e9\u30a6\u30f3\u30c9\u3067\u4e00\u5ea6\u3060\u3051\u9078\u629e\u3055\u308c\u308b\u3053\u3068\u3092\u4fdd\u8a3c\u3057\u307e\u3059\u3002</li> </ul> <p>\u4ee5\u4e0b\u306e\u56f3\u306f\u3001\u3053\u308c\u30892\u3064\u306e\u526a\u5b9a\u6226\u7565\u306e\u7bc4\u56f2\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u6728\u306e\u5404\u30ce\u30fc\u30c9\u306f\u9078\u629e\u3092\u8868\u3057\u307e\u3059\u3002\u30eb\u30fc\u30c8\u304b\u3089\u4efb\u610f\u306e\u8449\u3078\u306e\u7d4c\u8def\u306f\u30011\u3064\u306e\u5b8c\u5168\u306a\u9806\u5217\u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 13-9 \u00a0 2\u3064\u306e\u526a\u5b9a\u6761\u4ef6\u306e\u7bc4\u56f2 </p>"},{"location":"chapter_backtracking/subset_sum_problem/","title":"13.3 \u00a0 \u90e8\u5206\u96c6\u5408\u548c\u554f\u984c","text":""},{"location":"chapter_backtracking/subset_sum_problem/#1331","title":"13.3.1 \u00a0 \u91cd\u8907\u8981\u7d20\u304c\u306a\u3044\u5834\u5408","text":"<p>Question</p> <p>\u6b63\u306e\u6574\u6570\u306e\u914d\u5217 <code>nums</code> \u3068\u30bf\u30fc\u30b2\u30c3\u30c8\u6b63\u6574\u6570 <code>target</code> \u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u3001\u7d44\u307f\u5408\u308f\u305b\u5185\u306e\u8981\u7d20\u306e\u548c\u304c <code>target</code> \u306b\u7b49\u3057\u304f\u306a\u308b\u3088\u3046\u306a\u3059\u3079\u3066\u306e\u53ef\u80fd\u306a\u7d44\u307f\u5408\u308f\u305b\u3092\u898b\u3064\u3051\u3066\u304f\u3060\u3055\u3044\u3002\u4e0e\u3048\u3089\u308c\u305f\u914d\u5217\u306b\u306f\u91cd\u8907\u8981\u7d20\u304c\u306a\u304f\u3001\u5404\u8981\u7d20\u306f\u8907\u6570\u56de\u9078\u629e\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u7d44\u307f\u5408\u308f\u305b\u3092\u91cd\u8907\u3059\u308b\u7d44\u307f\u5408\u308f\u305b\u3092\u542b\u307e\u306a\u3044\u30ea\u30b9\u30c8\u3068\u3057\u3066\u8fd4\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <p>\u4f8b\u3048\u3070\u3001\u5165\u529b\u96c6\u5408 \\(\\{3, 4, 5\\}\\) \u3068\u30bf\u30fc\u30b2\u30c3\u30c8\u6574\u6570 \\(9\\) \u306e\u5834\u5408\u3001\u89e3\u306f \\(\\{3, 3, 3\\}, \\{4, 5\\}\\) \u3067\u3059\u3002\u4ee5\u4e0b\u306e2\u70b9\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <ul> <li>\u5165\u529b\u96c6\u5408\u306e\u8981\u7d20\u306f\u7121\u5236\u9650\u306b\u9078\u629e\u3067\u304d\u307e\u3059\u3002</li> <li>\u90e8\u5206\u96c6\u5408\u306f\u8981\u7d20\u306e\u9806\u5e8f\u3092\u533a\u5225\u3057\u307e\u305b\u3093\u3002\u4f8b\u3048\u3070 \\(\\{4, 5\\}\\) \u3068 \\(\\{5, 4\\}\\) \u306f\u540c\u3058\u90e8\u5206\u96c6\u5408\u3067\u3059\u3002</li> </ul>"},{"location":"chapter_backtracking/subset_sum_problem/#1","title":"1. \u00a0 \u9806\u5217\u89e3\u6cd5\u306e\u53c2\u8003","text":"<p>\u9806\u5217\u554f\u984c\u3068\u540c\u69d8\u306b\u3001\u90e8\u5206\u96c6\u5408\u306e\u751f\u6210\u3092\u4e00\u9023\u306e\u9078\u629e\u3068\u3057\u3066\u60f3\u50cf\u3067\u304d\u3001\u9078\u629e\u30d7\u30ed\u30bb\u30b9\u4e2d\u306b\u300c\u8981\u7d20\u548c\u300d\u3092\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u3067\u66f4\u65b0\u3067\u304d\u307e\u3059\u3002\u8981\u7d20\u548c\u304c <code>target</code> \u306b\u7b49\u3057\u304f\u306a\u3063\u305f\u3068\u304d\u3001\u90e8\u5206\u96c6\u5408\u3092\u7d50\u679c\u30ea\u30b9\u30c8\u306b\u8a18\u9332\u3057\u307e\u3059\u3002</p> <p>\u9806\u5217\u554f\u984c\u3068\u306f\u7570\u306a\u308a\u3001\u3053\u306e\u554f\u984c\u3067\u306f\u8981\u7d20\u306f\u7121\u5236\u9650\u306b\u9078\u629e\u3067\u304d\u308b\u305f\u3081\u3001\u8981\u7d20\u304c\u9078\u629e\u3055\u308c\u305f\u304b\u3069\u3046\u304b\u3092\u8a18\u9332\u3059\u308b\u305f\u3081\u306e <code>selected</code> \u30d6\u30fc\u30eb\u914d\u5217\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u305b\u3093\u3002\u9806\u5217\u30b3\u30fc\u30c9\u306b\u8efd\u5fae\u306a\u4fee\u6b63\u3092\u52a0\u3048\u3066\u3001\u6700\u521d\u306b\u554f\u984c\u3092\u89e3\u6c7a\u3067\u304d\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby subset_sum_i_naive.py<pre><code>def backtrack(\n state: list[int],\n target: int,\n total: int,\n choices: list[int],\n res: list[list[int]],\n):\n \"\"\"\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff1a\u90e8\u5206\u96c6\u5408\u306e\u548c I\"\"\"\n # \u90e8\u5206\u96c6\u5408\u306e\u548c\u304c target \u3068\u7b49\u3057\u3044\u3068\u304d\u3001\u89e3\u3092\u8a18\u9332\n if total == target:\n res.append(list(state))\n return\n # \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u8d70\u67fb\n for i in range(len(choices)):\n # \u679d\u5208\u308a\uff1a\u90e8\u5206\u96c6\u5408\u306e\u548c\u304c target \u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u305d\u306e\u9078\u629e\u3092\u30b9\u30ad\u30c3\u30d7\n if total + choices[i] &gt; target:\n continue\n # \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001\u8981\u7d20\u3068 total \u3092\u66f4\u65b0\n state.append(choices[i])\n # \u6b21\u306e\u9078\u629e\u30e9\u30a6\u30f3\u30c9\u306b\u9032\u3080\n backtrack(state, target, total + choices[i], choices, res)\n # \u64a4\u56de\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u5fa9\u5143\n state.pop()\n\ndef subset_sum_i_naive(nums: list[int], target: int) -&gt; list[list[int]]:\n \"\"\"\u90e8\u5206\u96c6\u5408\u306e\u548c I \u3092\u89e3\u304f\uff08\u91cd\u8907\u3059\u308b\u90e8\u5206\u96c6\u5408\u3092\u542b\u3080\uff09\"\"\"\n state = [] # \u72b6\u614b\uff08\u90e8\u5206\u96c6\u5408\uff09\n total = 0 # \u90e8\u5206\u96c6\u5408\u306e\u548c\n res = [] # \u7d50\u679c\u30ea\u30b9\u30c8\uff08\u90e8\u5206\u96c6\u5408\u30ea\u30b9\u30c8\uff09\n backtrack(state, target, total, nums, res)\n return res\n</code></pre> subset_sum_i_naive.cpp<pre><code>/* \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff1a\u90e8\u5206\u96c6\u5408\u548c I */\nvoid backtrack(vector&lt;int&gt; &amp;state, int target, int total, vector&lt;int&gt; &amp;choices, vector&lt;vector&lt;int&gt;&gt; &amp;res) {\n // \u90e8\u5206\u96c6\u5408\u306e\u548c\u304ctarget\u3068\u7b49\u3057\u3044\u3068\u304d\u3001\u89e3\u3092\u8a18\u9332\n if (total == target) {\n res.push_back(state);\n return;\n }\n // \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u8d70\u67fb\n for (int i = 0; i &lt; choices.size(); i++) {\n // \u526a\u5b9a\uff1a\u90e8\u5206\u96c6\u5408\u306e\u548c\u304ctarget\u3092\u8d85\u3048\u305f\u5834\u5408\u3001\u305d\u306e\u9078\u629e\u3092\u30b9\u30ad\u30c3\u30d7\n if (total + choices[i] &gt; target) {\n continue;\n }\n // \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001\u8981\u7d20\u3068total\u3092\u66f4\u65b0\n state.push_back(choices[i]);\n // \u6b21\u306e\u30e9\u30a6\u30f3\u30c9\u306e\u9078\u629e\u306b\u9032\u3080\n backtrack(state, target, total + choices[i], choices, res);\n // \u56de\u9000\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u5fa9\u5143\n state.pop_back();\n }\n}\n\n/* \u90e8\u5206\u96c6\u5408\u548c I \u3092\u89e3\u304f\uff08\u91cd\u8907\u3059\u308b\u90e8\u5206\u96c6\u5408\u3092\u542b\u3080\uff09 */\nvector&lt;vector&lt;int&gt;&gt; subsetSumINaive(vector&lt;int&gt; nums, int target) {\n vector&lt;int&gt; state; // \u72b6\u614b\uff08\u90e8\u5206\u96c6\u5408\uff09\n int total = 0; // \u90e8\u5206\u96c6\u5408\u306e\u548c\n vector&lt;vector&lt;int&gt;&gt; res; // \u7d50\u679c\u30ea\u30b9\u30c8\uff08\u90e8\u5206\u96c6\u5408\u30ea\u30b9\u30c8\uff09\n backtrack(state, target, total, nums, res);\n return res;\n}\n</code></pre> subset_sum_i_naive.java<pre><code>/* \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff1a\u90e8\u5206\u96c6\u5408\u548c I */\nvoid backtrack(List&lt;Integer&gt; state, int target, int total, int[] choices, List&lt;List&lt;Integer&gt;&gt; res) {\n // \u90e8\u5206\u96c6\u5408\u306e\u548c\u304ctarget\u3068\u7b49\u3057\u3044\u3068\u304d\u3001\u89e3\u3092\u8a18\u9332\n if (total == target) {\n res.add(new ArrayList&lt;&gt;(state));\n return;\n }\n // \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u8d70\u67fb\n for (int i = 0; i &lt; choices.length; i++) {\n // \u526a\u5b9a\uff1a\u90e8\u5206\u96c6\u5408\u306e\u548c\u304ctarget\u3092\u8d85\u3048\u305f\u5834\u5408\u3001\u305d\u306e\u9078\u629e\u3092\u30b9\u30ad\u30c3\u30d7\n if (total + choices[i] &gt; target) {\n continue;\n }\n // \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001\u8981\u7d20\u3068total\u3092\u66f4\u65b0\n state.add(choices[i]);\n // \u6b21\u306e\u30e9\u30a6\u30f3\u30c9\u306e\u9078\u629e\u306b\u9032\u3080\n backtrack(state, target, total + choices[i], choices, res);\n // \u56de\u9000\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u5fa9\u5143\n state.remove(state.size() - 1);\n }\n}\n\n/* \u90e8\u5206\u96c6\u5408\u548c I \u3092\u89e3\u304f\uff08\u91cd\u8907\u3059\u308b\u90e8\u5206\u96c6\u5408\u3092\u542b\u3080\uff09 */\nList&lt;List&lt;Integer&gt;&gt; subsetSumINaive(int[] nums, int target) {\n List&lt;Integer&gt; state = new ArrayList&lt;&gt;(); // \u72b6\u614b\uff08\u90e8\u5206\u96c6\u5408\uff09\n int total = 0; // \u90e8\u5206\u96c6\u5408\u306e\u548c\n List&lt;List&lt;Integer&gt;&gt; res = new ArrayList&lt;&gt;(); // \u7d50\u679c\u30ea\u30b9\u30c8\uff08\u90e8\u5206\u96c6\u5408\u30ea\u30b9\u30c8\uff09\n backtrack(state, target, total, nums, res);\n return res;\n}\n</code></pre> subset_sum_i_naive.cs<pre><code>[class]{subset_sum_i_naive}-[func]{Backtrack}\n\n[class]{subset_sum_i_naive}-[func]{SubsetSumINaive}\n</code></pre> subset_sum_i_naive.go<pre><code>[class]{}-[func]{backtrackSubsetSumINaive}\n\n[class]{}-[func]{subsetSumINaive}\n</code></pre> subset_sum_i_naive.swift<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{subsetSumINaive}\n</code></pre> subset_sum_i_naive.js<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{subsetSumINaive}\n</code></pre> subset_sum_i_naive.ts<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{subsetSumINaive}\n</code></pre> subset_sum_i_naive.dart<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{subsetSumINaive}\n</code></pre> subset_sum_i_naive.rs<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{subset_sum_i_naive}\n</code></pre> subset_sum_i_naive.c<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{subsetSumINaive}\n</code></pre> subset_sum_i_naive.kt<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{subsetSumINaive}\n</code></pre> subset_sum_i_naive.rb<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{subset_sum_i_naive}\n</code></pre> <p>\u914d\u5217 \\([3, 4, 5]\\) \u3068\u30bf\u30fc\u30b2\u30c3\u30c8\u8981\u7d20 \\(9\\) \u3092\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u306b\u5165\u529b\u3059\u308b\u3068\u3001\u7d50\u679c \\([3, 3, 3], [4, 5], [5, 4]\\) \u304c\u5f97\u3089\u308c\u307e\u3059\u3002\u548c\u304c \\(9\\) \u306e\u3059\u3079\u3066\u306e\u90e8\u5206\u96c6\u5408\u3092\u6b63\u5e38\u306b\u898b\u3064\u3051\u307e\u3057\u305f\u304c\u3001\u91cd\u8907\u3059\u308b\u90e8\u5206\u96c6\u5408 \\([4, 5]\\) \u3068 \\([5, 4]\\) \u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002</p> <p>\u3053\u308c\u306f\u3001\u691c\u7d22\u30d7\u30ed\u30bb\u30b9\u304c\u9078\u629e\u306e\u9806\u5e8f\u3092\u533a\u5225\u3059\u308b\u305f\u3081\u3067\u3059\u304c\u3001\u90e8\u5206\u96c6\u5408\u306f\u9078\u629e\u9806\u5e8f\u3092\u533a\u5225\u3057\u307e\u305b\u3093\u3002\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\\(5\\) \u306e\u524d\u306b \\(4\\) \u3092\u9078\u629e\u3059\u308b\u3053\u3068\u3068 \\(4\\) \u306e\u524d\u306b \\(5\\) \u3092\u9078\u629e\u3059\u308b\u3053\u3068\u306f\u7570\u306a\u308b\u5206\u5c90\u3067\u3059\u304c\u3001\u540c\u3058\u90e8\u5206\u96c6\u5408\u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 13-10 \u00a0 \u90e8\u5206\u96c6\u5408\u306e\u691c\u7d22\u3068\u5883\u754c\u5916\u306e\u526a\u5b9a </p> <p>\u91cd\u8907\u3059\u308b\u90e8\u5206\u96c6\u5408\u3092\u9664\u53bb\u3059\u308b\u305f\u3081\u306b\u3001\u76f4\u63a5\u7684\u306a\u30a2\u30a4\u30c7\u30a2\u306f\u7d50\u679c\u30ea\u30b9\u30c8\u3092\u91cd\u8907\u9664\u53bb\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u3057\u304b\u3057\u3001\u3053\u306e\u65b9\u6cd5\u306f2\u3064\u306e\u7406\u7531\u3067\u975e\u5e38\u306b\u975e\u52b9\u7387\u7684\u3067\u3059\u3002</p> <ul> <li>\u914d\u5217\u8981\u7d20\u304c\u591a\u3044\u5834\u5408\u3001\u7279\u306b <code>target</code> \u304c\u5927\u304d\u3044\u5834\u5408\u3001\u691c\u7d22\u30d7\u30ed\u30bb\u30b9\u3067\u5927\u91cf\u306e\u91cd\u8907\u3059\u308b\u90e8\u5206\u96c6\u5408\u304c\u751f\u6210\u3055\u308c\u307e\u3059\u3002</li> <li>\u90e8\u5206\u96c6\u5408\uff08\u914d\u5217\uff09\u306e\u5dee\u7570\u3092\u6bd4\u8f03\u3059\u308b\u3053\u3068\u306f\u975e\u5e38\u306b\u6642\u9593\u304c\u304b\u304b\u308a\u3001\u307e\u305a\u914d\u5217\u3092\u30bd\u30fc\u30c8\u3057\u3001\u6b21\u306b\u914d\u5217\u306e\u5404\u8981\u7d20\u306e\u5dee\u7570\u3092\u6bd4\u8f03\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_backtracking/subset_sum_problem/#2","title":"2. \u00a0 \u91cd\u8907\u90e8\u5206\u96c6\u5408\u306e\u526a\u5b9a","text":"<p>\u526a\u5b9a\u3092\u901a\u3058\u3066\u691c\u7d22\u30d7\u30ed\u30bb\u30b9\u4e2d\u306b\u91cd\u8907\u9664\u53bb\u3092\u691c\u8a0e\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u56f3\u3092\u89b3\u5bdf\u3059\u308b\u3068\u3001\u7570\u306a\u308b\u9806\u5e8f\u3067\u914d\u5217\u8981\u7d20\u3092\u9078\u629e\u3059\u308b\u3068\u304d\u306b\u91cd\u8907\u3059\u308b\u90e8\u5206\u96c6\u5408\u304c\u751f\u6210\u3055\u308c\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u4ee5\u4e0b\u306e\u72b6\u6cc1\u3067\u3059\u3002</p> <ol> <li>\u6700\u521d\u306e\u30e9\u30a6\u30f3\u30c9\u3067 \\(3\\) \u3092\u9078\u629e\u3057\u30012\u756a\u76ee\u306e\u30e9\u30a6\u30f3\u30c9\u3067 \\(4\\) \u3092\u9078\u629e\u3059\u308b\u3068\u3001\u3053\u308c\u30892\u3064\u306e\u8981\u7d20\u3092\u542b\u3080\u3059\u3079\u3066\u306e\u90e8\u5206\u96c6\u5408\u304c\u751f\u6210\u3055\u308c\u3001\\([3, 4, \\dots]\\) \u3068\u8868\u8a18\u3055\u308c\u307e\u3059\u3002</li> <li>\u5f8c\u3067\u3001\u6700\u521d\u306e\u30e9\u30a6\u30f3\u30c9\u3067 \\(4\\) \u304c\u9078\u629e\u3055\u308c\u305f\u3068\u304d\u30012\u756a\u76ee\u306e\u30e9\u30a6\u30f3\u30c9\u306f \\(3\\) \u3092\u30b9\u30ad\u30c3\u30d7\u3059\u3079\u304d\u3067\u3059\u3002\u3053\u306e\u9078\u629e\u306b\u3088\u3063\u3066\u751f\u6210\u3055\u308c\u308b\u90e8\u5206\u96c6\u5408 \\([4, 3, \\dots]\\) \u306f\u30b9\u30c6\u30c3\u30d7 <code>1.</code> \u306e\u90e8\u5206\u96c6\u5408\u3068\u5b8c\u5168\u306b\u91cd\u8907\u3059\u308b\u304b\u3089\u3067\u3059\u3002</li> </ol> <p>\u691c\u7d22\u30d7\u30ed\u30bb\u30b9\u3067\u306f\u3001\u5404\u5c64\u306e\u9078\u629e\u304c\u5de6\u304b\u3089\u53f3\u306b\u4e00\u3064\u305a\u3064\u8a66\u884c\u3055\u308c\u308b\u305f\u3081\u3001\u53f3\u5074\u306e\u5206\u5c90\u307b\u3069\u3088\u308a\u591a\u304f\u526a\u5b9a\u3055\u308c\u307e\u3059\u3002</p> <ol> <li>\u6700\u521d\u306e2\u30e9\u30a6\u30f3\u30c9\u3067 \\(3\\) \u3068 \\(5\\) \u3092\u9078\u629e\u3057\u3001\u90e8\u5206\u96c6\u5408 \\([3, 5, \\dots]\\) \u3092\u751f\u6210\u3057\u307e\u3059\u3002</li> <li>\u6700\u521d\u306e2\u30e9\u30a6\u30f3\u30c9\u3067 \\(4\\) \u3068 \\(5\\) \u3092\u9078\u629e\u3057\u3001\u90e8\u5206\u96c6\u5408 \\([4, 5, \\dots]\\) \u3092\u751f\u6210\u3057\u307e\u3059\u3002</li> <li>\u6700\u521d\u306e\u30e9\u30a6\u30f3\u30c9\u3067 \\(5\\) \u304c\u9078\u629e\u3055\u308c\u305f\u5834\u5408\u30012\u756a\u76ee\u306e\u30e9\u30a6\u30f3\u30c9\u306f \\(3\\) \u3068 \\(4\\) \u3092\u30b9\u30ad\u30c3\u30d7\u3059\u3079\u304d\u3067\u3059\u3002\u90e8\u5206\u96c6\u5408 \\([5, 3, \\dots]\\) \u3068 \\([5, 4, \\dots]\\) \u306f\u30b9\u30c6\u30c3\u30d7 <code>1.</code> \u3068 <code>2.</code> \u3067\u8a18\u8ff0\u3055\u308c\u305f\u90e8\u5206\u96c6\u5408\u3068\u5b8c\u5168\u306b\u91cd\u8907\u3059\u308b\u304b\u3089\u3067\u3059\u3002</li> </ol> <p></p> <p> \u56f3 13-11 \u00a0 \u7570\u306a\u308b\u9078\u629e\u9806\u5e8f\u306b\u3088\u308b\u91cd\u8907\u90e8\u5206\u96c6\u5408 </p> <p>\u8981\u7d04\u3059\u308b\u3068\u3001\u5165\u529b\u914d\u5217 \\([x_1, x_2, \\dots, x_n]\\) \u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u3001\u691c\u7d22\u30d7\u30ed\u30bb\u30b9\u3067\u306e\u9078\u629e\u30b7\u30fc\u30b1\u30f3\u30b9\u306f \\([x_{i_1}, x_{i_2}, \\dots, x_{i_m}]\\) \u3067\u3042\u308b\u3079\u304d\u3067\u3001\\(i_1 \\leq i_2 \\leq \\dots \\leq i_m\\) \u3092\u6e80\u305f\u3059\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u6761\u4ef6\u3092\u6e80\u305f\u3055\u306a\u3044\u9078\u629e\u30b7\u30fc\u30b1\u30f3\u30b9\u306f\u91cd\u8907\u3092\u5f15\u304d\u8d77\u3053\u3057\u3001\u526a\u5b9a\u3055\u308c\u308b\u3079\u304d\u3067\u3059\u3002</p>"},{"location":"chapter_backtracking/subset_sum_problem/#3","title":"3. \u00a0 \u30b3\u30fc\u30c9\u5b9f\u88c5","text":"<p>\u3053\u306e\u526a\u5b9a\u3092\u5b9f\u88c5\u3059\u308b\u305f\u3081\u306b\u3001\u5909\u6570 <code>start</code> \u3092\u521d\u671f\u5316\u3057\u3001\u3053\u308c\u306f\u8d70\u67fb\u306e\u958b\u59cb\u70b9\u3092\u793a\u3057\u307e\u3059\u3002\u9078\u629e \\(x_{i}\\) \u3092\u884c\u3063\u305f\u5f8c\u3001\u6b21\u306e\u30e9\u30a6\u30f3\u30c9\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 \\(i\\) \u304b\u3089\u958b\u59cb\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u9078\u629e\u30b7\u30fc\u30b1\u30f3\u30b9\u304c \\(i_1 \\leq i_2 \\leq \\dots \\leq i_m\\) \u3092\u6e80\u305f\u3059\u3053\u3068\u304c\u4fdd\u8a3c\u3055\u308c\u3001\u90e8\u5206\u96c6\u5408\u306e\u4e00\u610f\u6027\u304c\u4fdd\u8a3c\u3055\u308c\u307e\u3059\u3002</p> <p>\u3055\u3089\u306b\u3001\u30b3\u30fc\u30c9\u306b\u4ee5\u4e0b\u306e2\u3064\u306e\u6700\u9069\u5316\u3092\u884c\u3044\u307e\u3057\u305f\u3002</p> <ul> <li>\u691c\u7d22\u3092\u958b\u59cb\u3059\u308b\u524d\u306b\u3001\u914d\u5217 <code>nums</code> \u3092\u30bd\u30fc\u30c8\u3057\u307e\u3059\u3002\u3059\u3079\u3066\u306e\u9078\u629e\u306e\u8d70\u67fb\u3067\u3001\u90e8\u5206\u96c6\u5408\u548c\u304c <code>target</code> \u3092\u8d85\u3048\u305f\u3068\u304d\u306b\u30eb\u30fc\u30d7\u3092\u76f4\u63a5\u7d42\u4e86\u3057\u307e\u3059\u3002\u5f8c\u7d9a\u306e\u8981\u7d20\u306f\u3088\u308a\u5927\u304d\u304f\u3001\u305d\u308c\u3089\u306e\u90e8\u5206\u96c6\u5408\u548c\u306f\u78ba\u5b9f\u306b <code>target</code> \u3092\u8d85\u3048\u308b\u304b\u3089\u3067\u3059\u3002</li> <li>\u8981\u7d20\u548c\u5909\u6570 <code>total</code> \u3092\u9664\u53bb\u3057\u3001<code>target</code> \u306b\u5bfe\u3057\u3066\u6e1b\u7b97\u3092\u5b9f\u884c\u3057\u3066\u8981\u7d20\u548c\u3092\u30ab\u30a6\u30f3\u30c8\u3057\u307e\u3059\u3002<code>target</code> \u304c \\(0\\) \u306b\u7b49\u3057\u304f\u306a\u3063\u305f\u3068\u304d\u3001\u89e3\u3092\u8a18\u9332\u3057\u307e\u3059\u3002</li> </ul> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby subset_sum_i.py<pre><code>def backtrack(\n state: list[int], target: int, choices: list[int], start: int, res: list[list[int]]\n):\n \"\"\"\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff1a\u90e8\u5206\u96c6\u5408\u306e\u548c I\"\"\"\n # \u90e8\u5206\u96c6\u5408\u306e\u548c\u304c target \u3068\u7b49\u3057\u3044\u3068\u304d\u3001\u89e3\u3092\u8a18\u9332\n if target == 0:\n res.append(list(state))\n return\n # \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u8d70\u67fb\n # \u679d\u5208\u308a\u4e8c\uff1astart \u304b\u3089\u8d70\u67fb\u3092\u958b\u59cb\u3057\u3066\u91cd\u8907\u3059\u308b\u90e8\u5206\u96c6\u5408\u306e\u751f\u6210\u3092\u907f\u3051\u308b\n for i in range(start, len(choices)):\n # \u679d\u5208\u308a\u4e00\uff1a\u90e8\u5206\u96c6\u5408\u306e\u548c\u304c target \u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u76f4\u3061\u306b\u30eb\u30fc\u30d7\u3092\u7d42\u4e86\n # \u3053\u308c\u306f\u914d\u5217\u304c\u30bd\u30fc\u30c8\u3055\u308c\u3066\u304a\u308a\u3001\u5f8c\u306e\u8981\u7d20\u304c\u3088\u308a\u5927\u304d\u3044\u305f\u3081\u3001\u90e8\u5206\u96c6\u5408\u306e\u548c\u306f\u5fc5\u305a target \u3092\u8d85\u3048\u308b\u305f\u3081\n if target - choices[i] &lt; 0:\n break\n # \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001target\u3001start \u3092\u66f4\u65b0\n state.append(choices[i])\n # \u6b21\u306e\u9078\u629e\u30e9\u30a6\u30f3\u30c9\u306b\u9032\u3080\n backtrack(state, target - choices[i], choices, i, res)\n # \u64a4\u56de\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u5fa9\u5143\n state.pop()\n\ndef subset_sum_i(nums: list[int], target: int) -&gt; list[list[int]]:\n \"\"\"\u90e8\u5206\u96c6\u5408\u306e\u548c I \u3092\u89e3\u304f\"\"\"\n state = [] # \u72b6\u614b\uff08\u90e8\u5206\u96c6\u5408\uff09\n nums.sort() # nums \u3092\u30bd\u30fc\u30c8\n start = 0 # \u8d70\u67fb\u306e\u958b\u59cb\u70b9\n res = [] # \u7d50\u679c\u30ea\u30b9\u30c8\uff08\u90e8\u5206\u96c6\u5408\u30ea\u30b9\u30c8\uff09\n backtrack(state, target, nums, start, res)\n return res\n</code></pre> subset_sum_i.cpp<pre><code>/* \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff1a\u90e8\u5206\u96c6\u5408\u548c I */\nvoid backtrack(vector&lt;int&gt; &amp;state, int target, vector&lt;int&gt; &amp;choices, int start, vector&lt;vector&lt;int&gt;&gt; &amp;res) {\n // \u90e8\u5206\u96c6\u5408\u306e\u548c\u304ctarget\u3068\u7b49\u3057\u3044\u3068\u304d\u3001\u89e3\u3092\u8a18\u9332\n if (target == 0) {\n res.push_back(state);\n return;\n }\n // \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u8d70\u67fb\n // \u526a\u5b9a\u4e8c\uff1astart\u304b\u3089\u8d70\u67fb\u3092\u958b\u59cb\u3057\u3001\u91cd\u8907\u3059\u308b\u90e8\u5206\u96c6\u5408\u306e\u751f\u6210\u3092\u56de\u907f\n for (int i = start; i &lt; choices.size(); i++) {\n // \u526a\u5b9a\u4e00\uff1a\u90e8\u5206\u96c6\u5408\u306e\u548c\u304ctarget\u3092\u8d85\u3048\u305f\u5834\u5408\u3001\u5373\u5ea7\u306b\u30eb\u30fc\u30d7\u3092\u7d42\u4e86\n // \u914d\u5217\u304c\u30bd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u5f8c\u306e\u8981\u7d20\u306f\u3055\u3089\u306b\u5927\u304d\u304f\u3001\u90e8\u5206\u96c6\u5408\u306e\u548c\u306f\u5fc5\u305atarget\u3092\u8d85\u3048\u308b\n if (target - choices[i] &lt; 0) {\n break;\n }\n // \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001target\u3001start\u3092\u66f4\u65b0\n state.push_back(choices[i]);\n // \u6b21\u306e\u30e9\u30a6\u30f3\u30c9\u306e\u9078\u629e\u306b\u9032\u3080\n backtrack(state, target - choices[i], choices, i, res);\n // \u56de\u9000\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u5fa9\u5143\n state.pop_back();\n }\n}\n\n/* \u90e8\u5206\u96c6\u5408\u548c I \u3092\u89e3\u304f */\nvector&lt;vector&lt;int&gt;&gt; subsetSumI(vector&lt;int&gt; nums, int target) {\n vector&lt;int&gt; state; // \u72b6\u614b\uff08\u90e8\u5206\u96c6\u5408\uff09\n sort(nums.begin(), nums.end()); // nums \u3092\u30bd\u30fc\u30c8\n int start = 0; // \u8d70\u67fb\u306e\u958b\u59cb\u70b9\n vector&lt;vector&lt;int&gt;&gt; res; // \u7d50\u679c\u30ea\u30b9\u30c8\uff08\u90e8\u5206\u96c6\u5408\u30ea\u30b9\u30c8\uff09\n backtrack(state, target, nums, start, res);\n return res;\n}\n</code></pre> subset_sum_i.java<pre><code>/* \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff1a\u90e8\u5206\u96c6\u5408\u548c I */\nvoid backtrack(List&lt;Integer&gt; state, int target, int[] choices, int start, List&lt;List&lt;Integer&gt;&gt; res) {\n // \u90e8\u5206\u96c6\u5408\u306e\u548c\u304ctarget\u3068\u7b49\u3057\u3044\u3068\u304d\u3001\u89e3\u3092\u8a18\u9332\n if (target == 0) {\n res.add(new ArrayList&lt;&gt;(state));\n return;\n }\n // \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u8d70\u67fb\n // \u526a\u5b9a\u4e8c\uff1astart\u304b\u3089\u8d70\u67fb\u3092\u958b\u59cb\u3057\u3001\u91cd\u8907\u3059\u308b\u90e8\u5206\u96c6\u5408\u306e\u751f\u6210\u3092\u56de\u907f\n for (int i = start; i &lt; choices.length; i++) {\n // \u526a\u5b9a\u4e00\uff1a\u90e8\u5206\u96c6\u5408\u306e\u548c\u304ctarget\u3092\u8d85\u3048\u305f\u5834\u5408\u3001\u5373\u5ea7\u306b\u30eb\u30fc\u30d7\u3092\u7d42\u4e86\n // \u914d\u5217\u304c\u30bd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u5f8c\u306e\u8981\u7d20\u306f\u3055\u3089\u306b\u5927\u304d\u304f\u3001\u90e8\u5206\u96c6\u5408\u306e\u548c\u306f\u5fc5\u305atarget\u3092\u8d85\u3048\u308b\n if (target - choices[i] &lt; 0) {\n break;\n }\n // \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001target\u3001start\u3092\u66f4\u65b0\n state.add(choices[i]);\n // \u6b21\u306e\u30e9\u30a6\u30f3\u30c9\u306e\u9078\u629e\u306b\u9032\u3080\n backtrack(state, target - choices[i], choices, i, res);\n // \u56de\u9000\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u5fa9\u5143\n state.remove(state.size() - 1);\n }\n}\n\n/* \u90e8\u5206\u96c6\u5408\u548c I \u3092\u89e3\u304f */\nList&lt;List&lt;Integer&gt;&gt; subsetSumI(int[] nums, int target) {\n List&lt;Integer&gt; state = new ArrayList&lt;&gt;(); // \u72b6\u614b\uff08\u90e8\u5206\u96c6\u5408\uff09\n Arrays.sort(nums); // nums \u3092\u30bd\u30fc\u30c8\n int start = 0; // \u8d70\u67fb\u306e\u958b\u59cb\u70b9\n List&lt;List&lt;Integer&gt;&gt; res = new ArrayList&lt;&gt;(); // \u7d50\u679c\u30ea\u30b9\u30c8\uff08\u90e8\u5206\u96c6\u5408\u30ea\u30b9\u30c8\uff09\n backtrack(state, target, nums, start, res);\n return res;\n}\n</code></pre> subset_sum_i.cs<pre><code>[class]{subset_sum_i}-[func]{Backtrack}\n\n[class]{subset_sum_i}-[func]{SubsetSumI}\n</code></pre> subset_sum_i.go<pre><code>[class]{}-[func]{backtrackSubsetSumI}\n\n[class]{}-[func]{subsetSumI}\n</code></pre> subset_sum_i.swift<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{subsetSumI}\n</code></pre> subset_sum_i.js<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{subsetSumI}\n</code></pre> subset_sum_i.ts<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{subsetSumI}\n</code></pre> subset_sum_i.dart<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{subsetSumI}\n</code></pre> subset_sum_i.rs<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{subset_sum_i}\n</code></pre> subset_sum_i.c<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{subsetSumI}\n</code></pre> subset_sum_i.kt<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{subsetSumI}\n</code></pre> subset_sum_i.rb<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{subset_sum_i}\n</code></pre> <p>\u4ee5\u4e0b\u306e\u56f3\u306f\u3001\u914d\u5217 \\([3, 4, 5]\\) \u3068\u30bf\u30fc\u30b2\u30c3\u30c8\u8981\u7d20 \\(9\\) \u3092\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u306b\u5165\u529b\u3057\u305f\u5f8c\u306e\u5168\u4f53\u7684\u306a\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30d7\u30ed\u30bb\u30b9\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002</p> <p></p> <p> \u56f3 13-12 \u00a0 \u90e8\u5206\u96c6\u5408\u548c I \u306e\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30d7\u30ed\u30bb\u30b9 </p>"},{"location":"chapter_backtracking/subset_sum_problem/#1332","title":"13.3.2 \u00a0 \u91cd\u8907\u8981\u7d20\u304c\u3042\u308b\u5834\u5408\u3092\u8003\u616e","text":"<p>Question</p> <p>\u6b63\u306e\u6574\u6570\u306e\u914d\u5217 <code>nums</code> \u3068\u30bf\u30fc\u30b2\u30c3\u30c8\u6b63\u6574\u6570 <code>target</code> \u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u3001\u7d44\u307f\u5408\u308f\u305b\u5185\u306e\u8981\u7d20\u306e\u548c\u304c <code>target</code> \u306b\u7b49\u3057\u304f\u306a\u308b\u3088\u3046\u306a\u3059\u3079\u3066\u306e\u53ef\u80fd\u306a\u7d44\u307f\u5408\u308f\u305b\u3092\u898b\u3064\u3051\u3066\u304f\u3060\u3055\u3044\u3002\u4e0e\u3048\u3089\u308c\u305f\u914d\u5217\u306b\u306f\u91cd\u8907\u8981\u7d20\u304c\u542b\u307e\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u3001\u5404\u8981\u7d20\u306f\u4e00\u5ea6\u3060\u3051\u9078\u629e\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u7d44\u307f\u5408\u308f\u305b\u3092\u91cd\u8907\u3059\u308b\u7d44\u307f\u5408\u308f\u305b\u3092\u542b\u307e\u306a\u3044\u30ea\u30b9\u30c8\u3068\u3057\u3066\u8fd4\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <p>\u524d\u306e\u554f\u984c\u3068\u6bd4\u8f03\u3057\u3066\u3001\u3053\u306e\u554f\u984c\u306e\u5165\u529b\u914d\u5217\u306b\u306f\u91cd\u8907\u8981\u7d20\u304c\u542b\u307e\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u3001\u65b0\u3057\u3044\u554f\u984c\u304c\u5c0e\u5165\u3055\u308c\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u914d\u5217 \\([4, \\hat{4}, 5]\\) \u3068\u30bf\u30fc\u30b2\u30c3\u30c8\u8981\u7d20 \\(9\\) \u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u3001\u65e2\u5b58\u306e\u30b3\u30fc\u30c9\u306e\u51fa\u529b\u7d50\u679c\u306f \\([4, 5], [\\hat{4}, 5]\\) \u3068\u306a\u308a\u3001\u91cd\u8907\u3059\u308b\u90e8\u5206\u96c6\u5408\u304c\u751f\u6210\u3055\u308c\u307e\u3059\u3002</p> <p>\u3053\u306e\u91cd\u8907\u306e\u7406\u7531\u306f\u3001\u7279\u5b9a\u306e\u30e9\u30a6\u30f3\u30c9\u3067\u7b49\u3057\u3044\u8981\u7d20\u304c\u8907\u6570\u56de\u9078\u629e\u3055\u308c\u308b\u3053\u3068\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u56f3\u3067\u306f\u3001\u6700\u521d\u306e\u30e9\u30a6\u30f3\u30c9\u306b3\u3064\u306e\u9078\u629e\u80a2\u304c\u3042\u308a\u3001\u305d\u306e\u3046\u30612\u3064\u304c \\(4\\) \u3067\u3042\u308a\u30012\u3064\u306e\u91cd\u8907\u3059\u308b\u691c\u7d22\u5206\u5c90\u3092\u751f\u6210\u3057\u3001\u91cd\u8907\u3059\u308b\u90e8\u5206\u96c6\u5408\u3092\u51fa\u529b\u3057\u307e\u3059\u3002\u540c\u69d8\u306b\u30012\u756a\u76ee\u306e\u30e9\u30a6\u30f3\u30c9\u306e2\u3064\u306e \\(4\\) \u3082\u91cd\u8907\u3059\u308b\u90e8\u5206\u96c6\u5408\u3092\u751f\u6210\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 13-13 \u00a0 \u7b49\u3057\u3044\u8981\u7d20\u306b\u3088\u308b\u91cd\u8907\u90e8\u5206\u96c6\u5408 </p>"},{"location":"chapter_backtracking/subset_sum_problem/#1_1","title":"1. \u00a0 \u7b49\u5024\u8981\u7d20\u306e\u526a\u5b9a","text":"<p>\u3053\u306e\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306b\u3001\u7b49\u3057\u3044\u8981\u7d20\u304c\u30e9\u30a6\u30f3\u30c9\u3054\u3068\u306b\u4e00\u5ea6\u3060\u3051\u9078\u629e\u3055\u308c\u308b\u3088\u3046\u306b\u5236\u9650\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u5b9f\u88c5\u306f\u975e\u5e38\u306b\u5de7\u5999\u3067\u3059\uff1a\u914d\u5217\u304c\u30bd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u7b49\u3057\u3044\u8981\u7d20\u306f\u96a3\u63a5\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u7279\u5b9a\u306e\u30e9\u30a6\u30f3\u30c9\u306e\u9078\u629e\u3067\u3001\u73fe\u5728\u306e\u8981\u7d20\u304c\u305d\u306e\u5de6\u5074\u306e\u8981\u7d20\u3068\u7b49\u3057\u3044\u5834\u5408\u3001\u305d\u308c\u306f\u3059\u3067\u306b\u9078\u629e\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u610f\u5473\u3059\u308b\u305f\u3081\u3001\u73fe\u5728\u306e\u8981\u7d20\u3092\u76f4\u63a5\u30b9\u30ad\u30c3\u30d7\u3057\u307e\u3059\u3002</p> <p>\u540c\u6642\u306b\u3001\u3053\u306e\u554f\u984c\u3067\u306f\u5404\u914d\u5217\u8981\u7d20\u306f\u4e00\u5ea6\u3060\u3051\u9078\u629e\u3067\u304d\u308b\u3068\u898f\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u5e78\u3044\u3001\u5909\u6570 <code>start</code> \u3092\u4f7f\u7528\u3057\u3066\u3053\u306e\u5236\u7d04\u3082\u6e80\u305f\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff1a\u9078\u629e \\(x_{i}\\) \u3092\u884c\u3063\u305f\u5f8c\u3001\u6b21\u306e\u30e9\u30a6\u30f3\u30c9\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 \\(i + 1\\) \u304b\u3089\u524d\u65b9\u306b\u958b\u59cb\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u91cd\u8907\u3059\u308b\u90e8\u5206\u96c6\u5408\u304c\u9664\u53bb\u3055\u308c\u308b\u3060\u3051\u3067\u306a\u304f\u3001\u8981\u7d20\u306e\u91cd\u8907\u9078\u629e\u3082\u56de\u907f\u3055\u308c\u307e\u3059\u3002</p>"},{"location":"chapter_backtracking/subset_sum_problem/#2_1","title":"2. \u00a0 \u30b3\u30fc\u30c9\u5b9f\u88c5","text":"PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby subset_sum_ii.py<pre><code>def backtrack(\n state: list[int], target: int, choices: list[int], start: int, res: list[list[int]]\n):\n \"\"\"\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff1a\u90e8\u5206\u96c6\u5408\u306e\u548c II\"\"\"\n # \u90e8\u5206\u96c6\u5408\u306e\u548c\u304c target \u3068\u7b49\u3057\u3044\u3068\u304d\u3001\u89e3\u3092\u8a18\u9332\n if target == 0:\n res.append(list(state))\n return\n # \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u8d70\u67fb\n # \u679d\u5208\u308a\u4e8c\uff1astart \u304b\u3089\u8d70\u67fb\u3092\u958b\u59cb\u3057\u3066\u91cd\u8907\u3059\u308b\u90e8\u5206\u96c6\u5408\u306e\u751f\u6210\u3092\u907f\u3051\u308b\n # \u679d\u5208\u308a\u4e09\uff1astart \u304b\u3089\u8d70\u67fb\u3092\u958b\u59cb\u3057\u3066\u540c\u3058\u8981\u7d20\u306e\u91cd\u8907\u9078\u629e\u3092\u907f\u3051\u308b\n for i in range(start, len(choices)):\n # \u679d\u5208\u308a\u4e00\uff1a\u90e8\u5206\u96c6\u5408\u306e\u548c\u304c target \u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u76f4\u3061\u306b\u30eb\u30fc\u30d7\u3092\u7d42\u4e86\n # \u3053\u308c\u306f\u914d\u5217\u304c\u30bd\u30fc\u30c8\u3055\u308c\u3066\u304a\u308a\u3001\u5f8c\u306e\u8981\u7d20\u304c\u3088\u308a\u5927\u304d\u3044\u305f\u3081\u3001\u90e8\u5206\u96c6\u5408\u306e\u548c\u306f\u5fc5\u305a target \u3092\u8d85\u3048\u308b\u305f\u3081\n if target - choices[i] &lt; 0:\n break\n # \u679d\u5208\u308a\u56db\uff1a\u8981\u7d20\u304c\u5de6\u306e\u8981\u7d20\u3068\u7b49\u3057\u3044\u5834\u5408\u3001\u691c\u7d22\u5206\u5c90\u304c\u91cd\u8907\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u793a\u3059\u305f\u3081\u3001\u30b9\u30ad\u30c3\u30d7\n if i &gt; start and choices[i] == choices[i - 1]:\n continue\n # \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001target\u3001start \u3092\u66f4\u65b0\n state.append(choices[i])\n # \u6b21\u306e\u9078\u629e\u30e9\u30a6\u30f3\u30c9\u306b\u9032\u3080\n backtrack(state, target - choices[i], choices, i + 1, res)\n # \u64a4\u56de\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u5fa9\u5143\n state.pop()\n\ndef subset_sum_ii(nums: list[int], target: int) -&gt; list[list[int]]:\n \"\"\"\u90e8\u5206\u96c6\u5408\u306e\u548c II \u3092\u89e3\u304f\"\"\"\n state = [] # \u72b6\u614b\uff08\u90e8\u5206\u96c6\u5408\uff09\n nums.sort() # nums \u3092\u30bd\u30fc\u30c8\n start = 0 # \u8d70\u67fb\u306e\u958b\u59cb\u70b9\n res = [] # \u7d50\u679c\u30ea\u30b9\u30c8\uff08\u90e8\u5206\u96c6\u5408\u30ea\u30b9\u30c8\uff09\n backtrack(state, target, nums, start, res)\n return res\n</code></pre> subset_sum_ii.cpp<pre><code>/* \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff1a\u90e8\u5206\u96c6\u5408\u548c II */\nvoid backtrack(vector&lt;int&gt; &amp;state, int target, vector&lt;int&gt; &amp;choices, int start, vector&lt;vector&lt;int&gt;&gt; &amp;res) {\n // \u90e8\u5206\u96c6\u5408\u306e\u548c\u304ctarget\u3068\u7b49\u3057\u3044\u3068\u304d\u3001\u89e3\u3092\u8a18\u9332\n if (target == 0) {\n res.push_back(state);\n return;\n }\n // \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u8d70\u67fb\n // \u526a\u5b9a\u4e8c\uff1astart\u304b\u3089\u8d70\u67fb\u3092\u958b\u59cb\u3057\u3001\u91cd\u8907\u3059\u308b\u90e8\u5206\u96c6\u5408\u306e\u751f\u6210\u3092\u56de\u907f\n // \u526a\u5b9a\u4e09\uff1astart\u304b\u3089\u8d70\u67fb\u3092\u958b\u59cb\u3057\u3001\u540c\u3058\u8981\u7d20\u306e\u7e70\u308a\u8fd4\u3057\u9078\u629e\u3092\u56de\u907f\n for (int i = start; i &lt; choices.size(); i++) {\n // \u526a\u5b9a\u4e00\uff1a\u90e8\u5206\u96c6\u5408\u306e\u548c\u304ctarget\u3092\u8d85\u3048\u305f\u5834\u5408\u3001\u5373\u5ea7\u306b\u30eb\u30fc\u30d7\u3092\u7d42\u4e86\n // \u914d\u5217\u304c\u30bd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u5f8c\u306e\u8981\u7d20\u306f\u3055\u3089\u306b\u5927\u304d\u304f\u3001\u90e8\u5206\u96c6\u5408\u306e\u548c\u306f\u5fc5\u305atarget\u3092\u8d85\u3048\u308b\n if (target - choices[i] &lt; 0) {\n break;\n }\n // \u526a\u5b9a\u56db\uff1a\u8981\u7d20\u304c\u5de6\u306e\u8981\u7d20\u3068\u7b49\u3057\u3044\u5834\u5408\u3001\u691c\u7d22\u30d6\u30e9\u30f3\u30c1\u306e\u91cd\u8907\u3092\u793a\u3059\u306e\u3067\u30b9\u30ad\u30c3\u30d7\n if (i &gt; start &amp;&amp; choices[i] == choices[i - 1]) {\n continue;\n }\n // \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001target\u3001start\u3092\u66f4\u65b0\n state.push_back(choices[i]);\n // \u6b21\u306e\u30e9\u30a6\u30f3\u30c9\u306e\u9078\u629e\u306b\u9032\u3080\n backtrack(state, target - choices[i], choices, i + 1, res);\n // \u56de\u9000\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u5fa9\u5143\n state.pop_back();\n }\n}\n\n/* \u90e8\u5206\u96c6\u5408\u548c II \u3092\u89e3\u304f */\nvector&lt;vector&lt;int&gt;&gt; subsetSumII(vector&lt;int&gt; nums, int target) {\n vector&lt;int&gt; state; // \u72b6\u614b\uff08\u90e8\u5206\u96c6\u5408\uff09\n sort(nums.begin(), nums.end()); // nums \u3092\u30bd\u30fc\u30c8\n int start = 0; // \u8d70\u67fb\u306e\u958b\u59cb\u70b9\n vector&lt;vector&lt;int&gt;&gt; res; // \u7d50\u679c\u30ea\u30b9\u30c8\uff08\u90e8\u5206\u96c6\u5408\u30ea\u30b9\u30c8\uff09\n backtrack(state, target, nums, start, res);\n return res;\n}\n</code></pre> subset_sum_ii.java<pre><code>/* \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff1a\u90e8\u5206\u96c6\u5408\u548c II */\nvoid backtrack(List&lt;Integer&gt; state, int target, int[] choices, int start, List&lt;List&lt;Integer&gt;&gt; res) {\n // \u90e8\u5206\u96c6\u5408\u306e\u548c\u304ctarget\u3068\u7b49\u3057\u3044\u3068\u304d\u3001\u89e3\u3092\u8a18\u9332\n if (target == 0) {\n res.add(new ArrayList&lt;&gt;(state));\n return;\n }\n // \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u8d70\u67fb\n // \u526a\u5b9a\u4e8c\uff1astart\u304b\u3089\u8d70\u67fb\u3092\u958b\u59cb\u3057\u3001\u91cd\u8907\u3059\u308b\u90e8\u5206\u96c6\u5408\u306e\u751f\u6210\u3092\u56de\u907f\n // \u526a\u5b9a\u4e09\uff1astart\u304b\u3089\u8d70\u67fb\u3092\u958b\u59cb\u3057\u3001\u540c\u3058\u8981\u7d20\u306e\u7e70\u308a\u8fd4\u3057\u9078\u629e\u3092\u56de\u907f\n for (int i = start; i &lt; choices.length; i++) {\n // \u526a\u5b9a\u4e00\uff1a\u90e8\u5206\u96c6\u5408\u306e\u548c\u304ctarget\u3092\u8d85\u3048\u305f\u5834\u5408\u3001\u5373\u5ea7\u306b\u30eb\u30fc\u30d7\u3092\u7d42\u4e86\n // \u914d\u5217\u304c\u30bd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u5f8c\u306e\u8981\u7d20\u306f\u3055\u3089\u306b\u5927\u304d\u304f\u3001\u90e8\u5206\u96c6\u5408\u306e\u548c\u306f\u5fc5\u305atarget\u3092\u8d85\u3048\u308b\n if (target - choices[i] &lt; 0) {\n break;\n }\n // \u526a\u5b9a\u56db\uff1a\u8981\u7d20\u304c\u5de6\u306e\u8981\u7d20\u3068\u7b49\u3057\u3044\u5834\u5408\u3001\u691c\u7d22\u30d6\u30e9\u30f3\u30c1\u306e\u91cd\u8907\u3092\u793a\u3059\u306e\u3067\u30b9\u30ad\u30c3\u30d7\n if (i &gt; start &amp;&amp; choices[i] == choices[i - 1]) {\n continue;\n }\n // \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001target\u3001start\u3092\u66f4\u65b0\n state.add(choices[i]);\n // \u6b21\u306e\u30e9\u30a6\u30f3\u30c9\u306e\u9078\u629e\u306b\u9032\u3080\n backtrack(state, target - choices[i], choices, i + 1, res);\n // \u56de\u9000\uff1a\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u3001\u524d\u306e\u72b6\u614b\u306b\u5fa9\u5143\n state.remove(state.size() - 1);\n }\n}\n\n/* \u90e8\u5206\u96c6\u5408\u548c II \u3092\u89e3\u304f */\nList&lt;List&lt;Integer&gt;&gt; subsetSumII(int[] nums, int target) {\n List&lt;Integer&gt; state = new ArrayList&lt;&gt;(); // \u72b6\u614b\uff08\u90e8\u5206\u96c6\u5408\uff09\n Arrays.sort(nums); // nums \u3092\u30bd\u30fc\u30c8\n int start = 0; // \u8d70\u67fb\u306e\u958b\u59cb\u70b9\n List&lt;List&lt;Integer&gt;&gt; res = new ArrayList&lt;&gt;(); // \u7d50\u679c\u30ea\u30b9\u30c8\uff08\u90e8\u5206\u96c6\u5408\u30ea\u30b9\u30c8\uff09\n backtrack(state, target, nums, start, res);\n return res;\n}\n</code></pre> subset_sum_ii.cs<pre><code>[class]{subset_sum_ii}-[func]{Backtrack}\n\n[class]{subset_sum_ii}-[func]{SubsetSumII}\n</code></pre> subset_sum_ii.go<pre><code>[class]{}-[func]{backtrackSubsetSumII}\n\n[class]{}-[func]{subsetSumII}\n</code></pre> subset_sum_ii.swift<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{subsetSumII}\n</code></pre> subset_sum_ii.js<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{subsetSumII}\n</code></pre> subset_sum_ii.ts<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{subsetSumII}\n</code></pre> subset_sum_ii.dart<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{subsetSumII}\n</code></pre> subset_sum_ii.rs<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{subset_sum_ii}\n</code></pre> subset_sum_ii.c<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{subsetSumII}\n</code></pre> subset_sum_ii.kt<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{subsetSumII}\n</code></pre> subset_sum_ii.rb<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{subset_sum_ii}\n</code></pre> <p>\u4ee5\u4e0b\u306e\u56f3\u306f\u3001\u914d\u5217 \\([4, 4, 5]\\) \u3068\u30bf\u30fc\u30b2\u30c3\u30c8\u8981\u7d20 \\(9\\) \u306e\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30d7\u30ed\u30bb\u30b9\u3092\u793a\u3057\u30014\u7a2e\u985e\u306e\u526a\u5b9a\u64cd\u4f5c\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\u56f3\u3068\u30b3\u30fc\u30c9\u306e\u30b3\u30e1\u30f3\u30c8\u3092\u7d44\u307f\u5408\u308f\u305b\u3066\u3001\u691c\u7d22\u30d7\u30ed\u30bb\u30b9\u5168\u4f53\u3068\u5404\u7a2e\u985e\u306e\u526a\u5b9a\u64cd\u4f5c\u306e\u52d5\u4f5c\u3092\u7406\u89e3\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <p></p> <p> \u56f3 13-14 \u00a0 \u90e8\u5206\u96c6\u5408\u548c II \u306e\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30d7\u30ed\u30bb\u30b9 </p>"},{"location":"chapter_backtracking/summary/","title":"13.5 \u00a0 \u307e\u3068\u3081","text":""},{"location":"chapter_backtracking/summary/#1","title":"1. \u00a0 \u91cd\u8981\u306a\u5fa9\u7fd2","text":"<ul> <li>\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u672c\u8cea\u306f\u5168\u6570\u63a2\u7d22\u3067\u3059\u3002\u89e3\u7a7a\u9593\u306e\u6df1\u3055\u512a\u5148\u8d70\u67fb\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u3067\u6761\u4ef6\u3092\u6e80\u305f\u3059\u89e3\u3092\u6c42\u3081\u307e\u3059\u3002\u691c\u7d22\u4e2d\u306b\u6e80\u8db3\u306e\u3044\u304f\u89e3\u304c\u898b\u3064\u304b\u3063\u305f\u5834\u5408\u3001\u305d\u308c\u3092\u8a18\u9332\u3057\u3001\u3059\u3079\u3066\u306e\u89e3\u304c\u898b\u3064\u304b\u308b\u304b\u8d70\u67fb\u304c\u5b8c\u4e86\u3059\u308b\u307e\u3067\u7d9a\u3051\u307e\u3059\u3002</li> <li>\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u691c\u7d22\u30d7\u30ed\u30bb\u30b9\u306b\u306f\u8a66\u884c\u3068\u5f8c\u9000\u304c\u542b\u307e\u308c\u307e\u3059\u3002\u6df1\u3055\u512a\u5148\u63a2\u7d22\u3092\u4f7f\u7528\u3057\u3066\u69d8\u3005\u306a\u9078\u629e\u3092\u63a2\u7d22\u3057\u3001\u9078\u629e\u304c\u5236\u7d04\u3092\u6e80\u305f\u3055\u306a\u3044\u5834\u5408\u3001\u524d\u306e\u9078\u629e\u3092\u53d6\u308a\u6d88\u3057\u307e\u3059\u3002\u305d\u3057\u3066\u524d\u306e\u72b6\u614b\u306b\u623b\u3063\u3066\u4ed6\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8a66\u3057\u7d9a\u3051\u307e\u3059\u3002\u8a66\u884c\u3068\u5f8c\u9000\u306f\u53cd\u5bfe\u65b9\u5411\u306e\u64cd\u4f5c\u3067\u3059\u3002</li> <li>\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u554f\u984c\u306b\u306f\u901a\u5e38\u8907\u6570\u306e\u5236\u7d04\u304c\u542b\u307e\u308c\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u5236\u7d04\u306f\u526a\u5b9a\u64cd\u4f5c\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u526a\u5b9a\u306f\u4e0d\u8981\u306a\u691c\u7d22\u5206\u5c90\u3092\u4e8b\u524d\u306b\u7d42\u4e86\u3057\u3001\u691c\u7d22\u52b9\u7387\u3092\u5927\u5e45\u306b\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</li> <li>\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u4e3b\u306b\u691c\u7d22\u554f\u984c\u3068\u5236\u7d04\u6e80\u8db3\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u7d44\u307f\u5408\u308f\u305b\u6700\u9069\u5316\u554f\u984c\u306f\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u3092\u4f7f\u7528\u3057\u3066\u89e3\u6c7a\u3067\u304d\u307e\u3059\u304c\u3001\u591a\u304f\u306e\u5834\u5408\u3001\u3088\u308a\u52b9\u7387\u7684\u307e\u305f\u306f\u52b9\u679c\u7684\u306a\u89e3\u6c7a\u65b9\u6cd5\u304c\u5229\u7528\u53ef\u80fd\u3067\u3059\u3002</li> <li>\u9806\u5217\u554f\u984c\u306f\u3001\u4e0e\u3048\u3089\u308c\u305f\u96c6\u5408\u306e\u8981\u7d20\u306e\u3059\u3079\u3066\u306e\u53ef\u80fd\u306a\u9806\u5217\u3092\u691c\u7d22\u3059\u308b\u3053\u3068\u3092\u76ee\u7684\u3068\u3057\u307e\u3059\u3002\u5404\u8981\u7d20\u304c\u9078\u629e\u3055\u308c\u305f\u304b\u3069\u3046\u304b\u3092\u8a18\u9332\u3059\u308b\u305f\u3081\u306b\u914d\u5217\u3092\u4f7f\u7528\u3057\u3001\u540c\u3058\u8981\u7d20\u306e\u91cd\u8907\u9078\u629e\u3092\u907f\u3051\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u5404\u8981\u7d20\u304c\u4e00\u5ea6\u3060\u3051\u9078\u629e\u3055\u308c\u308b\u3053\u3068\u304c\u4fdd\u8a3c\u3055\u308c\u307e\u3059\u3002</li> <li>\u9806\u5217\u554f\u984c\u3067\u306f\u3001\u96c6\u5408\u306b\u91cd\u8907\u8981\u7d20\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u6700\u7d42\u7d50\u679c\u306b\u91cd\u8907\u9806\u5217\u304c\u542b\u307e\u308c\u307e\u3059\u3002\u540c\u4e00\u8981\u7d20\u304c\u5404\u30e9\u30a6\u30f3\u30c9\u3067\u4e00\u5ea6\u3060\u3051\u9078\u629e\u3067\u304d\u308b\u3088\u3046\u306b\u5236\u9650\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u3053\u308c\u306f\u901a\u5e38\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3092\u4f7f\u7528\u3057\u3066\u5b9f\u88c5\u3055\u308c\u307e\u3059\u3002</li> <li>\u90e8\u5206\u96c6\u5408\u548c\u554f\u984c\u306f\u3001\u4e0e\u3048\u3089\u308c\u305f\u96c6\u5408\u3067\u30bf\u30fc\u30b2\u30c3\u30c8\u5024\u306b\u5408\u8a08\u3059\u308b\u5168\u3066\u306e\u90e8\u5206\u96c6\u5408\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u3092\u76ee\u7684\u3068\u3057\u307e\u3059\u3002\u96c6\u5408\u306f\u8981\u7d20\u306e\u9806\u5e8f\u3092\u533a\u5225\u3057\u307e\u305b\u3093\u304c\u3001\u691c\u7d22\u30d7\u30ed\u30bb\u30b9\u3067\u306f\u91cd\u8907\u3059\u308b\u90e8\u5206\u96c6\u5408\u304c\u751f\u6210\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u304c\u7570\u306a\u308b\u8981\u7d20\u9806\u5e8f\u3092\u72ec\u7279\u306e\u30d1\u30b9\u3068\u3057\u3066\u63a2\u7d22\u3059\u308b\u305f\u3081\u306b\u767a\u751f\u3057\u307e\u3059\u3002\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u306e\u524d\u306b\u3001\u30c7\u30fc\u30bf\u3092\u30bd\u30fc\u30c8\u3057\u3001\u5404\u30e9\u30a6\u30f3\u30c9\u306e\u8d70\u67fb\u306e\u958b\u59cb\u70b9\u3092\u793a\u3059\u5909\u6570\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u91cd\u8907\u3059\u308b\u90e8\u5206\u96c6\u5408\u3092\u751f\u6210\u3059\u308b\u691c\u7d22\u5206\u5c90\u3092\u526a\u5b9a\u3067\u304d\u307e\u3059\u3002</li> <li>\u90e8\u5206\u96c6\u5408\u548c\u554f\u984c\u3067\u306f\u3001\u914d\u5217\u5185\u306e\u7b49\u3057\u3044\u8981\u7d20\u306f\u91cd\u8907\u96c6\u5408\u3092\u751f\u6210\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u914d\u5217\u304c\u3059\u3067\u306b\u30bd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u3068\u3044\u3046\u524d\u63d0\u6761\u4ef6\u3092\u4f7f\u7528\u3057\u3066\u3001\u96a3\u63a5\u3059\u308b\u8981\u7d20\u304c\u7b49\u3057\u3044\u304b\u3069\u3046\u304b\u3092\u5224\u5b9a\u3059\u308b\u3053\u3068\u3067\u526a\u5b9a\u3092\u884c\u3044\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u7b49\u3057\u3044\u8981\u7d20\u304c\u30e9\u30a6\u30f3\u30c9\u3054\u3068\u306b\u4e00\u5ea6\u3060\u3051\u9078\u629e\u3055\u308c\u308b\u3053\u3068\u304c\u4fdd\u8a3c\u3055\u308c\u307e\u3059\u3002</li> <li>\\(n\\) \u30af\u30a4\u30fc\u30f3\u554f\u984c\u306f\u30012\u3064\u306e\u30af\u30a4\u30fc\u30f3\u304c\u4e92\u3044\u306b\u653b\u6483\u3067\u304d\u306a\u3044\u3088\u3046\u306b \\(n \\times n\\) \u306e\u30c1\u30a7\u30b9\u30dc\u30fc\u30c9\u306b \\(n\\) \u500b\u306e\u30af\u30a4\u30fc\u30f3\u3092\u914d\u7f6e\u3059\u308b\u65b9\u6848\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u3092\u76ee\u7684\u3068\u3057\u307e\u3059\u3002\u554f\u984c\u306e\u5236\u7d04\u306b\u306f\u884c\u5236\u7d04\u3001\u5217\u5236\u7d04\u3001\u304a\u3088\u3073\u4e3b\u5bfe\u89d2\u7dda\u3068\u526f\u5bfe\u89d2\u7dda\u306e\u5236\u7d04\u304c\u542b\u307e\u308c\u307e\u3059\u3002\u884c\u5236\u7d04\u3092\u6e80\u305f\u3059\u305f\u3081\u306b\u3001\u884c\u3054\u3068\u306b1\u3064\u306e\u30af\u30a4\u30fc\u30f3\u3092\u914d\u7f6e\u3059\u308b\u6226\u7565\u3092\u63a1\u7528\u3057\u3001\u5404\u884c\u306b1\u3064\u306e\u30af\u30a4\u30fc\u30f3\u304c\u914d\u7f6e\u3055\u308c\u308b\u3053\u3068\u3092\u4fdd\u8a3c\u3057\u307e\u3059\u3002</li> <li>\u5217\u5236\u7d04\u3068\u5bfe\u89d2\u7dda\u5236\u7d04\u306e\u51e6\u7406\u306f\u4f3c\u3066\u3044\u307e\u3059\u3002\u5217\u5236\u7d04\u306b\u3064\u3044\u3066\u306f\u3001\u5404\u5217\u306b\u30af\u30a4\u30fc\u30f3\u304c\u3042\u308b\u304b\u3069\u3046\u304b\u3092\u8a18\u9332\u3059\u308b\u914d\u5217\u3092\u4f7f\u7528\u3057\u3001\u9078\u629e\u3055\u308c\u305f\u30bb\u30eb\u304c\u5408\u6cd5\u304b\u3069\u3046\u304b\u3092\u793a\u3057\u307e\u3059\u3002\u5bfe\u89d2\u7dda\u5236\u7d04\u306b\u3064\u3044\u3066\u306f\u30012\u3064\u306e\u914d\u5217\u3092\u4f7f\u7528\u3057\u3066\u4e3b\u5bfe\u89d2\u7dda\u3068\u526f\u5bfe\u89d2\u7dda\u306b\u305d\u308c\u305e\u308c\u30af\u30a4\u30fc\u30f3\u306e\u5b58\u5728\u3092\u8a18\u9332\u3057\u307e\u3059\u3002\u8ab2\u984c\u306f\u3001\u540c\u3058\u4e3b\u5bfe\u89d2\u7dda\u307e\u305f\u306f\u526f\u5bfe\u89d2\u7dda\u4e0a\u306e\u30bb\u30eb\u306e\u884c\u3068\u5217\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u9593\u306e\u95a2\u4fc2\u3092\u6c7a\u5b9a\u3059\u308b\u3053\u3068\u3067\u3059\u3002</li> </ul>"},{"location":"chapter_backtracking/summary/#2-q-a","title":"2. \u00a0 Q &amp; A","text":"<p>Q: \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u3068\u518d\u5e30\u306e\u95a2\u4fc2\u3092\u3069\u306e\u3088\u3046\u306b\u7406\u89e3\u3059\u308c\u3070\u3088\u3044\u3067\u3059\u304b\uff1f</p> <p>\u5168\u4f53\u7684\u306b\u3001\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u306f\u300c\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u6226\u7565\u300d\u3067\u3042\u308a\u3001\u518d\u5e30\u306f\u3088\u308a\u300c\u30c4\u30fc\u30eb\u300d\u3067\u3059\u3002</p> <ul> <li>\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u901a\u5e38\u518d\u5e30\u306b\u57fa\u3065\u3044\u3066\u3044\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u306f\u518d\u5e30\u306e\u5fdc\u7528\u30b7\u30ca\u30ea\u30aa\u306e\u4e00\u3064\u3067\u3042\u308a\u3001\u7279\u306b\u691c\u7d22\u554f\u984c\u306b\u304a\u3044\u3066\u3067\u3059\u3002</li> <li>\u518d\u5e30\u306e\u69cb\u9020\u306f\u300c\u90e8\u5206\u554f\u984c\u5206\u89e3\u300d\u306e\u554f\u984c\u89e3\u6c7a\u30d1\u30e9\u30c0\u30a4\u30e0\u3092\u53cd\u6620\u3057\u307e\u3059\u3002\u5206\u5272\u7d71\u6cbb\u3001\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u3001\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\uff08\u30e1\u30e2\u5316\u518d\u5e30\uff09\u3092\u542b\u3080\u554f\u984c\u306e\u89e3\u6c7a\u3067\u3088\u304f\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_computational_complexity/","title":"\u7b2c 2 \u7ae0 \u00a0 \u8907\u96d1\u5ea6\u89e3\u6790","text":"<p>Abstract</p> <p>\u8907\u96d1\u5ea6\u89e3\u6790\u306f\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5e83\u5927\u306a\u5b87\u5b99\u306b\u304a\u3051\u308b\u6642\u7a7a\u306e\u30ca\u30d3\u30b2\u30fc\u30bf\u30fc\u306e\u3088\u3046\u306a\u3082\u306e\u3067\u3059\u3002</p> <p>\u6642\u9593\u3068\u7a7a\u9593\u306e\u6b21\u5143\u3092\u3088\u308a\u6df1\u304f\u63a2\u6c42\u3057\u3001\u3088\u308a\u512a\u96c5\u306a\u89e3\u6c7a\u7b56\u3092\u6c42\u3081\u308b\u305f\u3081\u306e\u30ac\u30a4\u30c9\u3068\u306a\u308a\u307e\u3059\u3002</p>"},{"location":"chapter_computational_complexity/#_1","title":"\u7ae0\u306e\u5185\u5bb9","text":"<ul> <li>2.1 \u00a0 \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u52b9\u7387\u8a55\u4fa1</li> <li>2.2 \u00a0 \u53cd\u5fa9\u3068\u518d\u5e30</li> <li>2.3 \u00a0 \u6642\u9593\u8a08\u7b97\u91cf</li> <li>2.4 \u00a0 \u7a7a\u9593\u8a08\u7b97\u91cf</li> <li>2.5 \u00a0 \u307e\u3068\u3081</li> </ul>"},{"location":"chapter_computational_complexity/iteration_and_recursion/","title":"2.2 \u00a0 \u53cd\u5fa9\u3068\u518d\u5e30","text":"<p>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306b\u304a\u3044\u3066\u3001\u30bf\u30b9\u30af\u306e\u7e70\u308a\u8fd4\u3057\u5b9f\u884c\u306f\u975e\u5e38\u306b\u4e00\u822c\u7684\u3067\u3042\u308a\u3001\u8907\u96d1\u5ea6\u306e\u5206\u6790\u3068\u5bc6\u63a5\u306b\u95a2\u4fc2\u3057\u3066\u3044\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u6642\u9593\u8a08\u7b97\u91cf\u3068\u7a7a\u9593\u8a08\u7b97\u91cf\u306e\u6982\u5ff5\u3092\u8a73\u3057\u304f\u5b66\u3076\u524d\u306b\u3001\u307e\u305a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3067\u7e70\u308a\u8fd4\u3057\u30bf\u30b9\u30af\u3092\u5b9f\u88c5\u3059\u308b\u65b9\u6cd5\u3092\u63a2\u7a76\u3057\u307e\u3057\u3087\u3046\u3002\u3053\u308c\u306b\u306f\u30012\u3064\u306e\u57fa\u672c\u7684\u306a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u5236\u5fa1\u69cb\u9020\u3067\u3042\u308b\u53cd\u5fa9\u3068\u518d\u5e30\u306e\u7406\u89e3\u304c\u542b\u307e\u308c\u307e\u3059\u3002</p>"},{"location":"chapter_computational_complexity/iteration_and_recursion/#221","title":"2.2.1 \u00a0 \u53cd\u5fa9","text":"<p>\u53cd\u5fa9\u306f\u3001\u30bf\u30b9\u30af\u3092\u7e70\u308a\u8fd4\u3057\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u5236\u5fa1\u69cb\u9020\u3067\u3059\u3002\u53cd\u5fa9\u3067\u306f\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u306f\u7279\u5b9a\u306e\u6761\u4ef6\u304c\u6e80\u305f\u3055\u308c\u3066\u3044\u308b\u9650\u308a\u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u3092\u7e70\u308a\u8fd4\u3057\u5b9f\u884c\u3057\u3001\u3053\u306e\u6761\u4ef6\u304c\u6e80\u305f\u3055\u308c\u306a\u304f\u306a\u308b\u307e\u3067\u7d9a\u3051\u307e\u3059\u3002</p>"},{"location":"chapter_computational_complexity/iteration_and_recursion/#1-for","title":"1. \u00a0 for\u30eb\u30fc\u30d7","text":"<p><code>for</code>\u30eb\u30fc\u30d7\u306f\u53cd\u5fa9\u306e\u6700\u3082\u4e00\u822c\u7684\u306a\u5f62\u5f0f\u306e1\u3064\u3067\u3042\u308a\u3001\u53cd\u5fa9\u56de\u6570\u304c\u4e8b\u524d\u306b\u5206\u304b\u3063\u3066\u3044\u308b\u5834\u5408\u306b\u7279\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002</p> <p>\u4ee5\u4e0b\u306e\u95a2\u6570\u306f<code>for</code>\u30eb\u30fc\u30d7\u3092\u4f7f\u7528\u3057\u3066\\(1 + 2 + \\dots + n\\)\u306e\u5408\u8a08\u3092\u5b9f\u884c\u3057\u3001\u5408\u8a08\u3092\u5909\u6570<code>res</code>\u306b\u683c\u7d0d\u3057\u307e\u3059\u3002Python\u3067\u306f\u3001<code>range(a, b)</code>\u306f<code>a</code>\u3092\u542b\u307f<code>b</code>\u3092\u9664\u304f\u533a\u9593\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3064\u307e\u308a\u3001\\(a\\)\u304b\u3089\\(b\u22121\\)\u307e\u3067\u306e\u7bc4\u56f2\u3067\u53cd\u5fa9\u3057\u307e\u3059\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby iteration.py<pre><code>def for_loop(n: int) -&gt; int:\n \"\"\"for\u30eb\u30fc\u30d7\"\"\"\n res = 0\n # 1, 2, ..., n-1, n \u306e\u5408\u8a08\u3092\u30eb\u30fc\u30d7\n for i in range(1, n + 1):\n res += i\n return res\n</code></pre> iteration.cpp<pre><code>/* for \u30eb\u30fc\u30d7 */\nint forLoop(int n) {\n int res = 0;\n // 1, 2, ..., n-1, n \u306e\u5408\u8a08\u3092\u30eb\u30fc\u30d7\u8a08\u7b97\n for (int i = 1; i &lt;= n; ++i) {\n res += i;\n }\n return res;\n}\n</code></pre> iteration.java<pre><code>/* for \u30eb\u30fc\u30d7 */\nint forLoop(int n) {\n int res = 0;\n // 1, 2, ..., n-1, n \u306e\u5408\u8a08\u3092\u30eb\u30fc\u30d7\u8a08\u7b97\n for (int i = 1; i &lt;= n; i++) {\n res += i;\n }\n return res;\n}\n</code></pre> iteration.cs<pre><code>[class]{iteration}-[func]{ForLoop}\n</code></pre> iteration.go<pre><code>[class]{}-[func]{forLoop}\n</code></pre> iteration.swift<pre><code>[class]{}-[func]{forLoop}\n</code></pre> iteration.js<pre><code>[class]{}-[func]{forLoop}\n</code></pre> iteration.ts<pre><code>[class]{}-[func]{forLoop}\n</code></pre> iteration.dart<pre><code>[class]{}-[func]{forLoop}\n</code></pre> iteration.rs<pre><code>[class]{}-[func]{for_loop}\n</code></pre> iteration.c<pre><code>[class]{}-[func]{forLoop}\n</code></pre> iteration.kt<pre><code>[class]{}-[func]{forLoop}\n</code></pre> iteration.rb<pre><code>[class]{}-[func]{for_loop}\n</code></pre> <p>\u4ee5\u4e0b\u306e\u56f3\u306f\u3053\u306e\u5408\u8a08\u95a2\u6570\u3092\u8868\u3057\u3066\u3044\u307e\u3059\u3002</p> <p></p> <p> \u56f3 2-1 \u00a0 Flowchart of the sum function </p> <p>\u3053\u306e\u5408\u8a08\u95a2\u6570\u3067\u306e\u64cd\u4f5c\u6570\u306f\u5165\u529b\u30c7\u30fc\u30bf\u306e\u30b5\u30a4\u30ba\\(n\\)\u306b\u6bd4\u4f8b\u3059\u308b\u3001\u3064\u307e\u308a\u7dda\u5f62\u95a2\u4fc2\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u300c\u7dda\u5f62\u95a2\u4fc2\u300d\u3053\u305d\u304c\u6642\u9593\u8a08\u7b97\u91cf\u304c\u8a18\u8ff0\u3059\u308b\u3082\u306e\u3067\u3059\u3002\u3053\u306e\u30c8\u30d4\u30c3\u30af\u306b\u3064\u3044\u3066\u306f\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u8a73\u3057\u304f\u8aac\u660e\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_computational_complexity/iteration_and_recursion/#2-while","title":"2. \u00a0 while\u30eb\u30fc\u30d7","text":"<p><code>for</code>\u30eb\u30fc\u30d7\u3068\u540c\u69d8\u306b\u3001<code>while</code>\u30eb\u30fc\u30d7\u306f\u53cd\u5fa9\u3092\u5b9f\u88c5\u3059\u308b\u305f\u3081\u306e\u3082\u30461\u3064\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u3067\u3059\u3002<code>while</code>\u30eb\u30fc\u30d7\u3067\u306f\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u306f\u5404\u53cd\u5fa9\u306e\u958b\u59cb\u6642\u306b\u6761\u4ef6\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3001\u6761\u4ef6\u304c\u771f\u306e\u5834\u5408\u306f\u5b9f\u884c\u3092\u7d99\u7d9a\u3057\u3001\u305d\u3046\u3067\u306a\u3051\u308c\u3070\u30eb\u30fc\u30d7\u3092\u7d42\u4e86\u3057\u307e\u3059\u3002</p> <p>\u4ee5\u4e0b\u3067\u306f<code>while</code>\u30eb\u30fc\u30d7\u3092\u4f7f\u7528\u3057\u3066\u5408\u8a08\\(1 + 2 + \\dots + n\\)\u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby iteration.py<pre><code>def while_loop(n: int) -&gt; int:\n \"\"\"while\u30eb\u30fc\u30d7\"\"\"\n res = 0\n i = 1 # \u6761\u4ef6\u5909\u6570\u3092\u521d\u671f\u5316\n # 1, 2, ..., n-1, n \u306e\u5408\u8a08\u3092\u30eb\u30fc\u30d7\n while i &lt;= n:\n res += i\n i += 1 # \u6761\u4ef6\u5909\u6570\u3092\u66f4\u65b0\n return res\n</code></pre> iteration.cpp<pre><code>/* while \u30eb\u30fc\u30d7 */\nint whileLoop(int n) {\n int res = 0;\n int i = 1; // \u6761\u4ef6\u5909\u6570\u3092\u521d\u671f\u5316\n // 1, 2, ..., n-1, n \u306e\u5408\u8a08\u3092\u30eb\u30fc\u30d7\u8a08\u7b97\n while (i &lt;= n) {\n res += i;\n i++; // \u6761\u4ef6\u5909\u6570\u3092\u66f4\u65b0\n }\n return res;\n}\n</code></pre> iteration.java<pre><code>/* while \u30eb\u30fc\u30d7 */\nint whileLoop(int n) {\n int res = 0;\n int i = 1; // \u6761\u4ef6\u5909\u6570\u3092\u521d\u671f\u5316\n // 1, 2, ..., n-1, n \u306e\u5408\u8a08\u3092\u30eb\u30fc\u30d7\u8a08\u7b97\n while (i &lt;= n) {\n res += i;\n i++; // \u6761\u4ef6\u5909\u6570\u3092\u66f4\u65b0\n }\n return res;\n}\n</code></pre> iteration.cs<pre><code>[class]{iteration}-[func]{WhileLoop}\n</code></pre> iteration.go<pre><code>[class]{}-[func]{whileLoop}\n</code></pre> iteration.swift<pre><code>[class]{}-[func]{whileLoop}\n</code></pre> iteration.js<pre><code>[class]{}-[func]{whileLoop}\n</code></pre> iteration.ts<pre><code>[class]{}-[func]{whileLoop}\n</code></pre> iteration.dart<pre><code>[class]{}-[func]{whileLoop}\n</code></pre> iteration.rs<pre><code>[class]{}-[func]{while_loop}\n</code></pre> iteration.c<pre><code>[class]{}-[func]{whileLoop}\n</code></pre> iteration.kt<pre><code>[class]{}-[func]{whileLoop}\n</code></pre> iteration.rb<pre><code>[class]{}-[func]{while_loop}\n</code></pre> <p><code>while</code>\u30eb\u30fc\u30d7\u306f<code>for</code>\u30eb\u30fc\u30d7\u3088\u308a\u3082\u67d4\u8edf\u6027\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u7279\u306b\u3001\u6761\u4ef6\u5909\u6570\u306e\u30ab\u30b9\u30bf\u30e0\u521d\u671f\u5316\u3068\u5404\u30b9\u30c6\u30c3\u30d7\u3067\u306e\u5909\u66f4\u304c\u53ef\u80fd\u3067\u3059\u3002</p> <p>\u4f8b\u3048\u3070\u3001\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u6761\u4ef6\u5909\u6570\\(i\\)\u304c\u5404\u30e9\u30a6\u30f3\u30c9\u30672\u56de\u66f4\u65b0\u3055\u308c\u307e\u3059\u304c\u3001\u3053\u308c\u306f<code>for</code>\u30eb\u30fc\u30d7\u3067\u306f\u5b9f\u88c5\u304c\u4e0d\u4fbf\u3067\u3059\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby iteration.py<pre><code>def while_loop_ii(n: int) -&gt; int:\n \"\"\"while\u30eb\u30fc\u30d7\uff082\u3064\u306e\u66f4\u65b0\uff09\"\"\"\n res = 0\n i = 1 # \u6761\u4ef6\u5909\u6570\u3092\u521d\u671f\u5316\n # 1, 4, 10, ... \u306e\u5408\u8a08\u3092\u30eb\u30fc\u30d7\n while i &lt;= n:\n res += i\n # \u6761\u4ef6\u5909\u6570\u3092\u66f4\u65b0\n i += 1\n i *= 2\n return res\n</code></pre> iteration.cpp<pre><code>/* while \u30eb\u30fc\u30d7\uff082\u3064\u306e\u66f4\u65b0\uff09 */\nint whileLoopII(int n) {\n int res = 0;\n int i = 1; // \u6761\u4ef6\u5909\u6570\u3092\u521d\u671f\u5316\n // 1, 4, 10, ... \u306e\u5408\u8a08\u3092\u30eb\u30fc\u30d7\u8a08\u7b97\n while (i &lt;= n) {\n res += i;\n // \u6761\u4ef6\u5909\u6570\u3092\u66f4\u65b0\n i++;\n i *= 2;\n }\n return res;\n}\n</code></pre> iteration.java<pre><code>/* while \u30eb\u30fc\u30d7\uff082\u3064\u306e\u66f4\u65b0\uff09 */\nint whileLoopII(int n) {\n int res = 0;\n int i = 1; // \u6761\u4ef6\u5909\u6570\u3092\u521d\u671f\u5316\n // 1, 4, 10, ... \u306e\u5408\u8a08\u3092\u30eb\u30fc\u30d7\u8a08\u7b97\n while (i &lt;= n) {\n res += i;\n // \u6761\u4ef6\u5909\u6570\u3092\u66f4\u65b0\n i++;\n i *= 2;\n }\n return res;\n}\n</code></pre> iteration.cs<pre><code>[class]{iteration}-[func]{WhileLoopII}\n</code></pre> iteration.go<pre><code>[class]{}-[func]{whileLoopII}\n</code></pre> iteration.swift<pre><code>[class]{}-[func]{whileLoopII}\n</code></pre> iteration.js<pre><code>[class]{}-[func]{whileLoopII}\n</code></pre> iteration.ts<pre><code>[class]{}-[func]{whileLoopII}\n</code></pre> iteration.dart<pre><code>[class]{}-[func]{whileLoopII}\n</code></pre> iteration.rs<pre><code>[class]{}-[func]{while_loop_ii}\n</code></pre> iteration.c<pre><code>[class]{}-[func]{whileLoopII}\n</code></pre> iteration.kt<pre><code>[class]{}-[func]{whileLoopII}\n</code></pre> iteration.rb<pre><code>[class]{}-[func]{while_loop_ii}\n</code></pre> <p>\u5168\u4f53\u7684\u306b\u3001<code>for</code>\u30eb\u30fc\u30d7\u306f\u3088\u308a\u7c21\u6f54\u3067\u3001<code>while</code>\u30eb\u30fc\u30d7\u306f\u3088\u308a\u67d4\u8edf\u3067\u3059\u3002\u3069\u3061\u3089\u3082\u53cd\u5fa9\u69cb\u9020\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002\u3069\u3061\u3089\u3092\u4f7f\u7528\u3059\u308b\u304b\u306f\u3001\u554f\u984c\u306e\u5177\u4f53\u7684\u306a\u8981\u4ef6\u306b\u57fa\u3065\u3044\u3066\u6c7a\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</p>"},{"location":"chapter_computational_complexity/iteration_and_recursion/#3","title":"3. \u00a0 \u30cd\u30b9\u30c8\u3057\u305f\u30eb\u30fc\u30d7","text":"<p>1\u3064\u306e\u30eb\u30fc\u30d7\u69cb\u9020\u3092\u5225\u306e\u30eb\u30fc\u30d7\u69cb\u9020\u5185\u306b\u30cd\u30b9\u30c8\u3067\u304d\u307e\u3059\u3002\u4ee5\u4e0b\u306f<code>for</code>\u30eb\u30fc\u30d7\u3092\u4f7f\u7528\u3057\u305f\u4f8b\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby iteration.py<pre><code>def nested_for_loop(n: int) -&gt; str:\n \"\"\"\u4e8c\u91cdfor\u30eb\u30fc\u30d7\"\"\"\n res = \"\"\n # i = 1, 2, ..., n-1, n \u3092\u30eb\u30fc\u30d7\n for i in range(1, n + 1):\n # j = 1, 2, ..., n-1, n \u3092\u30eb\u30fc\u30d7\n for j in range(1, n + 1):\n res += f\"({i}, {j}), \"\n return res\n</code></pre> iteration.cpp<pre><code>/* 2\u91cd for \u30eb\u30fc\u30d7 */\nstring nestedForLoop(int n) {\n ostringstream res;\n // \u30eb\u30fc\u30d7 i = 1, 2, ..., n-1, n\n for (int i = 1; i &lt;= n; ++i) {\n // \u30eb\u30fc\u30d7 j = 1, 2, ..., n-1, n\n for (int j = 1; j &lt;= n; ++j) {\n res &lt;&lt; \"(\" &lt;&lt; i &lt;&lt; \", \" &lt;&lt; j &lt;&lt; \"), \";\n }\n }\n return res.str();\n}\n</code></pre> iteration.java<pre><code>/* 2\u91cd for \u30eb\u30fc\u30d7 */\nString nestedForLoop(int n) {\n StringBuilder res = new StringBuilder();\n // \u30eb\u30fc\u30d7 i = 1, 2, ..., n-1, n\n for (int i = 1; i &lt;= n; i++) {\n // \u30eb\u30fc\u30d7 j = 1, 2, ..., n-1, n\n for (int j = 1; j &lt;= n; j++) {\n res.append(\"(\" + i + \", \" + j + \"), \");\n }\n }\n return res.toString();\n}\n</code></pre> iteration.cs<pre><code>[class]{iteration}-[func]{NestedForLoop}\n</code></pre> iteration.go<pre><code>[class]{}-[func]{nestedForLoop}\n</code></pre> iteration.swift<pre><code>[class]{}-[func]{nestedForLoop}\n</code></pre> iteration.js<pre><code>[class]{}-[func]{nestedForLoop}\n</code></pre> iteration.ts<pre><code>[class]{}-[func]{nestedForLoop}\n</code></pre> iteration.dart<pre><code>[class]{}-[func]{nestedForLoop}\n</code></pre> iteration.rs<pre><code>[class]{}-[func]{nested_for_loop}\n</code></pre> iteration.c<pre><code>[class]{}-[func]{nestedForLoop}\n</code></pre> iteration.kt<pre><code>[class]{}-[func]{nestedForLoop}\n</code></pre> iteration.rb<pre><code>[class]{}-[func]{nested_for_loop}\n</code></pre> <p>\u4ee5\u4e0b\u306e\u56f3\u306f\u3053\u306e\u30cd\u30b9\u30c8\u3057\u305f\u30eb\u30fc\u30d7\u3092\u8868\u3057\u3066\u3044\u307e\u3059\u3002</p> <p></p> <p> \u56f3 2-2 \u00a0 Flowchart of the nested loop </p> <p>\u3053\u306e\u3088\u3046\u306a\u5834\u5408\u3001\u95a2\u6570\u306e\u64cd\u4f5c\u6570\u306f\\(n^2\\)\u306b\u6bd4\u4f8b\u3057\u307e\u3059\u3002\u3064\u307e\u308a\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5b9f\u884c\u6642\u9593\u3068\u5165\u529b\u30c7\u30fc\u30bf\u306e\u30b5\u30a4\u30ba\\(n\\)\u306b\u306f\u300c\u4e8c\u6b21\u95a2\u4fc2\u300d\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>\u3055\u3089\u306b\u30cd\u30b9\u30c8\u3057\u305f\u30eb\u30fc\u30d7\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3067\u8907\u96d1\u5ea6\u3092\u9ad8\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u5404\u30ec\u30d9\u30eb\u306e\u30cd\u30b9\u30c8\u306f\u4e8b\u5b9f\u4e0a\u300c\u6b21\u5143\u3092\u5897\u52a0\u300d\u3055\u305b\u3001\u6642\u9593\u8a08\u7b97\u91cf\u3092\u300c\u4e09\u6b21\u300d\u3001\u300c\u56db\u6b21\u300d\u306a\u3069\u306b\u5f15\u304d\u4e0a\u3052\u307e\u3059\u3002</p>"},{"location":"chapter_computational_complexity/iteration_and_recursion/#222","title":"2.2.2 \u00a0 \u518d\u5e30","text":"<p>\u518d\u5e30\u306f\u3001\u95a2\u6570\u304c\u81ea\u5206\u81ea\u8eab\u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u3067\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u6226\u7565\u3067\u3059\u3002\u4e3b\u306b2\u3064\u306e\u30d5\u30a7\u30fc\u30ba\u304c\u542b\u307e\u308c\u307e\u3059\uff1a</p> <ol> <li>\u547c\u3073\u51fa\u3057: \u30d7\u30ed\u30b0\u30e9\u30e0\u304c\u81ea\u5206\u81ea\u8eab\u3092\u7e70\u308a\u8fd4\u3057\u547c\u3073\u51fa\u3057\u3001\u3057\u3070\u3057\u3070\u3088\u308a\u5c0f\u3055\u3044\u307e\u305f\u306f\u3088\u308a\u5358\u7d14\u306a\u5f15\u6570\u3067\u3001\u300c\u7d42\u4e86\u6761\u4ef6\u300d\u306b\u5411\u304b\u3063\u3066\u9032\u307f\u307e\u3059\u3002</li> <li>\u8fd4\u5374: \u300c\u7d42\u4e86\u6761\u4ef6\u300d\u304c\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u308b\u3068\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u306f\u6700\u3082\u6df1\u3044\u518d\u5e30\u95a2\u6570\u304b\u3089\u8fd4\u308a\u59cb\u3081\u3001\u5404\u30ec\u30a4\u30e4\u30fc\u306e\u7d50\u679c\u3092\u96c6\u7d04\u3057\u307e\u3059\u3002</li> </ol> <p>\u5b9f\u88c5\u306e\u89b3\u70b9\u304b\u3089\u3001\u518d\u5e30\u30b3\u30fc\u30c9\u306f\u4e3b\u306b3\u3064\u306e\u8981\u7d20\u3092\u542b\u307f\u307e\u3059\u3002</p> <ol> <li>\u7d42\u4e86\u6761\u4ef6: \u300c\u547c\u3073\u51fa\u3057\u300d\u304b\u3089\u300c\u8fd4\u5374\u300d\u306b\u3044\u3064\u5207\u308a\u66ff\u3048\u308b\u304b\u3092\u6c7a\u5b9a\u3057\u307e\u3059\u3002</li> <li>\u518d\u5e30\u547c\u3073\u51fa\u3057: \u300c\u547c\u3073\u51fa\u3057\u300d\u306b\u5bfe\u5fdc\u3057\u3001\u95a2\u6570\u304c\u81ea\u5206\u81ea\u8eab\u3092\u547c\u3073\u51fa\u3057\u3001\u901a\u5e38\u306f\u3088\u308a\u5c0f\u3055\u3044\u307e\u305f\u306f\u3088\u308a\u5358\u7d14\u5316\u3055\u308c\u305f\u30d1\u30e9\u30e1\u30fc\u30bf\u3067\u884c\u3044\u307e\u3059\u3002</li> <li>\u7d50\u679c\u306e\u8fd4\u5374: \u300c\u8fd4\u5374\u300d\u306b\u5bfe\u5fdc\u3057\u3001\u73fe\u5728\u306e\u518d\u5e30\u30ec\u30d9\u30eb\u306e\u7d50\u679c\u304c\u524d\u306e\u30ec\u30a4\u30e4\u30fc\u306b\u8fd4\u3055\u308c\u307e\u3059\u3002</li> </ol> <p>\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u3092\u89b3\u5bdf\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u5358\u7d14\u306b\u95a2\u6570<code>recur(n)</code>\u3092\u547c\u3073\u51fa\u3059\u3060\u3051\u3067\\(1 + 2 + \\dots + n\\)\u306e\u5408\u8a08\u3092\u8a08\u7b97\u3067\u304d\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby recursion.py<pre><code>def recur(n: int) -&gt; int:\n \"\"\"\u518d\u5e30\"\"\"\n # \u7d42\u4e86\u6761\u4ef6\n if n == 1:\n return 1\n # \u518d\u5e30\uff1a\u518d\u5e30\u547c\u3073\u51fa\u3057\n res = recur(n - 1)\n # \u5fa9\u5e30\uff1a\u7d50\u679c\u3092\u8fd4\u3059\n return n + res\n</code></pre> recursion.cpp<pre><code>/* \u518d\u5e30 */\nint recur(int n) {\n // \u7d42\u4e86\u6761\u4ef6\n if (n == 1)\n return 1;\n // \u518d\u5e30\uff1a\u518d\u5e30\u547c\u3073\u51fa\u3057\n int res = recur(n - 1);\n // \u623b\u308a\u5024\uff1a\u7d50\u679c\u3092\u8fd4\u3059\n return n + res;\n}\n</code></pre> recursion.java<pre><code>/* \u518d\u5e30 */\nint recur(int n) {\n // \u7d42\u4e86\u6761\u4ef6\n if (n == 1)\n return 1;\n // \u518d\u5e30\uff1a\u518d\u5e30\u547c\u3073\u51fa\u3057\n int res = recur(n - 1);\n // \u623b\u308a\u5024\uff1a\u7d50\u679c\u3092\u8fd4\u3059\n return n + res;\n}\n</code></pre> recursion.cs<pre><code>[class]{recursion}-[func]{Recur}\n</code></pre> recursion.go<pre><code>[class]{}-[func]{recur}\n</code></pre> recursion.swift<pre><code>[class]{}-[func]{recur}\n</code></pre> recursion.js<pre><code>[class]{}-[func]{recur}\n</code></pre> recursion.ts<pre><code>[class]{}-[func]{recur}\n</code></pre> recursion.dart<pre><code>[class]{}-[func]{recur}\n</code></pre> recursion.rs<pre><code>[class]{}-[func]{recur}\n</code></pre> recursion.c<pre><code>[class]{}-[func]{recur}\n</code></pre> recursion.kt<pre><code>[class]{}-[func]{recur}\n</code></pre> recursion.rb<pre><code>[class]{}-[func]{recur}\n</code></pre> <p>\u4ee5\u4e0b\u306e\u56f3\u306f\u3053\u306e\u95a2\u6570\u306e\u518d\u5e30\u30d7\u30ed\u30bb\u30b9\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002</p> <p></p> <p> \u56f3 2-3 \u00a0 Recursive process of the sum function </p> <p>\u53cd\u5fa9\u3068\u518d\u5e30\u306f\u8a08\u7b97\u306e\u89b3\u70b9\u304b\u3089\u540c\u3058\u7d50\u679c\u3092\u9054\u6210\u3067\u304d\u307e\u3059\u304c\u3001\u305d\u308c\u3089\u306f\u601d\u8003\u3068\u554f\u984c\u89e3\u6c7a\u306e\u5168\u304f\u7570\u306a\u308b\u30d1\u30e9\u30c0\u30a4\u30e0\u3092\u8868\u3057\u307e\u3059\u3002</p> <ul> <li>\u53cd\u5fa9: \u300c\u30dc\u30c8\u30e0\u30a2\u30c3\u30d7\u300d\u3067\u554f\u984c\u3092\u89e3\u6c7a\u3057\u307e\u3059\u3002\u6700\u3082\u57fa\u672c\u7684\u306a\u30b9\u30c6\u30c3\u30d7\u304b\u3089\u59cb\u307e\u308a\u3001\u30bf\u30b9\u30af\u304c\u5b8c\u4e86\u3059\u308b\u307e\u3067\u3053\u308c\u3089\u306e\u30b9\u30c6\u30c3\u30d7\u3092\u7e70\u308a\u8fd4\u3057\u8ffd\u52a0\u307e\u305f\u306f\u7d2f\u7a4d\u3057\u307e\u3059\u3002</li> <li>\u518d\u5e30: \u300c\u30c8\u30c3\u30d7\u30c0\u30a6\u30f3\u300d\u3067\u554f\u984c\u3092\u89e3\u6c7a\u3057\u307e\u3059\u3002\u5143\u306e\u554f\u984c\u3092\u3088\u308a\u5c0f\u3055\u306a\u30b5\u30d6\u554f\u984c\u306b\u5206\u89e3\u3057\u3001\u5404\u30b5\u30d6\u554f\u984c\u306f\u5143\u306e\u554f\u984c\u3068\u540c\u3058\u5f62\u5f0f\u3092\u6301\u3061\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30b5\u30d6\u554f\u984c\u306f\u3001\u89e3\u304c\u5206\u304b\u3063\u3066\u3044\u308b\u30d9\u30fc\u30b9\u30b1\u30fc\u30b9\u3067\u505c\u6b62\u3059\u308b\u307e\u3067\u3001\u3055\u3089\u306b\u5c0f\u3055\u306a\u30b5\u30d6\u554f\u984c\u306b\u5206\u89e3\u3055\u308c\u307e\u3059\u3002</li> </ul> <p>\u5148\u307b\u3069\u306e\u5408\u8a08\u95a2\u6570\u306e\u4f8b\u3092\u53d6\u3063\u3066\u307f\u307e\u3057\u3087\u3046\u3002\\(f(n) = 1 + 2 + \\dots + n\\)\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u3002</p> <ul> <li>\u53cd\u5fa9: \u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u3067\u306f\u3001\u30eb\u30fc\u30d7\u5185\u3067\u5408\u8a08\u30d7\u30ed\u30bb\u30b9\u3092\u30b7\u30df\u30e5\u30ec\u30fc\u30c8\u3057\u307e\u3059\u3002\\(1\\)\u304b\u3089\u59cb\u307e\u308a\\(n\\)\u307e\u3067\u6a2a\u65ad\u3057\u3001\u5404\u53cd\u5fa9\u3067\u5408\u8a08\u64cd\u4f5c\u3092\u5b9f\u884c\u3057\u3066\u6700\u7d42\u7684\u306b\\(f(n)\\)\u3092\u8a08\u7b97\u3057\u307e\u3059\u3002</li> <li>\u518d\u5e30: \u3053\u3053\u3067\u306f\u3001\u554f\u984c\u306f\u30b5\u30d6\u554f\u984c\u306b\u5206\u89e3\u3055\u308c\u307e\u3059\uff1a\\(f(n) = n + f(n-1)\\)\u3002\u3053\u306e\u5206\u89e3\u306f\u3001\u30d9\u30fc\u30b9\u30b1\u30fc\u30b9\u306e\\(f(1) = 1\\)\u306b\u5230\u9054\u3059\u308b\u307e\u3067\u518d\u5e30\u7684\u306b\u7d9a\u304d\u3001\u305d\u3053\u3067\u518d\u5e30\u304c\u7d42\u4e86\u3057\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_computational_complexity/iteration_and_recursion/#1","title":"1. \u00a0 \u547c\u3073\u51fa\u3057\u30b9\u30bf\u30c3\u30af","text":"<p>\u518d\u5e30\u95a2\u6570\u304c\u81ea\u5206\u81ea\u8eab\u3092\u547c\u3073\u51fa\u3059\u305f\u3073\u306b\u3001\u30b7\u30b9\u30c6\u30e0\u306f\u65b0\u3057\u304f\u958b\u59cb\u3055\u308c\u305f\u95a2\u6570\u306b\u30e1\u30e2\u30ea\u3092\u5272\u308a\u5f53\u3066\u3066\u3001\u30ed\u30fc\u30ab\u30eb\u5909\u6570\u3001\u623b\u308a\u30a2\u30c9\u30ec\u30b9\u3001\u305d\u306e\u4ed6\u306e\u95a2\u9023\u60c5\u5831\u3092\u683c\u7d0d\u3057\u307e\u3059\u3002\u3053\u308c\u306f2\u3064\u306e\u4e3b\u8981\u306a\u7d50\u679c\u3092\u3082\u305f\u3089\u3057\u307e\u3059\u3002</p> <ul> <li>\u95a2\u6570\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30c7\u30fc\u30bf\u306f\u300c\u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593\u300d\u3068\u547c\u3070\u308c\u308b\u30e1\u30e2\u30ea\u9818\u57df\u306b\u683c\u7d0d\u3055\u308c\u3001\u95a2\u6570\u304c\u8fd4\u3055\u308c\u305f\u5f8c\u306b\u306e\u307f\u89e3\u653e\u3055\u308c\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u518d\u5e30\u306f\u4e00\u822c\u7684\u306b\u53cd\u5fa9\u3088\u308a\u3082\u591a\u304f\u306e\u30e1\u30e2\u30ea\u7a7a\u9593\u3092\u6d88\u8cbb\u3057\u307e\u3059\u3002</li> <li>\u518d\u5e30\u547c\u3073\u51fa\u3057\u306f\u8ffd\u52a0\u306e\u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9\u3092\u5c0e\u5165\u3057\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u518d\u5e30\u306f\u901a\u5e38\u30eb\u30fc\u30d7\u3088\u308a\u3082\u6642\u9593\u52b9\u7387\u304c\u52a3\u308a\u307e\u3059\u3002</li> </ul> <p>\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3055\u308c\u3066\u3044\u308b\u3088\u3046\u306b\u3001\u7d42\u4e86\u6761\u4ef6\u304c\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u308b\u524d\u306b\\(n\\)\u500b\u306e\u672a\u8fd4\u5374\u306e\u518d\u5e30\u95a2\u6570\u304c\u3042\u308a\u3001\u518d\u5e30\u306e\u6df1\u3055\u304c\\(n\\)\u3067\u3042\u308b\u3053\u3068\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002</p> <p></p> <p> \u56f3 2-4 \u00a0 Recursion call depth </p> <p>\u5b9f\u969b\u306b\u306f\u3001\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u8a31\u53ef\u3055\u308c\u308b\u518d\u5e30\u306e\u6df1\u3055\u306f\u901a\u5e38\u5236\u9650\u3055\u308c\u3066\u304a\u308a\u3001\u904e\u5ea6\u306b\u6df1\u3044\u518d\u5e30\u306f\u30b9\u30bf\u30c3\u30af\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u30a8\u30e9\u30fc\u3092\u5f15\u304d\u8d77\u3053\u3059\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</p>"},{"location":"chapter_computational_complexity/iteration_and_recursion/#2","title":"2. \u00a0 \u672b\u5c3e\u518d\u5e30","text":"<p>\u8208\u5473\u6df1\u3044\u3053\u3068\u306b\u3001\u95a2\u6570\u304c\u8fd4\u3059\u76f4\u524d\u306e\u6700\u5f8c\u306e\u30b9\u30c6\u30c3\u30d7\u3068\u3057\u3066\u518d\u5e30\u547c\u3073\u51fa\u3057\u3092\u5b9f\u884c\u3059\u308b\u5834\u5408\u3001\u30b3\u30f3\u30d1\u30a4\u30e9\u307e\u305f\u306f\u30a4\u30f3\u30bf\u30fc\u30d7\u30ea\u30bf\u30fc\u306b\u3088\u3063\u3066\u53cd\u5fa9\u3068\u540c\u3058\u7a7a\u9593\u52b9\u7387\u306b\u306a\u308b\u3088\u3046\u306b\u6700\u9069\u5316\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u30b7\u30ca\u30ea\u30aa\u306f\u672b\u5c3e\u518d\u5e30\u3068\u3057\u3066\u77e5\u3089\u308c\u3066\u3044\u307e\u3059\u3002</p> <ul> <li>\u901a\u5e38\u306e\u518d\u5e30: \u6a19\u6e96\u7684\u306a\u518d\u5e30\u3067\u306f\u3001\u95a2\u6570\u304c\u524d\u306e\u30ec\u30d9\u30eb\u306b\u623b\u3063\u305f\u3068\u304d\u3001\u3055\u3089\u306b\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u3057\u7d9a\u3051\u308b\u305f\u3081\u3001\u30b7\u30b9\u30c6\u30e0\u306f\u524d\u306e\u547c\u3073\u51fa\u3057\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u4fdd\u5b58\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u672b\u5c3e\u518d\u5e30: \u3053\u3053\u3067\u306f\u3001\u518d\u5e30\u547c\u3073\u51fa\u3057\u306f\u95a2\u6570\u304c\u8fd4\u3059\u524d\u306e\u6700\u7d42\u64cd\u4f5c\u3067\u3059\u3002\u3053\u308c\u306f\u3001\u524d\u306e\u30ec\u30d9\u30eb\u306b\u623b\u3063\u305f\u969b\u306b\u3001\u3055\u3089\u306a\u308b\u30a2\u30af\u30b7\u30e7\u30f3\u304c\u5fc5\u8981\u306a\u3044\u3053\u3068\u3092\u610f\u5473\u3059\u308b\u305f\u3081\u3001\u30b7\u30b9\u30c6\u30e0\u306f\u524d\u306e\u30ec\u30d9\u30eb\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u4fdd\u5b58\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u305b\u3093\u3002</li> </ul> <p>\u4f8b\u3048\u3070\u3001\\(1 + 2 + \\dots + n\\)\u306e\u8a08\u7b97\u3067\u306f\u3001\u7d50\u679c\u5909\u6570<code>res</code>\u3092\u95a2\u6570\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u306b\u3059\u308b\u3053\u3068\u3067\u3001\u672b\u5c3e\u518d\u5e30\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby recursion.py<pre><code>def tail_recur(n, res):\n \"\"\"\u672b\u5c3e\u518d\u5e30\"\"\"\n # \u7d42\u4e86\u6761\u4ef6\n if n == 0:\n return res\n # \u672b\u5c3e\u518d\u5e30\u547c\u3073\u51fa\u3057\n return tail_recur(n - 1, res + n)\n</code></pre> recursion.cpp<pre><code>/* \u672b\u5c3e\u518d\u5e30 */\nint tailRecur(int n, int res) {\n // \u7d42\u4e86\u6761\u4ef6\n if (n == 0)\n return res;\n // \u672b\u5c3e\u518d\u5e30\u547c\u3073\u51fa\u3057\n return tailRecur(n - 1, res + n);\n}\n</code></pre> recursion.java<pre><code>/* \u672b\u5c3e\u518d\u5e30 */\nint tailRecur(int n, int res) {\n // \u7d42\u4e86\u6761\u4ef6\n if (n == 0)\n return res;\n // \u672b\u5c3e\u518d\u5e30\u547c\u3073\u51fa\u3057\n return tailRecur(n - 1, res + n);\n}\n</code></pre> recursion.cs<pre><code>[class]{recursion}-[func]{TailRecur}\n</code></pre> recursion.go<pre><code>[class]{}-[func]{tailRecur}\n</code></pre> recursion.swift<pre><code>[class]{}-[func]{tailRecur}\n</code></pre> recursion.js<pre><code>[class]{}-[func]{tailRecur}\n</code></pre> recursion.ts<pre><code>[class]{}-[func]{tailRecur}\n</code></pre> recursion.dart<pre><code>[class]{}-[func]{tailRecur}\n</code></pre> recursion.rs<pre><code>[class]{}-[func]{tail_recur}\n</code></pre> recursion.c<pre><code>[class]{}-[func]{tailRecur}\n</code></pre> recursion.kt<pre><code>[class]{}-[func]{tailRecur}\n</code></pre> recursion.rb<pre><code>[class]{}-[func]{tail_recur}\n</code></pre> <p>\u672b\u5c3e\u518d\u5e30\u306e\u5b9f\u884c\u30d7\u30ed\u30bb\u30b9\u306f\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u901a\u5e38\u306e\u518d\u5e30\u3068\u672b\u5c3e\u518d\u5e30\u3092\u6bd4\u8f03\u3059\u308b\u3068\u3001\u5408\u8a08\u64cd\u4f5c\u306e\u30dd\u30a4\u30f3\u30c8\u304c\u7570\u306a\u308a\u307e\u3059\u3002</p> <ul> <li>\u901a\u5e38\u306e\u518d\u5e30: \u5408\u8a08\u64cd\u4f5c\u306f\u300c\u8fd4\u5374\u300d\u30d5\u30a7\u30fc\u30ba\u3067\u767a\u751f\u3057\u3001\u5404\u30ec\u30a4\u30e4\u30fc\u304c\u8fd4\u3063\u305f\u5f8c\u306b\u3082\u3046\u4e00\u5ea6\u5408\u8a08\u304c\u5fc5\u8981\u3067\u3059\u3002</li> <li>\u672b\u5c3e\u518d\u5e30: \u5408\u8a08\u64cd\u4f5c\u306f\u300c\u547c\u3073\u51fa\u3057\u300d\u30d5\u30a7\u30fc\u30ba\u3067\u767a\u751f\u3057\u3001\u300c\u8fd4\u5374\u300d\u30d5\u30a7\u30fc\u30ba\u306f\u5404\u30ec\u30a4\u30e4\u30fc\u3092\u901a\u3058\u3066\u8fd4\u3059\u3060\u3051\u3067\u3059\u3002</li> </ul> <p></p> <p> \u56f3 2-5 \u00a0 Tail recursion process </p> <p>Tip</p> <p>\u591a\u304f\u306e\u30b3\u30f3\u30d1\u30a4\u30e9\u3084\u30a4\u30f3\u30bf\u30fc\u30d7\u30ea\u30bf\u30fc\u306f\u672b\u5c3e\u518d\u5e30\u6700\u9069\u5316\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u306a\u3044\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4f8b\u3048\u3070\u3001Python\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u672b\u5c3e\u518d\u5e30\u6700\u9069\u5316\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u306a\u3044\u305f\u3081\u3001\u95a2\u6570\u304c\u672b\u5c3e\u518d\u5e30\u306e\u5f62\u5f0f\u3067\u3042\u3063\u3066\u3082\u3001\u30b9\u30bf\u30c3\u30af\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u306e\u554f\u984c\u306b\u906d\u9047\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</p>"},{"location":"chapter_computational_complexity/iteration_and_recursion/#3_1","title":"3. \u00a0 \u518d\u5e30\u6728","text":"<p>\u300c\u5206\u5272\u7d71\u6cbb\u300d\u306b\u95a2\u9023\u3059\u308b\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u6271\u3046\u969b\u3001\u518d\u5e30\u306f\u53cd\u5fa9\u3088\u308a\u3082\u3057\u3070\u3057\u3070\u3088\u308a\u76f4\u611f\u7684\u306a\u30a2\u30d7\u30ed\u30fc\u30c1\u3068\u3088\u308a\u8aad\u307f\u3084\u3059\u3044\u30b3\u30fc\u30c9\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u300c\u30d5\u30a3\u30dc\u30ca\u30c3\u30c1\u6570\u5217\u300d\u3092\u4f8b\u306b\u53d6\u3063\u3066\u307f\u307e\u3057\u3087\u3046\u3002</p> <p>Question</p> <p>\u30d5\u30a3\u30dc\u30ca\u30c3\u30c1\u6570\u5217\\(0, 1, 1, 2, 3, 5, 8, 13, \\dots\\)\u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u3001\u6570\u5217\u306e\\(n\\)\u756a\u76ee\u306e\u6570\u3092\u6c42\u3081\u306a\u3055\u3044\u3002</p> <p>\u30d5\u30a3\u30dc\u30ca\u30c3\u30c1\u6570\u5217\u306e\\(n\\)\u756a\u76ee\u306e\u6570\u3092\\(f(n)\\)\u3068\u3059\u308b\u3068\u30012\u3064\u306e\u7d50\u8ad6\u3092\u7c21\u5358\u306b\u5c0e\u304d\u51fa\u305b\u307e\u3059\uff1a</p> <ul> <li>\u6570\u5217\u306e\u6700\u521d\u306e2\u3064\u306e\u6570\u306f\\(f(1) = 0\\)\u3068\\(f(2) = 1\\)\u3067\u3059\u3002</li> <li>\u6570\u5217\u306e\u5404\u6570\u306f\u524d\u306e2\u3064\u306e\u6570\u306e\u5408\u8a08\u3067\u3059\u3002\u3064\u307e\u308a\u3001\\(f(n) = f(n - 1) + f(n - 2)\\)\u3067\u3059\u3002</li> </ul> <p>\u518d\u5e30\u95a2\u4fc2\u3092\u4f7f\u7528\u3057\u3001\u6700\u521d\u306e2\u3064\u306e\u6570\u3092\u7d42\u4e86\u6761\u4ef6\u3068\u3057\u3066\u8003\u616e\u3059\u308b\u3068\u3001\u518d\u5e30\u30b3\u30fc\u30c9\u3092\u66f8\u3051\u307e\u3059\u3002<code>fib(n)</code>\u3092\u547c\u3073\u51fa\u3059\u3068\u30d5\u30a3\u30dc\u30ca\u30c3\u30c1\u6570\u5217\u306e\\(n\\)\u756a\u76ee\u306e\u6570\u304c\u5f97\u3089\u308c\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby recursion.py<pre><code>def fib(n: int) -&gt; int:\n \"\"\"\u30d5\u30a3\u30dc\u30ca\u30c3\u30c1\u6570\u5217\uff1a\u518d\u5e30\"\"\"\n # \u7d42\u4e86\u6761\u4ef6 f(1) = 0, f(2) = 1\n if n == 1 or n == 2:\n return n - 1\n # \u518d\u5e30\u547c\u3073\u51fa\u3057 f(n) = f(n-1) + f(n-2)\n res = fib(n - 1) + fib(n - 2)\n # \u7d50\u679c f(n) \u3092\u8fd4\u3059\n return res\n</code></pre> recursion.cpp<pre><code>/* \u30d5\u30a3\u30dc\u30ca\u30c3\u30c1\u6570\u5217\uff1a\u518d\u5e30 */\nint fib(int n) {\n // \u7d42\u4e86\u6761\u4ef6 f(1) = 0, f(2) = 1\n if (n == 1 || n == 2)\n return n - 1;\n // \u518d\u5e30\u547c\u3073\u51fa\u3057 f(n) = f(n-1) + f(n-2)\n int res = fib(n - 1) + fib(n - 2);\n // \u7d50\u679c f(n) \u3092\u8fd4\u3059\n return res;\n}\n</code></pre> recursion.java<pre><code>/* \u30d5\u30a3\u30dc\u30ca\u30c3\u30c1\u6570\u5217\uff1a\u518d\u5e30 */\nint fib(int n) {\n // \u7d42\u4e86\u6761\u4ef6 f(1) = 0, f(2) = 1\n if (n == 1 || n == 2)\n return n - 1;\n // \u518d\u5e30\u547c\u3073\u51fa\u3057 f(n) = f(n-1) + f(n-2)\n int res = fib(n - 1) + fib(n - 2);\n // \u7d50\u679c f(n) \u3092\u8fd4\u3059\n return res;\n}\n</code></pre> recursion.cs<pre><code>[class]{recursion}-[func]{Fib}\n</code></pre> recursion.go<pre><code>[class]{}-[func]{fib}\n</code></pre> recursion.swift<pre><code>[class]{}-[func]{fib}\n</code></pre> recursion.js<pre><code>[class]{}-[func]{fib}\n</code></pre> recursion.ts<pre><code>[class]{}-[func]{fib}\n</code></pre> recursion.dart<pre><code>[class]{}-[func]{fib}\n</code></pre> recursion.rs<pre><code>[class]{}-[func]{fib}\n</code></pre> recursion.c<pre><code>[class]{}-[func]{fib}\n</code></pre> recursion.kt<pre><code>[class]{}-[func]{fib}\n</code></pre> recursion.rb<pre><code>[class]{}-[func]{fib}\n</code></pre> <p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3092\u89b3\u5bdf\u3059\u308b\u3068\u3001\u305d\u308c\u81ea\u4f53\u306e\u4e2d\u30672\u3064\u306e\u95a2\u6570\u3092\u518d\u5e30\u7684\u306b\u547c\u3073\u51fa\u3057\u3066\u3044\u308b\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3059\u3002\u3064\u307e\u308a\u30011\u56de\u306e\u547c\u3073\u51fa\u3057\u30672\u3064\u306e\u5206\u5c90\u547c\u3073\u51fa\u3057\u304c\u751f\u6210\u3055\u308c\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3055\u308c\u3066\u3044\u308b\u3088\u3046\u306b\u3001\u3053\u306e\u7d99\u7d9a\u7684\u306a\u518d\u5e30\u547c\u3073\u51fa\u3057\u306f\u6700\u7d42\u7684\u306b\u6df1\u3055\\(n\\)\u306e\u518d\u5e30\u6728\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 2-6 \u00a0 Fibonacci sequence recursion tree </p> <p>\u57fa\u672c\u7684\u306b\u3001\u518d\u5e30\u306f\u300c\u554f\u984c\u3092\u3088\u308a\u5c0f\u3055\u306a\u30b5\u30d6\u554f\u984c\u306b\u5206\u89e3\u3059\u308b\u300d\u30d1\u30e9\u30c0\u30a4\u30e0\u3092\u4f53\u73fe\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u5206\u5272\u7d71\u6cbb\u6226\u7565\u306f\u91cd\u8981\u3067\u3059\u3002</p> <ul> <li>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u89b3\u70b9\u304b\u3089\u3001\u63a2\u7d22\u3001\u30bd\u30fc\u30c8\u3001\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u3001\u5206\u5272\u7d71\u6cbb\u3001\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306a\u3069\u306e\u591a\u304f\u306e\u91cd\u8981\u306a\u6226\u7565\u306f\u3001\u76f4\u63a5\u7684\u307e\u305f\u306f\u9593\u63a5\u7684\u306b\u3053\u306e\u601d\u8003\u65b9\u6cd5\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002</li> <li>\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u89b3\u70b9\u304b\u3089\u3001\u518d\u5e30\u306f\u9023\u7d50\u30ea\u30b9\u30c8\u3001\u6728\u3001\u30b0\u30e9\u30d5\u3092\u6271\u3046\u306e\u306b\u81ea\u7136\u306b\u9069\u3057\u3066\u304a\u308a\u3001\u3053\u308c\u3089\u306f\u5206\u5272\u7d71\u6cbb\u30a2\u30d7\u30ed\u30fc\u30c1\u3092\u4f7f\u7528\u3057\u305f\u5206\u6790\u306b\u9069\u3057\u3066\u3044\u308b\u305f\u3081\u3067\u3059\u3002</li> </ul>"},{"location":"chapter_computational_complexity/iteration_and_recursion/#223","title":"2.2.3 \u00a0 \u6bd4\u8f03","text":"<p>\u4e0a\u8a18\u306e\u5185\u5bb9\u3092\u307e\u3068\u3081\u308b\u3068\u3001\u4ee5\u4e0b\u306e\u8868\u306f\u5b9f\u88c5\u3001\u6027\u80fd\u3001\u9069\u7528\u6027\u306e\u89b3\u70b9\u304b\u3089\u53cd\u5fa9\u3068\u518d\u5e30\u306e\u9055\u3044\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002</p> <p> \u8868: \u53cd\u5fa9\u3068\u518d\u5e30\u306e\u7279\u6027\u306e\u6bd4\u8f03 </p> \u53cd\u5fa9 \u518d\u5e30 \u30a2\u30d7\u30ed\u30fc\u30c1 \u30eb\u30fc\u30d7\u69cb\u9020 \u95a2\u6570\u304c\u81ea\u5206\u81ea\u8eab\u3092\u547c\u3073\u51fa\u3059 \u6642\u9593\u52b9\u7387 \u4e00\u822c\u7684\u306b\u3088\u308a\u9ad8\u3044\u52b9\u7387\u3001\u95a2\u6570\u547c\u3073\u51fa\u3057\u306e\u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9\u306a\u3057 \u5404\u95a2\u6570\u547c\u3073\u51fa\u3057\u304c\u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9\u3092\u751f\u6210 \u30e1\u30e2\u30ea\u4f7f\u7528\u91cf \u901a\u5e38\u306f\u56fa\u5b9a\u30b5\u30a4\u30ba\u306e\u30e1\u30e2\u30ea\u7a7a\u9593\u3092\u4f7f\u7528 \u7d2f\u7a4d\u7684\u306a\u95a2\u6570\u547c\u3073\u51fa\u3057\u304c\u5927\u91cf\u306e\u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593\u3092\u4f7f\u7528\u3059\u308b\u53ef\u80fd\u6027 \u9069\u7528\u53ef\u80fd\u306a\u554f\u984c \u5358\u7d14\u306a\u30eb\u30fc\u30d7\u30bf\u30b9\u30af\u306b\u9069\u3057\u3066\u3044\u308b\u3001\u76f4\u611f\u7684\u3067\u8aad\u307f\u3084\u3059\u3044\u30b3\u30fc\u30c9 \u554f\u984c\u306e\u5206\u89e3\u306b\u9069\u3057\u3066\u3044\u308b\uff08\u6728\u3001\u30b0\u30e9\u30d5\u3001\u5206\u5272\u7d71\u6cbb\u3001\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u306a\u3069\uff09\u3001\u7c21\u6f54\u3067\u660e\u78ba\u306a\u30b3\u30fc\u30c9\u69cb\u9020 <p>Tip</p> <p>\u4ee5\u4e0b\u306e\u5185\u5bb9\u304c\u7406\u89e3\u3057\u306b\u304f\u3044\u5834\u5408\u306f\u3001\u300c\u30b9\u30bf\u30c3\u30af\u300d\u306e\u7ae0\u3092\u8aad\u3093\u3060\u5f8c\u306b\u518d\u3073\u8a2a\u308c\u308b\u3053\u3068\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <p>\u305d\u308c\u3067\u306f\u3001\u53cd\u5fa9\u3068\u518d\u5e30\u306e\u672c\u8cea\u7684\u306a\u95a2\u9023\u306f\u4f55\u3067\u3057\u3087\u3046\u304b\uff1f\u4e0a\u8a18\u306e\u518d\u5e30\u95a2\u6570\u3092\u4f8b\u306b\u53d6\u308b\u3068\u3001\u5408\u8a08\u64cd\u4f5c\u306f\u518d\u5e30\u306e\u300c\u8fd4\u5374\u300d\u30d5\u30a7\u30fc\u30ba\u3067\u767a\u751f\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u6700\u521d\u306b\u547c\u3073\u51fa\u3055\u308c\u305f\u95a2\u6570\u304c\u6700\u5f8c\u306b\u5408\u8a08\u64cd\u4f5c\u3092\u5b8c\u4e86\u3059\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u3001\u30b9\u30bf\u30c3\u30af\u306e\u300c\u5f8c\u5165\u308c\u5148\u51fa\u3057\u300d\u539f\u7406\u3092\u53cd\u6620\u3057\u3066\u3044\u307e\u3059\u3002</p> <p>\u300c\u547c\u3073\u51fa\u3057\u30b9\u30bf\u30c3\u30af\u300d\u3084\u300c\u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593\u300d\u306a\u3069\u306e\u518d\u5e30\u7528\u8a9e\u306f\u3001\u518d\u5e30\u3068\u30b9\u30bf\u30c3\u30af\u306e\u5bc6\u63a5\u306a\u95a2\u4fc2\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002</p> <ol> <li>\u547c\u3073\u51fa\u3057: \u95a2\u6570\u304c\u547c\u3073\u51fa\u3055\u308c\u308b\u3068\u3001\u30b7\u30b9\u30c6\u30e0\u306f\u300c\u547c\u3073\u51fa\u3057\u30b9\u30bf\u30c3\u30af\u300d\u4e0a\u306b\u305d\u306e\u95a2\u6570\u7528\u306e\u65b0\u3057\u3044\u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u3092\u5272\u308a\u5f53\u3066\u3001\u30ed\u30fc\u30ab\u30eb\u5909\u6570\u3001\u30d1\u30e9\u30e1\u30fc\u30bf\u3001\u623b\u308a\u30a2\u30c9\u30ec\u30b9\u3001\u305d\u306e\u4ed6\u306e\u30c7\u30fc\u30bf\u3092\u683c\u7d0d\u3057\u307e\u3059\u3002</li> <li>\u8fd4\u5374: \u95a2\u6570\u304c\u5b9f\u884c\u3092\u5b8c\u4e86\u3057\u3066\u8fd4\u308b\u3068\u3001\u5bfe\u5fdc\u3059\u308b\u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u304c\u300c\u547c\u3073\u51fa\u3057\u30b9\u30bf\u30c3\u30af\u300d\u304b\u3089\u524a\u9664\u3055\u308c\u3001\u524d\u306e\u95a2\u6570\u306e\u5b9f\u884c\u74b0\u5883\u304c\u5fa9\u5143\u3055\u308c\u307e\u3059\u3002</li> </ol> <p>\u3057\u305f\u304c\u3063\u3066\u3001\u660e\u793a\u7684\u306a\u30b9\u30bf\u30c3\u30af\u3092\u4f7f\u7528\u3057\u3066\u547c\u3073\u51fa\u3057\u30b9\u30bf\u30c3\u30af\u306e\u52d5\u4f5c\u3092\u30b7\u30df\u30e5\u30ec\u30fc\u30c8\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u518d\u5e30\u3092\u53cd\u5fa9\u5f62\u5f0f\u306b\u5909\u63db\u3067\u304d\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby recursion.py<pre><code>def for_loop_recur(n: int) -&gt; int:\n \"\"\"\u53cd\u5fa9\u3067\u518d\u5e30\u3092\u30b7\u30df\u30e5\u30ec\u30fc\u30c8\"\"\"\n # \u660e\u793a\u7684\u306a\u30b9\u30bf\u30c3\u30af\u3092\u4f7f\u7528\u3057\u3066\u30b7\u30b9\u30c6\u30e0\u30b3\u30fc\u30eb\u30b9\u30bf\u30c3\u30af\u3092\u30b7\u30df\u30e5\u30ec\u30fc\u30c8\n stack = []\n res = 0\n # \u518d\u5e30\uff1a\u518d\u5e30\u547c\u3073\u51fa\u3057\n for i in range(n, 0, -1):\n # \u300c\u30b9\u30bf\u30c3\u30af\u3078\u306e\u30d7\u30c3\u30b7\u30e5\u300d\u3067\u300c\u518d\u5e30\u300d\u3092\u30b7\u30df\u30e5\u30ec\u30fc\u30c8\n stack.append(i)\n # \u5fa9\u5e30\uff1a\u7d50\u679c\u3092\u8fd4\u3059\n while stack:\n # \u300c\u30b9\u30bf\u30c3\u30af\u304b\u3089\u306e\u30dd\u30c3\u30d7\u300d\u3067\u300c\u5fa9\u5e30\u300d\u3092\u30b7\u30df\u30e5\u30ec\u30fc\u30c8\n res += stack.pop()\n # res = 1+2+3+...+n\n return res\n</code></pre> recursion.cpp<pre><code>/* \u53cd\u5fa9\u3067\u518d\u5e30\u3092\u30b7\u30df\u30e5\u30ec\u30fc\u30c8 */\nint forLoopRecur(int n) {\n // \u660e\u793a\u7684\u306a\u30b9\u30bf\u30c3\u30af\u3092\u4f7f\u7528\u3057\u3066\u30b7\u30b9\u30c6\u30e0\u30b3\u30fc\u30eb\u30b9\u30bf\u30c3\u30af\u3092\u30b7\u30df\u30e5\u30ec\u30fc\u30c8\n stack&lt;int&gt; stack;\n int res = 0;\n // \u518d\u5e30\uff1a\u518d\u5e30\u547c\u3073\u51fa\u3057\n for (int i = n; i &gt; 0; i--) {\n // \u300c\u30b9\u30bf\u30c3\u30af\u3078\u306e\u30d7\u30c3\u30b7\u30e5\u300d\u3067\u300c\u518d\u5e30\u300d\u3092\u30b7\u30df\u30e5\u30ec\u30fc\u30c8\n stack.push(i);\n }\n // \u623b\u308a\u5024\uff1a\u7d50\u679c\u3092\u8fd4\u3059\n while (!stack.empty()) {\n // \u300c\u30b9\u30bf\u30c3\u30af\u304b\u3089\u306e\u30dd\u30c3\u30d7\u300d\u3067\u300c\u623b\u308a\u5024\u300d\u3092\u30b7\u30df\u30e5\u30ec\u30fc\u30c8\n res += stack.top();\n stack.pop();\n }\n // res = 1+2+3+...+n\n return res;\n}\n</code></pre> recursion.java<pre><code>/* \u53cd\u5fa9\u3067\u518d\u5e30\u3092\u30b7\u30df\u30e5\u30ec\u30fc\u30c8 */\nint forLoopRecur(int n) {\n // \u660e\u793a\u7684\u306a\u30b9\u30bf\u30c3\u30af\u3092\u4f7f\u7528\u3057\u3066\u30b7\u30b9\u30c6\u30e0\u30b3\u30fc\u30eb\u30b9\u30bf\u30c3\u30af\u3092\u30b7\u30df\u30e5\u30ec\u30fc\u30c8\n Stack&lt;Integer&gt; stack = new Stack&lt;&gt;();\n int res = 0;\n // \u518d\u5e30\uff1a\u518d\u5e30\u547c\u3073\u51fa\u3057\n for (int i = n; i &gt; 0; i--) {\n // \u300c\u30b9\u30bf\u30c3\u30af\u3078\u306e\u30d7\u30c3\u30b7\u30e5\u300d\u3067\u300c\u518d\u5e30\u300d\u3092\u30b7\u30df\u30e5\u30ec\u30fc\u30c8\n stack.push(i);\n }\n // \u623b\u308a\u5024\uff1a\u7d50\u679c\u3092\u8fd4\u3059\n while (!stack.isEmpty()) {\n // \u300c\u30b9\u30bf\u30c3\u30af\u304b\u3089\u306e\u30dd\u30c3\u30d7\u300d\u3067\u300c\u623b\u308a\u5024\u300d\u3092\u30b7\u30df\u30e5\u30ec\u30fc\u30c8\n res += stack.pop();\n }\n // res = 1+2+3+...+n\n return res;\n}\n</code></pre> recursion.cs<pre><code>[class]{recursion}-[func]{ForLoopRecur}\n</code></pre> recursion.go<pre><code>[class]{}-[func]{forLoopRecur}\n</code></pre> recursion.swift<pre><code>[class]{}-[func]{forLoopRecur}\n</code></pre> recursion.js<pre><code>[class]{}-[func]{forLoopRecur}\n</code></pre> recursion.ts<pre><code>[class]{}-[func]{forLoopRecur}\n</code></pre> recursion.dart<pre><code>[class]{}-[func]{forLoopRecur}\n</code></pre> recursion.rs<pre><code>[class]{}-[func]{for_loop_recur}\n</code></pre> recursion.c<pre><code>[class]{}-[func]{forLoopRecur}\n</code></pre> recursion.kt<pre><code>[class]{}-[func]{forLoopRecur}\n</code></pre> recursion.rb<pre><code>[class]{}-[func]{for_loop_recur}\n</code></pre> <p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3092\u89b3\u5bdf\u3059\u308b\u3068\u3001\u518d\u5e30\u304c\u53cd\u5fa9\u306b\u5909\u63db\u3055\u308c\u305f\u3068\u304d\u3001\u30b3\u30fc\u30c9\u306f\u3088\u308a\u8907\u96d1\u306b\u306a\u308a\u307e\u3059\u3002\u53cd\u5fa9\u3068\u518d\u5e30\u306f\u3057\u3070\u3057\u3070\u76f8\u4e92\u306b\u5909\u63db\u3067\u304d\u307e\u3059\u304c\u30012\u3064\u306e\u7406\u7531\u3067\u305d\u3046\u3059\u308b\u3053\u3068\u304c\u5e38\u306b\u63a8\u5968\u3055\u308c\u308b\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\uff1a</p> <ul> <li>\u5909\u63db\u3055\u308c\u305f\u30b3\u30fc\u30c9\u306f\u7406\u89e3\u304c\u3088\u308a\u56f0\u96e3\u306b\u306a\u308a\u3001\u8aad\u307f\u306b\u304f\u304f\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u4e00\u90e8\u306e\u8907\u96d1\u306a\u554f\u984c\u3067\u306f\u3001\u30b7\u30b9\u30c6\u30e0\u306e\u547c\u3073\u51fa\u3057\u30b9\u30bf\u30c3\u30af\u306e\u52d5\u4f5c\u3092\u30b7\u30df\u30e5\u30ec\u30fc\u30c8\u3059\u308b\u3053\u3068\u306f\u975e\u5e38\u306b\u56f0\u96e3\u3067\u3059\u3002</li> </ul> <p>\u7d50\u8ad6\u3068\u3057\u3066\u3001\u53cd\u5fa9\u307e\u305f\u306f\u518d\u5e30\u3092\u9078\u629e\u3059\u308b\u304b\u306f\u554f\u984c\u306e\u5177\u4f53\u7684\u306a\u6027\u8cea\u306b\u3088\u308a\u307e\u3059\u3002\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u5b9f\u8df5\u3067\u306f\u3001\u4e21\u65b9\u306e\u9577\u6240\u3068\u77ed\u6240\u3092\u6bd4\u8f03\u691c\u8a0e\u3057\u3001\u624b\u5143\u306e\u72b6\u6cc1\u306b\u6700\u3082\u9069\u3057\u305f\u30a2\u30d7\u30ed\u30fc\u30c1\u3092\u9078\u629e\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002</p>"},{"location":"chapter_computational_complexity/performance_evaluation/","title":"2.1 \u00a0 \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u52b9\u7387\u8a55\u4fa1","text":"<p>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u8a2d\u8a08\u306b\u304a\u3044\u3066\u3001\u79c1\u305f\u3061\u306f\u9806\u5e8f\u306b\u5f93\u3063\u3066\u4ee5\u4e0b\u306e2\u3064\u306e\u76ee\u6a19\u3092\u8ffd\u6c42\u3057\u307e\u3059\u3002</p> <ol> <li>\u554f\u984c\u306e\u89e3\u6c7a\u7b56\u3092\u898b\u3064\u3051\u308b: \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u3001\u6307\u5b9a\u3055\u308c\u305f\u5165\u529b\u7bc4\u56f2\u5185\u3067\u78ba\u5b9f\u306b\u6b63\u3057\u3044\u89e3\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3079\u304d\u3067\u3059\u3002</li> <li>\u6700\u9069\u89e3\u3092\u6c42\u3081\u308b: \u540c\u3058\u554f\u984c\u306b\u5bfe\u3057\u3066\u8907\u6570\u306e\u89e3\u6c7a\u7b56\u304c\u5b58\u5728\u3059\u308b\u5834\u5408\u304c\u3042\u308a\u3001\u79c1\u305f\u3061\u306f\u53ef\u80fd\u306a\u9650\u308a\u6700\u3082\u52b9\u7387\u7684\u306a\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u3092\u76ee\u6307\u3057\u307e\u3059\u3002</li> </ol> <p>\u3064\u307e\u308a\u3001\u554f\u984c\u3092\u89e3\u6c7a\u3067\u304d\u308b\u3053\u3068\u3092\u524d\u63d0\u3068\u3057\u3066\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u52b9\u7387\u304c\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u8a55\u4fa1\u3059\u308b\u4e3b\u8981\u306a\u57fa\u6e96\u3068\u306a\u3063\u3066\u304a\u308a\u3001\u3053\u308c\u306b\u306f\u4ee5\u4e0b\u306e2\u3064\u306e\u6b21\u5143\u304c\u542b\u307e\u308c\u307e\u3059\u3002</p> <ul> <li>\u6642\u9593\u52b9\u7387: \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u304c\u5b9f\u884c\u3055\u308c\u308b\u901f\u5ea6\u3002</li> <li>\u7a7a\u9593\u52b9\u7387: \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u304c\u5360\u6709\u3059\u308b\u30e1\u30e2\u30ea\u7a7a\u9593\u306e\u30b5\u30a4\u30ba\u3002</li> </ul> <p>\u8981\u3059\u308b\u306b\u3001\u79c1\u305f\u3061\u306e\u76ee\u6a19\u306f\u3001\u9ad8\u901f\u3067\u30e1\u30e2\u30ea\u52b9\u7387\u306e\u826f\u3044\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u8a2d\u8a08\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u52b9\u7387\u3092\u52b9\u679c\u7684\u306b\u8a55\u4fa1\u3059\u308b\u3053\u3068\u306f\u91cd\u8981\u3067\u3059\u3002\u306a\u305c\u306a\u3089\u3001\u305d\u3046\u3059\u308b\u3053\u3068\u3067\u521d\u3081\u3066\u69d8\u3005\u306a\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u6bd4\u8f03\u3057\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u8a2d\u8a08\u3068\u6700\u9069\u5316\u30d7\u30ed\u30bb\u30b9\u3092\u5c0e\u304f\u3053\u3068\u304c\u3067\u304d\u308b\u304b\u3089\u3067\u3059\u3002</p> <p>\u52b9\u7387\u8a55\u4fa1\u306b\u306f\u4e3b\u306b2\u3064\u306e\u65b9\u6cd5\u304c\u3042\u308a\u307e\u3059\uff1a\u5b9f\u969b\u306e\u30c6\u30b9\u30c8\u3068\u7406\u8ad6\u7684\u63a8\u5b9a\u3067\u3059\u3002</p>"},{"location":"chapter_computational_complexity/performance_evaluation/#211","title":"2.1.1 \u00a0 \u5b9f\u969b\u306e\u30c6\u30b9\u30c8","text":"<p>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0<code>A</code>\u3068<code>B</code>\u304c\u3042\u308a\u3001\u3069\u3061\u3089\u3082\u540c\u3058\u554f\u984c\u3092\u89e3\u6c7a\u3067\u304d\u3001\u305d\u308c\u3089\u306e\u52b9\u7387\u3092\u6bd4\u8f03\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3068\u3057\u307e\u3059\u3002\u6700\u3082\u76f4\u63a5\u7684\u306a\u65b9\u6cd5\u306f\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u3092\u4f7f\u7528\u3057\u3066\u3053\u308c\u30892\u3064\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u5b9f\u884c\u3057\u3001\u5b9f\u884c\u6642\u9593\u3068\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u3092\u76e3\u8996\u30fb\u8a18\u9332\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u3053\u306e\u8a55\u4fa1\u65b9\u6cd5\u306f\u5b9f\u969b\u306e\u72b6\u6cc1\u3092\u53cd\u6620\u3057\u307e\u3059\u304c\u3001\u5927\u304d\u306a\u5236\u9650\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>\u4e00\u65b9\u3067\u3001\u30c6\u30b9\u30c8\u74b0\u5883\u304b\u3089\u306e\u5e72\u6e09\u3092\u6392\u9664\u3059\u308b\u3053\u3068\u306f\u56f0\u96e3\u3067\u3059\u3002\u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u69cb\u6210\u306f\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u6027\u80fd\u306b\u5f71\u97ff\u3092\u4e0e\u3048\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u4e26\u5217\u5ea6\u306e\u9ad8\u3044\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u30de\u30eb\u30c1\u30b3\u30a2CPU\u3067\u306e\u5b9f\u884c\u306b\u3088\u308a\u9069\u3057\u3066\u3044\u307e\u3059\u3057\u3001\u96c6\u7d04\u7684\u306a\u30e1\u30e2\u30ea\u64cd\u4f5c\u3092\u542b\u3080\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u9ad8\u6027\u80fd\u30e1\u30e2\u30ea\u3067\u3088\u308a\u826f\u3044\u6027\u80fd\u3092\u767a\u63ee\u3057\u307e\u3059\u3002\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u30c6\u30b9\u30c8\u7d50\u679c\u306f\u3001\u7570\u306a\u308b\u30de\u30b7\u30f3\u9593\u3067\u5909\u308f\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u5e73\u5747\u52b9\u7387\u3092\u8a08\u7b97\u3059\u308b\u305f\u3081\u306b\u8907\u6570\u306e\u30de\u30b7\u30f3\u3067\u30c6\u30b9\u30c8\u3059\u308b\u3053\u3068\u304c\u5b9f\u7528\u7684\u3067\u306a\u3044\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002</p> <p>\u4e00\u65b9\u3067\u3001\u5b8c\u5168\u306a\u30c6\u30b9\u30c8\u3092\u5b9f\u65bd\u3059\u308b\u3053\u3068\u306f\u975e\u5e38\u306b\u30ea\u30bd\u30fc\u30b9\u96c6\u7d04\u7684\u3067\u3059\u3002\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u52b9\u7387\u306f\u5165\u529b\u30c7\u30fc\u30bf\u30b5\u30a4\u30ba\u306b\u3088\u3063\u3066\u5909\u308f\u308a\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u30c7\u30fc\u30bf\u91cf\u304c\u5c11\u306a\u3044\u5834\u5408\u306f\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0<code>A</code>\u304c<code>B</code>\u3088\u308a\u901f\u304f\u5b9f\u884c\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u30c7\u30fc\u30bf\u91cf\u304c\u591a\u3044\u5834\u5408\u306f\u30c6\u30b9\u30c8\u7d50\u679c\u304c\u9006\u306b\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u8aac\u5f97\u529b\u306e\u3042\u308b\u7d50\u8ad6\u3092\u5c0e\u304f\u305f\u3081\u306b\u306f\u3001\u5e45\u5e83\u3044\u5165\u529b\u30c7\u30fc\u30bf\u30b5\u30a4\u30ba\u3092\u30c6\u30b9\u30c8\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u3053\u308c\u306b\u306f\u904e\u5ea6\u306a\u8a08\u7b97\u30ea\u30bd\u30fc\u30b9\u304c\u5fc5\u8981\u306b\u306a\u308a\u307e\u3059\u3002</p>"},{"location":"chapter_computational_complexity/performance_evaluation/#212","title":"2.1.2 \u00a0 \u7406\u8ad6\u7684\u63a8\u5b9a","text":"<p>\u5b9f\u969b\u306e\u30c6\u30b9\u30c8\u306e\u5927\u304d\u306a\u5236\u9650\u306b\u3088\u308a\u3001\u8a08\u7b97\u306e\u307f\u3067\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u52b9\u7387\u3092\u8a55\u4fa1\u3059\u308b\u3053\u3068\u3092\u691c\u8a0e\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u63a8\u5b9a\u65b9\u6cd5\u306f\u6f38\u8fd1\u7684\u8907\u96d1\u5ea6\u89e3\u6790\u3001\u307e\u305f\u306f\u5358\u306b\u8907\u96d1\u5ea6\u89e3\u6790\u3068\u3057\u3066\u77e5\u3089\u308c\u3066\u3044\u307e\u3059\u3002</p> <p>\u8907\u96d1\u5ea6\u89e3\u6790\u306f\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5b9f\u884c\u306b\u5fc5\u8981\u306a\u6642\u9593\u3068\u7a7a\u9593\u30ea\u30bd\u30fc\u30b9\u3068\u5165\u529b\u30c7\u30fc\u30bf\u306e\u30b5\u30a4\u30ba\u3068\u306e\u95a2\u4fc2\u3092\u53cd\u6620\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u5165\u529b\u30c7\u30fc\u30bf\u306e\u30b5\u30a4\u30ba\u304c\u5897\u52a0\u3059\u308b\u306b\u3064\u308c\u3066\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306b\u5fc5\u8981\u306a\u6642\u9593\u3068\u7a7a\u9593\u306e\u5897\u52a0\u50be\u5411\u3092\u8a18\u8ff0\u3057\u307e\u3059\u3002\u3053\u306e\u5b9a\u7fa9\u306f\u8907\u96d1\u306b\u805e\u3053\u3048\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3001\u3088\u308a\u826f\u304f\u7406\u89e3\u3059\u308b\u305f\u3081\u306b3\u3064\u306e\u91cd\u8981\u306a\u30dd\u30a4\u30f3\u30c8\u306b\u5206\u89e3\u3067\u304d\u307e\u3059\u3002</p> <ul> <li>\u300c\u6642\u9593\u3068\u7a7a\u9593\u30ea\u30bd\u30fc\u30b9\u300d\u306f\u3001\u305d\u308c\u305e\u308c\u6642\u9593\u8a08\u7b97\u91cf\u3068\u7a7a\u9593\u8a08\u7b97\u91cf\u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002</li> <li>\u300c\u5165\u529b\u30c7\u30fc\u30bf\u306e\u30b5\u30a4\u30ba\u304c\u5897\u52a0\u3059\u308b\u306b\u3064\u308c\u3066\u300d\u306f\u3001\u8907\u96d1\u5ea6\u304c\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u52b9\u7387\u3068\u5165\u529b\u30c7\u30fc\u30bf\u91cf\u3068\u306e\u95a2\u4fc2\u3092\u53cd\u6620\u3059\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002</li> <li>\u300c\u6642\u9593\u3068\u7a7a\u9593\u306e\u5897\u52a0\u50be\u5411\u300d\u306f\u3001\u8907\u96d1\u5ea6\u89e3\u6790\u304c\u5b9f\u884c\u6642\u9593\u3084\u5360\u6709\u7a7a\u9593\u306e\u5177\u4f53\u7684\u306a\u5024\u3067\u306f\u306a\u304f\u3001\u6642\u9593\u3084\u7a7a\u9593\u304c\u5897\u52a0\u3059\u308b\u300c\u7387\u300d\u306b\u7126\u70b9\u3092\u5f53\u3066\u308b\u3053\u3068\u3092\u793a\u3057\u307e\u3059\u3002</li> </ul> <p>\u8907\u96d1\u5ea6\u89e3\u6790\u306f\u5b9f\u969b\u306e\u30c6\u30b9\u30c8\u65b9\u6cd5\u306e\u6b20\u70b9\u3092\u514b\u670d\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u4ee5\u4e0b\u306e\u5074\u9762\u3067\u53cd\u6620\u3055\u308c\u307e\u3059\uff1a</p> <ul> <li>\u5b9f\u969b\u306b\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u306a\u3044\u305f\u3081\u3001\u3088\u308a\u74b0\u5883\u306b\u512a\u3057\u304f\u3001\u30a8\u30cd\u30eb\u30ae\u30fc\u52b9\u7387\u304c\u826f\u3044\u3067\u3059\u3002</li> <li>\u30c6\u30b9\u30c8\u74b0\u5883\u306b\u4f9d\u5b58\u305b\u305a\u3001\u3059\u3079\u3066\u306e\u52d5\u4f5c\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306b\u9069\u7528\u3067\u304d\u307e\u3059\u3002</li> <li>\u7570\u306a\u308b\u30c7\u30fc\u30bf\u91cf\u3067\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u52b9\u7387\u3092\u53cd\u6620\u3067\u304d\u3001\u7279\u306b\u5927\u91cf\u30c7\u30fc\u30bf\u3067\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u6027\u80fd\u3092\u793a\u3057\u307e\u3059\u3002</li> </ul> <p>Tip</p> <p>\u8907\u96d1\u5ea6\u306e\u6982\u5ff5\u306b\u3064\u3044\u3066\u307e\u3060\u6df7\u4e71\u3057\u3066\u3044\u308b\u5834\u5408\u3067\u3082\u3001\u5fc3\u914d\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u4ee5\u964d\u306e\u7ae0\u3067\u8a73\u3057\u304f\u53d6\u308a\u4e0a\u3052\u307e\u3059\u3002</p> <p>\u8907\u96d1\u5ea6\u89e3\u6790\u306f\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u52b9\u7387\u3092\u8a55\u4fa1\u3059\u308b\u300c\u3082\u306e\u3055\u3057\u300d\u3092\u63d0\u4f9b\u3057\u3001\u5b9f\u884c\u306b\u5fc5\u8981\u306a\u6642\u9593\u3068\u7a7a\u9593\u30ea\u30bd\u30fc\u30b9\u3092\u6e2c\u5b9a\u3057\u3001\u7570\u306a\u308b\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u52b9\u7387\u3092\u6bd4\u8f03\u3059\u308b\u3053\u3068\u3092\u53ef\u80fd\u306b\u3057\u307e\u3059\u3002</p> <p>\u8907\u96d1\u5ea6\u306f\u6570\u5b66\u7684\u6982\u5ff5\u3067\u3042\u308a\u3001\u521d\u5fc3\u8005\u306b\u306f\u62bd\u8c61\u7684\u3067\u56f0\u96e3\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u3053\u306e\u89b3\u70b9\u304b\u3089\u3001\u8907\u96d1\u5ea6\u89e3\u6790\u306f\u6700\u521d\u306b\u7d39\u4ecb\u3059\u308b\u306e\u306b\u6700\u3082\u9069\u3057\u305f\u30c8\u30d4\u30c3\u30af\u3067\u306f\u306a\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u3057\u304b\u3057\u3001\u7279\u5b9a\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u3084\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u7279\u6027\u306b\u3064\u3044\u3066\u8b70\u8ad6\u3059\u308b\u3068\u304d\u3001\u305d\u306e\u901f\u5ea6\u3068\u7a7a\u9593\u4f7f\u7528\u91cf\u3092\u5206\u6790\u3059\u308b\u3053\u3068\u3092\u907f\u3051\u308b\u306e\u306f\u56f0\u96e3\u3067\u3059\u3002</p> <p>\u8981\u7d04\u3059\u308b\u3068\u3001\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306b\u6df1\u304f\u5165\u308b\u524d\u306b\u8907\u96d1\u5ea6\u89e3\u6790\u306e\u57fa\u672c\u7684\u306a\u7406\u89e3\u3092\u8eab\u306b\u3064\u3051\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u7c21\u5358\u306a\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u8907\u96d1\u5ea6\u89e3\u6790\u3092\u5b9f\u884c\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002</p>"},{"location":"chapter_computational_complexity/space_complexity/","title":"2.4 \u00a0 \u7a7a\u9593\u8a08\u7b97\u91cf","text":"<p>\u7a7a\u9593\u8a08\u7b97\u91cf\u306f\u3001\u30c7\u30fc\u30bf\u91cf\u304c\u5897\u52a0\u3059\u308b\u306b\u3064\u308c\u3066\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u304c\u5360\u6709\u3059\u308b\u30e1\u30e2\u30ea\u7a7a\u9593\u306e\u5897\u52a0\u50be\u5411\u3092\u6e2c\u5b9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u6982\u5ff5\u306f\u6642\u9593\u8a08\u7b97\u91cf\u3068\u975e\u5e38\u306b\u4f3c\u3066\u3044\u307e\u3059\u304c\u3001\u300c\u5b9f\u884c\u6642\u9593\u300d\u304c\u300c\u5360\u6709\u30e1\u30e2\u30ea\u7a7a\u9593\u300d\u306b\u7f6e\u304d\u63db\u3048\u3089\u308c\u3066\u3044\u307e\u3059\u3002</p>"},{"location":"chapter_computational_complexity/space_complexity/#241","title":"2.4.1 \u00a0 \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306b\u95a2\u9023\u3059\u308b\u7a7a\u9593","text":"<p>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u304c\u5b9f\u884c\u4e2d\u306b\u4f7f\u7528\u3059\u308b\u30e1\u30e2\u30ea\u7a7a\u9593\u306b\u306f\u3001\u4e3b\u306b\u4ee5\u4e0b\u306e\u7a2e\u985e\u304c\u3042\u308a\u307e\u3059\u3002</p> <ul> <li>\u5165\u529b\u7a7a\u9593: \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5165\u529b\u30c7\u30fc\u30bf\u3092\u683c\u7d0d\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002</li> <li>\u4e00\u6642\u7a7a\u9593: \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5b9f\u884c\u4e2d\u306b\u5909\u6570\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3001\u95a2\u6570\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3001\u305d\u306e\u4ed6\u306e\u30c7\u30fc\u30bf\u3092\u683c\u7d0d\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002</li> <li>\u51fa\u529b\u7a7a\u9593: \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u51fa\u529b\u30c7\u30fc\u30bf\u3092\u683c\u7d0d\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002</li> </ul> <p>\u4e00\u822c\u7684\u306b\u3001\u7a7a\u9593\u8a08\u7b97\u91cf\u306e\u7d71\u8a08\u7bc4\u56f2\u306b\u306f\u300c\u4e00\u6642\u7a7a\u9593\u300d\u3068\u300c\u51fa\u529b\u7a7a\u9593\u300d\u306e\u4e21\u65b9\u304c\u542b\u307e\u308c\u307e\u3059\u3002</p> <p>\u4e00\u6642\u7a7a\u9593\u306f\u3055\u3089\u306b3\u3064\u306e\u90e8\u5206\u306b\u5206\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</p> <ul> <li>\u4e00\u6642\u30c7\u30fc\u30bf: \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5b9f\u884c\u4e2d\u306b\u69d8\u3005\u306a\u5b9a\u6570\u3001\u5909\u6570\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306a\u3069\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002</li> <li>\u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593: \u547c\u3073\u51fa\u3055\u308c\u305f\u95a2\u6570\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30c7\u30fc\u30bf\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u30b7\u30b9\u30c6\u30e0\u306f\u95a2\u6570\u304c\u547c\u3073\u51fa\u3055\u308c\u308b\u305f\u3073\u306b\u30b9\u30bf\u30c3\u30af\u306e\u9802\u4e0a\u306b\u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u3092\u4f5c\u6210\u3057\u3001\u95a2\u6570\u304c\u8fd4\u3055\u308c\u305f\u5f8c\u306b\u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593\u3092\u89e3\u653e\u3057\u307e\u3059\u3002</li> <li>\u547d\u4ee4\u7a7a\u9593: \u30b3\u30f3\u30d1\u30a4\u30eb\u6e08\u307f\u30d7\u30ed\u30b0\u30e9\u30e0\u547d\u4ee4\u3092\u683c\u7d0d\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u3001\u5b9f\u969b\u306e\u7d71\u8a08\u3067\u306f\u901a\u5e38\u7121\u8996\u3067\u304d\u307e\u3059\u3002</li> </ul> <p>\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u7a7a\u9593\u8a08\u7b97\u91cf\u3092\u5206\u6790\u3059\u308b\u969b\u3001\u901a\u5e38\u306f\u4e00\u6642\u30c7\u30fc\u30bf\u3001\u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593\u3001\u51fa\u529b\u30c7\u30fc\u30bf\u3092\u30ab\u30a6\u30f3\u30c8\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3055\u308c\u3066\u3044\u307e\u3059\u3002</p> <p></p> <p> \u56f3 2-15 \u00a0 Space types used in algorithms </p> <p>\u95a2\u9023\u3059\u308b\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlin <pre><code>class Node:\n \"\"\"\u30af\u30e9\u30b9\"\"\"\n def __init__(self, x: int):\n self.val: int = x # \u30ce\u30fc\u30c9\u5024\n self.next: Node | None = None # \u6b21\u306e\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n\ndef function() -&gt; int:\n \"\"\"\u95a2\u6570\"\"\"\n # \u7279\u5b9a\u306e\u64cd\u4f5c\u3092\u5b9f\u884c...\n return 0\n\ndef algorithm(n) -&gt; int: # \u5165\u529b\u30c7\u30fc\u30bf\n A = 0 # \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u5b9a\u6570\u3001\u901a\u5e38\u5927\u6587\u5b57\uff09\n b = 0 # \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u5909\u6570\uff09\n node = Node(0) # \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\uff09\n c = function() # \u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593\uff08\u95a2\u6570\u547c\u3073\u51fa\u3057\uff09\n return A + b + c # \u51fa\u529b\u30c7\u30fc\u30bf\n</code></pre> <pre><code>/* \u69cb\u9020\u4f53 */\nstruct Node {\n int val;\n Node *next;\n Node(int x) : val(x), next(nullptr) {}\n};\n\n/* \u95a2\u6570 */\nint func() {\n // \u7279\u5b9a\u306e\u64cd\u4f5c\u3092\u5b9f\u884c...\n return 0;\n}\n\nint algorithm(int n) { // \u5165\u529b\u30c7\u30fc\u30bf\n const int a = 0; // \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u5b9a\u6570\uff09\n int b = 0; // \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u5909\u6570\uff09\n Node* node = new Node(0); // \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\uff09\n int c = func(); // \u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593\uff08\u95a2\u6570\u547c\u3073\u51fa\u3057\uff09\n return a + b + c; // \u51fa\u529b\u30c7\u30fc\u30bf\n}\n</code></pre> <pre><code>/* \u30af\u30e9\u30b9 */\nclass Node {\n int val;\n Node next;\n Node(int x) { val = x; }\n}\n\n/* \u95a2\u6570 */\nint function() {\n // \u7279\u5b9a\u306e\u64cd\u4f5c\u3092\u5b9f\u884c...\n return 0;\n}\n\nint algorithm(int n) { // \u5165\u529b\u30c7\u30fc\u30bf\n final int a = 0; // \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u5b9a\u6570\uff09\n int b = 0; // \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u5909\u6570\uff09\n Node node = new Node(0); // \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\uff09\n int c = function(); // \u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593\uff08\u95a2\u6570\u547c\u3073\u51fa\u3057\uff09\n return a + b + c; // \u51fa\u529b\u30c7\u30fc\u30bf\n}\n</code></pre> <pre><code>/* \u30af\u30e9\u30b9 */\nclass Node {\n int val;\n Node next;\n Node(int x) { val = x; }\n}\n\n/* \u95a2\u6570 */\nint Function() {\n // \u7279\u5b9a\u306e\u64cd\u4f5c\u3092\u5b9f\u884c...\n return 0;\n}\n\nint Algorithm(int n) { // \u5165\u529b\u30c7\u30fc\u30bf\n const int a = 0; // \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u5b9a\u6570\uff09\n int b = 0; // \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u5909\u6570\uff09\n Node node = new(0); // \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\uff09\n int c = Function(); // \u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593\uff08\u95a2\u6570\u547c\u3073\u51fa\u3057\uff09\n return a + b + c; // \u51fa\u529b\u30c7\u30fc\u30bf\n}\n</code></pre> <pre><code>/* \u69cb\u9020\u4f53 */\ntype node struct {\n val int\n next *node\n}\n\n/* \u30ce\u30fc\u30c9\u69cb\u9020\u4f53\u3092\u4f5c\u6210 */\nfunc newNode(val int) *node {\n return &amp;node{val: val}\n}\n\n/* \u95a2\u6570 */\nfunc function() int {\n // \u7279\u5b9a\u306e\u64cd\u4f5c\u3092\u5b9f\u884c...\n return 0\n}\n\nfunc algorithm(n int) int { // \u5165\u529b\u30c7\u30fc\u30bf\n const a = 0 // \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u5b9a\u6570\uff09\n b := 0 // \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u5909\u6570\uff09\n newNode(0) // \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\uff09\n c := function() // \u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593\uff08\u95a2\u6570\u547c\u3073\u51fa\u3057\uff09\n return a + b + c // \u51fa\u529b\u30c7\u30fc\u30bf\n}\n</code></pre> <pre><code>/* \u30af\u30e9\u30b9 */\nclass Node {\n var val: Int\n var next: Node?\n\n init(x: Int) {\n val = x\n }\n}\n\n/* \u95a2\u6570 */\nfunc function() -&gt; Int {\n // \u7279\u5b9a\u306e\u64cd\u4f5c\u3092\u5b9f\u884c...\n return 0\n}\n\nfunc algorithm(n: Int) -&gt; Int { // \u5165\u529b\u30c7\u30fc\u30bf\n let a = 0 // \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u5b9a\u6570\uff09\n var b = 0 // \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u5909\u6570\uff09\n let node = Node(x: 0) // \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\uff09\n let c = function() // \u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593\uff08\u95a2\u6570\u547c\u3073\u51fa\u3057\uff09\n return a + b + c // \u51fa\u529b\u30c7\u30fc\u30bf\n}\n</code></pre> <pre><code>/* \u30af\u30e9\u30b9 */\nclass Node {\n val;\n next;\n constructor(val) {\n this.val = val === undefined ? 0 : val; // \u30ce\u30fc\u30c9\u5024\n this.next = null; // \u6b21\u306e\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n }\n}\n\n/* \u95a2\u6570 */\nfunction constFunc() {\n // \u7279\u5b9a\u306e\u64cd\u4f5c\u3092\u5b9f\u884c\n return 0;\n}\n\nfunction algorithm(n) { // \u5165\u529b\u30c7\u30fc\u30bf\n const a = 0; // \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u5b9a\u6570\uff09\n let b = 0; // \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u5909\u6570\uff09\n const node = new Node(0); // \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\uff09\n const c = constFunc(); // \u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593\uff08\u95a2\u6570\u547c\u3073\u51fa\u3057\uff09\n return a + b + c; // \u51fa\u529b\u30c7\u30fc\u30bf\n}\n</code></pre> <pre><code>/* \u30af\u30e9\u30b9 */\nclass Node {\n val: number;\n next: Node | null;\n constructor(val?: number) {\n this.val = val === undefined ? 0 : val; // \u30ce\u30fc\u30c9\u5024\n this.next = null; // \u6b21\u306e\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n }\n}\n\n/* \u95a2\u6570 */\nfunction constFunc(): number {\n // \u7279\u5b9a\u306e\u64cd\u4f5c\u3092\u5b9f\u884c\n return 0;\n}\n\nfunction algorithm(n: number): number { // \u5165\u529b\u30c7\u30fc\u30bf\n const a = 0; // \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u5b9a\u6570\uff09\n let b = 0; // \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u5909\u6570\uff09\n const node = new Node(0); // \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\uff09\n const c = constFunc(); // \u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593\uff08\u95a2\u6570\u547c\u3073\u51fa\u3057\uff09\n return a + b + c; // \u51fa\u529b\u30c7\u30fc\u30bf\n}\n</code></pre> <pre><code>/* \u30af\u30e9\u30b9 */\nclass Node {\n int val;\n Node next;\n Node(this.val, [this.next]);\n}\n\n/* \u95a2\u6570 */\nint function() {\n // \u7279\u5b9a\u306e\u64cd\u4f5c\u3092\u5b9f\u884c...\n return 0;\n}\n\nint algorithm(int n) { // \u5165\u529b\u30c7\u30fc\u30bf\n const int a = 0; // \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u5b9a\u6570\uff09\n int b = 0; // \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u5909\u6570\uff09\n Node node = Node(0); // \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\uff09\n int c = function(); // \u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593\uff08\u95a2\u6570\u547c\u3073\u51fa\u3057\uff09\n return a + b + c; // \u51fa\u529b\u30c7\u30fc\u30bf\n}\n</code></pre> <pre><code>use std::rc::Rc;\nuse std::cell::RefCell;\n\n/* \u69cb\u9020\u4f53 */\nstruct Node {\n val: i32,\n next: Option&lt;Rc&lt;RefCell&lt;Node&gt;&gt;&gt;,\n}\n\n/* \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf */\nimpl Node {\n fn new(val: i32) -&gt; Self {\n Self { val: val, next: None }\n }\n}\n\n/* \u95a2\u6570 */\nfn function() -&gt; i32 {\n // \u7279\u5b9a\u306e\u64cd\u4f5c\u3092\u5b9f\u884c...\n return 0;\n}\n\nfn algorithm(n: i32) -&gt; i32 { // \u5165\u529b\u30c7\u30fc\u30bf\n const a: i32 = 0; // \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u5b9a\u6570\uff09\n let mut b = 0; // \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u5909\u6570\uff09\n let node = Node::new(0); // \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\uff09\n let c = function(); // \u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593\uff08\u95a2\u6570\u547c\u3073\u51fa\u3057\uff09\n return a + b + c; // \u51fa\u529b\u30c7\u30fc\u30bf\n}\n</code></pre> <pre><code>/* \u95a2\u6570 */\nint func() {\n // \u7279\u5b9a\u306e\u64cd\u4f5c\u3092\u5b9f\u884c...\n return 0;\n}\n\nint algorithm(int n) { // \u5165\u529b\u30c7\u30fc\u30bf\n const int a = 0; // \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u5b9a\u6570\uff09\n int b = 0; // \u4e00\u6642\u30c7\u30fc\u30bf\uff08\u5909\u6570\uff09\n int c = func(); // \u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593\uff08\u95a2\u6570\u547c\u3073\u51fa\u3057\uff09\n return a + b + c; // \u51fa\u529b\u30c7\u30fc\u30bf\n}\n</code></pre> <pre><code>\n</code></pre>"},{"location":"chapter_computational_complexity/space_complexity/#242","title":"2.4.2 \u00a0 \u8a08\u7b97\u65b9\u6cd5","text":"<p>\u7a7a\u9593\u8a08\u7b97\u91cf\u3092\u8a08\u7b97\u3059\u308b\u65b9\u6cd5\u306f\u6642\u9593\u8a08\u7b97\u91cf\u3068\u307b\u307c\u540c\u69d8\u3067\u3001\u7d71\u8a08\u5bfe\u8c61\u3092\u300c\u64cd\u4f5c\u6570\u300d\u304b\u3089\u300c\u4f7f\u7528\u7a7a\u9593\u306e\u30b5\u30a4\u30ba\u300d\u306b\u5909\u66f4\u3059\u308b\u3060\u3051\u3067\u3059\u3002</p> <p>\u3057\u304b\u3057\u3001\u6642\u9593\u8a08\u7b97\u91cf\u3068\u306f\u7570\u306a\u308a\u3001\u901a\u5e38\u306f\u6700\u60aa\u30b1\u30fc\u30b9\u7a7a\u9593\u8a08\u7b97\u91cf\u306e\u307f\u306b\u7126\u70b9\u3092\u5f53\u3066\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30e1\u30e2\u30ea\u7a7a\u9593\u304c\u30cf\u30fc\u30c9\u8981\u4ef6\u3067\u3042\u308a\u3001\u3059\u3079\u3066\u306e\u5165\u529b\u30c7\u30fc\u30bf\u306e\u4e0b\u3067\u5341\u5206\u306a\u30e1\u30e2\u30ea\u7a7a\u9593\u304c\u78ba\u4fdd\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u4fdd\u8a3c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u305f\u3081\u3067\u3059\u3002</p> <p>\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u3092\u8003\u3048\u3066\u307f\u307e\u3057\u3087\u3046\u3002\u6700\u60aa\u30b1\u30fc\u30b9\u7a7a\u9593\u8a08\u7b97\u91cf\u306e\u300c\u6700\u60aa\u30b1\u30fc\u30b9\u300d\u3068\u3044\u3046\u7528\u8a9e\u306b\u306f2\u3064\u306e\u610f\u5473\u304c\u3042\u308a\u307e\u3059\u3002</p> <ol> <li>\u6700\u60aa\u306e\u5165\u529b\u30c7\u30fc\u30bf\u306b\u57fa\u3065\u304f: \\(n &lt; 10\\)\u306e\u5834\u5408\u3001\u7a7a\u9593\u8a08\u7b97\u91cf\u306f\\(O(1)\\)\u3067\u3059\u304c\u3001\\(n &gt; 10\\)\u306e\u5834\u5408\u3001\u521d\u671f\u5316\u3055\u308c\u305f\u914d\u5217<code>nums</code>\u304c\\(O(n)\\)\u306e\u7a7a\u9593\u3092\u5360\u6709\u3059\u308b\u305f\u3081\u3001\u6700\u60aa\u30b1\u30fc\u30b9\u7a7a\u9593\u8a08\u7b97\u91cf\u306f\\(O(n)\\)\u3067\u3059\u3002</li> <li>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5b9f\u884c\u4e2d\u306b\u4f7f\u7528\u3055\u308c\u308b\u30d4\u30fc\u30af\u30e1\u30e2\u30ea\u306b\u57fa\u3065\u304f: \u4f8b\u3048\u3070\u3001\u6700\u5f8c\u306e\u884c\u3092\u5b9f\u884c\u3059\u308b\u524d\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u306f\\(O(1)\\)\u306e\u7a7a\u9593\u3092\u5360\u6709\u3057\u307e\u3059\u3002\u914d\u5217<code>nums</code>\u3092\u521d\u671f\u5316\u3059\u308b\u969b\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u306f\\(O(n)\\)\u306e\u7a7a\u9593\u3092\u5360\u6709\u3059\u308b\u305f\u3081\u3001\u6700\u60aa\u30b1\u30fc\u30b9\u7a7a\u9593\u8a08\u7b97\u91cf\u306f\\(O(n)\\)\u3067\u3059\u3002</li> </ol> PythonC++JavaC#GoSwiftJSTSDartRustCKotlin <pre><code>def algorithm(n: int):\n a = 0 # O(1)\n b = [0] * 10000 # O(1)\n if n &gt; 10:\n nums = [0] * n # O(n)\n</code></pre> <pre><code>void algorithm(int n) {\n int a = 0; // O(1)\n vector&lt;int&gt; b(10000); // O(1)\n if (n &gt; 10)\n vector&lt;int&gt; nums(n); // O(n)\n}\n</code></pre> <pre><code>void algorithm(int n) {\n int a = 0; // O(1)\n int[] b = new int[10000]; // O(1)\n if (n &gt; 10)\n int[] nums = new int[n]; // O(n)\n}\n</code></pre> <pre><code>void Algorithm(int n) {\n int a = 0; // O(1)\n int[] b = new int[10000]; // O(1)\n if (n &gt; 10) {\n int[] nums = new int[n]; // O(n)\n }\n}\n</code></pre> <pre><code>func algorithm(n int) {\n a := 0 // O(1)\n b := make([]int, 10000) // O(1)\n var nums []int\n if n &gt; 10 {\n nums := make([]int, n) // O(n)\n }\n fmt.Println(a, b, nums)\n}\n</code></pre> <pre><code>func algorithm(n: Int) {\n let a = 0 // O(1)\n let b = Array(repeating: 0, count: 10000) // O(1)\n if n &gt; 10 {\n let nums = Array(repeating: 0, count: n) // O(n)\n }\n}\n</code></pre> <pre><code>function algorithm(n) {\n const a = 0; // O(1)\n const b = new Array(10000); // O(1)\n if (n &gt; 10) {\n const nums = new Array(n); // O(n)\n }\n}\n</code></pre> <pre><code>function algorithm(n: number): void {\n const a = 0; // O(1)\n const b = new Array(10000); // O(1)\n if (n &gt; 10) {\n const nums = new Array(n); // O(n)\n }\n}\n</code></pre> <pre><code>void algorithm(int n) {\n int a = 0; // O(1)\n List&lt;int&gt; b = List.filled(10000, 0); // O(1)\n if (n &gt; 10) {\n List&lt;int&gt; nums = List.filled(n, 0); // O(n)\n }\n}\n</code></pre> <pre><code>fn algorithm(n: i32) {\n let a = 0; // O(1)\n let b = [0; 10000]; // O(1)\n if n &gt; 10 {\n let nums = vec![0; n as usize]; // O(n)\n }\n}\n</code></pre> <pre><code>void algorithm(int n) {\n int a = 0; // O(1)\n int b[10000]; // O(1)\n if (n &gt; 10)\n int nums[n] = {0}; // O(n)\n}\n</code></pre> <pre><code>\n</code></pre> <p>\u518d\u5e30\u95a2\u6570\u3067\u306f\u3001\u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593\u3092\u8003\u616e\u306b\u5165\u308c\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u3092\u8003\u3048\u3066\u307f\u307e\u3057\u3087\u3046\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlin <pre><code>def function() -&gt; int:\n # \u7279\u5b9a\u306e\u64cd\u4f5c\u3092\u5b9f\u884c\n return 0\n\ndef loop(n: int):\n \"\"\"\u30eb\u30fc\u30d7 O(1)\"\"\"\n for _ in range(n):\n function()\n\ndef recur(n: int):\n \"\"\"\u518d\u5e30 O(n)\"\"\"\n if n == 1:\n return\n return recur(n - 1)\n</code></pre> <pre><code>int func() {\n // \u7279\u5b9a\u306e\u64cd\u4f5c\u3092\u5b9f\u884c\n return 0;\n}\n/* \u30b5\u30a4\u30af\u30eb O(1) */\nvoid loop(int n) {\n for (int i = 0; i &lt; n; i++) {\n func();\n }\n}\n/* \u518d\u5e30 O(n) */\nvoid recur(int n) {\n if (n == 1) return;\n recur(n - 1);\n}\n</code></pre> <pre><code>int function() {\n // \u7279\u5b9a\u306e\u64cd\u4f5c\u3092\u5b9f\u884c\n return 0;\n}\n/* \u30b5\u30a4\u30af\u30eb O(1) */\nvoid loop(int n) {\n for (int i = 0; i &lt; n; i++) {\n function();\n }\n}\n/* \u518d\u5e30 O(n) */\nvoid recur(int n) {\n if (n == 1) return;\n recur(n - 1);\n}\n</code></pre> <pre><code>int Function() {\n // \u7279\u5b9a\u306e\u64cd\u4f5c\u3092\u5b9f\u884c\n return 0;\n}\n/* \u30b5\u30a4\u30af\u30eb O(1) */\nvoid Loop(int n) {\n for (int i = 0; i &lt; n; i++) {\n Function();\n }\n}\n/* \u518d\u5e30 O(n) */\nint Recur(int n) {\n if (n == 1) return 1;\n return Recur(n - 1);\n}\n</code></pre> <pre><code>func function() int {\n // \u7279\u5b9a\u306e\u64cd\u4f5c\u3092\u5b9f\u884c\n return 0\n}\n\n/* \u30b5\u30a4\u30af\u30eb O(1) */\nfunc loop(n int) {\n for i := 0; i &lt; n; i++ {\n function()\n }\n}\n\n/* \u518d\u5e30 O(n) */\nfunc recur(n int) {\n if n == 1 {\n return\n }\n recur(n - 1)\n}\n</code></pre> <pre><code>@discardableResult\nfunc function() -&gt; Int {\n // \u7279\u5b9a\u306e\u64cd\u4f5c\u3092\u5b9f\u884c\n return 0\n}\n\n/* \u30b5\u30a4\u30af\u30eb O(1) */\nfunc loop(n: Int) {\n for _ in 0 ..&lt; n {\n function()\n }\n}\n\n/* \u518d\u5e30 O(n) */\nfunc recur(n: Int) {\n if n == 1 {\n return\n }\n recur(n: n - 1)\n}\n</code></pre> <pre><code>function constFunc() {\n // \u7279\u5b9a\u306e\u64cd\u4f5c\u3092\u5b9f\u884c\n return 0;\n}\n/* \u30b5\u30a4\u30af\u30eb O(1) */\nfunction loop(n) {\n for (let i = 0; i &lt; n; i++) {\n constFunc();\n }\n}\n/* \u518d\u5e30 O(n) */\nfunction recur(n) {\n if (n === 1) return;\n return recur(n - 1);\n}\n</code></pre> <pre><code>function constFunc(): number {\n // \u7279\u5b9a\u306e\u64cd\u4f5c\u3092\u5b9f\u884c\n return 0;\n}\n/* \u30b5\u30a4\u30af\u30eb O(1) */\nfunction loop(n: number): void {\n for (let i = 0; i &lt; n; i++) {\n constFunc();\n }\n}\n/* \u518d\u5e30 O(n) */\nfunction recur(n: number): void {\n if (n === 1) return;\n return recur(n - 1);\n}\n</code></pre> <pre><code>int function() {\n // \u7279\u5b9a\u306e\u64cd\u4f5c\u3092\u5b9f\u884c\n return 0;\n}\n/* \u30b5\u30a4\u30af\u30eb O(1) */\nvoid loop(int n) {\n for (int i = 0; i &lt; n; i++) {\n function();\n }\n}\n/* \u518d\u5e30 O(n) */\nvoid recur(int n) {\n if (n == 1) return;\n recur(n - 1);\n}\n</code></pre> <pre><code>fn function() -&gt; i32 {\n // \u7279\u5b9a\u306e\u64cd\u4f5c\u3092\u5b9f\u884c\n return 0;\n}\n/* \u30b5\u30a4\u30af\u30eb O(1) */\nfn loop(n: i32) {\n for i in 0..n {\n function();\n }\n}\n/* \u518d\u5e30 O(n) */\nvoid recur(n: i32) {\n if n == 1 {\n return;\n }\n recur(n - 1);\n}\n</code></pre> <pre><code>int func() {\n // \u7279\u5b9a\u306e\u64cd\u4f5c\u3092\u5b9f\u884c\n return 0;\n}\n/* \u30b5\u30a4\u30af\u30eb O(1) */\nvoid loop(int n) {\n for (int i = 0; i &lt; n; i++) {\n func();\n }\n}\n/* \u518d\u5e30 O(n) */\nvoid recur(int n) {\n if (n == 1) return;\n recur(n - 1);\n}\n</code></pre> <pre><code>\n</code></pre> <p><code>loop()</code>\u95a2\u6570\u3068<code>recur()</code>\u95a2\u6570\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f\u4e21\u65b9\u3068\u3082\\(O(n)\\)\u3067\u3059\u304c\u3001\u305d\u308c\u3089\u306e\u7a7a\u9593\u8a08\u7b97\u91cf\u306f\u7570\u306a\u308a\u307e\u3059\u3002</p> <ul> <li><code>loop()</code>\u95a2\u6570\u306f\u30eb\u30fc\u30d7\u5185\u3067<code>function()</code>\u3092\\(n\\)\u56de\u547c\u3073\u51fa\u3057\u3001\u5404\u53cd\u5fa9\u306e<code>function()</code>\u306f\u8fd4\u3063\u3066\u305d\u306e\u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593\u3092\u89e3\u653e\u3059\u308b\u305f\u3081\u3001\u7a7a\u9593\u8a08\u7b97\u91cf\u306f\\(O(1)\\)\u306e\u307e\u307e\u3067\u3059\u3002</li> <li>\u518d\u5e30\u95a2\u6570<code>recur()</code>\u306f\u5b9f\u884c\u4e2d\u306b\\(n\\)\u500b\u306e\u672a\u8fd4\u5374\u306e<code>recur()</code>\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u540c\u6642\u306b\u5b58\u5728\u3059\u308b\u305f\u3081\u3001\\(O(n)\\)\u306e\u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593\u3092\u5360\u6709\u3057\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_computational_complexity/space_complexity/#243","title":"2.4.3 \u00a0 \u4e00\u822c\u7684\u306a\u7a2e\u985e","text":"<p>\u5165\u529b\u30c7\u30fc\u30bf\u306e\u30b5\u30a4\u30ba\u3092\\(n\\)\u3068\u3059\u308b\u3068\u3001\u4e0b\u56f3\u306f\u4e00\u822c\u7684\u306a\u7a7a\u9593\u8a08\u7b97\u91cf\u306e\u7a2e\u985e\u3092\u793a\u3057\u3066\u3044\u307e\u3059\uff08\u4f4e\u3044\u3082\u306e\u304b\u3089\u9ad8\u3044\u3082\u306e\u3078\u3068\u4e26\u3079\u3089\u308c\u3066\u3044\u307e\u3059\uff09\u3002</p> \\[ \\begin{aligned} &amp; O(1) &lt; O(\\log n) &lt; O(n) &lt; O(n^2) &lt; O(2^n) \\newline &amp; \\text{\u5b9a\u6570} &lt; \\text{\u5bfe\u6570} &lt; \\text{\u7dda\u5f62} &lt; \\text{\u4e8c\u6b21} &lt; \\text{\u6307\u6570} \\end{aligned} \\] <p></p> <p> \u56f3 2-16 \u00a0 Common types of space complexity </p>"},{"location":"chapter_computational_complexity/space_complexity/#1-o1","title":"1. \u00a0 \u5b9a\u6570\u30aa\u30fc\u30c0\u30fc \\(O(1)\\)","text":"<p>\u5b9a\u6570\u30aa\u30fc\u30c0\u30fc\u306f\u3001\u5165\u529b\u30c7\u30fc\u30bf\u30b5\u30a4\u30ba\\(n\\)\u3068\u306f\u7121\u95a2\u4fc2\u306a\u5b9a\u6570\u3001\u5909\u6570\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3067\u4e00\u822c\u7684\u3067\u3059\u3002</p> <p>\u30eb\u30fc\u30d7\u3067\u5909\u6570\u3092\u521d\u671f\u5316\u3057\u305f\u308a\u95a2\u6570\u3092\u547c\u3073\u51fa\u3057\u305f\u308a\u3059\u308b\u305f\u3081\u306b\u5360\u6709\u3055\u308c\u308b\u30e1\u30e2\u30ea\u306f\u3001\u6b21\u306e\u30b5\u30a4\u30af\u30eb\u306b\u5165\u308b\u969b\u306b\u89e3\u653e\u3055\u308c\u3001\u7a7a\u9593\u4e0a\u3067\u7d2f\u7a4d\u3055\u308c\u306a\u3044\u305f\u3081\u3001\u7a7a\u9593\u8a08\u7b97\u91cf\u306f\\(O(1)\\)\u306e\u307e\u307e\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby space_complexity.py<pre><code>def function() -&gt; int:\n \"\"\"\u95a2\u6570\"\"\"\n # \u4f55\u3089\u304b\u306e\u64cd\u4f5c\u3092\u5b9f\u884c\n return 0\n\ndef constant(n: int):\n \"\"\"\u5b9a\u6570\u8907\u96d1\u5ea6\"\"\"\n # \u5b9a\u6570\u3001\u5909\u6570\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f O(1) \u306e\u30b9\u30da\u30fc\u30b9\u3092\u5360\u6709\n a = 0\n nums = [0] * 10000\n node = ListNode(0)\n # \u30eb\u30fc\u30d7\u5185\u306e\u5909\u6570\u306f O(1) \u306e\u30b9\u30da\u30fc\u30b9\u3092\u5360\u6709\n for _ in range(n):\n c = 0\n # \u30eb\u30fc\u30d7\u5185\u306e\u95a2\u6570\u306f O(1) \u306e\u30b9\u30da\u30fc\u30b9\u3092\u5360\u6709\n for _ in range(n):\n function()\n</code></pre> space_complexity.cpp<pre><code>/* \u95a2\u6570 */\nint func() {\n // \u4f55\u3089\u304b\u306e\u64cd\u4f5c\u3092\u5b9f\u884c\n return 0;\n}\n\n/* \u5b9a\u6570\u8a08\u7b97\u91cf */\nvoid constant(int n) {\n // \u5b9a\u6570\u3001\u5909\u6570\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f O(1) \u7a7a\u9593\u3092\u5360\u3081\u308b\n const int a = 0;\n int b = 0;\n vector&lt;int&gt; nums(10000);\n ListNode node(0);\n // \u30eb\u30fc\u30d7\u5185\u306e\u5909\u6570\u306f O(1) \u7a7a\u9593\u3092\u5360\u3081\u308b\n for (int i = 0; i &lt; n; i++) {\n int c = 0;\n }\n // \u30eb\u30fc\u30d7\u5185\u306e\u95a2\u6570\u306f O(1) \u7a7a\u9593\u3092\u5360\u3081\u308b\n for (int i = 0; i &lt; n; i++) {\n func();\n }\n}\n</code></pre> space_complexity.java<pre><code>/* \u95a2\u6570 */\nint function() {\n // \u4f55\u3089\u304b\u306e\u64cd\u4f5c\u3092\u5b9f\u884c\n return 0;\n}\n\n/* \u5b9a\u6570\u8a08\u7b97\u91cf */\nvoid constant(int n) {\n // \u5b9a\u6570\u3001\u5909\u6570\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f O(1) \u7a7a\u9593\u3092\u5360\u3081\u308b\n final int a = 0;\n int b = 0;\n int[] nums = new int[10000];\n ListNode node = new ListNode(0);\n // \u30eb\u30fc\u30d7\u5185\u306e\u5909\u6570\u306f O(1) \u7a7a\u9593\u3092\u5360\u3081\u308b\n for (int i = 0; i &lt; n; i++) {\n int c = 0;\n }\n // \u30eb\u30fc\u30d7\u5185\u306e\u95a2\u6570\u306f O(1) \u7a7a\u9593\u3092\u5360\u3081\u308b\n for (int i = 0; i &lt; n; i++) {\n function();\n }\n}\n</code></pre> space_complexity.cs<pre><code>[class]{space_complexity}-[func]{Function}\n\n[class]{space_complexity}-[func]{Constant}\n</code></pre> space_complexity.go<pre><code>[class]{}-[func]{function}\n\n[class]{}-[func]{spaceConstant}\n</code></pre> space_complexity.swift<pre><code>[class]{}-[func]{function}\n\n[class]{}-[func]{constant}\n</code></pre> space_complexity.js<pre><code>[class]{}-[func]{constFunc}\n\n[class]{}-[func]{constant}\n</code></pre> space_complexity.ts<pre><code>[class]{}-[func]{constFunc}\n\n[class]{}-[func]{constant}\n</code></pre> space_complexity.dart<pre><code>[class]{}-[func]{function}\n\n[class]{}-[func]{constant}\n</code></pre> space_complexity.rs<pre><code>[class]{}-[func]{function}\n\n[class]{}-[func]{constant}\n</code></pre> space_complexity.c<pre><code>[class]{}-[func]{func}\n\n[class]{}-[func]{constant}\n</code></pre> space_complexity.kt<pre><code>[class]{}-[func]{function}\n\n[class]{}-[func]{constant}\n</code></pre> space_complexity.rb<pre><code>[class]{}-[func]{function}\n\n[class]{}-[func]{constant}\n</code></pre>"},{"location":"chapter_computational_complexity/space_complexity/#2-on","title":"2. \u00a0 \u7dda\u5f62\u30aa\u30fc\u30c0\u30fc \\(O(n)\\)","text":"<p>\u7dda\u5f62\u30aa\u30fc\u30c0\u30fc\u306f\u914d\u5217\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u3001\u30b9\u30bf\u30c3\u30af\u3001\u30ad\u30e5\u30fc\u306a\u3069\u3067\u4e00\u822c\u7684\u3067\u3001\u8981\u7d20\u6570\u306f\\(n\\)\u306b\u6bd4\u4f8b\u3057\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby space_complexity.py<pre><code>def linear(n: int):\n \"\"\"\u7dda\u5f62\u8907\u96d1\u5ea6\"\"\"\n # \u9577\u3055 n \u306e\u30ea\u30b9\u30c8\u306f O(n) \u306e\u30b9\u30da\u30fc\u30b9\u3092\u5360\u6709\n nums = [0] * n\n # \u9577\u3055 n \u306e\u30cf\u30c3\u30b7\u30e5\u30de\u30c3\u30d7\u306f O(n) \u306e\u30b9\u30da\u30fc\u30b9\u3092\u5360\u6709\n hmap = dict[int, str]()\n for i in range(n):\n hmap[i] = str(i)\n</code></pre> space_complexity.cpp<pre><code>/* \u7dda\u5f62\u8a08\u7b97\u91cf */\nvoid linear(int n) {\n // \u9577\u3055 n \u306e\u914d\u5217\u306f O(n) \u7a7a\u9593\u3092\u5360\u3081\u308b\n vector&lt;int&gt; nums(n);\n // \u9577\u3055 n \u306e\u30ea\u30b9\u30c8\u306f O(n) \u7a7a\u9593\u3092\u5360\u3081\u308b\n vector&lt;ListNode&gt; nodes;\n for (int i = 0; i &lt; n; i++) {\n nodes.push_back(ListNode(i));\n }\n // \u9577\u3055 n \u306e\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u306f O(n) \u7a7a\u9593\u3092\u5360\u3081\u308b\n unordered_map&lt;int, string&gt; map;\n for (int i = 0; i &lt; n; i++) {\n map[i] = to_string(i);\n }\n}\n</code></pre> space_complexity.java<pre><code>/* \u7dda\u5f62\u8a08\u7b97\u91cf */\nvoid linear(int n) {\n // \u9577\u3055 n \u306e\u914d\u5217\u306f O(n) \u7a7a\u9593\u3092\u5360\u3081\u308b\n int[] nums = new int[n];\n // \u9577\u3055 n \u306e\u30ea\u30b9\u30c8\u306f O(n) \u7a7a\u9593\u3092\u5360\u3081\u308b\n List&lt;ListNode&gt; nodes = new ArrayList&lt;&gt;();\n for (int i = 0; i &lt; n; i++) {\n nodes.add(new ListNode(i));\n }\n // \u9577\u3055 n \u306e\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u306f O(n) \u7a7a\u9593\u3092\u5360\u3081\u308b\n Map&lt;Integer, String&gt; map = new HashMap&lt;&gt;();\n for (int i = 0; i &lt; n; i++) {\n map.put(i, String.valueOf(i));\n }\n}\n</code></pre> space_complexity.cs<pre><code>[class]{space_complexity}-[func]{Linear}\n</code></pre> space_complexity.go<pre><code>[class]{}-[func]{spaceLinear}\n</code></pre> space_complexity.swift<pre><code>[class]{}-[func]{linear}\n</code></pre> space_complexity.js<pre><code>[class]{}-[func]{linear}\n</code></pre> space_complexity.ts<pre><code>[class]{}-[func]{linear}\n</code></pre> space_complexity.dart<pre><code>[class]{}-[func]{linear}\n</code></pre> space_complexity.rs<pre><code>[class]{}-[func]{linear}\n</code></pre> space_complexity.c<pre><code>[class]{HashTable}-[func]{}\n\n[class]{}-[func]{linear}\n</code></pre> space_complexity.kt<pre><code>[class]{}-[func]{linear}\n</code></pre> space_complexity.rb<pre><code>[class]{}-[func]{linear}\n</code></pre> <p>\u4e0b\u56f3\u306b\u793a\u3055\u308c\u3066\u3044\u308b\u3088\u3046\u306b\u3001\u3053\u306e\u95a2\u6570\u306e\u518d\u5e30\u6df1\u5ea6\u306f\\(n\\)\u3067\u3001\\(n\\)\u500b\u306e\u672a\u8fd4\u5374\u306e<code>linear_recur()</code>\u95a2\u6570\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u3042\u308a\u3001\\(O(n)\\)\u30b5\u30a4\u30ba\u306e\u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby space_complexity.py<pre><code>def linear_recur(n: int):\n \"\"\"\u7dda\u5f62\u8907\u96d1\u5ea6\uff08\u518d\u5e30\u5b9f\u88c5\uff09\"\"\"\n print(\"\u518d\u5e30 n =\", n)\n if n == 1:\n return\n linear_recur(n - 1)\n</code></pre> space_complexity.cpp<pre><code>/* \u7dda\u5f62\u8a08\u7b97\u91cf\uff08\u518d\u5e30\u5b9f\u88c5\uff09 */\nvoid linearRecur(int n) {\n cout &lt;&lt; \"\u518d\u5e30 n = \" &lt;&lt; n &lt;&lt; endl;\n if (n == 1)\n return;\n linearRecur(n - 1);\n}\n</code></pre> space_complexity.java<pre><code>/* \u7dda\u5f62\u8a08\u7b97\u91cf\uff08\u518d\u5e30\u5b9f\u88c5\uff09 */\nvoid linearRecur(int n) {\n System.out.println(\"\u518d\u5e30 n = \" + n);\n if (n == 1)\n return;\n linearRecur(n - 1);\n}\n</code></pre> space_complexity.cs<pre><code>[class]{space_complexity}-[func]{LinearRecur}\n</code></pre> space_complexity.go<pre><code>[class]{}-[func]{spaceLinearRecur}\n</code></pre> space_complexity.swift<pre><code>[class]{}-[func]{linearRecur}\n</code></pre> space_complexity.js<pre><code>[class]{}-[func]{linearRecur}\n</code></pre> space_complexity.ts<pre><code>[class]{}-[func]{linearRecur}\n</code></pre> space_complexity.dart<pre><code>[class]{}-[func]{linearRecur}\n</code></pre> space_complexity.rs<pre><code>[class]{}-[func]{linear_recur}\n</code></pre> space_complexity.c<pre><code>[class]{}-[func]{linearRecur}\n</code></pre> space_complexity.kt<pre><code>[class]{}-[func]{linearRecur}\n</code></pre> space_complexity.rb<pre><code>[class]{}-[func]{linear_recur}\n</code></pre> <p></p> <p> \u56f3 2-17 \u00a0 Recursive function generating linear order space complexity </p>"},{"location":"chapter_computational_complexity/space_complexity/#3-on2","title":"3. \u00a0 \u4e8c\u6b21\u30aa\u30fc\u30c0\u30fc \\(O(n^2)\\)","text":"<p>\u4e8c\u6b21\u30aa\u30fc\u30c0\u30fc\u306f\u884c\u5217\u3084\u30b0\u30e9\u30d5\u3067\u4e00\u822c\u7684\u3067\u3001\u8981\u7d20\u6570\u306f\\(n\\)\u306e\u4e8c\u4e57\u306b\u6bd4\u4f8b\u3057\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby space_complexity.py<pre><code>def quadratic(n: int):\n \"\"\"\u5e73\u65b9\u8907\u96d1\u5ea6\"\"\"\n # \u4e8c\u6b21\u5143\u30ea\u30b9\u30c8\u306f O(n^2) \u306e\u30b9\u30da\u30fc\u30b9\u3092\u5360\u6709\n num_matrix = [[0] * n for _ in range(n)]\n</code></pre> space_complexity.cpp<pre><code>/* \u4e8c\u6b21\u8a08\u7b97\u91cf */\nvoid quadratic(int n) {\n // \u4e8c\u6b21\u5143\u30ea\u30b9\u30c8\u306f O(n^2) \u7a7a\u9593\u3092\u5360\u3081\u308b\n vector&lt;vector&lt;int&gt;&gt; numMatrix;\n for (int i = 0; i &lt; n; i++) {\n vector&lt;int&gt; tmp;\n for (int j = 0; j &lt; n; j++) {\n tmp.push_back(0);\n }\n numMatrix.push_back(tmp);\n }\n}\n</code></pre> space_complexity.java<pre><code>/* \u4e8c\u6b21\u8a08\u7b97\u91cf */\nvoid quadratic(int n) {\n // \u884c\u5217\u306f O(n^2) \u7a7a\u9593\u3092\u5360\u3081\u308b\n int[][] numMatrix = new int[n][n];\n // \u4e8c\u6b21\u5143\u30ea\u30b9\u30c8\u306f O(n^2) \u7a7a\u9593\u3092\u5360\u3081\u308b\n List&lt;List&lt;Integer&gt;&gt; numList = new ArrayList&lt;&gt;();\n for (int i = 0; i &lt; n; i++) {\n List&lt;Integer&gt; tmp = new ArrayList&lt;&gt;();\n for (int j = 0; j &lt; n; j++) {\n tmp.add(0);\n }\n numList.add(tmp);\n }\n}\n</code></pre> space_complexity.cs<pre><code>[class]{space_complexity}-[func]{Quadratic}\n</code></pre> space_complexity.go<pre><code>[class]{}-[func]{spaceQuadratic}\n</code></pre> space_complexity.swift<pre><code>[class]{}-[func]{quadratic}\n</code></pre> space_complexity.js<pre><code>[class]{}-[func]{quadratic}\n</code></pre> space_complexity.ts<pre><code>[class]{}-[func]{quadratic}\n</code></pre> space_complexity.dart<pre><code>[class]{}-[func]{quadratic}\n</code></pre> space_complexity.rs<pre><code>[class]{}-[func]{quadratic}\n</code></pre> space_complexity.c<pre><code>[class]{}-[func]{quadratic}\n</code></pre> space_complexity.kt<pre><code>[class]{}-[func]{quadratic}\n</code></pre> space_complexity.rb<pre><code>[class]{}-[func]{quadratic}\n</code></pre> <p>\u4e0b\u56f3\u306b\u793a\u3055\u308c\u3066\u3044\u308b\u3088\u3046\u306b\u3001\u3053\u306e\u95a2\u6570\u306e\u518d\u5e30\u6df1\u5ea6\u306f\\(n\\)\u3067\u3001\u5404\u518d\u5e30\u547c\u3073\u51fa\u3057\u3067\u9577\u3055\\(n\\)\u3001\\(n-1\\)\u3001\\(\\dots\\)\u3001\\(2\\)\u3001\\(1\\)\u306e\u914d\u5217\u304c\u521d\u671f\u5316\u3055\u308c\u3001\u5e73\u5747\\(n/2\\)\u3068\u306a\u308a\u3001\u5168\u4f53\u3068\u3057\u3066\\(O(n^2)\\)\u306e\u7a7a\u9593\u3092\u5360\u6709\u3057\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby space_complexity.py<pre><code>def quadratic_recur(n: int) -&gt; int:\n \"\"\"\u5e73\u65b9\u8907\u96d1\u5ea6\uff08\u518d\u5e30\u5b9f\u88c5\uff09\"\"\"\n if n &lt;= 0:\n return 0\n nums = [0] * n\n print(f\"\u518d\u5e30 n = {n} \u306e\u4e2d\u3067\u914d\u5217\u306e\u9577\u3055 = {len(nums)}\")\n return quadratic_recur(n - 1)\n</code></pre> space_complexity.cpp<pre><code>/* \u4e8c\u6b21\u8a08\u7b97\u91cf\uff08\u518d\u5e30\u5b9f\u88c5\uff09 */\nint quadraticRecur(int n) {\n if (n &lt;= 0)\n return 0;\n vector&lt;int&gt; nums(n);\n cout &lt;&lt; \"\u518d\u5e30 n = \" &lt;&lt; n &lt;&lt; \", nums \u306e\u9577\u3055 = \" &lt;&lt; nums.size() &lt;&lt; endl;\n return quadraticRecur(n - 1);\n}\n</code></pre> space_complexity.java<pre><code>/* \u4e8c\u6b21\u8a08\u7b97\u91cf\uff08\u518d\u5e30\u5b9f\u88c5\uff09 */\nint quadraticRecur(int n) {\n if (n &lt;= 0)\n return 0;\n // \u914d\u5217 nums \u306e\u9577\u3055 = n, n-1, ..., 2, 1\n int[] nums = new int[n];\n System.out.println(\"\u518d\u5e30 n = \" + n + \" \u306e nums \u306e\u9577\u3055 = \" + nums.length);\n return quadraticRecur(n - 1);\n}\n</code></pre> space_complexity.cs<pre><code>[class]{space_complexity}-[func]{QuadraticRecur}\n</code></pre> space_complexity.go<pre><code>[class]{}-[func]{spaceQuadraticRecur}\n</code></pre> space_complexity.swift<pre><code>[class]{}-[func]{quadraticRecur}\n</code></pre> space_complexity.js<pre><code>[class]{}-[func]{quadraticRecur}\n</code></pre> space_complexity.ts<pre><code>[class]{}-[func]{quadraticRecur}\n</code></pre> space_complexity.dart<pre><code>[class]{}-[func]{quadraticRecur}\n</code></pre> space_complexity.rs<pre><code>[class]{}-[func]{quadratic_recur}\n</code></pre> space_complexity.c<pre><code>[class]{}-[func]{quadraticRecur}\n</code></pre> space_complexity.kt<pre><code>[class]{}-[func]{quadraticRecur}\n</code></pre> space_complexity.rb<pre><code>[class]{}-[func]{quadratic_recur}\n</code></pre> <p></p> <p> \u56f3 2-18 \u00a0 Recursive function generating quadratic order space complexity </p>"},{"location":"chapter_computational_complexity/space_complexity/#4-o2n","title":"4. \u00a0 \u6307\u6570\u30aa\u30fc\u30c0\u30fc \\(O(2^n)\\)","text":"<p>\u6307\u6570\u30aa\u30fc\u30c0\u30fc\u306f\u4e8c\u5206\u6728\u3067\u4e00\u822c\u7684\u3067\u3059\u3002\u4e0b\u56f3\u3092\u89b3\u5bdf\u3059\u308b\u3068\u3001\\(n\\)\u30ec\u30d9\u30eb\u306e\u300c\u5b8c\u5168\u4e8c\u5206\u6728\u300d\u306f\\(2^n - 1\\)\u500b\u306e\u30ce\u30fc\u30c9\u3092\u6301\u3061\u3001\\(O(2^n)\\)\u306e\u7a7a\u9593\u3092\u5360\u6709\u3057\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby space_complexity.py<pre><code>def build_tree(n: int) -&gt; TreeNode | None:\n \"\"\"\u6307\u6570\u8907\u96d1\u5ea6\uff08\u5b8c\u5168\u4e8c\u5206\u6728\u306e\u69cb\u7bc9\uff09\"\"\"\n if n == 0:\n return None\n root = TreeNode(0)\n root.left = build_tree(n - 1)\n root.right = build_tree(n - 1)\n return root\n</code></pre> space_complexity.cpp<pre><code>/* \u6307\u6570\u8a08\u7b97\u91cf\uff08\u5b8c\u5168\u4e8c\u5206\u6728\u306e\u69cb\u7bc9\uff09 */\nTreeNode *buildTree(int n) {\n if (n == 0)\n return nullptr;\n TreeNode *root = new TreeNode(0);\n root-&gt;left = buildTree(n - 1);\n root-&gt;right = buildTree(n - 1);\n return root;\n}\n</code></pre> space_complexity.java<pre><code>/* \u6307\u6570\u8a08\u7b97\u91cf\uff08\u5b8c\u5168\u4e8c\u5206\u6728\u306e\u69cb\u7bc9\uff09 */\nTreeNode buildTree(int n) {\n if (n == 0)\n return null;\n TreeNode root = new TreeNode(0);\n root.left = buildTree(n - 1);\n root.right = buildTree(n - 1);\n return root;\n}\n</code></pre> space_complexity.cs<pre><code>[class]{space_complexity}-[func]{BuildTree}\n</code></pre> space_complexity.go<pre><code>[class]{}-[func]{buildTree}\n</code></pre> space_complexity.swift<pre><code>[class]{}-[func]{buildTree}\n</code></pre> space_complexity.js<pre><code>[class]{}-[func]{buildTree}\n</code></pre> space_complexity.ts<pre><code>[class]{}-[func]{buildTree}\n</code></pre> space_complexity.dart<pre><code>[class]{}-[func]{buildTree}\n</code></pre> space_complexity.rs<pre><code>[class]{}-[func]{build_tree}\n</code></pre> space_complexity.c<pre><code>[class]{}-[func]{buildTree}\n</code></pre> space_complexity.kt<pre><code>[class]{}-[func]{buildTree}\n</code></pre> space_complexity.rb<pre><code>[class]{}-[func]{build_tree}\n</code></pre> <p></p> <p> \u56f3 2-19 \u00a0 Full binary tree generating exponential order space complexity </p>"},{"location":"chapter_computational_complexity/space_complexity/#5-olog-n","title":"5. \u00a0 \u5bfe\u6570\u30aa\u30fc\u30c0\u30fc \\(O(\\log n)\\)","text":"<p>\u5bfe\u6570\u30aa\u30fc\u30c0\u30fc\u306f\u5206\u5272\u7d71\u6cbb\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u4e00\u822c\u7684\u3067\u3059\u3002\u4f8b\u3048\u3070\u3001\u30de\u30fc\u30b8\u30bd\u30fc\u30c8\u3067\u306f\u3001\u9577\u3055\\(n\\)\u306e\u914d\u5217\u304c\u5404\u30e9\u30a6\u30f3\u30c9\u3067\u518d\u5e30\u7684\u306b\u534a\u5206\u306b\u5206\u5272\u3055\u308c\u3001\u9ad8\u3055\\(\\log n\\)\u306e\u518d\u5e30\u6728\u3092\u5f62\u6210\u3057\u3001\\(O(\\log n)\\)\u306e\u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</p> <p>\u5225\u306e\u4f8b\u306f\u3001\u6570\u5024\u3092\u6587\u5b57\u5217\u306b\u5909\u63db\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u6b63\u306e\u6574\u6570\\(n\\)\u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u3001\u305d\u306e\u6841\u6570\u306f\\(\\log_{10} n + 1\\)\u3067\u3001\u6587\u5b57\u5217\u306e\u9577\u3055\u306b\u5bfe\u5fdc\u3059\u308b\u305f\u3081\u3001\u7a7a\u9593\u8a08\u7b97\u91cf\u306f\\(O(\\log_{10} n + 1) = O(\\log n)\\)\u3067\u3059\u3002</p>"},{"location":"chapter_computational_complexity/space_complexity/#244","title":"2.4.4 \u00a0 \u6642\u9593\u3068\u7a7a\u9593\u306e\u30d0\u30e9\u30f3\u30b9","text":"<p>\u7406\u60f3\u7684\u306b\u306f\u3001\u6642\u9593\u8a08\u7b97\u91cf\u3068\u7a7a\u9593\u8a08\u7b97\u91cf\u306e\u4e21\u65b9\u304c\u6700\u9069\u3067\u3042\u308b\u3053\u3068\u3092\u76ee\u6307\u3057\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u5b9f\u969b\u306b\u306f\u4e21\u65b9\u3092\u540c\u6642\u306b\u6700\u9069\u5316\u3059\u308b\u3053\u3068\u306f\u3057\u3070\u3057\u3070\u56f0\u96e3\u3067\u3059\u3002</p> <p>\u6642\u9593\u8a08\u7b97\u91cf\u3092\u4e0b\u3052\u308b\u3053\u3068\u306f\u901a\u5e38\u3001\u7a7a\u9593\u8a08\u7b97\u91cf\u306e\u5897\u52a0\u3092\u4ee3\u511f\u3068\u3057\u3001\u305d\u306e\u9006\u3082\u540c\u69d8\u3067\u3059\u3002\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u901f\u5ea6\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306b\u30e1\u30e2\u30ea\u7a7a\u9593\u3092\u72a0\u7272\u306b\u3059\u308b\u30a2\u30d7\u30ed\u30fc\u30c1\u306f\u300c\u6642\u7a7a\u30c8\u30ec\u30fc\u30c9\u30aa\u30d5\u300d\u3068\u3057\u3066\u77e5\u3089\u308c\u3001\u305d\u306e\u9006\u306f\u300c\u7a7a\u6642\u30c8\u30ec\u30fc\u30c9\u30aa\u30d5\u300d\u3068\u3057\u3066\u77e5\u3089\u308c\u3066\u3044\u307e\u3059\u3002</p> <p>\u9078\u629e\u306f\u3001\u3069\u3061\u3089\u306e\u5074\u9762\u3092\u3088\u308a\u91cd\u8996\u3059\u308b\u304b\u306b\u4f9d\u5b58\u3057\u307e\u3059\u3002\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u6642\u9593\u306f\u7a7a\u9593\u3088\u308a\u3082\u8cb4\u91cd\u3067\u3042\u308b\u305f\u3081\u3001\u300c\u6642\u7a7a\u30c8\u30ec\u30fc\u30c9\u30aa\u30d5\u300d\u304c\u3088\u308a\u4e00\u822c\u7684\u306a\u6226\u7565\u3067\u3059\u3002\u3082\u3061\u308d\u3093\u3001\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u3092\u6271\u3046\u969b\u306f\u7a7a\u9593\u8a08\u7b97\u91cf\u3092\u5236\u5fa1\u3059\u308b\u3053\u3068\u3082\u975e\u5e38\u306b\u91cd\u8981\u3067\u3059\u3002</p>"},{"location":"chapter_computational_complexity/summary/","title":"2.5 \u00a0 \u307e\u3068\u3081","text":""},{"location":"chapter_computational_complexity/summary/#1","title":"1. \u00a0 \u91cd\u8981\u306a\u30ec\u30d3\u30e5\u30fc","text":"<p>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u52b9\u7387\u8a55\u4fa1</p> <ul> <li>\u6642\u9593\u52b9\u7387\u3068\u7a7a\u9593\u52b9\u7387\u306f\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u512a\u52a3\u3092\u8a55\u4fa1\u3059\u308b2\u3064\u306e\u4e3b\u8981\u306a\u57fa\u6e96\u3067\u3059\u3002</li> <li>\u5b9f\u969b\u306e\u30c6\u30b9\u30c8\u306b\u3088\u3063\u3066\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u52b9\u7387\u3092\u8a55\u4fa1\u3067\u304d\u307e\u3059\u304c\u3001\u30c6\u30b9\u30c8\u74b0\u5883\u306e\u5f71\u97ff\u3092\u6392\u9664\u3059\u308b\u3053\u3068\u306f\u56f0\u96e3\u3067\u3001\u5927\u91cf\u306e\u8a08\u7b97\u30ea\u30bd\u30fc\u30b9\u3092\u6d88\u8cbb\u3057\u307e\u3059\u3002</li> <li>\u8907\u96d1\u5ea6\u5206\u6790\u306f\u5b9f\u969b\u306e\u30c6\u30b9\u30c8\u306e\u6b20\u70b9\u3092\u514b\u670d\u3067\u304d\u307e\u3059\u3002\u305d\u306e\u7d50\u679c\u306f\u3059\u3079\u3066\u306e\u52d5\u4f5c\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306b\u9069\u7528\u3067\u304d\u3001\u7570\u306a\u308b\u30c7\u30fc\u30bf\u30b9\u30b1\u30fc\u30eb\u3067\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u52b9\u7387\u3092\u660e\u3089\u304b\u306b\u3067\u304d\u307e\u3059\u3002</li> </ul> <p>\u6642\u9593\u8a08\u7b97\u91cf</p> <ul> <li>\u6642\u9593\u8a08\u7b97\u91cf\u306f\u3001\u30c7\u30fc\u30bf\u91cf\u306e\u5897\u52a0\u306b\u4f34\u3046\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5b9f\u884c\u6642\u9593\u306e\u50be\u5411\u3092\u6e2c\u5b9a\u3057\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u52b9\u7387\u3092\u52b9\u679c\u7684\u306b\u8a55\u4fa1\u3057\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u5165\u529b\u30c7\u30fc\u30bf\u91cf\u304c\u5c11\u306a\u3044\u5834\u5408\u3084\u6642\u9593\u8a08\u7b97\u91cf\u304c\u540c\u3058\u5834\u5408\u306a\u3069\u3001\u7279\u5b9a\u306e\u30b1\u30fc\u30b9\u3067\u306f\u5931\u6557\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u52b9\u7387\u3092\u6b63\u78ba\u306b\u6bd4\u8f03\u3059\u308b\u3053\u3068\u304c\u56f0\u96e3\u306b\u306a\u308a\u307e\u3059\u3002</li> <li>\u6700\u60aa\u30b1\u30fc\u30b9\u6642\u9593\u8a08\u7b97\u91cf\u306f\u30d3\u30c3\u30b0\\(O\\)\u8a18\u6cd5\u3092\u4f7f\u7528\u3057\u3066\u8868\u8a18\u3055\u308c\u3001\u6f38\u8fd1\u4e0a\u9650\u3092\u8868\u3057\u3001\\(n\\)\u304c\u7121\u9650\u5927\u306b\u8fd1\u3065\u304f\u306b\u3064\u308c\u3066\u306e\u64cd\u4f5c\u6570\\(T(n)\\)\u306e\u5897\u52a0\u30ec\u30d9\u30eb\u3092\u53cd\u6620\u3057\u307e\u3059\u3002</li> <li>\u6642\u9593\u8a08\u7b97\u91cf\u306e\u8a08\u7b97\u306b\u306f2\u3064\u306e\u30b9\u30c6\u30c3\u30d7\u304c\u542b\u307e\u308c\u307e\u3059\uff1a\u307e\u305a\u64cd\u4f5c\u6570\u3092\u30ab\u30a6\u30f3\u30c8\u3057\u3001\u6b21\u306b\u6f38\u8fd1\u4e0a\u9650\u3092\u6c7a\u5b9a\u3057\u307e\u3059\u3002</li> <li>\u4e00\u822c\u7684\u306a\u6642\u9593\u8a08\u7b97\u91cf\u306f\u3001\u4f4e\u3044\u3082\u306e\u304b\u3089\u9ad8\u3044\u3082\u306e\u3078\u3068\u4e26\u3079\u308b\u3068\u3001\\(O(1)\\)\u3001\\(O(\\log n)\\)\u3001\\(O(n)\\)\u3001\\(O(n \\log n)\\)\u3001\\(O(n^2)\\)\u3001\\(O(2^n)\\)\u3001\\(O(n!)\\)\u306a\u3069\u304c\u542b\u307e\u308c\u307e\u3059\u3002</li> <li>\u4e00\u90e8\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f\u56fa\u5b9a\u3055\u308c\u3066\u304a\u3089\u305a\u3001\u5165\u529b\u30c7\u30fc\u30bf\u306e\u5206\u5e03\u306b\u4f9d\u5b58\u3057\u307e\u3059\u3002\u6642\u9593\u8a08\u7b97\u91cf\u306f\u6700\u60aa\u3001\u6700\u826f\u3001\u5e73\u5747\u306e\u30b1\u30fc\u30b9\u306b\u5206\u3051\u3089\u308c\u307e\u3059\u3002\u6700\u826f\u30b1\u30fc\u30b9\u306f\u3001\u5165\u529b\u30c7\u30fc\u30bf\u304c\u6700\u826f\u30b1\u30fc\u30b9\u3092\u9054\u6210\u3059\u308b\u305f\u3081\u306b\u53b3\u683c\u306a\u6761\u4ef6\u3092\u6e80\u305f\u3059\u5fc5\u8981\u304c\u3042\u308b\u305f\u3081\u3001\u307b\u3068\u3093\u3069\u4f7f\u7528\u3055\u308c\u307e\u305b\u3093\u3002</li> <li>\u5e73\u5747\u6642\u9593\u8a08\u7b97\u91cf\u306f\u3001\u30e9\u30f3\u30c0\u30e0\u30c7\u30fc\u30bf\u5165\u529b\u4e0b\u3067\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u52b9\u7387\u3092\u53cd\u6620\u3057\u3001\u5b9f\u969b\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u6027\u80fd\u306b\u5bc6\u63a5\u306b\u985e\u4f3c\u3057\u3066\u3044\u307e\u3059\u3002\u5e73\u5747\u6642\u9593\u8a08\u7b97\u91cf\u306e\u8a08\u7b97\u306b\u306f\u3001\u5165\u529b\u30c7\u30fc\u30bf\u306e\u5206\u5e03\u3068\u305d\u306e\u5f8c\u306e\u6570\u5b66\u7684\u671f\u5f85\u5024\u3092\u8003\u616e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</li> </ul> <p>\u7a7a\u9593\u8a08\u7b97\u91cf</p> <ul> <li>\u7a7a\u9593\u8a08\u7b97\u91cf\u306f\u3001\u6642\u9593\u8a08\u7b97\u91cf\u3068\u540c\u69d8\u306b\u3001\u30c7\u30fc\u30bf\u91cf\u306e\u5897\u52a0\u306b\u4f34\u3046\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u304c\u5360\u6709\u3059\u308b\u30e1\u30e2\u30ea\u7a7a\u9593\u306e\u50be\u5411\u3092\u6e2c\u5b9a\u3057\u307e\u3059\u3002</li> <li>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5b9f\u884c\u4e2d\u306b\u4f7f\u7528\u3055\u308c\u308b\u95a2\u9023\u30e1\u30e2\u30ea\u7a7a\u9593\u306f\u3001\u5165\u529b\u7a7a\u9593\u3001\u4e00\u6642\u7a7a\u9593\u3001\u51fa\u529b\u7a7a\u9593\u306b\u5206\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u4e00\u822c\u7684\u306b\u3001\u5165\u529b\u7a7a\u9593\u306f\u7a7a\u9593\u8a08\u7b97\u91cf\u306e\u8a08\u7b97\u306b\u542b\u307e\u308c\u307e\u305b\u3093\u3002\u4e00\u6642\u7a7a\u9593\u306f\u4e00\u6642\u30c7\u30fc\u30bf\u3001\u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593\u3001\u547d\u4ee4\u7a7a\u9593\u306b\u5206\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593\u306f\u901a\u5e38\u3001\u518d\u5e30\u95a2\u6570\u3067\u306e\u307f\u7a7a\u9593\u8a08\u7b97\u91cf\u306b\u5f71\u97ff\u3057\u307e\u3059\u3002</li> <li>\u901a\u5e38\u306f\u6700\u60aa\u30b1\u30fc\u30b9\u7a7a\u9593\u8a08\u7b97\u91cf\u306e\u307f\u306b\u7126\u70b9\u3092\u5f53\u3066\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u6700\u60aa\u306e\u5165\u529b\u30c7\u30fc\u30bf\u3068\u64cd\u4f5c\u306e\u6700\u60aa\u306e\u77ac\u9593\u3067\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u7a7a\u9593\u8a08\u7b97\u91cf\u3092\u8a08\u7b97\u3059\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002</li> <li>\u4e00\u822c\u7684\u306a\u7a7a\u9593\u8a08\u7b97\u91cf\u306f\u3001\u4f4e\u3044\u3082\u306e\u304b\u3089\u9ad8\u3044\u3082\u306e\u3078\u3068\u4e26\u3079\u308b\u3068\u3001\\(O(1)\\)\u3001\\(O(\\log n)\\)\u3001\\(O(n)\\)\u3001\\(O(n^2)\\)\u3001\\(O(2^n)\\)\u306a\u3069\u304c\u542b\u307e\u308c\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_computational_complexity/summary/#2-q-a","title":"2. \u00a0 Q &amp; A","text":"<p>Q: \u672b\u5c3e\u518d\u5e30\u306e\u7a7a\u9593\u8a08\u7b97\u91cf\u306f\\(O(1)\\)\u3067\u3059\u304b\uff1f</p> <p>\u7406\u8ad6\u7684\u306b\u306f\u3001\u672b\u5c3e\u518d\u5e30\u95a2\u6570\u306e\u7a7a\u9593\u8a08\u7b97\u91cf\u306f\\(O(1)\\)\u306b\u6700\u9069\u5316\u3067\u304d\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u307b\u3068\u3093\u3069\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\uff08Java\u3001Python\u3001C++\u3001Go\u3001C#\u306a\u3069\uff09\u306f\u672b\u5c3e\u518d\u5e30\u306e\u81ea\u52d5\u6700\u9069\u5316\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u306a\u3044\u305f\u3081\u3001\u4e00\u822c\u7684\u306b\u7a7a\u9593\u8a08\u7b97\u91cf\u306f\\(O(n)\\)\u3068\u8003\u3048\u3089\u308c\u3066\u3044\u307e\u3059\u3002</p> <p>Q: \u300c\u95a2\u6570\u300d\u3068\u300c\u30e1\u30bd\u30c3\u30c9\u300d\u3068\u3044\u3046\u7528\u8a9e\u306e\u9055\u3044\u306f\u4f55\u3067\u3059\u304b\uff1f</p> <p>\u95a2\u6570\u306f\u72ec\u7acb\u3057\u3066\u5b9f\u884c\u3067\u304d\u3001\u3059\u3079\u3066\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u304c\u660e\u793a\u7684\u306b\u6e21\u3055\u308c\u307e\u3059\u3002\u30e1\u30bd\u30c3\u30c9\u306f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3001\u305d\u308c\u3092\u547c\u3073\u51fa\u3059\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u6697\u9ed9\u7684\u306b\u6e21\u3055\u308c\u3001\u30af\u30e9\u30b9\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5185\u306b\u542b\u307e\u308c\u308b\u30c7\u30fc\u30bf\u3092\u64cd\u4f5c\u3067\u304d\u307e\u3059\u3002</p> <p>\u4e00\u822c\u7684\u306a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u304b\u3089\u306e\u4f8b\u3092\u3044\u304f\u3064\u304b\u793a\u3057\u307e\u3059\uff1a</p> <ul> <li>C\u306f\u624b\u7d9a\u304d\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u306e\u6982\u5ff5\u304c\u306a\u3044\u305f\u3081\u3001\u95a2\u6570\u306e\u307f\u304c\u3042\u308a\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u69cb\u9020\u4f53\uff08struct\uff09\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u3067\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3092\u30b7\u30df\u30e5\u30ec\u30fc\u30c8\u3067\u304d\u3001\u3053\u308c\u3089\u306e\u69cb\u9020\u4f53\u306b\u95a2\u9023\u4ed8\u3051\u3089\u308c\u305f\u95a2\u6570\u306f\u4ed6\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306e\u30e1\u30bd\u30c3\u30c9\u3068\u540c\u7b49\u3067\u3059\u3002</li> <li>Java\u3068C#\u306f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u3001\u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\uff08\u30e1\u30bd\u30c3\u30c9\uff09\u306f\u901a\u5e38\u30af\u30e9\u30b9\u306e\u4e00\u90e8\u3067\u3059\u3002\u9759\u7684\u30e1\u30bd\u30c3\u30c9\u306f\u30af\u30e9\u30b9\u306b\u30d0\u30a4\u30f3\u30c9\u3055\u308c\u3001\u7279\u5b9a\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u306a\u3044\u305f\u3081\u3001\u95a2\u6570\u306e\u3088\u3046\u306b\u52d5\u4f5c\u3057\u307e\u3059\u3002</li> <li>C++\u3068Python\u306f\u624b\u7d9a\u304d\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\uff08\u95a2\u6570\uff09\u3068\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\uff08\u30e1\u30bd\u30c3\u30c9\uff09\u306e\u4e21\u65b9\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002</li> </ul> <p>Q: \u300c\u7a7a\u9593\u8a08\u7b97\u91cf\u306e\u4e00\u822c\u7684\u306a\u7a2e\u985e\u300d\u306e\u56f3\u306f\u3001\u5360\u6709\u7a7a\u9593\u306e\u7d76\u5bfe\u30b5\u30a4\u30ba\u3092\u53cd\u6620\u3057\u3066\u3044\u307e\u3059\u304b\uff1f</p> <p>\u3044\u3044\u3048\u3001\u56f3\u306f\u7a7a\u9593\u8a08\u7b97\u91cf\u3092\u793a\u3057\u3066\u304a\u308a\u3001\u3053\u308c\u306f\u5897\u52a0\u50be\u5411\u3092\u53cd\u6620\u3059\u308b\u3082\u306e\u3067\u3042\u308a\u3001\u5360\u6709\u7a7a\u9593\u306e\u7d76\u5bfe\u30b5\u30a4\u30ba\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002</p> <p>\\(n = 8\\)\u3092\u53d6\u308b\u3068\u3001\u5404\u66f2\u7dda\u306e\u5024\u304c\u305d\u306e\u95a2\u6570\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u306a\u3044\u3053\u3068\u306b\u6c17\u3065\u304f\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u3053\u308c\u306f\u3001\u5404\u66f2\u7dda\u306b\u5b9a\u6570\u9805\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u305f\u3081\u3067\u3001\u5024\u306e\u7bc4\u56f2\u3092\u8996\u899a\u7684\u306b\u5feb\u9069\u306a\u7bc4\u56f2\u306b\u5727\u7e2e\u3059\u308b\u3053\u3068\u3092\u610f\u56f3\u3057\u3066\u3044\u307e\u3059\u3002</p> <p>\u5b9f\u969b\u306b\u306f\u3001\u901a\u5e38\u306f\u5404\u30e1\u30bd\u30c3\u30c9\u306e\u300c\u5b9a\u6570\u9805\u300d\u8907\u96d1\u5ea6\u3092\u77e5\u3089\u306a\u3044\u305f\u3081\u3001\u8907\u96d1\u5ea6\u306e\u307f\u306b\u57fa\u3065\u3044\u3066\\(n = 8\\)\u306e\u6700\u826f\u30bd\u30ea\u30e5\u30fc\u30b7\u30e7\u30f3\u3092\u9078\u629e\u3059\u308b\u3053\u3068\u306f\u4e00\u822c\u7684\u306b\u4e0d\u53ef\u80fd\u3067\u3059\u3002\u3057\u304b\u3057\u3001\\(n = 8^5\\)\u306e\u5834\u5408\u3001\u5897\u52a0\u50be\u5411\u304c\u652f\u914d\u7684\u306b\u306a\u308b\u305f\u3081\u3001\u9078\u629e\u304c\u306f\u308b\u304b\u306b\u5bb9\u6613\u306b\u306a\u308a\u307e\u3059\u3002</p>"},{"location":"chapter_computational_complexity/time_complexity/","title":"2.3 \u00a0 \u6642\u9593\u8a08\u7b97\u91cf","text":"<p>\u5b9f\u884c\u6642\u9593\u306f\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u52b9\u7387\u3092\u76f4\u611f\u7684\u306b\u8a55\u4fa1\u3067\u304d\u307e\u3059\u3002\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5b9f\u884c\u6642\u9593\u3092\u6b63\u78ba\u306b\u63a8\u5b9a\u3059\u308b\u306b\u306f\u3069\u3046\u3059\u308c\u3070\u3088\u3044\u3067\u3057\u3087\u3046\u304b\uff1f</p> <ol> <li>\u5b9f\u884c\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e\u6c7a\u5b9a: \u3053\u308c\u306b\u306f\u3001\u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u69cb\u6210\u3001\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3001\u30b7\u30b9\u30c6\u30e0\u74b0\u5883\u306a\u3069\u304c\u542b\u307e\u308c\u3001\u3053\u308c\u3089\u3059\u3079\u3066\u304c\u30b3\u30fc\u30c9\u306e\u5b9f\u884c\u52b9\u7387\u306b\u5f71\u97ff\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u69d8\u3005\u306a\u8a08\u7b97\u64cd\u4f5c\u306e\u5b9f\u884c\u6642\u9593\u306e\u8a55\u4fa1: \u4f8b\u3048\u3070\u3001\u52a0\u7b97\u64cd\u4f5c<code>+</code>\u306f1 ns\u3001\u4e57\u7b97\u64cd\u4f5c<code>*</code>\u306f10 ns\u3001\u5370\u5237\u64cd\u4f5c<code>print()</code>\u306f5 ns\u306a\u3069\u304b\u304b\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u30b3\u30fc\u30c9\u5185\u306e\u3059\u3079\u3066\u306e\u8a08\u7b97\u64cd\u4f5c\u3092\u30ab\u30a6\u30f3\u30c8: \u3053\u308c\u3089\u3059\u3079\u3066\u306e\u64cd\u4f5c\u306e\u5b9f\u884c\u6642\u9593\u3092\u5408\u8a08\u3059\u308b\u3068\u3001\u7dcf\u5b9f\u884c\u6642\u9593\u304c\u5f97\u3089\u308c\u307e\u3059\u3002</li> </ol> <p>\u4f8b\u3048\u3070\u3001\u5165\u529b\u30b5\u30a4\u30ba\u304c\\(n\\)\u306e\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u3092\u8003\u3048\u3066\u307f\u307e\u3057\u3087\u3046\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlin <pre><code># \u7279\u5b9a\u306e\u64cd\u4f5c\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u4e0b\u3067\ndef algorithm(n: int):\n a = 2 # 1 ns\n a = a + 1 # 1 ns\n a = a * 2 # 10 ns\n # n\u56de\u30eb\u30fc\u30d7\n for _ in range(n): # 1 ns\n print(0) # 5 ns\n</code></pre> <pre><code>// \u7279\u5b9a\u306e\u64cd\u4f5c\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u4e0b\u3067\nvoid algorithm(int n) {\n int a = 2; // 1 ns\n a = a + 1; // 1 ns\n a = a * 2; // 10 ns\n // n\u56de\u30eb\u30fc\u30d7\n for (int i = 0; i &lt; n; i++) { // 1 ns, \u6bce\u56dei++\u304c\u5b9f\u884c\u3055\u308c\u308b\n cout &lt;&lt; 0 &lt;&lt; endl; // 5 ns\n }\n}\n</code></pre> <pre><code>// \u7279\u5b9a\u306e\u64cd\u4f5c\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u4e0b\u3067\nvoid algorithm(int n) {\n int a = 2; // 1 ns\n a = a + 1; // 1 ns\n a = a * 2; // 10 ns\n // n\u56de\u30eb\u30fc\u30d7\n for (int i = 0; i &lt; n; i++) { // 1 ns, \u6bce\u56dei++\u304c\u5b9f\u884c\u3055\u308c\u308b\n System.out.println(0); // 5 ns\n }\n}\n</code></pre> <pre><code>// \u7279\u5b9a\u306e\u64cd\u4f5c\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u4e0b\u3067\nvoid Algorithm(int n) {\n int a = 2; // 1 ns\n a = a + 1; // 1 ns\n a = a * 2; // 10 ns\n // n\u56de\u30eb\u30fc\u30d7\n for (int i = 0; i &lt; n; i++) { // 1 ns, \u6bce\u56dei++\u304c\u5b9f\u884c\u3055\u308c\u308b\n Console.WriteLine(0); // 5 ns\n }\n}\n</code></pre> <pre><code>// \u7279\u5b9a\u306e\u64cd\u4f5c\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u4e0b\u3067\nfunc algorithm(n int) {\n a := 2 // 1 ns\n a = a + 1 // 1 ns\n a = a * 2 // 10 ns\n // n\u56de\u30eb\u30fc\u30d7\n for i := 0; i &lt; n; i++ { // 1 ns\n fmt.Println(a) // 5 ns\n }\n}\n</code></pre> <pre><code>// \u7279\u5b9a\u306e\u64cd\u4f5c\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u4e0b\u3067\nfunc algorithm(n: Int) {\n var a = 2 // 1 ns\n a = a + 1 // 1 ns\n a = a * 2 // 10 ns\n // n\u56de\u30eb\u30fc\u30d7\n for _ in 0 ..&lt; n { // 1 ns\n print(0) // 5 ns\n }\n}\n</code></pre> <pre><code>// \u7279\u5b9a\u306e\u64cd\u4f5c\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u4e0b\u3067\nfunction algorithm(n) {\n var a = 2; // 1 ns\n a = a + 1; // 1 ns\n a = a * 2; // 10 ns\n // n\u56de\u30eb\u30fc\u30d7\n for(let i = 0; i &lt; n; i++) { // 1 ns, \u6bce\u56dei++\u304c\u5b9f\u884c\u3055\u308c\u308b\n console.log(0); // 5 ns\n }\n}\n</code></pre> <pre><code>// \u7279\u5b9a\u306e\u64cd\u4f5c\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u4e0b\u3067\nfunction algorithm(n: number): void {\n var a: number = 2; // 1 ns\n a = a + 1; // 1 ns\n a = a * 2; // 10 ns\n // n\u56de\u30eb\u30fc\u30d7\n for(let i = 0; i &lt; n; i++) { // 1 ns, \u6bce\u56dei++\u304c\u5b9f\u884c\u3055\u308c\u308b\n console.log(0); // 5 ns\n }\n}\n</code></pre> <pre><code>// \u7279\u5b9a\u306e\u64cd\u4f5c\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u4e0b\u3067\nvoid algorithm(int n) {\n int a = 2; // 1 ns\n a = a + 1; // 1 ns\n a = a * 2; // 10 ns\n // n\u56de\u30eb\u30fc\u30d7\n for (int i = 0; i &lt; n; i++) { // 1 ns, \u6bce\u56dei++\u304c\u5b9f\u884c\u3055\u308c\u308b\n print(0); // 5 ns\n }\n}\n</code></pre> <pre><code>// \u7279\u5b9a\u306e\u64cd\u4f5c\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u4e0b\u3067\nfn algorithm(n: i32) {\n let mut a = 2; // 1 ns\n a = a + 1; // 1 ns\n a = a * 2; // 10 ns\n // n\u56de\u30eb\u30fc\u30d7\n for _ in 0..n { // \u6bce\u56dei++\u30671 ns\n println!(\"{}\", 0); // 5 ns\n }\n}\n</code></pre> <pre><code>// \u7279\u5b9a\u306e\u64cd\u4f5c\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u4e0b\u3067\nvoid algorithm(int n) {\n int a = 2; // 1 ns\n a = a + 1; // 1 ns\n a = a * 2; // 10 ns\n // n\u56de\u30eb\u30fc\u30d7\n for (int i = 0; i &lt; n; i++) { // 1 ns, \u6bce\u56dei++\u304c\u5b9f\u884c\u3055\u308c\u308b\n printf(\"%d\", 0); // 5 ns\n }\n}\n</code></pre> <pre><code>\n</code></pre> <p>\u4e0a\u8a18\u306e\u65b9\u6cd5\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5b9f\u884c\u6642\u9593\u306f\\((6n + 12)\\) ns\u3068\u3057\u3066\u8a08\u7b97\u3067\u304d\u307e\u3059\uff1a</p> \\[ 1 + 1 + 10 + (1 + 5) \\times n = 6n + 12 \\] <p>\u3057\u304b\u3057\u3001\u5b9f\u969b\u306b\u306f\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5b9f\u884c\u6642\u9593\u3092\u30ab\u30a6\u30f3\u30c8\u3059\u308b\u3053\u3068\u306f\u5b9f\u7528\u7684\u3067\u3082\u5408\u7406\u7684\u3067\u3082\u3042\u308a\u307e\u305b\u3093\u3002\u7b2c\u4e00\u306b\u3001\u63a8\u5b9a\u6642\u9593\u3092\u5b9f\u884c\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306b\u7d50\u3073\u4ed8\u3051\u305f\u304f\u3042\u308a\u307e\u305b\u3093\u3002\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u69d8\u3005\u306a\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3067\u5b9f\u884c\u3055\u308c\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3089\u3067\u3059\u3002\u7b2c\u4e8c\u306b\u3001\u5404\u7a2e\u64cd\u4f5c\u306e\u5b9f\u884c\u6642\u9593\u3092\u77e5\u308b\u3053\u3068\u306f\u56f0\u96e3\u3067\u3042\u308a\u3001\u63a8\u5b9a\u30d7\u30ed\u30bb\u30b9\u3092\u96e3\u3057\u304f\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_computational_complexity/time_complexity/#231","title":"2.3.1 \u00a0 \u6642\u9593\u5897\u52a0\u50be\u5411\u306e\u8a55\u4fa1","text":"<p>\u6642\u9593\u8a08\u7b97\u91cf\u5206\u6790\u306f\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5b9f\u884c\u6642\u9593\u3092\u30ab\u30a6\u30f3\u30c8\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001**\u30c7\u30fc\u30bf\u91cf\u304c\u5897\u52a0\u3059\u308b\u306b\u3064\u308c\u3066\u306e\u5b9f\u884c\u6642\u9593\u306e\u5897\u52a0\u50be\u5411**\u3092\u5206\u6790\u3057\u307e\u3059\u3002</p> <p>\u3053\u306e\u300c\u6642\u9593\u5897\u52a0\u50be\u5411\u300d\u306e\u6982\u5ff5\u3092\u4f8b\u3067\u7406\u89e3\u3057\u307e\u3057\u3087\u3046\u3002\u5165\u529b\u30c7\u30fc\u30bf\u30b5\u30a4\u30ba\u3092\\(n\\)\u3068\u3057\u30013\u3064\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0<code>A</code>\u3001<code>B</code>\u3001<code>C</code>\u3092\u8003\u3048\u3066\u307f\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlin <pre><code># \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0A\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u5b9a\u6570\u30aa\u30fc\u30c0\u30fc\ndef algorithm_A(n: int):\n print(0)\n# \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0B\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u7dda\u5f62\u30aa\u30fc\u30c0\u30fc\ndef algorithm_B(n: int):\n for _ in range(n):\n print(0)\n# \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0C\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u5b9a\u6570\u30aa\u30fc\u30c0\u30fc\ndef algorithm_C(n: int):\n for _ in range(1000000):\n print(0)\n</code></pre> <pre><code>// \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0A\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u5b9a\u6570\u30aa\u30fc\u30c0\u30fc\nvoid algorithm_A(int n) {\n cout &lt;&lt; 0 &lt;&lt; endl;\n}\n// \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0B\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u7dda\u5f62\u30aa\u30fc\u30c0\u30fc\nvoid algorithm_B(int n) {\n for (int i = 0; i &lt; n; i++) {\n cout &lt;&lt; 0 &lt;&lt; endl;\n }\n}\n// \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0C\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u5b9a\u6570\u30aa\u30fc\u30c0\u30fc\nvoid algorithm_C(int n) {\n for (int i = 0; i &lt; 1000000; i++) {\n cout &lt;&lt; 0 &lt;&lt; endl;\n }\n}\n</code></pre> <pre><code>// \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0A\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u5b9a\u6570\u30aa\u30fc\u30c0\u30fc\nvoid algorithm_A(int n) {\n System.out.println(0);\n}\n// \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0B\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u7dda\u5f62\u30aa\u30fc\u30c0\u30fc\nvoid algorithm_B(int n) {\n for (int i = 0; i &lt; n; i++) {\n System.out.println(0);\n }\n}\n// \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0C\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u5b9a\u6570\u30aa\u30fc\u30c0\u30fc\nvoid algorithm_C(int n) {\n for (int i = 0; i &lt; 1000000; i++) {\n System.out.println(0);\n }\n}\n</code></pre> <pre><code>// \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0A\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u5b9a\u6570\u30aa\u30fc\u30c0\u30fc\nvoid AlgorithmA(int n) {\n Console.WriteLine(0);\n}\n// \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0B\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u7dda\u5f62\u30aa\u30fc\u30c0\u30fc\nvoid AlgorithmB(int n) {\n for (int i = 0; i &lt; n; i++) {\n Console.WriteLine(0);\n }\n}\n// \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0C\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u5b9a\u6570\u30aa\u30fc\u30c0\u30fc\nvoid AlgorithmC(int n) {\n for (int i = 0; i &lt; 1000000; i++) {\n Console.WriteLine(0);\n }\n}\n</code></pre> <pre><code>// \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0A\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u5b9a\u6570\u30aa\u30fc\u30c0\u30fc\nfunc algorithm_A(n int) {\n fmt.Println(0)\n}\n// \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0B\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u7dda\u5f62\u30aa\u30fc\u30c0\u30fc\nfunc algorithm_B(n int) {\n for i := 0; i &lt; n; i++ {\n fmt.Println(0)\n }\n}\n// \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0C\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u5b9a\u6570\u30aa\u30fc\u30c0\u30fc\nfunc algorithm_C(n int) {\n for i := 0; i &lt; 1000000; i++ {\n fmt.Println(0)\n }\n}\n</code></pre> <pre><code>// \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0A\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u5b9a\u6570\u30aa\u30fc\u30c0\u30fc\nfunc algorithmA(n: Int) {\n print(0)\n}\n\n// \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0B\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u7dda\u5f62\u30aa\u30fc\u30c0\u30fc\nfunc algorithmB(n: Int) {\n for _ in 0 ..&lt; n {\n print(0)\n }\n}\n\n// \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0C\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u5b9a\u6570\u30aa\u30fc\u30c0\u30fc\nfunc algorithmC(n: Int) {\n for _ in 0 ..&lt; 1_000_000 {\n print(0)\n }\n}\n</code></pre> <pre><code>// \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0A\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u5b9a\u6570\u30aa\u30fc\u30c0\u30fc\nfunction algorithm_A(n) {\n console.log(0);\n}\n// \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0B\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u7dda\u5f62\u30aa\u30fc\u30c0\u30fc\nfunction algorithm_B(n) {\n for (let i = 0; i &lt; n; i++) {\n console.log(0);\n }\n}\n// \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0C\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u5b9a\u6570\u30aa\u30fc\u30c0\u30fc\nfunction algorithm_C(n) {\n for (let i = 0; i &lt; 1000000; i++) {\n console.log(0);\n }\n}\n</code></pre> <pre><code>// \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0A\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u5b9a\u6570\u30aa\u30fc\u30c0\u30fc\nfunction algorithm_A(n: number): void {\n console.log(0);\n}\n// \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0B\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u7dda\u5f62\u30aa\u30fc\u30c0\u30fc\nfunction algorithm_B(n: number): void {\n for (let i = 0; i &lt; n; i++) {\n console.log(0);\n }\n}\n// \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0C\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u5b9a\u6570\u30aa\u30fc\u30c0\u30fc\nfunction algorithm_C(n: number): void {\n for (let i = 0; i &lt; 1000000; i++) {\n console.log(0);\n }\n}\n</code></pre> <pre><code>// \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0A\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u5b9a\u6570\u30aa\u30fc\u30c0\u30fc\nvoid algorithmA(int n) {\n print(0);\n}\n// \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0B\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u7dda\u5f62\u30aa\u30fc\u30c0\u30fc\nvoid algorithmB(int n) {\n for (int i = 0; i &lt; n; i++) {\n print(0);\n }\n}\n// \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0C\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u5b9a\u6570\u30aa\u30fc\u30c0\u30fc\nvoid algorithmC(int n) {\n for (int i = 0; i &lt; 1000000; i++) {\n print(0);\n }\n}\n</code></pre> <pre><code>// \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0A\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u5b9a\u6570\u30aa\u30fc\u30c0\u30fc\nfn algorithm_A(n: i32) {\n println!(\"{}\", 0);\n}\n// \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0B\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u7dda\u5f62\u30aa\u30fc\u30c0\u30fc\nfn algorithm_B(n: i32) {\n for _ in 0..n {\n println!(\"{}\", 0);\n }\n}\n// \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0C\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u5b9a\u6570\u30aa\u30fc\u30c0\u30fc\nfn algorithm_C(n: i32) {\n for _ in 0..1000000 {\n println!(\"{}\", 0);\n }\n}\n</code></pre> <pre><code>// \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0A\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u5b9a\u6570\u30aa\u30fc\u30c0\u30fc\nvoid algorithm_A(int n) {\n printf(\"%d\", 0);\n}\n// \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0B\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u7dda\u5f62\u30aa\u30fc\u30c0\u30fc\nvoid algorithm_B(int n) {\n for (int i = 0; i &lt; n; i++) {\n printf(\"%d\", 0);\n }\n}\n// \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0C\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u5b9a\u6570\u30aa\u30fc\u30c0\u30fc\nvoid algorithm_C(int n) {\n for (int i = 0; i &lt; 1000000; i++) {\n printf(\"%d\", 0);\n }\n}\n</code></pre> <pre><code>\n</code></pre> <p>\u4e0b\u56f3\u306f\u3053\u308c\u30893\u3064\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u6642\u9593\u8a08\u7b97\u91cf\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002</p> <ul> <li>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0<code>A</code>\u306b\u306f1\u3064\u306e\u5370\u5237\u64cd\u4f5c\u306e\u307f\u304c\u3042\u308a\u3001\u305d\u306e\u5b9f\u884c\u6642\u9593\u306f\\(n\\)\u3068\u3068\u3082\u306b\u5897\u52a0\u3057\u307e\u305b\u3093\u3002\u305d\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f\u300c\u5b9a\u6570\u30aa\u30fc\u30c0\u30fc\u300d\u3068\u8003\u3048\u3089\u308c\u307e\u3059\u3002</li> <li>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0<code>B</code>\u306b\u306f\\(n\\)\u56de\u30eb\u30fc\u30d7\u3059\u308b\u5370\u5237\u64cd\u4f5c\u304c\u3042\u308a\u3001\u305d\u306e\u5b9f\u884c\u6642\u9593\u306f\\(n\\)\u3068\u7dda\u5f62\u306b\u5897\u52a0\u3057\u307e\u3059\u3002\u305d\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f\u300c\u7dda\u5f62\u30aa\u30fc\u30c0\u30fc\u300d\u3067\u3059\u3002</li> <li>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0<code>C</code>\u306b\u306f1,000,000\u56de\u30eb\u30fc\u30d7\u3059\u308b\u5370\u5237\u64cd\u4f5c\u304c\u3042\u308a\u307e\u3059\u3002\u6642\u9593\u306f\u304b\u304b\u308a\u307e\u3059\u304c\u3001\u5165\u529b\u30c7\u30fc\u30bf\u30b5\u30a4\u30ba\\(n\\)\u3068\u306f\u7121\u95a2\u4fc2\u3067\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001<code>C</code>\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f<code>A</code>\u3068\u540c\u3058\u300c\u5b9a\u6570\u30aa\u30fc\u30c0\u30fc\u300d\u3067\u3059\u3002</li> </ul> <p></p> <p> \u56f3 2-7 \u00a0 Time growth trend of algorithms a, b, and c </p> <p>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5b9f\u884c\u6642\u9593\u3092\u76f4\u63a5\u30ab\u30a6\u30f3\u30c8\u3059\u308b\u3053\u3068\u3068\u6bd4\u8f03\u3057\u3066\u3001\u6642\u9593\u8a08\u7b97\u91cf\u5206\u6790\u306e\u7279\u5fb4\u306f\u4f55\u3067\u3057\u3087\u3046\u304b\uff1f</p> <ul> <li>\u6642\u9593\u8a08\u7b97\u91cf\u306f\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u52b9\u7387\u3092\u52b9\u679c\u7684\u306b\u8a55\u4fa1\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0<code>B</code>\u306f\u7dda\u5f62\u306b\u5897\u52a0\u3059\u308b\u5b9f\u884c\u6642\u9593\u3092\u6301\u3061\u3001\\(n &gt; 1\\)\u306e\u6642\u306f\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0<code>A</code>\u3088\u308a\u9045\u304f\u3001\\(n &gt; 1,000,000\\)\u306e\u6642\u306f<code>C</code>\u3088\u308a\u9045\u304f\u306a\u308a\u307e\u3059\u3002\u5b9f\u969b\u3001\u5165\u529b\u30c7\u30fc\u30bf\u30b5\u30a4\u30ba\\(n\\)\u304c\u5341\u5206\u306b\u5927\u304d\u3044\u9650\u308a\u3001\u300c\u5b9a\u6570\u30aa\u30fc\u30c0\u30fc\u300d\u8907\u96d1\u5ea6\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u5e38\u306b\u300c\u7dda\u5f62\u30aa\u30fc\u30c0\u30fc\u300d\u3088\u308a\u3082\u512a\u308c\u3066\u304a\u308a\u3001\u6642\u9593\u5897\u52a0\u50be\u5411\u306e\u672c\u8cea\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002</li> <li>\u6642\u9593\u8a08\u7b97\u91cf\u5206\u6790\u306f\u3088\u308a\u76f4\u611f\u7684\u3067\u3059\u3002\u660e\u3089\u304b\u306b\u3001\u5b9f\u884c\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3068\u8a08\u7b97\u64cd\u4f5c\u306e\u7a2e\u985e\u306f\u5b9f\u884c\u6642\u9593\u5897\u52a0\u306e\u50be\u5411\u3068\u306f\u7121\u95a2\u4fc2\u3067\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u6642\u9593\u8a08\u7b97\u91cf\u5206\u6790\u3067\u306f\u3001\u3059\u3079\u3066\u306e\u8a08\u7b97\u64cd\u4f5c\u306e\u5b9f\u884c\u6642\u9593\u3092\u540c\u3058\u300c\u5358\u4f4d\u6642\u9593\u300d\u3068\u3057\u3066\u6271\u3046\u3053\u3068\u304c\u3067\u304d\u3001\u300c\u8a08\u7b97\u64cd\u4f5c\u5b9f\u884c\u6642\u9593\u30ab\u30a6\u30f3\u30c8\u300d\u3092\u300c\u8a08\u7b97\u64cd\u4f5c\u30ab\u30a6\u30f3\u30c8\u300d\u306b\u5358\u7d14\u5316\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u63a8\u5b9a\u306e\u8907\u96d1\u3055\u304c\u5927\u5e45\u306b\u8efd\u6e1b\u3055\u308c\u307e\u3059\u3002</li> <li>\u6642\u9593\u8a08\u7b97\u91cf\u306b\u306f\u5236\u9650\u304c\u3042\u308a\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0<code>A</code>\u3068<code>C</code>\u306f\u540c\u3058\u6642\u9593\u8a08\u7b97\u91cf\u3092\u6301\u3061\u307e\u3059\u304c\u3001\u5b9f\u969b\u306e\u5b9f\u884c\u6642\u9593\u306f\u5927\u304d\u304f\u7570\u306a\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u540c\u69d8\u306b\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0<code>B</code>\u306f<code>C</code>\u3088\u308a\u3082\u9ad8\u3044\u6642\u9593\u8a08\u7b97\u91cf\u3092\u6301\u3061\u307e\u3059\u304c\u3001\u5165\u529b\u30c7\u30fc\u30bf\u30b5\u30a4\u30ba\\(n\\)\u304c\u5c0f\u3055\u3044\u5834\u5408\u306f\u660e\u3089\u304b\u306b\u512a\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u5834\u5408\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306e\u307f\u306b\u57fa\u3065\u3044\u3066\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u52b9\u7387\u3092\u5224\u65ad\u3059\u308b\u3053\u3068\u306f\u56f0\u96e3\u3067\u3059\u3002\u3057\u304b\u3057\u3001\u3053\u308c\u3089\u306e\u554f\u984c\u306b\u3082\u304b\u304b\u308f\u3089\u305a\u3001\u8907\u96d1\u5ea6\u5206\u6790\u306f\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u52b9\u7387\u3092\u8a55\u4fa1\u3059\u308b\u305f\u3081\u306e\u6700\u3082\u52b9\u679c\u7684\u3067\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u65b9\u6cd5\u3067\u3059\u3002</li> </ul>"},{"location":"chapter_computational_complexity/time_complexity/#232","title":"2.3.2 \u00a0 \u6f38\u8fd1\u4e0a\u9650","text":"<p>\u5165\u529b\u30b5\u30a4\u30ba\u304c\\(n\\)\u306e\u95a2\u6570\u3092\u8003\u3048\u3066\u307f\u307e\u3057\u3087\u3046\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlin <pre><code>def algorithm(n: int):\n a = 1 # +1\n a = a + 1 # +1\n a = a * 2 # +1\n # n\u56de\u30eb\u30fc\u30d7\n for i in range(n): # +1\n print(0) # +1\n</code></pre> <pre><code>void algorithm(int n) {\n int a = 1; // +1\n a = a + 1; // +1\n a = a * 2; // +1\n // n\u56de\u30eb\u30fc\u30d7\n for (int i = 0; i &lt; n; i++) { // +1 (\u6bce\u56dei++\u304c\u5b9f\u884c\u3055\u308c\u308b)\n cout &lt;&lt; 0 &lt;&lt; endl; // +1\n }\n}\n</code></pre> <pre><code>void algorithm(int n) {\n int a = 1; // +1\n a = a + 1; // +1\n a = a * 2; // +1\n // n\u56de\u30eb\u30fc\u30d7\n for (int i = 0; i &lt; n; i++) { // +1 (\u6bce\u56dei++\u304c\u5b9f\u884c\u3055\u308c\u308b)\n System.out.println(0); // +1\n }\n}\n</code></pre> <pre><code>void Algorithm(int n) {\n int a = 1; // +1\n a = a + 1; // +1\n a = a * 2; // +1\n // n\u56de\u30eb\u30fc\u30d7\n for (int i = 0; i &lt; n; i++) { // +1 (\u6bce\u56dei++\u304c\u5b9f\u884c\u3055\u308c\u308b)\n Console.WriteLine(0); // +1\n }\n}\n</code></pre> <pre><code>func algorithm(n int) {\n a := 1 // +1\n a = a + 1 // +1\n a = a * 2 // +1\n // n\u56de\u30eb\u30fc\u30d7\n for i := 0; i &lt; n; i++ { // +1\n fmt.Println(a) // +1\n }\n}\n</code></pre> <pre><code>func algorithm(n: Int) {\n var a = 1 // +1\n a = a + 1 // +1\n a = a * 2 // +1\n // n\u56de\u30eb\u30fc\u30d7\n for _ in 0 ..&lt; n { // +1\n print(0) // +1\n }\n}\n</code></pre> <pre><code>function algorithm(n) {\n var a = 1; // +1\n a += 1; // +1\n a *= 2; // +1\n // n\u56de\u30eb\u30fc\u30d7\n for(let i = 0; i &lt; n; i++){ // +1 (\u6bce\u56dei++\u304c\u5b9f\u884c\u3055\u308c\u308b)\n console.log(0); // +1\n }\n}\n</code></pre> <pre><code>function algorithm(n: number): void{\n var a: number = 1; // +1\n a += 1; // +1\n a *= 2; // +1\n // n\u56de\u30eb\u30fc\u30d7\n for(let i = 0; i &lt; n; i++){ // +1 (\u6bce\u56dei++\u304c\u5b9f\u884c\u3055\u308c\u308b)\n console.log(0); // +1\n }\n}\n</code></pre> <pre><code>void algorithm(int n) {\n int a = 1; // +1\n a = a + 1; // +1\n a = a * 2; // +1\n // n\u56de\u30eb\u30fc\u30d7\n for (int i = 0; i &lt; n; i++) { // +1 (\u6bce\u56dei++\u304c\u5b9f\u884c\u3055\u308c\u308b)\n print(0); // +1\n }\n}\n</code></pre> <pre><code>fn algorithm(n: i32) {\n let mut a = 1; // +1\n a = a + 1; // +1\n a = a * 2; // +1\n\n // n\u56de\u30eb\u30fc\u30d7\n for _ in 0..n { // +1 (\u6bce\u56dei++\u304c\u5b9f\u884c\u3055\u308c\u308b)\n println!(\"{}\", 0); // +1\n }\n}\n</code></pre> <pre><code>void algorithm(int n) {\n int a = 1; // +1\n a = a + 1; // +1\n a = a * 2; // +1\n // n\u56de\u30eb\u30fc\u30d7\n for (int i = 0; i &lt; n; i++) { // +1 (\u6bce\u56dei++\u304c\u5b9f\u884c\u3055\u308c\u308b)\n printf(\"%d\", 0); // +1\n }\n}\n</code></pre> <pre><code>\n</code></pre> <p>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u64cd\u4f5c\u6570\u3092\u5165\u529b\u30b5\u30a4\u30ba\\(n\\)\u306e\u95a2\u6570\u3068\u3057\u3066\u8868\u3059\u95a2\u6570\u3092\\(T(n)\\)\u3068\u3059\u308b\u3068\u3001\u4ee5\u4e0b\u306e\u4f8b\u3092\u8003\u3048\u3066\u307f\u307e\u3057\u3087\u3046\uff1a</p> \\[ T(n) = 3 + 2n \\] <p>\\(T(n)\\)\u306f\u7dda\u5f62\u95a2\u6570\u3067\u3042\u308b\u305f\u3081\u3001\u305d\u306e\u5897\u52a0\u50be\u5411\u306f\u7dda\u5f62\u3067\u3042\u308a\u3001\u3057\u305f\u304c\u3063\u3066\u3001\u305d\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f\u7dda\u5f62\u30aa\u30fc\u30c0\u30fc\u3067\u3001\\(O(n)\\)\u3068\u8868\u8a18\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u6570\u5b66\u8a18\u6cd5\u306f\u30d3\u30c3\u30b0O\u8a18\u6cd5\u3068\u3057\u3066\u77e5\u3089\u308c\u3001\u95a2\u6570\\(T(n)\\)\u306e\u6f38\u8fd1\u4e0a\u9650\u3092\u8868\u3057\u307e\u3059\u3002</p> <p>\u672c\u8cea\u7684\u306b\u3001\u6642\u9593\u8a08\u7b97\u91cf\u5206\u6790\u306f\u300c\u64cd\u4f5c\u6570\\(T(n)\\)\u300d\u306e\u6f38\u8fd1\u4e0a\u9650\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u3067\u3059\u3002\u305d\u308c\u306b\u306f\u6b63\u78ba\u306a\u6570\u5b66\u7684\u5b9a\u7fa9\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>\u6f38\u8fd1\u4e0a\u9650</p> <p>\u3059\u3079\u3066\u306e\\(n &gt; n_0\\)\u306b\u5bfe\u3057\u3066\\(T(n) \\leq c \\cdot f(n)\\)\u3068\u306a\u308b\u3088\u3046\u306a\u6b63\u306e\u5b9f\u6570\\(c\\)\u3068\\(n_0\\)\u304c\u5b58\u5728\u3059\u308b\u5834\u5408\u3001\\(f(n)\\)\u306f\\(T(n)\\)\u306e\u6f38\u8fd1\u4e0a\u9650\u3068\u307f\u306a\u3055\u308c\u3001\\(T(n) = O(f(n))\\)\u3068\u8868\u8a18\u3055\u308c\u307e\u3059\u3002</p> <p>\u4e0b\u56f3\u306b\u793a\u3055\u308c\u3066\u3044\u308b\u3088\u3046\u306b\u3001\u6f38\u8fd1\u4e0a\u9650\u306e\u8a08\u7b97\u3067\u306f\u3001\\(n\\)\u304c\u7121\u9650\u5927\u306b\u8fd1\u3065\u304f\u306b\u3064\u308c\u3066\u3001\\(T(n)\\)\u3068\\(f(n)\\)\u304c\u540c\u3058\u5897\u52a0\u30aa\u30fc\u30c0\u30fc\u3092\u6301\u3061\u3001\u5b9a\u6570\u56e0\u5b50\\(c\\)\u306e\u307f\u304c\u7570\u306a\u308b\u3088\u3046\u306a\u95a2\u6570\\(f(n)\\)\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u542b\u307e\u308c\u307e\u3059\u3002</p> <p></p> <p> \u56f3 2-8 \u00a0 Asymptotic upper bound of a function </p>"},{"location":"chapter_computational_complexity/time_complexity/#233","title":"2.3.3 \u00a0 \u8a08\u7b97\u65b9\u6cd5","text":"<p>\u6f38\u8fd1\u4e0a\u9650\u306e\u6982\u5ff5\u306f\u6570\u5b66\u7684\u306b\u6fc3\u5bc6\u306b\u898b\u3048\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3001\u4eca\u3059\u3050\u5b8c\u5168\u306b\u7406\u89e3\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u307e\u305a\u8a08\u7b97\u65b9\u6cd5\u3092\u7406\u89e3\u3057\u3001\u6642\u9593\u3092\u304b\u3051\u3066\u7df4\u7fd2\u3057\u7406\u89e3\u3057\u307e\u3057\u3087\u3046\u3002</p> <p>\\(f(n)\\)\u304c\u6c7a\u307e\u308c\u3070\u3001\u6642\u9593\u8a08\u7b97\u91cf\\(O(f(n))\\)\u304c\u5f97\u3089\u308c\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u6f38\u8fd1\u4e0a\u9650\\(f(n)\\)\u3092\u3069\u306e\u3088\u3046\u306b\u6c7a\u5b9a\u3059\u308b\u306e\u3067\u3057\u3087\u3046\u304b\uff1f\u3053\u306e\u30d7\u30ed\u30bb\u30b9\u306b\u306f\u4e00\u822c\u7684\u306b2\u3064\u306e\u30b9\u30c6\u30c3\u30d7\u304c\u542b\u307e\u308c\u307e\u3059\uff1a\u64cd\u4f5c\u6570\u306e\u30ab\u30a6\u30f3\u30c8\u3068\u6f38\u8fd1\u4e0a\u9650\u306e\u6c7a\u5b9a\u3067\u3059\u3002</p>"},{"location":"chapter_computational_complexity/time_complexity/#1-1","title":"1. \u00a0 \u30b9\u30c6\u30c3\u30d71: \u64cd\u4f5c\u6570\u306e\u30ab\u30a6\u30f3\u30c8","text":"<p>\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001\u30b3\u30fc\u30c9\u3092\u884c\u3054\u3068\u306b\u78ba\u8a8d\u3057\u307e\u3059\u3002\u3057\u304b\u3057\u3001\\(c \\cdot f(n)\\)\u306e\u5b9a\u6570\\(c\\)\u306e\u5b58\u5728\u306b\u3088\u308a\u3001\\(T(n)\\)\u306e\u3059\u3079\u3066\u306e\u4fc2\u6570\u3068\u5b9a\u6570\u9805\u306f\u7121\u8996\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u539f\u7406\u306b\u3088\u308a\u3001\u64cd\u4f5c\u3092\u30ab\u30a6\u30f3\u30c8\u3059\u308b\u969b\u306e\u7c21\u7565\u5316\u6280\u6cd5\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002</p> <ol> <li>\\(T(n)\\)\u306e\u5b9a\u6570\u9805\u3092\u7121\u8996\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306f\\(n\\)\u3068\u306f\u7121\u95a2\u4fc2\u3067\u3042\u308b\u305f\u3081\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306b\u5f71\u97ff\u3057\u307e\u305b\u3093\u3002</li> <li>\u3059\u3079\u3066\u306e\u4fc2\u6570\u3092\u7701\u7565\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\\(2n\\)\u3001\\(5n + 1\\)\u56de\u306a\u3069\u306e\u30eb\u30fc\u30d7\u306f\u3001\\(n\\)\u306e\u524d\u306e\u4fc2\u6570\u304c\u6642\u9593\u8a08\u7b97\u91cf\u306b\u5f71\u97ff\u3057\u306a\u3044\u305f\u3081\u3001\\(n\\)\u56de\u306b\u7c21\u7565\u5316\u3067\u304d\u307e\u3059\u3002</li> <li>\u30cd\u30b9\u30c8\u3057\u305f\u30eb\u30fc\u30d7\u306b\u306f\u4e57\u7b97\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u7dcf\u64cd\u4f5c\u6570\u306f\u5404\u30eb\u30fc\u30d7\u306e\u64cd\u4f5c\u6570\u306e\u7a4d\u3067\u3042\u308a\u3001\u30dd\u30a4\u30f3\u30c81\u30682\u306e\u7c21\u7565\u5316\u6280\u6cd5\u3092\u5404\u30eb\u30fc\u30d7\u30ec\u30d9\u30eb\u306b\u9069\u7528\u3057\u307e\u3059\u3002</li> </ol> <p>\u95a2\u6570\u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u3001\u3053\u308c\u3089\u306e\u6280\u6cd5\u3092\u4f7f\u7528\u3057\u3066\u64cd\u4f5c\u3092\u30ab\u30a6\u30f3\u30c8\u3067\u304d\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlin <pre><code>def algorithm(n: int):\n a = 1 # +0 (\u6280\u6cd51)\n a = a + n # +0 (\u6280\u6cd51)\n # +n (\u6280\u6cd52)\n for i in range(5 * n + 1):\n print(0)\n # +n*n (\u6280\u6cd53)\n for i in range(2 * n):\n for j in range(n + 1):\n print(0)\n</code></pre> <pre><code>void algorithm(int n) {\n int a = 1; // +0 (\u6280\u6cd51)\n a = a + n; // +0 (\u6280\u6cd51)\n // +n (\u6280\u6cd52)\n for (int i = 0; i &lt; 5 * n + 1; i++) {\n cout &lt;&lt; 0 &lt;&lt; endl;\n }\n // +n*n (\u6280\u6cd53)\n for (int i = 0; i &lt; 2 * n; i++) {\n for (int j = 0; j &lt; n + 1; j++) {\n cout &lt;&lt; 0 &lt;&lt; endl;\n }\n }\n}\n</code></pre> <pre><code>void algorithm(int n) {\n int a = 1; // +0 (\u6280\u6cd51)\n a = a + n; // +0 (\u6280\u6cd51)\n // +n (\u6280\u6cd52)\n for (int i = 0; i &lt; 5 * n + 1; i++) {\n System.out.println(0);\n }\n // +n*n (\u6280\u6cd53)\n for (int i = 0; i &lt; 2 * n; i++) {\n for (int j = 0; j &lt; n + 1; j++) {\n System.out.println(0);\n }\n }\n}\n</code></pre> <pre><code>void Algorithm(int n) {\n int a = 1; // +0 (\u6280\u6cd51)\n a = a + n; // +0 (\u6280\u6cd51)\n // +n (\u6280\u6cd52)\n for (int i = 0; i &lt; 5 * n + 1; i++) {\n Console.WriteLine(0);\n }\n // +n*n (\u6280\u6cd53)\n for (int i = 0; i &lt; 2 * n; i++) {\n for (int j = 0; j &lt; n + 1; j++) {\n Console.WriteLine(0);\n }\n }\n}\n</code></pre> <pre><code>func algorithm(n int) {\n a := 1 // +0 (\u6280\u6cd51)\n a = a + n // +0 (\u6280\u6cd51)\n // +n (\u6280\u6cd52)\n for i := 0; i &lt; 5 * n + 1; i++ {\n fmt.Println(0)\n }\n // +n*n (\u6280\u6cd53)\n for i := 0; i &lt; 2 * n; i++ {\n for j := 0; j &lt; n + 1; j++ {\n fmt.Println(0)\n }\n }\n}\n</code></pre> <pre><code>func algorithm(n: Int) {\n var a = 1 // +0 (\u6280\u6cd51)\n a = a + n // +0 (\u6280\u6cd51)\n // +n (\u6280\u6cd52)\n for _ in 0 ..&lt; (5 * n + 1) {\n print(0)\n }\n // +n*n (\u6280\u6cd53)\n for _ in 0 ..&lt; (2 * n) {\n for _ in 0 ..&lt; (n + 1) {\n print(0)\n }\n }\n}\n</code></pre> <pre><code>function algorithm(n) {\n let a = 1; // +0 (\u6280\u6cd51)\n a = a + n; // +0 (\u6280\u6cd51)\n // +n (\u6280\u6cd52)\n for (let i = 0; i &lt; 5 * n + 1; i++) {\n console.log(0);\n }\n // +n*n (\u6280\u6cd53)\n for (let i = 0; i &lt; 2 * n; i++) {\n for (let j = 0; j &lt; n + 1; j++) {\n console.log(0);\n }\n }\n}\n</code></pre> <pre><code>function algorithm(n: number): void {\n let a = 1; // +0 (\u6280\u6cd51)\n a = a + n; // +0 (\u6280\u6cd51)\n // +n (\u6280\u6cd52)\n for (let i = 0; i &lt; 5 * n + 1; i++) {\n console.log(0);\n }\n // +n*n (\u6280\u6cd53)\n for (let i = 0; i &lt; 2 * n; i++) {\n for (let j = 0; j &lt; n + 1; j++) {\n console.log(0);\n }\n }\n}\n</code></pre> <pre><code>void algorithm(int n) {\n int a = 1; // +0 (\u6280\u6cd51)\n a = a + n; // +0 (\u6280\u6cd51)\n // +n (\u6280\u6cd52)\n for (int i = 0; i &lt; 5 * n + 1; i++) {\n print(0);\n }\n // +n*n (\u6280\u6cd53)\n for (int i = 0; i &lt; 2 * n; i++) {\n for (int j = 0; j &lt; n + 1; j++) {\n print(0);\n }\n }\n}\n</code></pre> <pre><code>fn algorithm(n: i32) {\n let mut a = 1; // +0 (\u6280\u6cd51)\n a = a + n; // +0 (\u6280\u6cd51)\n\n // +n (\u6280\u6cd52)\n for i in 0..(5 * n + 1) {\n println!(\"{}\", 0);\n }\n\n // +n*n (\u6280\u6cd53)\n for i in 0..(2 * n) {\n for j in 0..(n + 1) {\n println!(\"{}\", 0);\n }\n }\n}\n</code></pre> <pre><code>void algorithm(int n) {\n int a = 1; // +0 (\u6280\u6cd51)\n a = a + n; // +0 (\u6280\u6cd51)\n // +n (\u6280\u6cd52)\n for (int i = 0; i &lt; 5 * n + 1; i++) {\n printf(\"%d\", 0);\n }\n // +n*n (\u6280\u6cd53)\n for (int i = 0; i &lt; 2 * n; i++) {\n for (int j = 0; j &lt; n + 1; j++) {\n printf(\"%d\", 0);\n }\n }\n}\n</code></pre> <pre><code>\n</code></pre> <p>\u4ee5\u4e0b\u306e\u5f0f\u306f\u3001\u7c21\u7565\u5316\u524d\u5f8c\u306e\u30ab\u30a6\u30f3\u30c8\u7d50\u679c\u3092\u793a\u3057\u3066\u304a\u308a\u3001\u3069\u3061\u3089\u3082\\(O(n^2)\\)\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306b\u5c0e\u304d\u307e\u3059\uff1a</p> \\[ \\begin{aligned} T(n) &amp; = 2n(n + 1) + (5n + 1) + 2 &amp; \\text{\u5b8c\u5168\u30ab\u30a6\u30f3\u30c8 (-.-|||)} \\newline &amp; = 2n^2 + 7n + 3 \\newline T(n) &amp; = n^2 + n &amp; \\text{\u7c21\u7565\u5316\u30ab\u30a6\u30f3\u30c8 (o.O)} \\end{aligned} \\]"},{"location":"chapter_computational_complexity/time_complexity/#2-2","title":"2. \u00a0 \u30b9\u30c6\u30c3\u30d72: \u6f38\u8fd1\u4e0a\u9650\u306e\u6c7a\u5b9a","text":"<p>\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(T(n)\\)\u306e\u6700\u9ad8\u6b21\u9805\u306b\u3088\u3063\u3066\u6c7a\u5b9a\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306f\u3001\\(n\\)\u304c\u7121\u9650\u5927\u306b\u8fd1\u3065\u304f\u306b\u3064\u308c\u3066\u3001\u6700\u9ad8\u6b21\u9805\u304c\u652f\u914d\u7684\u306b\u306a\u308a\u3001\u4ed6\u306e\u9805\u306e\u5f71\u97ff\u306f\u7121\u8996\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308b\u305f\u3081\u3067\u3059\u3002</p> <p>\u4ee5\u4e0b\u306e\u8868\u306f\u3001\u7570\u306a\u308b\u64cd\u4f5c\u30ab\u30a6\u30f3\u30c8\u3068\u305d\u308c\u306b\u5bfe\u5fdc\u3059\u308b\u6642\u9593\u8a08\u7b97\u91cf\u306e\u4f8b\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u4fc2\u6570\u304c\u5897\u52a0\u30aa\u30fc\u30c0\u30fc\u3092\u5909\u66f4\u3067\u304d\u306a\u3044\u3053\u3068\u3092\u5f37\u8abf\u3059\u308b\u305f\u3081\u306b\u3001\u8a87\u5f35\u3055\u308c\u305f\u5024\u304c\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002\\(n\\)\u304c\u975e\u5e38\u306b\u5927\u304d\u304f\u306a\u308b\u3068\u3001\u3053\u308c\u3089\u306e\u5b9a\u6570\u306f\u91cd\u8981\u3067\u306a\u304f\u306a\u308a\u307e\u3059\u3002</p> <p> \u8868: \u7570\u306a\u308b\u64cd\u4f5c\u30ab\u30a6\u30f3\u30c8\u306b\u5bfe\u3059\u308b\u6642\u9593\u8a08\u7b97\u91cf </p> \u64cd\u4f5c\u30ab\u30a6\u30f3\u30c8 \\(T(n)\\) \u6642\u9593\u8a08\u7b97\u91cf \\(O(f(n))\\) \\(100000\\) \\(O(1)\\) \\(3n + 2\\) \\(O(n)\\) \\(2n^2 + 3n + 2\\) \\(O(n^2)\\) \\(n^3 + 10000n^2\\) \\(O(n^3)\\) \\(2^n + 10000n^{10000}\\) \\(O(2^n)\\)"},{"location":"chapter_computational_complexity/time_complexity/#234","title":"2.3.4 \u00a0 \u4e00\u822c\u7684\u306a\u6642\u9593\u8a08\u7b97\u91cf\u306e\u7a2e\u985e","text":"<p>\u5165\u529b\u30c7\u30fc\u30bf\u30b5\u30a4\u30ba\u3092\\(n\\)\u3068\u3057\u307e\u3057\u3087\u3046\u3002\u4e00\u822c\u7684\u306a\u6642\u9593\u8a08\u7b97\u91cf\u306e\u7a2e\u985e\u3092\u4e0b\u56f3\u306b\u793a\u3057\u3001\u4f4e\u3044\u3082\u306e\u304b\u3089\u9ad8\u3044\u3082\u306e\u3078\u3068\u4e26\u3079\u3066\u3044\u307e\u3059\uff1a</p> \\[ \\begin{aligned} &amp; O(1) &lt; O(\\log n) &lt; O(n) &lt; O(n \\log n) &lt; O(n^2) &lt; O(2^n) &lt; O(n!) \\newline &amp; \\text{\u5b9a\u6570} &lt; \\text{\u5bfe\u6570} &lt; \\text{\u7dda\u5f62} &lt; \\text{\u7dda\u5f62\u5bfe\u6570} &lt; \\text{\u4e8c\u6b21} &lt; \\text{\u6307\u6570} &lt; \\text{\u968e\u4e57} \\end{aligned} \\] <p></p> <p> \u56f3 2-9 \u00a0 Common types of time complexity </p>"},{"location":"chapter_computational_complexity/time_complexity/#1-o1","title":"1. \u00a0 \u5b9a\u6570\u30aa\u30fc\u30c0\u30fc \\(O(1)\\)","text":"<p>\u5b9a\u6570\u30aa\u30fc\u30c0\u30fc\u306f\u3001\u64cd\u4f5c\u6570\u304c\u5165\u529b\u30c7\u30fc\u30bf\u30b5\u30a4\u30ba\\(n\\)\u3068\u306f\u7121\u95a2\u4fc2\u3067\u3042\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u95a2\u6570\u3067\u306f\u3001\u64cd\u4f5c\u6570<code>size</code>\u304c\u5927\u304d\u3044\u5834\u5408\u3067\u3082\u3001\\(n\\)\u3068\u306f\u7121\u95a2\u4fc2\u3067\u3042\u308b\u305f\u3081\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(1)\\)\u306e\u307e\u307e\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby time_complexity.py<pre><code>def constant(n: int) -&gt; int:\n \"\"\"\u5b9a\u6570\u8907\u96d1\u5ea6\"\"\"\n count = 0\n size = 100000\n for _ in range(size):\n count += 1\n return count\n</code></pre> time_complexity.cpp<pre><code>/* \u5b9a\u6570\u8a08\u7b97\u91cf */\nint constant(int n) {\n int count = 0;\n int size = 100000;\n for (int i = 0; i &lt; size; i++)\n count++;\n return count;\n}\n</code></pre> time_complexity.java<pre><code>/* \u5b9a\u6570\u8a08\u7b97\u91cf */\nint constant(int n) {\n int count = 0;\n int size = 100000;\n for (int i = 0; i &lt; size; i++)\n count++;\n return count;\n}\n</code></pre> time_complexity.cs<pre><code>[class]{time_complexity}-[func]{Constant}\n</code></pre> time_complexity.go<pre><code>[class]{}-[func]{constant}\n</code></pre> time_complexity.swift<pre><code>[class]{}-[func]{constant}\n</code></pre> time_complexity.js<pre><code>[class]{}-[func]{constant}\n</code></pre> time_complexity.ts<pre><code>[class]{}-[func]{constant}\n</code></pre> time_complexity.dart<pre><code>[class]{}-[func]{constant}\n</code></pre> time_complexity.rs<pre><code>[class]{}-[func]{constant}\n</code></pre> time_complexity.c<pre><code>[class]{}-[func]{constant}\n</code></pre> time_complexity.kt<pre><code>[class]{}-[func]{constant}\n</code></pre> time_complexity.rb<pre><code>[class]{}-[func]{constant}\n</code></pre>"},{"location":"chapter_computational_complexity/time_complexity/#2-on","title":"2. \u00a0 \u7dda\u5f62\u30aa\u30fc\u30c0\u30fc \\(O(n)\\)","text":"<p>\u7dda\u5f62\u30aa\u30fc\u30c0\u30fc\u306f\u3001\u64cd\u4f5c\u6570\u304c\u5165\u529b\u30c7\u30fc\u30bf\u30b5\u30a4\u30ba\\(n\\)\u3068\u7dda\u5f62\u306b\u5897\u52a0\u3059\u308b\u3053\u3068\u3092\u793a\u3057\u307e\u3059\u3002\u7dda\u5f62\u30aa\u30fc\u30c0\u30fc\u306f\u4e00\u822c\u7684\u306b\u5358\u4e00\u30eb\u30fc\u30d7\u69cb\u9020\u3067\u73fe\u308c\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby time_complexity.py<pre><code>def linear(n: int) -&gt; int:\n \"\"\"\u7dda\u5f62\u8907\u96d1\u5ea6\"\"\"\n count = 0\n for _ in range(n):\n count += 1\n return count\n</code></pre> time_complexity.cpp<pre><code>/* \u7dda\u5f62\u8a08\u7b97\u91cf */\nint linear(int n) {\n int count = 0;\n for (int i = 0; i &lt; n; i++)\n count++;\n return count;\n}\n</code></pre> time_complexity.java<pre><code>/* \u7dda\u5f62\u8a08\u7b97\u91cf */\nint linear(int n) {\n int count = 0;\n for (int i = 0; i &lt; n; i++)\n count++;\n return count;\n}\n</code></pre> time_complexity.cs<pre><code>[class]{time_complexity}-[func]{Linear}\n</code></pre> time_complexity.go<pre><code>[class]{}-[func]{linear}\n</code></pre> time_complexity.swift<pre><code>[class]{}-[func]{linear}\n</code></pre> time_complexity.js<pre><code>[class]{}-[func]{linear}\n</code></pre> time_complexity.ts<pre><code>[class]{}-[func]{linear}\n</code></pre> time_complexity.dart<pre><code>[class]{}-[func]{linear}\n</code></pre> time_complexity.rs<pre><code>[class]{}-[func]{linear}\n</code></pre> time_complexity.c<pre><code>[class]{}-[func]{linear}\n</code></pre> time_complexity.kt<pre><code>[class]{}-[func]{linear}\n</code></pre> time_complexity.rb<pre><code>[class]{}-[func]{linear}\n</code></pre> <p>\u914d\u5217\u306e\u8d70\u67fb\u3084\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u8d70\u67fb\u306a\u3069\u306e\u64cd\u4f5c\u306f\u6642\u9593\u8a08\u7b97\u91cf\u304c\\(O(n)\\)\u3067\u3001\\(n\\)\u306f\u914d\u5217\u307e\u305f\u306f\u30ea\u30b9\u30c8\u306e\u9577\u3055\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby time_complexity.py<pre><code>def array_traversal(nums: list[int]) -&gt; int:\n \"\"\"\u7dda\u5f62\u8907\u96d1\u5ea6\uff08\u914d\u5217\u306e\u8d70\u67fb\uff09\"\"\"\n count = 0\n # \u30eb\u30fc\u30d7\u56de\u6570\u306f\u914d\u5217\u306e\u9577\u3055\u306b\u6bd4\u4f8b\u3059\u308b\n for num in nums:\n count += 1\n return count\n</code></pre> time_complexity.cpp<pre><code>/* \u7dda\u5f62\u8a08\u7b97\u91cf\uff08\u914d\u5217\u306e\u8d70\u67fb\uff09 */\nint arrayTraversal(vector&lt;int&gt; &amp;nums) {\n int count = 0;\n // \u30eb\u30fc\u30d7\u56de\u6570\u306f\u914d\u5217\u306e\u9577\u3055\u306b\u6bd4\u4f8b\n for (int num : nums) {\n count++;\n }\n return count;\n}\n</code></pre> time_complexity.java<pre><code>/* \u7dda\u5f62\u8a08\u7b97\u91cf\uff08\u914d\u5217\u306e\u8d70\u67fb\uff09 */\nint arrayTraversal(int[] nums) {\n int count = 0;\n // \u30eb\u30fc\u30d7\u56de\u6570\u306f\u914d\u5217\u306e\u9577\u3055\u306b\u6bd4\u4f8b\n for (int num : nums) {\n count++;\n }\n return count;\n}\n</code></pre> time_complexity.cs<pre><code>[class]{time_complexity}-[func]{ArrayTraversal}\n</code></pre> time_complexity.go<pre><code>[class]{}-[func]{arrayTraversal}\n</code></pre> time_complexity.swift<pre><code>[class]{}-[func]{arrayTraversal}\n</code></pre> time_complexity.js<pre><code>[class]{}-[func]{arrayTraversal}\n</code></pre> time_complexity.ts<pre><code>[class]{}-[func]{arrayTraversal}\n</code></pre> time_complexity.dart<pre><code>[class]{}-[func]{arrayTraversal}\n</code></pre> time_complexity.rs<pre><code>[class]{}-[func]{array_traversal}\n</code></pre> time_complexity.c<pre><code>[class]{}-[func]{arrayTraversal}\n</code></pre> time_complexity.kt<pre><code>[class]{}-[func]{arrayTraversal}\n</code></pre> time_complexity.rb<pre><code>[class]{}-[func]{array_traversal}\n</code></pre> <p>\u5165\u529b\u30c7\u30fc\u30bf\u30b5\u30a4\u30ba\\(n\\)\u306f\u5165\u529b\u30c7\u30fc\u30bf\u306e\u7a2e\u985e\u306b\u57fa\u3065\u3044\u3066\u6c7a\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u6700\u521d\u306e\u4f8b\u3067\u306f\u3001\\(n\\)\u306f\u5165\u529b\u30c7\u30fc\u30bf\u30b5\u30a4\u30ba\u3092\u8868\u3057\u30012\u756a\u76ee\u306e\u4f8b\u3067\u306f\u3001\u914d\u5217\u306e\u9577\u3055\\(n\\)\u304c\u30c7\u30fc\u30bf\u30b5\u30a4\u30ba\u3067\u3059\u3002</p>"},{"location":"chapter_computational_complexity/time_complexity/#3-on2","title":"3. \u00a0 \u4e8c\u6b21\u30aa\u30fc\u30c0\u30fc \\(O(n^2)\\)","text":"<p>\u4e8c\u6b21\u30aa\u30fc\u30c0\u30fc\u306f\u3001\u64cd\u4f5c\u6570\u304c\u5165\u529b\u30c7\u30fc\u30bf\u30b5\u30a4\u30ba\\(n\\)\u306e\u4e8c\u4e57\u306b\u6bd4\u4f8b\u3057\u3066\u5897\u52a0\u3059\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u4e8c\u6b21\u30aa\u30fc\u30c0\u30fc\u306f\u901a\u5e38\u30cd\u30b9\u30c8\u3057\u305f\u30eb\u30fc\u30d7\u3067\u73fe\u308c\u3001\u5916\u5074\u3068\u5185\u5074\u306e\u30eb\u30fc\u30d7\u306e\u4e21\u65b9\u304c\u6642\u9593\u8a08\u7b97\u91cf\\(O(n)\\)\u3092\u6301\u3061\u3001\u5168\u4f53\u306e\u8907\u96d1\u5ea6\u306f\\(O(n^2)\\)\u306b\u306a\u308a\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby time_complexity.py<pre><code>def quadratic(n: int) -&gt; int:\n \"\"\"\u4e8c\u6b21\u8907\u96d1\u5ea6\"\"\"\n count = 0\n # \u30eb\u30fc\u30d7\u56de\u6570\u306f\u30c7\u30fc\u30bf\u30b5\u30a4\u30ban\u306e\u4e8c\u4e57\u306b\u6bd4\u4f8b\u3059\u308b\n for i in range(n):\n for j in range(n):\n count += 1\n return count\n</code></pre> time_complexity.cpp<pre><code>/* \u4e8c\u6b21\u8a08\u7b97\u91cf */\nint quadratic(int n) {\n int count = 0;\n // \u30eb\u30fc\u30d7\u56de\u6570\u306f\u30c7\u30fc\u30bf\u30b5\u30a4\u30ba n \u306e\u4e8c\u4e57\u306b\u6bd4\u4f8b\n for (int i = 0; i &lt; n; i++) {\n for (int j = 0; j &lt; n; j++) {\n count++;\n }\n }\n return count;\n}\n</code></pre> time_complexity.java<pre><code>/* \u4e8c\u6b21\u8a08\u7b97\u91cf */\nint quadratic(int n) {\n int count = 0;\n // \u30eb\u30fc\u30d7\u56de\u6570\u306f\u30c7\u30fc\u30bf\u30b5\u30a4\u30ba n \u306e\u4e8c\u4e57\u306b\u6bd4\u4f8b\n for (int i = 0; i &lt; n; i++) {\n for (int j = 0; j &lt; n; j++) {\n count++;\n }\n }\n return count;\n}\n</code></pre> time_complexity.cs<pre><code>[class]{time_complexity}-[func]{Quadratic}\n</code></pre> time_complexity.go<pre><code>[class]{}-[func]{quadratic}\n</code></pre> time_complexity.swift<pre><code>[class]{}-[func]{quadratic}\n</code></pre> time_complexity.js<pre><code>[class]{}-[func]{quadratic}\n</code></pre> time_complexity.ts<pre><code>[class]{}-[func]{quadratic}\n</code></pre> time_complexity.dart<pre><code>[class]{}-[func]{quadratic}\n</code></pre> time_complexity.rs<pre><code>[class]{}-[func]{quadratic}\n</code></pre> time_complexity.c<pre><code>[class]{}-[func]{quadratic}\n</code></pre> time_complexity.kt<pre><code>[class]{}-[func]{quadratic}\n</code></pre> time_complexity.rb<pre><code>[class]{}-[func]{quadratic}\n</code></pre> <p>\u4e0b\u56f3\u306f\u5b9a\u6570\u30aa\u30fc\u30c0\u30fc\u3001\u7dda\u5f62\u30aa\u30fc\u30c0\u30fc\u3001\u4e8c\u6b21\u30aa\u30fc\u30c0\u30fc\u306e\u6642\u9593\u8a08\u7b97\u91cf\u3092\u6bd4\u8f03\u3057\u3066\u3044\u307e\u3059\u3002</p> <p></p> <p> \u56f3 2-10 \u00a0 Constant, linear, and quadratic order time complexities </p> <p>\u4f8b\u3048\u3070\u3001\u30d0\u30d6\u30eb\u30bd\u30fc\u30c8\u3067\u306f\u3001\u5916\u5074\u306e\u30eb\u30fc\u30d7\u304c\\(n - 1\\)\u56de\u5b9f\u884c\u3055\u308c\u3001\u5185\u5074\u306e\u30eb\u30fc\u30d7\u304c\\(n-1\\)\u3001\\(n-2\\)\u3001...\u3001\\(2\\)\u3001\\(1\\)\u56de\u5b9f\u884c\u3055\u308c\u3001\u5e73\u5747\\(n / 2\\)\u56de\u3068\u306a\u308a\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O((n - 1) n / 2) = O(n^2)\\)\u306b\u306a\u308a\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby time_complexity.py<pre><code>def bubble_sort(nums: list[int]) -&gt; int:\n \"\"\"\u4e8c\u6b21\u8907\u96d1\u5ea6\uff08\u30d0\u30d6\u30eb\u30bd\u30fc\u30c8\uff09\"\"\"\n count = 0 # \u30ab\u30a6\u30f3\u30bf\n # \u5916\u5074\u306e\u30eb\u30fc\u30d7: \u672a\u30bd\u30fc\u30c8\u7bc4\u56f2\u306f [0, i]\n for i in range(len(nums) - 1, 0, -1):\n # \u5185\u5074\u306e\u30eb\u30fc\u30d7: \u672a\u30bd\u30fc\u30c8\u7bc4\u56f2 [0, i] \u306e\u6700\u5927\u8981\u7d20\u3092\u53f3\u7aef\u306b\u30b9\u30ef\u30c3\u30d7\n for j in range(i):\n if nums[j] &gt; nums[j + 1]:\n # nums[j] \u3068 nums[j + 1] \u3092\u30b9\u30ef\u30c3\u30d7\n tmp: int = nums[j]\n nums[j] = nums[j + 1]\n nums[j + 1] = tmp\n count += 3 # \u8981\u7d20\u306e\u30b9\u30ef\u30c3\u30d7\u306f3\u3064\u306e\u500b\u5225\u64cd\u4f5c\u3092\u542b\u3080\n return count\n</code></pre> time_complexity.cpp<pre><code>/* \u4e8c\u6b21\u8a08\u7b97\u91cf\uff08\u30d0\u30d6\u30eb\u30bd\u30fc\u30c8\uff09 */\nint bubbleSort(vector&lt;int&gt; &amp;nums) {\n int count = 0; // \u30ab\u30a6\u30f3\u30bf\u30fc\n // \u5916\u5074\u30eb\u30fc\u30d7\uff1a\u672a\u30bd\u30fc\u30c8\u7bc4\u56f2\u306f [0, i]\n for (int i = nums.size() - 1; i &gt; 0; i--) {\n // \u5185\u5074\u30eb\u30fc\u30d7\uff1a\u672a\u30bd\u30fc\u30c8\u7bc4\u56f2 [0, i] \u306e\u6700\u5927\u8981\u7d20\u3092\u7bc4\u56f2\u306e\u53f3\u7aef\u306b\u30b9\u30ef\u30c3\u30d7\n for (int j = 0; j &lt; i; j++) {\n if (nums[j] &gt; nums[j + 1]) {\n // nums[j] \u3068 nums[j + 1] \u3092\u30b9\u30ef\u30c3\u30d7\n int tmp = nums[j];\n nums[j] = nums[j + 1];\n nums[j + 1] = tmp;\n count += 3; // \u8981\u7d20\u306e\u30b9\u30ef\u30c3\u30d7\u306b\u306f3\u3064\u306e\u500b\u5225\u64cd\u4f5c\u304c\u542b\u307e\u308c\u308b\n }\n }\n }\n return count;\n}\n</code></pre> time_complexity.java<pre><code>/* \u4e8c\u6b21\u8a08\u7b97\u91cf\uff08\u30d0\u30d6\u30eb\u30bd\u30fc\u30c8\uff09 */\nint bubbleSort(int[] nums) {\n int count = 0; // \u30ab\u30a6\u30f3\u30bf\u30fc\n // \u5916\u5074\u30eb\u30fc\u30d7\uff1a\u672a\u30bd\u30fc\u30c8\u7bc4\u56f2\u306f [0, i]\n for (int i = nums.length - 1; i &gt; 0; i--) {\n // \u5185\u5074\u30eb\u30fc\u30d7\uff1a\u672a\u30bd\u30fc\u30c8\u7bc4\u56f2 [0, i] \u306e\u6700\u5927\u8981\u7d20\u3092\u7bc4\u56f2\u306e\u53f3\u7aef\u306b\u30b9\u30ef\u30c3\u30d7\n for (int j = 0; j &lt; i; j++) {\n if (nums[j] &gt; nums[j + 1]) {\n // nums[j] \u3068 nums[j + 1] \u3092\u30b9\u30ef\u30c3\u30d7\n int tmp = nums[j];\n nums[j] = nums[j + 1];\n nums[j + 1] = tmp;\n count += 3; // \u8981\u7d20\u306e\u30b9\u30ef\u30c3\u30d7\u306b\u306f3\u3064\u306e\u500b\u5225\u64cd\u4f5c\u304c\u542b\u307e\u308c\u308b\n }\n }\n }\n return count;\n}\n</code></pre> time_complexity.cs<pre><code>[class]{time_complexity}-[func]{BubbleSort}\n</code></pre> time_complexity.go<pre><code>[class]{}-[func]{bubbleSort}\n</code></pre> time_complexity.swift<pre><code>[class]{}-[func]{bubbleSort}\n</code></pre> time_complexity.js<pre><code>[class]{}-[func]{bubbleSort}\n</code></pre> time_complexity.ts<pre><code>[class]{}-[func]{bubbleSort}\n</code></pre> time_complexity.dart<pre><code>[class]{}-[func]{bubbleSort}\n</code></pre> time_complexity.rs<pre><code>[class]{}-[func]{bubble_sort}\n</code></pre> time_complexity.c<pre><code>[class]{}-[func]{bubbleSort}\n</code></pre> time_complexity.kt<pre><code>[class]{}-[func]{bubbleSort}\n</code></pre> time_complexity.rb<pre><code>[class]{}-[func]{bubble_sort}\n</code></pre>"},{"location":"chapter_computational_complexity/time_complexity/#4-o2n","title":"4. \u00a0 \u6307\u6570\u30aa\u30fc\u30c0\u30fc \\(O(2^n)\\)","text":"<p>\u751f\u7269\u5b66\u7684\u300c\u7d30\u80de\u5206\u88c2\u300d\u306f\u6307\u6570\u30aa\u30fc\u30c0\u30fc\u5897\u52a0\u306e\u5178\u578b\u4f8b\u3067\u3059\uff1a1\u3064\u306e\u7d30\u80de\u304b\u3089\u59cb\u307e\u308a\u30011\u56de\u306e\u5206\u88c2\u5f8c\u306b2\u3064\u30012\u56de\u306e\u5206\u88c2\u5f8c\u306b4\u3064\u3068\u306a\u308a\u3001\\(n\\)\u56de\u306e\u5206\u88c2\u5f8c\u306b\\(2^n\\)\u500b\u306e\u7d30\u80de\u306b\u306a\u308a\u307e\u3059\u3002</p> <p>\u4e0b\u56f3\u3068\u30b3\u30fc\u30c9\u306f\u7d30\u80de\u5206\u88c2\u30d7\u30ed\u30bb\u30b9\u3092\u30b7\u30df\u30e5\u30ec\u30fc\u30c8\u3057\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(2^n)\\)\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby time_complexity.py<pre><code>def exponential(n: int) -&gt; int:\n \"\"\"\u6307\u6570\u8907\u96d1\u5ea6\uff08\u30eb\u30fc\u30d7\u5b9f\u88c5\uff09\"\"\"\n count = 0\n base = 1\n # \u30bb\u30eb\u306f\u6bce\u56de2\u3064\u306b\u5206\u88c2\u3057\u30011, 2, 4, 8, ..., 2^(n-1) \u306e\u6570\u5217\u3092\u5f62\u6210\u3059\u308b\n for _ in range(n):\n for _ in range(base):\n count += 1\n base *= 2\n # count = 1 + 2 + 4 + 8 + .. + 2^(n-1) = 2^n - 1\n return count\n</code></pre> time_complexity.cpp<pre><code>/* \u6307\u6570\u8a08\u7b97\u91cf\uff08\u30eb\u30fc\u30d7\u5b9f\u88c5\uff09 */\nint exponential(int n) {\n int count = 0, base = 1;\n // \u30bb\u30eb\u306f\u6bce\u30e9\u30a6\u30f3\u30c92\u3064\u306b\u5206\u88c2\u3057\u3001\u6570\u5217 1, 2, 4, 8, ..., 2^(n-1) \u3092\u5f62\u6210\n for (int i = 0; i &lt; n; i++) {\n for (int j = 0; j &lt; base; j++) {\n count++;\n }\n base *= 2;\n }\n // count = 1 + 2 + 4 + 8 + .. + 2^(n-1) = 2^n - 1\n return count;\n}\n</code></pre> time_complexity.java<pre><code>/* \u6307\u6570\u8a08\u7b97\u91cf\uff08\u30eb\u30fc\u30d7\u5b9f\u88c5\uff09 */\nint exponential(int n) {\n int count = 0, base = 1;\n // \u30bb\u30eb\u306f\u6bce\u30e9\u30a6\u30f3\u30c92\u3064\u306b\u5206\u88c2\u3057\u3001\u6570\u5217 1, 2, 4, 8, ..., 2^(n-1) \u3092\u5f62\u6210\n for (int i = 0; i &lt; n; i++) {\n for (int j = 0; j &lt; base; j++) {\n count++;\n }\n base *= 2;\n }\n // count = 1 + 2 + 4 + 8 + .. + 2^(n-1) = 2^n - 1\n return count;\n}\n</code></pre> time_complexity.cs<pre><code>[class]{time_complexity}-[func]{Exponential}\n</code></pre> time_complexity.go<pre><code>[class]{}-[func]{exponential}\n</code></pre> time_complexity.swift<pre><code>[class]{}-[func]{exponential}\n</code></pre> time_complexity.js<pre><code>[class]{}-[func]{exponential}\n</code></pre> time_complexity.ts<pre><code>[class]{}-[func]{exponential}\n</code></pre> time_complexity.dart<pre><code>[class]{}-[func]{exponential}\n</code></pre> time_complexity.rs<pre><code>[class]{}-[func]{exponential}\n</code></pre> time_complexity.c<pre><code>[class]{}-[func]{exponential}\n</code></pre> time_complexity.kt<pre><code>[class]{}-[func]{exponential}\n</code></pre> time_complexity.rb<pre><code>[class]{}-[func]{exponential}\n</code></pre> <p></p> <p> \u56f3 2-11 \u00a0 Exponential order time complexity </p> <p>\u5b9f\u969b\u306b\u306f\u3001\u6307\u6570\u30aa\u30fc\u30c0\u30fc\u306f\u518d\u5e30\u95a2\u6570\u3067\u3088\u304f\u73fe\u308c\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u518d\u5e30\u7684\u306b2\u3064\u306e\u534a\u5206\u306b\u5206\u5272\u3057\u3001\\(n\\)\u56de\u306e\u5206\u5272\u5f8c\u306b\u505c\u6b62\u3057\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby time_complexity.py<pre><code>def exp_recur(n: int) -&gt; int:\n \"\"\"\u6307\u6570\u8907\u96d1\u5ea6\uff08\u518d\u5e30\u5b9f\u88c5\uff09\"\"\"\n if n == 1:\n return 1\n return exp_recur(n - 1) + exp_recur(n - 1) + 1\n</code></pre> time_complexity.cpp<pre><code>/* \u6307\u6570\u8a08\u7b97\u91cf\uff08\u518d\u5e30\u5b9f\u88c5\uff09 */\nint expRecur(int n) {\n if (n == 1)\n return 1;\n return expRecur(n - 1) + expRecur(n - 1) + 1;\n}\n</code></pre> time_complexity.java<pre><code>/* \u6307\u6570\u8a08\u7b97\u91cf\uff08\u518d\u5e30\u5b9f\u88c5\uff09 */\nint expRecur(int n) {\n if (n == 1)\n return 1;\n return expRecur(n - 1) + expRecur(n - 1) + 1;\n}\n</code></pre> time_complexity.cs<pre><code>[class]{time_complexity}-[func]{ExpRecur}\n</code></pre> time_complexity.go<pre><code>[class]{}-[func]{expRecur}\n</code></pre> time_complexity.swift<pre><code>[class]{}-[func]{expRecur}\n</code></pre> time_complexity.js<pre><code>[class]{}-[func]{expRecur}\n</code></pre> time_complexity.ts<pre><code>[class]{}-[func]{expRecur}\n</code></pre> time_complexity.dart<pre><code>[class]{}-[func]{expRecur}\n</code></pre> time_complexity.rs<pre><code>[class]{}-[func]{exp_recur}\n</code></pre> time_complexity.c<pre><code>[class]{}-[func]{expRecur}\n</code></pre> time_complexity.kt<pre><code>[class]{}-[func]{expRecur}\n</code></pre> time_complexity.rb<pre><code>[class]{}-[func]{exp_recur}\n</code></pre> <p>\u6307\u6570\u30aa\u30fc\u30c0\u30fc\u306e\u5897\u52a0\u306f\u6975\u3081\u3066\u6025\u901f\u3067\u3001\u5168\u6570\u63a2\u7d22\u6cd5\uff08\u30d6\u30eb\u30fc\u30c8\u30d5\u30a9\u30fc\u30b9\u3001\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u306a\u3069\uff09\u3067\u3088\u304f\u898b\u3089\u308c\u307e\u3059\u3002\u5927\u898f\u6a21\u554f\u984c\u3067\u306f\u3001\u6307\u6570\u30aa\u30fc\u30c0\u30fc\u306f\u53d7\u3051\u5165\u308c\u3089\u308c\u305a\u3001\u3057\u3070\u3057\u3070\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3084\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u304c\u89e3\u6c7a\u7b56\u3068\u3057\u3066\u5fc5\u8981\u306b\u306a\u308a\u307e\u3059\u3002</p>"},{"location":"chapter_computational_complexity/time_complexity/#5-olog-n","title":"5. \u00a0 \u5bfe\u6570\u30aa\u30fc\u30c0\u30fc \\(O(\\log n)\\)","text":"<p>\u6307\u6570\u30aa\u30fc\u30c0\u30fc\u3068\u306f\u5bfe\u7167\u7684\u306b\u3001\u5bfe\u6570\u30aa\u30fc\u30c0\u30fc\u306f\u300c\u5404\u30e9\u30a6\u30f3\u30c9\u3067\u30b5\u30a4\u30ba\u304c\u534a\u5206\u306b\u306a\u308b\u300d\u72b6\u6cc1\u3092\u53cd\u6620\u3057\u307e\u3059\u3002\u5165\u529b\u30c7\u30fc\u30bf\u30b5\u30a4\u30ba\u304c\\(n\\)\u306e\u5834\u5408\u3001\u5404\u30e9\u30a6\u30f3\u30c9\u3067\u30b5\u30a4\u30ba\u304c\u534a\u5206\u306b\u306a\u308b\u305f\u3081\u3001\u53cd\u5fa9\u56de\u6570\u306f\\(\\log_2 n\\)\u3067\u3001\u3053\u308c\u306f\\(2^n\\)\u306e\u9006\u95a2\u6570\u3067\u3059\u3002</p> <p>\u4e0b\u56f3\u3068\u30b3\u30fc\u30c9\u306f\u300c\u5404\u30e9\u30a6\u30f3\u30c9\u3067\u534a\u5206\u306b\u3059\u308b\u300d\u30d7\u30ed\u30bb\u30b9\u3092\u30b7\u30df\u30e5\u30ec\u30fc\u30c8\u3057\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(\\log_2 n)\\)\u3067\u3001\u4e00\u822c\u7684\u306b\\(O(\\log n)\\)\u3068\u7701\u7565\u3055\u308c\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby time_complexity.py<pre><code>def logarithmic(n: int) -&gt; int:\n \"\"\"\u5bfe\u6570\u8907\u96d1\u5ea6\uff08\u30eb\u30fc\u30d7\u5b9f\u88c5\uff09\"\"\"\n count = 0\n while n &gt; 1:\n n = n / 2\n count += 1\n return count\n</code></pre> time_complexity.cpp<pre><code>/* \u5bfe\u6570\u8a08\u7b97\u91cf\uff08\u30eb\u30fc\u30d7\u5b9f\u88c5\uff09 */\nint logarithmic(int n) {\n int count = 0;\n while (n &gt; 1) {\n n = n / 2;\n count++;\n }\n return count;\n}\n</code></pre> time_complexity.java<pre><code>/* \u5bfe\u6570\u8a08\u7b97\u91cf\uff08\u30eb\u30fc\u30d7\u5b9f\u88c5\uff09 */\nint logarithmic(int n) {\n int count = 0;\n while (n &gt; 1) {\n n = n / 2;\n count++;\n }\n return count;\n}\n</code></pre> time_complexity.cs<pre><code>[class]{time_complexity}-[func]{Logarithmic}\n</code></pre> time_complexity.go<pre><code>[class]{}-[func]{logarithmic}\n</code></pre> time_complexity.swift<pre><code>[class]{}-[func]{logarithmic}\n</code></pre> time_complexity.js<pre><code>[class]{}-[func]{logarithmic}\n</code></pre> time_complexity.ts<pre><code>[class]{}-[func]{logarithmic}\n</code></pre> time_complexity.dart<pre><code>[class]{}-[func]{logarithmic}\n</code></pre> time_complexity.rs<pre><code>[class]{}-[func]{logarithmic}\n</code></pre> time_complexity.c<pre><code>[class]{}-[func]{logarithmic}\n</code></pre> time_complexity.kt<pre><code>[class]{}-[func]{logarithmic}\n</code></pre> time_complexity.rb<pre><code>[class]{}-[func]{logarithmic}\n</code></pre> <p></p> <p> \u56f3 2-12 \u00a0 Logarithmic order time complexity </p> <p>\u6307\u6570\u30aa\u30fc\u30c0\u30fc\u3068\u540c\u69d8\u306b\u3001\u5bfe\u6570\u30aa\u30fc\u30c0\u30fc\u3082\u518d\u5e30\u95a2\u6570\u3067\u983b\u7e41\u306b\u73fe\u308c\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u306f\u9ad8\u3055\\(\\log_2 n\\)\u306e\u518d\u5e30\u6728\u3092\u5f62\u6210\u3057\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby time_complexity.py<pre><code>def log_recur(n: int) -&gt; int:\n \"\"\"\u5bfe\u6570\u8907\u96d1\u5ea6\uff08\u518d\u5e30\u5b9f\u88c5\uff09\"\"\"\n if n &lt;= 1:\n return 0\n return log_recur(n / 2) + 1\n</code></pre> time_complexity.cpp<pre><code>/* \u5bfe\u6570\u8a08\u7b97\u91cf\uff08\u518d\u5e30\u5b9f\u88c5\uff09 */\nint logRecur(int n) {\n if (n &lt;= 1)\n return 0;\n return logRecur(n / 2) + 1;\n}\n</code></pre> time_complexity.java<pre><code>/* \u5bfe\u6570\u8a08\u7b97\u91cf\uff08\u518d\u5e30\u5b9f\u88c5\uff09 */\nint logRecur(int n) {\n if (n &lt;= 1)\n return 0;\n return logRecur(n / 2) + 1;\n}\n</code></pre> time_complexity.cs<pre><code>[class]{time_complexity}-[func]{LogRecur}\n</code></pre> time_complexity.go<pre><code>[class]{}-[func]{logRecur}\n</code></pre> time_complexity.swift<pre><code>[class]{}-[func]{logRecur}\n</code></pre> time_complexity.js<pre><code>[class]{}-[func]{logRecur}\n</code></pre> time_complexity.ts<pre><code>[class]{}-[func]{logRecur}\n</code></pre> time_complexity.dart<pre><code>[class]{}-[func]{logRecur}\n</code></pre> time_complexity.rs<pre><code>[class]{}-[func]{log_recur}\n</code></pre> time_complexity.c<pre><code>[class]{}-[func]{logRecur}\n</code></pre> time_complexity.kt<pre><code>[class]{}-[func]{logRecur}\n</code></pre> time_complexity.rb<pre><code>[class]{}-[func]{log_recur}\n</code></pre> <p>\u5bfe\u6570\u30aa\u30fc\u30c0\u30fc\u306f\u5206\u5272\u7d71\u6cbb\u6226\u7565\u306b\u57fa\u3065\u304f\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5178\u578b\u3067\u3001\u300c\u591a\u304f\u306b\u5206\u5272\u300d\u3068\u300c\u8907\u96d1\u306a\u554f\u984c\u3092\u5358\u7d14\u5316\u300d\u3059\u308b\u30a2\u30d7\u30ed\u30fc\u30c1\u3092\u4f53\u73fe\u3057\u3066\u3044\u307e\u3059\u3002\u5897\u52a0\u304c\u9045\u304f\u3001\u5b9a\u6570\u30aa\u30fc\u30c0\u30fc\u306e\u6b21\u306b\u6700\u3082\u7406\u60f3\u7684\u306a\u6642\u9593\u8a08\u7b97\u91cf\u3067\u3059\u3002</p> <p>\\(O(\\log n)\\)\u306e\u5e95\u306f\u4f55\u3067\u3059\u304b\uff1f</p> <p>\u6280\u8853\u7684\u306b\u306f\u3001\u300c\\(m\\)\u306b\u5206\u5272\u300d\u306f\u6642\u9593\u8a08\u7b97\u91cf\\(O(\\log_m n)\\)\u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002\u5bfe\u6570\u306e\u5e95\u5909\u66f4\u516c\u5f0f\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u7570\u306a\u308b\u5bfe\u6570\u8907\u96d1\u5ea6\u3092\u7b49\u4fa1\u306b\u3067\u304d\u307e\u3059\uff1a</p> \\[ O(\\log_m n) = O(\\log_k n / \\log_k m) = O(\\log_k n) \\] <p>\u3053\u308c\u306f\u3001\u5e95\\(m\\)\u3092\u8907\u96d1\u5ea6\u306b\u5f71\u97ff\u3092\u4e0e\u3048\u308b\u3053\u3068\u306a\u304f\u5909\u66f4\u3067\u304d\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u3057\u3070\u3057\u3070\u5e95\\(m\\)\u3092\u7701\u7565\u3057\u3001\u5358\u306b\u5bfe\u6570\u30aa\u30fc\u30c0\u30fc\u3092\\(O(\\log n)\\)\u3068\u8868\u8a18\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_computational_complexity/time_complexity/#6-on-log-n","title":"6. \u00a0 \u7dda\u5f62\u5bfe\u6570\u30aa\u30fc\u30c0\u30fc \\(O(n \\log n)\\)","text":"<p>\u7dda\u5f62\u5bfe\u6570\u30aa\u30fc\u30c0\u30fc\u306f\u30cd\u30b9\u30c8\u3057\u305f\u30eb\u30fc\u30d7\u3067\u3088\u304f\u73fe\u308c\u30012\u3064\u306e\u30eb\u30fc\u30d7\u306e\u8907\u96d1\u5ea6\u304c\u305d\u308c\u305e\u308c\\(O(\\log n)\\)\u3068\\(O(n)\\)\u3067\u3059\u3002\u95a2\u9023\u3059\u308b\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby time_complexity.py<pre><code>def linear_log_recur(n: int) -&gt; int:\n \"\"\"\u7dda\u5f62\u5bfe\u6570\u8907\u96d1\u5ea6\"\"\"\n if n &lt;= 1:\n return 1\n count: int = linear_log_recur(n // 2) + linear_log_recur(n // 2)\n for _ in range(n):\n count += 1\n return count\n</code></pre> time_complexity.cpp<pre><code>/* \u7dda\u5f62\u5bfe\u6570\u8a08\u7b97\u91cf */\nint linearLogRecur(int n) {\n if (n &lt;= 1)\n return 1;\n int count = linearLogRecur(n / 2) + linearLogRecur(n / 2);\n for (int i = 0; i &lt; n; i++) {\n count++;\n }\n return count;\n}\n</code></pre> time_complexity.java<pre><code>/* \u7dda\u5f62\u5bfe\u6570\u8a08\u7b97\u91cf */\nint linearLogRecur(int n) {\n if (n &lt;= 1)\n return 1;\n int count = linearLogRecur(n / 2) + linearLogRecur(n / 2);\n for (int i = 0; i &lt; n; i++) {\n count++;\n }\n return count;\n}\n</code></pre> time_complexity.cs<pre><code>[class]{time_complexity}-[func]{LinearLogRecur}\n</code></pre> time_complexity.go<pre><code>[class]{}-[func]{linearLogRecur}\n</code></pre> time_complexity.swift<pre><code>[class]{}-[func]{linearLogRecur}\n</code></pre> time_complexity.js<pre><code>[class]{}-[func]{linearLogRecur}\n</code></pre> time_complexity.ts<pre><code>[class]{}-[func]{linearLogRecur}\n</code></pre> time_complexity.dart<pre><code>[class]{}-[func]{linearLogRecur}\n</code></pre> time_complexity.rs<pre><code>[class]{}-[func]{linear_log_recur}\n</code></pre> time_complexity.c<pre><code>[class]{}-[func]{linearLogRecur}\n</code></pre> time_complexity.kt<pre><code>[class]{}-[func]{linearLogRecur}\n</code></pre> time_complexity.rb<pre><code>[class]{}-[func]{linear_log_recur}\n</code></pre> <p>\u4e0b\u56f3\u306f\u7dda\u5f62\u5bfe\u6570\u30aa\u30fc\u30c0\u30fc\u304c\u3069\u306e\u3088\u3046\u306b\u751f\u6210\u3055\u308c\u308b\u304b\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u4e8c\u5206\u6728\u306e\u5404\u30ec\u30d9\u30eb\u306b\u306f\\(n\\)\u500b\u306e\u64cd\u4f5c\u304c\u3042\u308a\u3001\u6728\u306b\u306f\\(\\log_2 n + 1\\)\u30ec\u30d9\u30eb\u304c\u3042\u308a\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n \\log n)\\)\u306b\u306a\u308a\u307e\u3059\u3002</p> <p></p> <p> \u56f3 2-13 \u00a0 Linear-logarithmic order time complexity </p> <p>\u4e3b\u6d41\u306e\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u901a\u5e38\\(O(n \\log n)\\)\u306e\u6642\u9593\u8a08\u7b97\u91cf\u3092\u6301\u3061\u3001\u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\u3001\u30de\u30fc\u30b8\u30bd\u30fc\u30c8\u3001\u30d2\u30fc\u30d7\u30bd\u30fc\u30c8\u306a\u3069\u304c\u3042\u308a\u307e\u3059\u3002</p>"},{"location":"chapter_computational_complexity/time_complexity/#7-on","title":"7. \u00a0 \u968e\u4e57\u30aa\u30fc\u30c0\u30fc \\(O(n!)\\)","text":"<p>\u968e\u4e57\u30aa\u30fc\u30c0\u30fc\u306f\u300c\u5168\u9806\u5217\u300d\u306e\u6570\u5b66\u554f\u984c\u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002\\(n\\)\u500b\u306e\u7570\u306a\u308b\u8981\u7d20\u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u3001\u53ef\u80fd\u306a\u9806\u5217\u306e\u7dcf\u6570\u306f\uff1a</p> \\[ n! = n \\times (n - 1) \\times (n - 2) \\times \\dots \\times 2 \\times 1 \\] <p>\u968e\u4e57\u306f\u901a\u5e38\u518d\u5e30\u3092\u4f7f\u7528\u3057\u3066\u5b9f\u88c5\u3055\u308c\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u3068\u56f3\u306b\u793a\u3055\u308c\u3066\u3044\u308b\u3088\u3046\u306b\u3001\u7b2c1\u30ec\u30d9\u30eb\u306f\\(n\\)\u500b\u306e\u5206\u5c90\u306b\u5206\u5272\u3055\u308c\u3001\u7b2c2\u30ec\u30d9\u30eb\u306f\\(n - 1\\)\u500b\u306e\u5206\u5c90\u306b\u5206\u5272\u3055\u308c\u3001\u7b2c\\(n\\)\u30ec\u30d9\u30eb\u5f8c\u306b\u505c\u6b62\u3057\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby time_complexity.py<pre><code>def factorial_recur(n: int) -&gt; int:\n \"\"\"\u968e\u4e57\u8907\u96d1\u5ea6\uff08\u518d\u5e30\u5b9f\u88c5\uff09\"\"\"\n if n == 0:\n return 1\n count = 0\n # 1\u3064\u304b\u3089n\u306b\u5206\u5c90\n for _ in range(n):\n count += factorial_recur(n - 1)\n return count\n</code></pre> time_complexity.cpp<pre><code>/* \u968e\u4e57\u8a08\u7b97\u91cf\uff08\u518d\u5e30\u5b9f\u88c5\uff09 */\nint factorialRecur(int n) {\n if (n == 0)\n return 1;\n int count = 0;\n // 1\u304b\u3089 n \u306b\u5206\u88c2\n for (int i = 0; i &lt; n; i++) {\n count += factorialRecur(n - 1);\n }\n return count;\n}\n</code></pre> time_complexity.java<pre><code>/* \u968e\u4e57\u8a08\u7b97\u91cf\uff08\u518d\u5e30\u5b9f\u88c5\uff09 */\nint factorialRecur(int n) {\n if (n == 0)\n return 1;\n int count = 0;\n // 1\u304b\u3089 n \u306b\u5206\u88c2\n for (int i = 0; i &lt; n; i++) {\n count += factorialRecur(n - 1);\n }\n return count;\n}\n</code></pre> time_complexity.cs<pre><code>[class]{time_complexity}-[func]{FactorialRecur}\n</code></pre> time_complexity.go<pre><code>[class]{}-[func]{factorialRecur}\n</code></pre> time_complexity.swift<pre><code>[class]{}-[func]{factorialRecur}\n</code></pre> time_complexity.js<pre><code>[class]{}-[func]{factorialRecur}\n</code></pre> time_complexity.ts<pre><code>[class]{}-[func]{factorialRecur}\n</code></pre> time_complexity.dart<pre><code>[class]{}-[func]{factorialRecur}\n</code></pre> time_complexity.rs<pre><code>[class]{}-[func]{factorial_recur}\n</code></pre> time_complexity.c<pre><code>[class]{}-[func]{factorialRecur}\n</code></pre> time_complexity.kt<pre><code>[class]{}-[func]{factorialRecur}\n</code></pre> time_complexity.rb<pre><code>[class]{}-[func]{factorial_recur}\n</code></pre> <p></p> <p> \u56f3 2-14 \u00a0 Factorial order time complexity </p> <p>\u968e\u4e57\u30aa\u30fc\u30c0\u30fc\u306f\u6307\u6570\u30aa\u30fc\u30c0\u30fc\u3088\u308a\u3082\u3055\u3089\u306b\u901f\u304f\u5897\u52a0\u3059\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3088\u308a\u5927\u304d\u306a\\(n\\)\u5024\u3067\u306f\u53d7\u3051\u5165\u308c\u3089\u308c\u307e\u305b\u3093\u3002</p>"},{"location":"chapter_computational_complexity/time_complexity/#235","title":"2.3.5 \u00a0 \u6700\u60aa\u3001\u6700\u826f\u3001\u5e73\u5747\u6642\u9593\u8a08\u7b97\u91cf","text":"<p>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u6642\u9593\u52b9\u7387\u306f\u56fa\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u3053\u3068\u304c\u591a\u304f\u3001\u5165\u529b\u30c7\u30fc\u30bf\u306e\u5206\u5e03\u306b\u4f9d\u5b58\u3057\u307e\u3059\u3002\u9577\u3055\\(n\\)\u306e\u914d\u5217<code>nums</code>\u304c\u3042\u308a\u3001\\(1\\)\u304b\u3089\\(n\\)\u307e\u3067\u306e\u6570\u3067\u69cb\u6210\u3055\u308c\u3001\u305d\u308c\u305e\u308c\u304c\u4e00\u5ea6\u3060\u3051\u73fe\u308c\u307e\u3059\u304c\u3001\u30e9\u30f3\u30c0\u30e0\u306b\u30b7\u30e3\u30c3\u30d5\u30eb\u3055\u308c\u305f\u9806\u5e8f\u3067\u3042\u308b\u3068\u3057\u307e\u3059\u3002\u30bf\u30b9\u30af\u306f\u8981\u7d20\\(1\\)\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u3059\u3053\u3068\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u7d50\u8ad6\u3092\u5c0e\u3051\u307e\u3059\uff1a</p> <ul> <li><code>nums = [?, ?, ..., 1]</code>\u306e\u5834\u5408\u3001\u3064\u307e\u308a\u6700\u5f8c\u306e\u8981\u7d20\u304c\\(1\\)\u306e\u5834\u5408\u3001\u914d\u5217\u306e\u5b8c\u5168\u306a\u8d70\u67fb\u304c\u5fc5\u8981\u3067\u3001\u6700\u60aa\u30b1\u30fc\u30b9\u6642\u9593\u8a08\u7b97\u91cf\\(O(n)\\)\u3092\u9054\u6210\u3057\u307e\u3059\u3002</li> <li><code>nums = [1, ?, ?, ...]</code>\u306e\u5834\u5408\u3001\u3064\u307e\u308a\u6700\u521d\u306e\u8981\u7d20\u304c\\(1\\)\u306e\u5834\u5408\u3001\u914d\u5217\u306e\u9577\u3055\u306b\u95a2\u4fc2\u306a\u304f\u3001\u3055\u3089\u306a\u308b\u8d70\u67fb\u306f\u4e0d\u8981\u3067\u3001\u6700\u826f\u30b1\u30fc\u30b9\u6642\u9593\u8a08\u7b97\u91cf\\(\\Omega(1)\\)\u3092\u9054\u6210\u3057\u307e\u3059\u3002</li> </ul> <p>\u300c\u6700\u60aa\u30b1\u30fc\u30b9\u6642\u9593\u8a08\u7b97\u91cf\u300d\u306f\u6f38\u8fd1\u4e0a\u9650\u306b\u5bfe\u5fdc\u3057\u3001\u5927\u304d\u306a\\(O\\)\u8a18\u6cd5\u3067\u8868\u3055\u308c\u307e\u3059\u3002\u5bfe\u5fdc\u3057\u3066\u3001\u300c\u6700\u826f\u30b1\u30fc\u30b9\u6642\u9593\u8a08\u7b97\u91cf\u300d\u306f\u6f38\u8fd1\u4e0b\u9650\u306b\u5bfe\u5fdc\u3057\u3001\\(\\Omega\\)\u3067\u8868\u3055\u308c\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby worst_best_time_complexity.py<pre><code>def random_numbers(n: int) -&gt; list[int]:\n \"\"\"\u8981\u7d20 1, 2, ..., n \u3092\u542b\u3080\u914d\u5217\u3092\u751f\u6210\u3001\u9806\u5e8f\u306f\u30b7\u30e3\u30c3\u30d5\u30eb\"\"\"\n # \u914d\u5217 nums = 1, 2, 3, ..., n \u3092\u751f\u6210\n nums = [i for i in range(1, n + 1)]\n # \u914d\u5217\u8981\u7d20\u3092\u30e9\u30f3\u30c0\u30e0\u306b\u30b7\u30e3\u30c3\u30d5\u30eb\n random.shuffle(nums)\n return nums\n\ndef find_one(nums: list[int]) -&gt; int:\n \"\"\"\u914d\u5217 nums \u3067\u6570\u5024 1 \u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u691c\u7d22\"\"\"\n for i in range(len(nums)):\n # \u8981\u7d20 1 \u304c\u914d\u5217\u306e\u6700\u521d\u306b\u3042\u308b\u5834\u5408\u3001\u6700\u826f\u6642\u9593\u8a08\u7b97\u91cf O(1) \u3092\u9054\u6210\n # \u8981\u7d20 1 \u304c\u914d\u5217\u306e\u6700\u5f8c\u306b\u3042\u308b\u5834\u5408\u3001\u6700\u60aa\u6642\u9593\u8a08\u7b97\u91cf O(n) \u3092\u9054\u6210\n if nums[i] == 1:\n return i\n return -1\n</code></pre> worst_best_time_complexity.cpp<pre><code>/* \u8981\u7d20 {1, 2, ..., n} \u3092\u30e9\u30f3\u30c0\u30e0\u306b\u30b7\u30e3\u30c3\u30d5\u30eb\u3057\u305f\u914d\u5217\u3092\u751f\u6210 */\nvector&lt;int&gt; randomNumbers(int n) {\n vector&lt;int&gt; nums(n);\n // \u914d\u5217 nums = { 1, 2, 3, ..., n } \u3092\u751f\u6210\n for (int i = 0; i &lt; n; i++) {\n nums[i] = i + 1;\n }\n // \u30b7\u30b9\u30c6\u30e0\u6642\u523b\u3092\u4f7f\u7528\u3057\u3066\u30e9\u30f3\u30c0\u30e0\u30b7\u30fc\u30c9\u3092\u751f\u6210\n unsigned seed = chrono::system_clock::now().time_since_epoch().count();\n // \u914d\u5217\u8981\u7d20\u3092\u30e9\u30f3\u30c0\u30e0\u306b\u30b7\u30e3\u30c3\u30d5\u30eb\n shuffle(nums.begin(), nums.end(), default_random_engine(seed));\n return nums;\n}\n\n/* \u914d\u5217 nums \u3067\u6570\u50241\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u898b\u3064\u3051\u308b */\nint findOne(vector&lt;int&gt; &amp;nums) {\n for (int i = 0; i &lt; nums.size(); i++) {\n // \u8981\u7d201\u304c\u914d\u5217\u306e\u5148\u982d\u306b\u3042\u308b\u5834\u5408\u3001\u6700\u826f\u6642\u9593\u8a08\u7b97\u91cf O(1) \u3092\u9054\u6210\n // \u8981\u7d201\u304c\u914d\u5217\u306e\u672b\u5c3e\u306b\u3042\u308b\u5834\u5408\u3001\u6700\u60aa\u6642\u9593\u8a08\u7b97\u91cf O(n) \u3092\u9054\u6210\n if (nums[i] == 1)\n return i;\n }\n return -1;\n}\n</code></pre> worst_best_time_complexity.java<pre><code>/* \u8981\u7d20 {1, 2, ..., n} \u3092\u30e9\u30f3\u30c0\u30e0\u306b\u30b7\u30e3\u30c3\u30d5\u30eb\u3057\u305f\u914d\u5217\u3092\u751f\u6210 */\nint[] randomNumbers(int n) {\n Integer[] nums = new Integer[n];\n // \u914d\u5217 nums = { 1, 2, 3, ..., n } \u3092\u751f\u6210\n for (int i = 0; i &lt; n; i++) {\n nums[i] = i + 1;\n }\n // \u914d\u5217\u8981\u7d20\u3092\u30e9\u30f3\u30c0\u30e0\u306b\u30b7\u30e3\u30c3\u30d5\u30eb\n Collections.shuffle(Arrays.asList(nums));\n // Integer[] -&gt; int[]\n int[] res = new int[n];\n for (int i = 0; i &lt; n; i++) {\n res[i] = nums[i];\n }\n return res;\n}\n\n/* \u914d\u5217 nums \u3067\u6570\u50241\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u898b\u3064\u3051\u308b */\nint findOne(int[] nums) {\n for (int i = 0; i &lt; nums.length; i++) {\n // \u8981\u7d201\u304c\u914d\u5217\u306e\u5148\u982d\u306b\u3042\u308b\u5834\u5408\u3001\u6700\u826f\u6642\u9593\u8a08\u7b97\u91cf O(1) \u3092\u9054\u6210\n // \u8981\u7d201\u304c\u914d\u5217\u306e\u672b\u5c3e\u306b\u3042\u308b\u5834\u5408\u3001\u6700\u60aa\u6642\u9593\u8a08\u7b97\u91cf O(n) \u3092\u9054\u6210\n if (nums[i] == 1)\n return i;\n }\n return -1;\n}\n</code></pre> worst_best_time_complexity.cs<pre><code>[class]{worst_best_time_complexity}-[func]{RandomNumbers}\n\n[class]{worst_best_time_complexity}-[func]{FindOne}\n</code></pre> worst_best_time_complexity.go<pre><code>[class]{}-[func]{randomNumbers}\n\n[class]{}-[func]{findOne}\n</code></pre> worst_best_time_complexity.swift<pre><code>[class]{}-[func]{randomNumbers}\n\n[class]{}-[func]{findOne}\n</code></pre> worst_best_time_complexity.js<pre><code>[class]{}-[func]{randomNumbers}\n\n[class]{}-[func]{findOne}\n</code></pre> worst_best_time_complexity.ts<pre><code>[class]{}-[func]{randomNumbers}\n\n[class]{}-[func]{findOne}\n</code></pre> worst_best_time_complexity.dart<pre><code>[class]{}-[func]{randomNumbers}\n\n[class]{}-[func]{findOne}\n</code></pre> worst_best_time_complexity.rs<pre><code>[class]{}-[func]{random_numbers}\n\n[class]{}-[func]{find_one}\n</code></pre> worst_best_time_complexity.c<pre><code>[class]{}-[func]{randomNumbers}\n\n[class]{}-[func]{findOne}\n</code></pre> worst_best_time_complexity.kt<pre><code>[class]{}-[func]{randomNumbers}\n\n[class]{}-[func]{findOne}\n</code></pre> worst_best_time_complexity.rb<pre><code>[class]{}-[func]{random_numbers}\n\n[class]{}-[func]{find_one}\n</code></pre> <p>\u6700\u826f\u30b1\u30fc\u30b9\u6642\u9593\u8a08\u7b97\u91cf\u306f\u5b9f\u969b\u306b\u306f\u307b\u3068\u3093\u3069\u4f7f\u7528\u3055\u308c\u306a\u3044\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u901a\u5e38\u306f\u975e\u5e38\u306b\u4f4e\u3044\u78ba\u7387\u3067\u306e\u307f\u9054\u6210\u53ef\u80fd\u3067\u3001\u8aa4\u89e3\u3092\u62db\u304f\u53ef\u80fd\u6027\u304c\u3042\u308b\u304b\u3089\u3067\u3059\u3002\u6700\u60aa\u30b1\u30fc\u30b9\u6642\u9593\u8a08\u7b97\u91cf\u306f\u3088\u308a\u5b9f\u7528\u7684\u3067\u3001\u52b9\u7387\u306e\u5b89\u5168\u5024\u3092\u63d0\u4f9b\u3057\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u81ea\u4fe1\u3092\u6301\u3063\u3066\u4f7f\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002</p> <p>\u4e0a\u8a18\u306e\u4f8b\u304b\u3089\u3001\u6700\u60aa\u30b1\u30fc\u30b9\u3068\u6700\u826f\u30b1\u30fc\u30b9\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f\u4e21\u65b9\u3068\u3082\u300c\u7279\u6b8a\u306a\u30c7\u30fc\u30bf\u5206\u5e03\u300d\u4e0b\u3067\u306e\u307f\u767a\u751f\u3057\u3001\u767a\u751f\u78ba\u7387\u304c\u5c0f\u3055\u304f\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5b9f\u884c\u52b9\u7387\u3092\u6b63\u78ba\u306b\u53cd\u6620\u3057\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308b\u3053\u3068\u304c\u660e\u3089\u304b\u3067\u3059\u3002\u5bfe\u7167\u7684\u306b\u3001\u5e73\u5747\u6642\u9593\u8a08\u7b97\u91cf\u306f\u30e9\u30f3\u30c0\u30e0\u5165\u529b\u30c7\u30fc\u30bf\u4e0b\u3067\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u52b9\u7387\u3092\u53cd\u6620\u3067\u304d\u3001\\(\\Theta\\)\u8a18\u6cd5\u3067\u8868\u3055\u308c\u307e\u3059\u3002</p> <p>\u4e00\u90e8\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u306f\u3001\u30e9\u30f3\u30c0\u30e0\u30c7\u30fc\u30bf\u5206\u5e03\u4e0b\u3067\u306e\u5e73\u5747\u30b1\u30fc\u30b9\u3092\u7c21\u5358\u306b\u63a8\u5b9a\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u524d\u8ff0\u306e\u4f8b\u3067\u306f\u3001\u5165\u529b\u914d\u5217\u304c\u30b7\u30e3\u30c3\u30d5\u30eb\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u8981\u7d20\\(1\\)\u304c\u4efb\u610f\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u73fe\u308c\u308b\u78ba\u7387\u306f\u7b49\u3057\u3044\u3067\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5e73\u5747\u30eb\u30fc\u30d7\u6570\u306f\u914d\u5217\u9577\u3055\u306e\u534a\u5206\\(n / 2\\)\u3067\u3001\u5e73\u5747\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(\\Theta(n / 2) = \\Theta(n)\\)\u3067\u3059\u3002</p> <p>\u3057\u304b\u3057\u3001\u3088\u308a\u8907\u96d1\u306a\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5e73\u5747\u6642\u9593\u8a08\u7b97\u91cf\u3092\u8a08\u7b97\u3059\u308b\u3053\u3068\u306f\u975e\u5e38\u306b\u56f0\u96e3\u3067\u3059\u3002\u30c7\u30fc\u30bf\u5206\u5e03\u4e0b\u3067\u306e\u5168\u4f53\u7684\u306a\u6570\u5b66\u7684\u671f\u5f85\u5024\u3092\u5206\u6790\u3059\u308b\u3053\u3068\u304c\u56f0\u96e3\u3060\u304b\u3089\u3067\u3059\u3002\u305d\u306e\u3088\u3046\u306a\u5834\u5408\u3001\u901a\u5e38\u306f\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u52b9\u7387\u3092\u5224\u65ad\u3059\u308b\u57fa\u6e96\u3068\u3057\u3066\u6700\u60aa\u30b1\u30fc\u30b9\u6642\u9593\u8a08\u7b97\u91cf\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</p> <p>\\(\\Theta\\)\u8a18\u53f7\u306f\u306a\u305c\u307b\u3068\u3093\u3069\u898b\u3089\u308c\u306a\u3044\u306e\u3067\u3059\u304b\uff1f</p> <p>\u304a\u305d\u3089\u304f\\(O\\)\u8a18\u6cd5\u304c\u3088\u308a\u4e00\u822c\u7684\u306b\u8a71\u3055\u308c\u308b\u305f\u3081\u3001\u5e73\u5747\u6642\u9593\u8a08\u7b97\u91cf\u3092\u8868\u3059\u305f\u3081\u306b\u3088\u304f\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u53b3\u5bc6\u306b\u8a00\u3048\u3070\u3001\u3053\u306e\u5b9f\u8df5\u306f\u6b63\u78ba\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u3053\u306e\u672c\u3084\u4ed6\u306e\u8cc7\u6599\u3067\u300c\u5e73\u5747\u6642\u9593\u8a08\u7b97\u91cf\\(O(n)\\)\u300d\u306e\u3088\u3046\u306a\u8868\u73fe\u306b\u906d\u9047\u3057\u305f\u5834\u5408\u306f\u3001\u76f4\u63a5\\(\\Theta(n)\\)\u3068\u3057\u3066\u7406\u89e3\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p>"},{"location":"chapter_data_structure/","title":"\u7b2c 3 \u7ae0 \u00a0 \u30c7\u30fc\u30bf\u69cb\u9020","text":"<p>Abstract</p> <p>\u30c7\u30fc\u30bf\u69cb\u9020\u306f\u5805\u7262\u3067\u591a\u69d8\u306a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3068\u3057\u3066\u6a5f\u80fd\u3057\u307e\u3059\u3002</p> <p>\u30c7\u30fc\u30bf\u306e\u6574\u7136\u3068\u3057\u305f\u7d44\u7e54\u5316\u306e\u305f\u3081\u306e\u8a2d\u8a08\u56f3\u3092\u63d0\u4f9b\u3057\u3001\u305d\u306e\u4e0a\u3067\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u304c\u751f\u304d\u751f\u304d\u3068\u52d5\u304d\u51fa\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_data_structure/#_1","title":"\u7ae0\u306e\u5185\u5bb9","text":"<ul> <li>3.1 \u00a0 \u30c7\u30fc\u30bf\u69cb\u9020\u306e\u5206\u985e</li> <li>3.2 \u00a0 \u57fa\u672c\u30c7\u30fc\u30bf\u578b</li> <li>3.3 \u00a0 \u6570\u5024\u306e\u7b26\u53f7\u5316 *</li> <li>3.4 \u00a0 \u6587\u5b57\u306e\u7b26\u53f7\u5316 *</li> <li>3.5 \u00a0 \u307e\u3068\u3081</li> </ul>"},{"location":"chapter_data_structure/basic_data_types/","title":"3.2 \u00a0 \u57fa\u672c\u30c7\u30fc\u30bf\u578b","text":"<p>\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u5185\u306e\u30c7\u30fc\u30bf\u306b\u3064\u3044\u3066\u8003\u3048\u308b\u969b\u3001\u30c6\u30ad\u30b9\u30c8\u3001\u753b\u50cf\u3001\u52d5\u753b\u3001\u97f3\u58f0\u30013D\u30e2\u30c7\u30eb\u306a\u3069\u3001\u69d8\u3005\u306a\u5f62\u5f0f\u304c\u601d\u3044\u6d6e\u304b\u3073\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u7d44\u7e54\u7684\u306a\u5f62\u5f0f\u306f\u7570\u306a\u308a\u307e\u3059\u304c\u3001\u3059\u3079\u3066\u69d8\u3005\u306a\u57fa\u672c\u30c7\u30fc\u30bf\u578b\u304b\u3089\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002</p> <p>**\u57fa\u672c\u30c7\u30fc\u30bf\u578b\u3068\u306f\u3001CPU\u304c\u76f4\u63a5\u64cd\u4f5c\u3067\u304d\u308b\u3082\u306e**\u3067\u3042\u308a\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u76f4\u63a5\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u4e3b\u306b\u4ee5\u4e0b\u304c\u542b\u307e\u308c\u307e\u3059\u3002</p> <ul> <li>\u6574\u6570\u578b\uff1a<code>byte</code>\u3001<code>short</code>\u3001<code>int</code>\u3001<code>long</code></li> <li>\u6d6e\u52d5\u5c0f\u6570\u70b9\u578b\uff1a<code>float</code>\u3001<code>double</code>\u3001\u5c0f\u6570\u3092\u8868\u73fe\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528</li> <li>\u6587\u5b57\u578b\uff1a<code>char</code>\u3001\u69d8\u3005\u306a\u8a00\u8a9e\u306e\u6587\u5b57\u3001\u53e5\u8aad\u70b9\u3001\u3055\u3089\u306b\u306f\u7d75\u6587\u5b57\u3092\u8868\u73fe\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528</li> <li>\u30d6\u30fc\u30eb\u578b\uff1a<code>bool</code>\u3001\u300c\u306f\u3044\u300d\u307e\u305f\u306f\u300c\u3044\u3044\u3048\u300d\u306e\u5224\u65ad\u3092\u8868\u73fe\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528</li> </ul> <p>\u57fa\u672c\u30c7\u30fc\u30bf\u578b\u306f\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u5185\u3067\u4e8c\u9032\u5f62\u5f0f\u3067\u683c\u7d0d\u3055\u308c\u307e\u3059\u30021\u3064\u306e\u4e8c\u9032\u6841\u306f1\u30d3\u30c3\u30c8\u3067\u3059\u3002\u307b\u3068\u3093\u3069\u306e\u73fe\u4ee3\u7684\u306a\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\u3067\u306f\u30011\u30d0\u30a4\u30c8\u306f8\u30d3\u30c3\u30c8\u3067\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002</p> <p>\u57fa\u672c\u30c7\u30fc\u30bf\u578b\u306e\u5024\u306e\u7bc4\u56f2\u306f\u3001\u305d\u308c\u3089\u304c\u5360\u3081\u308b\u7a7a\u9593\u306e\u30b5\u30a4\u30ba\u306b\u4f9d\u5b58\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u3067\u306f\u3001Java\u3092\u4f8b\u306b\u8aac\u660e\u3057\u307e\u3059\u3002</p> <ul> <li>\u6574\u6570\u578b<code>byte</code>\u306f1\u30d0\u30a4\u30c8 = 8\u30d3\u30c3\u30c8\u3092\u5360\u3081\u3001\\(2^8\\)\u500b\u306e\u6570\u5024\u3092\u8868\u73fe\u3067\u304d\u307e\u3059\u3002</li> <li>\u6574\u6570\u578b<code>int</code>\u306f4\u30d0\u30a4\u30c8 = 32\u30d3\u30c3\u30c8\u3092\u5360\u3081\u3001\\(2^{32}\\)\u500b\u306e\u6570\u5024\u3092\u8868\u73fe\u3067\u304d\u307e\u3059\u3002</li> </ul> <p>\u4ee5\u4e0b\u306e\u8868\u306f\u3001Java\u306b\u304a\u3051\u308b\u69d8\u3005\u306a\u57fa\u672c\u30c7\u30fc\u30bf\u578b\u304c\u5360\u3081\u308b\u7a7a\u9593\u3001\u5024\u306e\u7bc4\u56f2\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u8868\u3092\u6697\u8a18\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u304c\u3001\u4e00\u822c\u7684\u306a\u7406\u89e3\u3092\u6301\u3061\u3001\u5fc5\u8981\u6642\u306b\u53c2\u7167\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002</p> <p> \u8868 3-1 \u00a0 \u57fa\u672c\u30c7\u30fc\u30bf\u578b\u304c\u5360\u3081\u308b\u7a7a\u9593\u3068\u5024\u306e\u7bc4\u56f2 </p> \u578b \u30b7\u30f3\u30dc\u30eb \u5360\u6709\u7a7a\u9593 \u6700\u5c0f\u5024 \u6700\u5927\u5024 \u30c7\u30d5\u30a9\u30eb\u30c8\u5024 \u6574\u6570 <code>byte</code> 1\u30d0\u30a4\u30c8 \\(-2^7\\) (\\(-128\\)) \\(2^7 - 1\\) (\\(127\\)) 0 <code>short</code> 2\u30d0\u30a4\u30c8 \\(-2^{15}\\) \\(2^{15} - 1\\) 0 <code>int</code> 4\u30d0\u30a4\u30c8 \\(-2^{31}\\) \\(2^{31} - 1\\) 0 <code>long</code> 8\u30d0\u30a4\u30c8 \\(-2^{63}\\) \\(2^{63} - 1\\) 0 \u6d6e\u52d5\u5c0f\u6570\u70b9 <code>float</code> 4\u30d0\u30a4\u30c8 \\(1.175 \\times 10^{-38}\\) \\(3.403 \\times 10^{38}\\) \\(0.0\\text{f}\\) <code>double</code> 8\u30d0\u30a4\u30c8 \\(2.225 \\times 10^{-308}\\) \\(1.798 \\times 10^{308}\\) 0.0 \u6587\u5b57 <code>char</code> 2\u30d0\u30a4\u30c8 0 \\(2^{16} - 1\\) 0 \u30d6\u30fc\u30eb <code>bool</code> 1\u30d0\u30a4\u30c8 \\(\\text{false}\\) \\(\\text{true}\\) \\(\\text{false}\\) <p>\u4e0a\u8a18\u306e\u8868\u306fJava\u306e\u57fa\u672c\u30c7\u30fc\u30bf\u578b\u306b\u7279\u6709\u3067\u3042\u308b\u3053\u3068\u306b\u3054\u6ce8\u610f\u304f\u3060\u3055\u3044\u3002\u3059\u3079\u3066\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306b\u306f\u72ec\u81ea\u306e\u30c7\u30fc\u30bf\u578b\u5b9a\u7fa9\u304c\u3042\u308a\u3001\u5360\u6709\u7a7a\u9593\u3001\u5024\u306e\u7bc4\u56f2\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u304c\u7570\u306a\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002</p> <ul> <li>Python\u3067\u306f\u3001\u6574\u6570\u578b<code>int</code>\u306f\u4efb\u610f\u306e\u30b5\u30a4\u30ba\u306b\u306a\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u5229\u7528\u53ef\u80fd\u306a\u30e1\u30e2\u30ea\u306b\u3088\u3063\u3066\u306e\u307f\u5236\u9650\u3055\u308c\u307e\u3059\u3002\u6d6e\u52d5\u5c0f\u6570\u70b9<code>float</code>\u306f\u500d\u7cbe\u5ea664\u30d3\u30c3\u30c8\u3067\u3059\u3002<code>char</code>\u578b\u306f\u5b58\u5728\u305b\u305a\u3001\u5358\u4e00\u6587\u5b57\u306f\u5b9f\u969b\u306b\u306f\u9577\u30551\u306e\u6587\u5b57\u5217<code>str</code>\u3067\u3059\u3002</li> <li>C\u304a\u3088\u3073C++\u3067\u306f\u57fa\u672c\u30c7\u30fc\u30bf\u578b\u306e\u30b5\u30a4\u30ba\u304c\u6307\u5b9a\u3055\u308c\u3066\u304a\u3089\u305a\u3001\u5b9f\u88c5\u3068\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306b\u3088\u3063\u3066\u7570\u306a\u308a\u307e\u3059\u3002\u4e0a\u8a18\u306e\u8868\u306fLP64\u30c7\u30fc\u30bf\u30e2\u30c7\u30eb\u306b\u5f93\u3063\u3066\u304a\u308a\u3001Linux\u3084macOS\u3092\u542b\u3080Unix 64\u30d3\u30c3\u30c8\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\u3067\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002</li> <li>C\u304a\u3088\u3073C++\u306b\u304a\u3051\u308b<code>char</code>\u306e\u30b5\u30a4\u30ba\u306f1\u30d0\u30a4\u30c8\u3067\u3059\u304c\u3001\u307b\u3068\u3093\u3069\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u306f\u3001\u7279\u5b9a\u306e\u6587\u5b57\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u65b9\u6cd5\u306b\u4f9d\u5b58\u3057\u3001\u8a73\u7d30\u306f\u300c\u6587\u5b57\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u300d\u306e\u7ae0\u3067\u8aac\u660e\u3055\u308c\u3066\u3044\u307e\u3059\u3002</li> <li>\u30d6\u30fc\u30eb\u5024\u306e\u8868\u73fe\u306b\u306f1\u30d3\u30c3\u30c8\uff080\u307e\u305f\u306f1\uff09\u306e\u307f\u304c\u5fc5\u8981\u3067\u3059\u304c\u3001\u901a\u5e38\u306f\u30e1\u30e2\u30ea\u5185\u306b1\u30d0\u30a4\u30c8\u3068\u3057\u3066\u683c\u7d0d\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u73fe\u4ee3\u306e\u30b3\u30f3\u30d4\u30e5\u30fc\u30bfCPU\u304c\u901a\u5e381\u30d0\u30a4\u30c8\u3092\u6700\u5c0f\u306e\u30a2\u30c9\u30ec\u30b9\u53ef\u80fd\u306a\u30e1\u30e2\u30ea\u5358\u4f4d\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u305f\u3081\u3067\u3059\u3002</li> </ul> <p>\u3067\u306f\u3001\u57fa\u672c\u30c7\u30fc\u30bf\u578b\u3068\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u95a2\u4fc2\u306f\u4f55\u3067\u3057\u3087\u3046\u304b\uff1f\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u306f\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u5185\u3067\u30c7\u30fc\u30bf\u3092\u7d44\u7e54\u5316\u3057\u683c\u7d0d\u3059\u308b\u65b9\u6cd5\u3067\u3042\u308b\u3053\u3068\u3092\u77e5\u3063\u3066\u3044\u307e\u3059\u3002\u3053\u3053\u3067\u306e\u7126\u70b9\u306f\u300c\u30c7\u30fc\u30bf\u300d\u3067\u306f\u306a\u304f\u300c\u69cb\u9020\u300d\u3067\u3059\u3002</p> <p>\u300c\u6570\u5024\u306e\u5217\u300d\u3092\u8868\u73fe\u3057\u305f\u3044\u5834\u5408\u3001\u81ea\u7136\u306b\u914d\u5217\u306e\u4f7f\u7528\u3092\u8003\u3048\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u914d\u5217\u306e\u7dda\u5f62\u69cb\u9020\u304c\u6570\u5024\u306e\u96a3\u63a5\u6027\u3068\u9806\u5e8f\u6027\u3092\u8868\u73fe\u3067\u304d\u308b\u305f\u3081\u3067\u3059\u304c\u3001\u683c\u7d0d\u3055\u308c\u308b\u5185\u5bb9\u304c\u6574\u6570<code>int</code>\u3001\u5c0f\u6570<code>float</code>\u3001\u6587\u5b57<code>char</code>\u306e\u3044\u305a\u308c\u3067\u3042\u3063\u3066\u3082\u3001\u300c\u30c7\u30fc\u30bf\u69cb\u9020\u300d\u3068\u306f\u7121\u95a2\u4fc2\u3067\u3059\u3002</p> <p>\u8a00\u3044\u63db\u3048\u308b\u3068\u3001\u57fa\u672c\u30c7\u30fc\u30bf\u578b\u306f\u30c7\u30fc\u30bf\u306e\u300c\u5185\u5bb9\u578b\u300d\u3092\u63d0\u4f9b\u3057\u3001\u30c7\u30fc\u30bf\u69cb\u9020\u306f\u30c7\u30fc\u30bf\u306e\u300c\u7d44\u7e54\u5316\u65b9\u6cd5\u300d\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u540c\u3058\u30c7\u30fc\u30bf\u69cb\u9020\uff08\u914d\u5217\uff09\u3092\u4f7f\u7528\u3057\u3066\u3001<code>int</code>\u3001<code>float</code>\u3001<code>char</code>\u3001<code>bool</code>\u306a\u3069\u306e\u7570\u306a\u308b\u57fa\u672c\u30c7\u30fc\u30bf\u578b\u3092\u683c\u7d0d\u3057\u8868\u73fe\u3057\u3066\u3044\u307e\u3059\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlin <pre><code># \u69d8\u3005\u306a\u57fa\u672c\u30c7\u30fc\u30bf\u578b\u3092\u4f7f\u7528\u3057\u3066\u914d\u5217\u3092\u521d\u671f\u5316\nnumbers: list[int] = [0] * 5\ndecimals: list[float] = [0.0] * 5\n# Python\u306e\u6587\u5b57\u306f\u5b9f\u969b\u306b\u306f\u9577\u30551\u306e\u6587\u5b57\u5217\ncharacters: list[str] = ['0'] * 5\nbools: list[bool] = [False] * 5\n# Python\u306e\u30ea\u30b9\u30c8\u306f\u69d8\u3005\u306a\u57fa\u672c\u30c7\u30fc\u30bf\u578b\u3068\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u53c2\u7167\u3092\u81ea\u7531\u306b\u683c\u7d0d\u53ef\u80fd\ndata = [0, 0.0, 'a', False, ListNode(0)]\n</code></pre> <pre><code>// \u69d8\u3005\u306a\u57fa\u672c\u30c7\u30fc\u30bf\u578b\u3092\u4f7f\u7528\u3057\u3066\u914d\u5217\u3092\u521d\u671f\u5316\nint numbers[5];\nfloat decimals[5];\nchar characters[5];\nbool bools[5];\n</code></pre> <pre><code>// \u69d8\u3005\u306a\u57fa\u672c\u30c7\u30fc\u30bf\u578b\u3092\u4f7f\u7528\u3057\u3066\u914d\u5217\u3092\u521d\u671f\u5316\nint[] numbers = new int[5];\nfloat[] decimals = new float[5];\nchar[] characters = new char[5];\nboolean[] bools = new boolean[5];\n</code></pre> <pre><code>// \u69d8\u3005\u306a\u57fa\u672c\u30c7\u30fc\u30bf\u578b\u3092\u4f7f\u7528\u3057\u3066\u914d\u5217\u3092\u521d\u671f\u5316\nint[] numbers = new int[5];\nfloat[] decimals = new float[5];\nchar[] characters = new char[5];\nbool[] bools = new bool[5];\n</code></pre> <pre><code>// \u69d8\u3005\u306a\u57fa\u672c\u30c7\u30fc\u30bf\u578b\u3092\u4f7f\u7528\u3057\u3066\u914d\u5217\u3092\u521d\u671f\u5316\nvar numbers = [5]int{}\nvar decimals = [5]float64{}\nvar characters = [5]byte{}\nvar bools = [5]bool{}\n</code></pre> <pre><code>// \u69d8\u3005\u306a\u57fa\u672c\u30c7\u30fc\u30bf\u578b\u3092\u4f7f\u7528\u3057\u3066\u914d\u5217\u3092\u521d\u671f\u5316\nlet numbers = Array(repeating: 0, count: 5)\nlet decimals = Array(repeating: 0.0, count: 5)\nlet characters: [Character] = Array(repeating: \"a\", count: 5)\nlet bools = Array(repeating: false, count: 5)\n</code></pre> <pre><code>// JavaScript\u306e\u914d\u5217\u306f\u69d8\u3005\u306a\u57fa\u672c\u30c7\u30fc\u30bf\u578b\u3068\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u81ea\u7531\u306b\u683c\u7d0d\u53ef\u80fd\nconst array = [0, 0.0, 'a', false];\n</code></pre> <pre><code>// \u69d8\u3005\u306a\u57fa\u672c\u30c7\u30fc\u30bf\u578b\u3092\u4f7f\u7528\u3057\u3066\u914d\u5217\u3092\u521d\u671f\u5316\nconst numbers: number[] = [];\nconst characters: string[] = [];\nconst bools: boolean[] = [];\n</code></pre> <pre><code>// \u69d8\u3005\u306a\u57fa\u672c\u30c7\u30fc\u30bf\u578b\u3092\u4f7f\u7528\u3057\u3066\u914d\u5217\u3092\u521d\u671f\u5316\nList&lt;int&gt; numbers = List.filled(5, 0);\nList&lt;double&gt; decimals = List.filled(5, 0.0);\nList&lt;String&gt; characters = List.filled(5, 'a');\nList&lt;bool&gt; bools = List.filled(5, false);\n</code></pre> <pre><code>// \u69d8\u3005\u306a\u57fa\u672c\u30c7\u30fc\u30bf\u578b\u3092\u4f7f\u7528\u3057\u3066\u914d\u5217\u3092\u521d\u671f\u5316\nlet numbers: Vec&lt;i32&gt; = vec![0; 5];\nlet decimals: Vec&lt;f32&gt; = vec![0.0, 5];\nlet characters: Vec&lt;char&gt; = vec!['0'; 5];\nlet bools: Vec&lt;bool&gt; = vec![false; 5];\n</code></pre> <pre><code>// \u69d8\u3005\u306a\u57fa\u672c\u30c7\u30fc\u30bf\u578b\u3092\u4f7f\u7528\u3057\u3066\u914d\u5217\u3092\u521d\u671f\u5316\nint numbers[10];\nfloat decimals[10];\nchar characters[10];\nbool bools[10];\n</code></pre> <pre><code>\n</code></pre>"},{"location":"chapter_data_structure/character_encoding/","title":"3.4 \u00a0 \u6587\u5b57\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0 *","text":"<p>\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30b7\u30b9\u30c6\u30e0\u3067\u306f\u3001\u3059\u3079\u3066\u306e\u30c7\u30fc\u30bf\u304c\u4e8c\u9032\u5f62\u5f0f\u3067\u683c\u7d0d\u3055\u308c\u3001<code>char</code>\u3082\u4f8b\u5916\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u6587\u5b57\u3092\u8868\u73fe\u3059\u308b\u305f\u3081\u306b\u3001\u5404\u6587\u5b57\u3068\u4e8c\u9032\u6570\u306e\u4e00\u5bfe\u4e00\u306e\u30de\u30c3\u30d4\u30f3\u30b0\u3092\u5b9a\u7fa9\u3059\u308b\u300c\u6587\u5b57\u30bb\u30c3\u30c8\u300d\u3092\u958b\u767a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u6587\u5b57\u30bb\u30c3\u30c8\u304c\u3042\u308c\u3070\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u306f\u8868\u3092\u53c2\u7167\u3057\u3066\u4e8c\u9032\u6570\u3092\u6587\u5b57\u306b\u5909\u63db\u3067\u304d\u307e\u3059\u3002</p>"},{"location":"chapter_data_structure/character_encoding/#341-ascii","title":"3.4.1 \u00a0 ASCII\u6587\u5b57\u30bb\u30c3\u30c8","text":"<p>ASCII\u30b3\u30fc\u30c9\u306f\u6700\u3082\u521d\u671f\u306e\u6587\u5b57\u30bb\u30c3\u30c8\u306e\u4e00\u3064\u3067\u3001\u6b63\u5f0f\u306b\u306fAmerican Standard Code for Information Interchange\u3068\u3057\u3066\u77e5\u3089\u308c\u3066\u3044\u307e\u3059\u30027\u3064\u306e\u4e8c\u9032\u6841\uff081\u30d0\u30a4\u30c8\u306e\u4e0b\u4f4d7\u30d3\u30c3\u30c8\uff09\u3092\u4f7f\u7528\u3057\u3066\u6587\u5b57\u3092\u8868\u73fe\u3057\u3001\u6700\u5927128\u7a2e\u985e\u306e\u7570\u306a\u308b\u6587\u5b57\u3092\u8868\u73fe\u3067\u304d\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001ASCII\u306b\u306f\u82f1\u8a9e\u306e\u5927\u6587\u5b57\u3068\u5c0f\u6587\u5b57\u30010\u301c9\u306e\u6570\u5b57\u3001\u69d8\u3005\u306a\u53e5\u8aad\u70b9\u3001\u7279\u5b9a\u306e\u5236\u5fa1\u6587\u5b57\uff08\u6539\u884c\u3084\u30bf\u30d6\u306a\u3069\uff09\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002</p> <p></p> <p> \u56f3 3-6 \u00a0 ASCII\u30b3\u30fc\u30c9 </p> <p>\u3057\u304b\u3057\u3001ASCII\u306f\u82f1\u8a9e\u306e\u6587\u5b57\u306e\u307f\u3092\u8868\u73fe\u3067\u304d\u307e\u3059\u3002\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u306e\u30b0\u30ed\u30fc\u30d0\u30eb\u5316\u306b\u4f34\u3044\u3001\u3088\u308a\u591a\u304f\u306e\u8a00\u8a9e\u3092\u8868\u73fe\u3059\u308b\u305f\u3081\u306bEASCII\u3068\u547c\u3070\u308c\u308b\u6587\u5b57\u30bb\u30c3\u30c8\u304c\u958b\u767a\u3055\u308c\u307e\u3057\u305f\u3002ASCII\u306e7\u30d3\u30c3\u30c8\u69cb\u9020\u304b\u30898\u30d3\u30c3\u30c8\u306b\u62e1\u5f35\u3057\u3001256\u6587\u5b57\u306e\u8868\u73fe\u3092\u53ef\u80fd\u306b\u3057\u307e\u3057\u305f\u3002</p> <p>\u4e16\u754c\u7684\u306b\u3001\u69d8\u3005\u306a\u5730\u57df\u56fa\u6709\u306eEASCII\u6587\u5b57\u30bb\u30c3\u30c8\u304c\u5c0e\u5165\u3055\u308c\u307e\u3057\u305f\u3002\u3053\u308c\u3089\u306e\u30bb\u30c3\u30c8\u306e\u6700\u521d\u306e128\u6587\u5b57\u306fASCII\u3068\u4e00\u81f4\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u6b8b\u308a\u306e128\u6587\u5b57\u306f\u7570\u306a\u308b\u8a00\u8a9e\u306e\u8981\u4ef6\u306b\u5bfe\u5fdc\u3059\u308b\u305f\u3081\u306b\u7570\u306a\u3063\u3066\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002</p>"},{"location":"chapter_data_structure/character_encoding/#342-gbk","title":"3.4.2 \u00a0 GBK\u6587\u5b57\u30bb\u30c3\u30c8","text":"<p>\u5f8c\u306b\u3001**EASCII\u3067\u3082\u591a\u304f\u306e\u8a00\u8a9e\u306e\u6587\u5b57\u8981\u4ef6\u3092\u6e80\u305f\u3059\u3053\u3068\u304c\u3067\u304d\u306a\u3044**\u3053\u3068\u304c\u5224\u660e\u3057\u307e\u3057\u305f\u3002\u4f8b\u3048\u3070\u3001\u4e2d\u56fd\u8a9e\u306b\u306f\u7d0410\u4e07\u306e\u6f22\u5b57\u304c\u3042\u308a\u3001\u305d\u306e\u3046\u3061\u6570\u5343\u304c\u5b9a\u671f\u7684\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u30021980\u5e74\u3001\u4e2d\u56fd\u6a19\u6e96\u5316\u59d4\u54e1\u4f1a\u306f6763\u306e\u4e2d\u56fd\u8a9e\u6587\u5b57\u3092\u542b\u3080GB2312\u6587\u5b57\u30bb\u30c3\u30c8\u3092\u767a\u8868\u3057\u3001\u4e2d\u56fd\u8a9e\u306e\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u51e6\u7406\u30cb\u30fc\u30ba\u3092\u672c\u8cea\u7684\u306b\u6e80\u305f\u3057\u307e\u3057\u305f\u3002</p> <p>\u3057\u304b\u3057\u3001GB2312\u306f\u4e00\u90e8\u306e\u7a00\u5c11\u6587\u5b57\u3084\u7e41\u4f53\u5b57\u3092\u51e6\u7406\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002GBK\u6587\u5b57\u30bb\u30c3\u30c8\u306fGB2312\u3092\u62e1\u5f35\u3057\u300121886\u306e\u4e2d\u56fd\u8a9e\u6587\u5b57\u3092\u542b\u3093\u3067\u3044\u307e\u3059\u3002GBK\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u30b9\u30ad\u30fc\u30e0\u3067\u306f\u3001ASCII\u6587\u5b57\u306f1\u30d0\u30a4\u30c8\u3067\u8868\u73fe\u3055\u308c\u3001\u4e2d\u56fd\u8a9e\u6587\u5b57\u306f2\u30d0\u30a4\u30c8\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_data_structure/character_encoding/#343-unicode","title":"3.4.3 \u00a0 Unicode\u6587\u5b57\u30bb\u30c3\u30c8","text":"<p>\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u6280\u8853\u306e\u6025\u901f\u306a\u767a\u5c55\u3068\u591a\u6570\u306e\u6587\u5b57\u30bb\u30c3\u30c8\u304a\u3088\u3073\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u6a19\u6e96\u306b\u3088\u308a\u3001\u6570\u591a\u304f\u306e\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u4e00\u65b9\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u6587\u5b57\u30bb\u30c3\u30c8\u306f\u4e00\u822c\u7684\u306b\u7279\u5b9a\u306e\u8a00\u8a9e\u306e\u6587\u5b57\u306e\u307f\u3092\u5b9a\u7fa9\u3057\u3001\u591a\u8a00\u8a9e\u74b0\u5883\u3067\u306f\u9069\u5207\u306b\u6a5f\u80fd\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u4ed6\u65b9\u3067\u306f\u3001\u540c\u3058\u8a00\u8a9e\u306b\u5bfe\u3059\u308b\u8907\u6570\u306e\u6587\u5b57\u30bb\u30c3\u30c8\u6a19\u6e96\u306e\u5b58\u5728\u306b\u3088\u308a\u3001\u7570\u306a\u308b\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u6a19\u6e96\u3092\u4f7f\u7528\u3059\u308b\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u9593\u3067\u60c5\u5831\u4ea4\u63db\u3092\u884c\u3046\u969b\u306b\u6587\u5b57\u5316\u3051\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002</p> <p>\u5f53\u6642\u306e\u7814\u7a76\u8005\u305f\u3061\u306f\u8003\u3048\u307e\u3057\u305f\uff1a\u4e16\u754c\u306e\u3059\u3079\u3066\u306e\u8a00\u8a9e\u3068\u8a18\u53f7\u3092\u542b\u3080\u5305\u62ec\u7684\u306a\u6587\u5b57\u30bb\u30c3\u30c8\u304c\u958b\u767a\u3055\u308c\u308c\u3070\u3001\u8a00\u8a9e\u6a2a\u65ad\u74b0\u5883\u3068\u6587\u5b57\u5316\u3051\u306b\u95a2\u9023\u3059\u308b\u554f\u984c\u3092\u89e3\u6c7a\u3067\u304d\u308b\u306e\u3067\u306f\u306a\u3044\u3067\u3057\u3087\u3046\u304b\uff1f \u3053\u306e\u30a2\u30a4\u30c7\u30a2\u306b\u30a4\u30f3\u30b9\u30d1\u30a4\u30a2\u3055\u308c\u3066\u3001\u5e83\u7bc4\u56f2\u306a\u6587\u5b57\u30bb\u30c3\u30c8\u3067\u3042\u308bUnicode\u304c\u8a95\u751f\u3057\u307e\u3057\u305f\u3002</p> <p>Unicode\u306f\u4e2d\u56fd\u8a9e\u3067\u300c\u7edf\u4e00\u7801\u300d\uff08\u7d71\u4e00\u30b3\u30fc\u30c9\uff09\u3068\u547c\u3070\u308c\u3001\u7406\u8ad6\u7684\u306b100\u4e07\u6587\u5b57\u4ee5\u4e0a\u3092\u53ce\u5bb9\u3067\u304d\u307e\u3059\u3002\u4e16\u754c\u4e2d\u306e\u3059\u3079\u3066\u306e\u6587\u5b57\u3092\u5358\u4e00\u306e\u30bb\u30c3\u30c8\u306b\u7d44\u307f\u8fbc\u307f\u3001\u69d8\u3005\u306a\u8a00\u8a9e\u306e\u51e6\u7406\u3068\u8868\u793a\u306e\u305f\u3081\u306e\u6c4e\u7528\u6587\u5b57\u30bb\u30c3\u30c8\u3092\u63d0\u4f9b\u3057\u3001\u7570\u306a\u308b\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u6a19\u6e96\u306b\u3088\u308b\u6587\u5b57\u5316\u3051\u306e\u554f\u984c\u3092\u6e1b\u3089\u3059\u3053\u3068\u3092\u76ee\u6307\u3057\u3066\u3044\u307e\u3059\u3002</p> <p>1991\u5e74\u306e\u30ea\u30ea\u30fc\u30b9\u4ee5\u6765\u3001Unicode\u306f\u65b0\u3057\u3044\u8a00\u8a9e\u3068\u6587\u5b57\u3092\u542b\u3080\u3088\u3046\u7d99\u7d9a\u7684\u306b\u62e1\u5f35\u3055\u308c\u3066\u3044\u307e\u3059\u30022022\u5e749\u6708\u73fe\u5728\u3001Unicode\u306b\u306f149,186\u6587\u5b57\u304c\u542b\u307e\u308c\u3066\u304a\u308a\u3001\u69d8\u3005\u306a\u8a00\u8a9e\u306e\u6587\u5b57\u3001\u8a18\u53f7\u3001\u3055\u3089\u306b\u306f\u7d75\u6587\u5b57\u3082\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\u5e83\u5927\u306aUnicode\u6587\u5b57\u30bb\u30c3\u30c8\u3067\u306f\u3001\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u6587\u5b57\u306f2\u30d0\u30a4\u30c8\u3092\u5360\u6709\u3057\u3001\u4e00\u90e8\u306e\u7a00\u5c11\u306a\u6587\u5b57\u306f3\u30d0\u30a4\u30c8\u307e\u305f\u306f4\u30d0\u30a4\u30c8\u3092\u5360\u6709\u3059\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>Unicode\u306f\u5404\u6587\u5b57\u306b\u6570\u5024\uff08\u300c\u30b3\u30fc\u30c9\u30dd\u30a4\u30f3\u30c8\u300d\u3068\u547c\u3070\u308c\u308b\uff09\u3092\u5272\u308a\u5f53\u3066\u308b\u6c4e\u7528\u6587\u5b57\u30bb\u30c3\u30c8\u3067\u3059\u304c\u3001\u3053\u308c\u3089\u306e\u6587\u5b57\u30b3\u30fc\u30c9\u30dd\u30a4\u30f3\u30c8\u304c\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30b7\u30b9\u30c6\u30e0\u306b\u3069\u306e\u3088\u3046\u306b\u683c\u7d0d\u3055\u308c\u308b\u3079\u304d\u304b\u306f\u6307\u5b9a\u3057\u3066\u3044\u307e\u305b\u3093\u3002\u7591\u554f\u304c\u751f\u3058\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\uff1a\u30b7\u30b9\u30c6\u30e0\u306f\u30c6\u30ad\u30b9\u30c8\u5185\u306e\u7570\u306a\u308b\u9577\u3055\u306eUnicode\u30b3\u30fc\u30c9\u30dd\u30a4\u30f3\u30c8\u3092\u3069\u306e\u3088\u3046\u306b\u89e3\u91c8\u3059\u308b\u306e\u3067\u3057\u3087\u3046\u304b\uff1f\u4f8b\u3048\u3070\u30012\u30d0\u30a4\u30c8\u306e\u30b3\u30fc\u30c9\u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u3001\u30b7\u30b9\u30c6\u30e0\u306f\u305d\u308c\u304c\u5358\u4e00\u306e2\u30d0\u30a4\u30c8\u6587\u5b57\u3092\u8868\u3059\u306e\u304b\u30012\u3064\u306e1\u30d0\u30a4\u30c8\u6587\u5b57\u3092\u8868\u3059\u306e\u304b\u3092\u3069\u306e\u3088\u3046\u306b\u5224\u65ad\u3059\u308b\u306e\u3067\u3057\u3087\u3046\u304b\uff1f</p> <p>\u3053\u306e\u554f\u984c\u306b\u5bfe\u3059\u308b\u7c21\u5358\u306a\u89e3\u6c7a\u7b56\u306f\u3001\u3059\u3079\u3066\u306e\u6587\u5b57\u3092\u7b49\u9577\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3068\u3057\u3066\u683c\u7d0d\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u300cHello\u300d\u306e\u5404\u6587\u5b57\u306f1\u30d0\u30a4\u30c8\u3092\u5360\u6709\u3057\u3001\u300c\u7b97\u6cd5\u300d\uff08\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff09\u306e\u5404\u6587\u5b57\u306f2\u30d0\u30a4\u30c8\u3092\u5360\u6709\u3057\u307e\u3059\u3002\u4e0a\u4f4d\u30d3\u30c3\u30c8\u3092\u30bc\u30ed\u3067\u57cb\u3081\u308b\u3053\u3068\u3067\u3001\u300cHello \u7b97\u6cd5\u300d\u306e\u3059\u3079\u3066\u306e\u6587\u5b57\u30922\u30d0\u30a4\u30c8\u3068\u3057\u3066\u30a8\u30f3\u30b3\u30fc\u30c9\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u65b9\u6cd5\u306b\u3088\u308a\u3001\u30b7\u30b9\u30c6\u30e0\u306f2\u30d0\u30a4\u30c8\u3054\u3068\u306b\u6587\u5b57\u3092\u89e3\u91c8\u3057\u3001\u30d5\u30ec\u30fc\u30ba\u306e\u5185\u5bb9\u3092\u5fa9\u5143\u3067\u304d\u307e\u3059\u3002</p> <p></p> <p> \u56f3 3-7 \u00a0 Unicode\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u4f8b </p> <p>\u3057\u304b\u3057\u3001ASCII\u304c\u793a\u3057\u305f\u3088\u3046\u306b\u3001\u82f1\u8a9e\u306e\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u306b\u306f1\u30d0\u30a4\u30c8\u306e\u307f\u304c\u5fc5\u8981\u3067\u3059\u3002\u4e0a\u8a18\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u82f1\u8a9e\u30c6\u30ad\u30b9\u30c8\u304c\u5360\u6709\u3059\u308b\u7a7a\u9593\u304cASCII\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3068\u6bd4\u8f03\u3057\u30662\u500d\u306b\u306a\u308a\u3001\u30e1\u30e2\u30ea\u7a7a\u9593\u306e\u7121\u99c4\u306b\u306a\u308a\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u3088\u308a\u52b9\u7387\u7684\u306aUnicode\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u65b9\u6cd5\u304c\u5fc5\u8981\u3067\u3059\u3002</p>"},{"location":"chapter_data_structure/character_encoding/#344-utf-8","title":"3.4.4 \u00a0 UTF-8\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0","text":"<p>\u73fe\u5728\u3001UTF-8\u306f\u56fd\u969b\u7684\u306b\u6700\u3082\u5e83\u304f\u4f7f\u7528\u3055\u308c\u3066\u3044\u308bUnicode\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u65b9\u6cd5\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002**\u3053\u308c\u306f\u53ef\u5909\u9577\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0**\u3067\u3001\u6587\u5b57\u306e\u8907\u96d1\u3055\u306b\u5fdc\u3058\u30661\u301c4\u30d0\u30a4\u30c8\u3092\u4f7f\u7528\u3057\u3066\u6587\u5b57\u3092\u8868\u73fe\u3057\u307e\u3059\u3002ASCII\u6587\u5b57\u306f1\u30d0\u30a4\u30c8\u306e\u307f\u304c\u5fc5\u8981\u3067\u3001\u30e9\u30c6\u30f3\u6587\u5b57\u3068\u30ae\u30ea\u30b7\u30e3\u6587\u5b57\u306f2\u30d0\u30a4\u30c8\u3001\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u4e2d\u56fd\u8a9e\u6587\u5b57\u306f3\u30d0\u30a4\u30c8\u3001\u305d\u306e\u4ed6\u306e\u7a00\u5c11\u306a\u6587\u5b57\u306f4\u30d0\u30a4\u30c8\u304c\u5fc5\u8981\u3067\u3059\u3002</p> <p>UTF-8\u306e\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u898f\u5247\u306f\u8907\u96d1\u3067\u306f\u306a\u304f\u30012\u3064\u306e\u30b1\u30fc\u30b9\u306b\u5206\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff1a</p> <ul> <li>1\u30d0\u30a4\u30c8\u6587\u5b57\u306e\u5834\u5408\u3001\u6700\u4e0a\u4f4d\u30d3\u30c3\u30c8\u3092\\(0\\)\u306b\u8a2d\u5b9a\u3057\u3001\u6b8b\u308a\u306e7\u30d3\u30c3\u30c8\u3092Unicode\u30b3\u30fc\u30c9\u30dd\u30a4\u30f3\u30c8\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u6ce8\u76ee\u3059\u3079\u304d\u306f\u3001ASCII\u6587\u5b57\u304cUnicode\u30bb\u30c3\u30c8\u306e\u6700\u521d\u306e128\u30b3\u30fc\u30c9\u30dd\u30a4\u30f3\u30c8\u3092\u5360\u6709\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u3053\u308c\u306f**UTF-8\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u304cASCII\u3068\u5f8c\u65b9\u4e92\u63db\u6027\u304c\u3042\u308b**\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001UTF-8\u3092\u4f7f\u7528\u3057\u3066\u53e4\u3044ASCII\u30c6\u30ad\u30b9\u30c8\u3092\u89e3\u6790\u3067\u304d\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002</li> <li>\u9577\u3055\\(n\\)\u30d0\u30a4\u30c8\u306e\u6587\u5b57\uff08\\(n &gt; 1\\)\uff09\u306e\u5834\u5408\u3001\u6700\u521d\u306e\u30d0\u30a4\u30c8\u306e\u6700\u4e0a\u4f4d\\(n\\)\u30d3\u30c3\u30c8\u3092\\(1\\)\u306b\u8a2d\u5b9a\u3057\u3001\\((n + 1)^{\\text{th}}\\)\u30d3\u30c3\u30c8\u3092\\(0\\)\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u30022\u756a\u76ee\u306e\u30d0\u30a4\u30c8\u304b\u3089\u3001\u5404\u30d0\u30a4\u30c8\u306e\u6700\u4e0a\u4f4d2\u30d3\u30c3\u30c8\u3092\\(10\\)\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u6b8b\u308a\u306e\u30d3\u30c3\u30c8\u306fUnicode\u30b3\u30fc\u30c9\u30dd\u30a4\u30f3\u30c8\u3092\u57cb\u3081\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002</li> </ul> <p>\u4ee5\u4e0b\u306e\u56f3\u306f\u300cHello\u7b97\u6cd5\u300d\u306eUTF-8\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u6700\u4e0a\u4f4d\\(n\\)\u30d3\u30c3\u30c8\u304c\\(1\\)\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u30b7\u30b9\u30c6\u30e0\u306f\u6700\u4e0a\u4f4d\u30d3\u30c3\u30c8\u3067\\(1\\)\u306b\u8a2d\u5b9a\u3055\u308c\u305f\u30d3\u30c3\u30c8\u6570\u3092\u6570\u3048\u308b\u3053\u3068\u3067\u6587\u5b57\u306e\u9577\u3055\u3092\\(n\\)\u3068\u3057\u3066\u6c7a\u5b9a\u3067\u304d\u308b\u3053\u3068\u304c\u89b3\u5bdf\u3067\u304d\u307e\u3059\u3002</p> <p>\u3057\u304b\u3057\u3001\u306a\u305c\u6b8b\u308a\u306e\u30d0\u30a4\u30c8\u306e\u6700\u4e0a\u4f4d2\u30d3\u30c3\u30c8\u3092\\(10\\)\u306b\u8a2d\u5b9a\u3059\u308b\u306e\u3067\u3057\u3087\u3046\u304b\uff1f\u5b9f\u969b\u3001\u3053\u306e\\(10\\)\u306f\u4e00\u7a2e\u306e\u30c1\u30a7\u30c3\u30af\u30b5\u30e0\u3068\u3057\u3066\u6a5f\u80fd\u3057\u307e\u3059\u3002\u30b7\u30b9\u30c6\u30e0\u304c\u9593\u9055\u3063\u305f\u30d0\u30a4\u30c8\u304b\u3089\u30c6\u30ad\u30b9\u30c8\u306e\u89e3\u6790\u3092\u958b\u59cb\u3057\u305f\u5834\u5408\u3001\u30d0\u30a4\u30c8\u306e\u5148\u982d\u306e\\(10\\)\u306b\u3088\u308a\u30b7\u30b9\u30c6\u30e0\u306f\u7570\u5e38\u3092\u8fc5\u901f\u306b\u691c\u51fa\u3067\u304d\u307e\u3059\u3002</p> <p>\\(10\\)\u3092\u30c1\u30a7\u30c3\u30af\u30b5\u30e0\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u7406\u7531\u306f\u3001UTF-8\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u898f\u5247\u306e\u4e0b\u3067\u306f\u3001\u6587\u5b57\u306e\u6700\u4e0a\u4f4d2\u30d3\u30c3\u30c8\u304c\\(10\\)\u306b\u306a\u308b\u3053\u3068\u306f\u4e0d\u53ef\u80fd\u3060\u304b\u3089\u3067\u3059\u3002\u3053\u308c\u306f\u77db\u76fe\u306b\u3088\u308a\u8a3c\u660e\u3067\u304d\u307e\u3059\uff1a\u6587\u5b57\u306e\u6700\u4e0a\u4f4d2\u30d3\u30c3\u30c8\u304c\\(10\\)\u306e\u5834\u5408\u3001\u6587\u5b57\u306e\u9577\u3055\u304c\\(1\\)\u3067\u3042\u308b\u3053\u3068\u3092\u793a\u3057\u3001\u3053\u308c\u306fASCII\u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002\u3057\u304b\u3057\u3001ASCII\u6587\u5b57\u306e\u6700\u4e0a\u4f4d\u30d3\u30c3\u30c8\u306f\\(0\\)\u3067\u3042\u308b\u3079\u304d\u3067\u3001\u3053\u308c\u306f\u4eee\u5b9a\u3068\u77db\u76fe\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 3-8 \u00a0 UTF-8\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u4f8b </p> <p>UTF-8\u4ee5\u5916\u306b\u3082\u3001\u4ed6\u306e\u4e00\u822c\u7684\u306a\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u65b9\u6cd5\u306b\u306f\u4ee5\u4e0b\u304c\u3042\u308a\u307e\u3059\uff1a</p> <ul> <li>UTF-16\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\uff1a2\u307e\u305f\u306f4\u30d0\u30a4\u30c8\u3092\u4f7f\u7528\u3057\u3066\u6587\u5b57\u3092\u8868\u73fe\u3057\u307e\u3059\u3002\u3059\u3079\u3066\u306eASCII\u6587\u5b57\u3068\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u975e\u82f1\u8a9e\u6587\u5b57\u306f2\u30d0\u30a4\u30c8\u3067\u8868\u73fe\u3055\u308c\u3001\u5c11\u6570\u306e\u6587\u5b57\u306f4\u30d0\u30a4\u30c8\u304c\u5fc5\u8981\u3067\u3059\u30022\u30d0\u30a4\u30c8\u6587\u5b57\u306e\u5834\u5408\u3001UTF-16\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u306fUnicode\u30b3\u30fc\u30c9\u30dd\u30a4\u30f3\u30c8\u3068\u7b49\u3057\u304f\u306a\u308a\u307e\u3059\u3002</li> <li>UTF-32\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\uff1a\u3059\u3079\u3066\u306e\u6587\u5b57\u304c4\u30d0\u30a4\u30c8\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001UTF-32\u304cUTF-8\u3084UTF-16\u3088\u308a\u3082\u591a\u304f\u306e\u7a7a\u9593\u3092\u5360\u6709\u3059\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u3001\u7279\u306bASCII\u6587\u5b57\u306e\u5272\u5408\u304c\u9ad8\u3044\u30c6\u30ad\u30b9\u30c8\u3067\u306f\u9855\u8457\u3067\u3059\u3002</li> </ul> <p>\u30b9\u30c8\u30ec\u30fc\u30b8\u7a7a\u9593\u306e\u89b3\u70b9\u304b\u3089\u3001UTF-8\u3092\u4f7f\u7528\u3057\u3066\u82f1\u8a9e\u6587\u5b57\u3092\u8868\u73fe\u3059\u308b\u3053\u3068\u306f1\u30d0\u30a4\u30c8\u306e\u307f\u304c\u5fc5\u8981\u306a\u305f\u3081\u975e\u5e38\u306b\u52b9\u7387\u7684\u3067\u3059\u3002UTF-16\u3092\u4f7f\u7528\u3057\u3066\u4e00\u90e8\u306e\u975e\u82f1\u8a9e\u6587\u5b57\uff08\u4e2d\u56fd\u8a9e\u306a\u3069\uff09\u3092\u30a8\u30f3\u30b3\u30fc\u30c9\u3059\u308b\u3053\u3068\u306f\u30012\u30d0\u30a4\u30c8\u306e\u307f\u304c\u5fc5\u8981\u306a\u305f\u3081\u3088\u308a\u52b9\u7387\u7684\u306b\u306a\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u4e00\u65b9\u3001UTF-8\u3067\u306f3\u30d0\u30a4\u30c8\u304c\u5fc5\u8981\u306b\u306a\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>\u4e92\u63db\u6027\u306e\u89b3\u70b9\u304b\u3089\u3001UTF-8\u306f\u6700\u3082\u6c4e\u7528\u6027\u304c\u3042\u308a\u3001\u591a\u304f\u306e\u30c4\u30fc\u30eb\u3068\u30e9\u30a4\u30d6\u30e9\u30ea\u304cUTF-8\u3092\u512a\u5148\u7684\u306b\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002</p>"},{"location":"chapter_data_structure/character_encoding/#345","title":"3.4.5 \u00a0 \u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306b\u304a\u3051\u308b\u6587\u5b57\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0","text":"<p>\u6b74\u53f2\u7684\u306b\u3001\u591a\u304f\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306f\u30d7\u30ed\u30b0\u30e9\u30e0\u5b9f\u884c\u4e2d\u306e\u6587\u5b57\u5217\u51e6\u7406\u306bUTF-16\u3084UTF-32\u306a\u3069\u306e\u56fa\u5b9a\u9577\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3092\u5229\u7528\u3057\u3066\u3044\u307e\u3057\u305f\u3002\u3053\u308c\u306b\u3088\u308a\u6587\u5b57\u5217\u3092\u914d\u5217\u3068\u3057\u3066\u51e6\u7406\u3067\u304d\u3001\u3044\u304f\u3064\u304b\u306e\u5229\u70b9\u304c\u3042\u308a\u307e\u3059\uff1a</p> <ul> <li>\u30e9\u30f3\u30c0\u30e0\u30a2\u30af\u30bb\u30b9\uff1aUTF-16\u3067\u30a8\u30f3\u30b3\u30fc\u30c9\u3055\u308c\u305f\u6587\u5b57\u5217\u306f\u7c21\u5358\u306b\u30e9\u30f3\u30c0\u30e0\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002\u53ef\u5909\u9577\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3067\u3042\u308bUTF-8\u306e\u5834\u5408\u3001\\(i^{th}\\)\u6587\u5b57\u306e\u4f4d\u7f6e\u3092\u7279\u5b9a\u3059\u308b\u306b\u306f\u6587\u5b57\u5217\u306e\u958b\u59cb\u304b\u3089\\(i^{th}\\)\u4f4d\u7f6e\u307e\u3067\u8d70\u67fb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\\(O(n)\\)\u6642\u9593\u304c\u304b\u304b\u308a\u307e\u3059\u3002</li> <li>\u6587\u5b57\u6570\u30ab\u30a6\u30f3\u30c8\uff1a\u30e9\u30f3\u30c0\u30e0\u30a2\u30af\u30bb\u30b9\u3068\u540c\u69d8\u306b\u3001UTF-16\u3067\u30a8\u30f3\u30b3\u30fc\u30c9\u3055\u308c\u305f\u6587\u5b57\u5217\u306e\u6587\u5b57\u6570\u3092\u30ab\u30a6\u30f3\u30c8\u3059\u308b\u3053\u3068\u306f\\(O(1)\\)\u64cd\u4f5c\u3067\u3059\u3002\u3057\u304b\u3057\u3001UTF-8\u3067\u30a8\u30f3\u30b3\u30fc\u30c9\u3055\u308c\u305f\u6587\u5b57\u5217\u306e\u6587\u5b57\u6570\u3092\u30ab\u30a6\u30f3\u30c8\u3059\u308b\u306b\u306f\u6587\u5b57\u5217\u5168\u4f53\u3092\u8d70\u67fb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u6587\u5b57\u5217\u64cd\u4f5c\uff1a\u5206\u5272\u3001\u9023\u7d50\u3001\u633f\u5165\u3001\u524a\u9664\u306a\u3069\u306e\u591a\u304f\u306e\u6587\u5b57\u5217\u64cd\u4f5c\u306f\u3001UTF-16\u3067\u30a8\u30f3\u30b3\u30fc\u30c9\u3055\u308c\u305f\u6587\u5b57\u5217\u3067\u7c21\u5358\u3067\u3059\u3002\u3053\u308c\u3089\u306e\u64cd\u4f5c\u306f\u4e00\u822c\u7684\u306b\u3001UTF-8\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u306e\u6709\u52b9\u6027\u3092\u78ba\u4fdd\u3059\u308b\u305f\u3081\u306bUTF-8\u3067\u30a8\u30f3\u30b3\u30fc\u30c9\u3055\u308c\u305f\u6587\u5b57\u5217\u3067\u8ffd\u52a0\u306e\u8a08\u7b97\u304c\u5fc5\u8981\u3067\u3059\u3002</li> </ul> <p>\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306b\u304a\u3051\u308b\u6587\u5b57\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u30b9\u30ad\u30fc\u30e0\u306e\u8a2d\u8a08\u306f\u3001\u69d8\u3005\u306a\u8981\u56e0\u3092\u542b\u3080\u8208\u5473\u6df1\u3044\u30c8\u30d4\u30c3\u30af\u3067\u3059\uff1a</p> <ul> <li>Java\u306e<code>String</code>\u578b\u306fUTF-16\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3092\u4f7f\u7528\u3057\u3001\u5404\u6587\u5b57\u304c2\u30d0\u30a4\u30c8\u3092\u5360\u6709\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u300116\u30d3\u30c3\u30c8\u304c\u3059\u3079\u3066\u306e\u53ef\u80fd\u306a\u6587\u5b57\u3092\u8868\u73fe\u3059\u308b\u306e\u306b\u5341\u5206\u3067\u3042\u308b\u3068\u3044\u3046\u521d\u671f\u306e\u4fe1\u5ff5\u306b\u57fa\u3065\u3044\u3066\u304a\u308a\u3001\u5f8c\u306b\u9593\u9055\u3044\u3067\u3042\u308b\u3053\u3068\u304c\u8a3c\u660e\u3055\u308c\u307e\u3057\u305f\u3002Unicode\u6a19\u6e96\u304c16\u30d3\u30c3\u30c8\u3092\u8d85\u3048\u3066\u62e1\u5f35\u3055\u308c\u308b\u3068\u3001Java\u306e\u6587\u5b57\u306f\u300c\u30b5\u30ed\u30b2\u30fc\u30c8\u30da\u30a2\u300d\u3068\u3057\u3066\u77e5\u3089\u308c\u308b16\u30d3\u30c3\u30c8\u5024\u306e\u30da\u30a2\u3067\u8868\u73fe\u3055\u308c\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>JavaScript\u3068TypeScript\u306f\u3001Java\u3068\u540c\u69d8\u306e\u7406\u7531\u3067UTF-16\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002JavaScript\u304c1995\u5e74\u306bNetscape\u306b\u3088\u3063\u3066\u6700\u521d\u306b\u5c0e\u5165\u3055\u308c\u305f\u3068\u304d\u3001Unicode\u306f\u307e\u3060\u521d\u671f\u6bb5\u968e\u306b\u3042\u308a\u300116\u30d3\u30c3\u30c8\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u306f\u3059\u3079\u3066\u306eUnicode\u6587\u5b57\u3092\u8868\u73fe\u3059\u308b\u306e\u306b\u5341\u5206\u3067\u3057\u305f\u3002</li> <li>C#\u306fUTF-16\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3092\u4f7f\u7528\u3057\u3001\u3053\u308c\u306f\u4e3b\u306bMicrosoft\u306b\u3088\u3063\u3066\u8a2d\u8a08\u3055\u308c\u305f.NET\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3001\u304a\u3088\u3073\u591a\u304f\u306eMicrosoft\u6280\u8853\uff08Windows\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\u3092\u542b\u3080\uff09\u304cUTF-16\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3092\u5e83\u7bc4\u56f2\u306b\u4f7f\u7528\u3057\u3066\u3044\u308b\u305f\u3081\u3067\u3059\u3002</li> </ul> <p>\u6587\u5b57\u6570\u306e\u904e\u5c0f\u8a55\u4fa1\u306b\u3088\u308a\u3001\u3053\u308c\u3089\u306e\u8a00\u8a9e\u306f16\u30d3\u30c3\u30c8\u3092\u8d85\u3048\u308bUnicode\u6587\u5b57\u3092\u8868\u73fe\u3059\u308b\u305f\u3081\u306b\u300c\u30b5\u30ed\u30b2\u30fc\u30c8\u30da\u30a2\u300d\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3057\u305f\u3002\u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306b\u306f\u6b20\u70b9\u304c\u3042\u308a\u307e\u3059\uff1a\u30b5\u30ed\u30b2\u30fc\u30c8\u30da\u30a2\u3092\u542b\u3080\u6587\u5b57\u5217\u306f2\u30d0\u30a4\u30c8\u307e\u305f\u306f4\u30d0\u30a4\u30c8\u3092\u5360\u6709\u3059\u308b\u6587\u5b57\u3092\u6301\u3064\u5834\u5408\u304c\u3042\u308a\u3001\u56fa\u5b9a\u9577\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u306e\u5229\u70b9\u3092\u5931\u3044\u307e\u3059\u3002\u3055\u3089\u306b\u3001\u30b5\u30ed\u30b2\u30fc\u30c8\u30da\u30a2\u306e\u51e6\u7406\u306f\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306b\u8907\u96d1\u3055\u3068\u30c7\u30d0\u30c3\u30b0\u306e\u56f0\u96e3\u3055\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002</p> <p>\u3053\u308c\u3089\u306e\u8ab2\u984c\u306b\u5bfe\u51e6\u3059\u308b\u305f\u3081\u3001\u4e00\u90e8\u306e\u8a00\u8a9e\u306f\u4ee3\u66ff\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u6226\u7565\u3092\u63a1\u7528\u3057\u3066\u3044\u307e\u3059\uff1a</p> <ul> <li>Python\u306e<code>str</code>\u578b\u306f\u3001\u6587\u5b57\u306e\u30b9\u30c8\u30ec\u30fc\u30b8\u9577\u304c\u6587\u5b57\u5217\u5185\u306e\u6700\u5927\u306eUnicode\u30b3\u30fc\u30c9\u30dd\u30a4\u30f3\u30c8\u306b\u4f9d\u5b58\u3059\u308b\u67d4\u8edf\u306a\u8868\u73fe\u3067Unicode\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u3059\u3079\u3066\u306e\u6587\u5b57\u304cASCII\u306e\u5834\u5408\u3001\u5404\u6587\u5b57\u306f1\u30d0\u30a4\u30c8\u3092\u5360\u6709\u3057\u3001\u57fa\u672c\u591a\u8a00\u8a9e\u9762\uff08BMP\uff09\u5185\u306e\u6587\u5b57\u306f2\u30d0\u30a4\u30c8\u3001BMP\u3092\u8d85\u3048\u308b\u6587\u5b57\u306f4\u30d0\u30a4\u30c8\u3092\u5360\u6709\u3057\u307e\u3059\u3002</li> <li>Go\u306e<code>string</code>\u578b\u306f\u5185\u90e8\u7684\u306bUTF-8\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002Go\u306f\u500b\u5225\u306eUnicode\u30b3\u30fc\u30c9\u30dd\u30a4\u30f3\u30c8\u3092\u8868\u73fe\u3059\u308b\u305f\u3081\u306e<code>rune</code>\u578b\u3082\u63d0\u4f9b\u3057\u307e\u3059\u3002</li> <li>Rust\u306e<code>str</code>\u3068<code>String</code>\u578b\u306f\u5185\u90e8\u7684\u306bUTF-8\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002Rust\u306f\u500b\u5225\u306eUnicode\u30b3\u30fc\u30c9\u30dd\u30a4\u30f3\u30c8\u7528\u306e<code>char</code>\u578b\u3082\u63d0\u4f9b\u3057\u307e\u3059\u3002</li> </ul> <p>\u4e0a\u8a18\u306e\u8b70\u8ad6\u306f\u3001\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u306e\u6587\u5b57\u5217\u306e\u683c\u7d0d\u65b9\u6cd5\u306b\u95a2\u3059\u308b\u3082\u306e\u3067\u3042\u308a\u3001**\u30d5\u30a1\u30a4\u30eb\u3067\u306e\u6587\u5b57\u5217\u306e\u683c\u7d0d\u65b9\u6cd5\u3084\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u4e0a\u3067\u306e\u9001\u4fe1\u65b9\u6cd5\u3068\u306f\u7570\u306a\u308b**\u3053\u3068\u306b\u6ce8\u610f\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002\u30d5\u30a1\u30a4\u30eb\u30b9\u30c8\u30ec\u30fc\u30b8\u3084\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u9001\u4fe1\u3067\u306f\u3001\u6587\u5b57\u5217\u306f\u901a\u5e38\u3001\u6700\u9069\u306a\u4e92\u63db\u6027\u3068\u7a7a\u9593\u52b9\u7387\u306e\u305f\u3081\u306bUTF-8\u5f62\u5f0f\u3067\u30a8\u30f3\u30b3\u30fc\u30c9\u3055\u308c\u307e\u3059\u3002</p>"},{"location":"chapter_data_structure/classification_of_data_structure/","title":"3.1 \u00a0 \u30c7\u30fc\u30bf\u69cb\u9020\u306e\u5206\u985e","text":"<p>\u4e00\u822c\u7684\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u306b\u306f\u3001\u914d\u5217\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u3001\u30b9\u30bf\u30c3\u30af\u3001\u30ad\u30e5\u30fc\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u3001\u6728\u3001\u30d2\u30fc\u30d7\u3001\u30b0\u30e9\u30d5\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u3089\u306f\u300c\u8ad6\u7406\u69cb\u9020\u300d\u3068\u300c\u7269\u7406\u69cb\u9020\u300d\u306b\u5206\u985e\u3067\u304d\u307e\u3059\u3002</p>"},{"location":"chapter_data_structure/classification_of_data_structure/#311","title":"3.1.1 \u00a0 \u8ad6\u7406\u69cb\u9020\uff1a\u7dda\u5f62\u3068\u975e\u7dda\u5f62","text":"<p>\u8ad6\u7406\u69cb\u9020\u306f\u30c7\u30fc\u30bf\u8981\u7d20\u9593\u306e\u8ad6\u7406\u7684\u95a2\u4fc2\u3092\u660e\u3089\u304b\u306b\u3057\u307e\u3059\u3002\u914d\u5217\u3068\u9023\u7d50\u30ea\u30b9\u30c8\u3067\u306f\u3001\u30c7\u30fc\u30bf\u306f\u7279\u5b9a\u306e\u9806\u5e8f\u3067\u914d\u7f6e\u3055\u308c\u3001\u30c7\u30fc\u30bf\u9593\u306e\u7dda\u5f62\u95a2\u4fc2\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u4e00\u65b9\u3001\u6728\u3067\u306f\u3001\u30c7\u30fc\u30bf\u306f\u4e0a\u304b\u3089\u4e0b\u3078\u968e\u5c64\u7684\u306b\u914d\u7f6e\u3055\u308c\u3001\u300c\u7956\u5148\u300d\u3068\u300c\u5b50\u5b6b\u300d\u9593\u306e\u6d3e\u751f\u95a2\u4fc2\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u305d\u3057\u3066\u3001\u30b0\u30e9\u30d5\u306f\u30ce\u30fc\u30c9\u3068\u30a8\u30c3\u30b8\u304b\u3089\u69cb\u6210\u3055\u308c\u3001\u8907\u96d1\u306a\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u95a2\u4fc2\u3092\u53cd\u6620\u3057\u3066\u3044\u307e\u3059\u3002</p> <p>\u4e0b\u56f3\u306b\u793a\u3055\u308c\u3066\u3044\u308b\u3088\u3046\u306b\u3001\u8ad6\u7406\u69cb\u9020\u306f\u300c\u7dda\u5f62\u300d\u3068\u300c\u975e\u7dda\u5f62\u300d\u306e2\u3064\u306e\u4e3b\u8981\u30ab\u30c6\u30b4\u30ea\u306b\u5206\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u7dda\u5f62\u69cb\u9020\u306f\u3088\u308a\u76f4\u611f\u7684\u3067\u3001\u30c7\u30fc\u30bf\u304c\u8ad6\u7406\u95a2\u4fc2\u306b\u304a\u3044\u3066\u7dda\u5f62\u306b\u914d\u7f6e\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u975e\u7dda\u5f62\u69cb\u9020\u306f\u3001\u9006\u306b\u975e\u7dda\u5f62\u306b\u914d\u7f6e\u3055\u308c\u3066\u3044\u307e\u3059\u3002</p> <ul> <li>\u7dda\u5f62\u30c7\u30fc\u30bf\u69cb\u9020\uff1a\u914d\u5217\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u3001\u30b9\u30bf\u30c3\u30af\u3001\u30ad\u30e5\u30fc\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u3002\u8981\u7d20\u304c\u4e00\u5bfe\u4e00\u306e\u9806\u6b21\u95a2\u4fc2\u3092\u6301\u3061\u307e\u3059\u3002</li> <li>\u975e\u7dda\u5f62\u30c7\u30fc\u30bf\u69cb\u9020\uff1a\u6728\u3001\u30d2\u30fc\u30d7\u3001\u30b0\u30e9\u30d5\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u3002</li> </ul> <p>\u975e\u7dda\u5f62\u30c7\u30fc\u30bf\u69cb\u9020\u306f\u3001\u3055\u3089\u306b\u6728\u69cb\u9020\u3068\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u69cb\u9020\u306b\u5206\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</p> <ul> <li>\u6728\u69cb\u9020\uff1a\u6728\u3001\u30d2\u30fc\u30d7\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u3002\u8981\u7d20\u304c\u4e00\u5bfe\u591a\u306e\u95a2\u4fc2\u3092\u6301\u3061\u307e\u3059\u3002</li> <li>\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u69cb\u9020\uff1a\u30b0\u30e9\u30d5\u3002\u8981\u7d20\u304c\u591a\u5bfe\u591a\u306e\u95a2\u4fc2\u3092\u6301\u3061\u307e\u3059\u3002</li> </ul> <p></p> <p> \u56f3 3-1 \u00a0 Linear and non-linear data structures </p>"},{"location":"chapter_data_structure/classification_of_data_structure/#312","title":"3.1.2 \u00a0 \u7269\u7406\u69cb\u9020\uff1a\u9023\u7d9a\u3068\u5206\u6563","text":"<p>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5b9f\u884c\u4e2d\u3001\u51e6\u7406\u3055\u308c\u308b\u30c7\u30fc\u30bf\u306f\u30e1\u30e2\u30ea\u306b\u683c\u7d0d\u3055\u308c\u307e\u3059\u3002\u4e0b\u56f3\u306f\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u306e\u30e1\u30e2\u30ea\u30b9\u30c6\u30a3\u30c3\u30af\u3092\u793a\u3057\u3066\u304a\u308a\u3001\u5404\u9ed2\u3044\u6b63\u65b9\u5f62\u306f\u7269\u7406\u30e1\u30e2\u30ea\u7a7a\u9593\u3067\u3059\u3002\u30e1\u30e2\u30ea\u3092\u5de8\u5927\u306aExcel\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u3068\u8003\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u5404\u30bb\u30eb\u306f\u4e00\u5b9a\u91cf\u306e\u30c7\u30fc\u30bf\u3092\u683c\u7d0d\u3067\u304d\u307e\u3059\u3002</p> <p>\u30b7\u30b9\u30c6\u30e0\u306f\u30e1\u30e2\u30ea\u30a2\u30c9\u30ec\u30b9\u306b\u3088\u3063\u3066\u76ee\u6a19\u4f4d\u7f6e\u306e\u30c7\u30fc\u30bf\u306b\u30a2\u30af\u30bb\u30b9\u3057\u307e\u3059\u3002\u4e0b\u56f3\u306b\u793a\u3055\u308c\u3066\u3044\u308b\u3088\u3046\u306b\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u306f\u7279\u5b9a\u306e\u30eb\u30fc\u30eb\u306b\u5f93\u3063\u3066\u8868\u306e\u5404\u30bb\u30eb\u306b\u4e00\u610f\u306e\u8b58\u5225\u5b50\u3092\u5272\u308a\u5f53\u3066\u3001\u5404\u30e1\u30e2\u30ea\u7a7a\u9593\u304c\u4e00\u610f\u306e\u30e1\u30e2\u30ea\u30a2\u30c9\u30ec\u30b9\u3092\u6301\u3064\u3053\u3068\u3092\u4fdd\u8a3c\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30a2\u30c9\u30ec\u30b9\u306b\u3088\u308a\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u306f\u30e1\u30e2\u30ea\u306b\u683c\u7d0d\u3055\u308c\u305f\u30c7\u30fc\u30bf\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002</p> <p></p> <p> \u56f3 3-2 \u00a0 Memory stick, memory spaces, memory addresses </p> <p>Tip</p> <p>\u30e1\u30e2\u30ea\u3092Excel\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u306b\u6bd4\u8f03\u3059\u308b\u3053\u3068\u306f\u7c21\u7565\u5316\u3055\u308c\u305f\u985e\u63a8\u3067\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30e1\u30e2\u30ea\u306e\u5b9f\u969b\u306e\u52d5\u4f5c\u30e1\u30ab\u30cb\u30ba\u30e0\u306f\u3088\u308a\u8907\u96d1\u3067\u3001\u30a2\u30c9\u30ec\u30b9\u7a7a\u9593\u3001\u30e1\u30e2\u30ea\u7ba1\u7406\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u30e1\u30ab\u30cb\u30ba\u30e0\u3001\u4eee\u60f3\u30e1\u30e2\u30ea\u3001\u7269\u7406\u30e1\u30e2\u30ea\u306a\u3069\u306e\u6982\u5ff5\u304c\u95a2\u4fc2\u3057\u3066\u3044\u307e\u3059\u3002</p> <p>\u30e1\u30e2\u30ea\u306f\u3059\u3079\u3066\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u5171\u6709\u30ea\u30bd\u30fc\u30b9\u3067\u3059\u3002\u3042\u308b\u30e1\u30e2\u30ea\u30d6\u30ed\u30c3\u30af\u304c1\u3064\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u306b\u3088\u3063\u3066\u5360\u6709\u3055\u308c\u308b\u3068\u3001\u4ed6\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u304c\u540c\u6642\u306b\u4f7f\u7528\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30e1\u30e2\u30ea\u30ea\u30bd\u30fc\u30b9\u306f\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u8a2d\u8a08\u306b\u304a\u3051\u308b\u91cd\u8981\u306a\u8003\u616e\u4e8b\u9805\u3067\u3059\u3002\u4f8b\u3048\u3070\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u30d4\u30fc\u30af\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306f\u3001\u30b7\u30b9\u30c6\u30e0\u306e\u6b8b\u308a\u7a7a\u304d\u30e1\u30e2\u30ea\u3092\u8d85\u3048\u3066\u306f\u3044\u3051\u307e\u305b\u3093\u3002\u9023\u7d9a\u3057\u305f\u30e1\u30e2\u30ea\u30d6\u30ed\u30c3\u30af\u304c\u4e0d\u8db3\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u975e\u9023\u7d9a\u30e1\u30e2\u30ea\u30d6\u30ed\u30c3\u30af\u306b\u683c\u7d0d\u3067\u304d\u308b\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>\u4e0b\u56f3\u306b\u793a\u3055\u308c\u3066\u3044\u308b\u3088\u3046\u306b\u3001\u7269\u7406\u69cb\u9020\u306f\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30e1\u30e2\u30ea\u306b\u304a\u3051\u308b\u30c7\u30fc\u30bf\u306e\u683c\u7d0d\u65b9\u6cd5\u3092\u53cd\u6620\u3057\u3001\u9023\u7d9a\u7a7a\u9593\u683c\u7d0d\uff08\u914d\u5217\uff09\u3068\u975e\u9023\u7d9a\u7a7a\u9593\u683c\u7d0d\uff08\u9023\u7d50\u30ea\u30b9\u30c8\uff09\u306b\u5206\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u30022\u3064\u306e\u30bf\u30a4\u30d7\u306e\u7269\u7406\u69cb\u9020\u306f\u3001\u6642\u9593\u52b9\u7387\u3068\u7a7a\u9593\u52b9\u7387\u306e\u89b3\u70b9\u3067\u88dc\u5b8c\u7684\u306a\u7279\u6027\u3092\u793a\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 3-3 \u00a0 Contiguous space storage and dispersed space storage </p> <p>\u3059\u3079\u3066\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u306f\u914d\u5217\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u3001\u307e\u305f\u306f\u305d\u306e\u7d44\u307f\u5408\u308f\u305b\u306b\u57fa\u3065\u3044\u3066\u5b9f\u88c5\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4f8b\u3048\u3070\u3001\u30b9\u30bf\u30c3\u30af\u3068\u30ad\u30e5\u30fc\u306f\u914d\u5217\u307e\u305f\u306f\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u3069\u3061\u3089\u3067\u3082\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u5b9f\u88c5\u306b\u306f\u914d\u5217\u3068\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u4e21\u65b9\u304c\u95a2\u4fc2\u3059\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002</p> <ul> <li>\u914d\u5217\u30d9\u30fc\u30b9\u306e\u5b9f\u88c5\uff1a\u30b9\u30bf\u30c3\u30af\u3001\u30ad\u30e5\u30fc\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u3001\u6728\u3001\u30d2\u30fc\u30d7\u3001\u30b0\u30e9\u30d5\u3001\u884c\u5217\u3001\u30c6\u30f3\u30bd\u30eb\uff08\u6b21\u5143\\(\\geq 3\\)\u306e\u914d\u5217\uff09\u3002</li> <li>\u9023\u7d50\u30ea\u30b9\u30c8\u30d9\u30fc\u30b9\u306e\u5b9f\u88c5\uff1a\u30b9\u30bf\u30c3\u30af\u3001\u30ad\u30e5\u30fc\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u3001\u6728\u3001\u30d2\u30fc\u30d7\u3001\u30b0\u30e9\u30d5\u306a\u3069\u3002</li> </ul> <p>\u914d\u5217\u306b\u57fa\u3065\u3044\u3066\u5b9f\u88c5\u3055\u308c\u305f\u30c7\u30fc\u30bf\u69cb\u9020\u306f\u300c\u9759\u7684\u30c7\u30fc\u30bf\u69cb\u9020\u300d\u3068\u3082\u547c\u3070\u308c\u3001\u521d\u671f\u5316\u5f8c\u306b\u9577\u3055\u3092\u5909\u66f4\u3067\u304d\u306a\u3044\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u9006\u306b\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306b\u57fa\u3065\u3044\u305f\u3082\u306e\u306f\u300c\u52d5\u7684\u30c7\u30fc\u30bf\u69cb\u9020\u300d\u3068\u547c\u3070\u308c\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u5b9f\u884c\u4e2d\u306b\u30b5\u30a4\u30ba\u3092\u8abf\u6574\u3067\u304d\u307e\u3059\u3002</p> <p>Tip</p> <p>\u7269\u7406\u69cb\u9020\u3092\u7406\u89e3\u3059\u308b\u306e\u304c\u56f0\u96e3\u306a\u5834\u5408\u306f\u3001\u6b21\u306e\u7ae0\u300c\u914d\u5217\u3068\u9023\u7d50\u30ea\u30b9\u30c8\u300d\u3092\u8aad\u3093\u3067\u304b\u3089\u3001\u3053\u306e\u7bc0\u306b\u623b\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_data_structure/number_encoding/","title":"3.3 \u00a0 \u6570\u5024\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0 *","text":"<p>Tip</p> <p>\u672c\u66f8\u3067\u306f\u3001\u30a2\u30b9\u30bf\u30ea\u30b9\u30af\u300c*\u300d\u304c\u4ed8\u3044\u305f\u7ae0\u306f\u4efb\u610f\u8aad\u66f8\u3067\u3059\u3002\u6642\u9593\u304c\u4e0d\u8db3\u3057\u3066\u3044\u308b\u5834\u5408\u3084\u96e3\u3057\u3044\u3068\u611f\u3058\u308b\u5834\u5408\u306f\u3001\u6700\u521d\u306f\u3053\u308c\u3089\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u3066\u3001\u5fc5\u9808\u306e\u7ae0\u3092\u5b8c\u4e86\u3057\u305f\u5f8c\u306b\u623b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</p>"},{"location":"chapter_data_structure/number_encoding/#331","title":"3.3.1 \u00a0 \u6574\u6570\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0","text":"<p>\u524d\u306e\u7bc0\u306e\u8868\u3067\u3001\u3059\u3079\u3066\u306e\u6574\u6570\u578b\u306f\u6b63\u306e\u6570\u3088\u308a\u30821\u3064\u591a\u3044\u8ca0\u306e\u6570\u3092\u8868\u73fe\u3067\u304d\u308b\u3053\u3068\u3092\u89b3\u5bdf\u3057\u307e\u3057\u305f\u3002\u4f8b\u3048\u3070\u3001<code>byte</code>\u306e\u7bc4\u56f2\u306f\\([-128, 127]\\)\u3067\u3059\u3002\u3053\u306e\u73fe\u8c61\u306f\u76f4\u611f\u306b\u53cd\u3059\u308b\u3088\u3046\u306b\u898b\u3048\u3001\u305d\u306e\u6839\u672c\u7684\u306a\u7406\u7531\u306b\u306f\u7b26\u53f7\u7d76\u5bfe\u5024\u30011\u306e\u88dc\u6570\u30012\u306e\u88dc\u6570\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u306e\u77e5\u8b58\u304c\u95a2\u4e0e\u3057\u3066\u3044\u307e\u3059\u3002</p> <p>\u307e\u305a\u91cd\u8981\u306a\u3053\u3068\u306f\u3001**\u6570\u5024\u306f\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u5185\u30672\u306e\u88dc\u6570\u5f62\u5f0f\u3067\u683c\u7d0d\u3055\u308c\u308b**\u3068\u3044\u3046\u3053\u3068\u3067\u3059\u3002\u306a\u305c\u305d\u3046\u306a\u306e\u304b\u3092\u5206\u6790\u3059\u308b\u524d\u306b\u3001\u3053\u308c\u30893\u3064\u306e\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u65b9\u6cd5\u3092\u5b9a\u7fa9\u3057\u307e\u3057\u3087\u3046\uff1a</p> <ul> <li>\u7b26\u53f7\u7d76\u5bfe\u5024\uff1a\u6570\u5024\u306e\u4e8c\u9032\u8868\u73fe\u306e\u6700\u4e0a\u4f4d\u30d3\u30c3\u30c8\u3092\u7b26\u53f7\u30d3\u30c3\u30c8\u3068\u3057\u3001\\(0\\)\u306f\u6b63\u306e\u6570\u3001\\(1\\)\u306f\u8ca0\u306e\u6570\u3092\u8868\u3057\u307e\u3059\u3002\u6b8b\u308a\u306e\u30d3\u30c3\u30c8\u306f\u6570\u5024\u306e\u5024\u3092\u8868\u3057\u307e\u3059\u3002</li> <li>1\u306e\u88dc\u6570\uff1a\u6b63\u306e\u6570\u306e1\u306e\u88dc\u6570\u306f\u7b26\u53f7\u7d76\u5bfe\u5024\u3068\u540c\u3058\u3067\u3059\u3002\u8ca0\u306e\u6570\u306e\u5834\u5408\u3001\u7b26\u53f7\u30d3\u30c3\u30c8\u4ee5\u5916\u306e\u3059\u3079\u3066\u306e\u30d3\u30c3\u30c8\u3092\u53cd\u8ee2\u3057\u3066\u5f97\u3089\u308c\u307e\u3059\u3002</li> <li>2\u306e\u88dc\u6570\uff1a\u6b63\u306e\u6570\u306e2\u306e\u88dc\u6570\u306f\u7b26\u53f7\u7d76\u5bfe\u5024\u3068\u540c\u3058\u3067\u3059\u3002\u8ca0\u306e\u6570\u306e\u5834\u5408\u3001\u305d\u306e1\u306e\u88dc\u6570\u306b\\(1\\)\u3092\u52a0\u3048\u3066\u5f97\u3089\u308c\u307e\u3059\u3002</li> </ul> <p>\u4ee5\u4e0b\u306e\u56f3\u306f\u3001\u7b26\u53f7\u7d76\u5bfe\u5024\u30011\u306e\u88dc\u6570\u30012\u306e\u88dc\u6570\u9593\u306e\u5909\u63db\u3092\u793a\u3057\u3066\u3044\u307e\u3059\uff1a</p> <p></p> <p> \u56f3 3-4 \u00a0 \u7b26\u53f7\u7d76\u5bfe\u5024\u30011\u306e\u88dc\u6570\u30012\u306e\u88dc\u6570\u9593\u306e\u5909\u63db </p> <p>\u7b26\u53f7\u7d76\u5bfe\u5024\u306f\u6700\u3082\u76f4\u611f\u7684\u3067\u3059\u304c\u3001\u5236\u9650\u304c\u3042\u308a\u307e\u3059\u3002\u4e00\u3064\u306b\u306f\u3001\u7b26\u53f7\u7d76\u5bfe\u5024\u306e\u8ca0\u306e\u6570\u306f\u8a08\u7b97\u3067\u76f4\u63a5\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002\u4f8b\u3048\u3070\u3001\u7b26\u53f7\u7d76\u5bfe\u5024\u3067\\(1 + (-2)\\)\u3092\u8a08\u7b97\u3059\u308b\u3068\\(-3\\)\u306b\u306a\u308a\u3001\u3053\u308c\u306f\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002</p> \\[ \\begin{aligned} &amp; 1 + (-2) \\newline &amp; \\rightarrow 0000 \\; 0001 + 1000 \\; 0010 \\newline &amp; = 1000 \\; 0011 \\newline &amp; \\rightarrow -3 \\end{aligned} \\] <p>\u3053\u306e\u554f\u984c\u306b\u5bfe\u51e6\u3059\u308b\u305f\u3081\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u306f1\u306e\u88dc\u6570\u3092\u5c0e\u5165\u3057\u307e\u3057\u305f\u30021\u306e\u88dc\u6570\u306b\u5909\u63db\u3057\u3066\\(1 + (-2)\\)\u3092\u8a08\u7b97\u3057\u3001\u7d50\u679c\u3092\u7b26\u53f7\u7d76\u5bfe\u5024\u306b\u623b\u3059\u3068\u3001\u6b63\u3057\u3044\u7d50\u679c\\(-1\\)\u304c\u5f97\u3089\u308c\u307e\u3059\u3002</p> \\[ \\begin{aligned} &amp; 1 + (-2) \\newline &amp; \\rightarrow 0000 \\; 0001 \\; \\text{(\u7b26\u53f7\u7d76\u5bfe\u5024)} + 1000 \\; 0010 \\; \\text{(\u7b26\u53f7\u7d76\u5bfe\u5024)} \\newline &amp; = 0000 \\; 0001 \\; \\text{(1\u306e\u88dc\u6570)} + 1111 \\; 1101 \\; \\text{(1\u306e\u88dc\u6570)} \\newline &amp; = 1111 \\; 1110 \\; \\text{(1\u306e\u88dc\u6570)} \\newline &amp; = 1000 \\; 0001 \\; \\text{(\u7b26\u53f7\u7d76\u5bfe\u5024)} \\newline &amp; \\rightarrow -1 \\end{aligned} \\] <p>\u307e\u305f\u3001\u7b26\u53f7\u7d76\u5bfe\u5024\u3067\u306f0\u306b2\u3064\u306e\u8868\u73fe\u304c\u3042\u308a\u307e\u3059\uff1a\\(+0\\)\u3068\\(-0\\)\u3067\u3059\u3002\u3053\u308c\u306f0\u306b\u5bfe\u3057\u30662\u3064\u306e\u7570\u306a\u308b\u4e8c\u9032\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u304c\u3042\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u3001\u66d6\u6627\u3055\u3092\u5f15\u304d\u8d77\u3053\u3059\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u6761\u4ef6\u30c1\u30a7\u30c3\u30af\u3067\u6b63\u3068\u8ca0\u306e0\u3092\u533a\u5225\u3057\u306a\u3044\u3068\u3001\u6b63\u3057\u304f\u306a\u3044\u7d50\u679c\u306b\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u66d6\u6627\u3055\u306b\u5bfe\u51e6\u3059\u308b\u306b\u306f\u8ffd\u52a0\u306e\u30c1\u30a7\u30c3\u30af\u304c\u5fc5\u8981\u3067\u3001\u8a08\u7b97\u52b9\u7387\u304c\u4f4e\u4e0b\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</p> \\[ \\begin{aligned} +0 &amp; \\rightarrow 0000 \\; 0000 \\newline -0 &amp; \\rightarrow 1000 \\; 0000 \\end{aligned} \\] <p>\u7b26\u53f7\u7d76\u5bfe\u5024\u3068\u540c\u69d8\u306b\u30011\u306e\u88dc\u6570\u3082\u6b63\u3068\u8ca0\u306e0\u306e\u66d6\u6627\u3055\u306b\u60a9\u307e\u3055\u308c\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u306f\u3055\u3089\u306b2\u306e\u88dc\u6570\u3092\u5c0e\u5165\u3057\u307e\u3057\u305f\u3002\u7b26\u53f7\u7d76\u5bfe\u5024\u30011\u306e\u88dc\u6570\u30012\u306e\u88dc\u6570\u306b\u304a\u3051\u308b\u8ca0\u306e0\u306e\u5909\u63db\u904e\u7a0b\u3092\u89b3\u5bdf\u3057\u3066\u307f\u307e\u3057\u3087\u3046\uff1a</p> \\[ \\begin{aligned} -0 \\rightarrow \\; &amp; 1000 \\; 0000 \\; \\text{(\u7b26\u53f7\u7d76\u5bfe\u5024)} \\newline = \\; &amp; 1111 \\; 1111 \\; \\text{(1\u306e\u88dc\u6570)} \\newline = 1 \\; &amp; 0000 \\; 0000 \\; \\text{(2\u306e\u88dc\u6570)} \\newline \\end{aligned} \\] <p>\u8ca0\u306e0\u306e1\u306e\u88dc\u6570\u306b\\(1\\)\u3092\u52a0\u3048\u308b\u3068\u6841\u4e0a\u304c\u308a\u304c\u767a\u751f\u3057\u307e\u3059\u304c\u3001<code>byte</code>\u306e\u9577\u3055\u306f8\u30d3\u30c3\u30c8\u306e\u307f\u306e\u305f\u3081\u30019\u756a\u76ee\u306e\u30d3\u30c3\u30c8\u3078\u306e\u6841\u4e0a\u304c\u308a\\(1\\)\u306f\u7834\u68c4\u3055\u308c\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001**\u8ca0\u306e0\u306e2\u306e\u88dc\u6570\u306f\\(0000 \\; 0000\\)**\u3067\u3001\u6b63\u306e0\u3068\u540c\u3058\u306b\u306a\u308a\u3001\u66d6\u6627\u3055\u304c\u89e3\u6c7a\u3055\u308c\u307e\u3059\u3002</p> <p>\u6700\u5f8c\u306e\u8b0e\u306f\u3001<code>byte</code>\u306e\\([-128, 127]\\)\u306e\u7bc4\u56f2\u3067\u3001\u8ffd\u52a0\u306e\u8ca0\u306e\u6570\\(-128\\)\u304c\u3042\u308b\u3053\u3068\u3067\u3059\u3002\\([-127, +127]\\)\u306e\u533a\u9593\u3067\u306f\u3001\u3059\u3079\u3066\u306e\u6574\u6570\u306b\u5bfe\u5fdc\u3059\u308b\u7b26\u53f7\u7d76\u5bfe\u5024\u30011\u306e\u88dc\u6570\u30012\u306e\u88dc\u6570\u304c\u3042\u308a\u3001\u76f8\u4e92\u5909\u63db\u304c\u53ef\u80fd\u3067\u3042\u308b\u3053\u3068\u3092\u89b3\u5bdf\u3057\u307e\u3059\u3002</p> <p>\u3057\u304b\u3057\u30012\u306e\u88dc\u6570\\(1000 \\; 0000\\)\u306f\u5bfe\u5fdc\u3059\u308b\u7b26\u53f7\u7d76\u5bfe\u5024\u3092\u6301\u305f\u306a\u3044\u4f8b\u5916\u3067\u3059\u3002\u5909\u63db\u65b9\u6cd5\u306b\u3088\u308b\u3068\u3001\u305d\u306e\u7b26\u53f7\u7d76\u5bfe\u5024\u306f\\(0000 \\; 0000\\)\u3067\u30010\u3092\u793a\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u77db\u76fe\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u306a\u305c\u306a\u3089\u3001\u305d\u306e2\u306e\u88dc\u6570\u306f\u81ea\u5206\u81ea\u8eab\u3092\u8868\u3059\u3079\u304d\u3060\u304b\u3089\u3067\u3059\u3002\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u306f\u3001\u3053\u306e\u7279\u5225\u306a2\u306e\u88dc\u6570\\(1000 \\; 0000\\)\u3092\\(-128\\)\u3092\u8868\u3059\u3082\u306e\u3068\u3057\u3066\u6307\u5b9a\u3057\u3066\u3044\u307e\u3059\u3002\u5b9f\u969b\u30012\u306e\u88dc\u6570\u3067\u306e\\((-1) + (-127)\\)\u306e\u8a08\u7b97\u7d50\u679c\u306f\\(-128\\)\u306b\u306a\u308a\u307e\u3059\u3002</p> \\[ \\begin{aligned} &amp; (-127) + (-1) \\newline &amp; \\rightarrow 1111 \\; 1111 \\; \\text{(\u7b26\u53f7\u7d76\u5bfe\u5024)} + 1000 \\; 0001 \\; \\text{(\u7b26\u53f7\u7d76\u5bfe\u5024)} \\newline &amp; = 1000 \\; 0000 \\; \\text{(1\u306e\u88dc\u6570)} + 1111 \\; 1110 \\; \\text{(1\u306e\u88dc\u6570)} \\newline &amp; = 1000 \\; 0001 \\; \\text{(2\u306e\u88dc\u6570)} + 1111 \\; 1111 \\; \\text{(2\u306e\u88dc\u6570)} \\newline &amp; = 1000 \\; 0000 \\; \\text{(2\u306e\u88dc\u6570)} \\newline &amp; \\rightarrow -128 \\end{aligned} \\] <p>\u304a\u6c17\u3065\u304d\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3001\u3053\u308c\u3089\u306e\u8a08\u7b97\u306f\u3059\u3079\u3066\u52a0\u7b97\u3067\u3042\u308a\u3001\u91cd\u8981\u306a\u4e8b\u5b9f\u3092\u793a\u5506\u3057\u3066\u3044\u307e\u3059\uff1a\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u306e\u5185\u90e8\u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u56de\u8def\u306f\u4e3b\u306b\u52a0\u7b97\u6f14\u7b97\u3092\u4e2d\u5fc3\u306b\u8a2d\u8a08\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u52a0\u7b97\u304c\u4e57\u7b97\u3001\u9664\u7b97\u3001\u6e1b\u7b97\u306a\u3069\u306e\u4ed6\u306e\u6f14\u7b97\u3068\u6bd4\u8f03\u3057\u3066\u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u3067\u5b9f\u88c5\u3057\u3084\u3059\u304f\u3001\u4e26\u5217\u5316\u304c\u5bb9\u6613\u3067\u9ad8\u901f\u8a08\u7b97\u304c\u53ef\u80fd\u3060\u304b\u3089\u3067\u3059\u3002</p> <p>\u3053\u308c\u306f\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u304c\u52a0\u7b97\u306e\u307f\u3092\u5b9f\u884c\u3067\u304d\u308b\u3053\u3068\u3092\u610f\u5473\u3059\u308b\u3082\u306e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u52a0\u7b97\u3068\u57fa\u672c\u7684\u306a\u8ad6\u7406\u6f14\u7b97\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u306f\u69d8\u3005\u306a\u4ed6\u306e\u6570\u5b66\u6f14\u7b97\u3092\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u6e1b\u7b97\\(a - b\\)\u306f\\(a + (-b)\\)\u306b\u5909\u63db\u3067\u304d\u3001\u4e57\u7b97\u3068\u9664\u7b97\u306f\u8907\u6570\u306e\u52a0\u7b97\u307e\u305f\u306f\u6e1b\u7b97\u306b\u5909\u63db\u3067\u304d\u307e\u3059\u3002</p> <p>\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30672\u306e\u88dc\u6570\u3092\u4f7f\u7528\u3059\u308b\u7406\u7531\u3092\u307e\u3068\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff1a2\u306e\u88dc\u6570\u8868\u73fe\u306b\u3088\u308a\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u306f\u540c\u3058\u56de\u8def\u3068\u6f14\u7b97\u3092\u4f7f\u7528\u3057\u3066\u6b63\u3068\u8ca0\u306e\u6570\u306e\u52a0\u7b97\u3092\u51e6\u7406\u3067\u304d\u3001\u6e1b\u7b97\u7528\u306e\u7279\u5225\u306a\u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u56de\u8def\u306e\u5fc5\u8981\u6027\u3092\u6392\u9664\u3057\u3001\u6b63\u3068\u8ca0\u306e0\u306e\u66d6\u6627\u3055\u3092\u56de\u907f\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u8a2d\u8a08\u304c\u5927\u5e45\u306b\u7c21\u7d20\u5316\u3055\u308c\u3001\u8a08\u7b97\u52b9\u7387\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002</p> <p>2\u306e\u88dc\u6570\u306e\u8a2d\u8a08\u306f\u975e\u5e38\u306b\u5de7\u5999\u3067\u3001\u30b9\u30da\u30fc\u30b9\u306e\u5236\u7d04\u306b\u3088\u308a\u3001\u3053\u3053\u3067\u505c\u6b62\u3057\u307e\u3059\u3002\u8208\u5473\u306e\u3042\u308b\u8aad\u8005\u306f\u3055\u3089\u306b\u63a2\u6c42\u3059\u308b\u3053\u3068\u3092\u5968\u52b1\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_data_structure/number_encoding/#332","title":"3.3.2 \u00a0 \u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0","text":"<p>\u8208\u5473\u6df1\u3044\u3053\u3068\u306b\u6c17\u3065\u3044\u305f\u304b\u3082\u3057\u308c\u307e\u305b\u3093\uff1a\u540c\u30584\u30d0\u30a4\u30c8\u306e\u9577\u3055\u306b\u3082\u304b\u304b\u308f\u3089\u305a\u3001\u306a\u305c<code>float</code>\u306f<code>int</code>\u3068\u6bd4\u8f03\u3057\u3066\u306f\u308b\u304b\u306b\u5927\u304d\u3044\u5024\u306e\u7bc4\u56f2\u3092\u6301\u3064\u306e\u3067\u3057\u3087\u3046\u304b\uff1f\u3053\u308c\u306f\u76f4\u611f\u306b\u53cd\u3059\u308b\u3088\u3046\u306b\u898b\u3048\u307e\u3059\u3002<code>float</code>\u306f\u5206\u6570\u3092\u8868\u73fe\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u305f\u3081\u3001\u7bc4\u56f2\u304c\u7e2e\u5c0f\u3059\u308b\u3068\u4e88\u60f3\u3055\u308c\u308b\u304b\u3089\u3067\u3059\u3002</p> <p>\u5b9f\u969b\u3001\u3053\u308c\u306f\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\uff08<code>float</code>\uff09\u3067\u4f7f\u7528\u3055\u308c\u308b\u7570\u306a\u308b\u8868\u73fe\u65b9\u6cd5\u306b\u3088\u308b\u3082\u306e\u3067\u3059\u300232\u30d3\u30c3\u30c8\u306e\u4e8c\u9032\u6570\u3092\u6b21\u306e\u3088\u3046\u306b\u8003\u3048\u3066\u307f\u307e\u3057\u3087\u3046\uff1a</p> \\[ b_{31} b_{30} b_{29} \\ldots b_2 b_1 b_0 \\] <p>IEEE 754\u6a19\u6e96\u306b\u3088\u308b\u3068\u300132\u30d3\u30c3\u30c8\u306e<code>float</code>\u306f\u6b21\u306e3\u3064\u306e\u90e8\u5206\u3067\u69cb\u6210\u3055\u308c\u307e\u3059\uff1a</p> <ul> <li>\u7b26\u53f7\u30d3\u30c3\u30c8\\(\\mathrm{S}\\)\uff1a1\u30d3\u30c3\u30c8\u3092\u5360\u6709\u3057\u3001\\(b_{31}\\)\u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002</li> <li>\u6307\u6570\u30d3\u30c3\u30c8\\(\\mathrm{E}\\)\uff1a8\u30d3\u30c3\u30c8\u3092\u5360\u6709\u3057\u3001\\(b_{30} b_{29} \\ldots b_{23}\\)\u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002</li> <li>\u4eee\u6570\u30d3\u30c3\u30c8\\(\\mathrm{N}\\)\uff1a23\u30d3\u30c3\u30c8\u3092\u5360\u6709\u3057\u3001\\(b_{22} b_{21} \\ldots b_0\\)\u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002</li> </ul> <p>\u4e8c\u9032<code>float</code>\u6570\u306e\u5024\u306f\u6b21\u306e\u3088\u3046\u306b\u8a08\u7b97\u3055\u308c\u307e\u3059\uff1a</p> \\[ \\text{val} = (-1)^{b_{31}} \\times 2^{\\left(b_{30} b_{29} \\ldots b_{23}\\right)_2 - 127} \\times \\left(1 . b_{22} b_{21} \\ldots b_0\\right)_2 \\] <p>\u5341\u9032\u516c\u5f0f\u306b\u5909\u63db\u3059\u308b\u3068\u3001\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\uff1a</p> \\[ \\text{val} = (-1)^{\\mathrm{S}} \\times 2^{\\mathrm{E} - 127} \\times (1 + \\mathrm{N}) \\] <p>\u5404\u6210\u5206\u306e\u7bc4\u56f2\u306f\uff1a</p> \\[ \\begin{aligned} \\mathrm{S} \\in &amp; \\{ 0, 1\\}, \\quad \\mathrm{E} \\in \\{ 1, 2, \\dots, 254 \\} \\newline (1 + \\mathrm{N}) = &amp; (1 + \\sum_{i=1}^{23} b_{23-i} \\times 2^{-i}) \\subset [1, 2 - 2^{-23}] \\end{aligned} \\] <p></p> <p> \u56f3 3-5 \u00a0 IEEE 754\u6a19\u6e96\u3067\u306e\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\u306e\u8a08\u7b97\u4f8b </p> <p>\u4e0a\u306e\u56f3\u3092\u89b3\u5bdf\u3059\u308b\u3068\u3001\u4f8b\u306e\u30c7\u30fc\u30bf\\(\\mathrm{S} = 0\\)\u3001\\(\\mathrm{E} = 124\\)\u3001\\(\\mathrm{N} = 2^{-2} + 2^{-3} = 0.375\\)\u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\uff1a</p> \\[ \\text{val} = (-1)^0 \\times 2^{124 - 127} \\times (1 + 0.375) = 0.171875 \\] <p>\u3053\u308c\u3067\u6700\u521d\u306e\u8cea\u554f\u306b\u7b54\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff1a<code>float</code>\u306e\u8868\u73fe\u306b\u306f\u6307\u6570\u30d3\u30c3\u30c8\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u305f\u3081\u3001<code>int</code>\u3088\u308a\u3082\u306f\u308b\u304b\u306b\u5927\u304d\u3044\u7bc4\u56f2\u3092\u6301\u3061\u307e\u3059\u3002\u4e0a\u8a18\u306e\u8a08\u7b97\u306b\u57fa\u3065\u304f\u3068\u3001<code>float</code>\u3067\u8868\u73fe\u53ef\u80fd\u306a\u6700\u5927\u6b63\u306e\u6570\u306f\u7d04\\(2^{254 - 127} \\times (2 - 2^{-23}) \\approx 3.4 \\times 10^{38}\\)\u3067\u3001\u6700\u5c0f\u8ca0\u306e\u6570\u306f\u7b26\u53f7\u30d3\u30c3\u30c8\u3092\u5207\u308a\u66ff\u3048\u308b\u3053\u3068\u3067\u5f97\u3089\u308c\u307e\u3059\u3002</p> <p>\u3057\u304b\u3057\u3001<code>float</code>\u306e\u62e1\u5f35\u3055\u308c\u305f\u7bc4\u56f2\u306e\u30c8\u30ec\u30fc\u30c9\u30aa\u30d5\u306f\u7cbe\u5ea6\u306e\u72a0\u7272\u3067\u3059\u3002\u6574\u6570\u578b<code>int</code>\u306f32\u30d3\u30c3\u30c8\u3059\u3079\u3066\u3092\u6570\u5024\u8868\u73fe\u306b\u4f7f\u7528\u3057\u3001\u5024\u306f\u5747\u7b49\u306b\u5206\u5e03\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u6307\u6570\u30d3\u30c3\u30c8\u306e\u305f\u3081\u3001<code>float</code>\u306e\u5024\u304c\u5927\u304d\u3044\u307b\u3069\u3001\u96a3\u63a5\u3059\u308b\u6570\u5024\u9593\u306e\u5dee\u304c\u5927\u304d\u304f\u306a\u308a\u307e\u3059\u3002</p> <p>\u4ee5\u4e0b\u306e\u8868\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u6307\u6570\u30d3\u30c3\u30c8\\(\\mathrm{E} = 0\\)\u3068\\(\\mathrm{E} = 255\\)\u306f\u7279\u5225\u306a\u610f\u5473\u3092\u6301\u3061\u30010\u3001\u7121\u9650\u5927\u3001\\(\\mathrm{NaN}\\)\u306a\u3069\u3092\u8868\u73fe\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002</p> <p> \u8868 3-2 \u00a0 \u6307\u6570\u30d3\u30c3\u30c8\u306e\u610f\u5473 </p> \u6307\u6570\u30d3\u30c3\u30c8E \u4eee\u6570\u30d3\u30c3\u30c8\\(\\mathrm{N} = 0\\) \u4eee\u6570\u30d3\u30c3\u30c8\\(\\mathrm{N} \\ne 0\\) \u8a08\u7b97\u516c\u5f0f \\(0\\) \\(\\pm 0\\) \u975e\u6b63\u898f\u5316\u6570 \\((-1)^{\\mathrm{S}} \\times 2^{-126} \\times (0.\\mathrm{N})\\) \\(1, 2, \\dots, 254\\) \u6b63\u898f\u5316\u6570 \u6b63\u898f\u5316\u6570 \\((-1)^{\\mathrm{S}} \\times 2^{(\\mathrm{E} -127)} \\times (1.\\mathrm{N})\\) \\(255\\) \\(\\pm \\infty\\) \\(\\mathrm{NaN}\\) <p>\u975e\u6b63\u898f\u5316\u6570\u306f\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\u306e\u7cbe\u5ea6\u3092\u5927\u5e45\u306b\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u306f\u6ce8\u76ee\u306b\u5024\u3057\u307e\u3059\u3002\u6700\u5c0f\u306e\u6b63\u306e\u6b63\u898f\u5316\u6570\u306f\\(2^{-126}\\)\u3067\u3001\u6700\u5c0f\u306e\u6b63\u306e\u975e\u6b63\u898f\u5316\u6570\u306f\\(2^{-126} \\times 2^{-23}\\)\u3067\u3059\u3002</p> <p>\u500d\u7cbe\u5ea6<code>double</code>\u3082<code>float</code>\u3068\u540c\u69d8\u306e\u8868\u73fe\u65b9\u6cd5\u3092\u4f7f\u7528\u3057\u307e\u3059\u304c\u3001\u7c21\u6f54\u3055\u306e\u305f\u3081\u3053\u3053\u3067\u306f\u8a73\u8ff0\u3057\u307e\u305b\u3093\u3002</p>"},{"location":"chapter_data_structure/summary/","title":"3.5 \u00a0 \u307e\u3068\u3081","text":""},{"location":"chapter_data_structure/summary/#1","title":"1. \u00a0 \u91cd\u8981\u306a\u30dd\u30a4\u30f3\u30c8","text":"<ul> <li>\u30c7\u30fc\u30bf\u69cb\u9020\u306f\u8ad6\u7406\u69cb\u9020\u3068\u7269\u7406\u69cb\u9020\u306e2\u3064\u306e\u89b3\u70b9\u304b\u3089\u5206\u985e\u3067\u304d\u307e\u3059\u3002\u8ad6\u7406\u69cb\u9020\u306f\u30c7\u30fc\u30bf\u9593\u306e\u8ad6\u7406\u7684\u95a2\u4fc2\u3092\u8a18\u8ff0\u3057\u3001\u7269\u7406\u69cb\u9020\u306f\u30c7\u30fc\u30bf\u304c\u30e1\u30e2\u30ea\u306b\u3069\u306e\u3088\u3046\u306b\u683c\u7d0d\u3055\u308c\u308b\u304b\u3092\u8a18\u8ff0\u3057\u307e\u3059\u3002</li> <li>\u3088\u304f\u4f7f\u7528\u3055\u308c\u308b\u8ad6\u7406\u69cb\u9020\u306b\u306f\u3001\u7dda\u5f62\u69cb\u9020\u3001\u6728\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u304c\u3042\u308a\u307e\u3059\u3002\u901a\u5e38\u3001\u8ad6\u7406\u69cb\u9020\u306b\u57fa\u3065\u3044\u3066\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u7dda\u5f62\uff08\u914d\u5217\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u3001\u30b9\u30bf\u30c3\u30af\u3001\u30ad\u30e5\u30fc\uff09\u3068\u975e\u7dda\u5f62\uff08\u6728\u3001\u30b0\u30e9\u30d5\u3001\u30d2\u30fc\u30d7\uff09\u306b\u5206\u3051\u307e\u3059\u3002\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u5b9f\u88c5\u306f\u7dda\u5f62\u3068\u975e\u7dda\u5f62\u306e\u4e21\u65b9\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u542b\u3080\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u30d7\u30ed\u30b0\u30e9\u30e0\u304c\u5b9f\u884c\u4e2d\u306e\u969b\u3001\u30c7\u30fc\u30bf\u306f\u30e1\u30e2\u30ea\u306b\u683c\u7d0d\u3055\u308c\u307e\u3059\u3002\u5404\u30e1\u30e2\u30ea\u7a7a\u9593\u306b\u306f\u5bfe\u5fdc\u3059\u308b\u30a2\u30c9\u30ec\u30b9\u304c\u3042\u308a\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u306f\u3053\u308c\u3089\u306e\u30a2\u30c9\u30ec\u30b9\u3092\u901a\u3058\u3066\u30c7\u30fc\u30bf\u306b\u30a2\u30af\u30bb\u30b9\u3057\u307e\u3059\u3002</li> <li>\u7269\u7406\u69cb\u9020\u306f\u9023\u7d9a\u7a7a\u9593\u683c\u7d0d\uff08\u914d\u5217\uff09\u3068\u96e2\u6563\u7a7a\u9593\u683c\u7d0d\uff08\u9023\u7d50\u30ea\u30b9\u30c8\uff09\u306b\u5206\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3059\u3079\u3066\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u306f\u914d\u5217\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u3001\u307e\u305f\u306f\u305d\u306e\u4e21\u65b9\u306e\u7d44\u307f\u5408\u308f\u305b\u3092\u4f7f\u7528\u3057\u3066\u5b9f\u88c5\u3055\u308c\u307e\u3059\u3002</li> <li>\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u306e\u57fa\u672c\u30c7\u30fc\u30bf\u578b\u306b\u306f\u3001\u6574\u6570\uff08<code>byte</code>\u3001<code>short</code>\u3001<code>int</code>\u3001<code>long</code>\uff09\u3001\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\uff08<code>float</code>\u3001<code>double</code>\uff09\u3001\u6587\u5b57\uff08<code>char</code>\uff09\u3001\u30d6\u30fc\u30eb\u5024\uff08<code>bool</code>\uff09\u304c\u542b\u307e\u308c\u307e\u3059\u3002\u30c7\u30fc\u30bf\u578b\u306e\u5024\u306e\u7bc4\u56f2\u306f\u3001\u305d\u306e\u30b5\u30a4\u30ba\u3068\u8868\u73fe\u306b\u4f9d\u5b58\u3057\u307e\u3059\u3002</li> <li>\u7b26\u53f7\u7d76\u5bfe\u5024\u30011\u306e\u88dc\u6570\u30012\u306e\u88dc\u6570\u306f\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u3067\u6574\u6570\u3092\u30a8\u30f3\u30b3\u30fc\u30c9\u3059\u308b3\u3064\u306e\u65b9\u6cd5\u3067\u3042\u308a\u3001\u76f8\u4e92\u306b\u5909\u63db\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u7b26\u53f7\u7d76\u5bfe\u5024\u306e\u6700\u4e0a\u4f4d\u30d3\u30c3\u30c8\u306f\u7b26\u53f7\u30d3\u30c3\u30c8\u3067\u3001\u6b8b\u308a\u306e\u30d3\u30c3\u30c8\u306f\u6570\u5024\u306e\u5024\u3092\u8868\u3057\u307e\u3059\u3002</li> <li>\u6574\u6570\u306f\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30672\u306e\u88dc\u6570\u306b\u3088\u3063\u3066\u30a8\u30f3\u30b3\u30fc\u30c9\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u8868\u73fe\u306e\u5229\u70b9\u306b\u306f\u3001(i)\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u304c\u6b63\u3068\u8ca0\u306e\u6574\u6570\u306e\u52a0\u7b97\u3092\u7d71\u4e00\u3067\u304d\u308b\u3001(ii)\u6e1b\u7b97\u7528\u306e\u7279\u5225\u306a\u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u56de\u8def\u3092\u8a2d\u8a08\u3059\u308b\u5fc5\u8981\u304c\u306a\u3044\u3001(iii)\u6b63\u3068\u8ca0\u306e0\u306e\u66d6\u6627\u3055\u304c\u306a\u3044\u3001\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\u306e\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u306f\u30011\u3064\u306e\u7b26\u53f7\u30d3\u30c3\u30c8\u30018\u3064\u306e\u6307\u6570\u30d3\u30c3\u30c8\u300123\u306e\u4eee\u6570\u30d3\u30c3\u30c8\u3067\u69cb\u6210\u3055\u308c\u307e\u3059\u3002\u6307\u6570\u30d3\u30c3\u30c8\u306e\u305f\u3081\u3001\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\u306e\u7bc4\u56f2\u306f\u6574\u6570\u3088\u308a\u3082\u306f\u308b\u304b\u306b\u5927\u304d\u304f\u306a\u308a\u307e\u3059\u304c\u3001\u7cbe\u5ea6\u3092\u72a0\u7272\u306b\u3057\u307e\u3059\u3002</li> <li>ASCII\u306f\u6700\u521d\u671f\u306e\u82f1\u8a9e\u6587\u5b57\u30bb\u30c3\u30c8\u3067\u30011\u30d0\u30a4\u30c8\u306e\u9577\u3055\u3067\u8a08127\u6587\u5b57\u3067\u3059\u3002GBK\u306f\u4eba\u6c17\u306e\u3042\u308b\u4e2d\u56fd\u8a9e\u6587\u5b57\u30bb\u30c3\u30c8\u3067\u30012\u4e07\u6587\u5b57\u4ee5\u4e0a\u306e\u4e2d\u56fd\u8a9e\u6587\u5b57\u3092\u542b\u307f\u307e\u3059\u3002Unicode\u306f\u4e16\u754c\u306e\u69d8\u3005\u306a\u8a00\u8a9e\u306e\u6587\u5b57\u3092\u542b\u3080\u5b8c\u5168\u306a\u6587\u5b57\u30bb\u30c3\u30c8\u6a19\u6e96\u3092\u63d0\u4f9b\u3059\u308b\u3053\u3068\u3092\u76ee\u7684\u3068\u3057\u3001\u6587\u5b57\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u65b9\u6cd5\u306e\u4e0d\u4e00\u81f4\u306b\u3088\u308b\u6587\u5b57\u5316\u3051\u554f\u984c\u3092\u89e3\u6c7a\u3057\u307e\u3059\u3002</li> <li>UTF-8\u306f\u6700\u3082\u4eba\u6c17\u304c\u3042\u308a\u4e00\u822c\u7684\u306aUnicode\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u65b9\u6cd5\u3067\u3059\u3002\u3053\u308c\u306f\u53ef\u5909\u9577\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u65b9\u6cd5\u3067\u3001\u512a\u308c\u305f\u62e1\u5f35\u6027\u3068\u7a7a\u9593\u52b9\u7387\u3092\u6301\u3061\u307e\u3059\u3002UTF-16\u3068UTF-32\u306f\u56fa\u5b9a\u9577\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u65b9\u6cd5\u3067\u3059\u3002\u4e2d\u56fd\u8a9e\u6587\u5b57\u3092\u30a8\u30f3\u30b3\u30fc\u30c9\u3059\u308b\u969b\u3001UTF-16\u306fUTF-8\u3088\u308a\u3082\u5c11\u306a\u3044\u7a7a\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002Java\u3084C#\u306a\u3069\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067UTF-16\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_data_structure/summary/#2-q-a","title":"2. \u00a0 Q &amp; A","text":"<p>Q: \u306a\u305c\u30cf\u30c3\u30b7\u30e5\u8868\u306f\u7dda\u5f62\u3068\u975e\u7dda\u5f62\u306e\u4e21\u65b9\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u542b\u3080\u306e\u3067\u3059\u304b\uff1f</p> <p>\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u57fa\u790e\u69cb\u9020\u306f\u914d\u5217\u3067\u3059\u3002\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306b\u3001\u300c\u30c1\u30a7\u30a4\u30f3\u6cd5\u300d\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\uff08\u5f8c\u306e\u7bc0\u300c\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u300d\u3067\u8aac\u660e\uff09\uff1a\u914d\u5217\u306e\u5404\u30d0\u30b1\u30c3\u30c8\u306f\u9023\u7d50\u30ea\u30b9\u30c8\u3092\u6307\u3057\u3001\u305d\u306e\u9577\u3055\u304c\u7279\u5b9a\u306e\u95be\u5024\u3088\u308a\u5927\u304d\u304f\u306a\u308b\u3068\u6728\uff08\u901a\u5e38\u306f\u8d64\u9ed2\u6728\uff09\u306b\u5909\u63db\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 \u683c\u7d0d\u306e\u89b3\u70b9\u304b\u3089\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u57fa\u790e\u69cb\u9020\u306f\u914d\u5217\u3067\u3001\u5404\u30d0\u30b1\u30c3\u30c8\u306b\u306f\u5024\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u3001\u307e\u305f\u306f\u6728\u304c\u542b\u307e\u308c\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u306f\u7dda\u5f62\u30c7\u30fc\u30bf\u69cb\u9020\uff08\u914d\u5217\u3001\u9023\u7d50\u30ea\u30b9\u30c8\uff09\u3068\u975e\u7dda\u5f62\u30c7\u30fc\u30bf\u69cb\u9020\uff08\u6728\uff09\u306e\u4e21\u65b9\u3092\u542b\u3080\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>Q: <code>char</code>\u578b\u306e\u9577\u3055\u306f1\u30d0\u30a4\u30c8\u3067\u3059\u304b\uff1f</p> <p><code>char</code>\u578b\u306e\u9577\u3055\u306f\u3001\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306e\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u65b9\u6cd5\u306b\u3088\u3063\u3066\u6c7a\u307e\u308a\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001Java\u3001JavaScript\u3001TypeScript\u3001C#\u306f\u3059\u3079\u3066UTF-16\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\uff08Unicode\u30b3\u30fc\u30c9\u30dd\u30a4\u30f3\u30c8\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\uff09\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u3001<code>char</code>\u578b\u306e\u9577\u3055\u306f2\u30d0\u30a4\u30c8\u3067\u3059\u3002</p> <p>Q: \u914d\u5217\u30d9\u30fc\u30b9\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u300c\u9759\u7684\u30c7\u30fc\u30bf\u69cb\u9020\u300d\u3068\u547c\u3076\u3053\u3068\u306b\u66d6\u6627\u3055\u306f\u3042\u308a\u307e\u305b\u3093\u304b\uff1f\u30b9\u30bf\u30c3\u30af\u3082\u30d7\u30c3\u30b7\u30e5\u3084\u30dd\u30c3\u30d7\u306a\u3069\u306e\u300c\u52d5\u7684\u300d\u64cd\u4f5c\u3092\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002</p> <p>\u30b9\u30bf\u30c3\u30af\u306f\u52d5\u7684\u306a\u30c7\u30fc\u30bf\u64cd\u4f5c\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u304c\u3001\u30c7\u30fc\u30bf\u69cb\u9020\u306f\u4f9d\u7136\u3068\u3057\u3066\u300c\u9759\u7684\u300d\u3067\u3059\uff08\u9577\u3055\u304c\u56fa\u5b9a\uff09\u3002\u914d\u5217\u30d9\u30fc\u30b9\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u306f\u52d5\u7684\u306b\u8981\u7d20\u3092\u8ffd\u52a0\u307e\u305f\u306f\u524a\u9664\u3067\u304d\u307e\u3059\u304c\u3001\u305d\u306e\u5bb9\u91cf\u306f\u56fa\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u30b9\u30bf\u30c3\u30af\u30b5\u30a4\u30ba\u304c\u4e8b\u524d\u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u305f\u30b5\u30a4\u30ba\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u53e4\u3044\u914d\u5217\u306f\u65b0\u3057\u304f\u4f5c\u6210\u3055\u308c\u305f\u3088\u308a\u5927\u304d\u306a\u914d\u5217\u306b\u30b3\u30d4\u30fc\u3055\u308c\u307e\u3059\u3002</p> <p>Q: \u30b9\u30bf\u30c3\u30af\uff08\u30ad\u30e5\u30fc\uff09\u3092\u69cb\u7bc9\u3059\u308b\u969b\u3001\u305d\u306e\u30b5\u30a4\u30ba\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u306e\u306b\u3001\u306a\u305c\u300c\u9759\u7684\u30c7\u30fc\u30bf\u69cb\u9020\u300d\u306a\u306e\u3067\u3059\u304b\uff1f</p> <p>\u9ad8\u7d1a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u306f\u3001\u30b9\u30bf\u30c3\u30af\uff08\u30ad\u30e5\u30fc\uff09\u306e\u521d\u671f\u5bb9\u91cf\u3092\u624b\u52d5\u3067\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u3053\u306e\u30bf\u30b9\u30af\u306f\u30af\u30e9\u30b9\u5185\u3067\u81ea\u52d5\u7684\u306b\u5b8c\u4e86\u3055\u308c\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001Java\u306e<code>ArrayList</code>\u306e\u521d\u671f\u5bb9\u91cf\u306f\u901a\u5e3810\u3067\u3059\u3002\u3055\u3089\u306b\u3001\u62e1\u5f35\u64cd\u4f5c\u3082\u81ea\u52d5\u7684\u306b\u5b8c\u4e86\u3055\u308c\u307e\u3059\u3002\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001\u5f8c\u7d9a\u306e\u300c\u30ea\u30b9\u30c8\u300d\u306e\u7ae0\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <p>Q: \u7b26\u53f7\u7d76\u5bfe\u5024\u30922\u306e\u88dc\u6570\u306b\u5909\u63db\u3059\u308b\u65b9\u6cd5\u306f\u300c\u6700\u521d\u306b\u5426\u5b9a\u3057\u3066\u304b\u30891\u3092\u52a0\u3048\u308b\u300d\u3067\u3059\u306e\u3067\u30012\u306e\u88dc\u6570\u3092\u7b26\u53f7\u7d76\u5bfe\u5024\u306b\u5909\u63db\u3059\u308b\u3053\u3068\u306f\u305d\u306e\u9006\u64cd\u4f5c\u300c\u6700\u521d\u306b1\u3092\u6e1b\u7b97\u3057\u3066\u304b\u3089\u5426\u5b9a\u3059\u308b\u300d\u3067\u3042\u308b\u3079\u304d\u3067\u3059\u3002 \u3057\u304b\u3057\u30012\u306e\u88dc\u6570\u3082\u300c\u6700\u521d\u306b\u5426\u5b9a\u3057\u3066\u304b\u30891\u3092\u52a0\u3048\u308b\u300d\u3092\u901a\u3058\u3066\u7b26\u53f7\u7d76\u5bfe\u5024\u306b\u5909\u63db\u3067\u304d\u307e\u3059\u3002\u306a\u305c\u3067\u3059\u304b\uff1f</p> <p>A: \u3053\u308c\u306f\u3001\u7b26\u53f7\u7d76\u5bfe\u5024\u30682\u306e\u88dc\u6570\u9593\u306e\u76f8\u4e92\u5909\u63db\u304c\u300c\u88dc\u6570\u300d\u306e\u8a08\u7b97\u3068\u7b49\u4fa1\u3060\u304b\u3089\u3067\u3059\u3002\u307e\u305a\u88dc\u6570\u3092\u5b9a\u7fa9\u3057\u307e\u3059\uff1a\\(a + b = c\\)\u3068\u4eee\u5b9a\u3059\u308b\u3068\u3001\\(a\\)\u306f\\(b\\)\u306e\\(c\\)\u306b\u5bfe\u3059\u308b\u88dc\u6570\u3068\u8a00\u3044\u3001\u9006\u306b\\(b\\)\u306f\\(a\\)\u306e\\(c\\)\u306b\u5bfe\u3059\u308b\u88dc\u6570\u3068\u8a00\u3044\u307e\u3059\u3002</p> <p>\u9577\u3055\\(n = 4\\)\u306e\u4e8c\u9032\u6570\\(0010\\)\u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u3001\u3053\u306e\u6570\u304c\u7b26\u53f7\u7d76\u5bfe\u5024\uff08\u7b26\u53f7\u30d3\u30c3\u30c8\u3092\u7121\u8996\uff09\u306e\u5834\u5408\u3001\u305d\u306e2\u306e\u88dc\u6570\u306f\u300c\u6700\u521d\u306b\u5426\u5b9a\u3057\u3066\u304b\u30891\u3092\u52a0\u3048\u308b\u300d\u3053\u3068\u3067\u5f97\u3089\u308c\u307e\u3059\uff1a</p> \\[ 0010 \\rightarrow 1101 \\rightarrow 1110 \\] <p>\u7b26\u53f7\u7d76\u5bfe\u5024\u30682\u306e\u88dc\u6570\u306e\u548c\u304c\\(0010 + 1110 = 10000\\)\u3067\u3042\u308b\u3053\u3068\u3092\u89b3\u5bdf\u3057\u307e\u3059\u3002\u3064\u307e\u308a\u30012\u306e\u88dc\u6570\\(1110\\)\u306f\u7b26\u53f7\u7d76\u5bfe\u5024\\(0010\\)\u306e\\(10000\\)\u306b\u5bfe\u3059\u308b\u300c\u88dc\u6570\u300d\u3067\u3059\u3002\u3053\u308c\u306f\u3001\u4e0a\u8a18\u306e\u300c\u6700\u521d\u306b\u5426\u5b9a\u3057\u3066\u304b\u30891\u3092\u52a0\u3048\u308b\u300d\u304c\\(10000\\)\u306b\u5bfe\u3059\u308b\u88dc\u6570\u306e\u8a08\u7b97\u3068\u7b49\u4fa1\u3067\u3042\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002</p> <p>\u3067\u306f\u3001\\(1110\\)\u306e\\(10000\\)\u306b\u5bfe\u3059\u308b\u300c\u88dc\u6570\u300d\u306f\u4f55\u3067\u3057\u3087\u3046\u304b\uff1f\u300c\u6700\u521d\u306b\u5426\u5b9a\u3057\u3066\u304b\u30891\u3092\u52a0\u3048\u308b\u300d\u3053\u3068\u3067\u8a08\u7b97\u3067\u304d\u307e\u3059\uff1a</p> \\[ 1110 \\rightarrow 0001 \\rightarrow 0010 \\] <p>\u8a00\u3044\u63db\u3048\u308b\u3068\u3001\u7b26\u53f7\u7d76\u5bfe\u5024\u30682\u306e\u88dc\u6570\u306f\u4e92\u3044\u306b\\(10000\\)\u306b\u5bfe\u3059\u308b\u300c\u88dc\u6570\u300d\u3067\u3042\u308b\u305f\u3081\u3001\u300c\u7b26\u53f7\u7d76\u5bfe\u5024\u304b\u30892\u306e\u88dc\u6570\u300d\u3068\u300c2\u306e\u88dc\u6570\u304b\u3089\u7b26\u53f7\u7d76\u5bfe\u5024\u300d\u306f\u540c\u3058\u64cd\u4f5c\uff08\u6700\u521d\u306b\u5426\u5b9a\u3057\u3066\u304b\u30891\u3092\u52a0\u3048\u308b\uff09\u3067\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002</p> <p>\u3082\u3061\u308d\u3093\u3001\u300c\u6700\u521d\u306b\u5426\u5b9a\u3057\u3066\u304b\u30891\u3092\u52a0\u3048\u308b\u300d\u306e\u9006\u64cd\u4f5c\u3092\u4f7f\u7528\u3057\u30662\u306e\u88dc\u6570\\(1110\\)\u306e\u7b26\u53f7\u7d76\u5bfe\u5024\u3092\u6c42\u3081\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u3064\u307e\u308a\u3001\u300c\u6700\u521d\u306b1\u3092\u6e1b\u7b97\u3057\u3066\u304b\u3089\u5426\u5b9a\u3059\u308b\u300d\uff1a</p> \\[ 1110 \\rightarrow 1101 \\rightarrow 0010 \\] <p>\u8981\u7d04\u3059\u308b\u3068\u3001\u300c\u6700\u521d\u306b\u5426\u5b9a\u3057\u3066\u304b\u30891\u3092\u52a0\u3048\u308b\u300d\u3068\u300c\u6700\u521d\u306b1\u3092\u6e1b\u7b97\u3057\u3066\u304b\u3089\u5426\u5b9a\u3059\u308b\u300d\u306f\u4e21\u65b9\u3068\u3082\\(10000\\)\u306b\u5bfe\u3059\u308b\u88dc\u6570\u3092\u8a08\u7b97\u3057\u3066\u304a\u308a\u3001\u7b49\u4fa1\u3067\u3059\u3002</p> <p>\u672c\u8cea\u7684\u306b\u3001\u300c\u5426\u5b9a\u300d\u64cd\u4f5c\u306f\u5b9f\u969b\u306b\u306f\\(1111\\)\u306b\u5bfe\u3059\u308b\u88dc\u6570\u3092\u6c42\u3081\u308b\u3053\u3068\u3067\u3059\uff08<code>\u7b26\u53f7\u7d76\u5bfe\u5024 + 1\u306e\u88dc\u6570 = 1111</code>\u304c\u5e38\u306b\u6210\u308a\u7acb\u3064\u305f\u3081\uff09\u3002\u305d\u3057\u30661\u306e\u88dc\u6570\u306b1\u3092\u52a0\u3048\u308b\u3053\u3068\u306f\\(10000\\)\u306b\u5bfe\u3059\u308b2\u306e\u88dc\u6570\u3068\u7b49\u3057\u304f\u306a\u308a\u307e\u3059\u3002</p> <p>\u4e0a\u8a18\u3067\u306f\\(n = 4\\)\u3092\u4f8b\u306b\u53d6\u308a\u307e\u3057\u305f\u304c\u3001\u4efb\u610f\u306e\u6841\u6570\u306e\u4efb\u610f\u306e\u4e8c\u9032\u6570\u306b\u4e00\u822c\u5316\u3067\u304d\u307e\u3059\u3002</p>"},{"location":"chapter_divide_and_conquer/","title":"\u7b2c 12 \u7ae0 \u00a0 \u5206\u5272\u7d71\u6cbb","text":"<p>Abstract</p> <p>\u56f0\u96e3\u306a\u554f\u984c\u306f\u5c64\u3092\u91cd\u306d\u3066\u5206\u89e3\u3055\u308c\u3001\u5404\u5206\u89e3\u306b\u3088\u3063\u3066\u3088\u308a\u5358\u7d14\u306b\u306a\u308a\u307e\u3059\u3002</p> <p>\u5206\u5272\u7d71\u6cbb\u306f\u6df1\u3044\u771f\u7406\u3092\u660e\u3089\u304b\u306b\u3057\u307e\u3059\uff1a\u5358\u7d14\u3055\u304b\u3089\u59cb\u3081\u308c\u3070\u3001\u8907\u96d1\u3055\u306f\u89e3\u6c7a\u3055\u308c\u308b\u3002</p>"},{"location":"chapter_divide_and_conquer/#_1","title":"\u7ae0\u306e\u5185\u5bb9","text":"<ul> <li>12.1 \u00a0 \u5206\u5272\u7d71\u6cbb\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0</li> <li>12.2 \u00a0 \u5206\u5272\u7d71\u6cbb\u63a2\u7d22\u6226\u7565</li> <li>12.3 \u00a0 \u6728\u306e\u69cb\u7bc9\u554f\u984c</li> <li>12.4 \u00a0 \u30cf\u30ce\u30a4\u306e\u5854\u554f\u984c</li> <li>12.5 \u00a0 \u307e\u3068\u3081</li> </ul>"},{"location":"chapter_divide_and_conquer/binary_search_recur/","title":"12.2 \u00a0 \u5206\u5272\u7d71\u6cbb\u691c\u7d22\u6226\u7565","text":"<p>\u79c1\u305f\u3061\u306f\u691c\u7d22\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u304c\u4e3b\u306b2\u3064\u306e\u30ab\u30c6\u30b4\u30ea\u306b\u5206\u985e\u3055\u308c\u308b\u3053\u3068\u3092\u5b66\u3073\u307e\u3057\u305f\u3002</p> <ul> <li>\u7dcf\u5f53\u305f\u308a\u691c\u7d22\uff1a\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u8d70\u67fb\u3059\u308b\u3053\u3068\u3067\u5b9f\u88c5\u3055\u308c\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(n)\\) \u3067\u3059\u3002</li> <li>\u9069\u5fdc\u691c\u7d22\uff1a\u72ec\u7279\u306a\u30c7\u30fc\u30bf\u7d44\u7e54\u5f62\u5f0f\u3084\u4e8b\u524d\u60c5\u5831\u3092\u5229\u7528\u3057\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(\\log n)\\) \u307e\u305f\u306f \\(O(1)\\) \u306b\u9054\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</li> </ul> <p>\u5b9f\u969b\u3001\u6642\u9593\u8a08\u7b97\u91cf\u304c \\(O(\\log n)\\) \u306e\u691c\u7d22\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u901a\u5e38\u5206\u5272\u7d71\u6cbb\u6226\u7565\u306b\u57fa\u3065\u3044\u3066\u3044\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u4e8c\u5206\u63a2\u7d22\u3084\u6728\u306a\u3069\u3067\u3059\u3002</p> <ul> <li>\u4e8c\u5206\u63a2\u7d22\u306e\u5404\u30b9\u30c6\u30c3\u30d7\u306f\u3001\u554f\u984c\uff08\u914d\u5217\u5185\u3067\u30bf\u30fc\u30b2\u30c3\u30c8\u8981\u7d20\u3092\u691c\u7d22\u3059\u308b\uff09\u3092\u3088\u308a\u5c0f\u3055\u306a\u554f\u984c\uff08\u914d\u5217\u306e\u534a\u5206\u3067\u30bf\u30fc\u30b2\u30c3\u30c8\u8981\u7d20\u3092\u691c\u7d22\u3059\u308b\uff09\u306b\u5206\u5272\u3057\u3001\u914d\u5217\u304c\u7a7a\u306b\u306a\u308b\u304b\u30bf\u30fc\u30b2\u30c3\u30c8\u8981\u7d20\u304c\u898b\u3064\u304b\u308b\u307e\u3067\u7d9a\u3051\u307e\u3059\u3002</li> <li>\u6728\u306f\u5206\u5272\u7d71\u6cbb\u306e\u30a2\u30a4\u30c7\u30a2\u3092\u8868\u73fe\u3057\u3001\u4e8c\u5206\u63a2\u7d22\u6728\u3001AVL\u6728\u3001\u30d2\u30fc\u30d7\u306a\u3069\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u3067\u306f\u3001\u69d8\u3005\u306a\u64cd\u4f5c\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(\\log n)\\) \u3067\u3059\u3002</li> </ul> <p>\u4e8c\u5206\u63a2\u7d22\u306e\u5206\u5272\u7d71\u6cbb\u6226\u7565\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002</p> <ul> <li>\u554f\u984c\u3092\u5206\u5272\u3067\u304d\u308b\uff1a\u4e8c\u5206\u63a2\u7d22\u306f\u5143\u306e\u554f\u984c\uff08\u914d\u5217\u5185\u3067\u306e\u691c\u7d22\uff09\u3092\u90e8\u5206\u554f\u984c\uff08\u914d\u5217\u306e\u534a\u5206\u3067\u306e\u691c\u7d22\uff09\u306b\u518d\u5e30\u7684\u306b\u5206\u5272\u3057\u3001\u4e2d\u9593\u8981\u7d20\u3068\u30bf\u30fc\u30b2\u30c3\u30c8\u8981\u7d20\u3092\u6bd4\u8f03\u3059\u308b\u3053\u3068\u3067\u5b9f\u73fe\u3055\u308c\u307e\u3059\u3002</li> <li>\u90e8\u5206\u554f\u984c\u306f\u72ec\u7acb\u3057\u3066\u3044\u308b\uff1a\u4e8c\u5206\u63a2\u7d22\u3067\u306f\u3001\u5404\u30e9\u30a6\u30f3\u30c9\u3067\u4e00\u3064\u306e\u90e8\u5206\u554f\u984c\u3092\u51e6\u7406\u3057\u3001\u4ed6\u306e\u90e8\u5206\u554f\u984c\u306b\u5f71\u97ff\u3055\u308c\u307e\u305b\u3093\u3002</li> <li>\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u30de\u30fc\u30b8\u3059\u308b\u5fc5\u8981\u304c\u306a\u3044\uff1a\u4e8c\u5206\u63a2\u7d22\u306f\u7279\u5b9a\u306e\u8981\u7d20\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u3092\u76ee\u7684\u3068\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u30de\u30fc\u30b8\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u305b\u3093\u3002\u90e8\u5206\u554f\u984c\u304c\u89e3\u6c7a\u3055\u308c\u308b\u3068\u3001\u5143\u306e\u554f\u984c\u3082\u89e3\u6c7a\u3055\u308c\u307e\u3059\u3002</li> </ul> <p>\u5206\u5272\u7d71\u6cbb\u306f\u691c\u7d22\u52b9\u7387\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u306a\u305c\u306a\u3089\u3001\u7dcf\u5f53\u305f\u308a\u691c\u7d22\u306f\u30e9\u30a6\u30f3\u30c9\u3054\u3068\u306b1\u3064\u306e\u9078\u629e\u80a2\u3057\u304b\u9664\u53bb\u3067\u304d\u307e\u305b\u3093\u304c\u3001\u5206\u5272\u7d71\u6cbb\u306f\u9078\u629e\u80a2\u306e\u534a\u5206\u3092\u9664\u53bb\u3067\u304d\u308b\u304b\u3089\u3067\u3059\u3002</p>"},{"location":"chapter_divide_and_conquer/binary_search_recur/#1","title":"1. \u00a0 \u5206\u5272\u7d71\u6cbb\u306b\u57fa\u3065\u304f\u4e8c\u5206\u63a2\u7d22\u306e\u5b9f\u88c5","text":"<p>\u524d\u306e\u7ae0\u3067\u306f\u3001\u4e8c\u5206\u63a2\u7d22\u306f\u53cd\u5fa9\u306b\u57fa\u3065\u3044\u3066\u5b9f\u88c5\u3055\u308c\u307e\u3057\u305f\u3002\u4eca\u5ea6\u306f\u3001\u5206\u5272\u7d71\u6cbb\uff08\u518d\u5e30\uff09\u306b\u57fa\u3065\u3044\u3066\u5b9f\u88c5\u3057\u307e\u3059\u3002</p> <p>Question</p> <p>\u9577\u3055 \\(n\\) \u306e\u9806\u5e8f\u4ed8\u3051\u3089\u308c\u305f\u914d\u5217 <code>nums</code> \u304c\u4e0e\u3048\u3089\u308c\u3001\u3059\u3079\u3066\u306e\u8981\u7d20\u304c\u4e00\u610f\u3067\u3042\u308b\u5834\u5408\u3001\u8981\u7d20 <code>target</code> \u3092\u898b\u3064\u3051\u3066\u304f\u3060\u3055\u3044\u3002</p> <p>\u5206\u5272\u7d71\u6cbb\u306e\u89b3\u70b9\u304b\u3089\u3001\u691c\u7d22\u533a\u9593 \\([i, j]\\) \u306b\u5bfe\u5fdc\u3059\u308b\u90e8\u5206\u554f\u984c\u3092 \\(f(i, j)\\) \u3068\u8868\u3057\u307e\u3059\u3002</p> <p>\u5143\u306e\u554f\u984c \\(f(0, n-1)\\) \u304b\u3089\u958b\u59cb\u3057\u3066\u3001\u4ee5\u4e0b\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u4e8c\u5206\u63a2\u7d22\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002</p> <ol> <li>\u691c\u7d22\u533a\u9593 \\([i, j]\\) \u306e\u4e2d\u70b9 \\(m\\) \u3092\u8a08\u7b97\u3057\u3001\u305d\u308c\u3092\u4f7f\u7528\u3057\u3066\u691c\u7d22\u533a\u9593\u306e\u534a\u5206\u3092\u9664\u53bb\u3057\u307e\u3059\u3002</li> <li>\u534a\u5206\u306e\u30b5\u30a4\u30ba\u306b\u7e2e\u5c0f\u3055\u308c\u305f\u90e8\u5206\u554f\u984c\u3092\u518d\u5e30\u7684\u306b\u89e3\u6c7a\u3057\u307e\u3059\u3002\u3053\u308c\u306f \\(f(i, m-1)\\) \u307e\u305f\u306f \\(f(m+1, j)\\) \u306b\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</li> <li><code>target</code> \u304c\u898b\u3064\u304b\u308b\u304b\u533a\u9593\u304c\u7a7a\u306b\u306a\u3063\u3066\u30ea\u30bf\u30fc\u30f3\u3059\u308b\u307e\u3067\u3001\u30b9\u30c6\u30c3\u30d7 <code>1.</code> \u3068 <code>2.</code> \u3092\u7e70\u308a\u8fd4\u3057\u307e\u3059\u3002</li> </ol> <p>\u4ee5\u4e0b\u306e\u56f3\u306f\u3001\u914d\u5217\u5185\u3067\u8981\u7d20 \\(6\\) \u3092\u63a2\u3059\u4e8c\u5206\u63a2\u7d22\u306e\u5206\u5272\u7d71\u6cbb\u904e\u7a0b\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002</p> <p></p> <p> \u56f3 12-4 \u00a0 \u4e8c\u5206\u63a2\u7d22\u306e\u5206\u5272\u7d71\u6cbb\u904e\u7a0b </p> <p>\u5b9f\u88c5\u30b3\u30fc\u30c9\u3067\u306f\u3001\u554f\u984c \\(f(i, j)\\) \u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306b\u518d\u5e30\u95a2\u6570 <code>dfs()</code> \u3092\u5ba3\u8a00\u3057\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby binary_search_recur.py<pre><code>def dfs(nums: list[int], target: int, i: int, j: int) -&gt; int:\n \"\"\"\u4e8c\u5206\u63a2\u7d22\uff1a\u554f\u984c f(i, j)\"\"\"\n # \u533a\u9593\u304c\u7a7a\u306e\u5834\u5408\u3001\u5bfe\u8c61\u8981\u7d20\u304c\u306a\u3044\u3053\u3068\u3092\u793a\u3059\u305f\u3081\u3001-1 \u3092\u8fd4\u3059\n if i &gt; j:\n return -1\n # \u4e2d\u70b9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 m \u3092\u8a08\u7b97\n m = (i + j) // 2\n if nums[m] &lt; target:\n # \u518d\u5e30\u90e8\u5206\u554f\u984c f(m+1, j)\n return dfs(nums, target, m + 1, j)\n elif nums[m] &gt; target:\n # \u518d\u5e30\u90e8\u5206\u554f\u984c f(i, m-1)\n return dfs(nums, target, i, m - 1)\n else:\n # \u5bfe\u8c61\u8981\u7d20\u3092\u767a\u898b\u3057\u305f\u305f\u3081\u3001\u305d\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u3059\n return m\n\ndef binary_search(nums: list[int], target: int) -&gt; int:\n \"\"\"\u4e8c\u5206\u63a2\u7d22\"\"\"\n n = len(nums)\n # \u554f\u984c f(0, n-1) \u3092\u89e3\u304f\n return dfs(nums, target, 0, n - 1)\n</code></pre> binary_search_recur.cpp<pre><code>/* \u4e8c\u5206\u63a2\u7d22\uff1a\u554f\u984c f(i, j) */\nint dfs(vector&lt;int&gt; &amp;nums, int target, int i, int j) {\n // \u533a\u9593\u304c\u7a7a\u306e\u5834\u5408\u3001\u5bfe\u8c61\u8981\u7d20\u304c\u5b58\u5728\u3057\u306a\u3044\u3053\u3068\u3092\u793a\u3059\u305f\u3081\u3001-1 \u3092\u8fd4\u3059\n if (i &gt; j) {\n return -1;\n }\n // \u4e2d\u70b9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 m \u3092\u8a08\u7b97\n int m = i + (j - i) / 2;\n if (nums[m] &lt; target) {\n // \u518d\u5e30\u7684\u306a\u90e8\u5206\u554f\u984c f(m+1, j)\n return dfs(nums, target, m + 1, j);\n } else if (nums[m] &gt; target) {\n // \u518d\u5e30\u7684\u306a\u90e8\u5206\u554f\u984c f(i, m-1)\n return dfs(nums, target, i, m - 1);\n } else {\n // \u5bfe\u8c61\u8981\u7d20\u304c\u898b\u3064\u304b\u3063\u305f\u305f\u3081\u3001\u305d\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u3059\n return m;\n }\n}\n\n/* \u4e8c\u5206\u63a2\u7d22 */\nint binarySearch(vector&lt;int&gt; &amp;nums, int target) {\n int n = nums.size();\n // \u554f\u984c f(0, n-1) \u3092\u89e3\u304f\n return dfs(nums, target, 0, n - 1);\n}\n</code></pre> binary_search_recur.java<pre><code>/* \u4e8c\u5206\u63a2\u7d22\uff1a\u554f\u984c f(i, j) */\nint dfs(int[] nums, int target, int i, int j) {\n // \u533a\u9593\u304c\u7a7a\u306e\u5834\u5408\u3001\u5bfe\u8c61\u8981\u7d20\u304c\u5b58\u5728\u3057\u306a\u3044\u3053\u3068\u3092\u793a\u3059\u305f\u3081\u3001-1 \u3092\u8fd4\u3059\n if (i &gt; j) {\n return -1;\n }\n // \u4e2d\u70b9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 m \u3092\u8a08\u7b97\n int m = i + (j - i) / 2;\n if (nums[m] &lt; target) {\n // \u518d\u5e30\u7684\u306a\u90e8\u5206\u554f\u984c f(m+1, j)\n return dfs(nums, target, m + 1, j);\n } else if (nums[m] &gt; target) {\n // \u518d\u5e30\u7684\u306a\u90e8\u5206\u554f\u984c f(i, m-1)\n return dfs(nums, target, i, m - 1);\n } else {\n // \u5bfe\u8c61\u8981\u7d20\u304c\u898b\u3064\u304b\u3063\u305f\u305f\u3081\u3001\u305d\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u3059\n return m;\n }\n}\n\n/* \u4e8c\u5206\u63a2\u7d22 */\nint binarySearch(int[] nums, int target) {\n int n = nums.length;\n // \u554f\u984c f(0, n-1) \u3092\u89e3\u304f\n return dfs(nums, target, 0, n - 1);\n}\n</code></pre> binary_search_recur.cs<pre><code>[class]{binary_search_recur}-[func]{DFS}\n\n[class]{binary_search_recur}-[func]{BinarySearch}\n</code></pre> binary_search_recur.go<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{binarySearch}\n</code></pre> binary_search_recur.swift<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{binarySearch}\n</code></pre> binary_search_recur.js<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{binarySearch}\n</code></pre> binary_search_recur.ts<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{binarySearch}\n</code></pre> binary_search_recur.dart<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{binarySearch}\n</code></pre> binary_search_recur.rs<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{binary_search}\n</code></pre> binary_search_recur.c<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{binarySearch}\n</code></pre> binary_search_recur.kt<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{binarySearch}\n</code></pre> binary_search_recur.rb<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{binary_search}\n</code></pre>"},{"location":"chapter_divide_and_conquer/build_binary_tree_problem/","title":"12.3 \u00a0 \u4e8c\u5206\u6728\u69cb\u7bc9\u554f\u984c","text":"<p>Question</p> <p>\u4e8c\u5206\u6728\u306e\u524d\u9806\u8d70\u67fb <code>preorder</code> \u30b7\u30fc\u30b1\u30f3\u30b9\u3068\u4e2d\u9806\u8d70\u67fb <code>inorder</code> \u30b7\u30fc\u30b1\u30f3\u30b9\u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u3001\u4e8c\u5206\u6728\u3092\u69cb\u7bc9\u3057\u3066\u305d\u306e\u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u3092\u8fd4\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e8c\u5206\u6728\u306b\u91cd\u8907\u3059\u308b\u30ce\u30fc\u30c9\u5024\u304c\u306a\u3044\u3068\u4eee\u5b9a\u3057\u307e\u3059\uff08\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\uff09\u3002</p> <p></p> <p> \u56f3 12-5 \u00a0 \u4e8c\u5206\u6728\u69cb\u7bc9\u306e\u30b5\u30f3\u30d7\u30eb\u30c7\u30fc\u30bf </p>"},{"location":"chapter_divide_and_conquer/build_binary_tree_problem/#1","title":"1. \u00a0 \u5206\u5272\u7d71\u6cbb\u554f\u984c\u304b\u3069\u3046\u304b\u306e\u5224\u5b9a","text":"<p><code>preorder</code> \u3068 <code>inorder</code> \u30b7\u30fc\u30b1\u30f3\u30b9\u304b\u3089\u4e8c\u5206\u6728\u3092\u69cb\u7bc9\u3059\u308b\u5143\u306e\u554f\u984c\u306f\u3001\u5178\u578b\u7684\u306a\u5206\u5272\u7d71\u6cbb\u554f\u984c\u3067\u3059\u3002</p> <ul> <li>\u554f\u984c\u3092\u5206\u89e3\u3067\u304d\u308b\uff1a\u5206\u5272\u7d71\u6cbb\u306e\u89b3\u70b9\u304b\u3089\u3001\u5143\u306e\u554f\u984c\u30922\u3064\u306e\u90e8\u5206\u554f\u984c\uff08\u5de6\u306e\u90e8\u5206\u6728\u306e\u69cb\u7bc9\u3068\u53f3\u306e\u90e8\u5206\u6728\u306e\u69cb\u7bc9\uff09\u3068\u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u306e\u521d\u671f\u5316\u3068\u3044\u30461\u3064\u306e\u64cd\u4f5c\u306b\u5206\u5272\u3067\u304d\u307e\u3059\u3002\u5404\u90e8\u5206\u6728\uff08\u90e8\u5206\u554f\u984c\uff09\u306b\u3064\u3044\u3066\u3001\u540c\u3058\u30a2\u30d7\u30ed\u30fc\u30c1\u3092\u7d99\u7d9a\u7684\u306b\u9069\u7528\u3057\u3001\u3088\u308a\u5c0f\u3055\u306a\u90e8\u5206\u6728\uff08\u90e8\u5206\u554f\u984c\uff09\u306b\u5206\u5272\u3057\u3001\u6700\u5c0f\u306e\u90e8\u5206\u554f\u984c\uff08\u7a7a\u306e\u90e8\u5206\u6728\uff09\u306b\u5230\u9054\u3059\u308b\u307e\u3067\u7d9a\u3051\u307e\u3059\u3002</li> <li>\u90e8\u5206\u554f\u984c\u306f\u72ec\u7acb\u3057\u3066\u3044\u308b\uff1a\u5de6\u3068\u53f3\u306e\u90e8\u5206\u6728\u306f\u91cd\u8907\u3057\u307e\u305b\u3093\u3002\u5de6\u306e\u90e8\u5206\u6728\u3092\u69cb\u7bc9\u3059\u308b\u969b\u3001\u5de6\u306e\u90e8\u5206\u6728\u306b\u5bfe\u5fdc\u3059\u308b\u4e2d\u9806\u8d70\u67fb\u3068\u524d\u9806\u8d70\u67fb\u306e\u30bb\u30b0\u30e1\u30f3\u30c8\u306e\u307f\u304c\u5fc5\u8981\u3067\u3059\u3002\u53f3\u306e\u90e8\u5206\u6728\u306b\u3082\u540c\u3058\u30a2\u30d7\u30ed\u30fc\u30c1\u304c\u9069\u7528\u3055\u308c\u307e\u3059\u3002</li> <li>\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u308b\uff1a\u5de6\u3068\u53f3\u306e\u90e8\u5206\u6728\uff08\u90e8\u5206\u554f\u984c\u306e\u89e3\uff09\u3092\u69cb\u7bc9\u3057\u305f\u3089\u3001\u305d\u308c\u3089\u3092\u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u306b\u63a5\u7d9a\u3057\u3066\u5143\u306e\u554f\u984c\u306e\u89e3\u3092\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_divide_and_conquer/build_binary_tree_problem/#2","title":"2. \u00a0 \u90e8\u5206\u6728\u306e\u5206\u5272\u65b9\u6cd5","text":"<p>\u4e0a\u8a18\u306e\u5206\u6790\u306b\u57fa\u3065\u3044\u3066\u3001\u3053\u306e\u554f\u984c\u306f\u5206\u5272\u7d71\u6cbb\u3092\u4f7f\u7528\u3057\u3066\u89e3\u6c7a\u3067\u304d\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u524d\u9806\u8d70\u67fb <code>preorder</code> \u30b7\u30fc\u30b1\u30f3\u30b9\u3068\u4e2d\u9806\u8d70\u67fb <code>inorder</code> \u30b7\u30fc\u30b1\u30f3\u30b9\u3092\u4f7f\u7528\u3057\u3066\u5de6\u3068\u53f3\u306e\u90e8\u5206\u6728\u3092\u3069\u306e\u3088\u3046\u306b\u5206\u5272\u3059\u308c\u3070\u3088\u3044\u3067\u3057\u3087\u3046\u304b\uff1f</p> <p>\u5b9a\u7fa9\u306b\u3088\u308a\u3001<code>preorder</code> \u3068 <code>inorder</code> \u30b7\u30fc\u30b1\u30f3\u30b9\u306e\u4e21\u65b9\u30923\u3064\u306e\u90e8\u5206\u306b\u5206\u5272\u3067\u304d\u307e\u3059\uff1a</p> <ul> <li>\u524d\u9806\u8d70\u67fb\uff1a<code>[ \u30eb\u30fc\u30c8 | \u5de6\u306e\u90e8\u5206\u6728 | \u53f3\u306e\u90e8\u5206\u6728 ]</code>\u3002\u4f8b\u3048\u3070\u3001\u56f3\u3067\u306f\u3001\u6728\u306f <code>[ 3 | 9 | 2 1 7 ]</code> \u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002</li> <li>\u4e2d\u9806\u8d70\u67fb\uff1a<code>[ \u5de6\u306e\u90e8\u5206\u6728 | \u30eb\u30fc\u30c8 | \u53f3\u306e\u90e8\u5206\u6728 ]</code>\u3002\u4f8b\u3048\u3070\u3001\u56f3\u3067\u306f\u3001\u6728\u306f <code>[ 9 | 3 | 1 2 7 ]</code> \u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002</li> </ul> <p>\u524d\u306e\u56f3\u306e\u30c7\u30fc\u30bf\u3092\u4f7f\u7528\u3057\u3066\u3001\u6b21\u306e\u56f3\u306b\u793a\u3059\u30b9\u30c6\u30c3\u30d7\u306b\u5f93\u3063\u3066\u5206\u5272\u7d50\u679c\u3092\u53d6\u5f97\u3067\u304d\u307e\u3059\uff1a</p> <ol> <li>\u524d\u9806\u8d70\u67fb\u306e\u6700\u521d\u306e\u8981\u7d203\u304c\u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u306e\u5024\u3067\u3059\u3002</li> <li><code>inorder</code> \u30b7\u30fc\u30b1\u30f3\u30b9\u5185\u3067\u30eb\u30fc\u30c8\u30ce\u30fc\u30c93\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u898b\u3064\u3051\u3001\u3053\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u4f7f\u7528\u3057\u3066 <code>inorder</code> \u3092 <code>[ 9 | 3 \uff5c 1 2 7 ]</code> \u306b\u5206\u5272\u3057\u307e\u3059\u3002</li> <li><code>inorder</code> \u30b7\u30fc\u30b1\u30f3\u30b9\u306e\u5206\u5272\u306b\u5f93\u3063\u3066\u3001\u5de6\u3068\u53f3\u306e\u90e8\u5206\u6728\u304c\u305d\u308c\u305e\u308c1\u500b\u30683\u500b\u306e\u30ce\u30fc\u30c9\u3092\u542b\u3080\u3053\u3068\u304c\u7c21\u5358\u306b\u6c7a\u5b9a\u3067\u304d\u308b\u305f\u3081\u3001<code>preorder</code> \u30b7\u30fc\u30b1\u30f3\u30b9\u3092 <code>[ 3 | 9 | 2 1 7 ]</code> \u306b\u5bfe\u5fdc\u3057\u3066\u5206\u5272\u3067\u304d\u307e\u3059\u3002</li> </ol> <p></p> <p> \u56f3 12-6 \u00a0 \u524d\u9806\u8d70\u67fb\u3068\u4e2d\u9806\u8d70\u67fb\u3067\u306e\u90e8\u5206\u6728\u306e\u5206\u5272 </p>"},{"location":"chapter_divide_and_conquer/build_binary_tree_problem/#3","title":"3. \u00a0 \u5909\u6570\u306b\u57fa\u3065\u304f\u90e8\u5206\u6728\u7bc4\u56f2\u306e\u8a18\u8ff0","text":"<p>\u4e0a\u8a18\u306e\u5206\u5272\u65b9\u6cd5\u306b\u57fa\u3065\u3044\u3066\u3001<code>preorder</code> \u3068 <code>inorder</code> \u30b7\u30fc\u30b1\u30f3\u30b9\u306b\u304a\u3051\u308b\u30eb\u30fc\u30c8\u3001\u5de6\u306e\u90e8\u5206\u6728\u3001\u53f3\u306e\u90e8\u5206\u6728\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u7bc4\u56f2\u3092\u53d6\u5f97\u3057\u307e\u3057\u305f\u3002\u3053\u308c\u3089\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u7bc4\u56f2\u3092\u8a18\u8ff0\u3059\u308b\u305f\u3081\u306b\u3001\u3044\u304f\u3064\u304b\u306e\u30dd\u30a4\u30f3\u30bf\u5909\u6570\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</p> <ul> <li>\u73fe\u5728\u306e\u6728\u306e\u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u306e <code>preorder</code> \u30b7\u30fc\u30b1\u30f3\u30b9\u3067\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092 \\(i\\) \u3068\u3057\u307e\u3059\u3002</li> <li>\u73fe\u5728\u306e\u6728\u306e\u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u306e <code>inorder</code> \u30b7\u30fc\u30b1\u30f3\u30b9\u3067\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092 \\(m\\) \u3068\u3057\u307e\u3059\u3002</li> <li>\u73fe\u5728\u306e\u6728\u306e <code>inorder</code> \u30b7\u30fc\u30b1\u30f3\u30b9\u3067\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u7bc4\u56f2\u3092 \\([l, r]\\) \u3068\u3057\u307e\u3059\u3002</li> </ul> <p>\u4ee5\u4e0b\u306e\u8868\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u3053\u308c\u3089\u306e\u5909\u6570\u306f <code>preorder</code> \u30b7\u30fc\u30b1\u30f3\u30b9\u3067\u306e\u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3068 <code>inorder</code> \u30b7\u30fc\u30b1\u30f3\u30b9\u3067\u306e\u90e8\u5206\u6728\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u7bc4\u56f2\u3092\u8868\u3057\u307e\u3059\u3002</p> <p> \u8868 12-1 \u00a0 \u524d\u9806\u8d70\u67fb\u3068\u4e2d\u9806\u8d70\u67fb\u3067\u306e\u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u3068\u90e8\u5206\u6728\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 </p> <code>preorder</code> \u3067\u306e\u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 <code>inorder</code> \u3067\u306e\u90e8\u5206\u6728\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u7bc4\u56f2 \u73fe\u5728\u306e\u6728 \\(i\\) \\([l, r]\\) \u5de6\u306e\u90e8\u5206\u6728 \\(i + 1\\) \\([l, m-1]\\) \u53f3\u306e\u90e8\u5206\u6728 \\(i + 1 + (m - l)\\) \\([m+1, r]\\) <p>\u53f3\u306e\u90e8\u5206\u6728\u306e\u30eb\u30fc\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306e \\((m-l)\\) \u306f\u300c\u5de6\u306e\u90e8\u5206\u6728\u306e\u30ce\u30fc\u30c9\u6570\u300d\u3092\u8868\u3059\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3088\u308a\u660e\u78ba\u306a\u7406\u89e3\u306e\u305f\u3081\u306b\u3001\u4ee5\u4e0b\u306e\u56f3\u3092\u53c2\u7167\u3059\u308b\u3053\u3068\u304c\u5f79\u7acb\u3064\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002</p> <p></p> <p> \u56f3 12-7 \u00a0 \u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u3068\u5de6\u53f3\u306e\u90e8\u5206\u6728\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 </p>"},{"location":"chapter_divide_and_conquer/build_binary_tree_problem/#4","title":"4. \u00a0 \u30b3\u30fc\u30c9\u5b9f\u88c5","text":"<p>\\(m\\) \u306e\u554f\u3044\u5408\u308f\u305b\u306e\u52b9\u7387\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306b\u3001\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb <code>hmap</code> \u3092\u4f7f\u7528\u3057\u3066 <code>inorder</code> \u30b7\u30fc\u30b1\u30f3\u30b9\u306e\u8981\u7d20\u304b\u3089\u305d\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3078\u306e\u30de\u30c3\u30d4\u30f3\u30b0\u3092\u683c\u7d0d\u3057\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby build_tree.py<pre><code>def dfs(\n preorder: list[int],\n inorder_map: dict[int, int],\n i: int,\n l: int,\n r: int,\n) -&gt; TreeNode | None:\n \"\"\"\u4e8c\u5206\u6728\u306e\u69cb\u7bc9\uff1a\u5206\u5272\u7d71\u6cbb\"\"\"\n # \u90e8\u5206\u6728\u306e\u533a\u9593\u304c\u7a7a\u306e\u3068\u304d\u7d42\u4e86\n if r - l &lt; 0:\n return None\n # \u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u3092\u521d\u671f\u5316\n root = TreeNode(preorder[i])\n # m \u3092\u30af\u30a8\u30ea\u3057\u3066\u5de6\u90e8\u5206\u6728\u3068\u53f3\u90e8\u5206\u6728\u3092\u5206\u5272\n m = inorder_map[preorder[i]]\n # \u90e8\u5206\u554f\u984c\uff1a\u5de6\u90e8\u5206\u6728\u3092\u69cb\u7bc9\n root.left = dfs(preorder, inorder_map, i + 1, l, m - 1)\n # \u90e8\u5206\u554f\u984c\uff1a\u53f3\u90e8\u5206\u6728\u3092\u69cb\u7bc9\n root.right = dfs(preorder, inorder_map, i + 1 + m - l, m + 1, r)\n # \u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u3092\u8fd4\u3059\n return root\n\ndef build_tree(preorder: list[int], inorder: list[int]) -&gt; TreeNode | None:\n \"\"\"\u4e8c\u5206\u6728\u3092\u69cb\u7bc9\"\"\"\n # \u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\u3001\u4e2d\u9806\u8d70\u67fb\u306e\u8981\u7d20\u304b\u3089\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3078\u306e\u30de\u30c3\u30d4\u30f3\u30b0\u3092\u4fdd\u5b58\n inorder_map = {val: i for i, val in enumerate(inorder)}\n root = dfs(preorder, inorder_map, 0, 0, len(inorder) - 1)\n return root\n</code></pre> build_tree.cpp<pre><code>/* \u4e8c\u5206\u6728\u306e\u69cb\u7bc9\uff1a\u5206\u5272\u7d71\u6cbb */\nTreeNode *dfs(vector&lt;int&gt; &amp;preorder, unordered_map&lt;int, int&gt; &amp;inorderMap, int i, int l, int r) {\n // \u90e8\u5206\u6728\u306e\u533a\u9593\u304c\u7a7a\u306e\u5834\u5408\u306b\u7d42\u4e86\n if (r - l &lt; 0)\n return NULL;\n // \u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u3092\u521d\u671f\u5316\n TreeNode *root = new TreeNode(preorder[i]);\n // m \u3092\u554f\u3044\u5408\u308f\u305b\u3066\u5de6\u53f3\u306e\u90e8\u5206\u6728\u3092\u5206\u5272\n int m = inorderMap[preorder[i]];\n // \u90e8\u5206\u554f\u984c\uff1a\u5de6\u306e\u90e8\u5206\u6728\u3092\u69cb\u7bc9\n root-&gt;left = dfs(preorder, inorderMap, i + 1, l, m - 1);\n // \u90e8\u5206\u554f\u984c\uff1a\u53f3\u306e\u90e8\u5206\u6728\u3092\u69cb\u7bc9\n root-&gt;right = dfs(preorder, inorderMap, i + 1 + m - l, m + 1, r);\n // \u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u3092\u8fd4\u3059\n return root;\n}\n\n/* \u4e8c\u5206\u6728\u306e\u69cb\u7bc9 */\nTreeNode *buildTree(vector&lt;int&gt; &amp;preorder, vector&lt;int&gt; &amp;inorder) {\n // \u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\u3057\u3001\u4e2d\u9593\u9806\u5e8f\u306e\u8981\u7d20\u304b\u3089\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3078\u306e\u30de\u30c3\u30d4\u30f3\u30b0\u3092\u683c\u7d0d\n unordered_map&lt;int, int&gt; inorderMap;\n for (int i = 0; i &lt; inorder.size(); i++) {\n inorderMap[inorder[i]] = i;\n }\n TreeNode *root = dfs(preorder, inorderMap, 0, 0, inorder.size() - 1);\n return root;\n}\n</code></pre> build_tree.java<pre><code>/* \u4e8c\u5206\u6728\u306e\u69cb\u7bc9\uff1a\u5206\u5272\u7d71\u6cbb */\nTreeNode dfs(int[] preorder, Map&lt;Integer, Integer&gt; inorderMap, int i, int l, int r) {\n // \u90e8\u5206\u6728\u306e\u533a\u9593\u304c\u7a7a\u306e\u5834\u5408\u306b\u7d42\u4e86\n if (r - l &lt; 0)\n return null;\n // \u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u3092\u521d\u671f\u5316\n TreeNode root = new TreeNode(preorder[i]);\n // m \u3092\u554f\u3044\u5408\u308f\u305b\u3066\u5de6\u53f3\u306e\u90e8\u5206\u6728\u3092\u5206\u5272\n int m = inorderMap.get(preorder[i]);\n // \u90e8\u5206\u554f\u984c\uff1a\u5de6\u306e\u90e8\u5206\u6728\u3092\u69cb\u7bc9\n root.left = dfs(preorder, inorderMap, i + 1, l, m - 1);\n // \u90e8\u5206\u554f\u984c\uff1a\u53f3\u306e\u90e8\u5206\u6728\u3092\u69cb\u7bc9\n root.right = dfs(preorder, inorderMap, i + 1 + m - l, m + 1, r);\n // \u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u3092\u8fd4\u3059\n return root;\n}\n\n/* \u4e8c\u5206\u6728\u306e\u69cb\u7bc9 */\nTreeNode buildTree(int[] preorder, int[] inorder) {\n // \u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\u3057\u3001\u4e2d\u9593\u9806\u5e8f\u306e\u8981\u7d20\u304b\u3089\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3078\u306e\u30de\u30c3\u30d4\u30f3\u30b0\u3092\u683c\u7d0d\n Map&lt;Integer, Integer&gt; inorderMap = new HashMap&lt;&gt;();\n for (int i = 0; i &lt; inorder.length; i++) {\n inorderMap.put(inorder[i], i);\n }\n TreeNode root = dfs(preorder, inorderMap, 0, 0, inorder.length - 1);\n return root;\n}\n</code></pre> build_tree.cs<pre><code>[class]{build_tree}-[func]{DFS}\n\n[class]{build_tree}-[func]{BuildTree}\n</code></pre> build_tree.go<pre><code>[class]{}-[func]{dfsBuildTree}\n\n[class]{}-[func]{buildTree}\n</code></pre> build_tree.swift<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{buildTree}\n</code></pre> build_tree.js<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{buildTree}\n</code></pre> build_tree.ts<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{buildTree}\n</code></pre> build_tree.dart<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{buildTree}\n</code></pre> build_tree.rs<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{build_tree}\n</code></pre> build_tree.c<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{buildTree}\n</code></pre> build_tree.kt<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{buildTree}\n</code></pre> build_tree.rb<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{build_tree}\n</code></pre> <p>\u4ee5\u4e0b\u306e\u56f3\u306f\u3001\u4e8c\u5206\u6728\u3092\u69cb\u7bc9\u3059\u308b\u518d\u5e30\u904e\u7a0b\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u5404\u30ce\u30fc\u30c9\u306f\u518d\u5e30\u306e\u300c\u4e0b\u964d\u300d\u6bb5\u968e\u3067\u4f5c\u6210\u3055\u308c\u3001\u5404\u30a8\u30c3\u30b8\uff08\u53c2\u7167\uff09\u306f\u300c\u4e0a\u6607\u300d\u6bb5\u968e\u3067\u5f62\u6210\u3055\u308c\u307e\u3059\u3002</p> &lt;1&gt;&lt;2&gt;&lt;3&gt;&lt;4&gt;&lt;5&gt;&lt;6&gt;&lt;7&gt;&lt;8&gt;&lt;9&gt; <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p> \u56f3 12-8 \u00a0 \u4e8c\u5206\u6728\u69cb\u7bc9\u306e\u518d\u5e30\u904e\u7a0b </p> <p>\u5404\u518d\u5e30\u95a2\u6570\u306e <code>preorder</code> \u3068 <code>inorder</code> \u30b7\u30fc\u30b1\u30f3\u30b9\u306e\u5206\u5272\u306f\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3055\u308c\u3066\u3044\u307e\u3059\u3002</p> <p></p> <p> \u56f3 12-9 \u00a0 \u5404\u518d\u5e30\u95a2\u6570\u3067\u306e\u5206\u5272 </p> <p>\u4e8c\u5206\u6728\u304c \\(n\\) \u500b\u306e\u30ce\u30fc\u30c9\u3092\u6301\u3064\u3068\u4eee\u5b9a\u3059\u308b\u3068\u3001\u5404\u30ce\u30fc\u30c9\u306e\u521d\u671f\u5316\uff08\u518d\u5e30\u95a2\u6570 <code>dfs()</code> \u306e\u547c\u3073\u51fa\u3057\uff09\u306b\u306f \\(O(1)\\) \u6642\u9593\u304c\u304b\u304b\u308a\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u5168\u4f53\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(n)\\) \u3067\u3059\u3002</p> <p>\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u306f <code>inorder</code> \u8981\u7d20\u304b\u3089\u305d\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3078\u306e\u30de\u30c3\u30d4\u30f3\u30b0\u3092\u683c\u7d0d\u3059\u308b\u305f\u3081\u3001\\(O(n)\\) \u30b9\u30da\u30fc\u30b9\u304c\u5fc5\u8981\u3067\u3059\u3002\u6700\u60aa\u306e\u5834\u5408\u3001\u4e8c\u5206\u6728\u304c\u9023\u7d50\u30ea\u30b9\u30c8\u306b\u9000\u5316\u3059\u308b\u3068\u3001\u518d\u5e30\u306e\u6df1\u3055\u306f \\(n\\) \u306b\u9054\u3057\u3001\\(O(n)\\) \u306e\u30b9\u30bf\u30c3\u30af\u30b9\u30da\u30fc\u30b9\u3092\u6d88\u8cbb\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u5168\u4f53\u306e\u7a7a\u9593\u8a08\u7b97\u91cf\u306f \\(O(n)\\) \u3067\u3059\u3002</p>"},{"location":"chapter_divide_and_conquer/divide_and_conquer/","title":"12.1 \u00a0 \u5206\u5272\u7d71\u6cbb\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0","text":"<p>\u5206\u5272\u7d71\u6cbb\u306f\u91cd\u8981\u3067\u4eba\u6c17\u306e\u3042\u308b\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u6226\u7565\u3067\u3059\u3002\u540d\u524d\u304c\u793a\u3059\u3088\u3046\u306b\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u901a\u5e38\u518d\u5e30\u7684\u306b\u5b9f\u88c5\u3055\u308c\u3001\u300c\u5206\u5272\u300d\u3068\u300c\u7d71\u6cbb\u300d\u306e2\u3064\u306e\u30b9\u30c6\u30c3\u30d7\u304b\u3089\u69cb\u6210\u3055\u308c\u307e\u3059\u3002</p> <ol> <li>\u5206\u5272\uff08\u5206\u5272\u6bb5\u968e\uff09\uff1a\u5143\u306e\u554f\u984c\u3092\u518d\u5e30\u7684\u306b2\u3064\u4ee5\u4e0a\u306e\u5c0f\u3055\u306a\u90e8\u5206\u554f\u984c\u306b\u5206\u89e3\u3057\u3001\u6700\u5c0f\u306e\u90e8\u5206\u554f\u984c\u306b\u5230\u9054\u3059\u308b\u307e\u3067\u7d9a\u3051\u307e\u3059\u3002</li> <li>\u7d71\u6cbb\uff08\u30de\u30fc\u30b8\u6bb5\u968e\uff09\uff1a\u89e3\u6c7a\u65b9\u6cd5\u304c\u65e2\u77e5\u306e\u6700\u5c0f\u306e\u90e8\u5206\u554f\u984c\u304b\u3089\u958b\u59cb\u3057\u3001\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u30dc\u30c8\u30e0\u30a2\u30c3\u30d7\u65b9\u5f0f\u3067\u30de\u30fc\u30b8\u3057\u3066\u5143\u306e\u554f\u984c\u306e\u89e3\u3092\u69cb\u7bc9\u3057\u307e\u3059\u3002</li> </ol> <p>\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u300c\u30de\u30fc\u30b8\u30bd\u30fc\u30c8\u300d\u306f\u5206\u5272\u7d71\u6cbb\u6226\u7565\u306e\u5178\u578b\u7684\u306a\u5fdc\u7528\u306e\u4e00\u3064\u3067\u3059\u3002</p> <ol> <li>\u5206\u5272\uff1a\u5143\u306e\u914d\u5217\uff08\u5143\u306e\u554f\u984c\uff09\u3092\u518d\u5e30\u7684\u306b2\u3064\u306e\u526f\u914d\u5217\uff08\u90e8\u5206\u554f\u984c\uff09\u306b\u5206\u5272\u3057\u3001\u526f\u914d\u5217\u304c1\u3064\u306e\u8981\u7d20\u306e\u307f\u306b\u306a\u308b\u307e\u3067\uff08\u6700\u5c0f\u306e\u90e8\u5206\u554f\u984c\uff09\u7d9a\u3051\u307e\u3059\u3002</li> <li>\u7d71\u6cbb\uff1a\u9806\u5e8f\u4ed8\u3051\u3089\u308c\u305f\u526f\u914d\u5217\uff08\u90e8\u5206\u554f\u984c\u306e\u89e3\uff09\u3092\u30dc\u30c8\u30e0\u30a2\u30c3\u30d7\u3067\u30de\u30fc\u30b8\u3057\u3066\u3001\u9806\u5e8f\u4ed8\u3051\u3089\u308c\u305f\u5143\u306e\u914d\u5217\uff08\u5143\u306e\u554f\u984c\u306e\u89e3\uff09\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002</li> </ol> <p></p> <p> \u56f3 12-1 \u00a0 \u30de\u30fc\u30b8\u30bd\u30fc\u30c8\u306e\u5206\u5272\u7d71\u6cbb\u6226\u7565 </p>"},{"location":"chapter_divide_and_conquer/divide_and_conquer/#1211","title":"12.1.1 \u00a0 \u5206\u5272\u7d71\u6cbb\u554f\u984c\u3092\u7279\u5b9a\u3059\u308b\u65b9\u6cd5","text":"<p>\u554f\u984c\u304c\u5206\u5272\u7d71\u6cbb\u89e3\u6c7a\u306b\u9069\u3057\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u306f\u3001\u901a\u5e38\u4ee5\u4e0b\u306e\u57fa\u6e96\u306b\u57fa\u3065\u3044\u3066\u6c7a\u5b9a\u3067\u304d\u307e\u3059\u3002</p> <ol> <li>\u554f\u984c\u3092\u3088\u308a\u5c0f\u3055\u306a\u3082\u306e\u306b\u5206\u89e3\u3067\u304d\u308b\uff1a\u5143\u306e\u554f\u984c\u3092\u3088\u308a\u5c0f\u3055\u304f\u985e\u4f3c\u3057\u305f\u90e8\u5206\u554f\u984c\u306b\u5206\u5272\u3067\u304d\u3001\u305d\u306e\u3088\u3046\u306a\u904e\u7a0b\u3092\u540c\u3058\u65b9\u6cd5\u3067\u518d\u5e30\u7684\u306b\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002</li> <li>\u90e8\u5206\u554f\u984c\u306f\u72ec\u7acb\u3057\u3066\u3044\u308b\uff1a\u90e8\u5206\u554f\u984c\u9593\u306b\u91cd\u8907\u304c\u306a\u304f\u3001\u72ec\u7acb\u3057\u3066\u304a\u308a\u3001\u500b\u5225\u306b\u89e3\u6c7a\u3067\u304d\u307e\u3059\u3002</li> <li>\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u30de\u30fc\u30b8\u3067\u304d\u308b\uff1a\u5143\u306e\u554f\u984c\u306e\u89e3\u306f\u3001\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u5c0e\u51fa\u3055\u308c\u307e\u3059\u3002</li> </ol> <p>\u660e\u3089\u304b\u306b\u3001\u30de\u30fc\u30b8\u30bd\u30fc\u30c8\u306f\u3053\u308c\u30893\u3064\u306e\u57fa\u6e96\u3092\u6e80\u305f\u3057\u3066\u3044\u307e\u3059\u3002</p> <ol> <li>\u554f\u984c\u3092\u3088\u308a\u5c0f\u3055\u306a\u3082\u306e\u306b\u5206\u89e3\u3067\u304d\u308b\uff1a\u914d\u5217\uff08\u5143\u306e\u554f\u984c\uff09\u3092\u518d\u5e30\u7684\u306b2\u3064\u306e\u526f\u914d\u5217\uff08\u90e8\u5206\u554f\u984c\uff09\u306b\u5206\u5272\u3057\u307e\u3059\u3002</li> <li>\u90e8\u5206\u554f\u984c\u306f\u72ec\u7acb\u3057\u3066\u3044\u308b\uff1a\u5404\u526f\u914d\u5217\u306f\u72ec\u7acb\u3057\u3066\u30bd\u30fc\u30c8\u3067\u304d\u307e\u3059\uff08\u90e8\u5206\u554f\u984c\u306f\u72ec\u7acb\u3057\u3066\u89e3\u6c7a\u3067\u304d\u307e\u3059\uff09\u3002</li> <li>\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u30de\u30fc\u30b8\u3067\u304d\u308b\uff1a2\u3064\u306e\u9806\u5e8f\u4ed8\u3051\u3089\u308c\u305f\u526f\u914d\u5217\uff08\u90e8\u5206\u554f\u984c\u306e\u89e3\uff09\u30921\u3064\u306e\u9806\u5e8f\u4ed8\u3051\u3089\u308c\u305f\u914d\u5217\uff08\u5143\u306e\u554f\u984c\u306e\u89e3\uff09\u306b\u30de\u30fc\u30b8\u3067\u304d\u307e\u3059\u3002</li> </ol>"},{"location":"chapter_divide_and_conquer/divide_and_conquer/#1212","title":"12.1.2 \u00a0 \u5206\u5272\u7d71\u6cbb\u306b\u3088\u308b\u52b9\u7387\u306e\u5411\u4e0a","text":"<p>\u5206\u5272\u7d71\u6cbb\u6226\u7565\u306f\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u554f\u984c\u3092\u52b9\u679c\u7684\u306b\u89e3\u6c7a\u3059\u308b\u3060\u3051\u3067\u306a\u304f\u3001\u3057\u3070\u3057\u3070\u52b9\u7387\u3092\u5411\u4e0a\u3055\u305b\u307e\u3059\u3002\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u306f\u3001\u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\u3001\u30de\u30fc\u30b8\u30bd\u30fc\u30c8\u3001\u30d2\u30fc\u30d7\u30bd\u30fc\u30c8\u306f\u3001\u5206\u5272\u7d71\u6cbb\u6226\u7565\u3092\u9069\u7528\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u9078\u629e\u30bd\u30fc\u30c8\u3001\u30d0\u30d6\u30eb\u30bd\u30fc\u30c8\u3001\u633f\u5165\u30bd\u30fc\u30c8\u3088\u308a\u3082\u9ad8\u901f\u3067\u3059\u3002</p> <p>\u79c1\u305f\u3061\u306e\u5fc3\u306b\u306f\u7591\u554f\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\uff1a\u306a\u305c\u5206\u5272\u7d71\u6cbb\u306f\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u52b9\u7387\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u305d\u306e\u6839\u672c\u7684\u306a\u8ad6\u7406\u306f\u4f55\u3067\u3059\u304b\uff1f \u3064\u307e\u308a\u3001\u554f\u984c\u3092\u90e8\u5206\u554f\u984c\u306b\u5206\u89e3\u3057\u3001\u305d\u308c\u3089\u3092\u89e3\u6c7a\u3057\u3001\u305d\u308c\u3089\u306e\u89e3\u3092\u7d44\u307f\u5408\u308f\u305b\u3066\u5143\u306e\u554f\u984c\u306b\u5bfe\u51e6\u3059\u308b\u3053\u3068\u304c\u3001\u5143\u306e\u554f\u984c\u3092\u76f4\u63a5\u89e3\u6c7a\u3059\u308b\u3088\u308a\u3082\u52b9\u7387\u7684\u3067\u3042\u308b\u7406\u7531\u306f\u4f55\u3067\u3059\u304b\uff1f\u3053\u306e\u8cea\u554f\u306f2\u3064\u306e\u5074\u9762\u304b\u3089\u5206\u6790\u3067\u304d\u307e\u3059\uff1a\u64cd\u4f5c\u6570\u3068\u4e26\u5217\u8a08\u7b97\u3002</p>"},{"location":"chapter_divide_and_conquer/divide_and_conquer/#1","title":"1. \u00a0 \u64cd\u4f5c\u6570\u306e\u6700\u9069\u5316","text":"<p>\u300c\u30d0\u30d6\u30eb\u30bd\u30fc\u30c8\u300d\u3092\u4f8b\u306b\u3068\u308b\u3068\u3001\u9577\u3055 \\(n\\) \u306e\u914d\u5217\u3092\u51e6\u7406\u3059\u308b\u306e\u306b \\(O(n^2)\\) \u6642\u9593\u304c\u5fc5\u8981\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u914d\u5217\u3092\u4e2d\u70b9\u304b\u30892\u3064\u306e\u526f\u914d\u5217\u306b\u5206\u5272\u3059\u308b\u3068\u3057\u307e\u3059\u3002\u305d\u306e\u3088\u3046\u306a\u5206\u5272\u306b\u306f \\(O(n)\\) \u6642\u9593\u304c\u5fc5\u8981\u3067\u3059\u3002\u5404\u526f\u914d\u5217\u306e\u30bd\u30fc\u30c8\u306b\u306f \\(O((n / 2)^2)\\) \u6642\u9593\u304c\u5fc5\u8981\u3067\u3059\u3002\u305d\u3057\u30662\u3064\u306e\u526f\u914d\u5217\u306e\u30de\u30fc\u30b8\u306b\u306f \\(O(n)\\) \u6642\u9593\u304c\u5fc5\u8981\u3067\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u5168\u4f53\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f\uff1a</p> \\[ O(n + (\\frac{n}{2})^2 \\times 2 + n) = O(\\frac{n^2}{2} + 2n) \\] <p></p> <p> \u56f3 12-2 \u00a0 \u914d\u5217\u5206\u5272\u524d\u5f8c\u306e\u30d0\u30d6\u30eb\u30bd\u30fc\u30c8 </p> <p>\u4ee5\u4e0b\u306e\u4e0d\u7b49\u5f0f\u3092\u8a08\u7b97\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002\u5de6\u5074\u306f\u5206\u5272\u524d\u306e\u7dcf\u64cd\u4f5c\u6570\u3092\u8868\u3057\u3001\u53f3\u5074\u306f\u5206\u5272\u5f8c\u306e\u7dcf\u64cd\u4f5c\u6570\u3092\u305d\u308c\u305e\u308c\u8868\u3057\u307e\u3059\uff1a</p> \\[ \\begin{aligned} n^2 &amp; &gt; \\frac{n^2}{2} + 2n \\newline n^2 - \\frac{n^2}{2} - 2n &amp; &gt; 0 \\newline n(n - 4) &amp; &gt; 0 \\end{aligned} \\] <p>\u3053\u308c\u306f \\(n &gt; 4\\) \u306e\u5834\u5408\u3001\u5206\u5272\u5f8c\u306e\u64cd\u4f5c\u6570\u304c\u5c11\u306a\u304f\u3001\u3088\u308a\u826f\u3044\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306b\u3064\u306a\u304c\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u5206\u5272\u5f8c\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f\u4f9d\u7136\u3068\u3057\u3066\u4e8c\u6b21 \\(O(n^2)\\) \u3067\u3059\u304c\u3001\u8a08\u7b97\u91cf\u306e\u5b9a\u6570\u4fc2\u6570\u304c\u6e1b\u5c11\u3057\u3066\u3044\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <p>\u3055\u3089\u306b\u9032\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u526f\u914d\u5217\u3092\u305d\u306e\u4e2d\u70b9\u304b\u3089\u3055\u3089\u306b2\u3064\u306e\u526f\u914d\u5217\u306b\u5206\u5272\u3057\u7d9a\u3051\u3066\u3001\u526f\u914d\u5217\u304c1\u3064\u306e\u8981\u7d20\u306e\u307f\u306b\u306a\u308b\u307e\u3067\u7d9a\u3051\u305f\u3089\u3069\u3046\u3067\u3057\u3087\u3046\u304b\uff1f \u3053\u306e\u30a2\u30a4\u30c7\u30a2\u306f\u5b9f\u969b\u306b\u306f\u300c\u30de\u30fc\u30b8\u30bd\u30fc\u30c8\u300d\u3067\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(n \\log n)\\) \u3067\u3059\u3002</p> <p>\u5c11\u3057\u9055\u3046\u3053\u3068\u3092\u8a66\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u30022\u3064\u3067\u306f\u306a\u304f\u3001\u3088\u308a\u591a\u304f\u306e\u5206\u5272\u306b\u5206\u5272\u3057\u305f\u3089\u3069\u3046\u3067\u3057\u3087\u3046\u304b\uff1f \u4f8b\u3048\u3070\u3001\u5143\u306e\u914d\u5217\u3092 \\(k\\) \u500b\u306e\u526f\u914d\u5217\u306b\u5747\u7b49\u306b\u5206\u5272\u3057\u307e\u3059\u304b\uff1f\u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306f\u300c\u30d0\u30b1\u30c3\u30c8\u30bd\u30fc\u30c8\u300d\u3068\u975e\u5e38\u306b\u4f3c\u3066\u304a\u308a\u3001\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u306e\u30bd\u30fc\u30c8\u306b\u975e\u5e38\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002\u7406\u8ad6\u7684\u306b\u306f\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(n + k)\\) \u306b\u9054\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</p>"},{"location":"chapter_divide_and_conquer/divide_and_conquer/#2","title":"2. \u00a0 \u4e26\u5217\u8a08\u7b97\u306b\u3088\u308b\u6700\u9069\u5316","text":"<p>\u5206\u5272\u7d71\u6cbb\u306b\u3088\u3063\u3066\u751f\u6210\u3055\u308c\u308b\u90e8\u5206\u554f\u984c\u306f\u4e92\u3044\u306b\u72ec\u7acb\u3057\u3066\u3044\u308b\u3053\u3068\u304c\u5206\u304b\u3063\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u305d\u308c\u3089\u3092\u4e26\u5217\u3067\u89e3\u6c7a\u3067\u304d\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002 \u305d\u306e\u7d50\u679c\u3001\u5206\u5272\u7d71\u6cbb\u306f\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u6642\u9593\u8a08\u7b97\u91cf\u3092\u6e1b\u3089\u3059\u3060\u3051\u3067\u306a\u304f\u3001\u73fe\u4ee3\u306e\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\u306b\u3088\u308b\u4e26\u5217\u6700\u9069\u5316\u3082\u4fc3\u9032\u3057\u307e\u3059\u3002</p> <p>\u4e26\u5217\u6700\u9069\u5316\u306f\u3001\u8907\u6570\u306e\u30b3\u30a2\u3084\u30d7\u30ed\u30bb\u30c3\u30b5\u3092\u6301\u3064\u74b0\u5883\u3067\u7279\u306b\u52b9\u679c\u7684\u3067\u3059\u3002\u30b7\u30b9\u30c6\u30e0\u304c\u8907\u6570\u306e\u90e8\u5206\u554f\u984c\u3092\u540c\u6642\u306b\u51e6\u7406\u3067\u304d\u308b\u305f\u3081\u3001\u8a08\u7b97\u30ea\u30bd\u30fc\u30b9\u3092\u5b8c\u5168\u306b\u6d3b\u7528\u3057\u3001\u5168\u4f53\u7684\u306a\u5b9f\u884c\u6642\u9593\u304c\u5927\u5e45\u306b\u77ed\u7e2e\u3055\u308c\u307e\u3059\u3002</p> <p>\u4f8b\u3048\u3070\u3001\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3059\u300c\u30d0\u30b1\u30c3\u30c8\u30bd\u30fc\u30c8\u300d\u3067\u306f\u3001\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u3092\u69d8\u3005\u306a\u30d0\u30b1\u30c3\u30c8\u306b\u5747\u7b49\u306b\u5206\u89e3\u3057\u307e\u3059\u3002\u5404\u30d0\u30b1\u30c3\u30c8\u306e\u30bd\u30fc\u30c8\u4f5c\u696d\u306f\u3001\u5229\u7528\u53ef\u80fd\u306a\u8a08\u7b97\u30e6\u30cb\u30c3\u30c8\u306b\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3059\u3079\u3066\u306e\u4f5c\u696d\u304c\u5b8c\u4e86\u3059\u308b\u3068\u3001\u3059\u3079\u3066\u306e\u30bd\u30fc\u30c8\u3055\u308c\u305f\u30d0\u30b1\u30c3\u30c8\u304c\u30de\u30fc\u30b8\u3055\u308c\u3066\u6700\u7d42\u7d50\u679c\u304c\u751f\u6210\u3055\u308c\u307e\u3059\u3002</p> <p></p> <p> \u56f3 12-3 \u00a0 \u30d0\u30b1\u30c3\u30c8\u30bd\u30fc\u30c8\u306e\u4e26\u5217\u8a08\u7b97 </p>"},{"location":"chapter_divide_and_conquer/divide_and_conquer/#1213","title":"12.1.3 \u00a0 \u5206\u5272\u7d71\u6cbb\u306e\u4e00\u822c\u7684\u306a\u5fdc\u7528","text":"<p>\u5206\u5272\u7d71\u6cbb\u306f\u591a\u304f\u306e\u53e4\u5178\u7684\u306a\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002</p> <ul> <li>\u6700\u8fd1\u70b9\u5bfe\u306e\u767a\u898b\uff1a\u3053\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u70b9\u306e\u96c6\u5408\u30922\u3064\u306e\u534a\u5206\u306b\u5206\u5272\u3059\u308b\u3053\u3068\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002\u305d\u3057\u3066\u5404\u534a\u5206\u3067\u518d\u5e30\u7684\u306b\u6700\u8fd1\u70b9\u5bfe\u3092\u898b\u3064\u3051\u307e\u3059\u3002\u6700\u5f8c\u306b\u30012\u3064\u306e\u534a\u5206\u306b\u307e\u305f\u304c\u308b\u30da\u30a2\u3092\u8003\u616e\u3057\u3066\u3001\u5168\u4f53\u306e\u6700\u8fd1\u70b9\u5bfe\u3092\u898b\u3064\u3051\u307e\u3059\u3002</li> <li>\u5927\u6574\u6570\u306e\u4e57\u7b97\uff1a\u4e00\u3064\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306fKaratsuba\u3068\u547c\u3070\u308c\u307e\u3059\u3002\u5927\u6574\u6570\u306e\u4e57\u7b97\u3092\u3044\u304f\u3064\u304b\u306e\u5c0f\u3055\u306a\u6574\u6570\u306e\u4e57\u7b97\u3068\u52a0\u7b97\u306b\u5206\u89e3\u3057\u307e\u3059\u3002</li> <li>\u884c\u5217\u306e\u4e57\u7b97\uff1a\u4e00\u4f8b\u306fStrassen\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u3059\u3002\u5927\u304d\u306a\u884c\u5217\u306e\u4e57\u7b97\u3092\u8907\u6570\u306e\u5c0f\u3055\u306a\u884c\u5217\u306e\u4e57\u7b97\u3068\u52a0\u7b97\u306b\u5206\u89e3\u3057\u307e\u3059\u3002</li> <li>\u30cf\u30ce\u30a4\u306e\u5854\u554f\u984c\uff1a\u30cf\u30ce\u30a4\u306e\u5854\u554f\u984c\u306f\u518d\u5e30\u7684\u306b\u89e3\u6c7a\u3067\u304d\u3001\u5206\u5272\u7d71\u6cbb\u6226\u7565\u306e\u5178\u578b\u7684\u306a\u5fdc\u7528\u3067\u3059\u3002</li> <li>\u8ee2\u5012\u5bfe\u306e\u89e3\u6c7a\uff1a\u30b7\u30fc\u30b1\u30f3\u30b9\u3067\u3001\u524d\u306e\u6570\u304c\u5f8c\u306e\u6570\u3088\u308a\u5927\u304d\u3044\u5834\u5408\u3001\u3053\u308c\u30892\u3064\u306e\u6570\u306f\u8ee2\u5012\u5bfe\u3092\u69cb\u6210\u3057\u307e\u3059\u3002\u8ee2\u5012\u5bfe\u554f\u984c\u306e\u89e3\u6c7a\u306f\u3001\u30de\u30fc\u30b8\u30bd\u30fc\u30c8\u306e\u52a9\u3051\u3092\u501f\u308a\u3066\u3001\u5206\u5272\u7d71\u6cbb\u306e\u30a2\u30a4\u30c7\u30a2\u3092\u5229\u7528\u3067\u304d\u307e\u3059\u3002</li> </ul> <p>\u5206\u5272\u7d71\u6cbb\u306f\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3068\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u8a2d\u8a08\u306b\u3082\u5e83\u304f\u5fdc\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002</p> <ul> <li>\u4e8c\u5206\u63a2\u7d22\uff1a\u4e8c\u5206\u63a2\u7d22\u306f\u3001\u30bd\u30fc\u30c8\u6e08\u307f\u914d\u5217\u3092\u4e2d\u70b9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304b\u30892\u3064\u306e\u534a\u5206\u306b\u5206\u5272\u3057\u307e\u3059\u3002\u305d\u3057\u3066\u3001\u30bf\u30fc\u30b2\u30c3\u30c8\u5024\u3068\u4e2d\u9593\u8981\u7d20\u5024\u306e\u6bd4\u8f03\u7d50\u679c\u306b\u57fa\u3065\u3044\u3066\u3001\u4e00\u65b9\u306e\u534a\u5206\u304c\u7834\u68c4\u3055\u308c\u307e\u3059\u3002\u540c\u3058\u30d7\u30ed\u30bb\u30b9\u3067\u6b8b\u308a\u306e\u534a\u5206\u3067\u691c\u7d22\u304c\u7d9a\u884c\u3055\u308c\u3001\u30bf\u30fc\u30b2\u30c3\u30c8\u304c\u898b\u3064\u304b\u308b\u304b\u6b8b\u308a\u306e\u8981\u7d20\u304c\u306a\u304f\u306a\u308b\u307e\u3067\u7d9a\u304d\u307e\u3059\u3002</li> <li>\u30de\u30fc\u30b8\u30bd\u30fc\u30c8\uff1a\u3053\u306e\u7bc0\u306e\u5192\u982d\u3067\u3059\u3067\u306b\u7d39\u4ecb\u3057\u305f\u305f\u3081\u3001\u3055\u3089\u306a\u308b\u8a73\u8ff0\u306f\u4e0d\u8981\u3067\u3059\u3002</li> <li>\u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\uff1a\u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\u306f\u30d4\u30dc\u30c3\u30c8\u5024\u3092\u9078\u629e\u3057\u3066\u914d\u5217\u30922\u3064\u306e\u526f\u914d\u5217\u306b\u5206\u5272\u3057\u3001\u4e00\u65b9\u306f\u30d4\u30dc\u30c3\u30c8\u3088\u308a\u5c0f\u3055\u3044\u8981\u7d20\u3001\u3082\u3046\u4e00\u65b9\u306f\u30d4\u30dc\u30c3\u30c8\u3088\u308a\u5927\u304d\u3044\u8981\u7d20\u3092\u6301\u3061\u307e\u3059\u3002\u3053\u306e\u30d7\u30ed\u30bb\u30b9\u306f\u3001\u3053\u308c\u30892\u3064\u306e\u526f\u914d\u5217\u306e\u305d\u308c\u305e\u308c\u306b\u5bfe\u3057\u3066\u30011\u3064\u306e\u8981\u7d20\u306e\u307f\u3092\u4fdd\u6301\u3059\u308b\u307e\u3067\u7d9a\u304d\u307e\u3059\u3002</li> <li>\u30d0\u30b1\u30c3\u30c8\u30bd\u30fc\u30c8\uff1a\u30d0\u30b1\u30c3\u30c8\u30bd\u30fc\u30c8\u306e\u57fa\u672c\u7684\u306a\u30a2\u30a4\u30c7\u30a2\u306f\u3001\u30c7\u30fc\u30bf\u3092\u8907\u6570\u306e\u30d0\u30b1\u30c3\u30c8\u306b\u5206\u6563\u3055\u305b\u308b\u3053\u3068\u3067\u3059\u3002\u5404\u30d0\u30b1\u30c3\u30c8\u5185\u306e\u8981\u7d20\u3092\u30bd\u30fc\u30c8\u3057\u305f\u5f8c\u3001\u30d0\u30b1\u30c3\u30c8\u304b\u3089\u9806\u5e8f\u3088\u304f\u8981\u7d20\u3092\u53d6\u5f97\u3057\u3066\u9806\u5e8f\u4ed8\u3051\u3089\u308c\u305f\u914d\u5217\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002</li> <li>\u6728\uff1a\u4f8b\u3048\u3070\u3001\u4e8c\u5206\u63a2\u7d22\u6728\u3001AVL\u6728\u3001\u8d64\u9ed2\u6728\u3001B\u6728\u3001B+\u6728\u306a\u3069\u3002\u305d\u306e\u64cd\u4f5c\uff08\u691c\u7d22\u3001\u633f\u5165\u3001\u524a\u9664\uff09\u306f\u3059\u3079\u3066\u5206\u5272\u7d71\u6cbb\u6226\u7565\u306e\u5fdc\u7528\u3068\u898b\u306a\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</li> <li>\u30d2\u30fc\u30d7\uff1a\u30d2\u30fc\u30d7\u306f\u7279\u5225\u306a\u30bf\u30a4\u30d7\u306e\u5b8c\u5168\u4e8c\u5206\u6728\u3067\u3059\u3002\u305d\u306e\u69d8\u3005\u306a\u64cd\u4f5c\uff08\u633f\u5165\u3001\u524a\u9664\u3001\u30d2\u30fc\u30d7\u5316\uff09\u306f\u3001\u5b9f\u969b\u306b\u5206\u5272\u7d71\u6cbb\u306e\u30a2\u30a4\u30c7\u30a2\u3092\u542b\u610f\u3057\u3066\u3044\u307e\u3059\u3002</li> <li>\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\uff1a\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u306f\u76f4\u63a5\u5206\u5272\u7d71\u6cbb\u3092\u9069\u7528\u3057\u307e\u305b\u3093\u304c\u3001\u4e00\u90e8\u306e\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u89e3\u6c7a\u30bd\u30ea\u30e5\u30fc\u30b7\u30e7\u30f3\u306f\u9593\u63a5\u7684\u306b\u3053\u306e\u6226\u7565\u3092\u9069\u7528\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u30c1\u30a7\u30a4\u30f3\u6cd5\u306e\u9577\u3044\u30ea\u30b9\u30c8\u306f\u3001\u30af\u30a8\u30ea\u52b9\u7387\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306b\u8d64\u9ed2\u6728\u306b\u5909\u63db\u3055\u308c\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002</li> </ul> <p>**\u5206\u5272\u7d71\u6cbb\u306f\u5de7\u5999\u306b\u6d78\u900f\u3059\u308b\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u30a2\u30a4\u30c7\u30a2**\u3067\u3042\u308a\u3001\u69d8\u3005\u306a\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3068\u30c7\u30fc\u30bf\u69cb\u9020\u306b\u7d44\u307f\u8fbc\u307e\u308c\u3066\u3044\u308b\u3053\u3068\u304c\u5206\u304b\u308a\u307e\u3059\u3002</p>"},{"location":"chapter_divide_and_conquer/hanota_problem/","title":"12.4 \u00a0 \u30cf\u30ce\u30a4\u306e\u5854\u554f\u984c","text":"<p>\u30de\u30fc\u30b8\u30bd\u30fc\u30c8\u3068\u4e8c\u5206\u6728\u69cb\u7bc9\u306e\u4e21\u65b9\u3067\u3001\u5143\u306e\u554f\u984c\u30922\u3064\u306e\u90e8\u5206\u554f\u984c\u306b\u5206\u89e3\u3057\u3001\u305d\u308c\u305e\u308c\u304c\u5143\u306e\u554f\u984c\u306e\u30b5\u30a4\u30ba\u306e\u534a\u5206\u3067\u3057\u305f\u3002\u3057\u304b\u3057\u3001\u30cf\u30ce\u30a4\u306e\u5854\u3067\u306f\u3001\u7570\u306a\u308b\u5206\u89e3\u6226\u7565\u3092\u63a1\u7528\u3057\u307e\u3059\u3002</p> <p>Question</p> <p>3\u3064\u306e\u67f1\u304c\u3042\u308a\u3001\u305d\u308c\u305e\u308c <code>A</code>\u3001<code>B</code>\u3001<code>C</code> \u3068\u8868\u8a18\u3055\u308c\u307e\u3059\u3002\u6700\u521d\u3001\u67f1 <code>A</code> \u306b\u306f \\(n\\) \u679a\u306e\u5186\u76e4\u304c\u3042\u308a\u3001\u4e0a\u304b\u3089\u4e0b\u306b\u5411\u304b\u3063\u3066\u6607\u9806\u306e\u30b5\u30a4\u30ba\u3067\u914d\u7f6e\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u79c1\u305f\u3061\u306e\u30bf\u30b9\u30af\u306f\u3001\u3053\u308c\u3089\u306e \\(n\\) \u679a\u306e\u5186\u76e4\u3092\u67f1 <code>C</code> \u306b\u79fb\u52d5\u3057\u3001\u5143\u306e\u9806\u5e8f\u3092\u7dad\u6301\u3059\u308b\u3053\u3068\u3067\u3059\uff08\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\uff09\u3002\u79fb\u52d5\u4e2d\u306b\u306f\u4ee5\u4e0b\u306e\u30eb\u30fc\u30eb\u304c\u9069\u7528\u3055\u308c\u307e\u3059\uff1a</p> <ol> <li>\u5186\u76e4\u306f\u67f1\u306e\u4e0a\u90e8\u304b\u3089\u306e\u307f\u53d6\u308a\u9664\u304f\u3053\u3068\u304c\u3067\u304d\u3001\u5225\u306e\u67f1\u306e\u4e0a\u90e8\u306b\u7f6e\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u4e00\u5ea6\u306b\u79fb\u52d5\u3067\u304d\u308b\u306e\u306f1\u679a\u306e\u5186\u76e4\u306e\u307f\u3067\u3059\u3002</li> <li>\u5c0f\u3055\u3044\u5186\u76e4\u306f\u5e38\u306b\u5927\u304d\u3044\u5186\u76e4\u306e\u4e0a\u306b\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</li> </ol> <p></p> <p> \u56f3 12-10 \u00a0 \u30cf\u30ce\u30a4\u306e\u5854\u306e\u4f8b </p> <p>\u30b5\u30a4\u30ba \\(i\\) \u306e\u30cf\u30ce\u30a4\u306e\u5854\u554f\u984c\u3092 \\(f(i)\\) \u3068\u8868\u8a18\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\\(f(3)\\) \u306f3\u679a\u306e\u5186\u76e4\u3092\u67f1 <code>A</code> \u304b\u3089\u67f1 <code>C</code> \u306b\u79fb\u52d5\u3059\u308b\u3053\u3068\u3092\u8868\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_divide_and_conquer/hanota_problem/#1","title":"1. \u00a0 \u57fa\u672c\u30b1\u30fc\u30b9\u3092\u8003\u3048\u308b","text":"<p>\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u554f\u984c \\(f(1)\\)\uff08\u5186\u76e4\u304c1\u679a\u306e\u307f\uff09\u306b\u3064\u3044\u3066\u306f\u3001<code>A</code> \u304b\u3089 <code>C</code> \u306b\u76f4\u63a5\u79fb\u52d5\u3067\u304d\u307e\u3059\u3002</p> &lt;1&gt;&lt;2&gt; <p></p> <p></p> <p> \u56f3 12-11 \u00a0 \u30b5\u30a4\u30ba1\u306e\u554f\u984c\u306e\u89e3 </p> <p>\\(f(2)\\)\uff08\u5186\u76e4\u304c2\u679a\uff09\u306b\u3064\u3044\u3066\u306f\u3001**\u67f1 <code>B</code> \u306e\u52a9\u3051\u3092\u501f\u308a\u3066\u5c0f\u3055\u3044\u5186\u76e4\u3092\u5927\u304d\u3044\u5186\u76e4\u306e\u4e0a\u306b\u4fdd\u3064**\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\uff1a</p> <ol> <li>\u307e\u305a\u3001\u5c0f\u3055\u3044\u5186\u76e4\u3092 <code>A</code> \u304b\u3089 <code>B</code> \u306b\u79fb\u52d5\u3057\u307e\u3059\u3002</li> <li>\u6b21\u306b\u3001\u5927\u304d\u3044\u5186\u76e4\u3092 <code>A</code> \u304b\u3089 <code>C</code> \u306b\u79fb\u52d5\u3057\u307e\u3059\u3002</li> <li>\u6700\u5f8c\u306b\u3001\u5c0f\u3055\u3044\u5186\u76e4\u3092 <code>B</code> \u304b\u3089 <code>C</code> \u306b\u79fb\u52d5\u3057\u307e\u3059\u3002</li> </ol> &lt;1&gt;&lt;2&gt;&lt;3&gt;&lt;4&gt; <p></p> <p></p> <p></p> <p></p> <p> \u56f3 12-12 \u00a0 \u30b5\u30a4\u30ba2\u306e\u554f\u984c\u306e\u89e3 </p> <p>\\(f(2)\\) \u3092\u89e3\u6c7a\u3059\u308b\u904e\u7a0b\u306f\u6b21\u306e\u3088\u3046\u306b\u8981\u7d04\u3067\u304d\u307e\u3059\uff1a<code>B</code> \u306e\u52a9\u3051\u3092\u501f\u308a\u30662\u679a\u306e\u5186\u76e4\u3092 <code>A</code> \u304b\u3089 <code>C</code> \u306b\u79fb\u52d5\u3059\u308b\u3002\u3053\u3053\u3067\u3001<code>C</code> \u3092\u30bf\u30fc\u30b2\u30c3\u30c8\u67f1\u3001<code>B</code> \u3092\u30d0\u30c3\u30d5\u30a1\u67f1\u3068\u547c\u3073\u307e\u3059\u3002</p>"},{"location":"chapter_divide_and_conquer/hanota_problem/#2","title":"2. \u00a0 \u90e8\u5206\u554f\u984c\u306e\u5206\u89e3","text":"<p>\u554f\u984c \\(f(3)\\)\uff08\u3064\u307e\u308a\u3001\u5186\u76e4\u304c3\u679a\u306e\u5834\u5408\uff09\u306b\u3064\u3044\u3066\u306f\u3001\u72b6\u6cc1\u304c\u3084\u3084\u8907\u96d1\u306b\u306a\u308a\u307e\u3059\u3002</p> <p>\u3059\u3067\u306b \\(f(1)\\) \u3068 \\(f(2)\\) \u306e\u89e3\u304c\u5206\u304b\u3063\u3066\u3044\u308b\u306e\u3067\u3001\u5206\u5272\u7d71\u6cbb\u306e\u89b3\u70b9\u3092\u63a1\u7528\u3057\u3001<code>A</code> \u306e\u4e0a\u306e2\u679a\u306e\u5186\u76e4\u30921\u3064\u306e\u5358\u4f4d\u3068\u3057\u3066\u6271\u3044\u3001\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3059\u30b9\u30c6\u30c3\u30d7\u3092\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u30013\u679a\u306e\u5186\u76e4\u3092 <code>A</code> \u304b\u3089 <code>C</code> \u306b\u6b63\u5e38\u306b\u79fb\u52d5\u3067\u304d\u307e\u3059\u3002</p> <ol> <li><code>B</code> \u3092\u30bf\u30fc\u30b2\u30c3\u30c8\u67f1\u3001<code>C</code> \u3092\u30d0\u30c3\u30d5\u30a1\u67f1\u3068\u3057\u3066\u30012\u679a\u306e\u5186\u76e4\u3092 <code>A</code> \u304b\u3089 <code>B</code> \u306b\u79fb\u52d5\u3057\u307e\u3059\u3002</li> <li>\u6b8b\u308a\u306e\u5186\u76e4\u3092 <code>A</code> \u304b\u3089\u76f4\u63a5 <code>C</code> \u306b\u79fb\u52d5\u3057\u307e\u3059\u3002</li> <li><code>C</code> \u3092\u30bf\u30fc\u30b2\u30c3\u30c8\u67f1\u3001<code>A</code> \u3092\u30d0\u30c3\u30d5\u30a1\u67f1\u3068\u3057\u3066\u30012\u679a\u306e\u5186\u76e4\u3092 <code>B</code> \u304b\u3089 <code>C</code> \u306b\u79fb\u52d5\u3057\u307e\u3059\u3002</li> </ol> &lt;1&gt;&lt;2&gt;&lt;3&gt;&lt;4&gt; <p></p> <p></p> <p></p> <p></p> <p> \u56f3 12-13 \u00a0 \u30b5\u30a4\u30ba3\u306e\u554f\u984c\u306e\u89e3 </p> <p>\u672c\u8cea\u7684\u306b\u3001\\(f(3)\\) \u30922\u3064\u306e \\(f(2)\\) \u90e8\u5206\u554f\u984c\u30681\u3064\u306e \\(f(1)\\) \u90e8\u5206\u554f\u984c\u306b\u5206\u89e3\u3057\u307e\u3059\u3002\u3053\u308c\u30893\u3064\u306e\u90e8\u5206\u554f\u984c\u3092\u9806\u6b21\u89e3\u6c7a\u3059\u308b\u3053\u3068\u3067\u3001\u5143\u306e\u554f\u984c\u304c\u89e3\u6c7a\u3055\u308c\u3001\u90e8\u5206\u554f\u984c\u304c\u72ec\u7acb\u3057\u3066\u304a\u308a\u3001\u305d\u308c\u3089\u306e\u89e3\u3092\u30de\u30fc\u30b8\u3067\u304d\u308b\u3053\u3068\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002</p> <p>\u3053\u3053\u304b\u3089\u3001\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3059\u30cf\u30ce\u30a4\u306e\u5854\u306e\u5206\u5272\u7d71\u6cbb\u6226\u7565\u3092\u8981\u7d04\u3067\u304d\u307e\u3059\u3002\u5143\u306e\u554f\u984c \\(f(n)\\) \u30922\u3064\u306e\u90e8\u5206\u554f\u984c \\(f(n-1)\\) \u30681\u3064\u306e\u90e8\u5206\u554f\u984c \\(f(1)\\) \u306b\u5206\u5272\u3057\u3001\u4ee5\u4e0b\u306e\u9806\u5e8f\u3067\u3053\u308c\u30893\u3064\u306e\u90e8\u5206\u554f\u984c\u3092\u89e3\u6c7a\u3057\u307e\u3059\uff1a</p> <ol> <li><code>C</code> \u3092\u30d0\u30c3\u30d5\u30a1\u3068\u3057\u3066\u4f7f\u7528\u3057\u3001\\(n-1\\) \u679a\u306e\u5186\u76e4\u3092 <code>A</code> \u304b\u3089 <code>B</code> \u306b\u79fb\u52d5\u3057\u307e\u3059\u3002</li> <li>\u6b8b\u308a\u306e\u5186\u76e4\u3092 <code>A</code> \u304b\u3089\u76f4\u63a5 <code>C</code> \u306b\u79fb\u52d5\u3057\u307e\u3059\u3002</li> <li><code>A</code> \u3092\u30d0\u30c3\u30d5\u30a1\u3068\u3057\u3066\u4f7f\u7528\u3057\u3001\\(n-1\\) \u679a\u306e\u5186\u76e4\u3092 <code>B</code> \u304b\u3089 <code>C</code> \u306b\u79fb\u52d5\u3057\u307e\u3059\u3002</li> </ol> <p>\u5404 \\(f(n-1)\\) \u90e8\u5206\u554f\u984c\u306b\u3064\u3044\u3066\u3001\u540c\u3058\u518d\u5e30\u5206\u5272\u3092\u9069\u7528\u3067\u304d\u3001\u6700\u5c0f\u306e\u90e8\u5206\u554f\u984c \\(f(1)\\) \u306b\u5230\u9054\u3059\u308b\u307e\u3067\u7d9a\u3051\u307e\u3059\u3002\\(f(1)\\) \u306f\u5358\u4e00\u306e\u79fb\u52d5\u306e\u307f\u304c\u5fc5\u8981\u3067\u3042\u308b\u3053\u3068\u304c\u3059\u3067\u306b\u5206\u304b\u3063\u3066\u3044\u308b\u305f\u3081\u3001\u89e3\u6c7a\u3059\u308b\u306e\u306f\u7c21\u5358\u3067\u3059\u3002</p> <p></p> <p> \u56f3 12-14 \u00a0 \u30cf\u30ce\u30a4\u306e\u5854\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306e\u5206\u5272\u7d71\u6cbb\u6226\u7565 </p>"},{"location":"chapter_divide_and_conquer/hanota_problem/#3","title":"3. \u00a0 \u30b3\u30fc\u30c9\u5b9f\u88c5","text":"<p>\u30b3\u30fc\u30c9\u3067\u306f\u3001\u518d\u5e30\u95a2\u6570 <code>dfs(i, src, buf, tar)</code> \u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u67f1 <code>src</code> \u304b\u3089\u4e0a\u306e \\(i\\) \u679a\u306e\u5186\u76e4\u3092\u67f1 <code>tar</code> \u306b\u79fb\u52d5\u3057\u3001\u67f1 <code>buf</code> \u3092\u30d0\u30c3\u30d5\u30a1\u3068\u3057\u3066\u4f7f\u7528\u3057\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby hanota.py<pre><code>def move(src: list[int], tar: list[int]):\n \"\"\"\u5186\u76e4\u3092\u79fb\u52d5\"\"\"\n # src \u306e\u4e0a\u304b\u3089\u5186\u76e4\u3092\u53d6\u308a\u51fa\u3059\n pan = src.pop()\n # \u5186\u76e4\u3092 tar \u306e\u4e0a\u306b\u7f6e\u304f\n tar.append(pan)\n\ndef dfs(i: int, src: list[int], buf: list[int], tar: list[int]):\n \"\"\"\u30cf\u30ce\u30a4\u306e\u5854\u554f\u984c f(i) \u3092\u89e3\u304f\"\"\"\n # src \u306b\u5186\u76e4\u304c 1 \u3064\u3060\u3051\u6b8b\u3063\u3066\u3044\u308b\u5834\u5408\u3001\u305d\u308c\u3092 tar \u306b\u79fb\u52d5\n if i == 1:\n move(src, tar)\n return\n # \u90e8\u5206\u554f\u984c f(i-1)\uff1atar \u306e\u52a9\u3051\u3092\u501f\u308a\u3066 src \u306e\u4e0a\u306e i-1 \u500b\u306e\u5186\u76e4\u3092 buf \u306b\u79fb\u52d5\n dfs(i - 1, src, tar, buf)\n # \u90e8\u5206\u554f\u984c f(1)\uff1a\u6b8b\u308a\u306e 1 \u500b\u306e\u5186\u76e4\u3092 src \u304b\u3089 tar \u306b\u79fb\u52d5\n move(src, tar)\n # \u90e8\u5206\u554f\u984c f(i-1)\uff1asrc \u306e\u52a9\u3051\u3092\u501f\u308a\u3066 buf \u306e\u4e0a\u306e i-1 \u500b\u306e\u5186\u76e4\u3092 tar \u306b\u79fb\u52d5\n dfs(i - 1, buf, src, tar)\n\ndef solve_hanota(A: list[int], B: list[int], C: list[int]):\n \"\"\"\u30cf\u30ce\u30a4\u306e\u5854\u554f\u984c\u3092\u89e3\u304f\"\"\"\n n = len(A)\n # B \u306e\u52a9\u3051\u3092\u501f\u308a\u3066 A \u306e\u4e0a\u306e n \u500b\u306e\u5186\u76e4\u3092 C \u306b\u79fb\u52d5\n dfs(n, A, B, C)\n</code></pre> hanota.cpp<pre><code>/* \u5186\u76e4\u3092\u79fb\u52d5 */\nvoid move(vector&lt;int&gt; &amp;src, vector&lt;int&gt; &amp;tar) {\n // src \u306e\u6700\u4e0a\u90e8\u304b\u3089\u5186\u76e4\u3092\u53d6\u308a\u51fa\u3059\n int pan = src.back();\n src.pop_back();\n // \u5186\u76e4\u3092 tar \u306e\u6700\u4e0a\u90e8\u306b\u914d\u7f6e\n tar.push_back(pan);\n}\n\n/* \u30cf\u30ce\u30a4\u306e\u5854\u554f\u984c f(i) \u3092\u89e3\u304f */\nvoid dfs(int i, vector&lt;int&gt; &amp;src, vector&lt;int&gt; &amp;buf, vector&lt;int&gt; &amp;tar) {\n // src \u306b\u5186\u76e4\u304c1\u3064\u3060\u3051\u6b8b\u3063\u3066\u3044\u308b\u5834\u5408\u3001\u305d\u308c\u3092 tar \u306b\u79fb\u52d5\n if (i == 1) {\n move(src, tar);\n return;\n }\n // \u90e8\u5206\u554f\u984c f(i-1)\uff1atar \u306e\u52a9\u3051\u3092\u501f\u308a\u3066\u3001\u4e0a\u4f4d i-1 \u500b\u306e\u5186\u76e4\u3092 src \u304b\u3089 buf \u306b\u79fb\u52d5\n dfs(i - 1, src, tar, buf);\n // \u90e8\u5206\u554f\u984c f(1)\uff1a\u6b8b\u308a\u306e1\u3064\u306e\u5186\u76e4\u3092 src \u304b\u3089 tar \u306b\u79fb\u52d5\n move(src, tar);\n // \u90e8\u5206\u554f\u984c f(i-1)\uff1asrc \u306e\u52a9\u3051\u3092\u501f\u308a\u3066\u3001\u4e0a\u4f4d i-1 \u500b\u306e\u5186\u76e4\u3092 buf \u304b\u3089 tar \u306b\u79fb\u52d5\n dfs(i - 1, buf, src, tar);\n}\n\n/* \u30cf\u30ce\u30a4\u306e\u5854\u554f\u984c\u3092\u89e3\u304f */\nvoid solveHanota(vector&lt;int&gt; &amp;A, vector&lt;int&gt; &amp;B, vector&lt;int&gt; &amp;C) {\n int n = A.size();\n // B \u306e\u52a9\u3051\u3092\u501f\u308a\u3066\u3001\u4e0a\u4f4d n \u500b\u306e\u5186\u76e4\u3092 A \u304b\u3089 C \u306b\u79fb\u52d5\n dfs(n, A, B, C);\n}\n</code></pre> hanota.java<pre><code>/* \u5186\u76e4\u3092\u79fb\u52d5 */\nvoid move(List&lt;Integer&gt; src, List&lt;Integer&gt; tar) {\n // src \u306e\u6700\u4e0a\u90e8\u304b\u3089\u5186\u76e4\u3092\u53d6\u308a\u51fa\u3059\n Integer pan = src.remove(src.size() - 1);\n // \u5186\u76e4\u3092 tar \u306e\u6700\u4e0a\u90e8\u306b\u914d\u7f6e\n tar.add(pan);\n}\n\n/* \u30cf\u30ce\u30a4\u306e\u5854\u554f\u984c f(i) \u3092\u89e3\u304f */\nvoid dfs(int i, List&lt;Integer&gt; src, List&lt;Integer&gt; buf, List&lt;Integer&gt; tar) {\n // src \u306b\u5186\u76e4\u304c1\u3064\u3060\u3051\u6b8b\u3063\u3066\u3044\u308b\u5834\u5408\u3001\u305d\u308c\u3092 tar \u306b\u79fb\u52d5\n if (i == 1) {\n move(src, tar);\n return;\n }\n // \u90e8\u5206\u554f\u984c f(i-1)\uff1atar \u306e\u52a9\u3051\u3092\u501f\u308a\u3066\u3001\u4e0a\u4f4d i-1 \u500b\u306e\u5186\u76e4\u3092 src \u304b\u3089 buf \u306b\u79fb\u52d5\n dfs(i - 1, src, tar, buf);\n // \u90e8\u5206\u554f\u984c f(1)\uff1a\u6b8b\u308a\u306e1\u3064\u306e\u5186\u76e4\u3092 src \u304b\u3089 tar \u306b\u79fb\u52d5\n move(src, tar);\n // \u90e8\u5206\u554f\u984c f(i-1)\uff1asrc \u306e\u52a9\u3051\u3092\u501f\u308a\u3066\u3001\u4e0a\u4f4d i-1 \u500b\u306e\u5186\u76e4\u3092 buf \u304b\u3089 tar \u306b\u79fb\u52d5\n dfs(i - 1, buf, src, tar);\n}\n\n/* \u30cf\u30ce\u30a4\u306e\u5854\u554f\u984c\u3092\u89e3\u304f */\nvoid solveHanota(List&lt;Integer&gt; A, List&lt;Integer&gt; B, List&lt;Integer&gt; C) {\n int n = A.size();\n // B \u306e\u52a9\u3051\u3092\u501f\u308a\u3066\u3001\u4e0a\u4f4d n \u500b\u306e\u5186\u76e4\u3092 A \u304b\u3089 C \u306b\u79fb\u52d5\n dfs(n, A, B, C);\n}\n</code></pre> hanota.cs<pre><code>[class]{hanota}-[func]{Move}\n\n[class]{hanota}-[func]{DFS}\n\n[class]{hanota}-[func]{SolveHanota}\n</code></pre> hanota.go<pre><code>[class]{}-[func]{move}\n\n[class]{}-[func]{dfsHanota}\n\n[class]{}-[func]{solveHanota}\n</code></pre> hanota.swift<pre><code>[class]{}-[func]{move}\n\n[class]{}-[func]{dfs}\n\n[class]{}-[func]{solveHanota}\n</code></pre> hanota.js<pre><code>[class]{}-[func]{move}\n\n[class]{}-[func]{dfs}\n\n[class]{}-[func]{solveHanota}\n</code></pre> hanota.ts<pre><code>[class]{}-[func]{move}\n\n[class]{}-[func]{dfs}\n\n[class]{}-[func]{solveHanota}\n</code></pre> hanota.dart<pre><code>[class]{}-[func]{move}\n\n[class]{}-[func]{dfs}\n\n[class]{}-[func]{solveHanota}\n</code></pre> hanota.rs<pre><code>[class]{}-[func]{move_pan}\n\n[class]{}-[func]{dfs}\n\n[class]{}-[func]{solve_hanota}\n</code></pre> hanota.c<pre><code>[class]{}-[func]{move}\n\n[class]{}-[func]{dfs}\n\n[class]{}-[func]{solveHanota}\n</code></pre> hanota.kt<pre><code>[class]{}-[func]{move}\n\n[class]{}-[func]{dfs}\n\n[class]{}-[func]{solveHanota}\n</code></pre> hanota.rb<pre><code>[class]{}-[func]{move}\n\n[class]{}-[func]{dfs}\n\n[class]{}-[func]{solve_hanota}\n</code></pre> <p>\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u30cf\u30ce\u30a4\u306e\u5854\u554f\u984c\u306f\u9ad8\u3055 \\(n\\) \u306e\u518d\u5e30\u6728\u3068\u3057\u3066\u8996\u899a\u5316\u3067\u304d\u307e\u3059\u3002\u5404\u30ce\u30fc\u30c9\u306f\u90e8\u5206\u554f\u984c\u3092\u8868\u3057\u3001<code>dfs()</code> \u306e\u547c\u3073\u51fa\u3057\u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(2^n)\\)\u3001\u7a7a\u9593\u8a08\u7b97\u91cf\u306f \\(O(n)\\) \u3067\u3059\u3002</p> <p></p> <p> \u56f3 12-15 \u00a0 \u30cf\u30ce\u30a4\u306e\u5854\u306e\u518d\u5e30\u6728 </p> <p>Quote</p> <p>\u30cf\u30ce\u30a4\u306e\u5854\u306f\u53e4\u4ee3\u306e\u4f1d\u8aac\u306b\u7531\u6765\u3057\u307e\u3059\u3002\u53e4\u4ee3\u30a4\u30f3\u30c9\u306e\u5bfa\u9662\u3067\u3001\u50e7\u4fb6\u305f\u3061\u306f3\u672c\u306e\u9ad8\u3044\u30c0\u30a4\u30e4\u30e2\u30f3\u30c9\u306e\u67f1\u3068\u3001\u7570\u306a\u308b\u30b5\u30a4\u30ba\u306e \\(64\\) \u679a\u306e\u91d1\u306e\u5186\u76e4\u3092\u6301\u3063\u3066\u3044\u307e\u3057\u305f\u3002\u5f7c\u3089\u306f\u3001\u6700\u5f8c\u306e\u5186\u76e4\u304c\u6b63\u3057\u304f\u7f6e\u304b\u308c\u305f\u3068\u304d\u3001\u4e16\u754c\u304c\u7d42\u308f\u308b\u3068\u4fe1\u3058\u3066\u3044\u307e\u3057\u305f\u3002</p> <p>\u3057\u304b\u3057\u3001\u50e7\u4fb6\u305f\u3061\u304c1\u79d2\u306b1\u679a\u306e\u5186\u76e4\u3092\u79fb\u52d5\u3057\u305f\u3068\u3057\u3066\u3082\u3001\u7d04 \\(2^{64} \\approx 1.84\u00d710^{19}\\) \u2014\u7d045850\u5104\u5e74\u2014\u304b\u304b\u308a\u3001\u5b87\u5b99\u306e\u5e74\u9f62\u306e\u73fe\u5728\u306e\u63a8\u5b9a\u3092\u306f\u308b\u304b\u306b\u8d85\u3048\u3066\u3044\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u3053\u306e\u4f1d\u8aac\u304c\u771f\u5b9f\u3067\u3042\u308c\u3070\u3001\u4e16\u754c\u306e\u7d42\u308f\u308a\u306b\u3064\u3044\u3066\u5fc3\u914d\u3059\u308b\u5fc5\u8981\u306f\u304a\u305d\u3089\u304f\u306a\u3044\u3067\u3057\u3087\u3046\u3002</p>"},{"location":"chapter_divide_and_conquer/summary/","title":"12.5 \u00a0 \u307e\u3068\u3081","text":"<ul> <li>\u5206\u5272\u7d71\u6cbb\u306f\u4e00\u822c\u7684\u306a\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u8a2d\u8a08\u6226\u7565\u3067\u3001\u5206\u5272\uff08\u5206\u5272\uff09\u3068\u7d71\u6cbb\uff08\u30de\u30fc\u30b8\uff09\u306e2\u3064\u306e\u6bb5\u968e\u304b\u3089\u69cb\u6210\u3055\u308c\u3001\u4e00\u822c\u7684\u306b\u518d\u5e30\u3092\u4f7f\u7528\u3057\u3066\u5b9f\u88c5\u3055\u308c\u307e\u3059\u3002</li> <li>\u554f\u984c\u304c\u5206\u5272\u7d71\u6cbb\u30a2\u30d7\u30ed\u30fc\u30c1\u306b\u9069\u3057\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u5224\u65ad\u3059\u308b\u305f\u3081\u306b\u3001\u554f\u984c\u304c\u5206\u89e3\u53ef\u80fd\u304b\u3069\u3046\u304b\u3001\u90e8\u5206\u554f\u984c\u304c\u72ec\u7acb\u3057\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3001\u90e8\u5206\u554f\u984c\u3092\u30de\u30fc\u30b8\u3067\u304d\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002</li> <li>\u30de\u30fc\u30b8\u30bd\u30fc\u30c8\u306f\u5206\u5272\u7d71\u6cbb\u6226\u7565\u306e\u5178\u578b\u7684\u306a\u4f8b\u3067\u3059\u3002\u914d\u5217\u3092\u518d\u5e30\u7684\u306b2\u3064\u306e\u7b49\u3057\u3044\u9577\u3055\u306e\u526f\u914d\u5217\u306b\u5206\u5272\u3057\u30011\u3064\u306e\u8981\u7d20\u306e\u307f\u304c\u6b8b\u308b\u307e\u3067\u7d9a\u3051\u3001\u6b21\u306b\u3053\u308c\u3089\u306e\u526f\u914d\u5217\u3092\u5c64\u3054\u3068\u306b\u30de\u30fc\u30b8\u3057\u3066\u30bd\u30fc\u30c8\u3092\u5b8c\u4e86\u3057\u307e\u3059\u3002</li> <li>\u5206\u5272\u7d71\u6cbb\u6226\u7565\u306e\u5c0e\u5165\u306f\u3001\u3057\u3070\u3057\u3070\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u52b9\u7387\u3092\u5411\u4e0a\u3055\u305b\u307e\u3059\u3002\u4e00\u65b9\u3067\u306f\u64cd\u4f5c\u6570\u3092\u6e1b\u3089\u3057\u3001\u4ed6\u65b9\u3067\u306f\u5206\u5272\u5f8c\u306e\u30b7\u30b9\u30c6\u30e0\u306e\u4e26\u5217\u6700\u9069\u5316\u3092\u4fc3\u9032\u3057\u307e\u3059\u3002</li> <li>\u5206\u5272\u7d71\u6cbb\u306f\u591a\u6570\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u554f\u984c\u306b\u9069\u7528\u3067\u304d\u3001\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u8a2d\u8a08\u3067\u5e83\u304f\u4f7f\u7528\u3055\u308c\u3001\u591a\u304f\u306e\u30b7\u30ca\u30ea\u30aa\u306b\u73fe\u308c\u307e\u3059\u3002</li> <li>\u7dcf\u5f53\u305f\u308a\u691c\u7d22\u3068\u6bd4\u8f03\u3057\u3066\u3001\u9069\u5fdc\u691c\u7d22\u306f\u3088\u308a\u52b9\u7387\u7684\u3067\u3059\u3002\u6642\u9593\u8a08\u7b97\u91cf\u304c \\(O(\\log n)\\) \u306e\u691c\u7d22\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u3001\u901a\u5e38\u5206\u5272\u7d71\u6cbb\u6226\u7565\u306b\u57fa\u3065\u3044\u3066\u3044\u307e\u3059\u3002</li> <li>\u4e8c\u5206\u63a2\u7d22\u306f\u5206\u5272\u7d71\u6cbb\u6226\u7565\u306e\u3082\u3046\u4e00\u3064\u306e\u53e4\u5178\u7684\u306a\u5fdc\u7528\u3067\u3059\u3002\u90e8\u5206\u554f\u984c\u306e\u89e3\u306e\u30de\u30fc\u30b8\u3092\u542b\u307e\u305a\u3001\u518d\u5e30\u7684\u306a\u5206\u5272\u7d71\u6cbb\u30a2\u30d7\u30ed\u30fc\u30c1\u3067\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002</li> <li>\u4e8c\u5206\u6728\u69cb\u7bc9\u554f\u984c\u3067\u306f\u3001\u6728\u306e\u69cb\u7bc9\uff08\u5143\u306e\u554f\u984c\uff09\u3092\u5de6\u306e\u90e8\u5206\u6728\u3068\u53f3\u306e\u90e8\u5206\u6728\u306e\u69cb\u7bc9\uff08\u90e8\u5206\u554f\u984c\uff09\u306b\u5206\u5272\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u524d\u9806\u8d70\u67fb\u3068\u4e2d\u9806\u8d70\u67fb\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u7bc4\u56f2\u3092\u5206\u5272\u3059\u308b\u3053\u3068\u3067\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002</li> <li>\u30cf\u30ce\u30a4\u306e\u5854\u554f\u984c\u3067\u306f\u3001\u30b5\u30a4\u30ba \\(n\\) \u306e\u554f\u984c\u3092\u30b5\u30a4\u30ba \\(n-1\\) \u306e2\u3064\u306e\u90e8\u5206\u554f\u984c\u3068\u30b5\u30a4\u30ba \\(1\\) \u306e1\u3064\u306e\u90e8\u5206\u554f\u984c\u306b\u5206\u89e3\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u30893\u3064\u306e\u90e8\u5206\u554f\u984c\u3092\u9806\u6b21\u89e3\u6c7a\u3059\u308b\u3053\u3068\u3067\u3001\u5143\u306e\u554f\u984c\u304c\u89e3\u6c7a\u3055\u308c\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_dynamic_programming/","title":"\u7b2c 14 \u7ae0 \u00a0 \u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0","text":"<p>Abstract</p> <p>\u5ddd\u304c\u6d41\u308c\u3066\u6d77\u306b\u6ce8\u3050\u3088\u3046\u306b\u3001</p> <p>\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306f\u5c0f\u3055\u306a\u554f\u984c\u306e\u89e3\u3092\u7e54\u308a\u5408\u308f\u305b\u3066\u3001\u3088\u308a\u5927\u304d\u306a\u554f\u984c\u306e\u89e3\u3078\u3068\u5c0e\u304d\u307e\u3059\u3002\u4e00\u6b69\u4e00\u6b69\u9032\u3093\u3067\u3001\u6700\u7d42\u7684\u306a\u7b54\u3048\u304c\u5f85\u3064\u5f7c\u5cb8\u3078\u3068\u5411\u304b\u3044\u307e\u3059\u3002</p>"},{"location":"chapter_dynamic_programming/#_1","title":"\u7ae0\u306e\u5185\u5bb9","text":"<ul> <li>14.1 \u00a0 \u52d5\u7684\u8a08\u753b\u6cd5\u306e\u521d\u6b69</li> <li>14.2 \u00a0 DP \u554f\u984c\u306e\u7279\u6027</li> <li>14.3 \u00a0 DP \u306e\u89e3\u6cd5\u306e\u8003\u3048\u65b9</li> <li>14.4 \u00a0 0-1\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c</li> <li>14.5 \u00a0 \u5b8c\u5168\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c</li> <li>14.6 \u00a0 \u7de8\u96c6\u8ddd\u96e2\u554f\u984c</li> <li>14.7 \u00a0 \u307e\u3068\u3081</li> </ul>"},{"location":"chapter_dynamic_programming/dp_problem_features/","title":"14.2 \u00a0 \u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u554f\u984c\u306e\u7279\u5fb4","text":"<p>\u524d\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u304c\u554f\u984c\u3092\u90e8\u5206\u554f\u984c\u306b\u5206\u89e3\u3059\u308b\u3053\u3068\u3067\u5143\u306e\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u65b9\u6cd5\u3092\u5b66\u3073\u307e\u3057\u305f\u3002\u5b9f\u969b\u3001\u90e8\u5206\u554f\u984c\u306e\u5206\u89e3\u306f\u4e00\u822c\u7684\u306a\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u30a2\u30d7\u30ed\u30fc\u30c1\u3067\u3042\u308a\u3001\u5206\u5272\u7d71\u6cbb\u6cd5\u3001\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3001\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u3067\u306f\u7570\u306a\u308b\u91cd\u70b9\u304c\u3042\u308a\u307e\u3059\u3002</p> <ul> <li>\u5206\u5272\u7d71\u6cbb\u6cd5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u5143\u306e\u554f\u984c\u3092\u8907\u6570\u306e\u72ec\u7acb\u3057\u305f\u90e8\u5206\u554f\u984c\u306b\u518d\u5e30\u7684\u306b\u5206\u5272\u3057\u3001\u6700\u5c0f\u306e\u90e8\u5206\u554f\u984c\u306b\u5230\u9054\u3059\u308b\u307e\u3067\u7d9a\u3051\u3001\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u6642\u306b\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u7d44\u307f\u5408\u308f\u305b\u3066\u6700\u7d42\u7684\u306b\u5143\u306e\u554f\u984c\u306e\u89e3\u3092\u5f97\u307e\u3059\u3002</li> <li>\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3082\u554f\u984c\u3092\u518d\u5e30\u7684\u306b\u5206\u89e3\u3057\u307e\u3059\u304c\u3001\u5206\u5272\u7d71\u6cbb\u6cd5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3068\u306e\u4e3b\u306a\u9055\u3044\u306f\u3001\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u90e8\u5206\u554f\u984c\u304c\u76f8\u4e92\u4f9d\u5b58\u7684\u3067\u3042\u308a\u3001\u5206\u89e3\u30d7\u30ed\u30bb\u30b9\u4e2d\u306b\u591a\u304f\u306e\u91cd\u8907\u3059\u308b\u90e8\u5206\u554f\u984c\u304c\u73fe\u308c\u308b\u3053\u3068\u3067\u3059\u3002</li> <li>\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u8a66\u884c\u932f\u8aa4\u306b\u3088\u3063\u3066\u3059\u3079\u3066\u306e\u53ef\u80fd\u306a\u89e3\u3092\u7db2\u7f85\u3057\u3001\u679d\u5208\u308a\u306b\u3088\u3063\u3066\u4e0d\u5fc5\u8981\u306a\u63a2\u7d22\u5206\u5c90\u3092\u907f\u3051\u307e\u3059\u3002\u5143\u306e\u554f\u984c\u306e\u89e3\u306f\u4e00\u9023\u306e\u6c7a\u5b9a\u30b9\u30c6\u30c3\u30d7\u304b\u3089\u69cb\u6210\u3055\u308c\u3001\u5404\u6c7a\u5b9a\u30b9\u30c6\u30c3\u30d7\u524d\u306e\u5404\u90e8\u5206\u30b7\u30fc\u30b1\u30f3\u30b9\u3092\u90e8\u5206\u554f\u984c\u3068\u3057\u3066\u8003\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</li> </ul> <p>\u5b9f\u969b\u3001\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306f\u6700\u9069\u5316\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306b\u3088\u304f\u4f7f\u7528\u3055\u308c\u3001\u3053\u308c\u3089\u306f\u91cd\u8907\u3059\u308b\u90e8\u5206\u554f\u984c\u3092\u542b\u3080\u3060\u3051\u3067\u306a\u304f\u3001\u4ed6\u306b2\u3064\u306e\u4e3b\u8981\u306a\u7279\u5fb4\u304c\u3042\u308a\u307e\u3059\uff1a\u6700\u9069\u90e8\u5206\u69cb\u9020\u3068\u7121\u8a18\u61b6\u6027\u3067\u3059\u3002</p>"},{"location":"chapter_dynamic_programming/dp_problem_features/#1421","title":"14.2.1 \u00a0 \u6700\u9069\u90e8\u5206\u69cb\u9020","text":"<p>\u968e\u6bb5\u767b\u308a\u554f\u984c\u3092\u5c11\u3057\u4fee\u6b63\u3057\u3066\u3001\u6700\u9069\u90e8\u5206\u69cb\u9020\u306e\u6982\u5ff5\u3092\u5b9f\u8a3c\u3059\u308b\u306e\u306b\u3088\u308a\u9069\u3057\u305f\u3082\u306e\u306b\u3057\u307e\u3059\u3002</p> <p>\u968e\u6bb5\u767b\u308a\u306e\u6700\u5c0f\u30b3\u30b9\u30c8</p> <p>\u968e\u6bb5\u304c\u3042\u308a\u3001\u4e00\u5ea6\u306b1\u6bb5\u307e\u305f\u306f2\u6bb5\u4e0a\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u968e\u6bb5\u306e\u5404\u6bb5\u306b\u306f\u305d\u306e\u6bb5\u3067\u652f\u6255\u3046\u5fc5\u8981\u304c\u3042\u308b\u30b3\u30b9\u30c8\u3092\u8868\u3059\u975e\u8ca0\u306e\u6574\u6570\u304c\u3042\u308a\u307e\u3059\u3002\u975e\u8ca0\u306e\u6574\u6570\u914d\u5217 \\(cost\\) \u304c\u4e0e\u3048\u3089\u308c\u3001\\(cost[i]\\) \u306f \\(i\\) \u6bb5\u76ee\u3067\u652f\u6255\u3046\u5fc5\u8981\u304c\u3042\u308b\u30b3\u30b9\u30c8\u3092\u8868\u3057\u3001\\(cost[0]\\) \u306f\u5730\u9762\uff08\u958b\u59cb\u70b9\uff09\u3067\u3059\u3002\u9802\u4e0a\u306b\u5230\u9054\u3059\u308b\u305f\u3081\u306b\u5fc5\u8981\u306a\u6700\u5c0f\u30b3\u30b9\u30c8\u306f\u4f55\u3067\u3059\u304b\uff1f</p> <p>\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u30011\u6bb5\u76ee\u30012\u6bb5\u76ee\u30013\u6bb5\u76ee\u306e\u30b3\u30b9\u30c8\u304c\u305d\u308c\u305e\u308c \\(1\\)\u3001\\(10\\)\u3001\\(1\\) \u306e\u5834\u5408\u3001\u5730\u9762\u304b\u30893\u6bb5\u76ee\u306b\u767b\u308b\u6700\u5c0f\u30b3\u30b9\u30c8\u306f \\(2\\) \u3067\u3059\u3002</p> <p></p> <p> \u56f3 14-6 \u00a0 3\u6bb5\u76ee\u306b\u767b\u308b\u6700\u5c0f\u30b3\u30b9\u30c8 </p> <p>\\(dp[i]\\) \u3092 \\(i\\) \u6bb5\u76ee\u306b\u767b\u308b\u7d2f\u7a4d\u30b3\u30b9\u30c8\u3068\u3057\u307e\u3059\u3002\\(i\\) \u6bb5\u76ee\u306f \\(i-1\\) \u6bb5\u76ee\u307e\u305f\u306f \\(i-2\\) \u6bb5\u76ee\u304b\u3089\u306e\u307f\u6765\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u305f\u3081\u3001\\(dp[i]\\) \u306f \\(dp[i-1] + cost[i]\\) \u307e\u305f\u306f \\(dp[i-2] + cost[i]\\) \u306e\u3044\u305a\u308c\u304b\u3057\u304b\u3042\u308a\u3048\u307e\u305b\u3093\u3002\u30b3\u30b9\u30c8\u3092\u6700\u5c0f\u5316\u3059\u308b\u305f\u3081\u306b\u30012\u3064\u306e\u3046\u3061\u5c0f\u3055\u3044\u65b9\u3092\u9078\u629e\u3059\u3079\u304d\u3067\u3059\uff1a</p> \\[ dp[i] = \\min(dp[i-1], dp[i-2]) + cost[i] \\] <p>\u3053\u308c\u306b\u3088\u308a\u6700\u9069\u90e8\u5206\u69cb\u9020\u306e\u610f\u5473\u304c\u308f\u304b\u308a\u307e\u3059\uff1a\u5143\u306e\u554f\u984c\u306e\u6700\u9069\u89e3\u306f\u90e8\u5206\u554f\u984c\u306e\u6700\u9069\u89e3\u304b\u3089\u69cb\u7bc9\u3055\u308c\u308b\u3002</p> <p>\u3053\u306e\u554f\u984c\u306f\u660e\u3089\u304b\u306b\u6700\u9069\u90e8\u5206\u69cb\u9020\u3092\u6301\u3063\u3066\u3044\u307e\u3059\uff1a2\u3064\u306e\u90e8\u5206\u554f\u984c \\(dp[i-1]\\) \u3068 \\(dp[i-2]\\) \u306e\u6700\u9069\u89e3\u304b\u3089\u3088\u308a\u826f\u3044\u65b9\u3092\u9078\u629e\u3057\u3001\u305d\u308c\u3092\u4f7f\u7528\u3057\u3066\u5143\u306e\u554f\u984c \\(dp[i]\\) \u306e\u6700\u9069\u89e3\u3092\u69cb\u7bc9\u3057\u307e\u3059\u3002</p> <p>\u3067\u306f\u3001\u524d\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u306e\u968e\u6bb5\u767b\u308a\u554f\u984c\u306f\u6700\u9069\u90e8\u5206\u69cb\u9020\u3092\u6301\u3063\u3066\u3044\u308b\u3067\u3057\u3087\u3046\u304b\uff1f\u305d\u306e\u76ee\u6a19\u306f\u89e3\u306e\u6570\u3092\u6c42\u3081\u308b\u3053\u3068\u3067\u3001\u3053\u308c\u306f\u6570\u3048\u4e0a\u3052\u554f\u984c\u306e\u3088\u3046\u3067\u3059\u304c\u3001\u5225\u306e\u65b9\u6cd5\u3067\u5c0b\u306d\u3066\u307f\u307e\u3057\u3087\u3046\uff1a\u300c\u89e3\u306e\u6700\u5927\u6570\u3092\u6c42\u3081\u308b\u300d\u3002\u9a5a\u304f\u3053\u3068\u306b\u3001**\u554f\u984c\u304c\u5909\u308f\u3063\u305f\u306b\u3082\u304b\u304b\u308f\u3089\u305a\u3001\u6700\u9069\u90e8\u5206\u69cb\u9020\u304c\u73fe\u308c\u305f**\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3059\uff1a\\(n\\) \u6bb5\u76ee\u3067\u306e\u89e3\u306e\u6700\u5927\u6570\u306f\u3001\\(n-1\\) \u6bb5\u76ee\u3068 \\(n-2\\) \u6bb5\u76ee\u3067\u306e\u89e3\u306e\u6700\u5927\u6570\u306e\u548c\u306b\u7b49\u3057\u3044\u3067\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u6700\u9069\u90e8\u5206\u69cb\u9020\u306e\u89e3\u91c8\u306f\u975e\u5e38\u306b\u67d4\u8edf\u3067\u3001\u7570\u306a\u308b\u554f\u984c\u3067\u306f\u7570\u306a\u308b\u610f\u5473\u3092\u6301\u3061\u307e\u3059\u3002</p> <p>\u72b6\u614b\u9077\u79fb\u65b9\u7a0b\u5f0f\u3068\u521d\u671f\u72b6\u614b \\(dp[1] = cost[1]\\) \u304a\u3088\u3073 \\(dp[2] = cost[2]\\) \u306b\u5f93\u3063\u3066\u3001\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30b3\u30fc\u30c9\u3092\u5f97\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby min_cost_climbing_stairs_dp.py<pre><code>def min_cost_climbing_stairs_dp(cost: list[int]) -&gt; int:\n \"\"\"\u6700\u5c0f\u30b3\u30b9\u30c8\u968e\u6bb5\u767b\u308a\uff1a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\"\"\"\n n = len(cost) - 1\n if n == 1 or n == 2:\n return cost[n]\n # dp \u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\u3001\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u683c\u7d0d\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\n dp = [0] * (n + 1)\n # \u521d\u671f\u72b6\u614b\uff1a\u6700\u5c0f\u306e\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u4e8b\u524d\u8a2d\u5b9a\n dp[1], dp[2] = cost[1], cost[2]\n # \u72b6\u614b\u9077\u79fb\uff1a\u5c0f\u3055\u3044\u90e8\u5206\u554f\u984c\u304b\u3089\u5927\u304d\u3044\u90e8\u5206\u554f\u984c\u3092\u6bb5\u968e\u7684\u306b\u89e3\u304f\n for i in range(3, n + 1):\n dp[i] = min(dp[i - 1], dp[i - 2]) + cost[i]\n return dp[n]\n</code></pre> min_cost_climbing_stairs_dp.cpp<pre><code>/* \u6700\u5c0f\u30b3\u30b9\u30c8\u968e\u6bb5\u767b\u308a\uff1a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint minCostClimbingStairsDP(vector&lt;int&gt; &amp;cost) {\n int n = cost.size() - 1;\n if (n == 1 || n == 2)\n return cost[n];\n // DP\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\u3057\u3001\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u683c\u7d0d\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\n vector&lt;int&gt; dp(n + 1);\n // \u521d\u671f\u72b6\u614b\uff1a\u6700\u5c0f\u306e\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u4e8b\u524d\u8a2d\u5b9a\n dp[1] = cost[1];\n dp[2] = cost[2];\n // \u72b6\u614b\u9077\u79fb\uff1a\u5c0f\u3055\u306a\u554f\u984c\u304b\u3089\u5927\u304d\u306a\u90e8\u5206\u554f\u984c\u3092\u6bb5\u968e\u7684\u306b\u89e3\u304f\n for (int i = 3; i &lt;= n; i++) {\n dp[i] = min(dp[i - 1], dp[i - 2]) + cost[i];\n }\n return dp[n];\n}\n</code></pre> min_cost_climbing_stairs_dp.java<pre><code>/* \u6700\u5c0f\u30b3\u30b9\u30c8\u968e\u6bb5\u767b\u308a\uff1a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint minCostClimbingStairsDP(int[] cost) {\n int n = cost.length - 1;\n if (n == 1 || n == 2)\n return cost[n];\n // DP\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\u3057\u3001\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u683c\u7d0d\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\n int[] dp = new int[n + 1];\n // \u521d\u671f\u72b6\u614b\uff1a\u6700\u5c0f\u306e\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u4e8b\u524d\u8a2d\u5b9a\n dp[1] = cost[1];\n dp[2] = cost[2];\n // \u72b6\u614b\u9077\u79fb\uff1a\u5c0f\u3055\u306a\u554f\u984c\u304b\u3089\u5927\u304d\u306a\u90e8\u5206\u554f\u984c\u3092\u6bb5\u968e\u7684\u306b\u89e3\u304f\n for (int i = 3; i &lt;= n; i++) {\n dp[i] = Math.min(dp[i - 1], dp[i - 2]) + cost[i];\n }\n return dp[n];\n}\n</code></pre> min_cost_climbing_stairs_dp.cs<pre><code>[class]{min_cost_climbing_stairs_dp}-[func]{MinCostClimbingStairsDP}\n</code></pre> min_cost_climbing_stairs_dp.go<pre><code>[class]{}-[func]{minCostClimbingStairsDP}\n</code></pre> min_cost_climbing_stairs_dp.swift<pre><code>[class]{}-[func]{minCostClimbingStairsDP}\n</code></pre> min_cost_climbing_stairs_dp.js<pre><code>[class]{}-[func]{minCostClimbingStairsDP}\n</code></pre> min_cost_climbing_stairs_dp.ts<pre><code>[class]{}-[func]{minCostClimbingStairsDP}\n</code></pre> min_cost_climbing_stairs_dp.dart<pre><code>[class]{}-[func]{minCostClimbingStairsDP}\n</code></pre> min_cost_climbing_stairs_dp.rs<pre><code>[class]{}-[func]{min_cost_climbing_stairs_dp}\n</code></pre> min_cost_climbing_stairs_dp.c<pre><code>[class]{}-[func]{minCostClimbingStairsDP}\n</code></pre> min_cost_climbing_stairs_dp.kt<pre><code>[class]{}-[func]{minCostClimbingStairsDP}\n</code></pre> min_cost_climbing_stairs_dp.rb<pre><code>[class]{}-[func]{min_cost_climbing_stairs_dp}\n</code></pre> <p>\u4e0b\u306e\u56f3\u306f\u4e0a\u8a18\u30b3\u30fc\u30c9\u306e\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30d7\u30ed\u30bb\u30b9\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002</p> <p></p> <p> \u56f3 14-7 \u00a0 \u968e\u6bb5\u767b\u308a\u306e\u6700\u5c0f\u30b3\u30b9\u30c8\u306e\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30d7\u30ed\u30bb\u30b9 </p> <p>\u3053\u306e\u554f\u984c\u3082\u7a7a\u9593\u6700\u9069\u5316\u304c\u53ef\u80fd\u3067\u30011\u6b21\u5143\u30920\u306b\u5727\u7e2e\u3057\u3001\u7a7a\u9593\u8a08\u7b97\u91cf\u3092 \\(O(n)\\) \u304b\u3089 \\(O(1)\\) \u306b\u524a\u6e1b\u3067\u304d\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby min_cost_climbing_stairs_dp.py<pre><code>def min_cost_climbing_stairs_dp_comp(cost: list[int]) -&gt; int:\n \"\"\"\u6700\u5c0f\u30b3\u30b9\u30c8\u968e\u6bb5\u767b\u308a\uff1a\u7a7a\u9593\u6700\u9069\u5316\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\"\"\"\n n = len(cost) - 1\n if n == 1 or n == 2:\n return cost[n]\n a, b = cost[1], cost[2]\n for i in range(3, n + 1):\n a, b = b, min(a, b) + cost[i]\n return b\n</code></pre> min_cost_climbing_stairs_dp.cpp<pre><code>/* \u6700\u5c0f\u30b3\u30b9\u30c8\u968e\u6bb5\u767b\u308a\uff1a\u7a7a\u9593\u6700\u9069\u5316\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint minCostClimbingStairsDPComp(vector&lt;int&gt; &amp;cost) {\n int n = cost.size() - 1;\n if (n == 1 || n == 2)\n return cost[n];\n int a = cost[1], b = cost[2];\n for (int i = 3; i &lt;= n; i++) {\n int tmp = b;\n b = min(a, tmp) + cost[i];\n a = tmp;\n }\n return b;\n}\n</code></pre> min_cost_climbing_stairs_dp.java<pre><code>/* \u6700\u5c0f\u30b3\u30b9\u30c8\u968e\u6bb5\u767b\u308a\uff1a\u7a7a\u9593\u6700\u9069\u5316\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint minCostClimbingStairsDPComp(int[] cost) {\n int n = cost.length - 1;\n if (n == 1 || n == 2)\n return cost[n];\n int a = cost[1], b = cost[2];\n for (int i = 3; i &lt;= n; i++) {\n int tmp = b;\n b = Math.min(a, tmp) + cost[i];\n a = tmp;\n }\n return b;\n}\n</code></pre> min_cost_climbing_stairs_dp.cs<pre><code>[class]{min_cost_climbing_stairs_dp}-[func]{MinCostClimbingStairsDPComp}\n</code></pre> min_cost_climbing_stairs_dp.go<pre><code>[class]{}-[func]{minCostClimbingStairsDPComp}\n</code></pre> min_cost_climbing_stairs_dp.swift<pre><code>[class]{}-[func]{minCostClimbingStairsDPComp}\n</code></pre> min_cost_climbing_stairs_dp.js<pre><code>[class]{}-[func]{minCostClimbingStairsDPComp}\n</code></pre> min_cost_climbing_stairs_dp.ts<pre><code>[class]{}-[func]{minCostClimbingStairsDPComp}\n</code></pre> min_cost_climbing_stairs_dp.dart<pre><code>[class]{}-[func]{minCostClimbingStairsDPComp}\n</code></pre> min_cost_climbing_stairs_dp.rs<pre><code>[class]{}-[func]{min_cost_climbing_stairs_dp_comp}\n</code></pre> min_cost_climbing_stairs_dp.c<pre><code>[class]{}-[func]{minCostClimbingStairsDPComp}\n</code></pre> min_cost_climbing_stairs_dp.kt<pre><code>[class]{}-[func]{minCostClimbingStairsDPComp}\n</code></pre> min_cost_climbing_stairs_dp.rb<pre><code>[class]{}-[func]{min_cost_climbing_stairs_dp_comp}\n</code></pre>"},{"location":"chapter_dynamic_programming/dp_problem_features/#1422","title":"14.2.2 \u00a0 \u7121\u8a18\u61b6\u6027","text":"<p>\u7121\u8a18\u61b6\u6027\u306f\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u304c\u554f\u984c\u89e3\u6c7a\u306b\u52b9\u679c\u7684\u3067\u3042\u308b\u3053\u3068\u3092\u53ef\u80fd\u306b\u3059\u308b\u91cd\u8981\u306a\u7279\u5fb4\u306e1\u3064\u3067\u3059\u3002\u305d\u306e\u5b9a\u7fa9\u306f\uff1a\u7279\u5b9a\u306e\u72b6\u614b\u304c\u4e0e\u3048\u3089\u308c\u305f\u3068\u304d\u3001\u305d\u306e\u5c06\u6765\u306e\u767a\u5c55\u306f\u73fe\u5728\u306e\u72b6\u614b\u306e\u307f\u306b\u95a2\u9023\u3057\u3001\u904e\u53bb\u306b\u7d4c\u9a13\u3057\u305f\u3059\u3079\u3066\u306e\u72b6\u614b\u3068\u306f\u7121\u95a2\u4fc2\u3067\u3042\u308b\u3002</p> <p>\u968e\u6bb5\u767b\u308a\u554f\u984c\u3092\u4f8b\u306b\u53d6\u308b\u3068\u3001\u72b6\u614b \\(i\\) \u304c\u4e0e\u3048\u3089\u308c\u305f\u3068\u304d\u3001\u305d\u308c\u306f\u72b6\u614b \\(i+1\\) \u3068 \\(i+2\\) \u306b\u767a\u5c55\u3057\u3001\u305d\u308c\u305e\u308c1\u6bb5\u30b8\u30e3\u30f3\u30d7\u30682\u6bb5\u30b8\u30e3\u30f3\u30d7\u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002\u3053\u308c\u30892\u3064\u306e\u9078\u629e\u3092\u3059\u308b\u3068\u304d\u3001\u72b6\u614b \\(i\\) \u3088\u308a\u524d\u306e\u72b6\u614b\u3092\u8003\u616e\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u306a\u305c\u306a\u3089\u3001\u305d\u308c\u3089\u306f\u72b6\u614b \\(i\\) \u306e\u5c06\u6765\u306b\u5f71\u97ff\u3057\u306a\u3044\u304b\u3089\u3067\u3059\u3002</p> <p>\u3057\u304b\u3057\u3001\u968e\u6bb5\u767b\u308a\u554f\u984c\u306b\u5236\u7d04\u3092\u8ffd\u52a0\u3059\u308b\u3068\u3001\u72b6\u6cc1\u304c\u5909\u308f\u308a\u307e\u3059\u3002</p> <p>\u5236\u7d04\u4ed8\u304d\u968e\u6bb5\u767b\u308a</p> <p>\\(n\\) \u6bb5\u306e\u968e\u6bb5\u304c\u3042\u308a\u3001\u6bce\u56de1\u6bb5\u307e\u305f\u306f2\u6bb5\u4e0a\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u304c\u30011\u6bb5\u30922\u56de\u9023\u7d9a\u3067\u30b8\u30e3\u30f3\u30d7\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u9802\u4e0a\u306b\u767b\u308b\u65b9\u6cd5\u306f\u4f55\u901a\u308a\u3042\u308a\u307e\u3059\u304b\uff1f</p> <p>\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u30013\u6bb5\u76ee\u306b\u767b\u308b\u5b9f\u884c\u53ef\u80fd\u306a\u9078\u629e\u80a2\u306f2\u3064\u3060\u3051\u3067\u30011\u6bb5\u30923\u56de\u9023\u7d9a\u3067\u30b8\u30e3\u30f3\u30d7\u3059\u308b\u9078\u629e\u80a2\u306f\u5236\u7d04\u6761\u4ef6\u3092\u6e80\u305f\u3055\u306a\u3044\u305f\u3081\u7834\u68c4\u3055\u308c\u307e\u3059\u3002</p> <p></p> <p> \u56f3 14-8 \u00a0 \u5236\u7d04\u4ed8\u304d\u30673\u6bb5\u76ee\u306b\u767b\u308b\u5b9f\u884c\u53ef\u80fd\u306a\u9078\u629e\u80a2\u306e\u6570 </p> <p>\u3053\u306e\u554f\u984c\u3067\u306f\u3001\u524d\u56de\u304c1\u6bb5\u30b8\u30e3\u30f3\u30d7\u3060\u3063\u305f\u5834\u5408\u3001\u6b21\u56de\u306f\u5fc5\u305a2\u6bb5\u30b8\u30e3\u30f3\u30d7\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002\u3053\u308c\u306f**\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u306e\u9078\u629e\u304c\u73fe\u5728\u306e\u72b6\u614b\uff08\u73fe\u5728\u306e\u968e\u6bb5\u6bb5\u6570\uff09\u3060\u3051\u3067\u306f\u72ec\u7acb\u3057\u3066\u6c7a\u5b9a\u3067\u304d\u305a\u3001\u524d\u306e\u72b6\u614b\uff08\u524d\u56de\u306e\u968e\u6bb5\u6bb5\u6570\uff09\u306b\u3082\u4f9d\u5b58\u3059\u308b**\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002</p> <p>\u3053\u306e\u554f\u984c\u304c\u3082\u306f\u3084\u7121\u8a18\u61b6\u6027\u3092\u6e80\u305f\u3055\u305a\u3001\u72b6\u614b\u9077\u79fb\u65b9\u7a0b\u5f0f \\(dp[i] = dp[i-1] + dp[i-2]\\) \u3082\u5931\u6557\u3059\u308b\u3053\u3068\u306f\u5bb9\u6613\u306b\u308f\u304b\u308a\u307e\u3059\u3002\u306a\u305c\u306a\u3089 \\(dp[i-1]\\) \u306f\u4eca\u56de\u306e1\u6bb5\u30b8\u30e3\u30f3\u30d7\u3092\u8868\u3057\u307e\u3059\u304c\u3001\u591a\u304f\u306e\u300c\u524d\u56de\u304c1\u6bb5\u30b8\u30e3\u30f3\u30d7\u3060\u3063\u305f\u300d\u9078\u629e\u80a2\u3092\u542b\u3093\u3067\u304a\u308a\u3001\u5236\u7d04\u3092\u6e80\u305f\u3059\u305f\u3081\u306b\u306f\u3053\u308c\u3089\u3092\u76f4\u63a5 \\(dp[i]\\) \u306b\u542b\u3081\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002</p> <p>\u3053\u306e\u305f\u3081\u3001\u72b6\u614b\u5b9a\u7fa9\u3092\u62e1\u5f35\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff1a\u72b6\u614b \\([i, j]\\) \u306f \\(i\\) \u6bb5\u76ee\u306b\u3044\u3066\u3001\u524d\u56de\u304c \\(j\\) \u6bb5\u30b8\u30e3\u30f3\u30d7\u3060\u3063\u305f\u3053\u3068\u3092\u8868\u3059\u3002\u3053\u3053\u3067 \\(j \\in \\{1, 2\\}\\) \u3067\u3059\u3002\u3053\u306e\u72b6\u614b\u5b9a\u7fa9\u306f\u524d\u56de\u304c1\u6bb5\u30b8\u30e3\u30f3\u30d7\u3060\u3063\u305f\u304b2\u6bb5\u30b8\u30e3\u30f3\u30d7\u3060\u3063\u305f\u304b\u3092\u52b9\u679c\u7684\u306b\u533a\u5225\u3057\u3001\u73fe\u5728\u306e\u72b6\u614b\u304c\u3069\u3053\u304b\u3089\u6765\u305f\u304b\u3092\u9069\u5207\u306b\u5224\u65ad\u3067\u304d\u307e\u3059\u3002</p> <ul> <li>\u524d\u56de\u304c1\u6bb5\u30b8\u30e3\u30f3\u30d7\u3060\u3063\u305f\u5834\u5408\u3001\u524d\u3005\u56de\u306f\u5fc5\u305a2\u6bb5\u30b8\u30e3\u30f3\u30d7\u3092\u9078\u629e\u3057\u3066\u3044\u305f\u306f\u305a\u3067\u3059\u3002\u3064\u307e\u308a\u3001\\(dp[i, 1]\\) \u306f \\(dp[i-1, 2]\\) \u304b\u3089\u306e\u307f\u9077\u79fb\u3067\u304d\u307e\u3059\u3002</li> <li>\u524d\u56de\u304c2\u6bb5\u30b8\u30e3\u30f3\u30d7\u3060\u3063\u305f\u5834\u5408\u3001\u524d\u3005\u56de\u306f1\u6bb5\u30b8\u30e3\u30f3\u30d7\u307e\u305f\u306f2\u6bb5\u30b8\u30e3\u30f3\u30d7\u3092\u9078\u629e\u3067\u304d\u307e\u3057\u305f\u3002\u3064\u307e\u308a\u3001\\(dp[i, 2]\\) \u306f \\(dp[i-2, 1]\\) \u307e\u305f\u306f \\(dp[i-2, 2]\\) \u304b\u3089\u9077\u79fb\u3067\u304d\u307e\u3059\u3002</li> </ul> <p>\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\\(dp[i, j]\\) \u306f\u72b6\u614b \\([i, j]\\) \u306e\u89e3\u306e\u6570\u3092\u8868\u3057\u307e\u3059\u3002\u3053\u306e\u6642\u70b9\u3067\u3001\u72b6\u614b\u9077\u79fb\u65b9\u7a0b\u5f0f\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\uff1a</p> \\[ \\begin{cases} dp[i, 1] = dp[i-1, 2] \\\\ dp[i, 2] = dp[i-2, 1] + dp[i-2, 2] \\end{cases} \\] <p></p> <p> \u56f3 14-9 \u00a0 \u5236\u7d04\u3092\u8003\u616e\u3057\u305f\u518d\u5e30\u95a2\u4fc2 </p> <p>\u6700\u7d42\u7684\u306b\u3001\\(dp[n, 1] + dp[n, 2]\\) \u3092\u8fd4\u305b\u3070\u3088\u304f\u3001\u3053\u306e2\u3064\u306e\u5408\u8a08\u304c \\(n\\) \u6bb5\u76ee\u306b\u767b\u308b\u89e3\u306e\u7dcf\u6570\u3092\u8868\u3057\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby climbing_stairs_constraint_dp.py<pre><code>def climbing_stairs_constraint_dp(n: int) -&gt; int:\n \"\"\"\u5236\u7d04\u4ed8\u304d\u968e\u6bb5\u767b\u308a\uff1a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\"\"\"\n if n == 1 or n == 2:\n return 1\n # dp \u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\u3001\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u683c\u7d0d\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\n dp = [[0] * 3 for _ in range(n + 1)]\n # \u521d\u671f\u72b6\u614b\uff1a\u6700\u5c0f\u306e\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u4e8b\u524d\u8a2d\u5b9a\n dp[1][1], dp[1][2] = 1, 0\n dp[2][1], dp[2][2] = 0, 1\n # \u72b6\u614b\u9077\u79fb\uff1a\u5c0f\u3055\u3044\u90e8\u5206\u554f\u984c\u304b\u3089\u5927\u304d\u3044\u90e8\u5206\u554f\u984c\u3092\u6bb5\u968e\u7684\u306b\u89e3\u304f\n for i in range(3, n + 1):\n dp[i][1] = dp[i - 1][2]\n dp[i][2] = dp[i - 2][1] + dp[i - 2][2]\n return dp[n][1] + dp[n][2]\n</code></pre> climbing_stairs_constraint_dp.cpp<pre><code>/* \u5236\u7d04\u4ed8\u304d\u968e\u6bb5\u767b\u308a\uff1a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint climbingStairsConstraintDP(int n) {\n if (n == 1 || n == 2) {\n return 1;\n }\n // DP\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\u3057\u3001\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u683c\u7d0d\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\n vector&lt;vector&lt;int&gt;&gt; dp(n + 1, vector&lt;int&gt;(3, 0));\n // \u521d\u671f\u72b6\u614b\uff1a\u6700\u5c0f\u306e\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u4e8b\u524d\u8a2d\u5b9a\n dp[1][1] = 1;\n dp[1][2] = 0;\n dp[2][1] = 0;\n dp[2][2] = 1;\n // \u72b6\u614b\u9077\u79fb\uff1a\u5c0f\u3055\u306a\u554f\u984c\u304b\u3089\u5927\u304d\u306a\u90e8\u5206\u554f\u984c\u3092\u6bb5\u968e\u7684\u306b\u89e3\u304f\n for (int i = 3; i &lt;= n; i++) {\n dp[i][1] = dp[i - 1][2];\n dp[i][2] = dp[i - 2][1] + dp[i - 2][2];\n }\n return dp[n][1] + dp[n][2];\n}\n</code></pre> climbing_stairs_constraint_dp.java<pre><code>/* \u5236\u7d04\u4ed8\u304d\u968e\u6bb5\u767b\u308a\uff1a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint climbingStairsConstraintDP(int n) {\n if (n == 1 || n == 2) {\n return 1;\n }\n // DP\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\u3057\u3001\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u683c\u7d0d\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\n int[][] dp = new int[n + 1][3];\n // \u521d\u671f\u72b6\u614b\uff1a\u6700\u5c0f\u306e\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u4e8b\u524d\u8a2d\u5b9a\n dp[1][1] = 1;\n dp[1][2] = 0;\n dp[2][1] = 0;\n dp[2][2] = 1;\n // \u72b6\u614b\u9077\u79fb\uff1a\u5c0f\u3055\u306a\u554f\u984c\u304b\u3089\u5927\u304d\u306a\u90e8\u5206\u554f\u984c\u3092\u6bb5\u968e\u7684\u306b\u89e3\u304f\n for (int i = 3; i &lt;= n; i++) {\n dp[i][1] = dp[i - 1][2];\n dp[i][2] = dp[i - 2][1] + dp[i - 2][2];\n }\n return dp[n][1] + dp[n][2];\n}\n</code></pre> climbing_stairs_constraint_dp.cs<pre><code>[class]{climbing_stairs_constraint_dp}-[func]{ClimbingStairsConstraintDP}\n</code></pre> climbing_stairs_constraint_dp.go<pre><code>[class]{}-[func]{climbingStairsConstraintDP}\n</code></pre> climbing_stairs_constraint_dp.swift<pre><code>[class]{}-[func]{climbingStairsConstraintDP}\n</code></pre> climbing_stairs_constraint_dp.js<pre><code>[class]{}-[func]{climbingStairsConstraintDP}\n</code></pre> climbing_stairs_constraint_dp.ts<pre><code>[class]{}-[func]{climbingStairsConstraintDP}\n</code></pre> climbing_stairs_constraint_dp.dart<pre><code>[class]{}-[func]{climbingStairsConstraintDP}\n</code></pre> climbing_stairs_constraint_dp.rs<pre><code>[class]{}-[func]{climbing_stairs_constraint_dp}\n</code></pre> climbing_stairs_constraint_dp.c<pre><code>[class]{}-[func]{climbingStairsConstraintDP}\n</code></pre> climbing_stairs_constraint_dp.kt<pre><code>[class]{}-[func]{climbingStairsConstraintDP}\n</code></pre> climbing_stairs_constraint_dp.rb<pre><code>[class]{}-[func]{climbing_stairs_constraint_dp}\n</code></pre> <p>\u4e0a\u8a18\u306e\u30b1\u30fc\u30b9\u3067\u306f\u3001\u524d\u306e\u72b6\u614b\u306e\u307f\u3092\u8003\u616e\u3059\u308c\u3070\u3088\u3044\u305f\u3081\u3001\u72b6\u614b\u5b9a\u7fa9\u3092\u62e1\u5f35\u3059\u308b\u3053\u3068\u3067\u4f9d\u7136\u3068\u3057\u3066\u7121\u8a18\u61b6\u6027\u3092\u6e80\u305f\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u4e00\u90e8\u306e\u554f\u984c\u3067\u306f\u975e\u5e38\u306b\u6df1\u523b\u306a\u300c\u72b6\u614b\u52b9\u679c\u300d\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>\u969c\u5bb3\u7269\u751f\u6210\u4ed8\u304d\u968e\u6bb5\u767b\u308a</p> <p>\\(n\\) \u6bb5\u306e\u968e\u6bb5\u304c\u3042\u308a\u3001\u6bce\u56de1\u6bb5\u307e\u305f\u306f2\u6bb5\u4e0a\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002**\\(i\\) \u6bb5\u76ee\u306b\u767b\u3063\u305f\u3068\u304d\u3001\u30b7\u30b9\u30c6\u30e0\u304c\u81ea\u52d5\u7684\u306b \\(2i\\) \u6bb5\u76ee\u306b\u969c\u5bb3\u7269\u3092\u7f6e\u304d\u3001\u305d\u306e\u5f8c\u306e\u3059\u3079\u3066\u306e\u30e9\u30a6\u30f3\u30c9\u3067 \\(2i\\) \u6bb5\u76ee\u306b\u30b8\u30e3\u30f3\u30d7\u3059\u308b\u3053\u3068\u304c\u7981\u6b62\u3055\u308c\u308b**\u3068\u898f\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u6700\u521d\u306e2\u30e9\u30a6\u30f3\u30c9\u30672\u6bb5\u76ee\u30683\u6bb5\u76ee\u306b\u30b8\u30e3\u30f3\u30d7\u3057\u305f\u5834\u5408\u3001\u305d\u306e\u5f8c\u306f4\u6bb5\u76ee\u30686\u6bb5\u76ee\u306b\u30b8\u30e3\u30f3\u30d7\u3067\u304d\u307e\u305b\u3093\u3002\u9802\u4e0a\u306b\u767b\u308b\u65b9\u6cd5\u306f\u4f55\u901a\u308a\u3042\u308a\u307e\u3059\u304b\uff1f</p> <p>\u3053\u306e\u554f\u984c\u3067\u306f\u3001\u6b21\u306e\u30b8\u30e3\u30f3\u30d7\u306f\u3059\u3079\u3066\u306e\u904e\u53bb\u306e\u72b6\u614b\u306b\u4f9d\u5b58\u3057\u307e\u3059\u3002\u5404\u30b8\u30e3\u30f3\u30d7\u304c\u3088\u308a\u9ad8\u3044\u6bb5\u306b\u969c\u5bb3\u7269\u3092\u7f6e\u304d\u3001\u5c06\u6765\u306e\u30b8\u30e3\u30f3\u30d7\u306b\u5f71\u97ff\u3059\u308b\u304b\u3089\u3067\u3059\u3002\u3053\u306e\u3088\u3046\u306a\u554f\u984c\u3067\u306f\u3001\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306f\u3057\u3070\u3057\u3070\u89e3\u6c7a\u306b\u82e6\u52b4\u3057\u307e\u3059\u3002</p> <p>\u5b9f\u969b\u3001\u591a\u304f\u306e\u8907\u96d1\u306a\u7d44\u307f\u5408\u308f\u305b\u6700\u9069\u5316\u554f\u984c\uff08\u5de1\u56de\u30bb\u30fc\u30eb\u30b9\u30de\u30f3\u554f\u984c\u306a\u3069\uff09\u306f\u7121\u8a18\u61b6\u6027\u3092\u6e80\u305f\u3057\u307e\u305b\u3093\u3002\u3053\u306e\u3088\u3046\u306a\u554f\u984c\u306b\u5bfe\u3057\u3066\u306f\u3001\u901a\u5e38\u3001\u30d2\u30e5\u30fc\u30ea\u30b9\u30c6\u30a3\u30c3\u30af\u63a2\u7d22\u3001\u907a\u4f1d\u7684\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3001\u5f37\u5316\u5b66\u7fd2\u306a\u3069\u306e\u4ed6\u306e\u65b9\u6cd5\u3092\u9078\u629e\u3057\u3066\u3001\u9650\u3089\u308c\u305f\u6642\u9593\u5185\u306b\u4f7f\u7528\u53ef\u80fd\u306a\u5c40\u6240\u6700\u9069\u89e3\u3092\u5f97\u307e\u3059\u3002</p>"},{"location":"chapter_dynamic_programming/dp_solution_pipeline/","title":"14.3 \u00a0 \u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u554f\u984c\u89e3\u6c7a\u30a2\u30d7\u30ed\u30fc\u30c1","text":"<p>\u524d\u306e2\u3064\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u554f\u984c\u306e\u4e3b\u8981\u306a\u7279\u5fb4\u3092\u7d39\u4ecb\u3057\u307e\u3057\u305f\u3002\u6b21\u306b\u3001\u3088\u308a\u5b9f\u7528\u7684\u306a2\u3064\u306e\u554f\u984c\u3092\u4e00\u7dd2\u306b\u63a2\u7d22\u3057\u307e\u3057\u3087\u3046\u3002</p> <ol> <li>\u554f\u984c\u304c\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u554f\u984c\u304b\u3069\u3046\u304b\u3092\u3069\u306e\u3088\u3046\u306b\u5224\u65ad\u3059\u308b\u304b\uff1f</li> <li>\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u5b8c\u5168\u306a\u30b9\u30c6\u30c3\u30d7\u306f\u4f55\u304b\uff1f</li> </ol>"},{"location":"chapter_dynamic_programming/dp_solution_pipeline/#1431","title":"14.3.1 \u00a0 \u554f\u984c\u306e\u5224\u5b9a","text":"<p>\u4e00\u822c\u7684\u306b\u8a00\u3048\u3070\u3001\u554f\u984c\u304c\u91cd\u8907\u3059\u308b\u90e8\u5206\u554f\u984c\u3001\u6700\u9069\u90e8\u5206\u69cb\u9020\u3092\u542b\u307f\u3001\u7121\u8a18\u61b6\u6027\u3092\u793a\u3059\u5834\u5408\u3001\u901a\u5e38\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u89e3\u6cd5\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u554f\u984c\u306e\u8aac\u660e\u304b\u3089\u76f4\u63a5\u3053\u308c\u3089\u306e\u7279\u5fb4\u3092\u62bd\u51fa\u3059\u308b\u3053\u3068\u306f\u3057\u3070\u3057\u3070\u56f0\u96e3\u3067\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u901a\u5e38\u306f\u6761\u4ef6\u3092\u7de9\u548c\u3057\u3001**\u307e\u305a\u554f\u984c\u304c\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\uff08\u5168\u63a2\u7d22\uff09\u3092\u4f7f\u7528\u3057\u305f\u89e3\u6c7a\u306b\u9069\u3057\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u89b3\u5bdf**\u3057\u307e\u3059\u3002</p> <p>**\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u306b\u9069\u3057\u305f\u554f\u984c\u306f\u901a\u5e38\u300c\u6c7a\u5b9a\u6728\u30e2\u30c7\u30eb\u300d\u306b\u9069\u5408**\u3057\u3001\u3053\u308c\u306f\u6728\u69cb\u9020\u3092\u4f7f\u7528\u3057\u3066\u8a18\u8ff0\u3067\u304d\u3001\u5404\u30ce\u30fc\u30c9\u306f\u6c7a\u5b9a\u3092\u8868\u3057\u3001\u5404\u30d1\u30b9\u306f\u6c7a\u5b9a\u306e\u30b7\u30fc\u30b1\u30f3\u30b9\u3092\u8868\u3057\u307e\u3059\u3002</p> <p>\u8a00\u3044\u63db\u3048\u308b\u3068\u3001\u554f\u984c\u304c\u660e\u793a\u7684\u306a\u6c7a\u5b9a\u6982\u5ff5\u3092\u542b\u307f\u3001\u89e3\u304c\u4e00\u9023\u306e\u6c7a\u5b9a\u3092\u901a\u3058\u3066\u751f\u6210\u3055\u308c\u308b\u5834\u5408\u3001\u305d\u308c\u306f\u6c7a\u5b9a\u6728\u30e2\u30c7\u30eb\u306b\u9069\u5408\u3057\u3001\u901a\u5e38\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u3092\u4f7f\u7528\u3057\u3066\u89e3\u6c7a\u3067\u304d\u307e\u3059\u3002</p> <p>\u3053\u306e\u57fa\u790e\u306e\u4e0a\u3067\u3001\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u554f\u984c\u3092\u5224\u5b9a\u3059\u308b\u305f\u3081\u306e\u300c\u30dc\u30fc\u30ca\u30b9\u30dd\u30a4\u30f3\u30c8\u300d\u304c\u3042\u308a\u307e\u3059\u3002</p> <ul> <li>\u554f\u984c\u306b\u6700\u5927\u5316\uff08\u6700\u5c0f\u5316\uff09\u307e\u305f\u306f\u6700\u3082\uff08\u6700\u3082\u5c11\u306a\u3044\uff09\u6700\u9069\u306a\u89e3\u3092\u898b\u3064\u3051\u308b\u3068\u3044\u3046\u8a18\u8ff0\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u3002</li> <li>\u554f\u984c\u306e\u72b6\u614b\u304c\u30ea\u30b9\u30c8\u3001\u591a\u6b21\u5143\u884c\u5217\u3001\u307e\u305f\u306f\u6728\u3092\u4f7f\u7528\u3057\u3066\u8868\u73fe\u3067\u304d\u3001\u72b6\u614b\u304c\u305d\u306e\u5468\u56f2\u306e\u72b6\u614b\u3068\u518d\u5e30\u95a2\u4fc2\u3092\u6301\u3063\u3066\u3044\u308b\u3002</li> </ul> <p>\u5bfe\u5fdc\u3057\u3066\u3001\u300c\u30da\u30ca\u30eb\u30c6\u30a3\u30dd\u30a4\u30f3\u30c8\u300d\u3082\u3042\u308a\u307e\u3059\u3002</p> <ul> <li>\u554f\u984c\u306e\u76ee\u6a19\u306f\u6700\u9069\u89e3\u3060\u3051\u3067\u306a\u304f\u3001\u3059\u3079\u3066\u306e\u53ef\u80fd\u306a\u89e3\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u3067\u3042\u308b\u3002</li> <li>\u554f\u984c\u306e\u8aac\u660e\u306b\u9806\u5217\u3068\u7d44\u307f\u5408\u308f\u305b\u306e\u660e\u3089\u304b\u306a\u7279\u5fb4\u304c\u3042\u308a\u3001\u7279\u5b9a\u306e\u8907\u6570\u306e\u89e3\u3092\u8fd4\u3059\u5fc5\u8981\u304c\u3042\u308b\u3002</li> </ul> <p>\u554f\u984c\u304c\u6c7a\u5b9a\u6728\u30e2\u30c7\u30eb\u306b\u9069\u5408\u3057\u3001\u6bd4\u8f03\u7684\u660e\u3089\u304b\u306a\u300c\u30dc\u30fc\u30ca\u30b9\u30dd\u30a4\u30f3\u30c8\u300d\u3092\u6301\u3064\u5834\u5408\u3001\u305d\u308c\u304c\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u554f\u984c\u3067\u3042\u308b\u3068\u4eee\u5b9a\u3057\u3001\u89e3\u6c7a\u30d7\u30ed\u30bb\u30b9\u4e2d\u306b\u691c\u8a3c\u3067\u304d\u307e\u3059\u3002</p>"},{"location":"chapter_dynamic_programming/dp_solution_pipeline/#1432","title":"14.3.2 \u00a0 \u554f\u984c\u89e3\u6c7a\u30b9\u30c6\u30c3\u30d7","text":"<p>\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u554f\u984c\u89e3\u6c7a\u30d7\u30ed\u30bb\u30b9\u306f\u554f\u984c\u306e\u6027\u8cea\u3068\u96e3\u6613\u5ea6\u306b\u3088\u3063\u3066\u7570\u306a\u308a\u307e\u3059\u304c\u3001\u4e00\u822c\u7684\u306b\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u306b\u5f93\u3044\u307e\u3059\uff1a\u6c7a\u5b9a\u306e\u8a18\u8ff0\u3001\u72b6\u614b\u306e\u5b9a\u7fa9\u3001\\(dp\\) \u30c6\u30fc\u30d6\u30eb\u306e\u78ba\u7acb\u3001\u72b6\u614b\u9077\u79fb\u65b9\u7a0b\u5f0f\u306e\u5c0e\u51fa\u3001\u5883\u754c\u6761\u4ef6\u306e\u6c7a\u5b9a\u306a\u3069\u3002</p> <p>\u554f\u984c\u89e3\u6c7a\u30b9\u30c6\u30c3\u30d7\u3092\u3088\u308a\u5177\u4f53\u7684\u306b\u8aac\u660e\u3059\u308b\u305f\u3081\u306b\u3001\u53e4\u5178\u7684\u306a\u554f\u984c\u300c\u6700\u5c0f\u7d4c\u8def\u548c\u300d\u3092\u4f8b\u3068\u3057\u3066\u4f7f\u7528\u3057\u307e\u3059\u3002</p> <p>Question</p> <p>\\(n \\times m\\) \u306e\u4e8c\u6b21\u5143\u30b0\u30ea\u30c3\u30c9 <code>grid</code> \u304c\u4e0e\u3048\u3089\u308c\u3001\u30b0\u30ea\u30c3\u30c9\u306e\u5404\u30bb\u30eb\u306b\u306f\u8ca0\u3067\u306a\u3044\u6574\u6570\u304c\u542b\u307e\u308c\u3001\u305d\u306e\u30bb\u30eb\u306e\u30b3\u30b9\u30c8\u3092\u8868\u3057\u307e\u3059\u3002\u30ed\u30dc\u30c3\u30c8\u306f\u5de6\u4e0a\u306e\u30bb\u30eb\u304b\u3089\u59cb\u307e\u308a\u3001\u5404\u30b9\u30c6\u30c3\u30d7\u3067\u4e0b\u307e\u305f\u306f\u53f3\u306b\u306e\u307f\u79fb\u52d5\u3067\u304d\u3001\u53f3\u4e0b\u306e\u30bb\u30eb\u306b\u5230\u9054\u3059\u308b\u307e\u3067\u7d9a\u3051\u307e\u3059\u3002\u5de6\u4e0a\u304b\u3089\u53f3\u4e0b\u3078\u306e\u6700\u5c0f\u7d4c\u8def\u548c\u3092\u8fd4\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <p>\u4e0b\u306e\u56f3\u306f\u4f8b\u3092\u793a\u3057\u3066\u304a\u308a\u3001\u4e0e\u3048\u3089\u308c\u305f\u30b0\u30ea\u30c3\u30c9\u306e\u6700\u5c0f\u7d4c\u8def\u548c\u306f \\(13\\) \u3067\u3059\u3002</p> <p></p> <p> \u56f3 14-10 \u00a0 \u6700\u5c0f\u7d4c\u8def\u548c\u306e\u4f8b\u30c7\u30fc\u30bf </p> <p>\u7b2c1\u30b9\u30c6\u30c3\u30d7\uff1a\u5404\u30e9\u30a6\u30f3\u30c9\u306e\u6c7a\u5b9a\u3092\u8003\u3048\u3001\u72b6\u614b\u3092\u5b9a\u7fa9\u3057\u3001\u305d\u308c\u306b\u3088\u308a \\(dp\\) \u30c6\u30fc\u30d6\u30eb\u3092\u5f97\u308b</p> <p>\u3053\u306e\u554f\u984c\u306e\u5404\u30e9\u30a6\u30f3\u30c9\u306e\u6c7a\u5b9a\u306f\u3001\u73fe\u5728\u306e\u30bb\u30eb\u304b\u3089\u4e0b\u307e\u305f\u306f\u53f3\u306b1\u30b9\u30c6\u30c3\u30d7\u79fb\u52d5\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u73fe\u5728\u306e\u30bb\u30eb\u306e\u884c\u3068\u5217\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c \\([i, j]\\) \u3067\u3042\u308b\u3068\u4eee\u5b9a\u3059\u308b\u3068\u3001\u4e0b\u307e\u305f\u306f\u53f3\u306b\u79fb\u52d5\u3057\u305f\u5f8c\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306f \\([i+1, j]\\) \u307e\u305f\u306f \\([i, j+1]\\) \u306b\u306a\u308a\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u72b6\u614b\u306b\u306f2\u3064\u306e\u5909\u6570\u304c\u542b\u307e\u308c\u308b\u3079\u304d\u3067\u3059\uff1a\u884c\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3068\u5217\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3001\\([i, j]\\) \u3068\u8868\u8a18\u3055\u308c\u307e\u3059\u3002</p> <p>\u72b6\u614b \\([i, j]\\) \u306f\u90e8\u5206\u554f\u984c\u306b\u5bfe\u5fdc\u3057\u307e\u3059\uff1a\u958b\u59cb\u70b9 \\([0, 0]\\) \u304b\u3089 \\([i, j]\\) \u3078\u306e\u6700\u5c0f\u7d4c\u8def\u548c\u3001\\(dp[i, j]\\) \u3068\u8868\u8a18\u3055\u308c\u307e\u3059\u3002</p> <p>\u3053\u306e\u3088\u3046\u306b\u3057\u3066\u3001\u4e0b\u306e\u56f3\u306b\u793a\u3059\u4e8c\u6b21\u5143 \\(dp\\) \u884c\u5217\u3092\u5f97\u307e\u3059\u3002\u305d\u306e\u30b5\u30a4\u30ba\u306f\u5165\u529b\u30b0\u30ea\u30c3\u30c9 \\(grid\\) \u3068\u540c\u3058\u3067\u3059\u3002</p> <p></p> <p> \u56f3 14-11 \u00a0 \u72b6\u614b\u5b9a\u7fa9\u3068DP\u30c6\u30fc\u30d6\u30eb </p> <p>Note</p> <p>\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3068\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u306f\u6c7a\u5b9a\u306e\u30b7\u30fc\u30b1\u30f3\u30b9\u3068\u3057\u3066\u8a18\u8ff0\u3067\u304d\u3001\u72b6\u614b\u306f\u3059\u3079\u3066\u306e\u6c7a\u5b9a\u5909\u6570\u304b\u3089\u69cb\u6210\u3055\u308c\u307e\u3059\u3002\u554f\u984c\u89e3\u6c7a\u306e\u9032\u884c\u3092\u8a18\u8ff0\u3059\u308b\u3059\u3079\u3066\u306e\u5909\u6570\u3092\u542b\u3080\u3079\u304d\u3067\u3001\u6b21\u306e\u72b6\u614b\u3092\u5c0e\u51fa\u3059\u308b\u306e\u306b\u5341\u5206\u306a\u60c5\u5831\u3092\u542b\u3093\u3067\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>\u5404\u72b6\u614b\u306f\u90e8\u5206\u554f\u984c\u306b\u5bfe\u5fdc\u3057\u3001\u3059\u3079\u3066\u306e\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306e \\(dp\\) \u30c6\u30fc\u30d6\u30eb\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002\u72b6\u614b\u306e\u5404\u72ec\u7acb\u5909\u6570\u306f \\(dp\\) \u30c6\u30fc\u30d6\u30eb\u306e\u6b21\u5143\u3067\u3059\u3002\u672c\u8cea\u7684\u306b\u3001\\(dp\\) \u30c6\u30fc\u30d6\u30eb\u306f\u72b6\u614b\u3068\u90e8\u5206\u554f\u984c\u306e\u89e3\u306e\u9593\u306e\u30de\u30c3\u30d4\u30f3\u30b0\u3067\u3059\u3002</p> <p>\u7b2c2\u30b9\u30c6\u30c3\u30d7\uff1a\u6700\u9069\u90e8\u5206\u69cb\u9020\u3092\u7279\u5b9a\u3057\u3001\u72b6\u614b\u9077\u79fb\u65b9\u7a0b\u5f0f\u3092\u5c0e\u51fa\u3059\u308b</p> <p>\u72b6\u614b \\([i, j]\\) \u306b\u3064\u3044\u3066\u3001\u305d\u308c\u306f\u4e0a\u306e\u30bb\u30eb \\([i-1, j]\\) \u307e\u305f\u306f\u5de6\u306e\u30bb\u30eb \\([i, j-1]\\) \u304b\u3089\u306e\u307f\u5c0e\u51fa\u3067\u304d\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u6700\u9069\u90e8\u5206\u69cb\u9020\u306f\uff1a\\([i, j]\\) \u306b\u5230\u9054\u3059\u308b\u6700\u5c0f\u7d4c\u8def\u548c\u306f\u3001\\([i, j-1]\\) \u3068 \\([i-1, j]\\) \u306e\u6700\u5c0f\u7d4c\u8def\u548c\u306e\u5c0f\u3055\u3044\u65b9\u306b\u3088\u3063\u3066\u6c7a\u5b9a\u3055\u308c\u307e\u3059\u3002</p> <p>\u4e0a\u8a18\u306e\u5206\u6790\u306b\u57fa\u3065\u3044\u3066\u3001\u4e0b\u306e\u56f3\u306b\u793a\u3059\u72b6\u614b\u9077\u79fb\u65b9\u7a0b\u5f0f\u3092\u5c0e\u51fa\u3067\u304d\u307e\u3059\uff1a</p> \\[ dp[i, j] = \\min(dp[i-1, j], dp[i, j-1]) + grid[i, j] \\] <p></p> <p> \u56f3 14-12 \u00a0 \u6700\u9069\u90e8\u5206\u69cb\u9020\u3068\u72b6\u614b\u9077\u79fb\u65b9\u7a0b\u5f0f </p> <p>Note</p> <p>\u5b9a\u7fa9\u3055\u308c\u305f \\(dp\\) \u30c6\u30fc\u30d6\u30eb\u306b\u57fa\u3065\u3044\u3066\u3001\u5143\u306e\u554f\u984c\u3068\u90e8\u5206\u554f\u984c\u306e\u95a2\u4fc2\u3092\u8003\u3048\u3001\u90e8\u5206\u554f\u984c\u306e\u6700\u9069\u89e3\u304b\u3089\u5143\u306e\u554f\u984c\u306e\u6700\u9069\u89e3\u3092\u3069\u306e\u3088\u3046\u306b\u69cb\u7bc9\u3059\u308b\u304b\u3001\u3064\u307e\u308a\u6700\u9069\u90e8\u5206\u69cb\u9020\u3092\u898b\u3064\u3051\u307e\u3059\u3002</p> <p>\u6700\u9069\u90e8\u5206\u69cb\u9020\u3092\u7279\u5b9a\u3057\u305f\u3089\u3001\u305d\u308c\u3092\u4f7f\u7528\u3057\u3066\u72b6\u614b\u9077\u79fb\u65b9\u7a0b\u5f0f\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002</p> <p>\u7b2c3\u30b9\u30c6\u30c3\u30d7\uff1a\u5883\u754c\u6761\u4ef6\u3068\u72b6\u614b\u9077\u79fb\u9806\u5e8f\u3092\u6c7a\u5b9a\u3059\u308b</p> <p>\u3053\u306e\u554f\u984c\u3067\u306f\u3001\u6700\u521d\u306e\u884c\u306e\u72b6\u614b\u306f\u5de6\u306e\u72b6\u614b\u304b\u3089\u306e\u307f\u6765\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u6700\u521d\u306e\u5217\u306e\u72b6\u614b\u306f\u4e0a\u306e\u72b6\u614b\u304b\u3089\u306e\u307f\u6765\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u305f\u3081\u3001\u6700\u521d\u306e\u884c \\(i = 0\\) \u3068\u6700\u521d\u306e\u5217 \\(j = 0\\) \u304c\u5883\u754c\u6761\u4ef6\u3067\u3059\u3002</p> <p>\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u5404\u30bb\u30eb\u306f\u5de6\u306e\u30bb\u30eb\u3068\u4e0a\u306e\u30bb\u30eb\u304b\u3089\u5c0e\u51fa\u3055\u308c\u308b\u305f\u3081\u3001\u30eb\u30fc\u30d7\u3092\u4f7f\u7528\u3057\u3066\u884c\u5217\u3092\u8d70\u67fb\u3057\u3001\u5916\u5074\u306e\u30eb\u30fc\u30d7\u306f\u884c\u3092\u53cd\u5fa9\u3057\u3001\u5185\u5074\u306e\u30eb\u30fc\u30d7\u306f\u5217\u3092\u53cd\u5fa9\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 14-13 \u00a0 \u5883\u754c\u6761\u4ef6\u3068\u72b6\u614b\u9077\u79fb\u9806\u5e8f </p> <p>Note</p> <p>\u5883\u754c\u6761\u4ef6\u306f\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3067 \\(dp\\) \u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u3001\u63a2\u7d22\u3067\u306f\u679d\u5208\u308a\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002</p> <p>\u72b6\u614b\u9077\u79fb\u9806\u5e8f\u306e\u6838\u5fc3\u306f\u3001\u73fe\u5728\u306e\u554f\u984c\u306e\u89e3\u3092\u8a08\u7b97\u3059\u308b\u3068\u304d\u3001\u305d\u308c\u304c\u4f9d\u5b58\u3059\u308b\u3059\u3079\u3066\u306e\u5c0f\u3055\u306a\u90e8\u5206\u554f\u984c\u304c\u65e2\u306b\u6b63\u3057\u304f\u8a08\u7b97\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u4fdd\u3059\u308b\u3053\u3068\u3067\u3059\u3002</p> <p>\u4e0a\u8a18\u306e\u5206\u6790\u306b\u57fa\u3065\u3044\u3066\u3001\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30b3\u30fc\u30c9\u3092\u76f4\u63a5\u66f8\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u90e8\u5206\u554f\u984c\u306e\u5206\u89e3\u306f\u30c8\u30c3\u30d7\u30c0\u30a6\u30f3\u30a2\u30d7\u30ed\u30fc\u30c1\u3067\u3042\u308b\u305f\u3081\u3001\u300c\u529b\u4efb\u305b\u63a2\u7d22 \u2192 \u30e1\u30e2\u5316\u63a2\u7d22 \u2192 \u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u300d\u306e\u9806\u5e8f\u3067\u5b9f\u88c5\u3059\u308b\u3053\u3068\u304c\u7fd2\u6163\u7684\u306a\u601d\u8003\u306b\u3088\u308a\u9069\u5408\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_dynamic_programming/dp_solution_pipeline/#1-1","title":"1. \u00a0 \u65b9\u6cd51\uff1a\u529b\u4efb\u305b\u63a2\u7d22","text":"<p>\u72b6\u614b \\([i, j]\\) \u304b\u3089\u63a2\u7d22\u3092\u958b\u59cb\u3057\u3001\u305d\u308c\u3092\u5e38\u306b\u3088\u308a\u5c0f\u3055\u306a\u72b6\u614b \\([i-1, j]\\) \u3068 \\([i, j-1]\\) \u306b\u5206\u89e3\u3057\u307e\u3059\u3002\u518d\u5e30\u95a2\u6570\u306b\u306f\u4ee5\u4e0b\u306e\u8981\u7d20\u304c\u542b\u307e\u308c\u307e\u3059\u3002</p> <ul> <li>\u518d\u5e30\u30d1\u30e9\u30e1\u30fc\u30bf\uff1a\u72b6\u614b \\([i, j]\\)\u3002</li> <li>\u623b\u308a\u5024\uff1a\\([0, 0]\\) \u304b\u3089 \\([i, j]\\) \u3078\u306e\u6700\u5c0f\u7d4c\u8def\u548c \\(dp[i, j]\\)\u3002</li> <li>\u7d42\u4e86\u6761\u4ef6\uff1a\\(i = 0\\) \u304b\u3064 \\(j = 0\\) \u306e\u3068\u304d\u3001\u30b3\u30b9\u30c8 \\(grid[0, 0]\\) \u3092\u8fd4\u3059\u3002</li> <li>\u679d\u5208\u308a\uff1a\\(i &lt; 0\\) \u307e\u305f\u306f \\(j &lt; 0\\) \u3067\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\u7bc4\u56f2\u5916\u306e\u3068\u304d\u3001\u30b3\u30b9\u30c8 \\(+\\infty\\) \u3092\u8fd4\u3057\u3001\u5b9f\u884c\u4e0d\u53ef\u80fd\u6027\u3092\u8868\u3059\u3002</li> </ul> <p>\u5b9f\u88c5\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby min_path_sum.py<pre><code>def min_path_sum_dfs(grid: list[list[int]], i: int, j: int) -&gt; int:\n \"\"\"\u6700\u5c0f\u30d1\u30b9\u548c\uff1a\u30d6\u30eb\u30fc\u30c8\u30d5\u30a9\u30fc\u30b9\u63a2\u7d22\"\"\"\n # \u5de6\u4e0a\u306e\u30bb\u30eb\u306e\u5834\u5408\u3001\u63a2\u7d22\u3092\u7d42\u4e86\n if i == 0 and j == 0:\n return grid[0][0]\n # \u884c\u307e\u305f\u306f\u5217\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\u7bc4\u56f2\u5916\u306e\u5834\u5408\u3001+\u221e \u30b3\u30b9\u30c8\u3092\u8fd4\u3059\n if i &lt; 0 or j &lt; 0:\n return inf\n # \u5de6\u4e0a\u304b\u3089 (i-1, j) \u3068 (i, j-1) \u3078\u306e\u6700\u5c0f\u30d1\u30b9\u30b3\u30b9\u30c8\u3092\u8a08\u7b97\n up = min_path_sum_dfs(grid, i - 1, j)\n left = min_path_sum_dfs(grid, i, j - 1)\n # \u5de6\u4e0a\u304b\u3089 (i, j) \u3078\u306e\u6700\u5c0f\u30d1\u30b9\u30b3\u30b9\u30c8\u3092\u8fd4\u3059\n return min(left, up) + grid[i][j]\n</code></pre> min_path_sum.cpp<pre><code>/* \u6700\u5c0f\u30d1\u30b9\u548c\uff1a\u30d6\u30eb\u30fc\u30c8\u30d5\u30a9\u30fc\u30b9\u63a2\u7d22 */\nint minPathSumDFS(vector&lt;vector&lt;int&gt;&gt; &amp;grid, int i, int j) {\n // \u5de6\u4e0a\u306e\u30bb\u30eb\u306e\u5834\u5408\u3001\u63a2\u7d22\u3092\u7d42\u4e86\n if (i == 0 &amp;&amp; j == 0) {\n return grid[0][0];\n }\n // \u884c\u307e\u305f\u306f\u5217\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\u7bc4\u56f2\u5916\u306e\u5834\u5408\u3001+\u221e \u306e\u30b3\u30b9\u30c8\u3092\u8fd4\u3059\n if (i &lt; 0 || j &lt; 0) {\n return INT_MAX;\n }\n // \u5de6\u4e0a\u304b\u3089 (i-1, j) \u3068 (i, j-1) \u3078\u306e\u6700\u5c0f\u30d1\u30b9\u30b3\u30b9\u30c8\u3092\u8a08\u7b97\n int up = minPathSumDFS(grid, i - 1, j);\n int left = minPathSumDFS(grid, i, j - 1);\n // \u5de6\u4e0a\u304b\u3089 (i, j) \u3078\u306e\u6700\u5c0f\u30d1\u30b9\u30b3\u30b9\u30c8\u3092\u8fd4\u3059\n return min(left, up) + grid[i][j];\n}\n</code></pre> min_path_sum.java<pre><code>/* \u6700\u5c0f\u30d1\u30b9\u548c\uff1a\u30d6\u30eb\u30fc\u30c8\u30d5\u30a9\u30fc\u30b9\u63a2\u7d22 */\nint minPathSumDFS(int[][] grid, int i, int j) {\n // \u5de6\u4e0a\u306e\u30bb\u30eb\u306e\u5834\u5408\u3001\u63a2\u7d22\u3092\u7d42\u4e86\n if (i == 0 &amp;&amp; j == 0) {\n return grid[0][0];\n }\n // \u884c\u307e\u305f\u306f\u5217\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\u7bc4\u56f2\u5916\u306e\u5834\u5408\u3001+\u221e \u306e\u30b3\u30b9\u30c8\u3092\u8fd4\u3059\n if (i &lt; 0 || j &lt; 0) {\n return Integer.MAX_VALUE;\n }\n // \u5de6\u4e0a\u304b\u3089 (i-1, j) \u3068 (i, j-1) \u3078\u306e\u6700\u5c0f\u30d1\u30b9\u30b3\u30b9\u30c8\u3092\u8a08\u7b97\n int up = minPathSumDFS(grid, i - 1, j);\n int left = minPathSumDFS(grid, i, j - 1);\n // \u5de6\u4e0a\u304b\u3089 (i, j) \u3078\u306e\u6700\u5c0f\u30d1\u30b9\u30b3\u30b9\u30c8\u3092\u8fd4\u3059\n return Math.min(left, up) + grid[i][j];\n}\n</code></pre> min_path_sum.cs<pre><code>[class]{min_path_sum}-[func]{MinPathSumDFS}\n</code></pre> min_path_sum.go<pre><code>[class]{}-[func]{minPathSumDFS}\n</code></pre> min_path_sum.swift<pre><code>[class]{}-[func]{minPathSumDFS}\n</code></pre> min_path_sum.js<pre><code>[class]{}-[func]{minPathSumDFS}\n</code></pre> min_path_sum.ts<pre><code>[class]{}-[func]{minPathSumDFS}\n</code></pre> min_path_sum.dart<pre><code>[class]{}-[func]{minPathSumDFS}\n</code></pre> min_path_sum.rs<pre><code>[class]{}-[func]{min_path_sum_dfs}\n</code></pre> min_path_sum.c<pre><code>[class]{}-[func]{minPathSumDFS}\n</code></pre> min_path_sum.kt<pre><code>[class]{}-[func]{minPathSumDFS}\n</code></pre> min_path_sum.rb<pre><code>[class]{}-[func]{min_path_sum_dfs}\n</code></pre> <p>\u4e0b\u306e\u56f3\u306f \\(dp[2, 1]\\) \u3092\u6839\u3068\u3059\u308b\u518d\u5e30\u6728\u3092\u793a\u3057\u3066\u304a\u308a\u3001\u3044\u304f\u3064\u304b\u306e\u91cd\u8907\u3059\u308b\u90e8\u5206\u554f\u984c\u3092\u542b\u307f\u3001\u305d\u306e\u6570\u306f\u30b0\u30ea\u30c3\u30c9 <code>grid</code> \u306e\u30b5\u30a4\u30ba\u304c\u5897\u52a0\u3059\u308b\u3068\u6025\u6fc0\u306b\u5897\u52a0\u3057\u307e\u3059\u3002</p> <p>\u672c\u8cea\u7684\u306b\u3001\u91cd\u8907\u3059\u308b\u90e8\u5206\u554f\u984c\u306e\u7406\u7531\u306f\uff1a**\u5de6\u4e0a\u9685\u304b\u3089\u7279\u5b9a\u306e\u30bb\u30eb\u306b\u5230\u9054\u3059\u308b\u8907\u6570\u306e\u30d1\u30b9\u304c\u5b58\u5728\u3059\u308b**\u3053\u3068\u3067\u3059\u3002</p> <p></p> <p> \u56f3 14-14 \u00a0 \u529b\u4efb\u305b\u63a2\u7d22\u306e\u518d\u5e30\u6728 </p> <p>\u5404\u72b6\u614b\u306b\u306f\u4e0b\u3068\u53f3\u306e2\u3064\u306e\u9078\u629e\u304c\u3042\u308b\u305f\u3081\u3001\u5de6\u4e0a\u9685\u304b\u3089\u53f3\u4e0b\u9685\u307e\u3067\u306e\u7dcf\u30b9\u30c6\u30c3\u30d7\u6570\u306f \\(m + n - 2\\) \u3067\u3001\u6700\u60aa\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(2^{m + n})\\) \u3067\u3059\u3002\u3053\u306e\u8a08\u7b97\u65b9\u6cd5\u306f\u30b0\u30ea\u30c3\u30c9\u30a8\u30c3\u30b8\u8fd1\u304f\u306e\u72b6\u6cc1\u3092\u8003\u616e\u3057\u3066\u3044\u306a\u3044\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30a8\u30c3\u30b8\u306b\u5230\u9054\u3057\u305f\u3068\u304d\u3001\u9078\u629e\u80a2\u304c1\u3064\u3057\u304b\u6b8b\u3089\u306a\u3044\u305f\u3081\u3001\u5b9f\u969b\u306e\u30d1\u30b9\u6570\u306f\u3088\u308a\u5c11\u306a\u304f\u306a\u308a\u307e\u3059\u3002</p>"},{"location":"chapter_dynamic_programming/dp_solution_pipeline/#2-2","title":"2. \u00a0 \u65b9\u6cd52\uff1a\u30e1\u30e2\u5316\u63a2\u7d22","text":"<p>\u30b0\u30ea\u30c3\u30c9 <code>grid</code> \u3068\u540c\u3058\u30b5\u30a4\u30ba\u306e\u30e1\u30e2\u30ea\u30b9\u30c8 <code>mem</code> \u3092\u5c0e\u5165\u3057\u3001\u69d8\u3005\u306a\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u8a18\u9332\u3057\u3001\u91cd\u8907\u3059\u308b\u90e8\u5206\u554f\u984c\u3092\u679d\u5208\u308a\u3057\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby min_path_sum.py<pre><code>def min_path_sum_dfs_mem(\n grid: list[list[int]], mem: list[list[int]], i: int, j: int\n) -&gt; int:\n \"\"\"\u6700\u5c0f\u30d1\u30b9\u548c\uff1a\u8a18\u61b6\u5316\u63a2\u7d22\"\"\"\n # \u5de6\u4e0a\u306e\u30bb\u30eb\u306e\u5834\u5408\u3001\u63a2\u7d22\u3092\u7d42\u4e86\n if i == 0 and j == 0:\n return grid[0][0]\n # \u884c\u307e\u305f\u306f\u5217\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\u7bc4\u56f2\u5916\u306e\u5834\u5408\u3001+\u221e \u30b3\u30b9\u30c8\u3092\u8fd4\u3059\n if i &lt; 0 or j &lt; 0:\n return inf\n # \u8a18\u9332\u304c\u3042\u308b\u5834\u5408\u3001\u305d\u308c\u3092\u8fd4\u3059\n if mem[i][j] != -1:\n return mem[i][j]\n # \u5de6\u3068\u4e0a\u306e\u30bb\u30eb\u304b\u3089\u306e\u6700\u5c0f\u30d1\u30b9\u30b3\u30b9\u30c8\n up = min_path_sum_dfs_mem(grid, mem, i - 1, j)\n left = min_path_sum_dfs_mem(grid, mem, i, j - 1)\n # \u5de6\u4e0a\u304b\u3089 (i, j) \u3078\u306e\u6700\u5c0f\u30d1\u30b9\u30b3\u30b9\u30c8\u3092\u8a18\u9332\u3057\u3066\u8fd4\u3059\n mem[i][j] = min(left, up) + grid[i][j]\n return mem[i][j]\n</code></pre> min_path_sum.cpp<pre><code>[class]{}-[func]{minPathSumDFSMem}\n</code></pre> min_path_sum.java<pre><code>/* \u6700\u5c0f\u30d1\u30b9\u548c\uff1a\u30e1\u30e2\u5316\u63a2\u7d22 */\nint minPathSumDFSMem(int[][] grid, int[][] mem, int i, int j) {\n // \u5de6\u4e0a\u306e\u30bb\u30eb\u306e\u5834\u5408\u3001\u63a2\u7d22\u3092\u7d42\u4e86\n if (i == 0 &amp;&amp; j == 0) {\n return grid[0][0];\n }\n // \u884c\u307e\u305f\u306f\u5217\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\u7bc4\u56f2\u5916\u306e\u5834\u5408\u3001+\u221e \u306e\u30b3\u30b9\u30c8\u3092\u8fd4\u3059\n if (i &lt; 0 || j &lt; 0) {\n return Integer.MAX_VALUE;\n }\n // \u8a18\u9332\u304c\u3042\u308b\u5834\u5408\u3001\u305d\u308c\u3092\u8fd4\u3059\n if (mem[i][j] != -1) {\n return mem[i][j];\n }\n // \u5de6\u3068\u4e0a\u306e\u30bb\u30eb\u304b\u3089\u306e\u6700\u5c0f\u30d1\u30b9\u30b3\u30b9\u30c8\n int up = minPathSumDFSMem(grid, mem, i - 1, j);\n int left = minPathSumDFSMem(grid, mem, i, j - 1);\n // \u5de6\u4e0a\u304b\u3089 (i, j) \u3078\u306e\u6700\u5c0f\u30d1\u30b9\u30b3\u30b9\u30c8\u3092\u8a18\u9332\u3057\u3066\u8fd4\u3059\n mem[i][j] = Math.min(left, up) + grid[i][j];\n return mem[i][j];\n}\n</code></pre> min_path_sum.cs<pre><code>[class]{min_path_sum}-[func]{MinPathSumDFSMem}\n</code></pre> min_path_sum.go<pre><code>[class]{}-[func]{minPathSumDFSMem}\n</code></pre> min_path_sum.swift<pre><code>[class]{}-[func]{minPathSumDFSMem}\n</code></pre> min_path_sum.js<pre><code>[class]{}-[func]{minPathSumDFSMem}\n</code></pre> min_path_sum.ts<pre><code>[class]{}-[func]{minPathSumDFSMem}\n</code></pre> min_path_sum.dart<pre><code>[class]{}-[func]{minPathSumDFSMem}\n</code></pre> min_path_sum.rs<pre><code>[class]{}-[func]{min_path_sum_dfs_mem}\n</code></pre> min_path_sum.c<pre><code>[class]{}-[func]{minPathSumDFSMem}\n</code></pre> min_path_sum.kt<pre><code>[class]{}-[func]{minPathSumDFSMem}\n</code></pre> min_path_sum.rb<pre><code>[class]{}-[func]{min_path_sum_dfs_mem}\n</code></pre> <p>\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u30e1\u30e2\u5316\u3092\u5c0e\u5165\u3057\u305f\u5f8c\u3001\u3059\u3079\u3066\u306e\u90e8\u5206\u554f\u984c\u306e\u89e3\u306f\u4e00\u5ea6\u3060\u3051\u8a08\u7b97\u3055\u308c\u308b\u5fc5\u8981\u304c\u3042\u308b\u305f\u3081\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f\u72b6\u614b\u306e\u7dcf\u6570\u3001\u3064\u307e\u308a\u30b0\u30ea\u30c3\u30c9\u30b5\u30a4\u30ba \\(O(nm)\\) \u306b\u4f9d\u5b58\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 14-15 \u00a0 \u30e1\u30e2\u5316\u63a2\u7d22\u306e\u518d\u5e30\u6728 </p>"},{"location":"chapter_dynamic_programming/dp_solution_pipeline/#3-3","title":"3. \u00a0 \u65b9\u6cd53\uff1a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0","text":"<p>\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u89e3\u6cd5\u3092\u53cd\u5fa9\u7684\u306b\u5b9f\u88c5\u3057\u307e\u3059\u3002\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby min_path_sum.py<pre><code>def min_path_sum_dp(grid: list[list[int]]) -&gt; int:\n \"\"\"\u6700\u5c0f\u30d1\u30b9\u548c\uff1a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\"\"\"\n n, m = len(grid), len(grid[0])\n # dp \u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n dp = [[0] * m for _ in range(n)]\n dp[0][0] = grid[0][0]\n # \u72b6\u614b\u9077\u79fb\uff1a\u6700\u521d\u306e\u884c\n for j in range(1, m):\n dp[0][j] = dp[0][j - 1] + grid[0][j]\n # \u72b6\u614b\u9077\u79fb\uff1a\u6700\u521d\u306e\u5217\n for i in range(1, n):\n dp[i][0] = dp[i - 1][0] + grid[i][0]\n # \u72b6\u614b\u9077\u79fb\uff1a\u6b8b\u308a\u306e\u884c\u3068\u5217\n for i in range(1, n):\n for j in range(1, m):\n dp[i][j] = min(dp[i][j - 1], dp[i - 1][j]) + grid[i][j]\n return dp[n - 1][m - 1]\n</code></pre> min_path_sum.cpp<pre><code>/* \u6700\u5c0f\u30d1\u30b9\u548c\uff1a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint minPathSumDP(vector&lt;vector&lt;int&gt;&gt; &amp;grid) {\n int n = grid.size(), m = grid[0].size();\n // DP\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n vector&lt;vector&lt;int&gt;&gt; dp(n, vector&lt;int&gt;(m));\n dp[0][0] = grid[0][0];\n // \u72b6\u614b\u9077\u79fb\uff1a\u6700\u521d\u306e\u884c\n for (int j = 1; j &lt; m; j++) {\n dp[0][j] = dp[0][j - 1] + grid[0][j];\n }\n // \u72b6\u614b\u9077\u79fb\uff1a\u6700\u521d\u306e\u5217\n for (int i = 1; i &lt; n; i++) {\n dp[i][0] = dp[i - 1][0] + grid[i][0];\n }\n // \u72b6\u614b\u9077\u79fb\uff1a\u6b8b\u308a\u306e\u884c\u3068\u5217\n for (int i = 1; i &lt; n; i++) {\n for (int j = 1; j &lt; m; j++) {\n dp[i][j] = min(dp[i][j - 1], dp[i - 1][j]) + grid[i][j];\n }\n }\n return dp[n - 1][m - 1];\n}\n</code></pre> min_path_sum.java<pre><code>/* \u6700\u5c0f\u30d1\u30b9\u548c\uff1a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint minPathSumDP(int[][] grid) {\n int n = grid.length, m = grid[0].length;\n // DP\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n int[][] dp = new int[n][m];\n dp[0][0] = grid[0][0];\n // \u72b6\u614b\u9077\u79fb\uff1a\u6700\u521d\u306e\u884c\n for (int j = 1; j &lt; m; j++) {\n dp[0][j] = dp[0][j - 1] + grid[0][j];\n }\n // \u72b6\u614b\u9077\u79fb\uff1a\u6700\u521d\u306e\u5217\n for (int i = 1; i &lt; n; i++) {\n dp[i][0] = dp[i - 1][0] + grid[i][0];\n }\n // \u72b6\u614b\u9077\u79fb\uff1a\u6b8b\u308a\u306e\u884c\u3068\u5217\n for (int i = 1; i &lt; n; i++) {\n for (int j = 1; j &lt; m; j++) {\n dp[i][j] = Math.min(dp[i][j - 1], dp[i - 1][j]) + grid[i][j];\n }\n }\n return dp[n - 1][m - 1];\n}\n</code></pre> min_path_sum.cs<pre><code>[class]{min_path_sum}-[func]{MinPathSumDP}\n</code></pre> min_path_sum.go<pre><code>[class]{}-[func]{minPathSumDP}\n</code></pre> min_path_sum.swift<pre><code>[class]{}-[func]{minPathSumDP}\n</code></pre> min_path_sum.js<pre><code>[class]{}-[func]{minPathSumDP}\n</code></pre> min_path_sum.ts<pre><code>[class]{}-[func]{minPathSumDP}\n</code></pre> min_path_sum.dart<pre><code>[class]{}-[func]{minPathSumDP}\n</code></pre> min_path_sum.rs<pre><code>[class]{}-[func]{min_path_sum_dp}\n</code></pre> min_path_sum.c<pre><code>[class]{}-[func]{minPathSumDP}\n</code></pre> min_path_sum.kt<pre><code>[class]{}-[func]{minPathSumDP}\n</code></pre> min_path_sum.rb<pre><code>[class]{}-[func]{min_path_sum_dp}\n</code></pre> <p>\u4e0b\u306e\u56f3\u306f\u6700\u5c0f\u7d4c\u8def\u548c\u306e\u72b6\u614b\u9077\u79fb\u30d7\u30ed\u30bb\u30b9\u3092\u793a\u3057\u3001\u30b0\u30ea\u30c3\u30c9\u5168\u4f53\u3092\u8d70\u67fb\u3059\u308b\u305f\u3081\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(nm)\\) \u3067\u3059\u3002</p> <p>\u914d\u5217 <code>dp</code> \u306e\u30b5\u30a4\u30ba\u306f \\(n \\times m\\) \u3067\u3042\u308b\u305f\u3081\u3001\u7a7a\u9593\u8a08\u7b97\u91cf\u306f \\(O(nm)\\) \u3067\u3059\u3002</p> &lt;1&gt;&lt;2&gt;&lt;3&gt;&lt;4&gt;&lt;5&gt;&lt;6&gt;&lt;7&gt;&lt;8&gt;&lt;9&gt;&lt;10&gt;&lt;11&gt;&lt;12&gt; <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p> \u56f3 14-16 \u00a0 \u6700\u5c0f\u7d4c\u8def\u548c\u306e\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30d7\u30ed\u30bb\u30b9 </p>"},{"location":"chapter_dynamic_programming/dp_solution_pipeline/#4","title":"4. \u00a0 \u7a7a\u9593\u6700\u9069\u5316","text":"<p>\u5404\u30bb\u30eb\u306f\u5de6\u3068\u4e0a\u306e\u30bb\u30eb\u306e\u307f\u306b\u95a2\u9023\u3059\u308b\u305f\u3081\u3001\u5358\u4e00\u884c\u914d\u5217\u3092\u4f7f\u7528\u3057\u3066 \\(dp\\) \u30c6\u30fc\u30d6\u30eb\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002</p> <p>\u914d\u5217 <code>dp</code> \u306f1\u884c\u306e\u72b6\u614b\u306e\u307f\u3092\u8868\u73fe\u3067\u304d\u308b\u305f\u3081\u3001\u6700\u521d\u306e\u5217\u306e\u72b6\u614b\u3092\u4e8b\u524d\u306b\u521d\u671f\u5316\u3067\u304d\u305a\u3001\u5404\u884c\u3092\u8d70\u67fb\u3059\u308b\u3068\u304d\u306b\u66f4\u65b0\u3059\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby min_path_sum.py<pre><code>def min_path_sum_dp_comp(grid: list[list[int]]) -&gt; int:\n \"\"\"\u6700\u5c0f\u30d1\u30b9\u548c\uff1a\u7a7a\u9593\u6700\u9069\u5316\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\"\"\"\n n, m = len(grid), len(grid[0])\n # dp \u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n dp = [0] * m\n # \u72b6\u614b\u9077\u79fb\uff1a\u6700\u521d\u306e\u884c\n dp[0] = grid[0][0]\n for j in range(1, m):\n dp[j] = dp[j - 1] + grid[0][j]\n # \u72b6\u614b\u9077\u79fb\uff1a\u6b8b\u308a\u306e\u884c\n for i in range(1, n):\n # \u72b6\u614b\u9077\u79fb\uff1a\u6700\u521d\u306e\u5217\n dp[0] = dp[0] + grid[i][0]\n # \u72b6\u614b\u9077\u79fb\uff1a\u6b8b\u308a\u306e\u5217\n for j in range(1, m):\n dp[j] = min(dp[j - 1], dp[j]) + grid[i][j]\n return dp[m - 1]\n</code></pre> min_path_sum.cpp<pre><code>[class]{}-[func]{minPathSumDPComp}\n</code></pre> min_path_sum.java<pre><code>/* \u6700\u5c0f\u30d1\u30b9\u548c\uff1a\u7a7a\u9593\u6700\u9069\u5316\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint minPathSumDPComp(int[][] grid) {\n int n = grid.length, m = grid[0].length;\n // DP\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n int[] dp = new int[m];\n // \u72b6\u614b\u9077\u79fb\uff1a\u6700\u521d\u306e\u884c\n dp[0] = grid[0][0];\n for (int j = 1; j &lt; m; j++) {\n dp[j] = dp[j - 1] + grid[0][j];\n }\n // \u72b6\u614b\u9077\u79fb\uff1a\u6b8b\u308a\u306e\u884c\n for (int i = 1; i &lt; n; i++) {\n // \u72b6\u614b\u9077\u79fb\uff1a\u6700\u521d\u306e\u5217\n dp[0] = dp[0] + grid[i][0];\n // \u72b6\u614b\u9077\u79fb\uff1a\u6b8b\u308a\u306e\u5217\n for (int j = 1; j &lt; m; j++) {\n dp[j] = Math.min(dp[j - 1], dp[j]) + grid[i][j];\n }\n }\n return dp[m - 1];\n}\n</code></pre> min_path_sum.cs<pre><code>[class]{min_path_sum}-[func]{MinPathSumDPComp}\n</code></pre> min_path_sum.go<pre><code>[class]{}-[func]{minPathSumDPComp}\n</code></pre> min_path_sum.swift<pre><code>[class]{}-[func]{minPathSumDPComp}\n</code></pre> min_path_sum.js<pre><code>[class]{}-[func]{minPathSumDPComp}\n</code></pre> min_path_sum.ts<pre><code>[class]{}-[func]{minPathSumDPComp}\n</code></pre> min_path_sum.dart<pre><code>[class]{}-[func]{minPathSumDPComp}\n</code></pre> min_path_sum.rs<pre><code>[class]{}-[func]{min_path_sum_dp_comp}\n</code></pre> min_path_sum.c<pre><code>[class]{}-[func]{minPathSumDPComp}\n</code></pre> min_path_sum.kt<pre><code>[class]{}-[func]{minPathSumDPComp}\n</code></pre> min_path_sum.rb<pre><code>[class]{}-[func]{min_path_sum_dp_comp}\n</code></pre>"},{"location":"chapter_dynamic_programming/edit_distance_problem/","title":"14.6 \u00a0 \u7de8\u96c6\u8ddd\u96e2\u554f\u984c","text":"<p>\u7de8\u96c6\u8ddd\u96e2\u306f\u3001\u30ec\u30fc\u30d9\u30f3\u30b7\u30e5\u30bf\u30a4\u30f3\u8ddd\u96e2\u3068\u3082\u547c\u3070\u308c\u3001\u4e00\u3064\u306e\u6587\u5b57\u5217\u3092\u5225\u306e\u6587\u5b57\u5217\u306b\u5909\u63db\u3059\u308b\u305f\u3081\u306b\u5fc5\u8981\u306a\u6700\u5c0f\u4fee\u6b63\u56de\u6570\u3092\u6307\u3057\u3001\u60c5\u5831\u691c\u7d22\u3084\u81ea\u7136\u8a00\u8a9e\u51e6\u7406\u30672\u3064\u306e\u30b7\u30fc\u30b1\u30f3\u30b9\u9593\u306e\u985e\u4f3c\u5ea6\u3092\u6e2c\u5b9a\u3059\u308b\u305f\u3081\u306b\u3088\u304f\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002</p> <p>Question</p> <p>2\u3064\u306e\u6587\u5b57\u5217 \\(s\\) \u3068 \\(t\\) \u304c\u4e0e\u3048\u3089\u308c\u305f\u3068\u304d\u3001\\(s\\) \u3092 \\(t\\) \u306b\u5909\u63db\u3059\u308b\u305f\u3081\u306b\u5fc5\u8981\u306a\u6700\u5c0f\u7de8\u96c6\u56de\u6570\u3092\u8fd4\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <p>\u6587\u5b57\u5217\u306b\u5bfe\u3057\u30663\u7a2e\u985e\u306e\u7de8\u96c6\u3092\u5b9f\u884c\u3067\u304d\u307e\u3059\uff1a\u6587\u5b57\u306e\u633f\u5165\u3001\u6587\u5b57\u306e\u524a\u9664\u3001\u307e\u305f\u306f\u6587\u5b57\u3092\u4ed6\u306e\u4efb\u610f\u306e\u6587\u5b57\u306b\u7f6e\u63db\u3002</p> <p>\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001<code>kitten</code> \u3092 <code>sitting</code> \u306b\u5909\u63db\u3059\u308b\u306b\u306f3\u56de\u306e\u7de8\u96c6\u304c\u5fc5\u8981\u3067\u30012\u56de\u306e\u7f6e\u63db\u30681\u56de\u306e\u633f\u5165\u3092\u542b\u307f\u307e\u3059\u3002<code>hello</code> \u3092 <code>algo</code> \u306b\u5909\u63db\u3059\u308b\u306b\u306f3\u30b9\u30c6\u30c3\u30d7\u304c\u5fc5\u8981\u3067\u30012\u56de\u306e\u7f6e\u63db\u30681\u56de\u306e\u524a\u9664\u3092\u542b\u307f\u307e\u3059\u3002</p> <p></p> <p> \u56f3 14-27 \u00a0 \u7de8\u96c6\u8ddd\u96e2\u306e\u4f8b\u30c7\u30fc\u30bf </p> <p>\u7de8\u96c6\u8ddd\u96e2\u554f\u984c\u306f\u6c7a\u5b9a\u6728\u30e2\u30c7\u30eb\u3067\u81ea\u7136\u306b\u8aac\u660e\u3067\u304d\u307e\u3059\u3002\u6587\u5b57\u5217\u306f\u6728\u306e\u30ce\u30fc\u30c9\u306b\u5bfe\u5fdc\u3057\u30011\u30e9\u30a6\u30f3\u30c9\u306e\u6c7a\u5b9a\uff08\u7de8\u96c6\u64cd\u4f5c\uff09\u306f\u6728\u306e\u30a8\u30c3\u30b8\u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002</p> <p>\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u64cd\u4f5c\u306b\u5236\u9650\u304c\u306a\u3044\u5834\u5408\u3001\u5404\u30ce\u30fc\u30c9\u306f\u591a\u304f\u306e\u30a8\u30c3\u30b8\u3092\u5c0e\u51fa\u3067\u304d\u3001\u305d\u308c\u305e\u308c\u304c1\u3064\u306e\u64cd\u4f5c\u306b\u5bfe\u5fdc\u3059\u308b\u305f\u3081\u3001<code>hello</code> \u3092 <code>algo</code> \u306b\u5909\u63db\u3059\u308b\u53ef\u80fd\u306a\u7d4c\u8def\u306f\u591a\u6570\u3042\u308a\u307e\u3059\u3002</p> <p>\u6c7a\u5b9a\u6728\u306e\u89b3\u70b9\u304b\u3089\u3001\u3053\u306e\u554f\u984c\u306e\u76ee\u6a19\u306f\u3001\u30ce\u30fc\u30c9 <code>hello</code> \u3068\u30ce\u30fc\u30c9 <code>algo</code> \u306e\u9593\u306e\u6700\u77ed\u7d4c\u8def\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u3067\u3059\u3002</p> <p></p> <p> \u56f3 14-28 \u00a0 \u6c7a\u5b9a\u6728\u30e2\u30c7\u30eb\u306b\u57fa\u3065\u3044\u3066\u8868\u73fe\u3055\u308c\u305f\u7de8\u96c6\u8ddd\u96e2\u554f\u984c </p>"},{"location":"chapter_dynamic_programming/edit_distance_problem/#1","title":"1. \u00a0 \u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30a2\u30d7\u30ed\u30fc\u30c1","text":"<p>\u30b9\u30c6\u30c3\u30d71\uff1a\u5404\u30e9\u30a6\u30f3\u30c9\u306e\u6c7a\u5b9a\u3092\u8003\u3048\u3001\u72b6\u614b\u3092\u5b9a\u7fa9\u3057\u3001\u305d\u308c\u306b\u3088\u308a \\(dp\\) \u30c6\u30fc\u30d6\u30eb\u3092\u5f97\u308b</p> <p>\u5404\u30e9\u30a6\u30f3\u30c9\u306e\u6c7a\u5b9a\u306f\u3001\u6587\u5b57\u5217 \\(s\\) \u306b\u5bfe\u3057\u30661\u3064\u306e\u7de8\u96c6\u64cd\u4f5c\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u3092\u542b\u307f\u307e\u3059\u3002</p> <p>\u7de8\u96c6\u30d7\u30ed\u30bb\u30b9\u4e2d\u306b\u554f\u984c\u306e\u30b5\u30a4\u30ba\u3092\u6bb5\u968e\u7684\u306b\u7e2e\u5c0f\u3059\u308b\u3053\u3068\u3092\u76ee\u6307\u3057\u3001\u3053\u308c\u306b\u3088\u308a\u90e8\u5206\u554f\u984c\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002\u6587\u5b57\u5217 \\(s\\) \u3068 \\(t\\) \u306e\u9577\u3055\u3092\u305d\u308c\u305e\u308c \\(n\\) \u3068 \\(m\\) \u3068\u3057\u307e\u3059\u3002\u307e\u305a\u3001\u4e21\u65b9\u306e\u6587\u5b57\u5217\u306e\u672b\u5c3e\u6587\u5b57 \\(s[n-1]\\) \u3068 \\(t[m-1]\\) \u3092\u8003\u616e\u3057\u307e\u3059\u3002</p> <ul> <li>\\(s[n-1]\\) \u3068 \\(t[m-1]\\) \u304c\u540c\u3058\u5834\u5408\u3001\u305d\u308c\u3089\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u3066\u76f4\u63a5 \\(s[n-2]\\) \u3068 \\(t[m-2]\\) \u3092\u8003\u616e\u3067\u304d\u307e\u3059\u3002</li> <li>\\(s[n-1]\\) \u3068 \\(t[m-1]\\) \u304c\u7570\u306a\u308b\u5834\u5408\u3001\\(s\\) \u306b\u5bfe\u3057\u30661\u3064\u306e\u7de8\u96c6\uff08\u633f\u5165\u3001\u524a\u9664\u3001\u7f6e\u63db\uff09\u3092\u5b9f\u884c\u3057\u3066\u30012\u3064\u306e\u6587\u5b57\u5217\u306e\u672b\u5c3e\u6587\u5b57\u3092\u4e00\u81f4\u3055\u305b\u3001\u305d\u308c\u3089\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u3066\u3088\u308a\u5c0f\u898f\u6a21\u306a\u554f\u984c\u3092\u8003\u616e\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</li> </ul> <p>\u3057\u305f\u304c\u3063\u3066\u3001\u6587\u5b57\u5217 \\(s\\) \u3067\u306e\u5404\u30e9\u30a6\u30f3\u30c9\u306e\u6c7a\u5b9a\uff08\u7de8\u96c6\u64cd\u4f5c\uff09\u306f\u3001\\(s\\) \u3068 \\(t\\) \u3067\u30de\u30c3\u30c1\u3055\u308c\u308b\u6b8b\u308a\u306e\u6587\u5b57\u3092\u5909\u66f4\u3057\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u72b6\u614b\u306f \\(s\\) \u3068 \\(t\\) \u3067\u73fe\u5728\u8003\u616e\u3055\u308c\u3066\u3044\u308b \\(i\\) \u756a\u76ee\u3068 \\(j\\) \u756a\u76ee\u306e\u6587\u5b57\u3067\u3042\u308a\u3001\\([i, j]\\) \u3068\u8868\u8a18\u3055\u308c\u307e\u3059\u3002</p> <p>\u72b6\u614b \\([i, j]\\) \u306f\u90e8\u5206\u554f\u984c\u306b\u5bfe\u5fdc\u3057\u307e\u3059\uff1a\\(s\\) \u306e\u6700\u521d\u306e \\(i\\) \u6587\u5b57\u3092 \\(t\\) \u306e\u6700\u521d\u306e \\(j\\) \u6587\u5b57\u306b\u5909\u66f4\u3059\u308b\u305f\u3081\u306b\u5fc5\u8981\u306a\u6700\u5c0f\u7de8\u96c6\u56de\u6570\u3002</p> <p>\u3053\u308c\u304b\u3089\u3001\u30b5\u30a4\u30ba \\((i+1) \\times (j+1)\\) \u306e\u4e8c\u6b21\u5143 \\(dp\\) \u30c6\u30fc\u30d6\u30eb\u3092\u5f97\u307e\u3059\u3002</p> <p>\u30b9\u30c6\u30c3\u30d72\uff1a\u6700\u9069\u90e8\u5206\u69cb\u9020\u3092\u7279\u5b9a\u3057\u3001\u72b6\u614b\u9077\u79fb\u65b9\u7a0b\u5f0f\u3092\u5c0e\u51fa\u3059\u308b</p> <p>\u90e8\u5206\u554f\u984c \\(dp[i, j]\\) \u3092\u8003\u616e\u3059\u308b\u3068\u3001\u3053\u308c\u306b\u5bfe\u5fdc\u3059\u308b2\u3064\u306e\u6587\u5b57\u5217\u306e\u672b\u5c3e\u6587\u5b57\u306f \\(s[i-1]\\) \u3068 \\(t[j-1]\\) \u3067\u3042\u308a\u3001\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b3\u3064\u306e\u30b7\u30ca\u30ea\u30aa\u306b\u5206\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</p> <ol> <li>\\(s[i-1]\\) \u306e\u5f8c\u306b \\(t[j-1]\\) \u3092\u8ffd\u52a0\u3059\u308b\u3068\u3001\u6b8b\u308a\u306e\u90e8\u5206\u554f\u984c\u306f \\(dp[i, j-1]\\) \u3067\u3059\u3002</li> <li>\\(s[i-1]\\) \u3092\u524a\u9664\u3059\u308b\u3068\u3001\u6b8b\u308a\u306e\u90e8\u5206\u554f\u984c\u306f \\(dp[i-1, j]\\) \u3067\u3059\u3002</li> <li>\\(s[i-1]\\) \u3092 \\(t[j-1]\\) \u306b\u7f6e\u63db\u3059\u308b\u3068\u3001\u6b8b\u308a\u306e\u90e8\u5206\u554f\u984c\u306f \\(dp[i-1, j-1]\\) \u3067\u3059\u3002</li> </ol> <p></p> <p> \u56f3 14-29 \u00a0 \u7de8\u96c6\u8ddd\u96e2\u306e\u72b6\u614b\u9077\u79fb </p> <p>\u4e0a\u8a18\u306e\u5206\u6790\u306b\u57fa\u3065\u3044\u3066\u3001\u6700\u9069\u90e8\u5206\u69cb\u9020\u3092\u6c7a\u5b9a\u3067\u304d\u307e\u3059\uff1a\\(dp[i, j]\\) \u306e\u6700\u5c0f\u7de8\u96c6\u56de\u6570\u306f\u3001\\(dp[i, j-1]\\)\u3001\\(dp[i-1, j]\\)\u3001\\(dp[i-1, j-1]\\) \u306e\u4e2d\u306e\u6700\u5c0f\u5024\u306b\u7de8\u96c6\u30b9\u30c6\u30c3\u30d7 \\(1\\) \u3092\u52a0\u3048\u305f\u3082\u306e\u3067\u3059\u3002\u5bfe\u5fdc\u3059\u308b\u72b6\u614b\u9077\u79fb\u65b9\u7a0b\u5f0f\u306f\uff1a</p> \\[ dp[i, j] = \\min(dp[i, j-1], dp[i-1, j], dp[i-1, j-1]) + 1 \\] <p>\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\\(s[i-1]\\) \u3068 \\(t[j-1]\\) \u304c\u540c\u3058\u5834\u5408\u3001\u73fe\u5728\u306e\u6587\u5b57\u306b\u5bfe\u3057\u3066\u7de8\u96c6\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\u3002\u3053\u306e\u5834\u5408\u3001\u72b6\u614b\u9077\u79fb\u65b9\u7a0b\u5f0f\u306f\uff1a</p> \\[ dp[i, j] = dp[i-1, j-1] \\] <p>\u30b9\u30c6\u30c3\u30d73\uff1a\u5883\u754c\u6761\u4ef6\u3068\u72b6\u614b\u9077\u79fb\u306e\u9806\u5e8f\u3092\u6c7a\u5b9a\u3059\u308b</p> <p>\u4e21\u65b9\u306e\u6587\u5b57\u5217\u304c\u7a7a\u306e\u5834\u5408\u3001\u7de8\u96c6\u56de\u6570\u306f \\(0\\) \u3067\u3059\u3002\u3064\u307e\u308a\u3001\\(dp[0, 0] = 0\\) \u3067\u3059\u3002\\(s\\) \u304c\u7a7a\u3067 \\(t\\) \u304c\u7a7a\u3067\u306a\u3044\u5834\u5408\u3001\u6700\u5c0f\u7de8\u96c6\u56de\u6570\u306f \\(t\\) \u306e\u9577\u3055\u306b\u7b49\u3057\u304f\u3001\u3064\u307e\u308a\u6700\u521d\u306e\u884c \\(dp[0, j] = j\\) \u3067\u3059\u3002\\(s\\) \u304c\u7a7a\u3067\u306a\u304f \\(t\\) \u304c\u7a7a\u306e\u5834\u5408\u3001\u6700\u5c0f\u7de8\u96c6\u56de\u6570\u306f \\(s\\) \u306e\u9577\u3055\u306b\u7b49\u3057\u304f\u3001\u3064\u307e\u308a\u6700\u521d\u306e\u5217 \\(dp[i, 0] = i\\) \u3067\u3059\u3002</p> <p>\u72b6\u614b\u9077\u79fb\u65b9\u7a0b\u5f0f\u3092\u89b3\u5bdf\u3059\u308b\u3068\u3001\\(dp[i, j]\\) \u306e\u89e3\u6c7a\u306f\u5de6\u3001\u4e0a\u3001\u5de6\u4e0a\u306e\u89e3\u306b\u4f9d\u5b58\u3059\u308b\u305f\u3081\u3001\u4e8c\u91cd\u30eb\u30fc\u30d7\u3092\u4f7f\u7528\u3057\u3066\u6b63\u3057\u3044\u9806\u5e8f\u3067 \\(dp\\) \u30c6\u30fc\u30d6\u30eb\u5168\u4f53\u3092\u8d70\u67fb\u3067\u304d\u307e\u3059\u3002</p>"},{"location":"chapter_dynamic_programming/edit_distance_problem/#2","title":"2. \u00a0 \u30b3\u30fc\u30c9\u5b9f\u88c5","text":"PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby edit_distance.py<pre><code>def edit_distance_dp(s: str, t: str) -&gt; int:\n \"\"\"\u7de8\u96c6\u8ddd\u96e2\uff1a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\"\"\"\n n, m = len(s), len(t)\n dp = [[0] * (m + 1) for _ in range(n + 1)]\n # \u72b6\u614b\u9077\u79fb\uff1a\u6700\u521d\u306e\u884c\u3068\u6700\u521d\u306e\u5217\n for i in range(1, n + 1):\n dp[i][0] = i\n for j in range(1, m + 1):\n dp[0][j] = j\n # \u72b6\u614b\u9077\u79fb\uff1a\u6b8b\u308a\u306e\u884c\u3068\u5217\n for i in range(1, n + 1):\n for j in range(1, m + 1):\n if s[i - 1] == t[j - 1]:\n # 2 \u3064\u306e\u6587\u5b57\u304c\u7b49\u3057\u3044\u5834\u5408\u3001\u3053\u308c\u3089 2 \u3064\u306e\u6587\u5b57\u3092\u30b9\u30ad\u30c3\u30d7\n dp[i][j] = dp[i - 1][j - 1]\n else:\n # \u6700\u5c0f\u7de8\u96c6\u6570 = 3 \u3064\u306e\u64cd\u4f5c\uff08\u633f\u5165\u3001\u524a\u9664\u3001\u7f6e\u63db\uff09\u304b\u3089\u306e\u6700\u5c0f\u7de8\u96c6\u6570 + 1\n dp[i][j] = min(dp[i][j - 1], dp[i - 1][j], dp[i - 1][j - 1]) + 1\n return dp[n][m]\n</code></pre> edit_distance.cpp<pre><code>/* \u7de8\u96c6\u8ddd\u96e2\uff1a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint editDistanceDP(string s, string t) {\n int n = s.length(), m = t.length();\n vector&lt;vector&lt;int&gt;&gt; dp(n + 1, vector&lt;int&gt;(m + 1, 0));\n // \u72b6\u614b\u9077\u79fb\uff1a\u6700\u521d\u306e\u884c\u3068\u6700\u521d\u306e\u5217\n for (int i = 1; i &lt;= n; i++) {\n dp[i][0] = i;\n }\n for (int j = 1; j &lt;= m; j++) {\n dp[0][j] = j;\n }\n // \u72b6\u614b\u9077\u79fb\uff1a\u6b8b\u308a\u306e\u884c\u3068\u5217\n for (int i = 1; i &lt;= n; i++) {\n for (int j = 1; j &lt;= m; j++) {\n if (s[i - 1] == t[j - 1]) {\n // 2\u3064\u306e\u6587\u5b57\u304c\u7b49\u3057\u3044\u5834\u5408\u3001\u3053\u308c\u30892\u3064\u306e\u6587\u5b57\u3092\u30b9\u30ad\u30c3\u30d7\n dp[i][j] = dp[i - 1][j - 1];\n } else {\n // \u6700\u5c0f\u7de8\u96c6\u6570 = 3\u3064\u306e\u64cd\u4f5c\uff08\u633f\u5165\u3001\u524a\u9664\u3001\u7f6e\u63db\uff09\u304b\u3089\u306e\u6700\u5c0f\u7de8\u96c6\u6570 + 1\n dp[i][j] = min(min(dp[i][j - 1], dp[i - 1][j]), dp[i - 1][j - 1]) + 1;\n }\n }\n }\n return dp[n][m];\n}\n</code></pre> edit_distance.java<pre><code>/* \u7de8\u96c6\u8ddd\u96e2\uff1a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint editDistanceDP(String s, String t) {\n int n = s.length(), m = t.length();\n int[][] dp = new int[n + 1][m + 1];\n // \u72b6\u614b\u9077\u79fb\uff1a\u6700\u521d\u306e\u884c\u3068\u6700\u521d\u306e\u5217\n for (int i = 1; i &lt;= n; i++) {\n dp[i][0] = i;\n }\n for (int j = 1; j &lt;= m; j++) {\n dp[0][j] = j;\n }\n // \u72b6\u614b\u9077\u79fb\uff1a\u6b8b\u308a\u306e\u884c\u3068\u5217\n for (int i = 1; i &lt;= n; i++) {\n for (int j = 1; j &lt;= m; j++) {\n if (s.charAt(i - 1) == t.charAt(j - 1)) {\n // 2\u3064\u306e\u6587\u5b57\u304c\u7b49\u3057\u3044\u5834\u5408\u3001\u3053\u308c\u30892\u3064\u306e\u6587\u5b57\u3092\u30b9\u30ad\u30c3\u30d7\n dp[i][j] = dp[i - 1][j - 1];\n } else {\n // \u6700\u5c0f\u7de8\u96c6\u6570 = 3\u3064\u306e\u64cd\u4f5c\uff08\u633f\u5165\u3001\u524a\u9664\u3001\u7f6e\u63db\uff09\u304b\u3089\u306e\u6700\u5c0f\u7de8\u96c6\u6570 + 1\n dp[i][j] = Math.min(Math.min(dp[i][j - 1], dp[i - 1][j]), dp[i - 1][j - 1]) + 1;\n }\n }\n }\n return dp[n][m];\n}\n</code></pre> edit_distance.cs<pre><code>[class]{edit_distance}-[func]{EditDistanceDP}\n</code></pre> edit_distance.go<pre><code>[class]{}-[func]{editDistanceDP}\n</code></pre> edit_distance.swift<pre><code>[class]{}-[func]{editDistanceDP}\n</code></pre> edit_distance.js<pre><code>[class]{}-[func]{editDistanceDP}\n</code></pre> edit_distance.ts<pre><code>[class]{}-[func]{editDistanceDP}\n</code></pre> edit_distance.dart<pre><code>[class]{}-[func]{editDistanceDP}\n</code></pre> edit_distance.rs<pre><code>[class]{}-[func]{edit_distance_dp}\n</code></pre> edit_distance.c<pre><code>[class]{}-[func]{editDistanceDP}\n</code></pre> edit_distance.kt<pre><code>[class]{}-[func]{editDistanceDP}\n</code></pre> edit_distance.rb<pre><code>[class]{}-[func]{edit_distance_dp}\n</code></pre> <p>\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u7de8\u96c6\u8ddd\u96e2\u554f\u984c\u306e\u72b6\u614b\u9077\u79fb\u30d7\u30ed\u30bb\u30b9\u306f\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u3068\u975e\u5e38\u306b\u4f3c\u3066\u304a\u308a\u3001\u4e8c\u6b21\u5143\u30b0\u30ea\u30c3\u30c9\u3092\u57cb\u3081\u308b\u3053\u3068\u3068\u898b\u306a\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</p> &lt;1&gt;&lt;2&gt;&lt;3&gt;&lt;4&gt;&lt;5&gt;&lt;6&gt;&lt;7&gt;&lt;8&gt;&lt;9&gt;&lt;10&gt;&lt;11&gt;&lt;12&gt;&lt;13&gt;&lt;14&gt;&lt;15&gt; <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p> \u56f3 14-30 \u00a0 \u7de8\u96c6\u8ddd\u96e2\u306e\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30d7\u30ed\u30bb\u30b9 </p>"},{"location":"chapter_dynamic_programming/edit_distance_problem/#3","title":"3. \u00a0 \u7a7a\u9593\u6700\u9069\u5316","text":"<p>\\(dp[i, j]\\) \u306f\u4e0a\u306e \\(dp[i-1, j]\\)\u3001\u5de6\u306e \\(dp[i, j-1]\\)\u3001\u5de6\u4e0a\u306e \\(dp[i-1, j-1]\\) \u306e\u89e3\u304b\u3089\u5c0e\u51fa\u3055\u308c\u3001\u76f4\u63a5\u8d70\u67fb\u3067\u306f\u5de6\u4e0a\u306e\u89e3 \\(dp[i-1, j-1]\\) \u304c\u5931\u308f\u308c\u3001\u9006\u8d70\u67fb\u3067\u306f\u4e8b\u524d\u306b \\(dp[i, j-1]\\) \u3092\u69cb\u7bc9\u3067\u304d\u306a\u3044\u305f\u3081\u3001\u3069\u3061\u3089\u306e\u8d70\u67fb\u9806\u5e8f\u3082\u5b9f\u884c\u53ef\u80fd\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002</p> <p>\u3053\u306e\u7406\u7531\u3067\u3001\u5909\u6570 <code>leftup</code> \u3092\u4f7f\u7528\u3057\u3066\u5de6\u4e0a\u306e \\(dp[i-1, j-1]\\) \u304b\u3089\u306e\u89e3\u3092\u4e00\u6642\u7684\u306b\u4fdd\u5b58\u3057\u3001\u5de6\u3068\u4e0a\u306e\u89e3\u306e\u307f\u3092\u8003\u616e\u3059\u308c\u3070\u3088\u304f\u306a\u308a\u307e\u3059\u3002\u3053\u306e\u72b6\u6cc1\u306f\u7121\u5236\u9650\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u3068\u4f3c\u3066\u304a\u308a\u3001\u76f4\u63a5\u8d70\u67fb\u304c\u53ef\u80fd\u3067\u3059\u3002\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby edit_distance.py<pre><code>def edit_distance_dp_comp(s: str, t: str) -&gt; int:\n \"\"\"\u7de8\u96c6\u8ddd\u96e2\uff1a\u7a7a\u9593\u6700\u9069\u5316\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\"\"\"\n n, m = len(s), len(t)\n dp = [0] * (m + 1)\n # \u72b6\u614b\u9077\u79fb\uff1a\u6700\u521d\u306e\u884c\n for j in range(1, m + 1):\n dp[j] = j\n # \u72b6\u614b\u9077\u79fb\uff1a\u6b8b\u308a\u306e\u884c\n for i in range(1, n + 1):\n # \u72b6\u614b\u9077\u79fb\uff1a\u6700\u521d\u306e\u5217\n leftup = dp[0] # dp[i-1, j-1] \u3092\u4e00\u6642\u7684\u306b\u4fdd\u5b58\n dp[0] += 1\n # \u72b6\u614b\u9077\u79fb\uff1a\u6b8b\u308a\u306e\u5217\n for j in range(1, m + 1):\n temp = dp[j]\n if s[i - 1] == t[j - 1]:\n # 2 \u3064\u306e\u6587\u5b57\u304c\u7b49\u3057\u3044\u5834\u5408\u3001\u3053\u308c\u3089 2 \u3064\u306e\u6587\u5b57\u3092\u30b9\u30ad\u30c3\u30d7\n dp[j] = leftup\n else:\n # \u6700\u5c0f\u7de8\u96c6\u6570 = 3 \u3064\u306e\u64cd\u4f5c\uff08\u633f\u5165\u3001\u524a\u9664\u3001\u7f6e\u63db\uff09\u304b\u3089\u306e\u6700\u5c0f\u7de8\u96c6\u6570 + 1\n dp[j] = min(dp[j - 1], dp[j], leftup) + 1\n leftup = temp # \u6b21\u306e dp[i-1, j-1] \u306e\u305f\u3081\u306b\u66f4\u65b0\n return dp[m]\n</code></pre> edit_distance.cpp<pre><code>[class]{}-[func]{editDistanceDPComp}\n</code></pre> edit_distance.java<pre><code>/* \u7de8\u96c6\u8ddd\u96e2\uff1a\u7a7a\u9593\u6700\u9069\u5316\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint editDistanceDPComp(String s, String t) {\n int n = s.length(), m = t.length();\n int[] dp = new int[m + 1];\n // \u72b6\u614b\u9077\u79fb\uff1a\u6700\u521d\u306e\u884c\n for (int j = 1; j &lt;= m; j++) {\n dp[j] = j;\n }\n // \u72b6\u614b\u9077\u79fb\uff1a\u6b8b\u308a\u306e\u884c\n for (int i = 1; i &lt;= n; i++) {\n // \u72b6\u614b\u9077\u79fb\uff1a\u6700\u521d\u306e\u5217\n int leftup = dp[0]; // dp[i-1, j-1] \u3092\u4e00\u6642\u7684\u306b\u683c\u7d0d\n dp[0] = i;\n // \u72b6\u614b\u9077\u79fb\uff1a\u6b8b\u308a\u306e\u5217\n for (int j = 1; j &lt;= m; j++) {\n int temp = dp[j];\n if (s.charAt(i - 1) == t.charAt(j - 1)) {\n // 2\u3064\u306e\u6587\u5b57\u304c\u7b49\u3057\u3044\u5834\u5408\u3001\u3053\u308c\u30892\u3064\u306e\u6587\u5b57\u3092\u30b9\u30ad\u30c3\u30d7\n dp[j] = leftup;\n } else {\n // \u6700\u5c0f\u7de8\u96c6\u6570 = 3\u3064\u306e\u64cd\u4f5c\uff08\u633f\u5165\u3001\u524a\u9664\u3001\u7f6e\u63db\uff09\u304b\u3089\u306e\u6700\u5c0f\u7de8\u96c6\u6570 + 1\n dp[j] = Math.min(Math.min(dp[j - 1], dp[j]), leftup) + 1;\n }\n leftup = temp; // \u6b21\u306e\u30e9\u30a6\u30f3\u30c9\u306e dp[i-1, j-1] \u306e\u305f\u3081\u306b\u66f4\u65b0\n }\n }\n return dp[m];\n}\n</code></pre> edit_distance.cs<pre><code>[class]{edit_distance}-[func]{EditDistanceDPComp}\n</code></pre> edit_distance.go<pre><code>[class]{}-[func]{editDistanceDPComp}\n</code></pre> edit_distance.swift<pre><code>[class]{}-[func]{editDistanceDPComp}\n</code></pre> edit_distance.js<pre><code>[class]{}-[func]{editDistanceDPComp}\n</code></pre> edit_distance.ts<pre><code>[class]{}-[func]{editDistanceDPComp}\n</code></pre> edit_distance.dart<pre><code>[class]{}-[func]{editDistanceDPComp}\n</code></pre> edit_distance.rs<pre><code>[class]{}-[func]{edit_distance_dp_comp}\n</code></pre> edit_distance.c<pre><code>[class]{}-[func]{editDistanceDPComp}\n</code></pre> edit_distance.kt<pre><code>[class]{}-[func]{editDistanceDPComp}\n</code></pre> edit_distance.rb<pre><code>[class]{}-[func]{edit_distance_dp_comp}\n</code></pre>"},{"location":"chapter_dynamic_programming/intro_to_dynamic_programming/","title":"14.1 \u00a0 \u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u7d39\u4ecb","text":"<p>\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306f\u91cd\u8981\u306a\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u30d1\u30e9\u30c0\u30a4\u30e0\u3067\u3042\u308a\u3001\u554f\u984c\u3092\u4e00\u9023\u306e\u5c0f\u3055\u306a\u90e8\u5206\u554f\u984c\u306b\u5206\u89e3\u3057\u3001\u3053\u308c\u3089\u306e\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u4fdd\u5b58\u3059\u308b\u3053\u3068\u3067\u5197\u9577\u306a\u8a08\u7b97\u3092\u907f\u3051\u3001\u6642\u9593\u52b9\u7387\u3092\u5927\u5e45\u306b\u5411\u4e0a\u3055\u305b\u307e\u3059\u3002</p> <p>\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u53e4\u5178\u7684\u306a\u554f\u984c\u304b\u3089\u59cb\u3081\u3066\u3001\u307e\u305a\u529b\u4efb\u305b\u306e\u63a2\u7d22\u6cd5\u306b\u3088\u308b\u89e3\u6cd5\u3092\u63d0\u793a\u3057\u3001\u91cd\u8907\u3059\u308b\u90e8\u5206\u554f\u984c\u3092\u7279\u5b9a\u3057\u3066\u304b\u3089\u3001\u3088\u308a\u52b9\u7387\u7684\u306a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u89e3\u6cd5\u3092\u6bb5\u968e\u7684\u306b\u5c0e\u51fa\u3057\u307e\u3059\u3002</p> <p>\u968e\u6bb5\u767b\u308a</p> <p>\\(n\\) \u6bb5\u306e\u968e\u6bb5\u304c\u3042\u308a\u3001\u4e00\u5ea6\u306b \\(1\\) \u6bb5\u307e\u305f\u306f \\(2\\) \u6bb5\u4e0a\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u9802\u4e0a\u306b\u5230\u9054\u3059\u308b\u65b9\u6cd5\u306f\u4f55\u901a\u308a\u3042\u308a\u307e\u3059\u304b\uff1f</p> <p>\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\\(3\\) \u6bb5\u306e\u968e\u6bb5\u306e\u9802\u4e0a\u306b\u5230\u9054\u3059\u308b\u65b9\u6cd5\u306f \\(3\\) \u901a\u308a\u3042\u308a\u307e\u3059\u3002</p> <p></p> <p> \u56f3 14-1 \u00a0 3\u6bb5\u76ee\u306b\u5230\u9054\u3059\u308b\u65b9\u6cd5\u306e\u6570 </p> <p>\u3053\u306e\u554f\u984c\u306f**\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u3092\u7528\u3044\u3066\u3059\u3079\u3066\u306e\u53ef\u80fd\u6027\u3092\u7db2\u7f85**\u3059\u308b\u3053\u3068\u3067\u65b9\u6cd5\u306e\u6570\u3092\u8a08\u7b97\u3059\u308b\u3053\u3068\u3092\u76ee\u7684\u3068\u3057\u3066\u3044\u307e\u3059\u3002\u5177\u4f53\u7684\u306b\u306f\u3001\u968e\u6bb5\u767b\u308a\u306e\u554f\u984c\u3092\u591a\u6bb5\u968e\u9078\u629e\u30d7\u30ed\u30bb\u30b9\u3068\u3057\u3066\u8003\u3048\u307e\u3059\uff1a\u5730\u9762\u304b\u3089\u59cb\u3081\u3066\u3001\u6bce\u56de \\(1\\) \u6bb5\u307e\u305f\u306f \\(2\\) \u6bb5\u4e0a\u308b\u304b\u3092\u9078\u629e\u3057\u3001\u968e\u6bb5\u306e\u9802\u4e0a\u306b\u5230\u9054\u3057\u305f\u3089\u65b9\u6cd5\u306e\u6570\u3092\u30ab\u30a6\u30f3\u30c8\u3057\u3001\u9802\u4e0a\u3092\u8d85\u3048\u305f\u5834\u5408\u306f\u30d7\u30eb\u30fc\u30cb\u30f3\u30b0\uff08\u679d\u5208\u308a\uff09\u3092\u884c\u3044\u307e\u3059\u3002\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby climbing_stairs_backtrack.py<pre><code>def backtrack(choices: list[int], state: int, n: int, res: list[int]) -&gt; int:\n \"\"\"\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\"\"\"\n # n \u6bb5\u76ee\u306b\u767b\u3063\u305f\u3068\u304d\u3001\u89e3\u306e\u6570\u306b 1 \u3092\u52a0\u3048\u308b\n if state == n:\n res[0] += 1\n # \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u8d70\u67fb\n for choice in choices:\n # \u679d\u5208\u308a\uff1an \u6bb5\u3092\u8d85\u3048\u3066\u767b\u308b\u3053\u3068\u3092\u8a31\u53ef\u3057\u306a\u3044\n if state + choice &gt; n:\n continue\n # \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001\u72b6\u614b\u3092\u66f4\u65b0\n backtrack(choices, state + choice, n, res)\n # \u64a4\u56de\n\ndef climbing_stairs_backtrack(n: int) -&gt; int:\n \"\"\"\u968e\u6bb5\u767b\u308a\uff1a\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\"\"\"\n choices = [1, 2] # 1 \u6bb5\u307e\u305f\u306f 2 \u6bb5\u767b\u308b\u3053\u3068\u3092\u9078\u629e\u53ef\u80fd\n state = 0 # 0 \u6bb5\u76ee\u304b\u3089\u767b\u308a\u59cb\u3081\u308b\n res = [0] # res[0] \u3092\u4f7f\u7528\u3057\u3066\u89e3\u306e\u6570\u3092\u8a18\u9332\n backtrack(choices, state, n, res)\n return res[0]\n</code></pre> climbing_stairs_backtrack.cpp<pre><code>/* \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0 */\nvoid backtrack(vector&lt;int&gt; &amp;choices, int state, int n, vector&lt;int&gt; &amp;res) {\n // n\u6bb5\u76ee\u306b\u5230\u9054\u3057\u305f\u3068\u304d\u3001\u89e3\u306e\u6570\u306b1\u3092\u52a0\u3048\u308b\n if (state == n)\n res[0]++;\n // \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u8d70\u67fb\n for (auto &amp;choice : choices) {\n // \u526a\u5b9a\uff1an\u6bb5\u3092\u8d85\u3048\u3066\u767b\u308b\u3053\u3068\u3092\u8a31\u53ef\u3057\u306a\u3044\n if (state + choice &gt; n)\n continue;\n // \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001\u72b6\u614b\u3092\u66f4\u65b0\n backtrack(choices, state + choice, n, res);\n // \u64a4\u56de\n }\n}\n\n/* \u968e\u6bb5\u767b\u308a\uff1a\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0 */\nint climbingStairsBacktrack(int n) {\n vector&lt;int&gt; choices = {1, 2}; // 1\u6bb5\u307e\u305f\u306f2\u6bb5\u767b\u308b\u3053\u3068\u3092\u9078\u629e\u53ef\u80fd\n int state = 0; // 0\u6bb5\u76ee\u304b\u3089\u767b\u308a\u59cb\u3081\u308b\n vector&lt;int&gt; res = {0}; // res[0] \u3092\u4f7f\u7528\u3057\u3066\u89e3\u306e\u6570\u3092\u8a18\u9332\n backtrack(choices, state, n, res);\n return res[0];\n}\n</code></pre> climbing_stairs_backtrack.java<pre><code>/* \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0 */\nvoid backtrack(List&lt;Integer&gt; choices, int state, int n, List&lt;Integer&gt; res) {\n // n\u6bb5\u76ee\u306b\u5230\u9054\u3057\u305f\u3068\u304d\u3001\u89e3\u306e\u6570\u306b1\u3092\u52a0\u3048\u308b\n if (state == n)\n res.set(0, res.get(0) + 1);\n // \u3059\u3079\u3066\u306e\u9078\u629e\u80a2\u3092\u8d70\u67fb\n for (Integer choice : choices) {\n // \u526a\u5b9a\uff1an\u6bb5\u3092\u8d85\u3048\u3066\u767b\u308b\u3053\u3068\u3092\u8a31\u53ef\u3057\u306a\u3044\n if (state + choice &gt; n)\n continue;\n // \u8a66\u884c\uff1a\u9078\u629e\u3092\u884c\u3044\u3001\u72b6\u614b\u3092\u66f4\u65b0\n backtrack(choices, state + choice, n, res);\n // \u64a4\u56de\n }\n}\n\n/* \u968e\u6bb5\u767b\u308a\uff1a\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0 */\nint climbingStairsBacktrack(int n) {\n List&lt;Integer&gt; choices = Arrays.asList(1, 2); // 1\u6bb5\u307e\u305f\u306f2\u6bb5\u767b\u308b\u3053\u3068\u3092\u9078\u629e\u53ef\u80fd\n int state = 0; // 0\u6bb5\u76ee\u304b\u3089\u767b\u308a\u59cb\u3081\u308b\n List&lt;Integer&gt; res = new ArrayList&lt;&gt;();\n res.add(0); // res[0] \u3092\u4f7f\u7528\u3057\u3066\u89e3\u306e\u6570\u3092\u8a18\u9332\n backtrack(choices, state, n, res);\n return res.get(0);\n}\n</code></pre> climbing_stairs_backtrack.cs<pre><code>[class]{climbing_stairs_backtrack}-[func]{Backtrack}\n\n[class]{climbing_stairs_backtrack}-[func]{ClimbingStairsBacktrack}\n</code></pre> climbing_stairs_backtrack.go<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{climbingStairsBacktrack}\n</code></pre> climbing_stairs_backtrack.swift<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{climbingStairsBacktrack}\n</code></pre> climbing_stairs_backtrack.js<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{climbingStairsBacktrack}\n</code></pre> climbing_stairs_backtrack.ts<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{climbingStairsBacktrack}\n</code></pre> climbing_stairs_backtrack.dart<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{climbingStairsBacktrack}\n</code></pre> climbing_stairs_backtrack.rs<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{climbing_stairs_backtrack}\n</code></pre> climbing_stairs_backtrack.c<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{climbingStairsBacktrack}\n</code></pre> climbing_stairs_backtrack.kt<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{climbingStairsBacktrack}\n</code></pre> climbing_stairs_backtrack.rb<pre><code>[class]{}-[func]{backtrack}\n\n[class]{}-[func]{climbing_stairs_backtrack}\n</code></pre>"},{"location":"chapter_dynamic_programming/intro_to_dynamic_programming/#1411-1","title":"14.1.1 \u00a0 \u65b9\u6cd51\uff1a\u529b\u4efb\u305b\u63a2\u7d22","text":"<p>\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u554f\u984c\u3092\u660e\u793a\u7684\u306b\u90e8\u5206\u554f\u984c\u306b\u5206\u89e3\u3057\u307e\u305b\u3093\u3002\u4ee3\u308f\u308a\u306b\u3001\u554f\u984c\u3092\u4e00\u9023\u306e\u6c7a\u5b9a\u30b9\u30c6\u30c3\u30d7\u3068\u3057\u3066\u6271\u3044\u3001\u8a66\u884c\u3068\u679d\u5208\u308a\u3092\u901a\u3058\u3066\u3059\u3079\u3066\u306e\u53ef\u80fd\u6027\u3092\u63a2\u7d22\u3057\u307e\u3059\u3002</p> <p>\u3053\u306e\u554f\u984c\u3092\u5206\u89e3\u30a2\u30d7\u30ed\u30fc\u30c1\u3092\u4f7f\u3063\u3066\u5206\u6790\u3067\u304d\u307e\u3059\u3002\\(dp[i]\\) \u3092 \\(i\\) \u6bb5\u76ee\u306b\u5230\u9054\u3059\u308b\u65b9\u6cd5\u306e\u6570\u3068\u3057\u307e\u3059\u3002\u3053\u306e\u5834\u5408\u3001\\(dp[i]\\) \u304c\u5143\u306e\u554f\u984c\u3067\u3042\u308a\u3001\u305d\u306e\u90e8\u5206\u554f\u984c\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\uff1a</p> \\[ dp[i-1], dp[i-2], \\dots, dp[2], dp[1] \\] <p>\u5404\u79fb\u52d5\u306f \\(1\\) \u6bb5\u307e\u305f\u306f \\(2\\) \u6bb5\u3057\u304b\u9032\u3081\u306a\u3044\u305f\u3081\u3001\\(i\\) \u6bb5\u76ee\u306b\u7acb\u3063\u3066\u3044\u308b\u3068\u304d\u3001\u524d\u306e\u30b9\u30c6\u30c3\u30d7\u306f \\(i-1\\) \u6bb5\u76ee\u307e\u305f\u306f \\(i-2\\) \u6bb5\u76ee\u306e\u3044\u305a\u308c\u304b\u306b\u3044\u305f\u306f\u305a\u3067\u3059\u3002\u3064\u307e\u308a\u3001\\(i\\) \u6bb5\u76ee\u306b\u306f \\(i-1\\) \u6bb5\u76ee\u307e\u305f\u306f \\(i-2\\) \u6bb5\u76ee\u304b\u3089\u3057\u304b\u5230\u9054\u3067\u304d\u307e\u305b\u3093\u3002</p> <p>\u3053\u308c\u306b\u3088\u308a\u91cd\u8981\u306a\u7d50\u8ad6\u304c\u5f97\u3089\u308c\u307e\u3059\uff1a\\(i-1\\) \u6bb5\u76ee\u306b\u5230\u9054\u3059\u308b\u65b9\u6cd5\u306e\u6570\u306b \\(i-2\\) \u6bb5\u76ee\u306b\u5230\u9054\u3059\u308b\u65b9\u6cd5\u306e\u6570\u3092\u52a0\u3048\u305f\u3082\u306e\u304c\u3001\\(i\\) \u6bb5\u76ee\u306b\u5230\u9054\u3059\u308b\u65b9\u6cd5\u306e\u6570\u306b\u7b49\u3057\u3044\u3002\u5f0f\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> \\[ dp[i] = dp[i-1] + dp[i-2] \\] <p>\u3053\u308c\u306f\u3001\u968e\u6bb5\u767b\u308a\u554f\u984c\u306b\u304a\u3044\u3066\u90e8\u5206\u554f\u984c\u9593\u306b\u518d\u5e30\u95a2\u4fc2\u304c\u3042\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u3001\u5143\u306e\u554f\u984c\u306e\u89e3\u306f\u90e8\u5206\u554f\u984c\u306e\u89e3\u304b\u3089\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002\u4e0b\u306e\u56f3\u306f\u3053\u306e\u518d\u5e30\u95a2\u4fc2\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002</p> <p></p> <p> \u56f3 14-2 \u00a0 \u89e3\u306e\u6570\u306e\u518d\u5e30\u95a2\u4fc2 </p> <p>\u518d\u5e30\u5f0f\u306b\u5f93\u3063\u3066\u529b\u4efb\u305b\u63a2\u7d22\u89e3\u6cd5\u3092\u5f97\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\\(dp[n]\\) \u304b\u3089\u59cb\u3081\u3066\u3001**\u3088\u308a\u5927\u304d\u306a\u554f\u984c\u3092\u518d\u5e30\u7684\u306b2\u3064\u306e\u5c0f\u3055\u306a\u90e8\u5206\u554f\u984c\u306e\u548c\u306b\u5206\u89e3**\u3057\u3001\u89e3\u304c\u65e2\u77e5\u306e\u6700\u5c0f\u306e\u90e8\u5206\u554f\u984c \\(dp[1]\\) \u3068 \\(dp[2]\\) \u306b\u5230\u9054\u3059\u308b\u307e\u3067\u7d9a\u3051\u307e\u3059\u3002\\(dp[1] = 1\\) \u3068 \\(dp[2] = 2\\) \u3067\u3001\u305d\u308c\u305e\u308c1\u6bb5\u76ee\u30682\u6bb5\u76ee\u306b\u767b\u308b\u65b9\u6cd5\u304c \\(1\\) \u901a\u308a\u3068 \\(2\\) \u901a\u308a\u3042\u308b\u3053\u3068\u3092\u8868\u3057\u307e\u3059\u3002</p> <p>\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u3092\u89b3\u5bdf\u3059\u308b\u3068\u3001\u6a19\u6e96\u7684\u306a\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30b3\u30fc\u30c9\u3068\u540c\u69d8\u306b\u6df1\u3055\u512a\u5148\u63a2\u7d22\u306b\u5c5e\u3057\u307e\u3059\u304c\u3001\u3088\u308a\u7c21\u6f54\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby climbing_stairs_dfs.py<pre><code>def dfs(i: int) -&gt; int:\n \"\"\"\u63a2\u7d22\"\"\"\n # \u65e2\u77e5\u306e dp[1] \u3068 dp[2] \u306f\u3001\u305d\u308c\u3089\u3092\u8fd4\u3059\n if i == 1 or i == 2:\n return i\n # dp[i] = dp[i-1] + dp[i-2]\n count = dfs(i - 1) + dfs(i - 2)\n return count\n\ndef climbing_stairs_dfs(n: int) -&gt; int:\n \"\"\"\u968e\u6bb5\u767b\u308a\uff1a\u63a2\u7d22\"\"\"\n return dfs(n)\n</code></pre> climbing_stairs_dfs.cpp<pre><code>/* \u63a2\u7d22 */\nint dfs(int i) {\n // \u65e2\u77e5\u306e dp[1] \u3068 dp[2] \u3092\u8fd4\u3059\n if (i == 1 || i == 2)\n return i;\n // dp[i] = dp[i-1] + dp[i-2]\n int count = dfs(i - 1) + dfs(i - 2);\n return count;\n}\n\n/* \u968e\u6bb5\u767b\u308a\uff1a\u63a2\u7d22 */\nint climbingStairsDFS(int n) {\n return dfs(n);\n}\n</code></pre> climbing_stairs_dfs.java<pre><code>/* \u63a2\u7d22 */\nint dfs(int i) {\n // \u65e2\u77e5\u306e dp[1] \u3068 dp[2] \u3092\u8fd4\u3059\n if (i == 1 || i == 2)\n return i;\n // dp[i] = dp[i-1] + dp[i-2]\n int count = dfs(i - 1) + dfs(i - 2);\n return count;\n}\n\n/* \u968e\u6bb5\u767b\u308a\uff1a\u63a2\u7d22 */\nint climbingStairsDFS(int n) {\n return dfs(n);\n}\n</code></pre> climbing_stairs_dfs.cs<pre><code>[class]{climbing_stairs_dfs}-[func]{DFS}\n\n[class]{climbing_stairs_dfs}-[func]{ClimbingStairsDFS}\n</code></pre> climbing_stairs_dfs.go<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{climbingStairsDFS}\n</code></pre> climbing_stairs_dfs.swift<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{climbingStairsDFS}\n</code></pre> climbing_stairs_dfs.js<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{climbingStairsDFS}\n</code></pre> climbing_stairs_dfs.ts<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{climbingStairsDFS}\n</code></pre> climbing_stairs_dfs.dart<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{climbingStairsDFS}\n</code></pre> climbing_stairs_dfs.rs<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{climbing_stairs_dfs}\n</code></pre> climbing_stairs_dfs.c<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{climbingStairsDFS}\n</code></pre> climbing_stairs_dfs.kt<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{climbingStairsDFS}\n</code></pre> climbing_stairs_dfs.rb<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{climbing_stairs_dfs}\n</code></pre> <p>\u4e0b\u306e\u56f3\u306f\u529b\u4efb\u305b\u63a2\u7d22\u306b\u3088\u3063\u3066\u5f62\u6210\u3055\u308c\u308b\u518d\u5e30\u6728\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u554f\u984c \\(dp[n]\\) \u306b\u3064\u3044\u3066\u3001\u305d\u306e\u518d\u5e30\u6728\u306e\u6df1\u3055\u306f \\(n\\) \u3067\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(2^n)\\) \u3067\u3059\u3002\u3053\u306e\u6307\u6570\u7684\u5897\u52a0\u306b\u3088\u308a\u3001\\(n\\) \u304c\u5927\u304d\u3044\u3068\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u5b9f\u884c\u304c\u306f\u308b\u304b\u306b\u9045\u304f\u306a\u308a\u3001\u9577\u3044\u5f85\u6a5f\u6642\u9593\u304c\u751f\u3058\u307e\u3059\u3002</p> <p></p> <p> \u56f3 14-3 \u00a0 \u968e\u6bb5\u767b\u308a\u306e\u518d\u5e30\u6728 </p> <p>\u4e0a\u306e\u56f3\u3092\u89b3\u5bdf\u3059\u308b\u3068\u3001**\u6307\u6570\u6642\u9593\u8a08\u7b97\u91cf\u306f\u300c\u91cd\u8907\u3059\u308b\u90e8\u5206\u554f\u984c\u300d\u306b\u3088\u3063\u3066\u5f15\u304d\u8d77\u3053\u3055\u308c\u308b**\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\\(dp[9]\\) \u306f \\(dp[8]\\) \u3068 \\(dp[7]\\) \u306b\u5206\u89e3\u3055\u308c\u3001\\(dp[8]\\) \u306f\u3055\u3089\u306b \\(dp[7]\\) \u3068 \\(dp[6]\\) \u306b\u5206\u89e3\u3055\u308c\u3001\u4e21\u65b9\u3068\u3082\u90e8\u5206\u554f\u984c \\(dp[7]\\) \u3092\u542b\u3093\u3067\u3044\u307e\u3059\u3002</p> <p>\u3053\u306e\u3088\u3046\u306b\u3001\u90e8\u5206\u554f\u984c\u306b\u306f\u3055\u3089\u306b\u5c0f\u3055\u306a\u91cd\u8907\u3059\u308b\u90e8\u5206\u554f\u984c\u304c\u542b\u307e\u308c\u3001\u3053\u308c\u306f\u7121\u9650\u306b\u7d9a\u304d\u307e\u3059\u3002\u8a08\u7b97\u30ea\u30bd\u30fc\u30b9\u306e\u5927\u90e8\u5206\u304c\u3053\u308c\u3089\u306e\u91cd\u8907\u3059\u308b\u90e8\u5206\u554f\u984c\u306b\u6d6a\u8cbb\u3055\u308c\u3066\u3044\u307e\u3059\u3002</p>"},{"location":"chapter_dynamic_programming/intro_to_dynamic_programming/#1412-2","title":"14.1.2 \u00a0 \u65b9\u6cd52\uff1a\u30e1\u30e2\u5316\u63a2\u7d22","text":"<p>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u52b9\u7387\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u3001**\u3059\u3079\u3066\u306e\u91cd\u8907\u3059\u308b\u90e8\u5206\u554f\u984c\u3092\u4e00\u5ea6\u3060\u3051\u8a08\u7b97\u3057\u305f\u3044**\u3068\u8003\u3048\u307e\u3059\u3002\u3053\u306e\u76ee\u7684\u306e\u305f\u3081\u3001\u5404\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u8a18\u9332\u3059\u308b\u914d\u5217 <code>mem</code> \u3092\u5ba3\u8a00\u3057\u3001\u63a2\u7d22\u30d7\u30ed\u30bb\u30b9\u4e2d\u306b\u91cd\u8907\u3059\u308b\u90e8\u5206\u554f\u984c\u3092\u679d\u5208\u308a\u3057\u307e\u3059\u3002</p> <ol> <li>\\(dp[i]\\) \u304c\u521d\u3081\u3066\u8a08\u7b97\u3055\u308c\u308b\u3068\u304d\u3001\u5f8c\u3067\u4f7f\u7528\u3059\u308b\u305f\u3081\u306b <code>mem[i]</code> \u306b\u8a18\u9332\u3057\u307e\u3059\u3002</li> <li>\\(dp[i]\\) \u3092\u518d\u5ea6\u8a08\u7b97\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3068\u304d\u3001<code>mem[i]</code> \u304b\u3089\u76f4\u63a5\u7d50\u679c\u3092\u53d6\u5f97\u3067\u304d\u3001\u305d\u306e\u90e8\u5206\u554f\u984c\u306e\u5197\u9577\u306a\u8a08\u7b97\u3092\u907f\u3051\u3089\u308c\u307e\u3059\u3002</li> </ol> <p>\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby climbing_stairs_dfs_mem.py<pre><code>def dfs(i: int, mem: list[int]) -&gt; int:\n \"\"\"\u8a18\u61b6\u5316\u63a2\u7d22\"\"\"\n # \u65e2\u77e5\u306e dp[1] \u3068 dp[2] \u306f\u3001\u305d\u308c\u3089\u3092\u8fd4\u3059\n if i == 1 or i == 2:\n return i\n # dp[i] \u306e\u8a18\u9332\u304c\u3042\u308b\u5834\u5408\u3001\u305d\u308c\u3092\u8fd4\u3059\n if mem[i] != -1:\n return mem[i]\n # dp[i] = dp[i-1] + dp[i-2]\n count = dfs(i - 1, mem) + dfs(i - 2, mem)\n # dp[i] \u3092\u8a18\u9332\n mem[i] = count\n return count\n\ndef climbing_stairs_dfs_mem(n: int) -&gt; int:\n \"\"\"\u968e\u6bb5\u767b\u308a\uff1a\u8a18\u61b6\u5316\u63a2\u7d22\"\"\"\n # mem[i] \u306f i \u6bb5\u76ee\u306b\u767b\u308b\u89e3\u306e\u7dcf\u6570\u3092\u8a18\u9332\u3001-1 \u306f\u8a18\u9332\u306a\u3057\u3092\u610f\u5473\u3059\u308b\n mem = [-1] * (n + 1)\n return dfs(n, mem)\n</code></pre> climbing_stairs_dfs_mem.cpp<pre><code>/* \u30e1\u30e2\u5316\u63a2\u7d22 */\nint dfs(int i, vector&lt;int&gt; &amp;mem) {\n // \u65e2\u77e5\u306e dp[1] \u3068 dp[2] \u3092\u8fd4\u3059\n if (i == 1 || i == 2)\n return i;\n // dp[i] \u306e\u8a18\u9332\u304c\u3042\u308b\u5834\u5408\u3001\u305d\u308c\u3092\u8fd4\u3059\n if (mem[i] != -1)\n return mem[i];\n // dp[i] = dp[i-1] + dp[i-2]\n int count = dfs(i - 1, mem) + dfs(i - 2, mem);\n // dp[i] \u3092\u8a18\u9332\n mem[i] = count;\n return count;\n}\n\n/* \u968e\u6bb5\u767b\u308a\uff1a\u30e1\u30e2\u5316\u63a2\u7d22 */\nint climbingStairsDFSMem(int n) {\n // mem[i] \u306f i \u6bb5\u76ee\u306b\u767b\u308b\u7dcf\u89e3\u6570\u3092\u8a18\u9332\u3001-1 \u306f\u8a18\u9332\u306a\u3057\u3092\u610f\u5473\u3059\u308b\n vector&lt;int&gt; mem(n + 1, -1);\n return dfs(n, mem);\n}\n</code></pre> climbing_stairs_dfs_mem.java<pre><code>/* \u30e1\u30e2\u5316\u63a2\u7d22 */\nint dfs(int i, int[] mem) {\n // \u65e2\u77e5\u306e dp[1] \u3068 dp[2] \u3092\u8fd4\u3059\n if (i == 1 || i == 2)\n return i;\n // dp[i] \u306e\u8a18\u9332\u304c\u3042\u308b\u5834\u5408\u3001\u305d\u308c\u3092\u8fd4\u3059\n if (mem[i] != -1)\n return mem[i];\n // dp[i] = dp[i-1] + dp[i-2]\n int count = dfs(i - 1, mem) + dfs(i - 2, mem);\n // dp[i] \u3092\u8a18\u9332\n mem[i] = count;\n return count;\n}\n\n/* \u968e\u6bb5\u767b\u308a\uff1a\u30e1\u30e2\u5316\u63a2\u7d22 */\nint climbingStairsDFSMem(int n) {\n // mem[i] \u306f i \u6bb5\u76ee\u306b\u767b\u308b\u7dcf\u89e3\u6570\u3092\u8a18\u9332\u3001-1 \u306f\u8a18\u9332\u306a\u3057\u3092\u610f\u5473\u3059\u308b\n int[] mem = new int[n + 1];\n Arrays.fill(mem, -1);\n return dfs(n, mem);\n}\n</code></pre> climbing_stairs_dfs_mem.cs<pre><code>[class]{climbing_stairs_dfs_mem}-[func]{DFS}\n\n[class]{climbing_stairs_dfs_mem}-[func]{ClimbingStairsDFSMem}\n</code></pre> climbing_stairs_dfs_mem.go<pre><code>[class]{}-[func]{dfsMem}\n\n[class]{}-[func]{climbingStairsDFSMem}\n</code></pre> climbing_stairs_dfs_mem.swift<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{climbingStairsDFSMem}\n</code></pre> climbing_stairs_dfs_mem.js<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{climbingStairsDFSMem}\n</code></pre> climbing_stairs_dfs_mem.ts<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{climbingStairsDFSMem}\n</code></pre> climbing_stairs_dfs_mem.dart<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{climbingStairsDFSMem}\n</code></pre> climbing_stairs_dfs_mem.rs<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{climbing_stairs_dfs_mem}\n</code></pre> climbing_stairs_dfs_mem.c<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{climbingStairsDFSMem}\n</code></pre> climbing_stairs_dfs_mem.kt<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{climbingStairsDFSMem}\n</code></pre> climbing_stairs_dfs_mem.rb<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{climbing_stairs_dfs_mem}\n</code></pre> <p>\u4e0b\u306e\u56f3\u3092\u89b3\u5bdf\u3059\u308b\u3068\u3001**\u30e1\u30e2\u5316\u5f8c\u3001\u3059\u3079\u3066\u306e\u91cd\u8907\u3059\u308b\u90e8\u5206\u554f\u984c\u306f\u4e00\u5ea6\u3060\u3051\u8a08\u7b97\u3055\u308c\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u6642\u9593\u8a08\u7b97\u91cf\u3092 \\(O(n)\\) \u306b\u6700\u9069\u5316**\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u5927\u5e45\u306a\u6539\u5584\u3067\u3059\u3002</p> <p></p> <p> \u56f3 14-4 \u00a0 \u30e1\u30e2\u5316\u63a2\u7d22\u306b\u3088\u308b\u518d\u5e30\u6728 </p>"},{"location":"chapter_dynamic_programming/intro_to_dynamic_programming/#1413-3","title":"14.1.3 \u00a0 \u65b9\u6cd53\uff1a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0","text":"<p>**\u30e1\u30e2\u5316\u63a2\u7d22\u306f\u300c\u30c8\u30c3\u30d7\u30c0\u30a6\u30f3\u300d\u65b9\u5f0f**\u3067\u3059\uff1a\u5143\u306e\u554f\u984c\uff08\u6839\u30ce\u30fc\u30c9\uff09\u304b\u3089\u59cb\u3081\u3066\u3001\u3088\u308a\u5927\u304d\u306a\u90e8\u5206\u554f\u984c\u3092\u3088\u308a\u5c0f\u3055\u306a\u3082\u306e\u306b\u518d\u5e30\u7684\u306b\u5206\u89e3\u3057\u3001\u6700\u5c0f\u306e\u65e2\u77e5\u306e\u90e8\u5206\u554f\u984c\uff08\u8449\u30ce\u30fc\u30c9\uff09\u306e\u89e3\u306b\u5230\u9054\u3059\u308b\u307e\u3067\u7d9a\u3051\u307e\u3059\u3002\u305d\u306e\u5f8c\u3001\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u306b\u3088\u308a\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u53ce\u96c6\u3057\u3001\u5143\u306e\u554f\u984c\u306e\u89e3\u3092\u69cb\u7bc9\u3057\u307e\u3059\u3002</p> <p>\u4e00\u65b9\u3001**\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306f\u300c\u30dc\u30c8\u30e0\u30a2\u30c3\u30d7\u300d\u65b9\u5f0f**\u3067\u3059\uff1a\u6700\u5c0f\u306e\u90e8\u5206\u554f\u984c\u306e\u89e3\u304b\u3089\u59cb\u3081\u3066\u3001\u5143\u306e\u554f\u984c\u304c\u89e3\u6c7a\u3055\u308c\u308b\u307e\u3067\u3001\u3088\u308a\u5927\u304d\u306a\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u53cd\u5fa9\u7684\u306b\u69cb\u7bc9\u3057\u307e\u3059\u3002</p> <p>\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306f\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u3092\u5fc5\u8981\u3068\u3057\u306a\u3044\u305f\u3081\u3001\u30eb\u30fc\u30d7\u3092\u4f7f\u3063\u305f\u53cd\u5fa9\u306e\u307f\u304c\u5fc5\u8981\u3067\u3001\u518d\u5e30\u306f\u4e0d\u8981\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u914d\u5217 <code>dp</code> \u3092\u521d\u671f\u5316\u3057\u3066\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u4fdd\u5b58\u3057\u3001\u30e1\u30e2\u5316\u63a2\u7d22\u306e\u914d\u5217 <code>mem</code> \u3068\u540c\u3058\u8a18\u9332\u6a5f\u80fd\u3092\u679c\u305f\u3057\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby climbing_stairs_dp.py<pre><code>def climbing_stairs_dp(n: int) -&gt; int:\n \"\"\"\u968e\u6bb5\u767b\u308a\uff1a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\"\"\"\n if n == 1 or n == 2:\n return n\n # dp \u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\u3001\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u683c\u7d0d\u3059\u308b\u305f\u3081\u4f7f\u7528\n dp = [0] * (n + 1)\n # \u521d\u671f\u72b6\u614b\uff1a\u6700\u5c0f\u306e\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u4e8b\u524d\u8a2d\u5b9a\n dp[1], dp[2] = 1, 2\n # \u72b6\u614b\u9077\u79fb\uff1a\u5c0f\u3055\u3044\u90e8\u5206\u554f\u984c\u304b\u3089\u5927\u304d\u3044\u90e8\u5206\u554f\u984c\u3092\u6bb5\u968e\u7684\u306b\u89e3\u304f\n for i in range(3, n + 1):\n dp[i] = dp[i - 1] + dp[i - 2]\n return dp[n]\n</code></pre> climbing_stairs_dp.cpp<pre><code>/* \u968e\u6bb5\u767b\u308a\uff1a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint climbingStairsDP(int n) {\n if (n == 1 || n == 2)\n return n;\n // DP\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\u3057\u3001\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u683c\u7d0d\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\n vector&lt;int&gt; dp(n + 1);\n // \u521d\u671f\u72b6\u614b\uff1a\u6700\u5c0f\u306e\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u4e8b\u524d\u8a2d\u5b9a\n dp[1] = 1;\n dp[2] = 2;\n // \u72b6\u614b\u9077\u79fb\uff1a\u5c0f\u3055\u306a\u554f\u984c\u304b\u3089\u5927\u304d\u306a\u90e8\u5206\u554f\u984c\u3092\u6bb5\u968e\u7684\u306b\u89e3\u304f\n for (int i = 3; i &lt;= n; i++) {\n dp[i] = dp[i - 1] + dp[i - 2];\n }\n return dp[n];\n}\n</code></pre> climbing_stairs_dp.java<pre><code>/* \u968e\u6bb5\u767b\u308a\uff1a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint climbingStairsDP(int n) {\n if (n == 1 || n == 2)\n return n;\n // DP\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\u3057\u3001\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u683c\u7d0d\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\n int[] dp = new int[n + 1];\n // \u521d\u671f\u72b6\u614b\uff1a\u6700\u5c0f\u306e\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u4e8b\u524d\u8a2d\u5b9a\n dp[1] = 1;\n dp[2] = 2;\n // \u72b6\u614b\u9077\u79fb\uff1a\u5c0f\u3055\u306a\u554f\u984c\u304b\u3089\u5927\u304d\u306a\u90e8\u5206\u554f\u984c\u3092\u6bb5\u968e\u7684\u306b\u89e3\u304f\n for (int i = 3; i &lt;= n; i++) {\n dp[i] = dp[i - 1] + dp[i - 2];\n }\n return dp[n];\n}\n</code></pre> climbing_stairs_dp.cs<pre><code>[class]{climbing_stairs_dp}-[func]{ClimbingStairsDP}\n</code></pre> climbing_stairs_dp.go<pre><code>[class]{}-[func]{climbingStairsDP}\n</code></pre> climbing_stairs_dp.swift<pre><code>[class]{}-[func]{climbingStairsDP}\n</code></pre> climbing_stairs_dp.js<pre><code>[class]{}-[func]{climbingStairsDP}\n</code></pre> climbing_stairs_dp.ts<pre><code>[class]{}-[func]{climbingStairsDP}\n</code></pre> climbing_stairs_dp.dart<pre><code>[class]{}-[func]{climbingStairsDP}\n</code></pre> climbing_stairs_dp.rs<pre><code>[class]{}-[func]{climbing_stairs_dp}\n</code></pre> climbing_stairs_dp.c<pre><code>[class]{}-[func]{climbingStairsDP}\n</code></pre> climbing_stairs_dp.kt<pre><code>[class]{}-[func]{climbingStairsDP}\n</code></pre> climbing_stairs_dp.rb<pre><code>[class]{}-[func]{climbing_stairs_dp}\n</code></pre> <p>\u4e0b\u306e\u56f3\u306f\u4e0a\u8a18\u30b3\u30fc\u30c9\u306e\u5b9f\u884c\u30d7\u30ed\u30bb\u30b9\u3092\u30b7\u30df\u30e5\u30ec\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002</p> <p></p> <p> \u56f3 14-5 \u00a0 \u968e\u6bb5\u767b\u308a\u306e\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30d7\u30ed\u30bb\u30b9 </p> <p>\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3068\u540c\u69d8\u306b\u3001\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3082\u300c\u72b6\u614b\u300d\u306e\u6982\u5ff5\u3092\u4f7f\u7528\u3057\u3066\u554f\u984c\u89e3\u6c7a\u306e\u7279\u5b9a\u306e\u6bb5\u968e\u3092\u8868\u73fe\u3057\u3001\u5404\u72b6\u614b\u306f\u90e8\u5206\u554f\u984c\u3068\u305d\u306e\u5c40\u6240\u6700\u9069\u89e3\u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u968e\u6bb5\u767b\u308a\u554f\u984c\u306e\u72b6\u614b\u306f\u73fe\u5728\u306e\u30b9\u30c6\u30c3\u30d7\u756a\u53f7 \\(i\\) \u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u3002</p> <p>\u4e0a\u8a18\u306e\u5185\u5bb9\u306b\u57fa\u3065\u3044\u3066\u3001\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3067\u3088\u304f\u4f7f\u7528\u3055\u308c\u308b\u7528\u8a9e\u3092\u307e\u3068\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</p> <ul> <li>\u914d\u5217 <code>dp</code> \u306fDP\u30c6\u30fc\u30d6\u30eb\u3068\u547c\u3070\u308c\u3001\\(dp[i]\\) \u306f\u72b6\u614b \\(i\\) \u306b\u5bfe\u5fdc\u3059\u308b\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u8868\u3057\u307e\u3059\u3002</li> <li>\u6700\u5c0f\u306e\u90e8\u5206\u554f\u984c\uff08\u30b9\u30c6\u30c3\u30d7 \\(1\\) \u3068 \\(2\\)\uff09\u306b\u5bfe\u5fdc\u3059\u308b\u72b6\u614b\u306f\u521d\u671f\u72b6\u614b\u3068\u547c\u3070\u308c\u307e\u3059\u3002</li> <li>\u518d\u5e30\u5f0f \\(dp[i] = dp[i-1] + dp[i-2]\\) \u306f\u72b6\u614b\u9077\u79fb\u65b9\u7a0b\u5f0f\u3068\u547c\u3070\u308c\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_dynamic_programming/intro_to_dynamic_programming/#1414","title":"14.1.4 \u00a0 \u7a7a\u9593\u6700\u9069\u5316","text":"<p>\u6ce8\u610f\u6df1\u3044\u8aad\u8005\u306f**\\(dp[i]\\) \u306f \\(dp[i-1]\\) \u3068 \\(dp[i-2]\\) \u306e\u307f\u306b\u95a2\u9023\u3059\u308b\u305f\u3081\u3001\u3059\u3079\u3066\u306e\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306b\u914d\u5217 <code>dp</code> \u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u306a\u3044**\u3053\u3068\u306b\u6c17\u3065\u304f\u3067\u3057\u3087\u3046\u3002\u5358\u306b2\u3064\u306e\u5909\u6570\u3092\u4f7f\u3063\u3066\u53cd\u5fa9\u7684\u306b\u9032\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby climbing_stairs_dp.py<pre><code>def climbing_stairs_dp_comp(n: int) -&gt; int:\n \"\"\"\u968e\u6bb5\u767b\u308a\uff1a\u7a7a\u9593\u6700\u9069\u5316\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\"\"\"\n if n == 1 or n == 2:\n return n\n a, b = 1, 2\n for _ in range(3, n + 1):\n a, b = b, a + b\n return b\n</code></pre> climbing_stairs_dp.cpp<pre><code>/* \u968e\u6bb5\u767b\u308a\uff1a\u7a7a\u9593\u6700\u9069\u5316\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint climbingStairsDPComp(int n) {\n if (n == 1 || n == 2)\n return n;\n int a = 1, b = 2;\n for (int i = 3; i &lt;= n; i++) {\n int tmp = b;\n b = a + b;\n a = tmp;\n }\n return b;\n}\n</code></pre> climbing_stairs_dp.java<pre><code>/* \u968e\u6bb5\u767b\u308a\uff1a\u7a7a\u9593\u6700\u9069\u5316\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint climbingStairsDPComp(int n) {\n if (n == 1 || n == 2)\n return n;\n int a = 1, b = 2;\n for (int i = 3; i &lt;= n; i++) {\n int tmp = b;\n b = a + b;\n a = tmp;\n }\n return b;\n}\n</code></pre> climbing_stairs_dp.cs<pre><code>[class]{climbing_stairs_dp}-[func]{ClimbingStairsDPComp}\n</code></pre> climbing_stairs_dp.go<pre><code>[class]{}-[func]{climbingStairsDPComp}\n</code></pre> climbing_stairs_dp.swift<pre><code>[class]{}-[func]{climbingStairsDPComp}\n</code></pre> climbing_stairs_dp.js<pre><code>[class]{}-[func]{climbingStairsDPComp}\n</code></pre> climbing_stairs_dp.ts<pre><code>[class]{}-[func]{climbingStairsDPComp}\n</code></pre> climbing_stairs_dp.dart<pre><code>[class]{}-[func]{climbingStairsDPComp}\n</code></pre> climbing_stairs_dp.rs<pre><code>[class]{}-[func]{climbing_stairs_dp_comp}\n</code></pre> climbing_stairs_dp.c<pre><code>[class]{}-[func]{climbingStairsDPComp}\n</code></pre> climbing_stairs_dp.kt<pre><code>[class]{}-[func]{climbingStairsDPComp}\n</code></pre> climbing_stairs_dp.rb<pre><code>[class]{}-[func]{climbing_stairs_dp_comp}\n</code></pre> <p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3092\u89b3\u5bdf\u3059\u308b\u3068\u3001\u914d\u5217 <code>dp</code> \u304c\u5360\u6709\u3057\u3066\u3044\u305f\u7a7a\u9593\u304c\u524a\u9664\u3055\u308c\u308b\u305f\u3081\u3001\u7a7a\u9593\u8a08\u7b97\u91cf\u306f \\(O(n)\\) \u304b\u3089 \\(O(1)\\) \u306b\u524a\u6e1b\u3055\u308c\u307e\u3059\u3002</p> <p>\u591a\u304f\u306e\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u554f\u984c\u3067\u306f\u3001\u73fe\u5728\u306e\u72b6\u614b\u306f\u9650\u3089\u308c\u305f\u6570\u306e\u524d\u306e\u72b6\u614b\u306e\u307f\u306b\u4f9d\u5b58\u3059\u308b\u305f\u3081\u3001\u5fc5\u8981\u306a\u72b6\u614b\u306e\u307f\u3092\u4fdd\u6301\u3057\u3001\u300c\u6b21\u5143\u524a\u6e1b\u300d\u306b\u3088\u3063\u3066\u30e1\u30e2\u30ea\u7a7a\u9593\u3092\u7bc0\u7d04\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u7a7a\u9593\u6700\u9069\u5316\u6280\u8853\u306f\u300c\u30ed\u30fc\u30ea\u30f3\u30b0\u5909\u6570\u300d\u307e\u305f\u306f\u300c\u30ed\u30fc\u30ea\u30f3\u30b0\u914d\u5217\u300d\u3068\u3057\u3066\u77e5\u3089\u308c\u3066\u3044\u307e\u3059\u3002</p>"},{"location":"chapter_dynamic_programming/knapsack_problem/","title":"14.4 \u00a0 0-1\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c","text":"<p>\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u306f\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u512a\u308c\u305f\u5165\u9580\u554f\u984c\u3067\u3042\u308a\u3001\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3067\u6700\u3082\u4e00\u822c\u7684\u306a\u554f\u984c\u30bf\u30a4\u30d7\u3067\u3059\u30020-1\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u3001\u7121\u5236\u9650\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u3001\u8907\u6570\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u306a\u3069\u3001\u591a\u304f\u306e\u5909\u7a2e\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u307e\u305a\u6700\u3082\u4e00\u822c\u7684\u306a0-1\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u3092\u89e3\u6c7a\u3057\u307e\u3059\u3002</p> <p>Question</p> <p>\\(n\\) \u500b\u306e\u30a2\u30a4\u30c6\u30e0\u304c\u4e0e\u3048\u3089\u308c\u3001\\(i\\) \u756a\u76ee\u306e\u30a2\u30a4\u30c6\u30e0\u306e\u91cd\u91cf\u306f \\(wgt[i-1]\\) \u3067\u5024\u306f \\(val[i-1]\\) \u3067\u3059\u3002\u5bb9\u91cf\u304c \\(cap\\) \u306e\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u304c\u3042\u308a\u307e\u3059\u3002\u5404\u30a2\u30a4\u30c6\u30e0\u306f1\u56de\u306e\u307f\u9078\u629e\u3067\u304d\u307e\u3059\u3002\u5bb9\u91cf\u5236\u9650\u4e0b\u3067\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306b\u5165\u308c\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u30a2\u30a4\u30c6\u30e0\u306e\u6700\u5927\u5024\u306f\u4f55\u3067\u3059\u304b\uff1f</p> <p>\u4e0b\u306e\u56f3\u3092\u89b3\u5bdf\u3059\u308b\u3068\u3001\u30a2\u30a4\u30c6\u30e0\u756a\u53f7 \\(i\\) \u306f1\u304b\u3089\u6570\u3048\u59cb\u3081\u3001\u914d\u5217\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306f0\u304b\u3089\u59cb\u307e\u308b\u305f\u3081\u3001\u30a2\u30a4\u30c6\u30e0 \\(i\\) \u306e\u91cd\u91cf\u306f \\(wgt[i-1]\\) \u306b\u5bfe\u5fdc\u3057\u3001\u5024\u306f \\(val[i-1]\\) \u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 14-17 \u00a0 0-1\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306e\u4f8b\u30c7\u30fc\u30bf </p> <p>0-1\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u3092 \\(n\\) \u30e9\u30a6\u30f3\u30c9\u306e\u6c7a\u5b9a\u304b\u3089\u69cb\u6210\u3055\u308c\u308b\u30d7\u30ed\u30bb\u30b9\u3068\u3057\u3066\u8003\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u5404\u30a2\u30a4\u30c6\u30e0\u306b\u3064\u3044\u3066\u5165\u308c\u306a\u3044\u3001\u307e\u305f\u306f\u5165\u308c\u308b\u3068\u3044\u30462\u3064\u306e\u6c7a\u5b9a\u304c\u3042\u308a\u3001\u3057\u305f\u304c\u3063\u3066\u554f\u984c\u306f\u6c7a\u5b9a\u6728\u30e2\u30c7\u30eb\u306b\u9069\u5408\u3057\u307e\u3059\u3002</p> <p>\u3053\u306e\u554f\u984c\u306e\u76ee\u7684\u306f\u300c\u9650\u3089\u308c\u305f\u5bb9\u91cf\u306e\u4e0b\u3067\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306b\u5165\u308c\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u30a2\u30a4\u30c6\u30e0\u306e\u5024\u3092\u6700\u5927\u5316\u3059\u308b\u300d\u3053\u3068\u3067\u3042\u308a\u3001\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u554f\u984c\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u9ad8\u3044\u3067\u3059\u3002</p> <p>\u7b2c1\u30b9\u30c6\u30c3\u30d7\uff1a\u5404\u30e9\u30a6\u30f3\u30c9\u306e\u6c7a\u5b9a\u3092\u8003\u3048\u3001\u72b6\u614b\u3092\u5b9a\u7fa9\u3057\u3001\u305d\u308c\u306b\u3088\u308a \\(dp\\) \u30c6\u30fc\u30d6\u30eb\u3092\u5f97\u308b</p> <p>\u5404\u30a2\u30a4\u30c6\u30e0\u306b\u3064\u3044\u3066\u3001\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306b\u5165\u308c\u306a\u3051\u308c\u3070\u5bb9\u91cf\u306f\u5909\u308f\u3089\u305a\u3001\u5165\u308c\u308c\u3070\u5bb9\u91cf\u306f\u6e1b\u5c11\u3057\u307e\u3059\u3002\u3053\u308c\u304b\u3089\u72b6\u614b\u5b9a\u7fa9\u3092\u5f97\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff1a\u73fe\u5728\u306e\u30a2\u30a4\u30c6\u30e0\u756a\u53f7 \\(i\\) \u3068\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u5bb9\u91cf \\(c\\)\u3001\\([i, c]\\) \u3068\u8868\u8a18\u3055\u308c\u307e\u3059\u3002</p> <p>\u72b6\u614b \\([i, c]\\) \u306f\u90e8\u5206\u554f\u984c\u306b\u5bfe\u5fdc\u3057\u307e\u3059\uff1a\u5bb9\u91cf \\(c\\) \u306e\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u3067\u306e\u6700\u521d\u306e \\(i\\) \u500b\u306e\u30a2\u30a4\u30c6\u30e0\u306e\u6700\u5927\u5024\u3001\\(dp[i, c]\\) \u3068\u8868\u8a18\u3055\u308c\u307e\u3059\u3002</p> <p>\u63a2\u3057\u3066\u3044\u308b\u89e3\u306f \\(dp[n, cap]\\) \u3067\u3042\u308b\u305f\u3081\u3001\u30b5\u30a4\u30ba \\((n+1) \\times (cap+1)\\) \u306e\u4e8c\u6b21\u5143 \\(dp\\) \u30c6\u30fc\u30d6\u30eb\u304c\u5fc5\u8981\u3067\u3059\u3002</p> <p>\u7b2c2\u30b9\u30c6\u30c3\u30d7\uff1a\u6700\u9069\u90e8\u5206\u69cb\u9020\u3092\u7279\u5b9a\u3057\u3001\u72b6\u614b\u9077\u79fb\u65b9\u7a0b\u5f0f\u3092\u5c0e\u51fa\u3059\u308b</p> <p>\u30a2\u30a4\u30c6\u30e0 \\(i\\) \u306e\u6c7a\u5b9a\u3092\u884c\u3063\u305f\u5f8c\u3001\u6b8b\u308b\u306e\u306f\u6700\u521d\u306e \\(i-1\\) \u500b\u306e\u30a2\u30a4\u30c6\u30e0\u306e\u6c7a\u5b9a\u306e\u90e8\u5206\u554f\u984c\u3067\u3042\u308a\u3001\u3053\u308c\u306f2\u3064\u306e\u30b1\u30fc\u30b9\u306b\u5206\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</p> <ul> <li>\u30a2\u30a4\u30c6\u30e0 \\(i\\) \u3092\u5165\u308c\u306a\u3044\uff1a\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u5bb9\u91cf\u306f\u5909\u308f\u3089\u305a\u3001\u72b6\u614b\u306f \\([i-1, c]\\) \u306b\u5909\u308f\u308a\u307e\u3059\u3002</li> <li>\u30a2\u30a4\u30c6\u30e0 \\(i\\) \u3092\u5165\u308c\u308b\uff1a\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u5bb9\u91cf\u306f \\(wgt[i-1]\\) \u3060\u3051\u6e1b\u5c11\u3057\u3001\u5024\u306f \\(val[i-1]\\) \u3060\u3051\u5897\u52a0\u3057\u3001\u72b6\u614b\u306f \\([i-1, c-wgt[i-1]]\\) \u306b\u5909\u308f\u308a\u307e\u3059\u3002</li> </ul> <p>\u4e0a\u8a18\u306e\u5206\u6790\u306b\u3088\u308a\u3001\u3053\u306e\u554f\u984c\u306e\u6700\u9069\u90e8\u5206\u69cb\u9020\u304c\u660e\u3089\u304b\u306b\u306a\u308a\u307e\u3059\uff1a\u6700\u5927\u5024 \\(dp[i, c]\\) \u306f\u3001\u30a2\u30a4\u30c6\u30e0 \\(i\\) \u3092\u5165\u308c\u306a\u3044\u65b9\u6848\u3068\u30a2\u30a4\u30c6\u30e0 \\(i\\) \u3092\u5165\u308c\u308b\u65b9\u6848\u306e2\u3064\u306e\u3046\u3061\u3001\u3088\u308a\u5927\u304d\u306a\u5024\u306b\u7b49\u3057\u3044\u3002\u3053\u308c\u304b\u3089\u72b6\u614b\u9077\u79fb\u65b9\u7a0b\u5f0f\u3092\u5c0e\u51fa\u3067\u304d\u307e\u3059\uff1a</p> \\[ dp[i, c] = \\max(dp[i-1, c], dp[i-1, c - wgt[i-1]] + val[i-1]) \\] <p>\u73fe\u5728\u306e\u30a2\u30a4\u30c6\u30e0\u306e\u91cd\u91cf \\(wgt[i - 1]\\) \u304c\u6b8b\u308a\u306e\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u5bb9\u91cf \\(c\\) \u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u552f\u4e00\u306e\u9078\u629e\u80a2\u306f\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306b\u5165\u308c\u306a\u3044\u3053\u3068\u3067\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002</p> <p>\u7b2c3\u30b9\u30c6\u30c3\u30d7\uff1a\u5883\u754c\u6761\u4ef6\u3068\u72b6\u614b\u9077\u79fb\u306e\u9806\u5e8f\u3092\u6c7a\u5b9a\u3059\u308b</p> <p>\u30a2\u30a4\u30c6\u30e0\u304c\u306a\u3044\u5834\u5408\u307e\u305f\u306f\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u5bb9\u91cf\u304c \\(0\\) \u306e\u5834\u5408\u3001\u6700\u5927\u5024\u306f \\(0\\) \u3067\u3059\u3002\u3064\u307e\u308a\u3001\u6700\u521d\u306e\u5217 \\(dp[i, 0]\\) \u3068\u6700\u521d\u306e\u884c \\(dp[0, c]\\) \u306f\u3069\u3061\u3089\u3082 \\(0\\) \u306b\u7b49\u3057\u3044\u3067\u3059\u3002</p> <p>\u73fe\u5728\u306e\u72b6\u614b \\([i, c]\\) \u306f\u76f4\u63a5\u4e0a\u306e\u72b6\u614b \\([i-1, c]\\) \u3068\u5de6\u4e0a\u306e\u72b6\u614b \\([i-1, c-wgt[i-1]]\\) \u304b\u3089\u9077\u79fb\u3059\u308b\u305f\u3081\u30012\u5c64\u306e\u30eb\u30fc\u30d7\u3092\u901a\u3058\u3066 \\(dp\\) \u30c6\u30fc\u30d6\u30eb\u5168\u4f53\u3092\u9806\u5e8f\u901a\u308a\u306b\u8d70\u67fb\u3057\u307e\u3059\u3002</p> <p>\u4e0a\u8a18\u306e\u5206\u6790\u306b\u5f93\u3063\u3066\u3001\u6b21\u306b\u529b\u4efb\u305b\u63a2\u7d22\u3001\u30e1\u30e2\u5316\u63a2\u7d22\u3001\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u9806\u5e8f\u3067\u89e3\u6cd5\u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_dynamic_programming/knapsack_problem/#1-1","title":"1. \u00a0 \u65b9\u6cd51\uff1a\u529b\u4efb\u305b\u63a2\u7d22","text":"<p>\u63a2\u7d22\u30b3\u30fc\u30c9\u306b\u306f\u4ee5\u4e0b\u306e\u8981\u7d20\u304c\u542b\u307e\u308c\u307e\u3059\u3002</p> <ul> <li>\u518d\u5e30\u30d1\u30e9\u30e1\u30fc\u30bf\uff1a\u72b6\u614b \\([i, c]\\)\u3002</li> <li>\u623b\u308a\u5024\uff1a\u90e8\u5206\u554f\u984c \\(dp[i, c]\\) \u306e\u89e3\u3002</li> <li>\u7d42\u4e86\u6761\u4ef6\uff1a\u30a2\u30a4\u30c6\u30e0\u756a\u53f7\u304c\u7bc4\u56f2\u5916 \\(i = 0\\) \u307e\u305f\u306f\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306e\u6b8b\u308a\u5bb9\u91cf\u304c \\(0\\) \u306e\u3068\u304d\u3001\u518d\u5e30\u3092\u7d42\u4e86\u3057\u5024 \\(0\\) \u3092\u8fd4\u3059\u3002</li> <li>\u679d\u5208\u308a\uff1a\u73fe\u5728\u306e\u30a2\u30a4\u30c6\u30e0\u306e\u91cd\u91cf\u304c\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306e\u6b8b\u308a\u5bb9\u91cf\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u552f\u4e00\u306e\u9078\u629e\u80a2\u306f\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306b\u5165\u308c\u306a\u3044\u3053\u3068\u3067\u3059\u3002</li> </ul> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby knapsack.py<pre><code>def knapsack_dfs(wgt: list[int], val: list[int], i: int, c: int) -&gt; int:\n \"\"\"0-1 \u30ca\u30c3\u30d7\u30b5\u30c3\u30af\uff1a\u30d6\u30eb\u30fc\u30c8\u30d5\u30a9\u30fc\u30b9\u63a2\u7d22\"\"\"\n # \u3059\u3079\u3066\u306e\u30a2\u30a4\u30c6\u30e0\u304c\u9078\u629e\u3055\u308c\u305f\u304b\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306b\u6b8b\u308a\u5bb9\u91cf\u304c\u306a\u3044\u5834\u5408\u3001\u5024 0 \u3092\u8fd4\u3059\n if i == 0 or c == 0:\n return 0\n # \u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u5bb9\u91cf\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306b\u5165\u308c\u306a\u3044\u3053\u3068\u3057\u304b\u9078\u629e\u3067\u304d\u306a\u3044\n if wgt[i - 1] &gt; c:\n return knapsack_dfs(wgt, val, i - 1, c)\n # \u30a2\u30a4\u30c6\u30e0 i \u3092\u5165\u308c\u306a\u3044\u306e\u3068\u5165\u308c\u308b\u306e\u3068\u306e\u6700\u5927\u5024\u3092\u8a08\u7b97\n no = knapsack_dfs(wgt, val, i - 1, c)\n yes = knapsack_dfs(wgt, val, i - 1, c - wgt[i - 1]) + val[i - 1]\n # 2 \u3064\u306e\u9078\u629e\u80a2\u306e\u3046\u3061\u5927\u304d\u3044\u5024\u3092\u8fd4\u3059\n return max(no, yes)\n</code></pre> knapsack.cpp<pre><code>/* 0-1 \u30ca\u30c3\u30d7\u30b5\u30c3\u30af\uff1a\u30d6\u30eb\u30fc\u30c8\u30d5\u30a9\u30fc\u30b9\u63a2\u7d22 */\nint knapsackDFS(vector&lt;int&gt; &amp;wgt, vector&lt;int&gt; &amp;val, int i, int c) {\n // \u3059\u3079\u3066\u306e\u30a2\u30a4\u30c6\u30e0\u304c\u9078\u629e\u3055\u308c\u305f\u304b\u3001\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306b\u6b8b\u308a\u5bb9\u91cf\u304c\u306a\u3044\u5834\u5408\u3001\u5024 0 \u3092\u8fd4\u3059\n if (i == 0 || c == 0) {\n return 0;\n }\n // \u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306e\u5bb9\u91cf\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306b\u5165\u308c\u306a\u3044\u3053\u3068\u3057\u304b\u9078\u629e\u3067\u304d\u306a\u3044\n if (wgt[i - 1] &gt; c) {\n return knapsackDFS(wgt, val, i - 1, c);\n }\n // \u30a2\u30a4\u30c6\u30e0 i \u3092\u5165\u308c\u306a\u3044\u5834\u5408\u3068\u5165\u308c\u308b\u5834\u5408\u306e\u6700\u5927\u5024\u3092\u8a08\u7b97\n int no = knapsackDFS(wgt, val, i - 1, c);\n int yes = knapsackDFS(wgt, val, i - 1, c - wgt[i - 1]) + val[i - 1];\n // 2\u3064\u306e\u9078\u629e\u80a2\u306e\u3088\u308a\u5927\u304d\u3044\u5024\u3092\u8fd4\u3059\n return max(no, yes);\n}\n</code></pre> knapsack.java<pre><code>/* 0-1 \u30ca\u30c3\u30d7\u30b5\u30c3\u30af\uff1a\u30d6\u30eb\u30fc\u30c8\u30d5\u30a9\u30fc\u30b9\u63a2\u7d22 */\nint knapsackDFS(int[] wgt, int[] val, int i, int c) {\n // \u3059\u3079\u3066\u306e\u30a2\u30a4\u30c6\u30e0\u304c\u9078\u629e\u3055\u308c\u305f\u304b\u3001\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306b\u6b8b\u308a\u5bb9\u91cf\u304c\u306a\u3044\u5834\u5408\u3001\u5024 0 \u3092\u8fd4\u3059\n if (i == 0 || c == 0) {\n return 0;\n }\n // \u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306e\u5bb9\u91cf\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306b\u5165\u308c\u306a\u3044\u3053\u3068\u3057\u304b\u9078\u629e\u3067\u304d\u306a\u3044\n if (wgt[i - 1] &gt; c) {\n return knapsackDFS(wgt, val, i - 1, c);\n }\n // \u30a2\u30a4\u30c6\u30e0 i \u3092\u5165\u308c\u306a\u3044\u5834\u5408\u3068\u5165\u308c\u308b\u5834\u5408\u306e\u6700\u5927\u5024\u3092\u8a08\u7b97\n int no = knapsackDFS(wgt, val, i - 1, c);\n int yes = knapsackDFS(wgt, val, i - 1, c - wgt[i - 1]) + val[i - 1];\n // 2\u3064\u306e\u9078\u629e\u80a2\u306e\u3088\u308a\u5927\u304d\u3044\u5024\u3092\u8fd4\u3059\n return Math.max(no, yes);\n}\n</code></pre> knapsack.cs<pre><code>[class]{knapsack}-[func]{KnapsackDFS}\n</code></pre> knapsack.go<pre><code>[class]{}-[func]{knapsackDFS}\n</code></pre> knapsack.swift<pre><code>[class]{}-[func]{knapsackDFS}\n</code></pre> knapsack.js<pre><code>[class]{}-[func]{knapsackDFS}\n</code></pre> knapsack.ts<pre><code>[class]{}-[func]{knapsackDFS}\n</code></pre> knapsack.dart<pre><code>[class]{}-[func]{knapsackDFS}\n</code></pre> knapsack.rs<pre><code>[class]{}-[func]{knapsack_dfs}\n</code></pre> knapsack.c<pre><code>[class]{}-[func]{knapsackDFS}\n</code></pre> knapsack.kt<pre><code>[class]{}-[func]{knapsackDFS}\n</code></pre> knapsack.rb<pre><code>[class]{}-[func]{knapsack_dfs}\n</code></pre> <p>\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u5404\u30a2\u30a4\u30c6\u30e0\u306f\u9078\u629e\u3057\u306a\u3044\u3068\u9078\u629e\u3059\u308b\u3068\u3044\u30462\u3064\u306e\u63a2\u7d22\u5206\u5c90\u3092\u751f\u6210\u3059\u308b\u305f\u3081\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(2^n)\\) \u3067\u3059\u3002</p> <p>\u518d\u5e30\u6728\u3092\u89b3\u5bdf\u3059\u308b\u3068\u3001\\(dp[1, 10]\\) \u306a\u3069\u306e\u91cd\u8907\u3059\u308b\u90e8\u5206\u554f\u984c\u304c\u3042\u308b\u3053\u3068\u304c\u5bb9\u6613\u306b\u308f\u304b\u308a\u307e\u3059\u3002\u30a2\u30a4\u30c6\u30e0\u304c\u591a\u304f\u3001\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u5bb9\u91cf\u304c\u5927\u304d\u3044\u5834\u5408\u3001\u7279\u306b\u540c\u3058\u91cd\u91cf\u306e\u30a2\u30a4\u30c6\u30e0\u304c\u591a\u3044\u5834\u5408\u3001\u91cd\u8907\u3059\u308b\u90e8\u5206\u554f\u984c\u306e\u6570\u306f\u5927\u5e45\u306b\u5897\u52a0\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 14-18 \u00a0 0-1\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u306e\u529b\u4efb\u305b\u63a2\u7d22\u518d\u5e30\u6728 </p>"},{"location":"chapter_dynamic_programming/knapsack_problem/#2-2","title":"2. \u00a0 \u65b9\u6cd52\uff1a\u30e1\u30e2\u5316\u63a2\u7d22","text":"<p>\u91cd\u8907\u3059\u308b\u90e8\u5206\u554f\u984c\u304c\u4e00\u5ea6\u3060\u3051\u8a08\u7b97\u3055\u308c\u308b\u3053\u3068\u3092\u78ba\u4fdd\u3059\u308b\u305f\u3081\u306b\u3001\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u8a18\u9332\u3059\u308b\u30e1\u30e2\u5316\u30ea\u30b9\u30c8 <code>mem</code> \u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u3053\u3053\u3067 <code>mem[i][c]</code> \u306f \\(dp[i, c]\\) \u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002</p> <p>\u30e1\u30e2\u5316\u3092\u5c0e\u5165\u3057\u305f\u5f8c\u3001**\u6642\u9593\u8a08\u7b97\u91cf\u306f\u90e8\u5206\u554f\u984c\u306e\u6570\u306b\u4f9d\u5b58**\u3057\u3001\\(O(n \\times cap)\\) \u306b\u306a\u308a\u307e\u3059\u3002\u5b9f\u88c5\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby knapsack.py<pre><code>def knapsack_dfs_mem(\n wgt: list[int], val: list[int], mem: list[list[int]], i: int, c: int\n) -&gt; int:\n \"\"\"0-1 \u30ca\u30c3\u30d7\u30b5\u30c3\u30af\uff1a\u8a18\u61b6\u5316\u63a2\u7d22\"\"\"\n # \u3059\u3079\u3066\u306e\u30a2\u30a4\u30c6\u30e0\u304c\u9078\u629e\u3055\u308c\u305f\u304b\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306b\u6b8b\u308a\u5bb9\u91cf\u304c\u306a\u3044\u5834\u5408\u3001\u5024 0 \u3092\u8fd4\u3059\n if i == 0 or c == 0:\n return 0\n # \u8a18\u9332\u304c\u3042\u308b\u5834\u5408\u3001\u305d\u308c\u3092\u8fd4\u3059\n if mem[i][c] != -1:\n return mem[i][c]\n # \u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u5bb9\u91cf\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306b\u5165\u308c\u306a\u3044\u3053\u3068\u3057\u304b\u9078\u629e\u3067\u304d\u306a\u3044\n if wgt[i - 1] &gt; c:\n return knapsack_dfs_mem(wgt, val, mem, i - 1, c)\n # \u30a2\u30a4\u30c6\u30e0 i \u3092\u5165\u308c\u306a\u3044\u306e\u3068\u5165\u308c\u308b\u306e\u3068\u306e\u6700\u5927\u5024\u3092\u8a08\u7b97\n no = knapsack_dfs_mem(wgt, val, mem, i - 1, c)\n yes = knapsack_dfs_mem(wgt, val, mem, i - 1, c - wgt[i - 1]) + val[i - 1]\n # 2 \u3064\u306e\u9078\u629e\u80a2\u306e\u3046\u3061\u5927\u304d\u3044\u5024\u3092\u8a18\u9332\u3057\u3066\u8fd4\u3059\n mem[i][c] = max(no, yes)\n return mem[i][c]\n</code></pre> knapsack.cpp<pre><code>[class]{}-[func]{knapsackDFSMem}\n</code></pre> knapsack.java<pre><code>/* 0-1 \u30ca\u30c3\u30d7\u30b5\u30c3\u30af\uff1a\u30e1\u30e2\u5316\u63a2\u7d22 */\nint knapsackDFSMem(int[] wgt, int[] val, int[][] mem, int i, int c) {\n // \u3059\u3079\u3066\u306e\u30a2\u30a4\u30c6\u30e0\u304c\u9078\u629e\u3055\u308c\u305f\u304b\u3001\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306b\u6b8b\u308a\u5bb9\u91cf\u304c\u306a\u3044\u5834\u5408\u3001\u5024 0 \u3092\u8fd4\u3059\n if (i == 0 || c == 0) {\n return 0;\n }\n // \u8a18\u9332\u304c\u3042\u308b\u5834\u5408\u3001\u305d\u308c\u3092\u8fd4\u3059\n if (mem[i][c] != -1) {\n return mem[i][c];\n }\n // \u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306e\u5bb9\u91cf\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306b\u5165\u308c\u306a\u3044\u3053\u3068\u3057\u304b\u9078\u629e\u3067\u304d\u306a\u3044\n if (wgt[i - 1] &gt; c) {\n return knapsackDFSMem(wgt, val, mem, i - 1, c);\n }\n // \u30a2\u30a4\u30c6\u30e0 i \u3092\u5165\u308c\u306a\u3044\u5834\u5408\u3068\u5165\u308c\u308b\u5834\u5408\u306e\u6700\u5927\u5024\u3092\u8a08\u7b97\n int no = knapsackDFSMem(wgt, val, mem, i - 1, c);\n int yes = knapsackDFSMem(wgt, val, mem, i - 1, c - wgt[i - 1]) + val[i - 1];\n // 2\u3064\u306e\u9078\u629e\u80a2\u306e\u3088\u308a\u5927\u304d\u3044\u5024\u3092\u8a18\u9332\u3057\u3066\u8fd4\u3059\n mem[i][c] = Math.max(no, yes);\n return mem[i][c];\n}\n</code></pre> knapsack.cs<pre><code>[class]{knapsack}-[func]{KnapsackDFSMem}\n</code></pre> knapsack.go<pre><code>[class]{}-[func]{knapsackDFSMem}\n</code></pre> knapsack.swift<pre><code>[class]{}-[func]{knapsackDFSMem}\n</code></pre> knapsack.js<pre><code>[class]{}-[func]{knapsackDFSMem}\n</code></pre> knapsack.ts<pre><code>[class]{}-[func]{knapsackDFSMem}\n</code></pre> knapsack.dart<pre><code>[class]{}-[func]{knapsackDFSMem}\n</code></pre> knapsack.rs<pre><code>[class]{}-[func]{knapsack_dfs_mem}\n</code></pre> knapsack.c<pre><code>[class]{}-[func]{knapsackDFSMem}\n</code></pre> knapsack.kt<pre><code>[class]{}-[func]{knapsackDFSMem}\n</code></pre> knapsack.rb<pre><code>[class]{}-[func]{knapsack_dfs_mem}\n</code></pre> <p>\u4e0b\u306e\u56f3\u306f\u30e1\u30e2\u5316\u63a2\u7d22\u3067\u679d\u5208\u308a\u3055\u308c\u308b\u63a2\u7d22\u5206\u5c90\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002</p> <p></p> <p> \u56f3 14-19 \u00a0 0-1\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u306e\u30e1\u30e2\u5316\u63a2\u7d22\u518d\u5e30\u6728 </p>"},{"location":"chapter_dynamic_programming/knapsack_problem/#3-3","title":"3. \u00a0 \u65b9\u6cd53\uff1a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0","text":"<p>\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306f\u672c\u8cea\u7684\u306b\u72b6\u614b\u9077\u79fb\u4e2d\u306b \\(dp\\) \u30c6\u30fc\u30d6\u30eb\u3092\u57cb\u3081\u308b\u3053\u3068\u3092\u542b\u307f\u307e\u3059\u3002\u30b3\u30fc\u30c9\u306f\u4e0b\u306e\u56f3\u306b\u793a\u3055\u308c\u3066\u3044\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby knapsack.py<pre><code>def knapsack_dp(wgt: list[int], val: list[int], cap: int) -&gt; int:\n \"\"\"0-1 \u30ca\u30c3\u30d7\u30b5\u30c3\u30af\uff1a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\"\"\"\n n = len(wgt)\n # dp \u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n dp = [[0] * (cap + 1) for _ in range(n + 1)]\n # \u72b6\u614b\u9077\u79fb\n for i in range(1, n + 1):\n for c in range(1, cap + 1):\n if wgt[i - 1] &gt; c:\n # \u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u5bb9\u91cf\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u30a2\u30a4\u30c6\u30e0 i \u3092\u9078\u629e\u3057\u306a\u3044\n dp[i][c] = dp[i - 1][c]\n else:\n # \u30a2\u30a4\u30c6\u30e0 i \u3092\u9078\u629e\u3057\u306a\u3044\u306e\u3068\u9078\u629e\u3059\u308b\u306e\u3068\u3067\u5927\u304d\u3044\u5024\n dp[i][c] = max(dp[i - 1][c], dp[i - 1][c - wgt[i - 1]] + val[i - 1])\n return dp[n][cap]\n</code></pre> knapsack.cpp<pre><code>/* 0-1 \u30ca\u30c3\u30d7\u30b5\u30c3\u30af\uff1a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint knapsackDP(vector&lt;int&gt; &amp;wgt, vector&lt;int&gt; &amp;val, int cap) {\n int n = wgt.size();\n // DP\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n vector&lt;vector&lt;int&gt;&gt; dp(n + 1, vector&lt;int&gt;(cap + 1, 0));\n // \u72b6\u614b\u9077\u79fb\n for (int i = 1; i &lt;= n; i++) {\n for (int c = 1; c &lt;= cap; c++) {\n if (wgt[i - 1] &gt; c) {\n // \u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306e\u5bb9\u91cf\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u30a2\u30a4\u30c6\u30e0 i \u3092\u9078\u629e\u3057\u306a\u3044\n dp[i][c] = dp[i - 1][c];\n } else {\n // \u9078\u629e\u3057\u306a\u3044\u5834\u5408\u3068\u30a2\u30a4\u30c6\u30e0 i \u3092\u9078\u629e\u3059\u308b\u5834\u5408\u306e\u3088\u308a\u5927\u304d\u3044\u5024\n dp[i][c] = max(dp[i - 1][c], dp[i - 1][c - wgt[i - 1]] + val[i - 1]);\n }\n }\n }\n return dp[n][cap];\n}\n</code></pre> knapsack.java<pre><code>/* 0-1 \u30ca\u30c3\u30d7\u30b5\u30c3\u30af\uff1a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint knapsackDP(int[] wgt, int[] val, int cap) {\n int n = wgt.length;\n // DP\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n int[][] dp = new int[n + 1][cap + 1];\n // \u72b6\u614b\u9077\u79fb\n for (int i = 1; i &lt;= n; i++) {\n for (int c = 1; c &lt;= cap; c++) {\n if (wgt[i - 1] &gt; c) {\n // \u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306e\u5bb9\u91cf\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u30a2\u30a4\u30c6\u30e0 i \u3092\u9078\u629e\u3057\u306a\u3044\n dp[i][c] = dp[i - 1][c];\n } else {\n // \u9078\u629e\u3057\u306a\u3044\u5834\u5408\u3068\u30a2\u30a4\u30c6\u30e0 i \u3092\u9078\u629e\u3059\u308b\u5834\u5408\u306e\u3088\u308a\u5927\u304d\u3044\u5024\n dp[i][c] = Math.max(dp[i - 1][c], dp[i - 1][c - wgt[i - 1]] + val[i - 1]);\n }\n }\n }\n return dp[n][cap];\n}\n</code></pre> knapsack.cs<pre><code>[class]{knapsack}-[func]{KnapsackDP}\n</code></pre> knapsack.go<pre><code>[class]{}-[func]{knapsackDP}\n</code></pre> knapsack.swift<pre><code>[class]{}-[func]{knapsackDP}\n</code></pre> knapsack.js<pre><code>[class]{}-[func]{knapsackDP}\n</code></pre> knapsack.ts<pre><code>[class]{}-[func]{knapsackDP}\n</code></pre> knapsack.dart<pre><code>[class]{}-[func]{knapsackDP}\n</code></pre> knapsack.rs<pre><code>[class]{}-[func]{knapsack_dp}\n</code></pre> knapsack.c<pre><code>[class]{}-[func]{knapsackDP}\n</code></pre> knapsack.kt<pre><code>[class]{}-[func]{knapsackDP}\n</code></pre> knapsack.rb<pre><code>[class]{}-[func]{knapsack_dp}\n</code></pre> <p>\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u6642\u9593\u8a08\u7b97\u91cf\u3068\u7a7a\u9593\u8a08\u7b97\u91cf\u306e\u4e21\u65b9\u304c\u914d\u5217 <code>dp</code> \u306e\u30b5\u30a4\u30ba\u3001\u3064\u307e\u308a \\(O(n \\times cap)\\) \u306b\u3088\u3063\u3066\u6c7a\u5b9a\u3055\u308c\u307e\u3059\u3002</p> &lt;1&gt;&lt;2&gt;&lt;3&gt;&lt;4&gt;&lt;5&gt;&lt;6&gt;&lt;7&gt;&lt;8&gt;&lt;9&gt;&lt;10&gt;&lt;11&gt;&lt;12&gt;&lt;13&gt;&lt;14&gt; <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p> \u56f3 14-20 \u00a0 0-1\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u306e\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30d7\u30ed\u30bb\u30b9 </p>"},{"location":"chapter_dynamic_programming/knapsack_problem/#4","title":"4. \u00a0 \u7a7a\u9593\u6700\u9069\u5316","text":"<p>\u5404\u72b6\u614b\u306f\u4e0a\u306e\u884c\u306e\u72b6\u614b\u306e\u307f\u306b\u95a2\u9023\u3059\u308b\u305f\u3081\u30012\u3064\u306e\u914d\u5217\u3092\u4f7f\u7528\u3057\u3066\u30ed\u30fc\u30ea\u30f3\u30b0\u524d\u9032\u3055\u305b\u3001\u7a7a\u9593\u8a08\u7b97\u91cf\u3092 \\(O(n^2)\\) \u304b\u3089 \\(O(n)\\) \u306b\u524a\u6e1b\u3067\u304d\u307e\u3059\u3002</p> <p>\u3055\u3089\u306b\u8003\u3048\u3066\u307f\u308b\u3068\u30011\u3064\u306e\u914d\u5217\u3060\u3051\u3067\u7a7a\u9593\u6700\u9069\u5316\u3092\u9054\u6210\u3067\u304d\u308b\u3067\u3057\u3087\u3046\u304b\uff1f\u5404\u72b6\u614b\u304c\u76f4\u63a5\u4e0a\u306e\u30bb\u30eb\u307e\u305f\u306f\u5de6\u4e0a\u306e\u30bb\u30eb\u304b\u3089\u9077\u79fb\u3059\u308b\u3053\u3068\u304c\u89b3\u5bdf\u3067\u304d\u307e\u3059\u3002\u914d\u5217\u304c1\u3064\u3057\u304b\u306a\u3044\u5834\u5408\u3001\\(i\\) \u884c\u76ee\u306e\u8d70\u67fb\u3092\u958b\u59cb\u3059\u308b\u3068\u304d\u3001\u305d\u306e\u914d\u5217\u306f\u307e\u3060 \\(i-1\\) \u884c\u76ee\u306e\u72b6\u614b\u3092\u4fdd\u5b58\u3057\u3066\u3044\u307e\u3059\u3002</p> <ul> <li>\u901a\u5e38\u306e\u9806\u5e8f\u3067\u8d70\u67fb\u3059\u308b\u5834\u5408\u3001\\(dp[i, j]\\) \u306b\u8d70\u67fb\u3057\u305f\u3068\u304d\u3001\u5de6\u4e0a\u306e \\(dp[i-1, 1]\\) \uff5e \\(dp[i-1, j-1]\\) \u306e\u5024\u304c\u3059\u3067\u306b\u4e0a\u66f8\u304d\u3055\u308c\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u3001\u6b63\u3057\u3044\u72b6\u614b\u9077\u79fb\u7d50\u679c\u3092\u5f97\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002</li> <li>\u9006\u9806\u3067\u8d70\u67fb\u3059\u308b\u5834\u5408\u3001\u4e0a\u66f8\u304d\u554f\u984c\u306f\u306a\u304f\u3001\u72b6\u614b\u9077\u79fb\u3092\u6b63\u3057\u304f\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002</li> </ul> <p>\u4e0b\u306e\u56f3\u306f\u5358\u4e00\u914d\u5217\u3067\u306e \\(i = 1\\) \u884c\u76ee\u304b\u3089 \\(i = 2\\) \u884c\u76ee\u3078\u306e\u9077\u79fb\u30d7\u30ed\u30bb\u30b9\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u901a\u5e38\u9806\u5e8f\u8d70\u67fb\u3068\u9006\u9806\u8d70\u67fb\u306e\u9055\u3044\u306b\u3064\u3044\u3066\u8003\u3048\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002</p> &lt;1&gt;&lt;2&gt;&lt;3&gt;&lt;4&gt;&lt;5&gt;&lt;6&gt; <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p> \u56f3 14-21 \u00a0 0-1\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306e\u7a7a\u9593\u6700\u9069\u5316\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30d7\u30ed\u30bb\u30b9 </p> <p>\u30b3\u30fc\u30c9\u5b9f\u88c5\u3067\u306f\u3001\u914d\u5217 <code>dp</code> \u306e\u6700\u521d\u306e\u6b21\u5143 \\(i\\) \u3092\u524a\u9664\u3057\u3001\u5185\u5074\u306e\u30eb\u30fc\u30d7\u3092\u9006\u8d70\u67fb\u306b\u5909\u66f4\u3059\u308b\u3060\u3051\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby knapsack.py<pre><code>def knapsack_dp_comp(wgt: list[int], val: list[int], cap: int) -&gt; int:\n \"\"\"0-1 \u30ca\u30c3\u30d7\u30b5\u30c3\u30af\uff1a\u7a7a\u9593\u6700\u9069\u5316\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\"\"\"\n n = len(wgt)\n # dp \u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n dp = [0] * (cap + 1)\n # \u72b6\u614b\u9077\u79fb\n for i in range(1, n + 1):\n # \u9006\u9806\u3067\u8d70\u67fb\n for c in range(cap, 0, -1):\n if wgt[i - 1] &gt; c:\n # \u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u5bb9\u91cf\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u30a2\u30a4\u30c6\u30e0 i \u3092\u9078\u629e\u3057\u306a\u3044\n dp[c] = dp[c]\n else:\n # \u30a2\u30a4\u30c6\u30e0 i \u3092\u9078\u629e\u3057\u306a\u3044\u306e\u3068\u9078\u629e\u3059\u308b\u306e\u3068\u3067\u5927\u304d\u3044\u5024\n dp[c] = max(dp[c], dp[c - wgt[i - 1]] + val[i - 1])\n return dp[cap]\n</code></pre> knapsack.cpp<pre><code>/* 0-1 \u30ca\u30c3\u30d7\u30b5\u30c3\u30af\uff1a\u7a7a\u9593\u6700\u9069\u5316\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint knapsackDPComp(vector&lt;int&gt; &amp;wgt, vector&lt;int&gt; &amp;val, int cap) {\n int n = wgt.size();\n // DP\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n vector&lt;int&gt; dp(cap + 1, 0);\n // \u72b6\u614b\u9077\u79fb\n for (int i = 1; i &lt;= n; i++) {\n // \u9006\u9806\u3067\u8d70\u67fb\n for (int c = cap; c &gt;= 1; c--) {\n if (wgt[i - 1] &lt;= c) {\n // \u9078\u629e\u3057\u306a\u3044\u5834\u5408\u3068\u30a2\u30a4\u30c6\u30e0 i \u3092\u9078\u629e\u3059\u308b\u5834\u5408\u306e\u3088\u308a\u5927\u304d\u3044\u5024\n dp[c] = max(dp[c], dp[c - wgt[i - 1]] + val[i - 1]);\n }\n }\n }\n return dp[cap];\n}\n</code></pre> knapsack.java<pre><code>/* 0-1 \u30ca\u30c3\u30d7\u30b5\u30c3\u30af\uff1a\u7a7a\u9593\u6700\u9069\u5316\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint knapsackDPComp(int[] wgt, int[] val, int cap) {\n int n = wgt.length;\n // DP\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n int[] dp = new int[cap + 1];\n // \u72b6\u614b\u9077\u79fb\n for (int i = 1; i &lt;= n; i++) {\n // \u9006\u9806\u3067\u8d70\u67fb\n for (int c = cap; c &gt;= 1; c--) {\n if (wgt[i - 1] &lt;= c) {\n // \u9078\u629e\u3057\u306a\u3044\u5834\u5408\u3068\u30a2\u30a4\u30c6\u30e0 i \u3092\u9078\u629e\u3059\u308b\u5834\u5408\u306e\u3088\u308a\u5927\u304d\u3044\u5024\n dp[c] = Math.max(dp[c], dp[c - wgt[i - 1]] + val[i - 1]);\n }\n }\n }\n return dp[cap];\n}\n</code></pre> knapsack.cs<pre><code>[class]{knapsack}-[func]{KnapsackDPComp}\n</code></pre> knapsack.go<pre><code>[class]{}-[func]{knapsackDPComp}\n</code></pre> knapsack.swift<pre><code>[class]{}-[func]{knapsackDPComp}\n</code></pre> knapsack.js<pre><code>[class]{}-[func]{knapsackDPComp}\n</code></pre> knapsack.ts<pre><code>[class]{}-[func]{knapsackDPComp}\n</code></pre> knapsack.dart<pre><code>[class]{}-[func]{knapsackDPComp}\n</code></pre> knapsack.rs<pre><code>[class]{}-[func]{knapsack_dp_comp}\n</code></pre> knapsack.c<pre><code>[class]{}-[func]{knapsackDPComp}\n</code></pre> knapsack.kt<pre><code>[class]{}-[func]{knapsackDPComp}\n</code></pre> knapsack.rb<pre><code>[class]{}-[func]{knapsack_dp_comp}\n</code></pre>"},{"location":"chapter_dynamic_programming/summary/","title":"14.7 \u00a0 \u307e\u3068\u3081","text":"<ul> <li>\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306f\u554f\u984c\u3092\u5206\u89e3\u3057\u3001\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u4fdd\u5b58\u3059\u308b\u3053\u3068\u3067\u5197\u9577\u306a\u8a08\u7b97\u3092\u907f\u3051\u3001\u8a08\u7b97\u52b9\u7387\u3092\u5411\u4e0a\u3055\u305b\u307e\u3059\u3002</li> <li>\u6642\u9593\u3092\u8003\u616e\u3057\u306a\u3051\u308c\u3070\u3001\u3059\u3079\u3066\u306e\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u554f\u984c\u306f\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\uff08\u529b\u4efb\u305b\u63a2\u7d22\uff09\u3092\u4f7f\u7528\u3057\u3066\u89e3\u6c7a\u3067\u304d\u307e\u3059\u304c\u3001\u518d\u5e30\u6728\u306b\u306f\u591a\u304f\u306e\u91cd\u8907\u3059\u308b\u90e8\u5206\u554f\u984c\u304c\u3042\u308a\u3001\u52b9\u7387\u304c\u975e\u5e38\u306b\u4f4e\u304f\u306a\u308a\u307e\u3059\u3002\u8a18\u61b6\u5316\u30ea\u30b9\u30c8\u3092\u5c0e\u5165\u3059\u308b\u3053\u3068\u3067\u3001\u8a08\u7b97\u3055\u308c\u305f\u3059\u3079\u3066\u306e\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u4fdd\u5b58\u3057\u3001\u91cd\u8907\u3059\u308b\u90e8\u5206\u554f\u984c\u304c\u4e00\u5ea6\u3060\u3051\u8a08\u7b97\u3055\u308c\u308b\u3053\u3068\u3092\u4fdd\u8a3c\u3067\u304d\u307e\u3059\u3002</li> <li>\u8a18\u61b6\u5316\u63a2\u7d22\u306f\u30c8\u30c3\u30d7\u30c0\u30a6\u30f3\u306e\u518d\u5e30\u89e3\u6cd5\u3067\u3042\u308a\u3001\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306f\u30dc\u30c8\u30e0\u30a2\u30c3\u30d7\u306e\u53cd\u5fa9\u30a2\u30d7\u30ed\u30fc\u30c1\u306b\u5bfe\u5fdc\u3057\u3001\u300c\u8868\u3092\u57cb\u3081\u308b\u300d\u3053\u3068\u306b\u4f3c\u3066\u3044\u307e\u3059\u3002\u73fe\u5728\u306e\u72b6\u614b\u306f\u7279\u5b9a\u306e\u5c40\u6240\u72b6\u614b\u306e\u307f\u306b\u4f9d\u5b58\u3059\u308b\u305f\u3081\u3001dp\u30c6\u30fc\u30d6\u30eb\u306e1\u6b21\u5143\u3092\u524a\u9664\u3057\u3066\u7a7a\u9593\u8a08\u7b97\u91cf\u3092\u524a\u6e1b\u3067\u304d\u307e\u3059\u3002</li> <li>\u90e8\u5206\u554f\u984c\u306e\u5206\u89e3\u306f\u6c4e\u7528\u7684\u306a\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u30a2\u30d7\u30ed\u30fc\u30c1\u3067\u3042\u308a\u3001\u5206\u5272\u7d71\u6cbb\u6cd5\u3001\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3001\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u3067\u7279\u5fb4\u304c\u7570\u306a\u308a\u307e\u3059\u3002</li> <li>\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u554f\u984c\u306b\u306f3\u3064\u306e\u4e3b\u8981\u306a\u7279\u5fb4\u304c\u3042\u308a\u307e\u3059\uff1a\u91cd\u8907\u3059\u308b\u90e8\u5206\u554f\u984c\u3001\u6700\u9069\u90e8\u5206\u69cb\u9020\u3001\u7121\u8a18\u61b6\u6027\u3002</li> <li>\u5143\u306e\u554f\u984c\u306e\u6700\u9069\u89e3\u304c\u305d\u306e\u90e8\u5206\u554f\u984c\u306e\u6700\u9069\u89e3\u304b\u3089\u69cb\u7bc9\u3067\u304d\u308b\u5834\u5408\u3001\u6700\u9069\u90e8\u5206\u69cb\u9020\u3092\u6301\u3061\u307e\u3059\u3002</li> <li>\u7121\u8a18\u61b6\u6027\u3068\u306f\u3001\u72b6\u614b\u306e\u5c06\u6765\u306e\u767a\u5c55\u304c\u73fe\u5728\u306e\u72b6\u614b\u306e\u307f\u306b\u4f9d\u5b58\u3057\u3001\u904e\u53bb\u306b\u7d4c\u9a13\u3057\u305f\u3059\u3079\u3066\u306e\u72b6\u614b\u306b\u4f9d\u5b58\u3057\u306a\u3044\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u591a\u304f\u306e\u7d44\u307f\u5408\u308f\u305b\u6700\u9069\u5316\u554f\u984c\u306b\u306f\u3053\u306e\u7279\u6027\u304c\u306a\u304f\u3001\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3092\u4f7f\u7528\u3057\u3066\u8fc5\u901f\u306b\u89e3\u6c7a\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002</li> </ul> <p>\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c</p> <ul> <li>\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u306f\u6700\u3082\u5178\u578b\u7684\u306a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u554f\u984c\u306e1\u3064\u3067\u30010-1\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u3001\u7121\u5236\u9650\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u3001\u8907\u6570\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306a\u3069\u306e\u5909\u7a2e\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>0-1\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306e\u72b6\u614b\u5b9a\u7fa9\u306f\u3001\u6700\u521d\u306e \\(i\\) \u500b\u306e\u30a2\u30a4\u30c6\u30e0\u3092\u542b\u3080\u5bb9\u91cf \\(c\\) \u306e\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u3067\u306e\u6700\u5927\u5024\u3067\u3059\u3002\u30a2\u30a4\u30c6\u30e0\u3092\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306b\u5165\u308c\u306a\u3044\u307e\u305f\u306f\u5165\u308c\u308b\u3068\u3044\u3046\u6c7a\u5b9a\u306b\u57fa\u3065\u3044\u3066\u3001\u6700\u9069\u90e8\u5206\u69cb\u9020\u3092\u7279\u5b9a\u3057\u3001\u72b6\u614b\u9077\u79fb\u65b9\u7a0b\u5f0f\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002\u7a7a\u9593\u6700\u9069\u5316\u3067\u306f\u3001\u5404\u72b6\u614b\u304c\u76f4\u63a5\u4e0a\u3068\u5de6\u4e0a\u306e\u72b6\u614b\u306b\u4f9d\u5b58\u3059\u308b\u305f\u3081\u3001\u5de6\u4e0a\u306e\u72b6\u614b\u306e\u4e0a\u66f8\u304d\u3092\u907f\u3051\u308b\u305f\u3081\u306b\u30ea\u30b9\u30c8\u3092\u9006\u9806\u3067\u8d70\u67fb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u7121\u5236\u9650\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u3067\u306f\u3001\u5404\u7a2e\u985e\u306e\u30a2\u30a4\u30c6\u30e0\u3092\u9078\u629e\u3067\u304d\u308b\u6570\u306b\u5236\u9650\u304c\u306a\u3044\u305f\u3081\u3001\u30a2\u30a4\u30c6\u30e0\u3092\u542b\u3081\u308b\u72b6\u614b\u9077\u79fb\u306f0-1\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u3068\u7570\u306a\u308a\u307e\u3059\u3002\u72b6\u614b\u304c\u76f4\u63a5\u4e0a\u3068\u5de6\u306e\u72b6\u614b\u306b\u4f9d\u5b58\u3059\u308b\u305f\u3081\u3001\u7a7a\u9593\u6700\u9069\u5316\u3067\u306f\u524d\u65b9\u8d70\u67fb\u3092\u542b\u3081\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u30b3\u30a4\u30f3\u4ea4\u63db\u554f\u984c\u306f\u7121\u5236\u9650\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u306e\u5909\u7a2e\u3067\u3001\u300c\u6700\u5927\u300d\u5024\u3092\u6c42\u3081\u308b\u3053\u3068\u304b\u3089\u300c\u6700\u5c0f\u300d\u30b3\u30a4\u30f3\u6570\u3092\u6c42\u3081\u308b\u3053\u3068\u306b\u5909\u308f\u308a\u3001\u72b6\u614b\u9077\u79fb\u65b9\u7a0b\u5f0f\u306f \\(\\max()\\) \u3092 \\(\\min()\\) \u306b\u5909\u66f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306e\u5bb9\u91cf\u3092\u300c\u8d85\u3048\u306a\u3044\u300d\u3053\u3068\u3092\u8ffd\u6c42\u3059\u308b\u3053\u3068\u304b\u3089\u3001\u6b63\u78ba\u306b\u76ee\u6a19\u91d1\u984d\u3092\u6c42\u3081\u308b\u3053\u3068\u306b\u5909\u308f\u308a\u3001\u300c\u76ee\u6a19\u91d1\u984d\u3092\u69cb\u6210\u3067\u304d\u306a\u3044\u300d\u7121\u52b9\u89e3\u3092\u8868\u3059\u305f\u3081\u306b \\(amt + 1\\) \u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</li> <li>\u30b3\u30a4\u30f3\u4ea4\u63db\u554f\u984cII\u306f\u300c\u6700\u5c0f\u30b3\u30a4\u30f3\u6570\u300d\u3092\u6c42\u3081\u308b\u3053\u3068\u304b\u3089\u300c\u30b3\u30a4\u30f3\u306e\u7d44\u307f\u5408\u308f\u305b\u6570\u300d\u3092\u6c42\u3081\u308b\u3053\u3068\u306b\u5909\u308f\u308a\u3001\u72b6\u614b\u9077\u79fb\u65b9\u7a0b\u5f0f\u3092 \\(\\min()\\) \u304b\u3089\u548c\u7b97\u6f14\u7b97\u5b50\u306b\u5909\u66f4\u3057\u307e\u3059\u3002</li> </ul> <p>\u7de8\u96c6\u8ddd\u96e2\u554f\u984c</p> <ul> <li>\u7de8\u96c6\u8ddd\u96e2\uff08\u30ec\u30fc\u30d9\u30f3\u30b7\u30e5\u30bf\u30a4\u30f3\u8ddd\u96e2\uff09\u306f2\u3064\u306e\u6587\u5b57\u5217\u9593\u306e\u985e\u4f3c\u5ea6\u3092\u6e2c\u5b9a\u3057\u3001\u4e00\u3064\u306e\u6587\u5b57\u5217\u3092\u5225\u306e\u6587\u5b57\u5217\u306b\u5909\u66f4\u3059\u308b\u305f\u3081\u306b\u5fc5\u8981\u306a\u6700\u5c0f\u7de8\u96c6\u30b9\u30c6\u30c3\u30d7\u6570\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u3001\u7de8\u96c6\u64cd\u4f5c\u306b\u306f\u8ffd\u52a0\u3001\u524a\u9664\u3001\u7f6e\u63db\u304c\u542b\u307e\u308c\u307e\u3059\u3002</li> <li>\u7de8\u96c6\u8ddd\u96e2\u554f\u984c\u306e\u72b6\u614b\u5b9a\u7fa9\u306f\u3001\\(s\\) \u306e\u6700\u521d\u306e \\(i\\) \u6587\u5b57\u3092 \\(t\\) \u306e\u6700\u521d\u306e \\(j\\) \u6587\u5b57\u306b\u5909\u66f4\u3059\u308b\u305f\u3081\u306b\u5fc5\u8981\u306a\u6700\u5c0f\u7de8\u96c6\u30b9\u30c6\u30c3\u30d7\u6570\u3067\u3059\u3002\\(s[i] \\ne t[j]\\) \u306e\u5834\u5408\u3001\u8ffd\u52a0\u3001\u524a\u9664\u3001\u7f6e\u63db\u306e3\u3064\u306e\u6c7a\u5b9a\u304c\u3042\u308a\u3001\u305d\u308c\u305e\u308c\u306b\u5bfe\u5fdc\u3059\u308b\u6b8b\u4f59\u90e8\u5206\u554f\u984c\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u304b\u3089\u6700\u9069\u90e8\u5206\u69cb\u9020\u3092\u7279\u5b9a\u3057\u3001\u72b6\u614b\u9077\u79fb\u65b9\u7a0b\u5f0f\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002\\(s[i] = t[j]\\) \u306e\u5834\u5408\u3001\u73fe\u5728\u306e\u6587\u5b57\u306e\u7de8\u96c6\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\u3002</li> <li>\u7de8\u96c6\u8ddd\u96e2\u3067\u306f\u3001\u72b6\u614b\u304c\u76f4\u63a5\u4e0a\u3001\u5de6\u3001\u5de6\u4e0a\u306e\u72b6\u614b\u306b\u4f9d\u5b58\u3057\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u7a7a\u9593\u6700\u9069\u5316\u5f8c\u3001\u524d\u65b9\u8d70\u67fb\u3082\u9006\u8d70\u67fb\u3082\u6b63\u3057\u304f\u72b6\u614b\u9077\u79fb\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002\u3053\u308c\u306b\u5bfe\u51e6\u3059\u308b\u305f\u3081\u3001\u5909\u6570\u3092\u4f7f\u7528\u3057\u3066\u5de6\u4e0a\u306e\u72b6\u614b\u3092\u4e00\u6642\u7684\u306b\u4fdd\u5b58\u3057\u3001\u7121\u5236\u9650\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u306e\u72b6\u6cc1\u3068\u540c\u7b49\u306b\u3057\u3001\u7a7a\u9593\u6700\u9069\u5316\u5f8c\u306b\u524d\u65b9\u8d70\u67fb\u3092\u53ef\u80fd\u306b\u3057\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_dynamic_programming/unbounded_knapsack_problem/","title":"14.5 \u00a0 \u7121\u5236\u9650\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c","text":"<p>\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u307e\u305a\u5225\u306e\u4e00\u822c\u7684\u306a\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u3067\u3042\u308b\u7121\u5236\u9650\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u3092\u89e3\u6c7a\u3057\u3001\u6b21\u306b\u305d\u306e\u7279\u6b8a\u30b1\u30fc\u30b9\u3067\u3042\u308b\u30b3\u30a4\u30f3\u4ea4\u63db\u554f\u984c\u3092\u63a2\u7d22\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_dynamic_programming/unbounded_knapsack_problem/#1451","title":"14.5.1 \u00a0 \u7121\u5236\u9650\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c","text":"<p>Question</p> <p>\\(n\\) \u500b\u306e\u30a2\u30a4\u30c6\u30e0\u304c\u4e0e\u3048\u3089\u308c\u3001\\(i\\) \u756a\u76ee\u306e\u30a2\u30a4\u30c6\u30e0\u306e\u91cd\u91cf\u306f \\(wgt[i-1]\\) \u3067\u5024\u306f \\(val[i-1]\\) \u3067\u3059\u3002\u5bb9\u91cf\u304c \\(cap\\) \u306e\u30d0\u30c3\u30af\u30d1\u30c3\u30af\u304c\u3042\u308a\u307e\u3059\u3002\u5404\u30a2\u30a4\u30c6\u30e0\u306f\u8907\u6570\u56de\u9078\u629e\u3067\u304d\u307e\u3059\u3002\u5bb9\u91cf\u3092\u8d85\u3048\u308b\u3053\u3068\u306a\u304f\u30d0\u30c3\u30af\u30d1\u30c3\u30af\u306b\u5165\u308c\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u30a2\u30a4\u30c6\u30e0\u306e\u6700\u5927\u5024\u306f\u4f55\u3067\u3059\u304b\uff1f\u4ee5\u4e0b\u306e\u4f8b\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <p></p> <p> \u56f3 14-22 \u00a0 \u7121\u5236\u9650\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u306e\u4f8b\u30c7\u30fc\u30bf </p>"},{"location":"chapter_dynamic_programming/unbounded_knapsack_problem/#1","title":"1. \u00a0 \u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30a2\u30d7\u30ed\u30fc\u30c1","text":"<p>\u7121\u5236\u9650\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u306f0-1\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u3068\u975e\u5e38\u306b\u4f3c\u3066\u304a\u308a\u3001\u552f\u4e00\u306e\u9055\u3044\u306f\u30a2\u30a4\u30c6\u30e0\u3092\u9078\u629e\u3067\u304d\u308b\u56de\u6570\u306b\u5236\u9650\u304c\u306a\u3044\u3053\u3068\u3067\u3059\u3002</p> <ul> <li>0-1\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u3067\u306f\u3001\u5404\u30a2\u30a4\u30c6\u30e0\u306f1\u3064\u3057\u304b\u306a\u3044\u305f\u3081\u3001\u30a2\u30a4\u30c6\u30e0 \\(i\\) \u3092\u30d0\u30c3\u30af\u30d1\u30c3\u30af\u306b\u5165\u308c\u305f\u5f8c\u306f\u3001\u524d\u306e \\(i-1\\) \u500b\u306e\u30a2\u30a4\u30c6\u30e0\u304b\u3089\u306e\u307f\u9078\u629e\u3067\u304d\u307e\u3059\u3002</li> <li>\u7121\u5236\u9650\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u3067\u306f\u3001\u5404\u30a2\u30a4\u30c6\u30e0\u306e\u6570\u91cf\u306f\u7121\u5236\u9650\u3067\u3042\u308b\u305f\u3081\u3001\u30a2\u30a4\u30c6\u30e0 \\(i\\) \u3092\u30d0\u30c3\u30af\u30d1\u30c3\u30af\u306b\u5165\u308c\u305f\u5f8c\u3082\u3001\u524d\u306e \\(i\\) \u500b\u306e\u30a2\u30a4\u30c6\u30e0\u304b\u3089\u5f15\u304d\u7d9a\u304d\u9078\u629e\u3067\u304d\u307e\u3059\u3002</li> </ul> <p>\u7121\u5236\u9650\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u306e\u30eb\u30fc\u30eb\u306e\u4e0b\u3067\u3001\u72b6\u614b \\([i, c]\\) \u306f2\u3064\u306e\u65b9\u6cd5\u3067\u5909\u5316\u3067\u304d\u307e\u3059\u3002</p> <ul> <li>\u30a2\u30a4\u30c6\u30e0 \\(i\\) \u3092\u5165\u308c\u306a\u3044\uff1a0-1\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u3068\u540c\u69d8\u306b\u3001\\([i-1, c]\\) \u306b\u9077\u79fb\u3057\u307e\u3059\u3002</li> <li>\u30a2\u30a4\u30c6\u30e0 \\(i\\) \u3092\u5165\u308c\u308b\uff1a0-1\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u3068\u306f\u7570\u306a\u308a\u3001\\([i, c-wgt[i-1]]\\) \u306b\u9077\u79fb\u3057\u307e\u3059\u3002</li> </ul> <p>\u3057\u305f\u304c\u3063\u3066\u3001\u72b6\u614b\u9077\u79fb\u65b9\u7a0b\u5f0f\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\uff1a</p> \\[ dp[i, c] = \\max(dp[i-1, c], dp[i, c - wgt[i-1]] + val[i-1]) \\]"},{"location":"chapter_dynamic_programming/unbounded_knapsack_problem/#2","title":"2. \u00a0 \u30b3\u30fc\u30c9\u5b9f\u88c5","text":"<p>2\u3064\u306e\u554f\u984c\u306e\u30b3\u30fc\u30c9\u3092\u6bd4\u8f03\u3059\u308b\u3068\u3001\u72b6\u614b\u9077\u79fb\u304c \\(i-1\\) \u304b\u3089 \\(i\\) \u306b\u5909\u308f\u308a\u3001\u6b8b\u308a\u306f\u5b8c\u5168\u306b\u540c\u4e00\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby unbounded_knapsack.py<pre><code>def unbounded_knapsack_dp(wgt: list[int], val: list[int], cap: int) -&gt; int:\n \"\"\"\u5b8c\u5168\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\uff1a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\"\"\"\n n = len(wgt)\n # dp \u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n dp = [[0] * (cap + 1) for _ in range(n + 1)]\n # \u72b6\u614b\u9077\u79fb\n for i in range(1, n + 1):\n for c in range(1, cap + 1):\n if wgt[i - 1] &gt; c:\n # \u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u5bb9\u91cf\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u30a2\u30a4\u30c6\u30e0 i \u3092\u9078\u629e\u3057\u306a\u3044\n dp[i][c] = dp[i - 1][c]\n else:\n # \u30a2\u30a4\u30c6\u30e0 i \u3092\u9078\u629e\u3057\u306a\u3044\u306e\u3068\u9078\u629e\u3059\u308b\u306e\u3068\u3067\u5927\u304d\u3044\u5024\n dp[i][c] = max(dp[i - 1][c], dp[i][c - wgt[i - 1]] + val[i - 1])\n return dp[n][cap]\n</code></pre> unbounded_knapsack.cpp<pre><code>/* \u5b8c\u5168\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\uff1a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint unboundedKnapsackDP(vector&lt;int&gt; &amp;wgt, vector&lt;int&gt; &amp;val, int cap) {\n int n = wgt.size();\n // DP\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n vector&lt;vector&lt;int&gt;&gt; dp(n + 1, vector&lt;int&gt;(cap + 1, 0));\n // \u72b6\u614b\u9077\u79fb\n for (int i = 1; i &lt;= n; i++) {\n for (int c = 1; c &lt;= cap; c++) {\n if (wgt[i - 1] &gt; c) {\n // \u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306e\u5bb9\u91cf\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u30a2\u30a4\u30c6\u30e0 i \u3092\u9078\u629e\u3057\u306a\u3044\n dp[i][c] = dp[i - 1][c];\n } else {\n // \u9078\u629e\u3057\u306a\u3044\u5834\u5408\u3068\u30a2\u30a4\u30c6\u30e0 i \u3092\u9078\u629e\u3059\u308b\u5834\u5408\u306e\u3088\u308a\u5927\u304d\u3044\u5024\n dp[i][c] = max(dp[i - 1][c], dp[i][c - wgt[i - 1]] + val[i - 1]);\n }\n }\n }\n return dp[n][cap];\n}\n</code></pre> unbounded_knapsack.java<pre><code>/* \u5b8c\u5168\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\uff1a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint unboundedKnapsackDP(int[] wgt, int[] val, int cap) {\n int n = wgt.length;\n // DP\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n int[][] dp = new int[n + 1][cap + 1];\n // \u72b6\u614b\u9077\u79fb\n for (int i = 1; i &lt;= n; i++) {\n for (int c = 1; c &lt;= cap; c++) {\n if (wgt[i - 1] &gt; c) {\n // \u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306e\u5bb9\u91cf\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u30a2\u30a4\u30c6\u30e0 i \u3092\u9078\u629e\u3057\u306a\u3044\n dp[i][c] = dp[i - 1][c];\n } else {\n // \u9078\u629e\u3057\u306a\u3044\u5834\u5408\u3068\u30a2\u30a4\u30c6\u30e0 i \u3092\u9078\u629e\u3059\u308b\u5834\u5408\u306e\u3088\u308a\u5927\u304d\u3044\u5024\n dp[i][c] = Math.max(dp[i - 1][c], dp[i][c - wgt[i - 1]] + val[i - 1]);\n }\n }\n }\n return dp[n][cap];\n}\n</code></pre> unbounded_knapsack.cs<pre><code>[class]{unbounded_knapsack}-[func]{UnboundedKnapsackDP}\n</code></pre> unbounded_knapsack.go<pre><code>[class]{}-[func]{unboundedKnapsackDP}\n</code></pre> unbounded_knapsack.swift<pre><code>[class]{}-[func]{unboundedKnapsackDP}\n</code></pre> unbounded_knapsack.js<pre><code>[class]{}-[func]{unboundedKnapsackDP}\n</code></pre> unbounded_knapsack.ts<pre><code>[class]{}-[func]{unboundedKnapsackDP}\n</code></pre> unbounded_knapsack.dart<pre><code>[class]{}-[func]{unboundedKnapsackDP}\n</code></pre> unbounded_knapsack.rs<pre><code>[class]{}-[func]{unbounded_knapsack_dp}\n</code></pre> unbounded_knapsack.c<pre><code>[class]{}-[func]{unboundedKnapsackDP}\n</code></pre> unbounded_knapsack.kt<pre><code>[class]{}-[func]{unboundedKnapsackDP}\n</code></pre> unbounded_knapsack.rb<pre><code>[class]{}-[func]{unbounded_knapsack_dp}\n</code></pre>"},{"location":"chapter_dynamic_programming/unbounded_knapsack_problem/#3","title":"3. \u00a0 \u7a7a\u9593\u6700\u9069\u5316","text":"<p>\u73fe\u5728\u306e\u72b6\u614b\u306f\u5de6\u3068\u4e0a\u306e\u72b6\u614b\u304b\u3089\u6765\u308b\u305f\u3081\u3001\u7a7a\u9593\u6700\u9069\u5316\u89e3\u6cd5\u306f \\(dp\\) \u30c6\u30fc\u30d6\u30eb\u306e\u5404\u884c\u306b\u5bfe\u3057\u3066\u524d\u65b9\u8d70\u67fb\u3092\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>\u3053\u306e\u8d70\u67fb\u9806\u5e8f\u306f0-1\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306e\u5834\u5408\u3068\u306f\u9006\u3067\u3059\u3002\u9055\u3044\u3092\u7406\u89e3\u3059\u308b\u305f\u3081\u306b\u4e0b\u306e\u56f3\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> &lt;1&gt;&lt;2&gt;&lt;3&gt;&lt;4&gt;&lt;5&gt;&lt;6&gt; <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p> \u56f3 14-23 \u00a0 \u7a7a\u9593\u6700\u9069\u5316\u5f8c\u306e\u7121\u5236\u9650\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u306e\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30d7\u30ed\u30bb\u30b9 </p> <p>\u30b3\u30fc\u30c9\u5b9f\u88c5\u306f\u975e\u5e38\u306b\u7c21\u5358\u3067\u3001\u914d\u5217 <code>dp</code> \u306e\u6700\u521d\u306e\u6b21\u5143\u3092\u524a\u9664\u3059\u308b\u3060\u3051\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby unbounded_knapsack.py<pre><code>def unbounded_knapsack_dp_comp(wgt: list[int], val: list[int], cap: int) -&gt; int:\n \"\"\"\u5b8c\u5168\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\uff1a\u7a7a\u9593\u6700\u9069\u5316\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\"\"\"\n n = len(wgt)\n # dp \u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n dp = [0] * (cap + 1)\n # \u72b6\u614b\u9077\u79fb\n for i in range(1, n + 1):\n # \u9806\u5e8f\u3067\u8d70\u67fb\n for c in range(1, cap + 1):\n if wgt[i - 1] &gt; c:\n # \u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u5bb9\u91cf\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u30a2\u30a4\u30c6\u30e0 i \u3092\u9078\u629e\u3057\u306a\u3044\n dp[c] = dp[c]\n else:\n # \u30a2\u30a4\u30c6\u30e0 i \u3092\u9078\u629e\u3057\u306a\u3044\u306e\u3068\u9078\u629e\u3059\u308b\u306e\u3068\u3067\u5927\u304d\u3044\u5024\n dp[c] = max(dp[c], dp[c - wgt[i - 1]] + val[i - 1])\n return dp[cap]\n</code></pre> unbounded_knapsack.cpp<pre><code>/* \u5b8c\u5168\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\uff1a\u7a7a\u9593\u6700\u9069\u5316\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint unboundedKnapsackDPComp(vector&lt;int&gt; &amp;wgt, vector&lt;int&gt; &amp;val, int cap) {\n int n = wgt.size();\n // DP\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n vector&lt;int&gt; dp(cap + 1, 0);\n // \u72b6\u614b\u9077\u79fb\n for (int i = 1; i &lt;= n; i++) {\n for (int c = 1; c &lt;= cap; c++) {\n if (wgt[i - 1] &gt; c) {\n // \u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306e\u5bb9\u91cf\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u30a2\u30a4\u30c6\u30e0 i \u3092\u9078\u629e\u3057\u306a\u3044\n dp[c] = dp[c];\n } else {\n // \u9078\u629e\u3057\u306a\u3044\u5834\u5408\u3068\u30a2\u30a4\u30c6\u30e0 i \u3092\u9078\u629e\u3059\u308b\u5834\u5408\u306e\u3088\u308a\u5927\u304d\u3044\u5024\n dp[c] = max(dp[c], dp[c - wgt[i - 1]] + val[i - 1]);\n }\n }\n }\n return dp[cap];\n}\n</code></pre> unbounded_knapsack.java<pre><code>/* \u5b8c\u5168\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\uff1a\u7a7a\u9593\u6700\u9069\u5316\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint unboundedKnapsackDPComp(int[] wgt, int[] val, int cap) {\n int n = wgt.length;\n // DP\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n int[] dp = new int[cap + 1];\n // \u72b6\u614b\u9077\u79fb\n for (int i = 1; i &lt;= n; i++) {\n for (int c = 1; c &lt;= cap; c++) {\n if (wgt[i - 1] &gt; c) {\n // \u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306e\u5bb9\u91cf\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u30a2\u30a4\u30c6\u30e0 i \u3092\u9078\u629e\u3057\u306a\u3044\n dp[c] = dp[c];\n } else {\n // \u9078\u629e\u3057\u306a\u3044\u5834\u5408\u3068\u30a2\u30a4\u30c6\u30e0 i \u3092\u9078\u629e\u3059\u308b\u5834\u5408\u306e\u3088\u308a\u5927\u304d\u3044\u5024\n dp[c] = Math.max(dp[c], dp[c - wgt[i - 1]] + val[i - 1]);\n }\n }\n }\n return dp[cap];\n}\n</code></pre> unbounded_knapsack.cs<pre><code>[class]{unbounded_knapsack}-[func]{UnboundedKnapsackDPComp}\n</code></pre> unbounded_knapsack.go<pre><code>[class]{}-[func]{unboundedKnapsackDPComp}\n</code></pre> unbounded_knapsack.swift<pre><code>[class]{}-[func]{unboundedKnapsackDPComp}\n</code></pre> unbounded_knapsack.js<pre><code>[class]{}-[func]{unboundedKnapsackDPComp}\n</code></pre> unbounded_knapsack.ts<pre><code>[class]{}-[func]{unboundedKnapsackDPComp}\n</code></pre> unbounded_knapsack.dart<pre><code>[class]{}-[func]{unboundedKnapsackDPComp}\n</code></pre> unbounded_knapsack.rs<pre><code>[class]{}-[func]{unbounded_knapsack_dp_comp}\n</code></pre> unbounded_knapsack.c<pre><code>[class]{}-[func]{unboundedKnapsackDPComp}\n</code></pre> unbounded_knapsack.kt<pre><code>[class]{}-[func]{unboundedKnapsackDPComp}\n</code></pre> unbounded_knapsack.rb<pre><code>[class]{}-[func]{unbounded_knapsack_dp_comp}\n</code></pre>"},{"location":"chapter_dynamic_programming/unbounded_knapsack_problem/#1452","title":"14.5.2 \u00a0 \u30b3\u30a4\u30f3\u4ea4\u63db\u554f\u984c","text":"<p>\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u306f\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u554f\u984c\u306e\u5927\u304d\u306a\u30af\u30e9\u30b9\u306e\u4ee3\u8868\u3067\u3042\u308a\u3001\u30b3\u30a4\u30f3\u4ea4\u63db\u554f\u984c\u306a\u3069\u591a\u304f\u306e\u5909\u7a2e\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>Question</p> <p>\\(n\\) \u7a2e\u985e\u306e\u30b3\u30a4\u30f3\u304c\u4e0e\u3048\u3089\u308c\u3001\\(i\\) \u756a\u76ee\u306e\u7a2e\u985e\u306e\u30b3\u30a4\u30f3\u306e\u984d\u9762\u306f \\(coins[i - 1]\\) \u3067\u3001\u76ee\u6a19\u91d1\u984d\u306f \\(amt\\) \u3067\u3059\u3002\u5404\u7a2e\u985e\u306e\u30b3\u30a4\u30f3\u306f\u8907\u6570\u56de\u9078\u629e\u3067\u304d\u307e\u3059\u3002\u76ee\u6a19\u91d1\u984d\u3092\u69cb\u6210\u3059\u308b\u306e\u306b\u5fc5\u8981\u306a\u6700\u5c0f\u30b3\u30a4\u30f3\u6570\u306f\u4f55\u3067\u3059\u304b\uff1f\u76ee\u6a19\u91d1\u984d\u3092\u69cb\u6210\u3067\u304d\u306a\u3044\u5834\u5408\u306f \\(-1\\) \u3092\u8fd4\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4ee5\u4e0b\u306e\u4f8b\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <p></p> <p> \u56f3 14-24 \u00a0 \u30b3\u30a4\u30f3\u4ea4\u63db\u554f\u984c\u306e\u4f8b\u30c7\u30fc\u30bf </p>"},{"location":"chapter_dynamic_programming/unbounded_knapsack_problem/#1_1","title":"1. \u00a0 \u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30a2\u30d7\u30ed\u30fc\u30c1","text":"<p>\u30b3\u30a4\u30f3\u4ea4\u63db\u306f\u7121\u5236\u9650\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u306e\u7279\u6b8a\u30b1\u30fc\u30b9\u3068\u898b\u306a\u3059\u3053\u3068\u304c\u3067\u304d\u3001\u4ee5\u4e0b\u306e\u985e\u4f3c\u70b9\u3068\u76f8\u9055\u70b9\u3092\u5171\u6709\u3057\u3066\u3044\u307e\u3059\u3002</p> <ul> <li>2\u3064\u306e\u554f\u984c\u306f\u4e92\u3044\u306b\u5909\u63db\u3067\u304d\u307e\u3059\uff1a\u300c\u30a2\u30a4\u30c6\u30e0\u300d\u306f\u300c\u30b3\u30a4\u30f3\u300d\u306b\u5bfe\u5fdc\u3057\u3001\u300c\u30a2\u30a4\u30c6\u30e0\u306e\u91cd\u91cf\u300d\u306f\u300c\u30b3\u30a4\u30f3\u306e\u984d\u9762\u300d\u306b\u5bfe\u5fdc\u3057\u3001\u300c\u30d0\u30c3\u30af\u30d1\u30c3\u30af\u306e\u5bb9\u91cf\u300d\u306f\u300c\u76ee\u6a19\u91d1\u984d\u300d\u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002</li> <li>\u6700\u9069\u5316\u76ee\u6a19\u306f\u9006\u3067\u3059\uff1a\u7121\u5236\u9650\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u306f\u30a2\u30a4\u30c6\u30e0\u306e\u5024\u3092\u6700\u5927\u5316\u3059\u308b\u3053\u3068\u3092\u76ee\u7684\u3068\u3057\u3001\u30b3\u30a4\u30f3\u4ea4\u63db\u554f\u984c\u306f\u30b3\u30a4\u30f3\u306e\u6570\u3092\u6700\u5c0f\u5316\u3059\u308b\u3053\u3068\u3092\u76ee\u7684\u3068\u3057\u307e\u3059\u3002</li> <li>\u7121\u5236\u9650\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u306f\u30d0\u30c3\u30af\u30d1\u30c3\u30af\u5bb9\u91cf\u3092\u300c\u8d85\u3048\u306a\u3044\u300d\u89e3\u3092\u6c42\u3081\u3001\u30b3\u30a4\u30f3\u4ea4\u63db\u306f\u76ee\u6a19\u91d1\u984d\u3092\u300c\u6b63\u78ba\u306b\u300d\u69cb\u6210\u3059\u308b\u89e3\u3092\u6c42\u3081\u307e\u3059\u3002</li> </ul> <p>\u7b2c1\u30b9\u30c6\u30c3\u30d7\uff1a\u5404\u30e9\u30a6\u30f3\u30c9\u306e\u610f\u601d\u6c7a\u5b9a\u3092\u8003\u3048\u3001\u72b6\u614b\u3092\u5b9a\u7fa9\u3057\u3001\u305d\u308c\u306b\u3088\u308a \\(dp\\) \u30c6\u30fc\u30d6\u30eb\u3092\u5c0e\u51fa\u3059\u308b</p> <p>\u72b6\u614b \\([i, a]\\) \u306f\u90e8\u5206\u554f\u984c\u306b\u5bfe\u5fdc\u3057\u307e\u3059\uff1a\u6700\u521d\u306e \\(i\\) \u7a2e\u985e\u306e\u30b3\u30a4\u30f3\u3092\u4f7f\u7528\u3057\u3066\u91d1\u984d \\(a\\) \u3092\u69cb\u6210\u3067\u304d\u308b\u6700\u5c0f\u30b3\u30a4\u30f3\u6570\u3001\\(dp[i, a]\\) \u3068\u8868\u8a18\u3055\u308c\u307e\u3059\u3002</p> <p>\u4e8c\u6b21\u5143 \\(dp\\) \u30c6\u30fc\u30d6\u30eb\u306e\u30b5\u30a4\u30ba\u306f \\((n+1) \\times (amt+1)\\) \u3067\u3059\u3002</p> <p>\u7b2c2\u30b9\u30c6\u30c3\u30d7\uff1a\u6700\u9069\u90e8\u5206\u69cb\u9020\u3092\u7279\u5b9a\u3057\u3001\u72b6\u614b\u9077\u79fb\u65b9\u7a0b\u5f0f\u3092\u5c0e\u51fa\u3059\u308b</p> <p>\u3053\u306e\u554f\u984c\u306f\u72b6\u614b\u9077\u79fb\u65b9\u7a0b\u5f0f\u306e2\u3064\u306e\u5074\u9762\u3067\u7121\u5236\u9650\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u3068\u7570\u306a\u308a\u307e\u3059\u3002</p> <ul> <li>\u3053\u306e\u554f\u984c\u306f\u6700\u5c0f\u5024\u3092\u6c42\u3081\u308b\u305f\u3081\u3001\u6f14\u7b97\u5b50 \\(\\max()\\) \u3092 \\(\\min()\\) \u306b\u5909\u66f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u6700\u9069\u5316\u306f\u30b3\u30a4\u30f3\u306e\u6570\u306b\u7126\u70b9\u3092\u5f53\u3066\u3066\u3044\u308b\u305f\u3081\u3001\u30b3\u30a4\u30f3\u304c\u9078\u629e\u3055\u308c\u305f\u3068\u304d\u306b\u5358\u7d14\u306b \\(+1\\) \u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002</li> </ul> \\[ dp[i, a] = \\min(dp[i-1, a], dp[i, a - coins[i-1]] + 1) \\] <p>\u7b2c3\u30b9\u30c6\u30c3\u30d7\uff1a\u5883\u754c\u6761\u4ef6\u3068\u72b6\u614b\u9077\u79fb\u9806\u5e8f\u3092\u5b9a\u7fa9\u3059\u308b</p> <p>\u76ee\u6a19\u91d1\u984d\u304c \\(0\\) \u306e\u5834\u5408\u3001\u305d\u308c\u3092\u69cb\u6210\u3059\u308b\u306e\u306b\u5fc5\u8981\u306a\u6700\u5c0f\u30b3\u30a4\u30f3\u6570\u306f \\(0\\) \u3067\u3042\u308b\u305f\u3081\u3001\u6700\u521d\u306e\u5217\u306e\u3059\u3079\u3066\u306e \\(dp[i, 0]\\) \u306f \\(0\\) \u3067\u3059\u3002</p> <p>\u30b3\u30a4\u30f3\u304c\u306a\u3044\u5834\u5408\u3001**\u4efb\u610f\u306e\u91d1\u984d &gt;0 \u3092\u69cb\u6210\u3059\u308b\u3053\u3068\u306f\u4e0d\u53ef\u80fd**\u3067\u3042\u308a\u3001\u3053\u308c\u306f\u7121\u52b9\u306a\u89e3\u3067\u3059\u3002\u72b6\u614b\u9077\u79fb\u65b9\u7a0b\u5f0f\u306e \\(\\min()\\) \u95a2\u6570\u304c\u7121\u52b9\u306a\u89e3\u3092\u8a8d\u8b58\u3057\u3066\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3067\u304d\u308b\u3088\u3046\u306b\u3001\\(+\\infty\\) \u3092\u4f7f\u7528\u3057\u3066\u305d\u308c\u3089\u3092\u8868\u73fe\u3059\u308b\u3053\u3068\u3092\u691c\u8a0e\u3057\u3001\u3064\u307e\u308a\u6700\u521d\u306e\u884c\u306e\u3059\u3079\u3066\u306e \\(dp[0, a]\\) \u3092 \\(+\\infty\\) \u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_dynamic_programming/unbounded_knapsack_problem/#2_1","title":"2. \u00a0 \u30b3\u30fc\u30c9\u5b9f\u88c5","text":"<p>\u307b\u3068\u3093\u3069\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306f \\(+\\infty\\) \u5909\u6570\u3092\u63d0\u4f9b\u3057\u3066\u304a\u3089\u305a\u3001\u6574\u6570 <code>int</code> \u306e\u6700\u5927\u5024\u306e\u307f\u3092\u4ee3\u66ff\u3068\u3057\u3066\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\uff1a\u72b6\u614b\u9077\u79fb\u65b9\u7a0b\u5f0f\u306e \\(+1\\) \u6f14\u7b97\u304c\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>\u3053\u306e\u7406\u7531\u3067\u3001\u6570\u5024 \\(amt + 1\\) \u3092\u4f7f\u7528\u3057\u3066\u7121\u52b9\u306a\u89e3\u3092\u8868\u3057\u307e\u3059\u3002\u306a\u305c\u306a\u3089\u3001\\(amt\\) \u3092\u69cb\u6210\u3059\u308b\u306e\u306b\u5fc5\u8981\u306a\u6700\u5927\u30b3\u30a4\u30f3\u6570\u306f\u6700\u5927\u3067\u3082 \\(amt\\) \u3060\u304b\u3089\u3067\u3059\u3002\u7d50\u679c\u3092\u8fd4\u3059\u524d\u306b\u3001\\(dp[n, amt]\\) \u304c \\(amt + 1\\) \u306b\u7b49\u3057\u3044\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u3001\u305d\u3046\u3067\u3042\u308c\u3070 \\(-1\\) \u3092\u8fd4\u3057\u3001\u76ee\u6a19\u91d1\u984d\u3092\u69cb\u6210\u3067\u304d\u306a\u3044\u3053\u3068\u3092\u793a\u3057\u307e\u3059\u3002\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby coin_change.py<pre><code>def coin_change_dp(coins: list[int], amt: int) -&gt; int:\n \"\"\"\u786c\u8ca8\u4ea4\u63db\uff1a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\"\"\"\n n = len(coins)\n MAX = amt + 1\n # dp \u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n dp = [[0] * (amt + 1) for _ in range(n + 1)]\n # \u72b6\u614b\u9077\u79fb\uff1a\u6700\u521d\u306e\u884c\u3068\u6700\u521d\u306e\u5217\n for a in range(1, amt + 1):\n dp[0][a] = MAX\n # \u72b6\u614b\u9077\u79fb\uff1a\u6b8b\u308a\u306e\u884c\u3068\u5217\n for i in range(1, n + 1):\n for a in range(1, amt + 1):\n if coins[i - 1] &gt; a:\n # \u76ee\u6a19\u91d1\u984d\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u786c\u8ca8 i \u3092\u9078\u629e\u3057\u306a\u3044\n dp[i][a] = dp[i - 1][a]\n else:\n # \u786c\u8ca8 i \u3092\u9078\u629e\u3057\u306a\u3044\u306e\u3068\u9078\u629e\u3059\u308b\u306e\u3068\u3067\u5c0f\u3055\u3044\u5024\n dp[i][a] = min(dp[i - 1][a], dp[i][a - coins[i - 1]] + 1)\n return dp[n][amt] if dp[n][amt] != MAX else -1\n</code></pre> coin_change.cpp<pre><code>/* \u786c\u8ca8\u4e21\u66ff\uff1a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint coinChangeDP(vector&lt;int&gt; &amp;coins, int amt) {\n int n = coins.size();\n int MAX = amt + 1;\n // DP\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n vector&lt;vector&lt;int&gt;&gt; dp(n + 1, vector&lt;int&gt;(amt + 1, 0));\n // \u72b6\u614b\u9077\u79fb\uff1a\u6700\u521d\u306e\u884c\u3068\u6700\u521d\u306e\u5217\n for (int a = 1; a &lt;= amt; a++) {\n dp[0][a] = MAX;\n }\n // \u72b6\u614b\u9077\u79fb\uff1a\u6b8b\u308a\u306e\u884c\u3068\u5217\n for (int i = 1; i &lt;= n; i++) {\n for (int a = 1; a &lt;= amt; a++) {\n if (coins[i - 1] &gt; a) {\n // \u76ee\u6a19\u91d1\u984d\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u786c\u8ca8 i \u3092\u9078\u629e\u3057\u306a\u3044\n dp[i][a] = dp[i - 1][a];\n } else {\n // \u9078\u629e\u3057\u306a\u3044\u5834\u5408\u3068\u786c\u8ca8 i \u3092\u9078\u629e\u3059\u308b\u5834\u5408\u306e\u3088\u308a\u5c0f\u3055\u3044\u5024\n dp[i][a] = min(dp[i - 1][a], dp[i][a - coins[i - 1]] + 1);\n }\n }\n }\n return dp[n][amt] != MAX ? dp[n][amt] : -1;\n}\n</code></pre> coin_change.java<pre><code>/* \u786c\u8ca8\u4e21\u66ff\uff1a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint coinChangeDP(int[] coins, int amt) {\n int n = coins.length;\n int MAX = amt + 1;\n // DP\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n int[][] dp = new int[n + 1][amt + 1];\n // \u72b6\u614b\u9077\u79fb\uff1a\u6700\u521d\u306e\u884c\u3068\u6700\u521d\u306e\u5217\n for (int a = 1; a &lt;= amt; a++) {\n dp[0][a] = MAX;\n }\n // \u72b6\u614b\u9077\u79fb\uff1a\u6b8b\u308a\u306e\u884c\u3068\u5217\n for (int i = 1; i &lt;= n; i++) {\n for (int a = 1; a &lt;= amt; a++) {\n if (coins[i - 1] &gt; a) {\n // \u76ee\u6a19\u91d1\u984d\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u786c\u8ca8 i \u3092\u9078\u629e\u3057\u306a\u3044\n dp[i][a] = dp[i - 1][a];\n } else {\n // \u9078\u629e\u3057\u306a\u3044\u5834\u5408\u3068\u786c\u8ca8 i \u3092\u9078\u629e\u3059\u308b\u5834\u5408\u306e\u3088\u308a\u5c0f\u3055\u3044\u5024\n dp[i][a] = Math.min(dp[i - 1][a], dp[i][a - coins[i - 1]] + 1);\n }\n }\n }\n return dp[n][amt] != MAX ? dp[n][amt] : -1;\n}\n</code></pre> coin_change.cs<pre><code>[class]{coin_change}-[func]{CoinChangeDP}\n</code></pre> coin_change.go<pre><code>[class]{}-[func]{coinChangeDP}\n</code></pre> coin_change.swift<pre><code>[class]{}-[func]{coinChangeDP}\n</code></pre> coin_change.js<pre><code>[class]{}-[func]{coinChangeDP}\n</code></pre> coin_change.ts<pre><code>[class]{}-[func]{coinChangeDP}\n</code></pre> coin_change.dart<pre><code>[class]{}-[func]{coinChangeDP}\n</code></pre> coin_change.rs<pre><code>[class]{}-[func]{coin_change_dp}\n</code></pre> coin_change.c<pre><code>[class]{}-[func]{coinChangeDP}\n</code></pre> coin_change.kt<pre><code>[class]{}-[func]{coinChangeDP}\n</code></pre> coin_change.rb<pre><code>[class]{}-[func]{coin_change_dp}\n</code></pre> <p>\u4e0b\u306e\u56f3\u306f\u30b3\u30a4\u30f3\u4ea4\u63db\u554f\u984c\u306e\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30d7\u30ed\u30bb\u30b9\u3092\u793a\u3057\u3066\u304a\u308a\u3001\u7121\u5236\u9650\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u3068\u975e\u5e38\u306b\u4f3c\u3066\u3044\u307e\u3059\u3002</p> &lt;1&gt;&lt;2&gt;&lt;3&gt;&lt;4&gt;&lt;5&gt;&lt;6&gt;&lt;7&gt;&lt;8&gt;&lt;9&gt;&lt;10&gt;&lt;11&gt;&lt;12&gt;&lt;13&gt;&lt;14&gt;&lt;15&gt; <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p> \u56f3 14-25 \u00a0 \u30b3\u30a4\u30f3\u4ea4\u63db\u554f\u984c\u306e\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30d7\u30ed\u30bb\u30b9 </p>"},{"location":"chapter_dynamic_programming/unbounded_knapsack_problem/#3_1","title":"3. \u00a0 \u7a7a\u9593\u6700\u9069\u5316","text":"<p>\u30b3\u30a4\u30f3\u4ea4\u63db\u554f\u984c\u306e\u7a7a\u9593\u6700\u9069\u5316\u306f\u7121\u5236\u9650\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u3068\u540c\u3058\u65b9\u6cd5\u3067\u51e6\u7406\u3055\u308c\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby coin_change.py<pre><code>def coin_change_dp_comp(coins: list[int], amt: int) -&gt; int:\n \"\"\"\u786c\u8ca8\u4ea4\u63db\uff1a\u7a7a\u9593\u6700\u9069\u5316\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\"\"\"\n n = len(coins)\n MAX = amt + 1\n # dp \u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n dp = [MAX] * (amt + 1)\n dp[0] = 0\n # \u72b6\u614b\u9077\u79fb\n for i in range(1, n + 1):\n # \u9806\u5e8f\u3067\u8d70\u67fb\n for a in range(1, amt + 1):\n if coins[i - 1] &gt; a:\n # \u76ee\u6a19\u91d1\u984d\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u786c\u8ca8 i \u3092\u9078\u629e\u3057\u306a\u3044\n dp[a] = dp[a]\n else:\n # \u786c\u8ca8 i \u3092\u9078\u629e\u3057\u306a\u3044\u306e\u3068\u9078\u629e\u3059\u308b\u306e\u3068\u3067\u5c0f\u3055\u3044\u5024\n dp[a] = min(dp[a], dp[a - coins[i - 1]] + 1)\n return dp[amt] if dp[amt] != MAX else -1\n</code></pre> coin_change.cpp<pre><code>/* \u786c\u8ca8\u4e21\u66ff\uff1a\u7a7a\u9593\u6700\u9069\u5316\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint coinChangeDPComp(vector&lt;int&gt; &amp;coins, int amt) {\n int n = coins.size();\n int MAX = amt + 1;\n // DP\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n vector&lt;int&gt; dp(amt + 1, MAX);\n dp[0] = 0;\n // \u72b6\u614b\u9077\u79fb\n for (int i = 1; i &lt;= n; i++) {\n for (int a = 1; a &lt;= amt; a++) {\n if (coins[i - 1] &gt; a) {\n // \u76ee\u6a19\u91d1\u984d\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u786c\u8ca8 i \u3092\u9078\u629e\u3057\u306a\u3044\n dp[a] = dp[a];\n } else {\n // \u9078\u629e\u3057\u306a\u3044\u5834\u5408\u3068\u786c\u8ca8 i \u3092\u9078\u629e\u3059\u308b\u5834\u5408\u306e\u3088\u308a\u5c0f\u3055\u3044\u5024\n dp[a] = min(dp[a], dp[a - coins[i - 1]] + 1);\n }\n }\n }\n return dp[amt] != MAX ? dp[amt] : -1;\n}\n</code></pre> coin_change.java<pre><code>/* \u786c\u8ca8\u4e21\u66ff\uff1a\u7a7a\u9593\u6700\u9069\u5316\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint coinChangeDPComp(int[] coins, int amt) {\n int n = coins.length;\n int MAX = amt + 1;\n // DP\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n int[] dp = new int[amt + 1];\n Arrays.fill(dp, MAX);\n dp[0] = 0;\n // \u72b6\u614b\u9077\u79fb\n for (int i = 1; i &lt;= n; i++) {\n for (int a = 1; a &lt;= amt; a++) {\n if (coins[i - 1] &gt; a) {\n // \u76ee\u6a19\u91d1\u984d\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u786c\u8ca8 i \u3092\u9078\u629e\u3057\u306a\u3044\n dp[a] = dp[a];\n } else {\n // \u9078\u629e\u3057\u306a\u3044\u5834\u5408\u3068\u786c\u8ca8 i \u3092\u9078\u629e\u3059\u308b\u5834\u5408\u306e\u3088\u308a\u5c0f\u3055\u3044\u5024\n dp[a] = Math.min(dp[a], dp[a - coins[i - 1]] + 1);\n }\n }\n }\n return dp[amt] != MAX ? dp[amt] : -1;\n}\n</code></pre> coin_change.cs<pre><code>[class]{coin_change}-[func]{CoinChangeDPComp}\n</code></pre> coin_change.go<pre><code>[class]{}-[func]{coinChangeDPComp}\n</code></pre> coin_change.swift<pre><code>[class]{}-[func]{coinChangeDPComp}\n</code></pre> coin_change.js<pre><code>[class]{}-[func]{coinChangeDPComp}\n</code></pre> coin_change.ts<pre><code>[class]{}-[func]{coinChangeDPComp}\n</code></pre> coin_change.dart<pre><code>[class]{}-[func]{coinChangeDPComp}\n</code></pre> coin_change.rs<pre><code>[class]{}-[func]{coin_change_dp_comp}\n</code></pre> coin_change.c<pre><code>[class]{}-[func]{coinChangeDPComp}\n</code></pre> coin_change.kt<pre><code>[class]{}-[func]{coinChangeDPComp}\n</code></pre> coin_change.rb<pre><code>[class]{}-[func]{coin_change_dp_comp}\n</code></pre>"},{"location":"chapter_dynamic_programming/unbounded_knapsack_problem/#1453-ii","title":"14.5.3 \u00a0 \u30b3\u30a4\u30f3\u4ea4\u63db\u554f\u984cII","text":"<p>Question</p> <p>\\(n\\) \u7a2e\u985e\u306e\u30b3\u30a4\u30f3\u304c\u4e0e\u3048\u3089\u308c\u3001\\(i\\) \u756a\u76ee\u306e\u7a2e\u985e\u306e\u30b3\u30a4\u30f3\u306e\u984d\u9762\u306f \\(coins[i - 1]\\) \u3067\u3001\u76ee\u6a19\u91d1\u984d\u306f \\(amt\\) \u3067\u3059\u3002\u5404\u7a2e\u985e\u306e\u30b3\u30a4\u30f3\u306f\u8907\u6570\u56de\u9078\u629e\u3067\u304d\u3001\u76ee\u6a19\u91d1\u984d\u3092\u69cb\u6210\u3067\u304d\u308b\u30b3\u30a4\u30f3\u306e\u7d44\u307f\u5408\u308f\u305b\u306f\u4f55\u901a\u308a\u3042\u308a\u307e\u3059\u304b\u3002\u4ee5\u4e0b\u306e\u4f8b\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <p></p> <p> \u56f3 14-26 \u00a0 \u30b3\u30a4\u30f3\u4ea4\u63db\u554f\u984cII\u306e\u4f8b\u30c7\u30fc\u30bf </p>"},{"location":"chapter_dynamic_programming/unbounded_knapsack_problem/#1_2","title":"1. \u00a0 \u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30a2\u30d7\u30ed\u30fc\u30c1","text":"<p>\u524d\u306e\u554f\u984c\u3068\u6bd4\u8f03\u3057\u3066\u3001\u3053\u306e\u554f\u984c\u306e\u76ee\u6a19\u306f\u7d44\u307f\u5408\u308f\u305b\u306e\u6570\u3092\u6c7a\u5b9a\u3059\u308b\u3053\u3068\u3067\u3042\u308b\u305f\u3081\u3001\u90e8\u5206\u554f\u984c\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\uff1a\u6700\u521d\u306e \\(i\\) \u7a2e\u985e\u306e\u30b3\u30a4\u30f3\u3092\u4f7f\u7528\u3057\u3066\u91d1\u984d \\(a\\) \u3092\u69cb\u6210\u3067\u304d\u308b\u7d44\u307f\u5408\u308f\u305b\u306e\u6570\u3002\\(dp\\) \u30c6\u30fc\u30d6\u30eb\u306f\u30b5\u30a4\u30ba \\((n+1) \\times (amt + 1)\\) \u306e\u4e8c\u6b21\u5143\u884c\u5217\u306e\u307e\u307e\u6b8b\u308a\u307e\u3059\u3002</p> <p>\u73fe\u5728\u306e\u72b6\u614b\u306e\u7d44\u307f\u5408\u308f\u305b\u6570\u306f\u3001\u73fe\u5728\u306e\u30b3\u30a4\u30f3\u3092\u9078\u629e\u3057\u306a\u3044\u7d44\u307f\u5408\u308f\u305b\u3068\u73fe\u5728\u306e\u30b3\u30a4\u30f3\u3092\u9078\u629e\u3059\u308b\u7d44\u307f\u5408\u308f\u305b\u306e\u5408\u8a08\u3067\u3059\u3002\u72b6\u614b\u9077\u79fb\u65b9\u7a0b\u5f0f\u306f\uff1a</p> \\[ dp[i, a] = dp[i-1, a] + dp[i, a - coins[i-1]] \\] <p>\u76ee\u6a19\u91d1\u984d\u304c \\(0\\) \u306e\u5834\u5408\u3001\u76ee\u6a19\u91d1\u984d\u3092\u69cb\u6210\u3059\u308b\u306e\u306b\u30b3\u30a4\u30f3\u306f\u5fc5\u8981\u306a\u3044\u305f\u3081\u3001\u6700\u521d\u306e\u5217\u306e\u3059\u3079\u3066\u306e \\(dp[i, 0]\\) \u306f \\(1\\) \u306b\u521d\u671f\u5316\u3055\u308c\u308b\u3079\u304d\u3067\u3059\u3002\u30b3\u30a4\u30f3\u304c\u306a\u3044\u5834\u5408\u3001\u4efb\u610f\u306e\u91d1\u984d &gt;0 \u3092\u69cb\u6210\u3059\u308b\u3053\u3068\u306f\u4e0d\u53ef\u80fd\u3067\u3042\u308b\u305f\u3081\u3001\u6700\u521d\u306e\u884c\u306e\u3059\u3079\u3066\u306e \\(dp[0, a]\\) \u306f \\(0\\) \u306b\u8a2d\u5b9a\u3055\u308c\u308b\u3079\u304d\u3067\u3059\u3002</p>"},{"location":"chapter_dynamic_programming/unbounded_knapsack_problem/#2_2","title":"2. \u00a0 \u30b3\u30fc\u30c9\u5b9f\u88c5","text":"PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby coin_change_ii.py<pre><code>def coin_change_ii_dp(coins: list[int], amt: int) -&gt; int:\n \"\"\"\u786c\u8ca8\u4ea4\u63db II\uff1a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\"\"\"\n n = len(coins)\n # dp \u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n dp = [[0] * (amt + 1) for _ in range(n + 1)]\n # \u6700\u521d\u306e\u5217\u3092\u521d\u671f\u5316\n for i in range(n + 1):\n dp[i][0] = 1\n # \u72b6\u614b\u9077\u79fb\n for i in range(1, n + 1):\n for a in range(1, amt + 1):\n if coins[i - 1] &gt; a:\n # \u76ee\u6a19\u91d1\u984d\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u786c\u8ca8 i \u3092\u9078\u629e\u3057\u306a\u3044\n dp[i][a] = dp[i - 1][a]\n else:\n # \u786c\u8ca8 i \u3092\u9078\u629e\u3057\u306a\u3044\u306e\u3068\u9078\u629e\u3059\u308b\u306e\u3068\u306e\u4e21\u65b9\u306e\u9078\u629e\u80a2\u306e\u548c\n dp[i][a] = dp[i - 1][a] + dp[i][a - coins[i - 1]]\n return dp[n][amt]\n</code></pre> coin_change_ii.cpp<pre><code>/* \u786c\u8ca8\u4e21\u66ff II\uff1a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint coinChangeIIDP(vector&lt;int&gt; &amp;coins, int amt) {\n int n = coins.size();\n // DP\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n vector&lt;vector&lt;int&gt;&gt; dp(n + 1, vector&lt;int&gt;(amt + 1, 0));\n // \u6700\u521d\u306e\u5217\u3092\u521d\u671f\u5316\n for (int i = 0; i &lt;= n; i++) {\n dp[i][0] = 1;\n }\n // \u72b6\u614b\u9077\u79fb\n for (int i = 1; i &lt;= n; i++) {\n for (int a = 1; a &lt;= amt; a++) {\n if (coins[i - 1] &gt; a) {\n // \u76ee\u6a19\u91d1\u984d\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u786c\u8ca8 i \u3092\u9078\u629e\u3057\u306a\u3044\n dp[i][a] = dp[i - 1][a];\n } else {\n // \u9078\u629e\u3057\u306a\u3044\u5834\u5408\u3068\u786c\u8ca8 i \u3092\u9078\u629e\u3059\u308b\u5834\u5408\u306e2\u3064\u306e\u9078\u629e\u80a2\u306e\u5408\u8a08\n dp[i][a] = dp[i - 1][a] + dp[i][a - coins[i - 1]];\n }\n }\n }\n return dp[n][amt];\n}\n</code></pre> coin_change_ii.java<pre><code>/* \u786c\u8ca8\u4e21\u66ff II\uff1a\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint coinChangeIIDP(int[] coins, int amt) {\n int n = coins.length;\n // DP\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n int[][] dp = new int[n + 1][amt + 1];\n // \u6700\u521d\u306e\u5217\u3092\u521d\u671f\u5316\n for (int i = 0; i &lt;= n; i++) {\n dp[i][0] = 1;\n }\n // \u72b6\u614b\u9077\u79fb\n for (int i = 1; i &lt;= n; i++) {\n for (int a = 1; a &lt;= amt; a++) {\n if (coins[i - 1] &gt; a) {\n // \u76ee\u6a19\u91d1\u984d\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u786c\u8ca8 i \u3092\u9078\u629e\u3057\u306a\u3044\n dp[i][a] = dp[i - 1][a];\n } else {\n // \u9078\u629e\u3057\u306a\u3044\u5834\u5408\u3068\u786c\u8ca8 i \u3092\u9078\u629e\u3059\u308b\u5834\u5408\u306e2\u3064\u306e\u9078\u629e\u80a2\u306e\u5408\u8a08\n dp[i][a] = dp[i - 1][a] + dp[i][a - coins[i - 1]];\n }\n }\n }\n return dp[n][amt];\n}\n</code></pre> coin_change_ii.cs<pre><code>[class]{coin_change_ii}-[func]{CoinChangeIIDP}\n</code></pre> coin_change_ii.go<pre><code>[class]{}-[func]{coinChangeIIDP}\n</code></pre> coin_change_ii.swift<pre><code>[class]{}-[func]{coinChangeIIDP}\n</code></pre> coin_change_ii.js<pre><code>[class]{}-[func]{coinChangeIIDP}\n</code></pre> coin_change_ii.ts<pre><code>[class]{}-[func]{coinChangeIIDP}\n</code></pre> coin_change_ii.dart<pre><code>[class]{}-[func]{coinChangeIIDP}\n</code></pre> coin_change_ii.rs<pre><code>[class]{}-[func]{coin_change_ii_dp}\n</code></pre> coin_change_ii.c<pre><code>[class]{}-[func]{coinChangeIIDP}\n</code></pre> coin_change_ii.kt<pre><code>[class]{}-[func]{coinChangeIIDP}\n</code></pre> coin_change_ii.rb<pre><code>[class]{}-[func]{coin_change_ii_dp}\n</code></pre>"},{"location":"chapter_dynamic_programming/unbounded_knapsack_problem/#3_2","title":"3. \u00a0 \u7a7a\u9593\u6700\u9069\u5316","text":"<p>\u7a7a\u9593\u6700\u9069\u5316\u30a2\u30d7\u30ed\u30fc\u30c1\u306f\u540c\u3058\u3067\u3001\u30b3\u30a4\u30f3\u306e\u6b21\u5143\u3092\u524a\u9664\u3059\u308b\u3060\u3051\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby coin_change_ii.py<pre><code>def coin_change_ii_dp_comp(coins: list[int], amt: int) -&gt; int:\n \"\"\"\u786c\u8ca8\u4ea4\u63db II\uff1a\u7a7a\u9593\u6700\u9069\u5316\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\"\"\"\n n = len(coins)\n # dp \u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n dp = [0] * (amt + 1)\n dp[0] = 1\n # \u72b6\u614b\u9077\u79fb\n for i in range(1, n + 1):\n # \u9806\u5e8f\u3067\u8d70\u67fb\n for a in range(1, amt + 1):\n if coins[i - 1] &gt; a:\n # \u76ee\u6a19\u91d1\u984d\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u786c\u8ca8 i \u3092\u9078\u629e\u3057\u306a\u3044\n dp[a] = dp[a]\n else:\n # \u786c\u8ca8 i \u3092\u9078\u629e\u3057\u306a\u3044\u306e\u3068\u9078\u629e\u3059\u308b\u306e\u3068\u306e\u4e21\u65b9\u306e\u9078\u629e\u80a2\u306e\u548c\n dp[a] = dp[a] + dp[a - coins[i - 1]]\n return dp[amt]\n</code></pre> coin_change_ii.cpp<pre><code>/* \u786c\u8ca8\u4e21\u66ff II\uff1a\u7a7a\u9593\u6700\u9069\u5316\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint coinChangeIIDPComp(vector&lt;int&gt; &amp;coins, int amt) {\n int n = coins.size();\n // DP\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n vector&lt;int&gt; dp(amt + 1, 0);\n dp[0] = 1;\n // \u72b6\u614b\u9077\u79fb\n for (int i = 1; i &lt;= n; i++) {\n for (int a = 1; a &lt;= amt; a++) {\n if (coins[i - 1] &gt; a) {\n // \u76ee\u6a19\u91d1\u984d\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u786c\u8ca8 i \u3092\u9078\u629e\u3057\u306a\u3044\n dp[a] = dp[a];\n } else {\n // \u9078\u629e\u3057\u306a\u3044\u5834\u5408\u3068\u786c\u8ca8 i \u3092\u9078\u629e\u3059\u308b\u5834\u5408\u306e2\u3064\u306e\u9078\u629e\u80a2\u306e\u5408\u8a08\n dp[a] = dp[a] + dp[a - coins[i - 1]];\n }\n }\n }\n return dp[amt];\n}\n</code></pre> coin_change_ii.java<pre><code>/* \u786c\u8ca8\u4e21\u66ff II\uff1a\u7a7a\u9593\u6700\u9069\u5316\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 */\nint coinChangeIIDPComp(int[] coins, int amt) {\n int n = coins.length;\n // DP\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n int[] dp = new int[amt + 1];\n dp[0] = 1;\n // \u72b6\u614b\u9077\u79fb\n for (int i = 1; i &lt;= n; i++) {\n for (int a = 1; a &lt;= amt; a++) {\n if (coins[i - 1] &gt; a) {\n // \u76ee\u6a19\u91d1\u984d\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u786c\u8ca8 i \u3092\u9078\u629e\u3057\u306a\u3044\n dp[a] = dp[a];\n } else {\n // \u9078\u629e\u3057\u306a\u3044\u5834\u5408\u3068\u786c\u8ca8 i \u3092\u9078\u629e\u3059\u308b\u5834\u5408\u306e2\u3064\u306e\u9078\u629e\u80a2\u306e\u5408\u8a08\n dp[a] = dp[a] + dp[a - coins[i - 1]];\n }\n }\n }\n return dp[amt];\n}\n</code></pre> coin_change_ii.cs<pre><code>[class]{coin_change_ii}-[func]{CoinChangeIIDPComp}\n</code></pre> coin_change_ii.go<pre><code>[class]{}-[func]{coinChangeIIDPComp}\n</code></pre> coin_change_ii.swift<pre><code>[class]{}-[func]{coinChangeIIDPComp}\n</code></pre> coin_change_ii.js<pre><code>[class]{}-[func]{coinChangeIIDPComp}\n</code></pre> coin_change_ii.ts<pre><code>[class]{}-[func]{coinChangeIIDPComp}\n</code></pre> coin_change_ii.dart<pre><code>[class]{}-[func]{coinChangeIIDPComp}\n</code></pre> coin_change_ii.rs<pre><code>[class]{}-[func]{coin_change_ii_dp_comp}\n</code></pre> coin_change_ii.c<pre><code>[class]{}-[func]{coinChangeIIDPComp}\n</code></pre> coin_change_ii.kt<pre><code>[class]{}-[func]{coinChangeIIDPComp}\n</code></pre> coin_change_ii.rb<pre><code>[class]{}-[func]{coin_change_ii_dp_comp}\n</code></pre>"},{"location":"chapter_graph/","title":"\u7b2c 9 \u7ae0 \u00a0 \u30b0\u30e9\u30d5","text":"<p>Abstract</p> <p>\u4eba\u751f\u306e\u65c5\u8def\u306b\u304a\u3044\u3066\u3001\u79c1\u305f\u3061\u306e\u4e00\u4eba\u4e00\u4eba\u306f\u30ce\u30fc\u30c9\u3067\u3042\u308a\u3001\u7121\u6570\u306e\u898b\u3048\u306a\u3044\u8fba\u3067\u7d50\u3070\u308c\u3066\u3044\u307e\u3059\u3002</p> <p>\u4e00\u3064\u4e00\u3064\u306e\u51fa\u4f1a\u3044\u3068\u5225\u308c\u304c\u3001\u3053\u306e\u5e83\u5927\u306a\u4eba\u751f\u306e\u30b0\u30e9\u30d5\u306b\u72ec\u7279\u306e\u5370\u3092\u6b8b\u3057\u3066\u3044\u304d\u307e\u3059\u3002</p>"},{"location":"chapter_graph/#_1","title":"\u7ae0\u306e\u5185\u5bb9","text":"<ul> <li>9.1 \u00a0 \u30b0\u30e9\u30d5</li> <li>9.2 \u00a0 \u30b0\u30e9\u30d5\u306e\u57fa\u672c\u64cd\u4f5c</li> <li>9.3 \u00a0 \u30b0\u30e9\u30d5\u306e\u8d70\u67fb</li> <li>9.4 \u00a0 \u307e\u3068\u3081</li> </ul>"},{"location":"chapter_graph/graph/","title":"9.1 \u00a0 \u30b0\u30e9\u30d5","text":"<p>\u30b0\u30e9\u30d5\u306f\u975e\u7dda\u5f62\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u4e00\u7a2e\u3067\u3001\u9802\u70b9\u3068\u8fba\u3067\u69cb\u6210\u3055\u308c\u307e\u3059\u3002\u30b0\u30e9\u30d5\\(G\\)\u306f\u3001\u9802\u70b9\u306e\u96c6\u5408\\(V\\)\u3068\u8fba\u306e\u96c6\u5408\\(E\\)\u306e\u7d44\u307f\u5408\u308f\u305b\u3068\u3057\u3066\u62bd\u8c61\u7684\u306b\u8868\u73fe\u3067\u304d\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u4f8b\u306f\u30015\u3064\u306e\u9802\u70b9\u30687\u3064\u306e\u8fba\u3092\u542b\u3080\u30b0\u30e9\u30d5\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002</p> \\[ \\begin{aligned} V &amp; = \\{ 1, 2, 3, 4, 5 \\} \\newline E &amp; = \\{ (1,2), (1,3), (1,5), (2,3), (2,4), (2,5), (4,5) \\} \\newline G &amp; = \\{ V, E \\} \\newline \\end{aligned} \\] <p>\u9802\u70b9\u3092\u30ce\u30fc\u30c9\u3001\u8fba\u3092\u30ce\u30fc\u30c9\u3092\u63a5\u7d9a\u3059\u308b\u53c2\u7167\uff08\u30dd\u30a4\u30f3\u30bf\uff09\u3068\u898b\u306a\u3059\u3068\u3001\u30b0\u30e9\u30d5\u306f\u9023\u7d50\u30ea\u30b9\u30c8\u304b\u3089\u62e1\u5f35\u3055\u308c\u305f\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u3057\u3066\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u7dda\u5f62\u95a2\u4fc2\uff08\u9023\u7d50\u30ea\u30b9\u30c8\uff09\u3084\u5206\u5272\u7d71\u6cbb\u95a2\u4fc2\uff08\u6728\uff09\u3068\u6bd4\u8f03\u3057\u3066\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u95a2\u4fc2\uff08\u30b0\u30e9\u30d5\uff09\u306f\u81ea\u7531\u5ea6\u304c\u9ad8\u3044\u305f\u3081\u3001\u3088\u308a\u8907\u96d1\u3067\u3059\u3002</p> <p></p> <p> \u56f3 9-1 \u00a0 \u9023\u7d50\u30ea\u30b9\u30c8\u3001\u6728\u3001\u30b0\u30e9\u30d5\u306e\u95a2\u4fc2 </p>"},{"location":"chapter_graph/graph/#911","title":"9.1.1 \u00a0 \u30b0\u30e9\u30d5\u306e\u4e00\u822c\u7684\u306a\u7a2e\u985e\u3068\u7528\u8a9e","text":"<p>\u30b0\u30e9\u30d5\u306f\u3001\u8fba\u306b\u65b9\u5411\u304c\u3042\u308b\u304b\u3069\u3046\u304b\u306b\u3088\u3063\u3066\u7121\u5411\u30b0\u30e9\u30d5\u3068\u6709\u5411\u30b0\u30e9\u30d5\u306b\u5206\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff08\u4e0b\u56f3\u53c2\u7167\uff09\u3002</p> <ul> <li>\u7121\u5411\u30b0\u30e9\u30d5\u3067\u306f\u3001\u8fba\u306f2\u3064\u306e\u9802\u70b9\u9593\u306e\u300c\u53cc\u65b9\u5411\u300d\u63a5\u7d9a\u3092\u8868\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001Facebook\u306e\u300c\u53cb\u9054\u300d\u95a2\u4fc2\u3067\u3059\u3002</li> <li>\u6709\u5411\u30b0\u30e9\u30d5\u3067\u306f\u3001\u8fba\u306b\u65b9\u5411\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3064\u307e\u308a\u3001\u8fba\\(A \\rightarrow B\\)\u3068\\(A \\leftarrow B\\)\u306f\u4e92\u3044\u306b\u72ec\u7acb\u3057\u3066\u3044\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001Instagram\u3084TikTok\u306e\u300c\u30d5\u30a9\u30ed\u30fc\u300d\u3068\u300c\u30d5\u30a9\u30ed\u30ef\u30fc\u300d\u306e\u95a2\u4fc2\u3067\u3059\u3002</li> </ul> <p></p> <p> \u56f3 9-2 \u00a0 \u6709\u5411\u30b0\u30e9\u30d5\u3068\u7121\u5411\u30b0\u30e9\u30d5 </p> <p>\u3059\u3079\u3066\u306e\u9802\u70b9\u304c\u63a5\u7d9a\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u306b\u3088\u3063\u3066\u3001\u30b0\u30e9\u30d5\u306f\u9023\u7d50\u30b0\u30e9\u30d5\u3068\u975e\u9023\u7d50\u30b0\u30e9\u30d5\u306b\u5206\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff08\u4e0b\u56f3\u53c2\u7167\uff09\u3002</p> <ul> <li>\u9023\u7d50\u30b0\u30e9\u30d5\u3067\u306f\u3001\u4efb\u610f\u306e\u9802\u70b9\u304b\u3089\u958b\u59cb\u3057\u3066\u4ed6\u306e\u4efb\u610f\u306e\u9802\u70b9\u306b\u5230\u9054\u3059\u308b\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002</li> <li>\u975e\u9023\u7d50\u30b0\u30e9\u30d5\u3067\u306f\u3001\u4efb\u610f\u306e\u958b\u59cb\u9802\u70b9\u304b\u3089\u5230\u9054\u3067\u304d\u306a\u3044\u9802\u70b9\u304c\u5c11\u306a\u304f\u3068\u30821\u3064\u5b58\u5728\u3057\u307e\u3059\u3002</li> </ul> <p></p> <p> \u56f3 9-3 \u00a0 \u9023\u7d50\u30b0\u30e9\u30d5\u3068\u975e\u9023\u7d50\u30b0\u30e9\u30d5 </p> <p>\u8fba\u306b\u91cd\u307f\u5909\u6570\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u3001\u305d\u306e\u7d50\u679c\u3068\u3057\u3066\u91cd\u307f\u4ed8\u304d\u30b0\u30e9\u30d5\u304c\u751f\u307e\u308c\u307e\u3059\uff08\u4e0b\u56f3\u53c2\u7167\uff09\u3002\u4f8b\u3048\u3070\u3001Instagram\u3067\u306f\u3001\u30b7\u30b9\u30c6\u30e0\u304c\u3042\u306a\u305f\u3068\u4ed6\u306e\u30e6\u30fc\u30b6\u30fc\u3068\u306e\u9593\u306e\u76f8\u4e92\u4f5c\u7528\u30ec\u30d9\u30eb\uff08\u3044\u3044\u306d\u3001\u95b2\u89a7\u3001\u30b3\u30e1\u30f3\u30c8\u306a\u3069\uff09\u306b\u3088\u3063\u3066\u30d5\u30a9\u30ed\u30ef\u30fc\u3068\u30d5\u30a9\u30ed\u30fc\u4e2d\u306e\u30ea\u30b9\u30c8\u3092\u30bd\u30fc\u30c8\u3057\u307e\u3059\u3002\u3053\u306e\u3088\u3046\u306a\u76f8\u4e92\u4f5c\u7528\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306f\u91cd\u307f\u4ed8\u304d\u30b0\u30e9\u30d5\u3067\u8868\u73fe\u3067\u304d\u307e\u3059\u3002</p> <p></p> <p> \u56f3 9-4 \u00a0 \u91cd\u307f\u4ed8\u304d\u30b0\u30e9\u30d5\u3068\u91cd\u307f\u306a\u3057\u30b0\u30e9\u30d5 </p> <p>\u30b0\u30e9\u30d5\u30c7\u30fc\u30bf\u69cb\u9020\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u7528\u8a9e\u304c\u3042\u308a\u307e\u3059\u3002</p> <ul> <li>\u96a3\u63a5\uff1a2\u3064\u306e\u9802\u70b9\u3092\u63a5\u7d9a\u3059\u308b\u8fba\u304c\u3042\u308b\u5834\u5408\u3001\u3053\u308c\u30892\u3064\u306e\u9802\u70b9\u306f\u300c\u96a3\u63a5\u300d\u3057\u3066\u3044\u308b\u3068\u8a00\u308f\u308c\u307e\u3059\u3002\u4e0a\u56f3\u3067\u306f\u3001\u9802\u70b91\u306e\u96a3\u63a5\u9802\u70b9\u306f\u9802\u70b92\u30013\u30015\u3067\u3059\u3002</li> <li>\u30d1\u30b9\uff1a\u9802\u70b9A\u304b\u3089\u9802\u70b9B\u307e\u3067\u306b\u901a\u904e\u3059\u308b\u8fba\u306e\u30b7\u30fc\u30b1\u30f3\u30b9\u3092\u3001A\u304b\u3089B\u3078\u306e\u30d1\u30b9\u3068\u547c\u3073\u307e\u3059\u3002\u4e0a\u56f3\u3067\u306f\u3001\u8fba\u306e\u30b7\u30fc\u30b1\u30f3\u30b91-5-2-4\u306f\u9802\u70b91\u304b\u3089\u9802\u70b94\u3078\u306e\u30d1\u30b9\u3067\u3059\u3002</li> <li>\u6b21\u6570\uff1a\u9802\u70b9\u304c\u6301\u3064\u8fba\u306e\u6570\u3067\u3059\u3002\u6709\u5411\u30b0\u30e9\u30d5\u306e\u5834\u5408\u3001\u5165\u6b21\u6570\u306f\u305d\u306e\u9802\u70b9\u3092\u6307\u3059\u8fba\u306e\u6570\u3001\u51fa\u6b21\u6570\u306f\u305d\u306e\u9802\u70b9\u304b\u3089\u51fa\u308b\u8fba\u306e\u6570\u3092\u6307\u3057\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_graph/graph/#912","title":"9.1.2 \u00a0 \u30b0\u30e9\u30d5\u306e\u8868\u73fe","text":"<p>\u30b0\u30e9\u30d5\u306e\u4e00\u822c\u7684\u306a\u8868\u73fe\u306b\u306f\u300c\u96a3\u63a5\u884c\u5217\u300d\u3068\u300c\u96a3\u63a5\u30ea\u30b9\u30c8\u300d\u304c\u3042\u308a\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u4f8b\u3067\u306f\u7121\u5411\u30b0\u30e9\u30d5\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_graph/graph/#1","title":"1. \u00a0 \u96a3\u63a5\u884c\u5217","text":"<p>\u30b0\u30e9\u30d5\u306e\u9802\u70b9\u6570\u3092\\(n\\)\u3068\u3059\u308b\u3068\u3001\u96a3\u63a5\u884c\u5217\u306f\\(n \\times n\\)\u306e\u884c\u5217\u3092\u4f7f\u7528\u3057\u3066\u30b0\u30e9\u30d5\u3092\u8868\u73fe\u3057\u307e\u3059\u3002\u5404\u884c\uff08\u5217\uff09\u306f\u9802\u70b9\u3092\u8868\u3057\u3001\u884c\u5217\u8981\u7d20\u306f\u8fba\u3092\u8868\u3057\u30012\u3064\u306e\u9802\u70b9\u9593\u306b\u8fba\u304c\u3042\u308b\u304b\u3069\u3046\u304b\u3092\\(1\\)\u307e\u305f\u306f\\(0\\)\u3067\u793a\u3057\u307e\u3059\u3002</p> <p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u96a3\u63a5\u884c\u5217\u3092\\(M\\)\u3001\u9802\u70b9\u306e\u30ea\u30b9\u30c8\u3092\\(V\\)\u3068\u3059\u308b\u3068\u3001\u884c\u5217\u8981\u7d20\\(M[i, j] = 1\\)\u306f\u9802\u70b9\\(V[i]\\)\u3068\u9802\u70b9\\(V[j]\\)\u306e\u9593\u306b\u8fba\u304c\u3042\u308b\u3053\u3068\u3092\u793a\u3057\u3001\u9006\u306b\\(M[i, j] = 0\\)\u306f2\u3064\u306e\u9802\u70b9\u9593\u306b\u8fba\u304c\u306a\u3044\u3053\u3068\u3092\u793a\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 9-5 \u00a0 \u96a3\u63a5\u884c\u5217\u306b\u3088\u308b\u30b0\u30e9\u30d5\u306e\u8868\u73fe </p> <p>\u96a3\u63a5\u884c\u5217\u306b\u306f\u4ee5\u4e0b\u306e\u7279\u6027\u304c\u3042\u308a\u307e\u3059\u3002</p> <ul> <li>\u9802\u70b9\u306f\u81ea\u5206\u81ea\u8eab\u306b\u63a5\u7d9a\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u306a\u3044\u305f\u3081\u3001\u96a3\u63a5\u884c\u5217\u306e\u4e3b\u5bfe\u89d2\u7dda\u4e0a\u306e\u8981\u7d20\u306f\u610f\u5473\u304c\u3042\u308a\u307e\u305b\u3093\u3002</li> <li>\u7121\u5411\u30b0\u30e9\u30d5\u306e\u5834\u5408\u3001\u4e21\u65b9\u5411\u306e\u8fba\u306f\u7b49\u4fa1\u3067\u3042\u308b\u305f\u3081\u3001\u96a3\u63a5\u884c\u5217\u306f\u4e3b\u5bfe\u89d2\u7dda\u306b\u95a2\u3057\u3066\u5bfe\u79f0\u3067\u3059\u3002</li> <li>\u96a3\u63a5\u884c\u5217\u306e\u8981\u7d20\u3092\\(1\\)\u3068\\(0\\)\u304b\u3089\u91cd\u307f\u306b\u7f6e\u304d\u63db\u3048\u308b\u3053\u3068\u3067\u3001\u91cd\u307f\u4ed8\u304d\u30b0\u30e9\u30d5\u3092\u8868\u73fe\u3067\u304d\u307e\u3059\u3002</li> </ul> <p>\u96a3\u63a5\u884c\u5217\u3067\u30b0\u30e9\u30d5\u3092\u8868\u73fe\u3059\u308b\u5834\u5408\u3001\u884c\u5217\u8981\u7d20\u306b\u76f4\u63a5\u30a2\u30af\u30bb\u30b9\u3057\u3066\u8fba\u3092\u53d6\u5f97\u3067\u304d\u308b\u305f\u3081\u3001\u8ffd\u52a0\u3001\u524a\u9664\u3001\u691c\u7d22\u3001\u5909\u66f4\u306e\u64cd\u4f5c\u304c\u52b9\u7387\u7684\u3067\u3001\u3059\u3079\u3066\u6642\u9593\u8a08\u7b97\u91cf\\(O(1)\\)\u3067\u3059\u3002\u305f\u3060\u3057\u3001\u884c\u5217\u306e\u7a7a\u9593\u8a08\u7b97\u91cf\u306f\\(O(n^2)\\)\u3067\u3001\u3088\u308a\u591a\u304f\u306e\u30e1\u30e2\u30ea\u3092\u6d88\u8cbb\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_graph/graph/#2","title":"2. \u00a0 \u96a3\u63a5\u30ea\u30b9\u30c8","text":"<p>\u96a3\u63a5\u30ea\u30b9\u30c8\u306f\\(n\\)\u500b\u306e\u9023\u7d50\u30ea\u30b9\u30c8\u3092\u4f7f\u7528\u3057\u3066\u30b0\u30e9\u30d5\u3092\u8868\u73fe\u3057\u3001\u5404\u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9\u306f\u9802\u70b9\u3092\u8868\u3057\u307e\u3059\u3002\\(i\\)\u756a\u76ee\u306e\u9023\u7d50\u30ea\u30b9\u30c8\u306f\u9802\u70b9\\(i\\)\u306b\u5bfe\u5fdc\u3057\u3001\u3059\u3079\u3066\u306e\u96a3\u63a5\u9802\u70b9\uff08\u305d\u306e\u9802\u70b9\u306b\u63a5\u7d9a\u3055\u308c\u305f\u9802\u70b9\uff09\u3092\u542b\u307f\u307e\u3059\u3002\u4e0b\u56f3\u306f\u96a3\u63a5\u30ea\u30b9\u30c8\u3092\u4f7f\u7528\u3057\u3066\u683c\u7d0d\u3055\u308c\u305f\u30b0\u30e9\u30d5\u306e\u4f8b\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002</p> <p></p> <p> \u56f3 9-6 \u00a0 \u96a3\u63a5\u30ea\u30b9\u30c8\u306b\u3088\u308b\u30b0\u30e9\u30d5\u306e\u8868\u73fe </p> <p>\u96a3\u63a5\u30ea\u30b9\u30c8\u306f\u5b9f\u969b\u306e\u8fba\u306e\u307f\u3092\u683c\u7d0d\u3057\u3001\u8fba\u306e\u7dcf\u6570\u306f\\(n^2\\)\u3088\u308a\u3082\u306f\u308b\u304b\u306b\u5c11\u306a\u3044\u3053\u3068\u304c\u591a\u304f\u3001\u3088\u308a\u7a7a\u9593\u52b9\u7387\u7684\u3067\u3059\u3002\u305f\u3060\u3057\u3001\u96a3\u63a5\u30ea\u30b9\u30c8\u3067\u8fba\u3092\u898b\u3064\u3051\u308b\u306b\u306f\u9023\u7d50\u30ea\u30b9\u30c8\u3092\u8d70\u67fb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u305f\u3081\u3001\u305d\u306e\u6642\u9593\u52b9\u7387\u306f\u96a3\u63a5\u884c\u5217\u307b\u3069\u826f\u304f\u3042\u308a\u307e\u305b\u3093\u3002</p> <p>\u4e0a\u56f3\u3092\u89b3\u5bdf\u3059\u308b\u3068\u3001\u96a3\u63a5\u30ea\u30b9\u30c8\u306e\u69cb\u9020\u306f\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u306e\u300c\u30c1\u30a7\u30a4\u30f3\u6cd5\u300d\u3068\u975e\u5e38\u306b\u4f3c\u3066\u3044\u308b\u305f\u3081\u3001\u540c\u69d8\u306e\u65b9\u6cd5\u3092\u4f7f\u7528\u3057\u3066\u52b9\u7387\u3092\u6700\u9069\u5316\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u304c\u9577\u3044\u5834\u5408\u3001\u305d\u308c\u3092AVL\u6728\u3084\u8d64\u9ed2\u6728\u306b\u5909\u63db\u3057\u3066\u3001\u6642\u9593\u52b9\u7387\u3092\\(O(n)\\)\u304b\u3089\\(O(\\log n)\\)\u306b\u6700\u9069\u5316\u3067\u304d\u307e\u3059\u3002\u9023\u7d50\u30ea\u30b9\u30c8\u3092\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u306b\u5909\u63db\u3059\u308b\u3053\u3068\u3067\u3001\u6642\u9593\u8a08\u7b97\u91cf\u3092\\(O(1)\\)\u306b\u524a\u6e1b\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002</p>"},{"location":"chapter_graph/graph/#913","title":"9.1.3 \u00a0 \u30b0\u30e9\u30d5\u306e\u4e00\u822c\u7684\u306a\u5fdc\u7528","text":"<p>\u4e0b\u8868\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u591a\u304f\u306e\u73fe\u5b9f\u4e16\u754c\u306e\u30b7\u30b9\u30c6\u30e0\u306f\u30b0\u30e9\u30d5\u3067\u30e2\u30c7\u30eb\u5316\u3067\u304d\u3001\u5bfe\u5fdc\u3059\u308b\u554f\u984c\u306f\u30b0\u30e9\u30d5\u8a08\u7b97\u554f\u984c\u306b\u524a\u6e1b\u3067\u304d\u307e\u3059\u3002</p> <p> \u8868 9-1 \u00a0 \u73fe\u5b9f\u751f\u6d3b\u306e\u4e00\u822c\u7684\u306a\u30b0\u30e9\u30d5 </p> \u9802\u70b9 \u8fba \u30b0\u30e9\u30d5\u8a08\u7b97\u554f\u984c \u30bd\u30fc\u30b7\u30e3\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e6\u30fc\u30b6\u30fc \u30d5\u30a9\u30ed\u30fc / \u30d5\u30a9\u30ed\u30ef\u30fc\u95a2\u4fc2 \u6f5c\u5728\u7684\u30d5\u30a9\u30ed\u30fc\u63a8\u85a6 \u5730\u4e0b\u9244\u8def\u7dda \u99c5 \u99c5\u9593\u306e\u63a5\u7d9a\u6027 \u6700\u77ed\u30eb\u30fc\u30c8\u63a8\u85a6 \u592a\u967d\u7cfb \u5929\u4f53 \u5929\u4f53\u9593\u306e\u91cd\u529b \u60d1\u661f\u8ecc\u9053\u8a08\u7b97"},{"location":"chapter_graph/graph_operations/","title":"9.2 \u00a0 \u30b0\u30e9\u30d5\u306e\u57fa\u672c\u64cd\u4f5c","text":"<p>\u30b0\u30e9\u30d5\u306e\u57fa\u672c\u64cd\u4f5c\u306f\u300c\u8fba\u300d\u306b\u5bfe\u3059\u308b\u64cd\u4f5c\u3068\u300c\u9802\u70b9\u300d\u306b\u5bfe\u3059\u308b\u64cd\u4f5c\u306b\u5206\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u300c\u96a3\u63a5\u884c\u5217\u300d\u3068\u300c\u96a3\u63a5\u30ea\u30b9\u30c8\u300d\u306e2\u3064\u306e\u8868\u73fe\u65b9\u6cd5\u306e\u4e0b\u3067\u306f\u3001\u5b9f\u88c5\u304c\u7570\u306a\u308a\u307e\u3059\u3002</p>"},{"location":"chapter_graph/graph_operations/#921","title":"9.2.1 \u00a0 \u96a3\u63a5\u884c\u5217\u306b\u57fa\u3065\u304f\u5b9f\u88c5","text":"<p>\\(n\\)\u500b\u306e\u9802\u70b9\u3092\u6301\u3064\u7121\u5411\u30b0\u30e9\u30d5\u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u3001\u3055\u307e\u3056\u307e\u306a\u64cd\u4f5c\u306f\u4e0b\u56f3\u306e\u3088\u3046\u306b\u5b9f\u88c5\u3055\u308c\u307e\u3059\u3002</p> <ul> <li>\u8fba\u306e\u8ffd\u52a0\u307e\u305f\u306f\u524a\u9664\uff1a\u96a3\u63a5\u884c\u5217\u5185\u306e\u6307\u5b9a\u3055\u308c\u305f\u8fba\u3092\u76f4\u63a5\u5909\u66f4\u3057\u3001\\(O(1)\\)\u6642\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u7121\u5411\u30b0\u30e9\u30d5\u3067\u3042\u308b\u305f\u3081\u3001\u4e21\u65b9\u5411\u306e\u8fba\u3092\u540c\u6642\u306b\u66f4\u65b0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u9802\u70b9\u306e\u8ffd\u52a0\uff1a\u96a3\u63a5\u884c\u5217\u306e\u672b\u5c3e\u306b\u884c\u3068\u5217\u3092\u8ffd\u52a0\u3057\u3001\u3059\u3079\u3066\\(0\\)\u3067\u57cb\u3081\u307e\u3059\u3002\\(O(n)\\)\u6642\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</li> <li>\u9802\u70b9\u306e\u524a\u9664\uff1a\u96a3\u63a5\u884c\u5217\u5185\u306e\u884c\u3068\u5217\u3092\u524a\u9664\u3057\u307e\u3059\u3002\u6700\u60aa\u306e\u5834\u5408\u306f\u6700\u521d\u306e\u884c\u3068\u5217\u304c\u524a\u9664\u3055\u308c\u308b\u3068\u304d\u3067\u3001\\((n-1)^2\\)\u500b\u306e\u8981\u7d20\u3092\u300c\u4e0a\u3068\u5de6\u306b\u79fb\u52d5\u300d\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\\(O(n^2)\\)\u6642\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</li> <li>\u521d\u671f\u5316\uff1a\\(n\\)\u500b\u306e\u9802\u70b9\u3092\u6e21\u3057\u3001\u9577\u3055\\(n\\)\u306e\u9802\u70b9\u30ea\u30b9\u30c8<code>vertices</code>\u3092\u521d\u671f\u5316\u3057\u3001\\(O(n)\\)\u6642\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\\(n \\times n\\)\u30b5\u30a4\u30ba\u306e\u96a3\u63a5\u884c\u5217<code>adjMat</code>\u3092\u521d\u671f\u5316\u3057\u3001\\(O(n^2)\\)\u6642\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</li> </ul> \u96a3\u63a5\u884c\u5217\u306e\u521d\u671f\u5316\u8fba\u306e\u8ffd\u52a0\u8fba\u306e\u524a\u9664\u9802\u70b9\u306e\u8ffd\u52a0\u9802\u70b9\u306e\u524a\u9664 <p></p> <p></p> <p></p> <p></p> <p></p> <p> \u56f3 9-7 \u00a0 \u96a3\u63a5\u884c\u5217\u3067\u306e\u521d\u671f\u5316\u3001\u8fba\u306e\u8ffd\u52a0\u3068\u524a\u9664\u3001\u9802\u70b9\u306e\u8ffd\u52a0\u3068\u524a\u9664 </p> <p>\u4ee5\u4e0b\u306f\u96a3\u63a5\u884c\u5217\u3092\u4f7f\u7528\u3057\u3066\u8868\u73fe\u3055\u308c\u305f\u30b0\u30e9\u30d5\u306e\u5b9f\u88c5\u30b3\u30fc\u30c9\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby graph_adjacency_matrix.py<pre><code>class GraphAdjMat:\n \"\"\"\u96a3\u63a5\u884c\u5217\u306b\u57fa\u3065\u304f\u7121\u5411\u30b0\u30e9\u30d5\u30af\u30e9\u30b9\"\"\"\n\n def __init__(self, vertices: list[int], edges: list[list[int]]):\n \"\"\"\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\"\"\"\n # \u9802\u70b9\u30ea\u30b9\u30c8\u3001\u8981\u7d20\u306f\u300c\u9802\u70b9\u5024\u300d\u3092\u8868\u3057\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306f\u300c\u9802\u70b9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u300d\u3092\u8868\u3059\n self.vertices: list[int] = []\n # \u96a3\u63a5\u884c\u5217\u3001\u884c\u3068\u5217\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306f\u300c\u9802\u70b9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u300d\u306b\u5bfe\u5fdc\n self.adj_mat: list[list[int]] = []\n # \u9802\u70b9\u3092\u8ffd\u52a0\n for val in vertices:\n self.add_vertex(val)\n # \u8fba\u3092\u8ffd\u52a0\n # edges\u8981\u7d20\u306f\u9802\u70b9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8868\u3059\n for e in edges:\n self.add_edge(e[0], e[1])\n\n def size(self) -&gt; int:\n \"\"\"\u9802\u70b9\u6570\u3092\u53d6\u5f97\"\"\"\n return len(self.vertices)\n\n def add_vertex(self, val: int):\n \"\"\"\u9802\u70b9\u3092\u8ffd\u52a0\"\"\"\n n = self.size()\n # \u9802\u70b9\u30ea\u30b9\u30c8\u306b\u65b0\u3057\u3044\u9802\u70b9\u5024\u3092\u8ffd\u52a0\n self.vertices.append(val)\n # \u96a3\u63a5\u884c\u5217\u306b\u884c\u3092\u8ffd\u52a0\n new_row = [0] * n\n self.adj_mat.append(new_row)\n # \u96a3\u63a5\u884c\u5217\u306b\u5217\u3092\u8ffd\u52a0\n for row in self.adj_mat:\n row.append(0)\n\n def remove_vertex(self, index: int):\n \"\"\"\u9802\u70b9\u3092\u524a\u9664\"\"\"\n if index &gt;= self.size():\n raise IndexError()\n # \u9802\u70b9\u30ea\u30b9\u30c8\u304b\u3089`index`\u306e\u9802\u70b9\u3092\u524a\u9664\n self.vertices.pop(index)\n # \u96a3\u63a5\u884c\u5217\u304b\u3089`index`\u306e\u884c\u3092\u524a\u9664\n self.adj_mat.pop(index)\n # \u96a3\u63a5\u884c\u5217\u304b\u3089`index`\u306e\u5217\u3092\u524a\u9664\n for row in self.adj_mat:\n row.pop(index)\n\n def add_edge(self, i: int, j: int):\n \"\"\"\u8fba\u3092\u8ffd\u52a0\"\"\"\n # \u30d1\u30e9\u30e1\u30fc\u30bfi\u3001j\u306f\u9802\u70b9\u8981\u7d20\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u5bfe\u5fdc\n # \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306e\u7bc4\u56f2\u5916\u3068\u7b49\u4fa1\u6027\u3092\u51e6\u7406\n if i &lt; 0 or j &lt; 0 or i &gt;= self.size() or j &gt;= self.size() or i == j:\n raise IndexError()\n # \u7121\u5411\u30b0\u30e9\u30d5\u3067\u306f\u3001\u96a3\u63a5\u884c\u5217\u306f\u4e3b\u5bfe\u89d2\u7dda\u306b\u3064\u3044\u3066\u5bfe\u79f0\u3001\u3059\u306a\u308f\u3061 (i, j) == (j, i) \u3092\u6e80\u305f\u3059\n self.adj_mat[i][j] = 1\n self.adj_mat[j][i] = 1\n\n def remove_edge(self, i: int, j: int):\n \"\"\"\u8fba\u3092\u524a\u9664\"\"\"\n # \u30d1\u30e9\u30e1\u30fc\u30bfi\u3001j\u306f\u9802\u70b9\u8981\u7d20\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u5bfe\u5fdc\n # \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306e\u7bc4\u56f2\u5916\u3068\u7b49\u4fa1\u6027\u3092\u51e6\u7406\n if i &lt; 0 or j &lt; 0 or i &gt;= self.size() or j &gt;= self.size() or i == j:\n raise IndexError()\n self.adj_mat[i][j] = 0\n self.adj_mat[j][i] = 0\n\n def print(self):\n \"\"\"\u96a3\u63a5\u884c\u5217\u3092\u51fa\u529b\"\"\"\n print(\"\u9802\u70b9\u30ea\u30b9\u30c8 =\", self.vertices)\n print(\"\u96a3\u63a5\u884c\u5217 =\")\n print_matrix(self.adj_mat)\n</code></pre> graph_adjacency_matrix.cpp<pre><code>/* \u96a3\u63a5\u884c\u5217\u306b\u57fa\u3065\u304f\u7121\u5411\u30b0\u30e9\u30d5\u30af\u30e9\u30b9 */\nclass GraphAdjMat {\n vector&lt;int&gt; vertices; // \u9802\u70b9\u30ea\u30b9\u30c8\u3001\u8981\u7d20\u306f\u300c\u9802\u70b9\u5024\u300d\u3092\u8868\u3057\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306f\u300c\u9802\u70b9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u300d\u3092\u8868\u3059\n vector&lt;vector&lt;int&gt;&gt; adjMat; // \u96a3\u63a5\u884c\u5217\u3001\u884c\u3068\u5217\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306f\u300c\u9802\u70b9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u300d\u306b\u5bfe\u5fdc\n\n public:\n /* \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf */\n GraphAdjMat(const vector&lt;int&gt; &amp;vertices, const vector&lt;vector&lt;int&gt;&gt; &amp;edges) {\n // \u9802\u70b9\u3092\u8ffd\u52a0\n for (int val : vertices) {\n addVertex(val);\n }\n // \u8fba\u3092\u8ffd\u52a0\n // \u8fba\u306e\u8981\u7d20\u306f\u9802\u70b9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8868\u3059\n for (const vector&lt;int&gt; &amp;edge : edges) {\n addEdge(edge[0], edge[1]);\n }\n }\n\n /* \u9802\u70b9\u6570\u3092\u53d6\u5f97 */\n int size() const {\n return vertices.size();\n }\n\n /* \u9802\u70b9\u3092\u8ffd\u52a0 */\n void addVertex(int val) {\n int n = size();\n // \u9802\u70b9\u30ea\u30b9\u30c8\u306b\u65b0\u3057\u3044\u9802\u70b9\u5024\u3092\u8ffd\u52a0\n vertices.push_back(val);\n // \u96a3\u63a5\u884c\u5217\u306b\u884c\u3092\u8ffd\u52a0\n adjMat.emplace_back(vector&lt;int&gt;(n, 0));\n // \u96a3\u63a5\u884c\u5217\u306b\u5217\u3092\u8ffd\u52a0\n for (vector&lt;int&gt; &amp;row : adjMat) {\n row.push_back(0);\n }\n }\n\n /* \u9802\u70b9\u3092\u524a\u9664 */\n void removeVertex(int index) {\n if (index &gt;= size()) {\n throw out_of_range(\"Vertex does not exist\");\n }\n // \u9802\u70b9\u30ea\u30b9\u30c8\u304b\u3089`index`\u306e\u9802\u70b9\u3092\u524a\u9664\n vertices.erase(vertices.begin() + index);\n // \u96a3\u63a5\u884c\u5217\u304b\u3089`index`\u306e\u884c\u3092\u524a\u9664\n adjMat.erase(adjMat.begin() + index);\n // \u96a3\u63a5\u884c\u5217\u304b\u3089`index`\u306e\u5217\u3092\u524a\u9664\n for (vector&lt;int&gt; &amp;row : adjMat) {\n row.erase(row.begin() + index);\n }\n }\n\n /* \u8fba\u3092\u8ffd\u52a0 */\n // \u30d1\u30e9\u30e1\u30fc\u30bfi\u3001j\u306f\u9802\u70b9\u8981\u7d20\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u5bfe\u5fdc\n void addEdge(int i, int j) {\n // \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u7bc4\u56f2\u5916\u3068\u7b49\u4fa1\u6027\u3092\u51e6\u7406\n if (i &lt; 0 || j &lt; 0 || i &gt;= size() || j &gt;= size() || i == j) {\n throw out_of_range(\"Vertex does not exist\");\n }\n // \u7121\u5411\u30b0\u30e9\u30d5\u3067\u306f\u3001\u96a3\u63a5\u884c\u5217\u306f\u4e3b\u5bfe\u89d2\u7dda\u306b\u3064\u3044\u3066\u5bfe\u79f0\u3001\u5373\u3061(i, j) == (j, i)\u3092\u6e80\u305f\u3059\n adjMat[i][j] = 1;\n adjMat[j][i] = 1;\n }\n\n /* \u8fba\u3092\u524a\u9664 */\n // \u30d1\u30e9\u30e1\u30fc\u30bfi\u3001j\u306f\u9802\u70b9\u8981\u7d20\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u5bfe\u5fdc\n void removeEdge(int i, int j) {\n // \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u7bc4\u56f2\u5916\u3068\u7b49\u4fa1\u6027\u3092\u51e6\u7406\n if (i &lt; 0 || j &lt; 0 || i &gt;= size() || j &gt;= size() || i == j) {\n throw out_of_range(\"Vertex does not exist\");\n }\n adjMat[i][j] = 0;\n adjMat[j][i] = 0;\n }\n\n /* \u96a3\u63a5\u884c\u5217\u3092\u5370\u5237 */\n void print() {\n cout &lt;&lt; \"\u9802\u70b9\u30ea\u30b9\u30c8 = \";\n printVector(vertices);\n cout &lt;&lt; \"\u96a3\u63a5\u884c\u5217 =\" &lt;&lt; endl;\n printVectorMatrix(adjMat);\n }\n};\n</code></pre> graph_adjacency_matrix.java<pre><code>/* \u96a3\u63a5\u884c\u5217\u306b\u57fa\u3065\u304f\u7121\u5411\u30b0\u30e9\u30d5\u30af\u30e9\u30b9 */\nclass GraphAdjMat {\n List&lt;Integer&gt; vertices; // \u9802\u70b9\u30ea\u30b9\u30c8\u3001\u8981\u7d20\u306f\u300c\u9802\u70b9\u5024\u300d\u3092\u8868\u3057\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306f\u300c\u9802\u70b9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u300d\u3092\u8868\u3059\n List&lt;List&lt;Integer&gt;&gt; adjMat; // \u96a3\u63a5\u884c\u5217\u3001\u884c\u3068\u5217\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306f\u300c\u9802\u70b9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u300d\u306b\u5bfe\u5fdc\n\n /* \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf */\n public GraphAdjMat(int[] vertices, int[][] edges) {\n this.vertices = new ArrayList&lt;&gt;();\n this.adjMat = new ArrayList&lt;&gt;();\n // \u9802\u70b9\u3092\u8ffd\u52a0\n for (int val : vertices) {\n addVertex(val);\n }\n // \u8fba\u3092\u8ffd\u52a0\n // \u8fba\u306e\u8981\u7d20\u306f\u9802\u70b9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8868\u3059\n for (int[] e : edges) {\n addEdge(e[0], e[1]);\n }\n }\n\n /* \u9802\u70b9\u6570\u3092\u53d6\u5f97 */\n public int size() {\n return vertices.size();\n }\n\n /* \u9802\u70b9\u3092\u8ffd\u52a0 */\n public void addVertex(int val) {\n int n = size();\n // \u9802\u70b9\u30ea\u30b9\u30c8\u306b\u65b0\u3057\u3044\u9802\u70b9\u5024\u3092\u8ffd\u52a0\n vertices.add(val);\n // \u96a3\u63a5\u884c\u5217\u306b\u884c\u3092\u8ffd\u52a0\n List&lt;Integer&gt; newRow = new ArrayList&lt;&gt;(n);\n for (int j = 0; j &lt; n; j++) {\n newRow.add(0);\n }\n adjMat.add(newRow);\n // \u96a3\u63a5\u884c\u5217\u306b\u5217\u3092\u8ffd\u52a0\n for (List&lt;Integer&gt; row : adjMat) {\n row.add(0);\n }\n }\n\n /* \u9802\u70b9\u3092\u524a\u9664 */\n public void removeVertex(int index) {\n if (index &gt;= size())\n throw new IndexOutOfBoundsException();\n // \u9802\u70b9\u30ea\u30b9\u30c8\u304b\u3089 `index` \u306e\u9802\u70b9\u3092\u524a\u9664\n vertices.remove(index);\n // \u96a3\u63a5\u884c\u5217\u304b\u3089 `index` \u306e\u884c\u3092\u524a\u9664\n adjMat.remove(index);\n // \u96a3\u63a5\u884c\u5217\u304b\u3089 `index` \u306e\u5217\u3092\u524a\u9664\n for (List&lt;Integer&gt; row : adjMat) {\n row.remove(index);\n }\n }\n\n /* \u8fba\u3092\u8ffd\u52a0 */\n // \u30d1\u30e9\u30e1\u30fc\u30bf i\u3001j \u306f\u9802\u70b9\u8981\u7d20\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u5bfe\u5fdc\n public void addEdge(int i, int j) {\n // \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306e\u7bc4\u56f2\u5916\u3068\u7b49\u4fa1\u6027\u3092\u51e6\u7406\n if (i &lt; 0 || j &lt; 0 || i &gt;= size() || j &gt;= size() || i == j)\n throw new IndexOutOfBoundsException();\n // \u7121\u5411\u30b0\u30e9\u30d5\u3067\u306f\u3001\u96a3\u63a5\u884c\u5217\u306f\u4e3b\u5bfe\u89d2\u7dda\u306b\u3064\u3044\u3066\u5bfe\u79f0\u3001\u3059\u306a\u308f\u3061 (i, j) == (j, i) \u3092\u6e80\u305f\u3059\n adjMat.get(i).set(j, 1);\n adjMat.get(j).set(i, 1);\n }\n\n /* \u8fba\u3092\u524a\u9664 */\n // \u30d1\u30e9\u30e1\u30fc\u30bf i\u3001j \u306f\u9802\u70b9\u8981\u7d20\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u5bfe\u5fdc\n public void removeEdge(int i, int j) {\n // \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306e\u7bc4\u56f2\u5916\u3068\u7b49\u4fa1\u6027\u3092\u51e6\u7406\n if (i &lt; 0 || j &lt; 0 || i &gt;= size() || j &gt;= size() || i == j)\n throw new IndexOutOfBoundsException();\n adjMat.get(i).set(j, 0);\n adjMat.get(j).set(i, 0);\n }\n\n /* \u96a3\u63a5\u884c\u5217\u3092\u51fa\u529b */\n public void print() {\n System.out.print(\"\u9802\u70b9\u30ea\u30b9\u30c8 = \");\n System.out.println(vertices);\n System.out.println(\"\u96a3\u63a5\u884c\u5217 =\");\n PrintUtil.printMatrix(adjMat);\n }\n}\n</code></pre> graph_adjacency_matrix.cs<pre><code>[class]{GraphAdjMat}-[func]{}\n</code></pre> graph_adjacency_matrix.go<pre><code>[class]{graphAdjMat}-[func]{}\n</code></pre> graph_adjacency_matrix.swift<pre><code>[class]{GraphAdjMat}-[func]{}\n</code></pre> graph_adjacency_matrix.js<pre><code>[class]{GraphAdjMat}-[func]{}\n</code></pre> graph_adjacency_matrix.ts<pre><code>[class]{GraphAdjMat}-[func]{}\n</code></pre> graph_adjacency_matrix.dart<pre><code>[class]{GraphAdjMat}-[func]{}\n</code></pre> graph_adjacency_matrix.rs<pre><code>[class]{GraphAdjMat}-[func]{}\n</code></pre> graph_adjacency_matrix.c<pre><code>[class]{GraphAdjMat}-[func]{}\n</code></pre> graph_adjacency_matrix.kt<pre><code>[class]{GraphAdjMat}-[func]{}\n</code></pre> graph_adjacency_matrix.rb<pre><code>[class]{GraphAdjMat}-[func]{}\n</code></pre>"},{"location":"chapter_graph/graph_operations/#922","title":"9.2.2 \u00a0 \u96a3\u63a5\u30ea\u30b9\u30c8\u306b\u57fa\u3065\u304f\u5b9f\u88c5","text":"<p>\u7dcf\u8a08\\(n\\)\u500b\u306e\u9802\u70b9\u3068\\(m\\)\u500b\u306e\u8fba\u3092\u6301\u3064\u7121\u5411\u30b0\u30e9\u30d5\u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u3001\u3055\u307e\u3056\u307e\u306a\u64cd\u4f5c\u306f\u4e0b\u56f3\u306e\u3088\u3046\u306b\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002</p> <ul> <li>\u8fba\u306e\u8ffd\u52a0\uff1a\u5bfe\u5fdc\u3059\u308b\u9802\u70b9\u306e\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u672b\u5c3e\u306b\u8fba\u3092\u8ffd\u52a0\u3059\u308b\u3060\u3051\u3067\u3001\\(O(1)\\)\u6642\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u7121\u5411\u30b0\u30e9\u30d5\u3067\u3042\u308b\u305f\u3081\u3001\u4e21\u65b9\u5411\u306b\u540c\u6642\u306b\u8fba\u3092\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u8fba\u306e\u524a\u9664\uff1a\u5bfe\u5fdc\u3059\u308b\u9802\u70b9\u306e\u9023\u7d50\u30ea\u30b9\u30c8\u5185\u3067\u6307\u5b9a\u3055\u308c\u305f\u8fba\u3092\u898b\u3064\u3051\u3066\u524a\u9664\u3057\u3001\\(O(m)\\)\u6642\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u7121\u5411\u30b0\u30e9\u30d5\u3067\u306f\u3001\u4e21\u65b9\u5411\u306e\u8fba\u3092\u540c\u6642\u306b\u524a\u9664\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u9802\u70b9\u306e\u8ffd\u52a0\uff1a\u96a3\u63a5\u30ea\u30b9\u30c8\u306b\u9023\u7d50\u30ea\u30b9\u30c8\u3092\u8ffd\u52a0\u3057\u3001\u65b0\u3057\u3044\u9802\u70b9\u3092\u30ea\u30b9\u30c8\u306e\u30d8\u30c3\u30c9\u30ce\u30fc\u30c9\u306b\u3057\u3001\\(O(1)\\)\u6642\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</li> <li>\u9802\u70b9\u306e\u524a\u9664\uff1a\u96a3\u63a5\u30ea\u30b9\u30c8\u5168\u4f53\u3092\u8d70\u67fb\u3057\u3001\u6307\u5b9a\u3055\u308c\u305f\u9802\u70b9\u3092\u542b\u3080\u3059\u3079\u3066\u306e\u8fba\u3092\u524a\u9664\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\\(O(n + m)\\)\u6642\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</li> <li>\u521d\u671f\u5316\uff1a\u96a3\u63a5\u30ea\u30b9\u30c8\u306b\\(n\\)\u500b\u306e\u9802\u70b9\u3068\\(2m\\)\u500b\u306e\u8fba\u3092\u4f5c\u6210\u3057\u3001\\(O(n + m)\\)\u6642\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</li> </ul> \u96a3\u63a5\u30ea\u30b9\u30c8\u306e\u521d\u671f\u5316\u8fba\u306e\u8ffd\u52a0\u8fba\u306e\u524a\u9664\u9802\u70b9\u306e\u8ffd\u52a0\u9802\u70b9\u306e\u524a\u9664 <p></p> <p></p> <p></p> <p></p> <p></p> <p> \u56f3 9-8 \u00a0 \u96a3\u63a5\u30ea\u30b9\u30c8\u3067\u306e\u521d\u671f\u5316\u3001\u8fba\u306e\u8ffd\u52a0\u3068\u524a\u9664\u3001\u9802\u70b9\u306e\u8ffd\u52a0\u3068\u524a\u9664 </p> <p>\u4ee5\u4e0b\u306f\u96a3\u63a5\u30ea\u30b9\u30c8\u306e\u30b3\u30fc\u30c9\u5b9f\u88c5\u3067\u3059\u3002\u4e0a\u56f3\u3068\u6bd4\u8f03\u3057\u3066\u3001\u5b9f\u969b\u306e\u30b3\u30fc\u30c9\u306b\u306f\u4ee5\u4e0b\u306e\u9055\u3044\u304c\u3042\u308a\u307e\u3059\u3002</p> <ul> <li>\u9802\u70b9\u306e\u8ffd\u52a0\u3068\u524a\u9664\u306e\u4fbf\u5b9c\u3001\u304a\u3088\u3073\u30b3\u30fc\u30c9\u306e\u7c21\u7d20\u5316\u306e\u305f\u3081\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u4ee3\u308f\u308a\u306b\u30ea\u30b9\u30c8\uff08\u52d5\u7684\u914d\u5217\uff09\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</li> <li>\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u4f7f\u7528\u3057\u3066\u96a3\u63a5\u30ea\u30b9\u30c8\u3092\u683c\u7d0d\u3057\u3001<code>key</code>\u304c\u9802\u70b9\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3001<code>value</code>\u304c\u305d\u306e\u9802\u70b9\u306e\u96a3\u63a5\u9802\u70b9\u306e\u30ea\u30b9\u30c8\uff08\u9023\u7d50\u30ea\u30b9\u30c8\uff09\u3067\u3059\u3002</li> </ul> <p>\u3055\u3089\u306b\u3001\u96a3\u63a5\u30ea\u30b9\u30c8\u3067\u9802\u70b9\u3092\u8868\u73fe\u3059\u308b\u305f\u3081\u306b<code>Vertex</code>\u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u305d\u306e\u7406\u7531\u306f\uff1a\u96a3\u63a5\u884c\u5217\u306e\u3088\u3046\u306b\u30ea\u30b9\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u4f7f\u7528\u3057\u3066\u7570\u306a\u308b\u9802\u70b9\u3092\u533a\u5225\u3059\u308b\u5834\u5408\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\\(i\\)\u306e\u9802\u70b9\u3092\u524a\u9664\u3057\u305f\u3044\u5834\u5408\u3001\u96a3\u63a5\u30ea\u30b9\u30c8\u5168\u4f53\u3092\u8d70\u67fb\u3057\u3001\\(i\\)\u3088\u308a\u5927\u304d\u3044\u3059\u3079\u3066\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30921\u3064\u305a\u3064\u6e1b\u5c11\u3055\u305b\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u3053\u308c\u306f\u975e\u5e38\u306b\u975e\u52b9\u7387\u7684\u3067\u3059\u3002\u3057\u304b\u3057\u3001\u5404\u9802\u70b9\u304c\u4e00\u610f\u306e<code>Vertex</code>\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3067\u3042\u308b\u5834\u5408\u3001\u9802\u70b9\u3092\u524a\u9664\u3057\u3066\u3082\u4ed6\u306e\u9802\u70b9\u306b\u5909\u66f4\u3092\u52a0\u3048\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u305b\u3093\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby graph_adjacency_list.py<pre><code>class GraphAdjList:\n \"\"\"\u96a3\u63a5\u30ea\u30b9\u30c8\u306b\u57fa\u3065\u304f\u7121\u5411\u30b0\u30e9\u30d5\u30af\u30e9\u30b9\"\"\"\n\n def __init__(self, edges: list[list[Vertex]]):\n \"\"\"\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\"\"\"\n # \u96a3\u63a5\u30ea\u30b9\u30c8\u3001\u30ad\u30fc: \u9802\u70b9\u3001\u5024: \u305d\u306e\u9802\u70b9\u306e\u96a3\u63a5\u3059\u308b\u5168\u9802\u70b9\n self.adj_list = dict[Vertex, list[Vertex]]()\n # \u3059\u3079\u3066\u306e\u9802\u70b9\u3068\u8fba\u3092\u8ffd\u52a0\n for edge in edges:\n self.add_vertex(edge[0])\n self.add_vertex(edge[1])\n self.add_edge(edge[0], edge[1])\n\n def size(self) -&gt; int:\n \"\"\"\u9802\u70b9\u6570\u3092\u53d6\u5f97\"\"\"\n return len(self.adj_list)\n\n def add_edge(self, vet1: Vertex, vet2: Vertex):\n \"\"\"\u8fba\u3092\u8ffd\u52a0\"\"\"\n if vet1 not in self.adj_list or vet2 not in self.adj_list or vet1 == vet2:\n raise ValueError()\n # \u8fba vet1 - vet2 \u3092\u8ffd\u52a0\n self.adj_list[vet1].append(vet2)\n self.adj_list[vet2].append(vet1)\n\n def remove_edge(self, vet1: Vertex, vet2: Vertex):\n \"\"\"\u8fba\u3092\u524a\u9664\"\"\"\n if vet1 not in self.adj_list or vet2 not in self.adj_list or vet1 == vet2:\n raise ValueError()\n # \u8fba vet1 - vet2 \u3092\u524a\u9664\n self.adj_list[vet1].remove(vet2)\n self.adj_list[vet2].remove(vet1)\n\n def add_vertex(self, vet: Vertex):\n \"\"\"\u9802\u70b9\u3092\u8ffd\u52a0\"\"\"\n if vet in self.adj_list:\n return\n # \u96a3\u63a5\u30ea\u30b9\u30c8\u306b\u65b0\u3057\u3044\u9023\u7d50\u30ea\u30b9\u30c8\u3092\u8ffd\u52a0\n self.adj_list[vet] = []\n\n def remove_vertex(self, vet: Vertex):\n \"\"\"\u9802\u70b9\u3092\u524a\u9664\"\"\"\n if vet not in self.adj_list:\n raise ValueError()\n # \u96a3\u63a5\u30ea\u30b9\u30c8\u304b\u3089\u9802\u70b9vet\u306b\u5bfe\u5fdc\u3059\u308b\u9023\u7d50\u30ea\u30b9\u30c8\u3092\u524a\u9664\n self.adj_list.pop(vet)\n # \u4ed6\u306e\u9802\u70b9\u306e\u9023\u7d50\u30ea\u30b9\u30c8\u3092\u8d70\u67fb\u3057\u3001vet\u3092\u542b\u3080\u3059\u3079\u3066\u306e\u8fba\u3092\u524a\u9664\n for vertex in self.adj_list:\n if vet in self.adj_list[vertex]:\n self.adj_list[vertex].remove(vet)\n\n def print(self):\n \"\"\"\u96a3\u63a5\u30ea\u30b9\u30c8\u3092\u51fa\u529b\"\"\"\n print(\"\u96a3\u63a5\u30ea\u30b9\u30c8 =\")\n for vertex in self.adj_list:\n tmp = [v.val for v in self.adj_list[vertex]]\n print(f\"{vertex.val}: {tmp},\")\n</code></pre> graph_adjacency_list.cpp<pre><code>/* \u96a3\u63a5\u30ea\u30b9\u30c8\u306b\u57fa\u3065\u304f\u7121\u5411\u30b0\u30e9\u30d5\u30af\u30e9\u30b9 */\nclass GraphAdjList {\n public:\n // \u96a3\u63a5\u30ea\u30b9\u30c8\u3001\u30ad\u30fc\uff1a\u9802\u70b9\u3001\u5024\uff1a\u305d\u306e\u9802\u70b9\u306e\u3059\u3079\u3066\u306e\u96a3\u63a5\u9802\u70b9\n unordered_map&lt;Vertex *, vector&lt;Vertex *&gt;&gt; adjList;\n\n /* \u30d9\u30af\u30bf\u30fc\u304b\u3089\u6307\u5b9a\u3055\u308c\u305f\u30ce\u30fc\u30c9\u3092\u524a\u9664 */\n void remove(vector&lt;Vertex *&gt; &amp;vec, Vertex *vet) {\n for (int i = 0; i &lt; vec.size(); i++) {\n if (vec[i] == vet) {\n vec.erase(vec.begin() + i);\n break;\n }\n }\n }\n\n /* \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf */\n GraphAdjList(const vector&lt;vector&lt;Vertex *&gt;&gt; &amp;edges) {\n // \u3059\u3079\u3066\u306e\u9802\u70b9\u3068\u8fba\u3092\u8ffd\u52a0\n for (const vector&lt;Vertex *&gt; &amp;edge : edges) {\n addVertex(edge[0]);\n addVertex(edge[1]);\n addEdge(edge[0], edge[1]);\n }\n }\n\n /* \u9802\u70b9\u6570\u3092\u53d6\u5f97 */\n int size() {\n return adjList.size();\n }\n\n /* \u8fba\u3092\u8ffd\u52a0 */\n void addEdge(Vertex *vet1, Vertex *vet2) {\n if (!adjList.count(vet1) || !adjList.count(vet2) || vet1 == vet2)\n throw invalid_argument(\"Vertex does not exist\");\n // \u8fba vet1 - vet2 \u3092\u8ffd\u52a0\n adjList[vet1].push_back(vet2);\n adjList[vet2].push_back(vet1);\n }\n\n /* \u8fba\u3092\u524a\u9664 */\n void removeEdge(Vertex *vet1, Vertex *vet2) {\n if (!adjList.count(vet1) || !adjList.count(vet2) || vet1 == vet2)\n throw invalid_argument(\"Vertex does not exist\");\n // \u8fba vet1 - vet2 \u3092\u524a\u9664\n remove(adjList[vet1], vet2);\n remove(adjList[vet2], vet1);\n }\n\n /* \u9802\u70b9\u3092\u8ffd\u52a0 */\n void addVertex(Vertex *vet) {\n if (adjList.count(vet))\n return;\n // \u96a3\u63a5\u30ea\u30b9\u30c8\u306b\u65b0\u3057\u3044\u9023\u7d50\u30ea\u30b9\u30c8\u3092\u8ffd\u52a0\n adjList[vet] = vector&lt;Vertex *&gt;();\n }\n\n /* \u9802\u70b9\u3092\u524a\u9664 */\n void removeVertex(Vertex *vet) {\n if (!adjList.count(vet))\n throw invalid_argument(\"Vertex does not exist\");\n // \u96a3\u63a5\u30ea\u30b9\u30c8\u304b\u3089\u9802\u70b9vet\u306b\u5bfe\u5fdc\u3059\u308b\u9023\u7d50\u30ea\u30b9\u30c8\u3092\u524a\u9664\n adjList.erase(vet);\n // \u4ed6\u306e\u9802\u70b9\u306e\u9023\u7d50\u30ea\u30b9\u30c8\u3092\u8d70\u67fb\u3057\u3001vet\u3092\u542b\u3080\u3059\u3079\u3066\u306e\u8fba\u3092\u524a\u9664\n for (auto &amp;adj : adjList) {\n remove(adj.second, vet);\n }\n }\n\n /* \u96a3\u63a5\u30ea\u30b9\u30c8\u3092\u5370\u5237 */\n void print() {\n cout &lt;&lt; \"\u96a3\u63a5\u30ea\u30b9\u30c8 =\" &lt;&lt; endl;\n for (auto &amp;adj : adjList) {\n const auto &amp;key = adj.first;\n const auto &amp;vec = adj.second;\n cout &lt;&lt; key-&gt;val &lt;&lt; \": \";\n printVector(vetsToVals(vec));\n }\n }\n};\n</code></pre> graph_adjacency_list.java<pre><code>/* \u96a3\u63a5\u30ea\u30b9\u30c8\u306b\u57fa\u3065\u304f\u7121\u5411\u30b0\u30e9\u30d5\u30af\u30e9\u30b9 */\nclass GraphAdjList {\n // \u96a3\u63a5\u30ea\u30b9\u30c8\u3001\u30ad\u30fc: \u9802\u70b9\u3001\u5024: \u305d\u306e\u9802\u70b9\u306e\u3059\u3079\u3066\u306e\u96a3\u63a5\u9802\u70b9\n Map&lt;Vertex, List&lt;Vertex&gt;&gt; adjList;\n\n /* \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf */\n public GraphAdjList(Vertex[][] edges) {\n this.adjList = new HashMap&lt;&gt;();\n // \u3059\u3079\u3066\u306e\u9802\u70b9\u3068\u8fba\u3092\u8ffd\u52a0\n for (Vertex[] edge : edges) {\n addVertex(edge[0]);\n addVertex(edge[1]);\n addEdge(edge[0], edge[1]);\n }\n }\n\n /* \u9802\u70b9\u6570\u3092\u53d6\u5f97 */\n public int size() {\n return adjList.size();\n }\n\n /* \u8fba\u3092\u8ffd\u52a0 */\n public void addEdge(Vertex vet1, Vertex vet2) {\n if (!adjList.containsKey(vet1) || !adjList.containsKey(vet2) || vet1 == vet2)\n throw new IllegalArgumentException();\n // \u8fba vet1 - vet2 \u3092\u8ffd\u52a0\n adjList.get(vet1).add(vet2);\n adjList.get(vet2).add(vet1);\n }\n\n /* \u8fba\u3092\u524a\u9664 */\n public void removeEdge(Vertex vet1, Vertex vet2) {\n if (!adjList.containsKey(vet1) || !adjList.containsKey(vet2) || vet1 == vet2)\n throw new IllegalArgumentException();\n // \u8fba vet1 - vet2 \u3092\u524a\u9664\n adjList.get(vet1).remove(vet2);\n adjList.get(vet2).remove(vet1);\n }\n\n /* \u9802\u70b9\u3092\u8ffd\u52a0 */\n public void addVertex(Vertex vet) {\n if (adjList.containsKey(vet))\n return;\n // \u96a3\u63a5\u30ea\u30b9\u30c8\u306b\u65b0\u3057\u3044\u9023\u7d50\u30ea\u30b9\u30c8\u3092\u8ffd\u52a0\n adjList.put(vet, new ArrayList&lt;&gt;());\n }\n\n /* \u9802\u70b9\u3092\u524a\u9664 */\n public void removeVertex(Vertex vet) {\n if (!adjList.containsKey(vet))\n throw new IllegalArgumentException();\n // \u96a3\u63a5\u30ea\u30b9\u30c8\u304b\u3089\u9802\u70b9 vet \u306b\u5bfe\u5fdc\u3059\u308b\u9023\u7d50\u30ea\u30b9\u30c8\u3092\u524a\u9664\n adjList.remove(vet);\n // \u4ed6\u306e\u9802\u70b9\u306e\u9023\u7d50\u30ea\u30b9\u30c8\u3092\u8d70\u67fb\u3057\u3001vet \u3092\u542b\u3080\u3059\u3079\u3066\u306e\u8fba\u3092\u524a\u9664\n for (List&lt;Vertex&gt; list : adjList.values()) {\n list.remove(vet);\n }\n }\n\n /* \u96a3\u63a5\u30ea\u30b9\u30c8\u3092\u51fa\u529b */\n public void print() {\n System.out.println(\"\u96a3\u63a5\u30ea\u30b9\u30c8 =\");\n for (Map.Entry&lt;Vertex, List&lt;Vertex&gt;&gt; pair : adjList.entrySet()) {\n List&lt;Integer&gt; tmp = new ArrayList&lt;&gt;();\n for (Vertex vertex : pair.getValue())\n tmp.add(vertex.val);\n System.out.println(pair.getKey().val + \": \" + tmp + \",\");\n }\n }\n}\n</code></pre> graph_adjacency_list.cs<pre><code>[class]{GraphAdjList}-[func]{}\n</code></pre> graph_adjacency_list.go<pre><code>[class]{graphAdjList}-[func]{}\n</code></pre> graph_adjacency_list.swift<pre><code>[class]{GraphAdjList}-[func]{}\n</code></pre> graph_adjacency_list.js<pre><code>[class]{GraphAdjList}-[func]{}\n</code></pre> graph_adjacency_list.ts<pre><code>[class]{GraphAdjList}-[func]{}\n</code></pre> graph_adjacency_list.dart<pre><code>[class]{GraphAdjList}-[func]{}\n</code></pre> graph_adjacency_list.rs<pre><code>[class]{GraphAdjList}-[func]{}\n</code></pre> graph_adjacency_list.c<pre><code>[class]{AdjListNode}-[func]{}\n\n[class]{GraphAdjList}-[func]{}\n</code></pre> graph_adjacency_list.kt<pre><code>[class]{GraphAdjList}-[func]{}\n</code></pre> graph_adjacency_list.rb<pre><code>[class]{GraphAdjList}-[func]{}\n</code></pre>"},{"location":"chapter_graph/graph_operations/#923","title":"9.2.3 \u00a0 \u52b9\u7387\u306e\u6bd4\u8f03","text":"<p>\u30b0\u30e9\u30d5\u306b\\(n\\)\u500b\u306e\u9802\u70b9\u3068\\(m\\)\u500b\u306e\u8fba\u304c\u3042\u308b\u3068\u4eee\u5b9a\u3059\u308b\u3068\u3001\u4e0b\u8868\u306f\u96a3\u63a5\u884c\u5217\u3068\u96a3\u63a5\u30ea\u30b9\u30c8\u306e\u6642\u9593\u52b9\u7387\u3068\u7a7a\u9593\u52b9\u7387\u3092\u6bd4\u8f03\u3057\u3066\u3044\u307e\u3059\u3002</p> <p> \u8868 9-2 \u00a0 \u96a3\u63a5\u884c\u5217\u3068\u96a3\u63a5\u30ea\u30b9\u30c8\u306e\u6bd4\u8f03 </p> \u96a3\u63a5\u884c\u5217 \u96a3\u63a5\u30ea\u30b9\u30c8\uff08\u9023\u7d50\u30ea\u30b9\u30c8\uff09 \u96a3\u63a5\u30ea\u30b9\u30c8\uff08\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\uff09 \u96a3\u63a5\u6027\u306e\u5224\u5b9a \\(O(1)\\) \\(O(m)\\) \\(O(1)\\) \u8fba\u306e\u8ffd\u52a0 \\(O(1)\\) \\(O(1)\\) \\(O(1)\\) \u8fba\u306e\u524a\u9664 \\(O(1)\\) \\(O(m)\\) \\(O(1)\\) \u9802\u70b9\u306e\u8ffd\u52a0 \\(O(n)\\) \\(O(1)\\) \\(O(1)\\) \u9802\u70b9\u306e\u524a\u9664 \\(O(n^2)\\) \\(O(n + m)\\) \\(O(n)\\) \u30e1\u30e2\u30ea\u7a7a\u9593\u4f7f\u7528\u91cf \\(O(n^2)\\) \\(O(n + m)\\) \\(O(n + m)\\) <p>\u4e0a\u8868\u3092\u89b3\u5bdf\u3059\u308b\u3068\u3001\u96a3\u63a5\u30ea\u30b9\u30c8\uff08\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\uff09\u304c\u6700\u9ad8\u306e\u6642\u9593\u52b9\u7387\u3068\u7a7a\u9593\u52b9\u7387\u3092\u6301\u3063\u3066\u3044\u308b\u3088\u3046\u306b\u898b\u3048\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u5b9f\u969b\u306b\u306f\u3001\u96a3\u63a5\u884c\u5217\u3067\u306e\u8fba\u306b\u5bfe\u3059\u308b\u64cd\u4f5c\u304c\u3088\u308a\u52b9\u7387\u7684\u3067\u3001\u5358\u4e00\u306e\u914d\u5217\u30a2\u30af\u30bb\u30b9\u307e\u305f\u306f\u4ee3\u5165\u64cd\u4f5c\u306e\u307f\u304c\u5fc5\u8981\u3067\u3059\u3002\u5168\u4f53\u7684\u306b\u3001\u96a3\u63a5\u884c\u5217\u306f\u300c\u7a7a\u9593\u3068\u6642\u9593\u306e\u30c8\u30ec\u30fc\u30c9\u30aa\u30d5\u300d\u306e\u539f\u5247\u3092\u4f8b\u793a\u3057\u3001\u96a3\u63a5\u30ea\u30b9\u30c8\u306f\u300c\u6642\u9593\u3068\u7a7a\u9593\u306e\u30c8\u30ec\u30fc\u30c9\u30aa\u30d5\u300d\u3092\u4f8b\u793a\u3057\u3066\u3044\u307e\u3059\u3002</p>"},{"location":"chapter_graph/graph_traversal/","title":"9.3 \u00a0 \u30b0\u30e9\u30d5\u8d70\u67fb","text":"<p>\u6728\u306f\u300c\u4e00\u5bfe\u591a\u300d\u306e\u95a2\u4fc2\u3092\u8868\u73fe\u3057\u3001\u30b0\u30e9\u30d5\u306f\u3088\u308a\u9ad8\u3044\u81ea\u7531\u5ea6\u3092\u6301\u3061\u3001\u4efb\u610f\u306e\u300c\u591a\u5bfe\u591a\u300d\u306e\u95a2\u4fc2\u3092\u8868\u73fe\u3067\u304d\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u6728\u3092\u30b0\u30e9\u30d5\u306e\u7279\u5225\u306a\u30b1\u30fc\u30b9\u3068\u898b\u306a\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u660e\u3089\u304b\u306b\u3001\u6728\u306e\u8d70\u67fb\u64cd\u4f5c\u3082\u30b0\u30e9\u30d5\u8d70\u67fb\u64cd\u4f5c\u306e\u7279\u5225\u306a\u30b1\u30fc\u30b9\u3067\u3059\u3002</p> <p>\u30b0\u30e9\u30d5\u3068\u6728\u306e\u4e21\u65b9\u3067\u3001\u8d70\u67fb\u64cd\u4f5c\u3092\u5b9f\u88c5\u3059\u308b\u305f\u3081\u306b\u63a2\u7d22\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5fdc\u7528\u304c\u5fc5\u8981\u3067\u3059\u3002\u30b0\u30e9\u30d5\u8d70\u67fb\u306f2\u3064\u306e\u30bf\u30a4\u30d7\u306b\u5206\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff1a\u5e45\u512a\u5148\u63a2\u7d22\uff08BFS\uff09\u3068\u6df1\u3055\u512a\u5148\u63a2\u7d22\uff08DFS\uff09\u3067\u3059\u3002</p>"},{"location":"chapter_graph/graph_traversal/#931","title":"9.3.1 \u00a0 \u5e45\u512a\u5148\u63a2\u7d22","text":"<p>\u5e45\u512a\u5148\u63a2\u7d22\u306f\u8fd1\u304f\u304b\u3089\u9060\u304f\u3078\u306e\u8d70\u67fb\u65b9\u6cd5\u3067\u3001\u3042\u308b\u9802\u70b9\u304b\u3089\u958b\u59cb\u3057\u3001\u5e38\u306b\u6700\u3082\u8fd1\u3044\u9802\u70b9\u3092\u512a\u5148\u7684\u306b\u8a2a\u554f\u3057\u3001\u5c64\u3054\u3068\u306b\u5916\u5074\u306b\u5c55\u958b\u3057\u3066\u3044\u304d\u307e\u3059\u3002\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u5de6\u4e0a\u306e\u9802\u70b9\u304b\u3089\u958b\u59cb\u3057\u3001\u307e\u305a\u305d\u306e\u9802\u70b9\u306e\u3059\u3079\u3066\u306e\u96a3\u63a5\u9802\u70b9\u3092\u8d70\u67fb\u3057\u3001\u6b21\u306b\u6b21\u306e\u9802\u70b9\u306e\u3059\u3079\u3066\u306e\u96a3\u63a5\u9802\u70b9\u3092\u8d70\u67fb\u3057\u3001\u4ee5\u4e0b\u540c\u69d8\u306b\u3001\u3059\u3079\u3066\u306e\u9802\u70b9\u304c\u8a2a\u554f\u3055\u308c\u308b\u307e\u3067\u7d9a\u3051\u307e\u3059\u3002</p> <p></p> <p> \u56f3 9-9 \u00a0 \u30b0\u30e9\u30d5\u306e\u5e45\u512a\u5148\u8d70\u67fb </p>"},{"location":"chapter_graph/graph_traversal/#1","title":"1. \u00a0 \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5b9f\u88c5","text":"<p>BFS\u306f\u901a\u5e38\u30ad\u30e5\u30fc\u306e\u52a9\u3051\u3092\u501f\u308a\u3066\u5b9f\u88c5\u3055\u308c\u307e\u3059\uff08\u4e0b\u8a18\u306e\u30b3\u30fc\u30c9\u53c2\u7167\uff09\u3002\u30ad\u30e5\u30fc\u306f\u300c\u5148\u5165\u5148\u51fa\u300d\u3067\u3001\u3053\u308c\u306f\u300c\u8fd1\u304f\u304b\u3089\u9060\u304f\u3078\u300d\u8d70\u67fb\u3059\u308bBFS\u306e\u8003\u3048\u65b9\u3068\u4e00\u81f4\u3057\u307e\u3059\u3002</p> <ol> <li>\u958b\u59cb\u9802\u70b9<code>startVet</code>\u3092\u30ad\u30e5\u30fc\u306b\u8ffd\u52a0\u3057\u3001\u30eb\u30fc\u30d7\u3092\u958b\u59cb\u3057\u307e\u3059\u3002</li> <li>\u30eb\u30fc\u30d7\u306e\u5404\u53cd\u5fa9\u3067\u3001\u30ad\u30e5\u30fc\u306e\u5148\u982d\u306e\u9802\u70b9\u3092\u30dd\u30c3\u30d7\u3057\u3001\u305d\u308c\u3092\u8a2a\u554f\u6e08\u307f\u3068\u3057\u3066\u8a18\u9332\u3057\u3001\u6b21\u306b\u305d\u306e\u9802\u70b9\u306e\u3059\u3079\u3066\u306e\u96a3\u63a5\u9802\u70b9\u3092\u30ad\u30e5\u30fc\u306e\u672b\u5c3e\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002</li> <li>\u3059\u3079\u3066\u306e\u9802\u70b9\u304c\u8a2a\u554f\u3055\u308c\u308b\u307e\u3067\u624b\u9806<code>2.</code>\u3092\u7e70\u308a\u8fd4\u3057\u307e\u3059\u3002</li> </ol> <p>\u9802\u70b9\u306e\u518d\u8a2a\u554f\u3092\u9632\u3050\u305f\u3081\u306b\u3001\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8<code>visited</code>\u3092\u4f7f\u7528\u3057\u3066\u3069\u306e\u30ce\u30fc\u30c9\u304c\u8a2a\u554f\u3055\u308c\u305f\u304b\u3092\u8a18\u9332\u3057\u307e\u3059\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby graph_bfs.py<pre><code>def graph_bfs(graph: GraphAdjList, start_vet: Vertex) -&gt; list[Vertex]:\n \"\"\"\u5e45\u512a\u5148\u8d70\u67fb\"\"\"\n # \u96a3\u63a5\u30ea\u30b9\u30c8\u3092\u4f7f\u7528\u3057\u3066\u30b0\u30e9\u30d5\u3092\u8868\u73fe\u3057\u3001\u6307\u5b9a\u3055\u308c\u305f\u9802\u70b9\u306e\u3059\u3079\u3066\u306e\u96a3\u63a5\u9802\u70b9\u3092\u53d6\u5f97\n # \u9802\u70b9\u8d70\u67fb\u30b7\u30fc\u30b1\u30f3\u30b9\n res = []\n # \u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3001\u8a2a\u554f\u6e08\u307f\u9802\u70b9\u3092\u8a18\u9332\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\n visited = set[Vertex]([start_vet])\n # BFS\u3092\u5b9f\u88c5\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u30ad\u30e5\u30fc\n que = deque[Vertex]([start_vet])\n # \u9802\u70b9vet\u304b\u3089\u958b\u59cb\u3057\u3001\u3059\u3079\u3066\u306e\u9802\u70b9\u304c\u8a2a\u554f\u3055\u308c\u308b\u307e\u3067\u30eb\u30fc\u30d7\n while len(que) &gt; 0:\n vet = que.popleft() # \u30ad\u30e5\u30fc\u306e\u5148\u982d\u306e\u9802\u70b9\u3092\u30c7\u30ad\u30e5\u30fc\n res.append(vet) # \u8a2a\u554f\u6e08\u307f\u9802\u70b9\u3092\u8a18\u9332\n # \u305d\u306e\u9802\u70b9\u306e\u3059\u3079\u3066\u306e\u96a3\u63a5\u9802\u70b9\u3092\u8d70\u67fb\n for adj_vet in graph.adj_list[vet]:\n if adj_vet in visited:\n continue # \u65e2\u306b\u8a2a\u554f\u6e08\u307f\u306e\u9802\u70b9\u3092\u30b9\u30ad\u30c3\u30d7\n que.append(adj_vet) # \u672a\u8a2a\u554f\u306e\u9802\u70b9\u306e\u307f\u3092\u30a8\u30f3\u30ad\u30e5\u30fc\n visited.add(adj_vet) # \u9802\u70b9\u3092\u8a2a\u554f\u6e08\u307f\u3068\u3057\u3066\u30de\u30fc\u30af\n # \u9802\u70b9\u8d70\u67fb\u30b7\u30fc\u30b1\u30f3\u30b9\u3092\u8fd4\u3059\n return res\n</code></pre> graph_bfs.cpp<pre><code>/* \u5e45\u512a\u5148\u8d70\u67fb */\n// \u96a3\u63a5\u30ea\u30b9\u30c8\u3092\u4f7f\u7528\u3057\u3066\u30b0\u30e9\u30d5\u3092\u8868\u73fe\u3057\u3001\u6307\u5b9a\u3055\u308c\u305f\u9802\u70b9\u306e\u3059\u3079\u3066\u306e\u96a3\u63a5\u9802\u70b9\u3092\u53d6\u5f97\nvector&lt;Vertex *&gt; graphBFS(GraphAdjList &amp;graph, Vertex *startVet) {\n // \u9802\u70b9\u8d70\u67fb\u9806\u5e8f\n vector&lt;Vertex *&gt; res;\n // \u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3001\u8a2a\u554f\u6e08\u307f\u9802\u70b9\u3092\u8a18\u9332\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\n unordered_set&lt;Vertex *&gt; visited = {startVet};\n // BFS\u3092\u5b9f\u88c5\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u30ad\u30e5\u30fc\n queue&lt;Vertex *&gt; que;\n que.push(startVet);\n // \u9802\u70b9vet\u304b\u3089\u958b\u59cb\u3057\u3001\u3059\u3079\u3066\u306e\u9802\u70b9\u304c\u8a2a\u554f\u3055\u308c\u308b\u307e\u3067\u30eb\u30fc\u30d7\n while (!que.empty()) {\n Vertex *vet = que.front();\n que.pop(); // \u30ad\u30e5\u30fc\u306e\u5148\u982d\u306e\u9802\u70b9\u3092\u30c7\u30ad\u30e5\u30fc\n res.push_back(vet); // \u8a2a\u554f\u6e08\u307f\u9802\u70b9\u3092\u8a18\u9332\n // \u305d\u306e\u9802\u70b9\u306e\u3059\u3079\u3066\u306e\u96a3\u63a5\u9802\u70b9\u3092\u8d70\u67fb\n for (auto adjVet : graph.adjList[vet]) {\n if (visited.count(adjVet))\n continue; // \u3059\u3067\u306b\u8a2a\u554f\u6e08\u307f\u306e\u9802\u70b9\u3092\u30b9\u30ad\u30c3\u30d7\n que.push(adjVet); // \u672a\u8a2a\u554f\u306e\u9802\u70b9\u306e\u307f\u3092\u30a8\u30f3\u30ad\u30e5\u30fc\n visited.emplace(adjVet); // \u9802\u70b9\u3092\u8a2a\u554f\u6e08\u307f\u3068\u3057\u3066\u30de\u30fc\u30af\n }\n }\n // \u9802\u70b9\u8d70\u67fb\u9806\u5e8f\u3092\u8fd4\u3059\n return res;\n}\n</code></pre> graph_bfs.java<pre><code>/* \u5e45\u512a\u5148\u8d70\u67fb */\n// \u96a3\u63a5\u30ea\u30b9\u30c8\u3092\u4f7f\u7528\u3057\u3066\u30b0\u30e9\u30d5\u3092\u8868\u73fe\u3057\u3001\u6307\u5b9a\u3057\u305f\u9802\u70b9\u306e\u3059\u3079\u3066\u306e\u96a3\u63a5\u9802\u70b9\u3092\u53d6\u5f97\nList&lt;Vertex&gt; graphBFS(GraphAdjList graph, Vertex startVet) {\n // \u9802\u70b9\u8d70\u67fb\u9806\u5e8f\n List&lt;Vertex&gt; res = new ArrayList&lt;&gt;();\n // \u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3001\u8a2a\u554f\u6e08\u307f\u306e\u9802\u70b9\u3092\u8a18\u9332\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\n Set&lt;Vertex&gt; visited = new HashSet&lt;&gt;();\n visited.add(startVet);\n // BFS \u3092\u5b9f\u88c5\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u30ad\u30e5\u30fc\n Queue&lt;Vertex&gt; que = new LinkedList&lt;&gt;();\n que.offer(startVet);\n // \u9802\u70b9 vet \u304b\u3089\u958b\u59cb\u3057\u3001\u3059\u3079\u3066\u306e\u9802\u70b9\u304c\u8a2a\u554f\u3055\u308c\u308b\u307e\u3067\u30eb\u30fc\u30d7\n while (!que.isEmpty()) {\n Vertex vet = que.poll(); // \u30ad\u30e5\u30fc\u306e\u5148\u982d\u306e\u9802\u70b9\u3092\u30c7\u30ad\u30e5\u30fc\n res.add(vet); // \u8a2a\u554f\u3057\u305f\u9802\u70b9\u3092\u8a18\u9332\n // \u305d\u306e\u9802\u70b9\u306e\u3059\u3079\u3066\u306e\u96a3\u63a5\u9802\u70b9\u3092\u8d70\u67fb\n for (Vertex adjVet : graph.adjList.get(vet)) {\n if (visited.contains(adjVet))\n continue; // \u3059\u3067\u306b\u8a2a\u554f\u6e08\u307f\u306e\u9802\u70b9\u3092\u30b9\u30ad\u30c3\u30d7\n que.offer(adjVet); // \u672a\u8a2a\u554f\u306e\u9802\u70b9\u306e\u307f\u3092\u30a8\u30f3\u30ad\u30e5\u30fc\n visited.add(adjVet); // \u9802\u70b9\u3092\u8a2a\u554f\u6e08\u307f\u3068\u3057\u3066\u30de\u30fc\u30af\n }\n }\n // \u9802\u70b9\u8d70\u67fb\u9806\u5e8f\u3092\u8fd4\u3059\n return res;\n}\n</code></pre> graph_bfs.cs<pre><code>[class]{graph_bfs}-[func]{GraphBFS}\n</code></pre> graph_bfs.go<pre><code>[class]{}-[func]{graphBFS}\n</code></pre> graph_bfs.swift<pre><code>[class]{}-[func]{graphBFS}\n</code></pre> graph_bfs.js<pre><code>[class]{}-[func]{graphBFS}\n</code></pre> graph_bfs.ts<pre><code>[class]{}-[func]{graphBFS}\n</code></pre> graph_bfs.dart<pre><code>[class]{}-[func]{graphBFS}\n</code></pre> graph_bfs.rs<pre><code>[class]{}-[func]{graph_bfs}\n</code></pre> graph_bfs.c<pre><code>[class]{Queue}-[func]{}\n\n[class]{}-[func]{isVisited}\n\n[class]{}-[func]{graphBFS}\n</code></pre> graph_bfs.kt<pre><code>[class]{}-[func]{graphBFS}\n</code></pre> graph_bfs.rb<pre><code>[class]{}-[func]{graph_bfs}\n</code></pre> <p>\u30b3\u30fc\u30c9\u306f\u6bd4\u8f03\u7684\u62bd\u8c61\u7684\u3067\u3059\u304c\u3001\u4e0b\u56f3\u3068\u6bd4\u8f03\u3059\u308b\u3053\u3068\u3067\u3088\u308a\u826f\u304f\u7406\u89e3\u3067\u304d\u307e\u3059\u3002</p> &lt;1&gt;&lt;2&gt;&lt;3&gt;&lt;4&gt;&lt;5&gt;&lt;6&gt;&lt;7&gt;&lt;8&gt;&lt;9&gt;&lt;10&gt;&lt;11&gt; <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p> \u56f3 9-10 \u00a0 \u30b0\u30e9\u30d5\u306e\u5e45\u512a\u5148\u63a2\u7d22\u306e\u624b\u9806 </p> <p>\u5e45\u512a\u5148\u8d70\u67fb\u306e\u30b7\u30fc\u30b1\u30f3\u30b9\u306f\u4e00\u610f\u3067\u3059\u304b\uff1f</p> <p>\u4e00\u610f\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u5e45\u512a\u5148\u8d70\u67fb\u306f\u300c\u8fd1\u304f\u304b\u3089\u9060\u304f\u300d\u306e\u9806\u5e8f\u3067\u8d70\u67fb\u3059\u308b\u3053\u3068\u306e\u307f\u3092\u8981\u6c42\u3057\u3001\u540c\u3058\u8ddd\u96e2\u306e\u9802\u70b9\u306e\u8d70\u67fb\u9806\u5e8f\u306f\u4efb\u610f\u306b\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u4e0a\u56f3\u3067\u306f\u3001\u9802\u70b9\\(1\\)\u3068\\(3\\)\u306e\u8a2a\u554f\u9806\u5e8f\u3092\u4ea4\u63db\u3067\u304d\u307e\u3059\u3057\u3001\u9802\u70b9\\(2\\)\u3001\\(4\\)\u3001\\(6\\)\u306e\u9806\u5e8f\u3082\u540c\u69d8\u3067\u3059\u3002</p>"},{"location":"chapter_graph/graph_traversal/#2","title":"2. \u00a0 \u8a08\u7b97\u91cf\u5206\u6790","text":"<p>\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u3059\u3079\u3066\u306e\u9802\u70b9\u304c\u4e00\u5ea6\u305a\u3064\u30a8\u30f3\u30ad\u30e5\u30fc\u304a\u3088\u3073\u30c7\u30ad\u30e5\u30fc\u3055\u308c\u3001\\(O(|V|)\\)\u6642\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u96a3\u63a5\u9802\u70b9\u3092\u8d70\u67fb\u3059\u308b\u904e\u7a0b\u3067\u3001\u7121\u5411\u30b0\u30e9\u30d5\u3067\u3042\u308b\u305f\u3081\u3001\u3059\u3079\u3066\u306e\u8fba\u304c\\(2\\)\u56de\u8a2a\u554f\u3055\u308c\u3001\\(O(2|E|)\\)\u6642\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u5168\u4f53\u3067\\(O(|V| + |E|)\\)\u6642\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</p> <p>\u7a7a\u9593\u8a08\u7b97\u91cf\uff1a\u30ea\u30b9\u30c8<code>res</code>\u3001\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8<code>visited</code>\u3001\u30ad\u30e5\u30fc<code>que</code>\u306e\u6700\u5927\u9802\u70b9\u6570\u306f\\(|V|\\)\u3067\u3001\\(O(|V|)\\)\u7a7a\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_graph/graph_traversal/#932","title":"9.3.2 \u00a0 \u6df1\u3055\u512a\u5148\u63a2\u7d22","text":"<p>\u6df1\u3055\u512a\u5148\u63a2\u7d22\u306f\u53ef\u80fd\u306a\u9650\u308a\u9060\u304f\u307e\u3067\u884c\u304d\u3001\u305d\u308c\u4ee5\u4e0a\u306e\u30d1\u30b9\u304c\u306a\u3044\u5834\u5408\u306b\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30af\u3059\u308b\u8d70\u67fb\u65b9\u6cd5\u3067\u3059\u3002\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u5de6\u4e0a\u306e\u9802\u70b9\u304b\u3089\u958b\u59cb\u3057\u3001\u305d\u308c\u4ee5\u4e0a\u306e\u30d1\u30b9\u304c\u306a\u304f\u306a\u308b\u307e\u3067\u73fe\u5728\u306e\u9802\u70b9\u306e\u3044\u305a\u308c\u304b\u306e\u96a3\u63a5\u9802\u70b9\u3092\u8a2a\u554f\u3057\u3001\u6b21\u306b\u623b\u3063\u3066\u7d9a\u884c\u3057\u3001\u3059\u3079\u3066\u306e\u9802\u70b9\u304c\u8d70\u67fb\u3055\u308c\u308b\u307e\u3067\u7d9a\u3051\u307e\u3059\u3002</p> <p></p> <p> \u56f3 9-11 \u00a0 \u30b0\u30e9\u30d5\u306e\u6df1\u3055\u512a\u5148\u8d70\u67fb </p>"},{"location":"chapter_graph/graph_traversal/#1_1","title":"1. \u00a0 \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5b9f\u88c5","text":"<p>\u3053\u306e\u300c\u53ef\u80fd\u306a\u9650\u308a\u9060\u304f\u307e\u3067\u884c\u3063\u3066\u304b\u3089\u623b\u308b\u300d\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u30d1\u30e9\u30c0\u30a4\u30e0\u306f\u901a\u5e38\u518d\u5e30\u306b\u57fa\u3065\u3044\u3066\u5b9f\u88c5\u3055\u308c\u307e\u3059\u3002\u5e45\u512a\u5148\u63a2\u7d22\u3068\u540c\u69d8\u306b\u3001\u6df1\u3055\u512a\u5148\u63a2\u7d22\u3067\u3082\u3001\u518d\u8a2a\u554f\u3092\u907f\u3051\u308b\u305f\u3081\u306b\u8a2a\u554f\u6e08\u307f\u9802\u70b9\u3092\u8a18\u9332\u3059\u308b\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8<code>visited</code>\u306e\u52a9\u3051\u304c\u5fc5\u8981\u3067\u3059\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby graph_dfs.py<pre><code>def dfs(graph: GraphAdjList, visited: set[Vertex], res: list[Vertex], vet: Vertex):\n \"\"\"\u6df1\u3055\u512a\u5148\u8d70\u67fb\u306e\u30d8\u30eb\u30d1\u30fc\u95a2\u6570\"\"\"\n res.append(vet) # \u8a2a\u554f\u6e08\u307f\u9802\u70b9\u3092\u8a18\u9332\n visited.add(vet) # \u9802\u70b9\u3092\u8a2a\u554f\u6e08\u307f\u3068\u3057\u3066\u30de\u30fc\u30af\n # \u305d\u306e\u9802\u70b9\u306e\u3059\u3079\u3066\u306e\u96a3\u63a5\u9802\u70b9\u3092\u8d70\u67fb\n for adjVet in graph.adj_list[vet]:\n if adjVet in visited:\n continue # \u65e2\u306b\u8a2a\u554f\u6e08\u307f\u306e\u9802\u70b9\u3092\u30b9\u30ad\u30c3\u30d7\n # \u96a3\u63a5\u9802\u70b9\u3092\u518d\u5e30\u7684\u306b\u8a2a\u554f\n dfs(graph, visited, res, adjVet)\n\ndef graph_dfs(graph: GraphAdjList, start_vet: Vertex) -&gt; list[Vertex]:\n \"\"\"\u6df1\u3055\u512a\u5148\u8d70\u67fb\"\"\"\n # \u96a3\u63a5\u30ea\u30b9\u30c8\u3092\u4f7f\u7528\u3057\u3066\u30b0\u30e9\u30d5\u3092\u8868\u73fe\u3057\u3001\u6307\u5b9a\u3055\u308c\u305f\u9802\u70b9\u306e\u3059\u3079\u3066\u306e\u96a3\u63a5\u9802\u70b9\u3092\u53d6\u5f97\n # \u9802\u70b9\u8d70\u67fb\u30b7\u30fc\u30b1\u30f3\u30b9\n res = []\n # \u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3001\u8a2a\u554f\u6e08\u307f\u9802\u70b9\u3092\u8a18\u9332\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\n visited = set[Vertex]()\n dfs(graph, visited, res, start_vet)\n return res\n</code></pre> graph_dfs.cpp<pre><code>/* \u6df1\u3055\u512a\u5148\u8d70\u67fb\u30d8\u30eb\u30d1\u30fc\u95a2\u6570 */\nvoid dfs(GraphAdjList &amp;graph, unordered_set&lt;Vertex *&gt; &amp;visited, vector&lt;Vertex *&gt; &amp;res, Vertex *vet) {\n res.push_back(vet); // \u8a2a\u554f\u6e08\u307f\u9802\u70b9\u3092\u8a18\u9332\n visited.emplace(vet); // \u9802\u70b9\u3092\u8a2a\u554f\u6e08\u307f\u3068\u3057\u3066\u30de\u30fc\u30af\n // \u305d\u306e\u9802\u70b9\u306e\u3059\u3079\u3066\u306e\u96a3\u63a5\u9802\u70b9\u3092\u8d70\u67fb\n for (Vertex *adjVet : graph.adjList[vet]) {\n if (visited.count(adjVet))\n continue; // \u3059\u3067\u306b\u8a2a\u554f\u6e08\u307f\u306e\u9802\u70b9\u3092\u30b9\u30ad\u30c3\u30d7\n // \u96a3\u63a5\u9802\u70b9\u3092\u518d\u5e30\u7684\u306b\u8a2a\u554f\n dfs(graph, visited, res, adjVet);\n }\n}\n\n/* \u6df1\u3055\u512a\u5148\u8d70\u67fb */\n// \u96a3\u63a5\u30ea\u30b9\u30c8\u3092\u4f7f\u7528\u3057\u3066\u30b0\u30e9\u30d5\u3092\u8868\u73fe\u3057\u3001\u6307\u5b9a\u3055\u308c\u305f\u9802\u70b9\u306e\u3059\u3079\u3066\u306e\u96a3\u63a5\u9802\u70b9\u3092\u53d6\u5f97\nvector&lt;Vertex *&gt; graphDFS(GraphAdjList &amp;graph, Vertex *startVet) {\n // \u9802\u70b9\u8d70\u67fb\u9806\u5e8f\n vector&lt;Vertex *&gt; res;\n // \u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3001\u8a2a\u554f\u6e08\u307f\u9802\u70b9\u3092\u8a18\u9332\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\n unordered_set&lt;Vertex *&gt; visited;\n dfs(graph, visited, res, startVet);\n return res;\n}\n</code></pre> graph_dfs.java<pre><code>/* \u6df1\u3055\u512a\u5148\u8d70\u67fb\u306e\u88dc\u52a9\u95a2\u6570 */\nvoid dfs(GraphAdjList graph, Set&lt;Vertex&gt; visited, List&lt;Vertex&gt; res, Vertex vet) {\n res.add(vet); // \u8a2a\u554f\u3057\u305f\u9802\u70b9\u3092\u8a18\u9332\n visited.add(vet); // \u9802\u70b9\u3092\u8a2a\u554f\u6e08\u307f\u3068\u3057\u3066\u30de\u30fc\u30af\n // \u305d\u306e\u9802\u70b9\u306e\u3059\u3079\u3066\u306e\u96a3\u63a5\u9802\u70b9\u3092\u8d70\u67fb\n for (Vertex adjVet : graph.adjList.get(vet)) {\n if (visited.contains(adjVet))\n continue; // \u3059\u3067\u306b\u8a2a\u554f\u6e08\u307f\u306e\u9802\u70b9\u3092\u30b9\u30ad\u30c3\u30d7\n // \u96a3\u63a5\u9802\u70b9\u3092\u518d\u5e30\u7684\u306b\u8a2a\u554f\n dfs(graph, visited, res, adjVet);\n }\n}\n\n/* \u6df1\u3055\u512a\u5148\u8d70\u67fb */\n// \u96a3\u63a5\u30ea\u30b9\u30c8\u3092\u4f7f\u7528\u3057\u3066\u30b0\u30e9\u30d5\u3092\u8868\u73fe\u3057\u3001\u6307\u5b9a\u3057\u305f\u9802\u70b9\u306e\u3059\u3079\u3066\u306e\u96a3\u63a5\u9802\u70b9\u3092\u53d6\u5f97\nList&lt;Vertex&gt; graphDFS(GraphAdjList graph, Vertex startVet) {\n // \u9802\u70b9\u8d70\u67fb\u9806\u5e8f\n List&lt;Vertex&gt; res = new ArrayList&lt;&gt;();\n // \u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3001\u8a2a\u554f\u6e08\u307f\u306e\u9802\u70b9\u3092\u8a18\u9332\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\n Set&lt;Vertex&gt; visited = new HashSet&lt;&gt;();\n dfs(graph, visited, res, startVet);\n return res;\n}\n</code></pre> graph_dfs.cs<pre><code>[class]{graph_dfs}-[func]{DFS}\n\n[class]{graph_dfs}-[func]{GraphDFS}\n</code></pre> graph_dfs.go<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{graphDFS}\n</code></pre> graph_dfs.swift<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{graphDFS}\n</code></pre> graph_dfs.js<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{graphDFS}\n</code></pre> graph_dfs.ts<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{graphDFS}\n</code></pre> graph_dfs.dart<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{graphDFS}\n</code></pre> graph_dfs.rs<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{graph_dfs}\n</code></pre> graph_dfs.c<pre><code>[class]{}-[func]{isVisited}\n\n[class]{}-[func]{dfs}\n\n[class]{}-[func]{graphDFS}\n</code></pre> graph_dfs.kt<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{graphDFS}\n</code></pre> graph_dfs.rb<pre><code>[class]{}-[func]{dfs}\n\n[class]{}-[func]{graph_dfs}\n</code></pre> <p>\u6df1\u3055\u512a\u5148\u63a2\u7d22\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u30d7\u30ed\u30bb\u30b9\u3092\u4e0b\u56f3\u306b\u793a\u3057\u307e\u3059\u3002</p> <ul> <li>\u7834\u7dda\u306f\u4e0b\u5411\u304d\u306e\u518d\u5e30\u3092\u8868\u3057\u3001\u65b0\u3057\u3044\u9802\u70b9\u3092\u8a2a\u554f\u3059\u308b\u305f\u3081\u306b\u65b0\u3057\u3044\u518d\u5e30\u30e1\u30bd\u30c3\u30c9\u304c\u958b\u59cb\u3055\u308c\u305f\u3053\u3068\u3092\u793a\u3057\u307e\u3059\u3002</li> <li>\u66f2\u7dda\u306e\u7834\u7dda\u306f\u4e0a\u5411\u304d\u306e\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30af\u3092\u8868\u3057\u3001\u3053\u306e\u518d\u5e30\u30e1\u30bd\u30c3\u30c9\u304c\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u304c\u958b\u59cb\u3055\u308c\u305f\u4f4d\u7f6e\u306b\u623b\u3063\u305f\u3053\u3068\u3092\u793a\u3057\u307e\u3059\u3002</li> </ul> <p>\u7406\u89e3\u3092\u6df1\u3081\u308b\u305f\u3081\u3001\u4e0b\u56f3\u3068\u30b3\u30fc\u30c9\u3092\u7d44\u307f\u5408\u308f\u305b\u3066\u3001DFS\u30d7\u30ed\u30bb\u30b9\u5168\u4f53\u3092\u982d\u306e\u4e2d\u3067\u30b7\u30df\u30e5\u30ec\u30fc\u30c8\uff08\u307e\u305f\u306f\u63cf\u753b\uff09\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002\u5404\u518d\u5e30\u30e1\u30bd\u30c3\u30c9\u304c\u3044\u3064\u958b\u59cb\u3055\u308c\u3001\u3044\u3064\u623b\u308b\u304b\u3092\u542b\u3081\u3066\u3067\u3059\u3002</p> &lt;1&gt;&lt;2&gt;&lt;3&gt;&lt;4&gt;&lt;5&gt;&lt;6&gt;&lt;7&gt;&lt;8&gt;&lt;9&gt;&lt;10&gt;&lt;11&gt; <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p> \u56f3 9-12 \u00a0 \u30b0\u30e9\u30d5\u306e\u6df1\u3055\u512a\u5148\u63a2\u7d22\u306e\u624b\u9806 </p> <p>\u6df1\u3055\u512a\u5148\u8d70\u67fb\u306e\u30b7\u30fc\u30b1\u30f3\u30b9\u306f\u4e00\u610f\u3067\u3059\u304b\uff1f</p> <p>\u5e45\u512a\u5148\u8d70\u67fb\u3068\u540c\u69d8\u306b\u3001\u6df1\u3055\u512a\u5148\u8d70\u67fb\u30b7\u30fc\u30b1\u30f3\u30b9\u306e\u9806\u5e8f\u3082\u4e00\u610f\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u3042\u308b\u9802\u70b9\u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u3001\u3069\u306e\u65b9\u5411\u3092\u6700\u521d\u306b\u63a2\u7d22\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u3002\u3064\u307e\u308a\u3001\u96a3\u63a5\u9802\u70b9\u306e\u9806\u5e8f\u306f\u4efb\u610f\u306b\u30b7\u30e3\u30c3\u30d5\u30eb\u3067\u304d\u307e\u3059\u304c\u3001\u3059\u3079\u3066\u6df1\u3055\u512a\u5148\u8d70\u67fb\u306e\u4e00\u90e8\u3067\u3059\u3002</p> <p>\u6728\u306e\u8d70\u67fb\u3092\u4f8b\u306b\u53d6\u308b\u3068\u3001\u300c\u6839 \\(\\rightarrow\\) \u5de6 \\(\\rightarrow\\) \u53f3\u300d\u3001\u300c\u5de6 \\(\\rightarrow\\) \u6839 \\(\\rightarrow\\) \u53f3\u300d\u3001\u300c\u5de6 \\(\\rightarrow\\) \u53f3 \\(\\rightarrow\\) \u6839\u300d\u306f\u3001\u305d\u308c\u305e\u308c\u524d\u9806\u3001\u4e2d\u9806\u3001\u5f8c\u9806\u8d70\u67fb\u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306f3\u3064\u306e\u7570\u306a\u308b\u8d70\u67fb\u512a\u5148\u5ea6\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u304c\u30013\u3064\u3059\u3079\u3066\u304c\u6df1\u3055\u512a\u5148\u8d70\u67fb\u3068\u898b\u306a\u3055\u308c\u307e\u3059\u3002</p>"},{"location":"chapter_graph/graph_traversal/#2_1","title":"2. \u00a0 \u8a08\u7b97\u91cf\u5206\u6790","text":"<p>\u6642\u9593\u8a08\u7b97\u91cf\uff1a\u3059\u3079\u3066\u306e\u9802\u70b9\u304c\u4e00\u5ea6\u8a2a\u554f\u3055\u308c\u3001\\(O(|V|)\\)\u6642\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u3059\u3079\u3066\u306e\u8fba\u304c2\u56de\u8a2a\u554f\u3055\u308c\u3001\\(O(2|E|)\\)\u6642\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u5168\u4f53\u3067\\(O(|V| + |E|)\\)\u6642\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</p> <p>\u7a7a\u9593\u8a08\u7b97\u91cf\uff1a\u30ea\u30b9\u30c8<code>res</code>\u3001\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8<code>visited</code>\u306e\u6700\u5927\u9802\u70b9\u6570\u306f\\(|V|\\)\u3067\u3001\u6700\u5927\u518d\u5e30\u6df1\u5ea6\u306f\\(|V|\\)\u3067\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\\(O(|V|)\\)\u7a7a\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_graph/summary/","title":"9.4 \u00a0 \u307e\u3068\u3081","text":""},{"location":"chapter_graph/summary/#1","title":"1. \u00a0 \u91cd\u8981\u306a\u5fa9\u7fd2","text":"<ul> <li>\u30b0\u30e9\u30d5\u306f\u9802\u70b9\u3068\u8fba\u3067\u69cb\u6210\u3055\u308c\u307e\u3059\u3002\u9802\u70b9\u306e\u96c6\u5408\u3068\u8fba\u306e\u96c6\u5408\u3068\u3057\u3066\u8a18\u8ff0\u3067\u304d\u307e\u3059\u3002</li> <li>\u7dda\u5f62\u95a2\u4fc2\uff08\u9023\u7d50\u30ea\u30b9\u30c8\u306a\u3069\uff09\u3084\u968e\u5c64\u95a2\u4fc2\uff08\u6728\u306a\u3069\uff09\u3068\u6bd4\u8f03\u3057\u3066\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u95a2\u4fc2\uff08\u30b0\u30e9\u30d5\uff09\u306f\u3088\u308a\u5927\u304d\u306a\u67d4\u8edf\u6027\u3092\u63d0\u4f9b\u3057\u3001\u3088\u308a\u8907\u96d1\u306b\u306a\u308a\u307e\u3059\u3002</li> <li>\u6709\u5411\u30b0\u30e9\u30d5\u3067\u306f\u3001\u8fba\u306b\u65b9\u5411\u304c\u3042\u308a\u307e\u3059\u3002\u9023\u7d50\u30b0\u30e9\u30d5\u3067\u306f\u3001\u4efb\u610f\u306e\u9802\u70b9\u304b\u3089\u4ed6\u306e\u4efb\u610f\u306e\u9802\u70b9\u306b\u5230\u9054\u3067\u304d\u307e\u3059\u3002\u91cd\u307f\u4ed8\u304d\u30b0\u30e9\u30d5\u3067\u306f\u3001\u5404\u8fba\u306b\u95a2\u9023\u3059\u308b\u91cd\u307f\u5909\u6570\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u96a3\u63a5\u884c\u5217\u306f\u3001\u884c\u5217\uff082\u6b21\u5143\u914d\u5217\uff09\u3092\u4f7f\u7528\u3057\u3066\u30b0\u30e9\u30d5\u3092\u8868\u73fe\u3059\u308b\u65b9\u6cd5\u3067\u3059\u3002\u884c\u3068\u5217\u306f\u9802\u70b9\u3092\u8868\u3057\u307e\u3059\u3002\u884c\u5217\u8981\u7d20\u306e\u5024\u306f\u30012\u3064\u306e\u9802\u70b9\u9593\u306b\u8fba\u304c\u3042\u308b\u304b\u3069\u3046\u304b\u3092\u793a\u3057\u3001\u8fba\u304c\u3042\u308b\u5834\u5408\u306f\\(1\\)\u3001\u306a\u3044\u5834\u5408\u306f\\(0\\)\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u96a3\u63a5\u884c\u5217\u306f\u8fba\u306e\u8ffd\u52a0\u3001\u524a\u9664\u3001\u30c1\u30a7\u30c3\u30af\u306a\u3069\u306e\u64cd\u4f5c\u306b\u975e\u5e38\u306b\u52b9\u7387\u7684\u3067\u3059\u304c\u3001\u3088\u308a\u591a\u304f\u306e\u30b9\u30da\u30fc\u30b9\u304c\u5fc5\u8981\u3067\u3059\u3002</li> <li>\u96a3\u63a5\u30ea\u30b9\u30c8\u306f\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u96c6\u5408\u3092\u4f7f\u7528\u3057\u3066\u30b0\u30e9\u30d5\u3092\u8868\u73fe\u3059\u308b\u3082\u3046\u4e00\u3064\u306e\u4e00\u822c\u7684\u306a\u65b9\u6cd5\u3067\u3059\u3002\u30b0\u30e9\u30d5\u5185\u306e\u5404\u9802\u70b9\u306b\u306f\u3001\u305d\u306e\u96a3\u63a5\u3059\u308b\u3059\u3079\u3066\u306e\u9802\u70b9\u3092\u542b\u3080\u30ea\u30b9\u30c8\u304c\u3042\u308a\u307e\u3059\u3002\\(i\\)\u756a\u76ee\u306e\u30ea\u30b9\u30c8\u306f\u9802\u70b9\\(i\\)\u3092\u8868\u3057\u307e\u3059\u3002\u96a3\u63a5\u30ea\u30b9\u30c8\u306f\u96a3\u63a5\u884c\u5217\u3068\u6bd4\u8f03\u3057\u3066\u3088\u308a\u5c11\u306a\u3044\u30b9\u30da\u30fc\u30b9\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u8fba\u3092\u898b\u3064\u3051\u308b\u305f\u3081\u306b\u30ea\u30b9\u30c8\u3092\u8d70\u67fb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u305f\u3081\u3001\u6642\u9593\u52b9\u7387\u306f\u4f4e\u304f\u306a\u308a\u307e\u3059\u3002</li> <li>\u96a3\u63a5\u30ea\u30b9\u30c8\u306e\u9023\u7d50\u30ea\u30b9\u30c8\u304c\u5341\u5206\u306b\u9577\u304f\u306a\u3063\u305f\u3068\u304d\u3001\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u52b9\u7387\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306b\u8d64\u9ed2\u6728\u3084\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u306b\u5909\u63db\u3067\u304d\u307e\u3059\u3002</li> <li>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u8a2d\u8a08\u306e\u89b3\u70b9\u304b\u3089\u3001\u96a3\u63a5\u884c\u5217\u306f\u300c\u7a7a\u9593\u3068\u6642\u9593\u306e\u30c8\u30ec\u30fc\u30c9\u30aa\u30d5\u300d\u306e\u6982\u5ff5\u3092\u53cd\u6620\u3057\u3001\u96a3\u63a5\u30ea\u30b9\u30c8\u306f\u300c\u6642\u9593\u3068\u7a7a\u9593\u306e\u30c8\u30ec\u30fc\u30c9\u30aa\u30d5\u300d\u3092\u53cd\u6620\u3057\u307e\u3059\u3002</li> <li>\u30b0\u30e9\u30d5\u306f\u3001\u30bd\u30fc\u30b7\u30e3\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3084\u5730\u4e0b\u9244\u8def\u7dda\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u73fe\u5b9f\u4e16\u754c\u306e\u30b7\u30b9\u30c6\u30e0\u3092\u30e2\u30c7\u30eb\u5316\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002</li> <li>\u6728\u306f\u30b0\u30e9\u30d5\u306e\u7279\u5225\u306a\u30b1\u30fc\u30b9\u3067\u3042\u308a\u3001\u6728\u306e\u8d70\u67fb\u3082\u30b0\u30e9\u30d5\u8d70\u67fb\u306e\u7279\u5225\u306a\u30b1\u30fc\u30b9\u3067\u3059\u3002</li> <li>\u30b0\u30e9\u30d5\u306e\u5e45\u512a\u5148\u8d70\u67fb\u306f\u3001\u8fd1\u304f\u304b\u3089\u9060\u304f\u3078\u3068\u5c64\u3054\u3068\u306b\u62e1\u5f35\u3059\u308b\u63a2\u7d22\u65b9\u6cd5\u3067\u3001\u901a\u5e38\u30ad\u30e5\u30fc\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</li> <li>\u30b0\u30e9\u30d5\u306e\u6df1\u3055\u512a\u5148\u8d70\u67fb\u306f\u3001\u305d\u308c\u4ee5\u4e0a\u306e\u30d1\u30b9\u304c\u306a\u3044\u5834\u5408\u306b\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30af\u3059\u308b\u524d\u306b\u3001\u307e\u305a\u7d42\u7aef\u306b\u5230\u9054\u3059\u308b\u3053\u3068\u3092\u512a\u5148\u3059\u308b\u63a2\u7d22\u65b9\u6cd5\u3067\u3059\u3002\u3057\u3070\u3057\u3070\u518d\u5e30\u3092\u4f7f\u7528\u3057\u3066\u5b9f\u88c5\u3055\u308c\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_graph/summary/#2-q-a","title":"2. \u00a0 Q &amp; A","text":"<p>Q: \u30d1\u30b9\u306f\u9802\u70b9\u306e\u30b7\u30fc\u30b1\u30f3\u30b9\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u304b\u3001\u305d\u308c\u3068\u3082\u8fba\u306e\u30b7\u30fc\u30b1\u30f3\u30b9\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u304b\uff1f</p> <p>\u30b0\u30e9\u30d5\u7406\u8ad6\u3067\u306f\u3001\u30b0\u30e9\u30d5\u5185\u306e\u30d1\u30b9\u306f\u9802\u70b9\u306e\u30b7\u30fc\u30b1\u30f3\u30b9\u3092\u7d50\u3076\u6709\u9650\u307e\u305f\u306f\u7121\u9650\u306e\u8fba\u306e\u30b7\u30fc\u30b1\u30f3\u30b9\u3067\u3059\u3002</p> <p>\u3053\u306e\u6587\u66f8\u3067\u306f\u3001\u30d1\u30b9\u306f\u9802\u70b9\u306e\u30b7\u30fc\u30b1\u30f3\u30b9\u3067\u306f\u306a\u304f\u3001\u8fba\u306e\u30b7\u30fc\u30b1\u30f3\u30b9\u3068\u8003\u3048\u3089\u308c\u307e\u3059\u3002\u3053\u308c\u306f\u30012\u3064\u306e\u9802\u70b9\u3092\u7d50\u3076\u8907\u6570\u306e\u8fba\u304c\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u3001\u305d\u306e\u5834\u5408\u5404\u8fba\u304c\u30d1\u30b9\u306b\u5bfe\u5fdc\u3059\u308b\u305f\u3081\u3067\u3059\u3002</p> <p>Q: \u975e\u9023\u7d50\u30b0\u30e9\u30d5\u3067\u306f\u3001\u8d70\u67fb\u3067\u304d\u306a\u3044\u70b9\u304c\u3042\u308a\u307e\u3059\u304b\uff1f</p> <p>\u975e\u9023\u7d50\u30b0\u30e9\u30d5\u3067\u306f\u3001\u7279\u5b9a\u306e\u70b9\u304b\u3089\u5230\u9054\u3067\u304d\u306a\u3044\u9802\u70b9\u304c\u5c11\u306a\u304f\u3068\u30821\u3064\u3042\u308a\u307e\u3059\u3002\u975e\u9023\u7d50\u30b0\u30e9\u30d5\u3092\u8d70\u67fb\u3059\u308b\u306b\u306f\u3001\u30b0\u30e9\u30d5\u306e\u3059\u3079\u3066\u306e\u9023\u7d50\u6210\u5206\u3092\u8d70\u67fb\u3059\u308b\u305f\u3081\u306b\u8907\u6570\u306e\u958b\u59cb\u70b9\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>Q: \u96a3\u63a5\u30ea\u30b9\u30c8\u3067\u3001\u300c\u305d\u306e\u9802\u70b9\u306b\u63a5\u7d9a\u3055\u308c\u305f\u3059\u3079\u3066\u306e\u9802\u70b9\u300d\u306e\u9806\u5e8f\u306f\u91cd\u8981\u3067\u3059\u304b\uff1f</p> <p>\u4efb\u610f\u306e\u9806\u5e8f\u3067\u69cb\u3044\u307e\u305b\u3093\u3002\u305f\u3060\u3057\u3001\u5b9f\u969b\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u3001\u9802\u70b9\u304c\u8ffd\u52a0\u3055\u308c\u305f\u9806\u5e8f\u3084\u9802\u70b9\u5024\u306e\u9806\u5e8f\u306a\u3069\u3001\u7279\u5b9a\u306e\u30eb\u30fc\u30eb\u306b\u5f93\u3063\u3066\u305d\u308c\u3089\u3092\u30bd\u30fc\u30c8\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u7279\u5b9a\u306e\u6975\u5024\u3092\u6301\u3064\u9802\u70b9\u3092\u7d20\u65e9\u304f\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</p>"},{"location":"chapter_greedy/","title":"\u7b2c 15 \u7ae0 \u00a0 \u8caa\u6b32\u6cd5","text":"<p>Abstract</p> <p>\u3072\u307e\u308f\u308a\u306f\u592a\u967d\u306e\u65b9\u3092\u5411\u304d\u3001\u5e38\u306b\u81ea\u5206\u306b\u3068\u3063\u3066\u6700\u5927\u306e\u6210\u9577\u3092\u6c42\u3081\u307e\u3059\u3002</p> <p>\u8caa\u6b32\u306a\u6226\u7565\u306f\u3001\u4e00\u9023\u306e\u5358\u7d14\u306a\u9078\u629e\u3092\u901a\u3058\u3066\u3001\u6bb5\u968e\u7684\u306b\u6700\u826f\u306e\u7b54\u3048\u3078\u3068\u5c0e\u304d\u307e\u3059\u3002</p>"},{"location":"chapter_greedy/#_1","title":"\u7ae0\u306e\u5185\u5bb9","text":"<ul> <li>15.1 \u00a0 \u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0</li> <li>15.2 \u00a0 \u5206\u6570\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c</li> <li>15.3 \u00a0 \u6700\u5927\u5bb9\u91cf\u554f\u984c</li> <li>15.4 \u00a0 \u6700\u5927\u7a4d\u5206\u5272\u554f\u984c</li> <li>15.5 \u00a0 \u307e\u3068\u3081</li> </ul>"},{"location":"chapter_greedy/fractional_knapsack_problem/","title":"15.2 \u00a0 \u5206\u6570\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c","text":"<p>Question</p> <p>\\(n\\) \u500b\u306e\u30a2\u30a4\u30c6\u30e0\u304c\u4e0e\u3048\u3089\u308c\u3001\\(i\\) \u756a\u76ee\u306e\u30a2\u30a4\u30c6\u30e0\u306e\u91cd\u91cf\u306f \\(wgt[i-1]\\) \u3067\u5024\u306f \\(val[i-1]\\) \u3067\u3059\u3002\u5bb9\u91cf\u304c \\(cap\\) \u306e\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u304c\u3042\u308a\u307e\u3059\u3002\u5404\u30a2\u30a4\u30c6\u30e0\u306f1\u56de\u306e\u307f\u9078\u629e\u3067\u304d\u307e\u3059\u304c\u3001\u30a2\u30a4\u30c6\u30e0\u306e\u4e00\u90e8\u3092\u9078\u629e\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u305d\u306e\u5024\u306f\u9078\u629e\u3055\u308c\u305f\u91cd\u91cf\u306e\u5272\u5408\u306b\u57fa\u3065\u3044\u3066\u8a08\u7b97\u3055\u308c\u307e\u3059\u3002\u9650\u3089\u308c\u305f\u5bb9\u91cf\u306e\u4e0b\u3067\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u5185\u306e\u30a2\u30a4\u30c6\u30e0\u306e\u6700\u5927\u5024\u306f\u4f55\u3067\u3059\u304b\uff1f\u4f8b\u3092\u4e0b\u306e\u56f3\u306b\u793a\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 15-3 \u00a0 \u5206\u6570\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u306e\u4f8b\u30c7\u30fc\u30bf </p> <p>\u5206\u6570\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u306f\u5168\u4f53\u7684\u306b0-1\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u3068\u975e\u5e38\u306b\u4f3c\u3066\u304a\u308a\u3001\u73fe\u5728\u306e\u30a2\u30a4\u30c6\u30e0 \\(i\\) \u3068\u5bb9\u91cf \\(c\\) \u3092\u542b\u307f\u3001\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306e\u9650\u3089\u308c\u305f\u5bb9\u91cf\u5185\u3067\u5024\u3092\u6700\u5927\u5316\u3059\u308b\u3053\u3068\u3092\u76ee\u7684\u3068\u3057\u3066\u3044\u307e\u3059\u3002</p> <p>\u9055\u3044\u306f\u3001\u3053\u306e\u554f\u984c\u3067\u306f\u30a2\u30a4\u30c6\u30e0\u306e\u4e00\u90e8\u306e\u307f\u3092\u9078\u629e\u3067\u304d\u308b\u3053\u3068\u3067\u3059\u3002\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u30a2\u30a4\u30c6\u30e0\u3092\u4efb\u610f\u306b\u5206\u5272\u3057\u3001\u91cd\u91cf\u306e\u5272\u5408\u306b\u57fa\u3065\u3044\u3066\u5bfe\u5fdc\u3059\u308b\u5024\u3092\u8a08\u7b97\u3067\u304d\u307e\u3059\u3002</p> <ol> <li>\u30a2\u30a4\u30c6\u30e0 \\(i\\) \u306b\u3064\u3044\u3066\u3001\u305d\u306e\u5358\u4f4d\u91cd\u91cf\u3042\u305f\u308a\u306e\u5024\u306f \\(val[i-1] / wgt[i-1]\\) \u3067\u3001\u5358\u4f4d\u5024\u3068\u547c\u3070\u308c\u307e\u3059\u3002</li> <li>\u91cd\u91cf \\(w\\) \u306e\u30a2\u30a4\u30c6\u30e0 \\(i\\) \u306e\u4e00\u90e8\u3092\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306b\u5165\u308c\u308b\u3068\u3059\u308b\u3068\u3001\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306b\u8ffd\u52a0\u3055\u308c\u308b\u5024\u306f \\(w \\times val[i-1] / wgt[i-1]\\) \u3067\u3059\u3002</li> </ol> <p></p> <p> \u56f3 15-4 \u00a0 \u30a2\u30a4\u30c6\u30e0\u306e\u5358\u4f4d\u91cd\u91cf\u3042\u305f\u308a\u306e\u5024 </p>"},{"location":"chapter_greedy/fractional_knapsack_problem/#1","title":"1. \u00a0 \u8caa\u6b32\u6226\u7565\u306e\u6c7a\u5b9a","text":"<p>\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u5185\u306e\u30a2\u30a4\u30c6\u30e0\u306e\u7dcf\u5024\u3092\u6700\u5927\u5316\u3059\u308b\u3053\u3068\u306f\u3001\u672c\u8cea\u7684\u306b\u5358\u4f4d\u91cd\u91cf\u3042\u305f\u308a\u306e\u5024\u3092\u6700\u5927\u5316\u3059\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u3053\u308c\u304b\u3089\u3001\u4e0b\u306e\u56f3\u306b\u793a\u3059\u8caa\u6b32\u6226\u7565\u3092\u5c0e\u51fa\u3067\u304d\u307e\u3059\u3002</p> <ol> <li>\u30a2\u30a4\u30c6\u30e0\u3092\u5358\u4f4d\u5024\u306e\u9ad8\u3044\u9806\u304b\u3089\u4f4e\u3044\u9806\u306b\u30bd\u30fc\u30c8\u3057\u307e\u3059\u3002</li> <li>\u3059\u3079\u3066\u306e\u30a2\u30a4\u30c6\u30e0\u3092\u53cd\u5fa9\u3057\u3001**\u5404\u30e9\u30a6\u30f3\u30c9\u3067\u6700\u3082\u9ad8\u3044\u5358\u4f4d\u5024\u3092\u6301\u3064\u30a2\u30a4\u30c6\u30e0\u3092\u8caa\u6b32\u306b\u9078\u629e**\u3057\u307e\u3059\u3002</li> <li>\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306e\u6b8b\u308a\u5bb9\u91cf\u304c\u4e0d\u5341\u5206\u306a\u5834\u5408\u3001\u73fe\u5728\u306e\u30a2\u30a4\u30c6\u30e0\u306e\u4e00\u90e8\u3092\u4f7f\u7528\u3057\u3066\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u3092\u6e80\u305f\u3057\u307e\u3059\u3002</li> </ol> <p></p> <p> \u56f3 15-5 \u00a0 \u5206\u6570\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u306e\u8caa\u6b32\u6226\u7565 </p>"},{"location":"chapter_greedy/fractional_knapsack_problem/#2","title":"2. \u00a0 \u30b3\u30fc\u30c9\u5b9f\u88c5","text":"<p>\u30a2\u30a4\u30c6\u30e0\u3092\u5358\u4f4d\u5024\u3067\u30bd\u30fc\u30c8\u3059\u308b\u305f\u3081\u306b <code>Item</code> \u30af\u30e9\u30b9\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u304c\u6e80\u305f\u3055\u308c\u308b\u307e\u3067\u30eb\u30fc\u30d7\u3057\u3066\u8caa\u6b32\u306a\u9078\u629e\u3092\u884c\u3044\u3001\u305d\u306e\u5f8c\u7d42\u4e86\u3057\u3066\u89e3\u3092\u8fd4\u3057\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby fractional_knapsack.py<pre><code>class Item:\n \"\"\"\u30a2\u30a4\u30c6\u30e0\"\"\"\n\n def __init__(self, w: int, v: int):\n self.w = w # \u30a2\u30a4\u30c6\u30e0\u306e\u91cd\u91cf\n self.v = v # \u30a2\u30a4\u30c6\u30e0\u306e\u4fa1\u5024\n\ndef fractional_knapsack(wgt: list[int], val: list[int], cap: int) -&gt; int:\n \"\"\"\u5206\u6570\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\uff1a\u8caa\u6b32\u6cd5\"\"\"\n # \u30a2\u30a4\u30c6\u30e0\u30ea\u30b9\u30c8\u3092\u4f5c\u6210\u30012 \u3064\u306e\u5c5e\u6027\u3092\u542b\u3080\uff1a\u91cd\u91cf\u3001\u4fa1\u5024\n items = [Item(w, v) for w, v in zip(wgt, val)]\n # \u5358\u4f4d\u4fa1\u5024 item.v / item.w \u3067\u9ad8\u3044\u9806\u306b\u30bd\u30fc\u30c8\n items.sort(key=lambda item: item.v / item.w, reverse=True)\n # \u8caa\u6b32\u9078\u629e\u3092\u30eb\u30fc\u30d7\n res = 0\n for item in items:\n if item.w &lt;= cap:\n # \u6b8b\u308a\u5bb9\u91cf\u304c\u5341\u5206\u306a\u5834\u5408\u3001\u30a2\u30a4\u30c6\u30e0\u5168\u4f53\u3092\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306b\u5165\u308c\u308b\n res += item.v\n cap -= item.w\n else:\n # \u6b8b\u308a\u5bb9\u91cf\u304c\u4e0d\u5341\u5206\u306a\u5834\u5408\u3001\u30a2\u30a4\u30c6\u30e0\u306e\u4e00\u90e8\u3092\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306b\u5165\u308c\u308b\n res += (item.v / item.w) * cap\n # \u6b8b\u308a\u5bb9\u91cf\u304c\u306a\u304f\u306a\u3063\u305f\u305f\u3081\u3001\u30eb\u30fc\u30d7\u3092\u4e2d\u65ad\n break\n return res\n</code></pre> fractional_knapsack.cpp<pre><code>/* \u30a2\u30a4\u30c6\u30e0 */\nclass Item {\n public:\n int w; // \u30a2\u30a4\u30c6\u30e0\u306e\u91cd\u91cf\n int v; // \u30a2\u30a4\u30c6\u30e0\u306e\u4fa1\u5024\n\n Item(int w, int v) : w(w), v(v) {\n }\n};\n\n/* \u5206\u6570\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\uff1a\u8caa\u6b32\u6cd5 */\ndouble fractionalKnapsack(vector&lt;int&gt; &amp;wgt, vector&lt;int&gt; &amp;val, int cap) {\n // \u30a2\u30a4\u30c6\u30e0\u30ea\u30b9\u30c8\u3092\u4f5c\u6210\u30012\u3064\u306e\u5c5e\u6027\u3092\u542b\u3080\uff1a\u91cd\u91cf\u3001\u4fa1\u5024\n vector&lt;Item&gt; items;\n for (int i = 0; i &lt; wgt.size(); i++) {\n items.push_back(Item(wgt[i], val[i]));\n }\n // \u5358\u4f4d\u4fa1\u5024 item.v / item.w \u3067\u9ad8\u3044\u9806\u306b\u30bd\u30fc\u30c8\n sort(items.begin(), items.end(), [](Item &amp;a, Item &amp;b) { return (double)a.v / a.w &gt; (double)b.v / b.w; });\n // \u8caa\u6b32\u9078\u629e\u3092\u30eb\u30fc\u30d7\n double res = 0;\n for (auto &amp;item : items) {\n if (item.w &lt;= cap) {\n // \u6b8b\u308a\u5bb9\u91cf\u304c\u5341\u5206\u306a\u5834\u5408\u3001\u30a2\u30a4\u30c6\u30e0\u5168\u4f53\u3092\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306b\u5165\u308c\u308b\n res += item.v;\n cap -= item.w;\n } else {\n // \u6b8b\u308a\u5bb9\u91cf\u304c\u4e0d\u5341\u5206\u306a\u5834\u5408\u3001\u30a2\u30a4\u30c6\u30e0\u306e\u4e00\u90e8\u3092\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306b\u5165\u308c\u308b\n res += (double)item.v / item.w * cap;\n // \u6b8b\u308a\u5bb9\u91cf\u304c\u306a\u304f\u306a\u3063\u305f\u305f\u3081\u3001\u30eb\u30fc\u30d7\u3092\u4e2d\u65ad\n break;\n }\n }\n return res;\n}\n</code></pre> fractional_knapsack.java<pre><code>/* \u30a2\u30a4\u30c6\u30e0 */\nclass Item {\n int w; // \u30a2\u30a4\u30c6\u30e0\u306e\u91cd\u91cf\n int v; // \u30a2\u30a4\u30c6\u30e0\u306e\u4fa1\u5024\n\n public Item(int w, int v) {\n this.w = w;\n this.v = v;\n }\n}\n\n/* \u5206\u6570\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\uff1a\u8caa\u6b32\u6cd5 */\ndouble fractionalKnapsack(int[] wgt, int[] val, int cap) {\n // \u30a2\u30a4\u30c6\u30e0\u30ea\u30b9\u30c8\u3092\u4f5c\u6210\u30012\u3064\u306e\u5c5e\u6027\u3092\u542b\u3080\uff1a\u91cd\u91cf\u3001\u4fa1\u5024\n Item[] items = new Item[wgt.length];\n for (int i = 0; i &lt; wgt.length; i++) {\n items[i] = new Item(wgt[i], val[i]);\n }\n // \u5358\u4f4d\u4fa1\u5024 item.v / item.w \u3067\u9ad8\u3044\u9806\u306b\u30bd\u30fc\u30c8\n Arrays.sort(items, Comparator.comparingDouble(item -&gt; -((double) item.v / item.w)));\n // \u8caa\u6b32\u9078\u629e\u3092\u30eb\u30fc\u30d7\n double res = 0;\n for (Item item : items) {\n if (item.w &lt;= cap) {\n // \u6b8b\u308a\u5bb9\u91cf\u304c\u5341\u5206\u306a\u5834\u5408\u3001\u30a2\u30a4\u30c6\u30e0\u5168\u4f53\u3092\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306b\u5165\u308c\u308b\n res += item.v;\n cap -= item.w;\n } else {\n // \u6b8b\u308a\u5bb9\u91cf\u304c\u4e0d\u5341\u5206\u306a\u5834\u5408\u3001\u30a2\u30a4\u30c6\u30e0\u306e\u4e00\u90e8\u3092\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u306b\u5165\u308c\u308b\n res += (double) item.v / item.w * cap;\n // \u6b8b\u308a\u5bb9\u91cf\u304c\u306a\u304f\u306a\u3063\u305f\u305f\u3081\u3001\u30eb\u30fc\u30d7\u3092\u4e2d\u65ad\n break;\n }\n }\n return res;\n}\n</code></pre> fractional_knapsack.cs<pre><code>[class]{Item}-[func]{}\n\n[class]{fractional_knapsack}-[func]{FractionalKnapsack}\n</code></pre> fractional_knapsack.go<pre><code>[class]{Item}-[func]{}\n\n[class]{}-[func]{fractionalKnapsack}\n</code></pre> fractional_knapsack.swift<pre><code>[class]{Item}-[func]{}\n\n[class]{}-[func]{fractionalKnapsack}\n</code></pre> fractional_knapsack.js<pre><code>[class]{Item}-[func]{}\n\n[class]{}-[func]{fractionalKnapsack}\n</code></pre> fractional_knapsack.ts<pre><code>[class]{Item}-[func]{}\n\n[class]{}-[func]{fractionalKnapsack}\n</code></pre> fractional_knapsack.dart<pre><code>[class]{Item}-[func]{}\n\n[class]{}-[func]{fractionalKnapsack}\n</code></pre> fractional_knapsack.rs<pre><code>[class]{Item}-[func]{}\n\n[class]{}-[func]{fractional_knapsack}\n</code></pre> fractional_knapsack.c<pre><code>[class]{Item}-[func]{}\n\n[class]{}-[func]{fractionalKnapsack}\n</code></pre> fractional_knapsack.kt<pre><code>[class]{Item}-[func]{}\n\n[class]{}-[func]{fractionalKnapsack}\n</code></pre> fractional_knapsack.rb<pre><code>[class]{Item}-[func]{}\n\n[class]{}-[func]{fractional_knapsack}\n</code></pre> <p>\u30bd\u30fc\u30c8\u4ee5\u5916\u306b\u3001\u6700\u60aa\u306e\u5834\u5408\u3001\u30a2\u30a4\u30c6\u30e0\u306e\u30ea\u30b9\u30c8\u5168\u4f53\u3092\u8d70\u67fb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u305f\u3081\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(n)\\) \u3067\u3059\u3002\u3053\u3053\u3067 \\(n\\) \u306f\u30a2\u30a4\u30c6\u30e0\u306e\u6570\u3067\u3059\u3002</p> <p><code>Item</code> \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30ea\u30b9\u30c8\u304c\u521d\u671f\u5316\u3055\u308c\u308b\u305f\u3081\u3001\u7a7a\u9593\u8a08\u7b97\u91cf\u306f \\(O(n)\\) \u3067\u3059\u3002</p>"},{"location":"chapter_greedy/fractional_knapsack_problem/#3","title":"3. \u00a0 \u6b63\u3057\u3055\u306e\u8a3c\u660e","text":"<p>\u80cc\u7406\u6cd5\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u30a2\u30a4\u30c6\u30e0 \\(x\\) \u304c\u6700\u9ad8\u306e\u5358\u4f4d\u5024\u3092\u6301\u3061\u3001\u3042\u308b\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u304c\u6700\u5927\u5024 <code>res</code> \u3092\u751f\u6210\u3059\u308b\u304c\u3001\u89e3\u306b\u30a2\u30a4\u30c6\u30e0 \\(x\\) \u304c\u542b\u307e\u308c\u3066\u3044\u306a\u3044\u3068\u4eee\u5b9a\u3057\u307e\u3059\u3002</p> <p>\u4eca\u3001\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u304b\u3089\u4efb\u610f\u306e\u30a2\u30a4\u30c6\u30e0\u306e\u5358\u4f4d\u91cd\u91cf\u3092\u53d6\u308a\u9664\u304d\u3001\u30a2\u30a4\u30c6\u30e0 \\(x\\) \u306e\u5358\u4f4d\u91cd\u91cf\u3067\u7f6e\u304d\u63db\u3048\u307e\u3059\u3002\u30a2\u30a4\u30c6\u30e0 \\(x\\) \u306e\u5358\u4f4d\u5024\u304c\u6700\u9ad8\u3067\u3042\u308b\u305f\u3081\u3001\u7f6e\u304d\u63db\u3048\u5f8c\u306e\u7dcf\u5024\u306f\u78ba\u5b9f\u306b <code>res</code> \u3088\u308a\u5927\u304d\u304f\u306a\u308a\u307e\u3059\u3002\u3053\u308c\u306f <code>res</code> \u304c\u6700\u9069\u89e3\u3067\u3042\u308b\u3068\u3044\u3046\u4eee\u5b9a\u3068\u77db\u76fe\u3057\u3001\u6700\u9069\u89e3\u306b\u306f\u5fc5\u305a\u30a2\u30a4\u30c6\u30e0 \\(x\\) \u304c\u542b\u307e\u308c\u308b\u3053\u3068\u3092\u8a3c\u660e\u3057\u307e\u3059\u3002</p> <p>\u3053\u306e\u89e3\u306e\u4ed6\u306e\u30a2\u30a4\u30c6\u30e0\u306b\u3064\u3044\u3066\u3082\u3001\u4e0a\u8a18\u306e\u77db\u76fe\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002\u5168\u4f53\u7684\u306b\u3001**\u5358\u4f4d\u5024\u304c\u3088\u308a\u5927\u304d\u3044\u30a2\u30a4\u30c6\u30e0\u306f\u5e38\u306b\u3088\u308a\u826f\u3044\u9078\u629e**\u3067\u3042\u308a\u3001\u8caa\u6b32\u6226\u7565\u304c\u52b9\u679c\u7684\u3067\u3042\u308b\u3053\u3068\u3092\u8a3c\u660e\u3057\u307e\u3059\u3002</p> <p>\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u30a2\u30a4\u30c6\u30e0\u306e\u91cd\u91cf\u3068\u5358\u4f4d\u5024\u3092\u305d\u308c\u305e\u308c\u4e8c\u6b21\u5143\u30c1\u30e3\u30fc\u30c8\u306e\u6a2a\u8ef8\u3068\u7e26\u8ef8\u3068\u898b\u306a\u3059\u3068\u3001\u5206\u6570\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u306f\u300c\u9650\u3089\u308c\u305f\u6a2a\u8ef8\u7bc4\u56f2\u5185\u3067\u56f2\u307e\u308c\u308b\u6700\u5927\u9762\u7a4d\u3092\u6c42\u3081\u308b\u300d\u3053\u3068\u306b\u5909\u63db\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u985e\u63a8\u306f\u3001\u5e7e\u4f55\u5b66\u7684\u89b3\u70b9\u304b\u3089\u8caa\u6b32\u6226\u7565\u306e\u52b9\u679c\u3092\u7406\u89e3\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002</p> <p></p> <p> \u56f3 15-6 \u00a0 \u5206\u6570\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u306e\u5e7e\u4f55\u5b66\u7684\u8868\u73fe </p>"},{"location":"chapter_greedy/greedy_algorithm/","title":"15.1 \u00a0 \u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0","text":"<p>\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u6700\u9069\u5316\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306e\u4e00\u822c\u7684\u306a\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u3001\u57fa\u672c\u7684\u306b\u554f\u984c\u306e\u5404\u610f\u601d\u6c7a\u5b9a\u6bb5\u968e\u3067\u6700\u3082\u826f\u3044\u9078\u629e\u3092\u3059\u308b\u3053\u3068\u3001\u3064\u307e\u308a\u5c40\u6240\u7684\u306b\u6700\u9069\u306a\u6c7a\u5b9a\u3092\u8caa\u6b32\u306b\u884c\u3044\u3001\u30b0\u30ed\u30fc\u30d0\u30eb\u306b\u6700\u9069\u306a\u89e3\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u3092\u671b\u307f\u307e\u3059\u3002\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u7c21\u6f54\u3067\u52b9\u7387\u7684\u3067\u3042\u308a\u3001\u591a\u304f\u306e\u5b9f\u7528\u7684\u306a\u554f\u984c\u3067\u5e83\u304f\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002</p> <p>\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3068\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306f\u3001\u3069\u3061\u3089\u3082\u6700\u9069\u5316\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306b\u3088\u304f\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u4e21\u8005\u306f\u6700\u9069\u90e8\u5206\u69cb\u9020\u306e\u6027\u8cea\u306b\u4f9d\u5b58\u3059\u308b\u306a\u3069\u3001\u3044\u304f\u3064\u304b\u306e\u985e\u4f3c\u70b9\u3092\u5171\u6709\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u52d5\u4f5c\u65b9\u6cd5\u304c\u7570\u306a\u308a\u307e\u3059\u3002</p> <ul> <li>\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306f\u73fe\u5728\u306e\u6c7a\u5b9a\u6bb5\u968e\u3067\u3059\u3079\u3066\u306e\u4ee5\u524d\u306e\u6c7a\u5b9a\u3092\u8003\u616e\u3057\u3001\u904e\u53bb\u306e\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u4f7f\u7528\u3057\u3066\u73fe\u5728\u306e\u90e8\u5206\u554f\u984c\u306e\u89e3\u3092\u69cb\u7bc9\u3057\u307e\u3059\u3002</li> <li>\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u904e\u53bb\u306e\u6c7a\u5b9a\u3092\u8003\u616e\u305b\u305a\u3001\u4ee3\u308f\u308a\u306b\u8caa\u6b32\u306a\u9078\u629e\u3092\u7d9a\u3051\u3001\u554f\u984c\u304c\u89e3\u6c7a\u3055\u308c\u308b\u307e\u3067\u554f\u984c\u306e\u7bc4\u56f2\u3092\u7d99\u7d9a\u7684\u306b\u72ed\u3081\u307e\u3059\u3002</li> </ul> <p>\u307e\u305a\u3001\u300c\u5b8c\u5168\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u300d\u306e\u7ae0\u3067\u7d39\u4ecb\u3055\u308c\u305f\u300c\u30b3\u30a4\u30f3\u4ea4\u63db\u300d\u306e\u4f8b\u3092\u901a\u3058\u3066\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u52d5\u4f5c\u539f\u7406\u3092\u7406\u89e3\u3057\u307e\u3057\u3087\u3046\u3002\u3059\u3067\u306b\u3088\u304f\u77e5\u3063\u3066\u3044\u308b\u3068\u601d\u3044\u307e\u3059\u3002</p> <p>Question</p> <p>\\(n\\) \u7a2e\u985e\u306e\u30b3\u30a4\u30f3\u304c\u4e0e\u3048\u3089\u308c\u3001\\(i\\) \u756a\u76ee\u306e\u7a2e\u985e\u306e\u30b3\u30a4\u30f3\u306e\u984d\u9762\u306f \\(coins[i - 1]\\) \u3067\u3001\u76ee\u6a19\u91d1\u984d\u306f \\(amt\\) \u3067\u3059\u3002\u5404\u7a2e\u985e\u306e\u30b3\u30a4\u30f3\u306f\u7121\u5236\u9650\u306b\u5229\u7528\u53ef\u80fd\u3067\u3001\u76ee\u6a19\u91d1\u984d\u3092\u69cb\u6210\u3059\u308b\u306e\u306b\u5fc5\u8981\u306a\u6700\u5c0f\u30b3\u30a4\u30f3\u6570\u306f\u4f55\u3067\u3059\u304b\uff1f\u76ee\u6a19\u91d1\u984d\u3092\u69cb\u6210\u3067\u304d\u306a\u3044\u5834\u5408\u306f \\(-1\\) \u3092\u8fd4\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <p>\u3053\u306e\u554f\u984c\u3067\u63a1\u7528\u3055\u308c\u308b\u8caa\u6b32\u6226\u7565\u3092\u4e0b\u306e\u56f3\u306b\u793a\u3057\u307e\u3059\u3002\u76ee\u6a19\u91d1\u984d\u304c\u4e0e\u3048\u3089\u308c\u305f\u3068\u304d\u3001**\u305d\u308c\u306b\u6700\u3082\u8fd1\u304f\u3001\u305d\u308c\u3092\u8d85\u3048\u306a\u3044\u30b3\u30a4\u30f3\u3092\u8caa\u6b32\u306b\u9078\u629e**\u3057\u3001\u76ee\u6a19\u91d1\u984d\u304c\u6e80\u305f\u3055\u308c\u308b\u307e\u3067\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3092\u7e70\u308a\u8fd4\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 15-1 \u00a0 \u30b3\u30a4\u30f3\u4ea4\u63db\u306e\u8caa\u6b32\u6226\u7565 </p> <p>\u5b9f\u88c5\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby coin_change_greedy.py<pre><code>def coin_change_greedy(coins: list[int], amt: int) -&gt; int:\n \"\"\"\u786c\u8ca8\u4ea4\u63db\uff1a\u8caa\u6b32\u6cd5\"\"\"\n # coins \u30ea\u30b9\u30c8\u304c\u30bd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u3068\u4eee\u5b9a\n i = len(coins) - 1\n count = 0\n # \u6b8b\u308a\u91d1\u984d\u304c\u306a\u304f\u306a\u308b\u307e\u3067\u8caa\u6b32\u9078\u629e\u3092\u30eb\u30fc\u30d7\n while amt &gt; 0:\n # \u6b8b\u308a\u91d1\u984d\u306b\u6700\u3082\u8fd1\u304f\u3001\u305d\u308c\u3088\u308a\u5c0f\u3055\u3044\u786c\u8ca8\u3092\u898b\u3064\u3051\u308b\n while i &gt; 0 and coins[i] &gt; amt:\n i -= 1\n # coins[i] \u3092\u9078\u629e\n amt -= coins[i]\n count += 1\n # \u5b9f\u884c\u53ef\u80fd\u306a\u89e3\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u5834\u5408\u3001-1 \u3092\u8fd4\u3059\n return count if amt == 0 else -1\n</code></pre> coin_change_greedy.cpp<pre><code>/* \u786c\u8ca8\u4e21\u66ff\uff1a\u8caa\u6b32\u6cd5 */\nint coinChangeGreedy(vector&lt;int&gt; &amp;coins, int amt) {\n // \u786c\u8ca8\u30ea\u30b9\u30c8\u304c\u9806\u5e8f\u4ed8\u3051\u3055\u308c\u3066\u3044\u308b\u3068\u4eee\u5b9a\n int i = coins.size() - 1;\n int count = 0;\n // \u6b8b\u308a\u91d1\u984d\u304c\u306a\u304f\u306a\u308b\u307e\u3067\u8caa\u6b32\u9078\u629e\u3092\u30eb\u30fc\u30d7\n while (amt &gt; 0) {\n // \u6b8b\u308a\u91d1\u984d\u306b\u8fd1\u304f\u3001\u305d\u308c\u4ee5\u4e0b\u306e\u6700\u5c0f\u786c\u8ca8\u3092\u898b\u3064\u3051\u308b\n while (i &gt; 0 &amp;&amp; coins[i] &gt; amt) {\n i--;\n }\n // coins[i] \u3092\u9078\u629e\n amt -= coins[i];\n count++;\n }\n // \u5b9f\u884c\u53ef\u80fd\u306a\u89e3\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u5834\u5408\u3001-1 \u3092\u8fd4\u3059\n return amt == 0 ? count : -1;\n}\n</code></pre> coin_change_greedy.java<pre><code>/* \u786c\u8ca8\u4e21\u66ff\uff1a\u8caa\u6b32\u6cd5 */\nint coinChangeGreedy(int[] coins, int amt) {\n // \u786c\u8ca8\u30ea\u30b9\u30c8\u304c\u9806\u5e8f\u4ed8\u3051\u3055\u308c\u3066\u3044\u308b\u3068\u4eee\u5b9a\n int i = coins.length - 1;\n int count = 0;\n // \u6b8b\u308a\u91d1\u984d\u304c\u306a\u304f\u306a\u308b\u307e\u3067\u8caa\u6b32\u9078\u629e\u3092\u30eb\u30fc\u30d7\n while (amt &gt; 0) {\n // \u6b8b\u308a\u91d1\u984d\u306b\u8fd1\u304f\u3001\u305d\u308c\u4ee5\u4e0b\u306e\u6700\u5c0f\u786c\u8ca8\u3092\u898b\u3064\u3051\u308b\n while (i &gt; 0 &amp;&amp; coins[i] &gt; amt) {\n i--;\n }\n // coins[i] \u3092\u9078\u629e\n amt -= coins[i];\n count++;\n }\n // \u5b9f\u884c\u53ef\u80fd\u306a\u89e3\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u5834\u5408\u3001-1 \u3092\u8fd4\u3059\n return amt == 0 ? count : -1;\n}\n</code></pre> coin_change_greedy.cs<pre><code>[class]{coin_change_greedy}-[func]{CoinChangeGreedy}\n</code></pre> coin_change_greedy.go<pre><code>[class]{}-[func]{coinChangeGreedy}\n</code></pre> coin_change_greedy.swift<pre><code>[class]{}-[func]{coinChangeGreedy}\n</code></pre> coin_change_greedy.js<pre><code>[class]{}-[func]{coinChangeGreedy}\n</code></pre> coin_change_greedy.ts<pre><code>[class]{}-[func]{coinChangeGreedy}\n</code></pre> coin_change_greedy.dart<pre><code>[class]{}-[func]{coinChangeGreedy}\n</code></pre> coin_change_greedy.rs<pre><code>[class]{}-[func]{coin_change_greedy}\n</code></pre> coin_change_greedy.c<pre><code>[class]{}-[func]{coinChangeGreedy}\n</code></pre> coin_change_greedy.kt<pre><code>[class]{}-[func]{coinChangeGreedy}\n</code></pre> coin_change_greedy.rb<pre><code>[class]{}-[func]{coin_change_greedy}\n</code></pre> <p>\u611f\u5606\u3059\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\uff1a\u306a\u3093\u3066\u7c21\u6f54\u306a\u3093\u3060\uff01\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u7d0410\u884c\u306e\u30b3\u30fc\u30c9\u3067\u30b3\u30a4\u30f3\u4ea4\u63db\u554f\u984c\u3092\u89e3\u6c7a\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_greedy/greedy_algorithm/#1511","title":"15.1.1 \u00a0 \u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5229\u70b9\u3068\u5236\u9650","text":"<p>\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u76f4\u63a5\u7684\u3067\u5b9f\u88c5\u304c\u7c21\u5358\u3067\u3042\u308b\u3060\u3051\u3067\u306a\u304f\u3001\u901a\u5e38\u975e\u5e38\u306b\u52b9\u7387\u7684\u3067\u3082\u3042\u308a\u307e\u3059\u3002\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u3001\u6700\u5c0f\u306e\u30b3\u30a4\u30f3\u984d\u9762\u3092 \\(\\min(coins)\\) \u3068\u3059\u308b\u3068\u3001\u8caa\u6b32\u306a\u9078\u629e\u30eb\u30fc\u30d7\u306f\u6700\u5927 \\(amt / \\min(coins)\\) \u56de\u5b9f\u884c\u3055\u308c\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(amt / \\min(coins))\\) \u306b\u306a\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u89e3\u6cd5\u306e\u6642\u9593\u8a08\u7b97\u91cf \\(O(n \\times amt)\\) \u3088\u308a\u3082\u4e00\u6841\u5c0f\u3055\u3044\u3067\u3059\u3002</p> <p>\u3057\u304b\u3057\u3001\u4e00\u90e8\u306e\u30b3\u30a4\u30f3\u984d\u9762\u306e\u7d44\u307f\u5408\u308f\u305b\u3067\u306f\u3001\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u6700\u9069\u89e3\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002\u4e0b\u306e\u56f3\u306f2\u3064\u306e\u4f8b\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002</p> <ul> <li>\u6b63\u306e\u4f8b \\(coins = [1, 5, 10, 20, 50, 100]\\)\uff1a\u3053\u306e\u30b3\u30a4\u30f3\u306e\u7d44\u307f\u5408\u308f\u305b\u3067\u306f\u3001\u4efb\u610f\u306e \\(amt\\) \u306b\u5bfe\u3057\u3066\u3001\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u6700\u9069\u89e3\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</li> <li>\u8ca0\u306e\u4f8b \\(coins = [1, 20, 50]\\)\uff1a\\(amt = 60\\) \u3068\u3059\u308b\u3068\u3001\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u7d44\u307f\u5408\u308f\u305b \\(50 + 1 \\times 10\\) \u3057\u304b\u898b\u3064\u3051\u3089\u308c\u305a\u3001\u5408\u8a0811\u679a\u306e\u30b3\u30a4\u30f3\u3067\u3059\u304c\u3001\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306f\u6700\u9069\u89e3 \\(20 + 20 + 20\\) \u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u30013\u679a\u306e\u30b3\u30a4\u30f3\u306e\u307f\u304c\u5fc5\u8981\u3067\u3059\u3002</li> <li>\u8ca0\u306e\u4f8b \\(coins = [1, 49, 50]\\)\uff1a\\(amt = 98\\) \u3068\u3059\u308b\u3068\u3001\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u7d44\u307f\u5408\u308f\u305b \\(50 + 1 \\times 48\\) \u3057\u304b\u898b\u3064\u3051\u3089\u308c\u305a\u3001\u5408\u8a0849\u679a\u306e\u30b3\u30a4\u30f3\u3067\u3059\u304c\u3001\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306f\u6700\u9069\u89e3 \\(49 + 49\\) \u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u30012\u679a\u306e\u30b3\u30a4\u30f3\u306e\u307f\u304c\u5fc5\u8981\u3067\u3059\u3002</li> </ul> <p></p> <p> \u56f3 15-2 \u00a0 \u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u304c\u6700\u9069\u89e3\u3092\u898b\u3064\u3051\u3089\u308c\u306a\u3044\u4f8b </p> <p>\u3053\u308c\u306f\u3001\u30b3\u30a4\u30f3\u4ea4\u63db\u554f\u984c\u306b\u304a\u3044\u3066\u3001\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u304c\u30b0\u30ed\u30fc\u30d0\u30eb\u306b\u6700\u9069\u306a\u89e3\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u3092\u4fdd\u8a3c\u3067\u304d\u305a\u3001\u975e\u5e38\u306b\u60aa\u3044\u89e3\u3092\u898b\u3064\u3051\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u65b9\u304c\u9069\u3057\u3066\u3044\u307e\u3059\u3002</p> <p>\u4e00\u822c\u7684\u306b\u3001\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u9069\u7528\u6027\u306f2\u3064\u306e\u30ab\u30c6\u30b4\u30ea\u306b\u5206\u985e\u3055\u308c\u307e\u3059\u3002</p> <ol> <li>\u6700\u9069\u89e3\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u4fdd\u8a3c\u3055\u308c\u308b\uff1a\u3053\u308c\u3089\u306e\u5834\u5408\u3001\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u3057\u3070\u3057\u3070\u6700\u826f\u306e\u9078\u629e\u3067\u3001\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u3084\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3088\u308a\u3082\u52b9\u7387\u7684\u3067\u3042\u308b\u50be\u5411\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u6e96\u6700\u9069\u89e3\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u308b\uff1a\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u3053\u3053\u3067\u3082\u9069\u7528\u53ef\u80fd\u3067\u3059\u3002\u591a\u304f\u306e\u8907\u96d1\u306a\u554f\u984c\u3067\u306f\u3001\u30b0\u30ed\u30fc\u30d0\u30eb\u6700\u9069\u89e3\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u306f\u975e\u5e38\u306b\u56f0\u96e3\u3067\u3042\u308a\u3001\u9ad8\u52b9\u7387\u306e\u6e96\u6700\u9069\u89e3\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u3082\u975e\u5e38\u306b\u4fa1\u5024\u304c\u3042\u308a\u307e\u3059\u3002</li> </ol>"},{"location":"chapter_greedy/greedy_algorithm/#1512","title":"15.1.2 \u00a0 \u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u7279\u5fb4","text":"<p>\u305d\u308c\u3067\u306f\u3001\u3069\u306e\u3088\u3046\u306a\u554f\u984c\u304c\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u89e3\u6c7a\u3059\u308b\u306e\u306b\u9069\u3057\u3066\u3044\u308b\u306e\u3067\u3057\u3087\u3046\u304b\uff1f\u8a00\u3044\u63db\u3048\u308c\u3070\u3001\u3069\u306e\u3088\u3046\u306a\u6761\u4ef6\u4e0b\u3067\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u6700\u9069\u89e3\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u3092\u4fdd\u8a3c\u3067\u304d\u308b\u306e\u3067\u3057\u3087\u3046\u304b\uff1f</p> <p>\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3068\u6bd4\u8f03\u3057\u3066\u3001\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u3088\u308a\u53b3\u3057\u3044\u4f7f\u7528\u6761\u4ef6\u3092\u6301\u3061\u3001\u4e3b\u306b\u554f\u984c\u306e2\u3064\u306e\u6027\u8cea\u306b\u7126\u70b9\u3092\u5f53\u3066\u3066\u3044\u307e\u3059\u3002</p> <ul> <li>\u8caa\u6b32\u9078\u629e\u6027\uff1a\u5c40\u6240\u7684\u306b\u6700\u9069\u306a\u9078\u629e\u304c\u5e38\u306b\u30b0\u30ed\u30fc\u30d0\u30eb\u306b\u6700\u9069\u306a\u89e3\u306b\u5c0e\u304f\u3053\u3068\u304c\u3067\u304d\u308b\u5834\u5408\u306e\u307f\u3001\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u6700\u9069\u89e3\u3092\u5f97\u308b\u3053\u3068\u3092\u4fdd\u8a3c\u3067\u304d\u307e\u3059\u3002</li> <li>\u6700\u9069\u90e8\u5206\u69cb\u9020\uff1a\u5143\u306e\u554f\u984c\u306e\u6700\u9069\u89e3\u306f\u305d\u306e\u90e8\u5206\u554f\u984c\u306e\u6700\u9069\u89e3\u3092\u542b\u307f\u307e\u3059\u3002</li> </ul> <p>\u6700\u9069\u90e8\u5206\u69cb\u9020\u306f\u300c\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u300d\u306e\u7ae0\u3067\u3059\u3067\u306b\u7d39\u4ecb\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u3053\u3053\u3067\u306f\u3053\u308c\u4ee5\u4e0a\u8b70\u8ad6\u3057\u307e\u305b\u3093\u3002\u4e00\u90e8\u306e\u554f\u984c\u306b\u306f\u660e\u3089\u304b\u306a\u6700\u9069\u90e8\u5206\u69cb\u9020\u304c\u3042\u308a\u307e\u305b\u3093\u304c\u3001\u305d\u308c\u3067\u3082\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u4f7f\u7528\u3057\u3066\u89e3\u6c7a\u3067\u304d\u308b\u3053\u3068\u306b\u6ce8\u610f\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002</p> <p>\u4e3b\u306b\u8caa\u6b32\u9078\u629e\u6027\u3092\u6c7a\u5b9a\u3059\u308b\u65b9\u6cd5\u3092\u63a2\u7d22\u3057\u307e\u3059\u3002\u305d\u306e\u8a18\u8ff0\u306f\u5358\u7d14\u306b\u898b\u3048\u307e\u3059\u304c\u3001\u5b9f\u969b\u306b\u306f\u3001\u591a\u304f\u306e\u554f\u984c\u306e\u8caa\u6b32\u9078\u629e\u6027\u3092\u8a3c\u660e\u3059\u308b\u3053\u3068\u306f\u5bb9\u6613\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002</p> <p>\u4f8b\u3048\u3070\u3001\u30b3\u30a4\u30f3\u4ea4\u63db\u554f\u984c\u3067\u306f\u3001\u8caa\u6b32\u9078\u629e\u6027\u3092\u53cd\u8a3c\u3059\u308b\u305f\u3081\u306b\u53cd\u4f8b\u3092\u7c21\u5358\u306b\u6319\u3052\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u304c\u3001\u305d\u308c\u3092\u8a3c\u660e\u3059\u308b\u3053\u3068\u306f\u306f\u308b\u304b\u306b\u56f0\u96e3\u3067\u3059\u3002**\u30b3\u30a4\u30f3\u306e\u7d44\u307f\u5408\u308f\u305b\u304c\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u4f7f\u7528\u3057\u3066\u89e3\u6c7a\u3067\u304d\u308b\u305f\u3081\u306b\u306f\u3001\u3069\u306e\u3088\u3046\u306a\u6761\u4ef6\u3092\u6e80\u305f\u3059\u5fc5\u8981\u304c\u3042\u308b\u304b**\u3068\u5c0b\u306d\u3089\u308c\u305f\u5834\u5408\u3001\u53b3\u5bc6\u306a\u6570\u5b66\u7684\u8a3c\u660e\u3092\u63d0\u4f9b\u3059\u308b\u3053\u3068\u304c\u56f0\u96e3\u3067\u3042\u308b\u305f\u3081\u3001\u3057\u3070\u3057\u3070\u76f4\u611f\u3084\u4f8b\u306b\u983c\u3063\u3066\u66d6\u6627\u306a\u7b54\u3048\u3092\u63d0\u4f9b\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002</p> <p>Quote</p> <p>\u3042\u308b\u8ad6\u6587\u3067\u306f\u3001\u30b3\u30a4\u30f3\u306e\u7d44\u307f\u5408\u308f\u305b\u304c\u4efb\u610f\u306e\u91d1\u984d\u306b\u5bfe\u3057\u3066\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u4f7f\u7528\u3057\u3066\u6700\u9069\u89e3\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u304b\u3069\u3046\u304b\u3092\u5224\u5b9a\u3059\u308b\u305f\u3081\u306e\u6642\u9593\u8a08\u7b97\u91cf \\(O(n^3)\\) \u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u304c\u63d0\u793a\u3055\u308c\u3066\u3044\u307e\u3059\u3002</p> <p>Pearson, D. A polynomial-time algorithm for the change-making problem[J]. Operations Research Letters, 2005, 33(3): 231-234.</p>"},{"location":"chapter_greedy/greedy_algorithm/#1513","title":"15.1.3 \u00a0 \u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306b\u3088\u308b\u554f\u984c\u89e3\u6c7a\u306e\u30b9\u30c6\u30c3\u30d7","text":"<p>\u8caa\u6b32\u554f\u984c\u306e\u554f\u984c\u89e3\u6c7a\u30d7\u30ed\u30bb\u30b9\u306f\u3001\u4e00\u822c\u7684\u306b\u4ee5\u4e0b\u306e3\u3064\u306e\u30b9\u30c6\u30c3\u30d7\u306b\u5206\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</p> <ol> <li>\u554f\u984c\u5206\u6790\uff1a\u554f\u984c\u306e\u7279\u5fb4\u3092\u6574\u7406\u3057\u7406\u89e3\u3059\u308b\u3002\u72b6\u614b\u5b9a\u7fa9\u3001\u6700\u9069\u5316\u76ee\u6a19\u3001\u5236\u7d04\u306a\u3069\u3092\u542b\u307f\u307e\u3059\u3002\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u306f\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u3084\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3067\u3082\u95a2\u4e0e\u3057\u307e\u3059\u3002</li> <li>\u8caa\u6b32\u6226\u7565\u306e\u6c7a\u5b9a\uff1a\u5404\u30b9\u30c6\u30c3\u30d7\u3067\u8caa\u6b32\u306a\u9078\u629e\u3092\u3059\u308b\u65b9\u6cd5\u3092\u6c7a\u5b9a\u3059\u308b\u3002\u3053\u306e\u6226\u7565\u306f\u5404\u30b9\u30c6\u30c3\u30d7\u3067\u554f\u984c\u306e\u898f\u6a21\u3092\u7e2e\u5c0f\u3057\u3001\u6700\u7d42\u7684\u306b\u554f\u984c\u5168\u4f53\u3092\u89e3\u6c7a\u3067\u304d\u307e\u3059\u3002</li> <li>\u6b63\u78ba\u6027\u306e\u8a3c\u660e\uff1a\u901a\u5e38\u3001\u554f\u984c\u304c\u8caa\u6b32\u9078\u629e\u6027\u3068\u6700\u9069\u90e8\u5206\u69cb\u9020\u306e\u4e21\u65b9\u3092\u6301\u3064\u3053\u3068\u3092\u8a3c\u660e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u306b\u306f\u3001\u5e30\u7d0d\u6cd5\u3084\u80cc\u7406\u6cd5\u306a\u3069\u306e\u6570\u5b66\u7684\u8a3c\u660e\u304c\u5fc5\u8981\u306a\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002</li> </ol> <p>\u8caa\u6b32\u6226\u7565\u306e\u6c7a\u5b9a\u306f\u554f\u984c\u89e3\u6c7a\u306e\u6838\u5fc3\u30b9\u30c6\u30c3\u30d7\u3067\u3059\u304c\u3001\u5b9f\u88c5\u306f\u5bb9\u6613\u3067\u306f\u306a\u3044\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u4e3b\u306a\u7406\u7531\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002</p> <ul> <li>\u7570\u306a\u308b\u554f\u984c\u9593\u3067\u8caa\u6b32\u6226\u7565\u306f\u5927\u304d\u304f\u7570\u306a\u308b\u3002\u591a\u304f\u306e\u554f\u984c\u3067\u306f\u3001\u8caa\u6b32\u6226\u7565\u306f\u304b\u306a\u308a\u76f4\u63a5\u7684\u3067\u3001\u4e00\u822c\u7684\u306a\u601d\u8003\u3068\u8a66\u884c\u3092\u901a\u3058\u3066\u601d\u3044\u3064\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u4e00\u90e8\u306e\u8907\u96d1\u306a\u554f\u984c\u3067\u306f\u3001\u8caa\u6b32\u6226\u7565\u306f\u975e\u5e38\u306b\u898b\u3064\u3051\u306b\u304f\u304f\u3001\u3053\u308c\u306f\u500b\u4eba\u306e\u554f\u984c\u89e3\u6c7a\u7d4c\u9a13\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u80fd\u529b\u306e\u771f\u306e\u30c6\u30b9\u30c8\u3067\u3059\u3002</li> <li>\u4e00\u90e8\u306e\u8caa\u6b32\u6226\u7565\u306f\u975e\u5e38\u306b\u8aa4\u89e3\u3092\u62db\u304f\u3002\u81ea\u4fe1\u3092\u6301\u3063\u3066\u8caa\u6b32\u6226\u7565\u3092\u8a2d\u8a08\u3057\u3001\u30b3\u30fc\u30c9\u3092\u66f8\u3044\u3066\u30c6\u30b9\u30c8\u306b\u63d0\u51fa\u3057\u305f\u3068\u304d\u3001\u4e00\u90e8\u306e\u30c6\u30b9\u30c8\u30b1\u30fc\u30b9\u304c\u901a\u3089\u306a\u3044\u53ef\u80fd\u6027\u304c\u9ad8\u3044\u3067\u3059\u3002\u3053\u308c\u306f\u8a2d\u8a08\u3055\u308c\u305f\u8caa\u6b32\u6226\u7565\u304c\u300c\u90e8\u5206\u7684\u306b\u6b63\u3057\u3044\u300d\u3060\u3051\u3067\u3042\u308b\u305f\u3081\u3067\u3001\u4e0a\u8a18\u306e\u30b3\u30a4\u30f3\u4ea4\u63db\u306e\u4f8b\u3067\u8aac\u660e\u3057\u305f\u901a\u308a\u3067\u3059\u3002</li> </ul> <p>\u6b63\u78ba\u6027\u3092\u78ba\u4fdd\u3059\u308b\u305f\u3081\u306b\u3001\u8caa\u6b32\u6226\u7565\u306b\u5bfe\u3057\u3066\u53b3\u5bc6\u306a\u6570\u5b66\u7684\u8a3c\u660e\u3092\u63d0\u4f9b\u3059\u3079\u304d\u3067\u3001\u901a\u5e38\u306f\u80cc\u7406\u6cd5\u3084\u6570\u5b66\u7684\u5e30\u7d0d\u6cd5\u3092\u542b\u307f\u307e\u3059\u3002</p> <p>\u3057\u304b\u3057\u3001\u6b63\u78ba\u6027\u3092\u8a3c\u660e\u3059\u308b\u3053\u3068\u306f\u5bb9\u6613\u306a\u4f5c\u696d\u3067\u306f\u306a\u3044\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u9014\u65b9\u306b\u66ae\u308c\u305f\u5834\u5408\u3001\u901a\u5e38\u306f\u30c6\u30b9\u30c8\u30b1\u30fc\u30b9\u306b\u57fa\u3065\u3044\u3066\u30b3\u30fc\u30c9\u3092\u30c7\u30d0\u30c3\u30b0\u3057\u3001\u8caa\u6b32\u6226\u7565\u3092\u6bb5\u968e\u7684\u306b\u4fee\u6b63\u3057\u691c\u8a3c\u3059\u308b\u3053\u3068\u3092\u9078\u629e\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_greedy/greedy_algorithm/#1514","title":"15.1.4 \u00a0 \u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u89e3\u6c7a\u3055\u308c\u308b\u5178\u578b\u7684\u306a\u554f\u984c","text":"<p>\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u3001\u8caa\u6b32\u9078\u629e\u3068\u6700\u9069\u90e8\u5206\u69cb\u9020\u306e\u6027\u8cea\u3092\u6e80\u305f\u3059\u6700\u9069\u5316\u554f\u984c\u306b\u3088\u304f\u9069\u7528\u3055\u308c\u307e\u3059\u3002\u4ee5\u4e0b\u306f\u5178\u578b\u7684\u306a\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u554f\u984c\u306e\u3044\u304f\u3064\u304b\u3067\u3059\u3002</p> <ul> <li>\u30b3\u30a4\u30f3\u4ea4\u63db\u554f\u984c\uff1a\u4e00\u90e8\u306e\u30b3\u30a4\u30f3\u306e\u7d44\u307f\u5408\u308f\u305b\u3067\u306f\u3001\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u5e38\u306b\u6700\u9069\u89e3\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002</li> <li>\u533a\u9593\u30b9\u30b1\u30b8\u30e5\u30fc\u30ea\u30f3\u30b0\u554f\u984c\uff1a\u3044\u304f\u3064\u304b\u306e\u30bf\u30b9\u30af\u304c\u3042\u308a\u3001\u305d\u308c\u305e\u308c\u304c\u4e00\u5b9a\u671f\u9593\u306b\u308f\u305f\u3063\u3066\u884c\u308f\u308c\u308b\u3068\u3057\u307e\u3059\u3002\u76ee\u6a19\u306f\u3067\u304d\u308b\u3060\u3051\u591a\u304f\u306e\u30bf\u30b9\u30af\u3092\u5b8c\u4e86\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u5e38\u306b\u6700\u3082\u65e9\u304f\u7d42\u4e86\u3059\u308b\u30bf\u30b9\u30af\u3092\u9078\u629e\u3059\u308b\u3068\u3001\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u6700\u9069\u89e3\u3092\u9054\u6210\u3067\u304d\u307e\u3059\u3002</li> <li>\u5206\u6570\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\uff1a\u30a2\u30a4\u30c6\u30e0\u306e\u30bb\u30c3\u30c8\u3068\u904b\u642c\u5bb9\u91cf\u304c\u4e0e\u3048\u3089\u308c\u3001\u76ee\u6a19\u306f\u7dcf\u91cd\u91cf\u304c\u904b\u642c\u5bb9\u91cf\u3092\u8d85\u3048\u305a\u3001\u7dcf\u4fa1\u5024\u304c\u6700\u5927\u5316\u3055\u308c\u308b\u3088\u3046\u306a\u30a2\u30a4\u30c6\u30e0\u306e\u30bb\u30c3\u30c8\u3092\u9078\u629e\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u5e38\u306b\u6700\u9ad8\u306e\u4fa1\u5024\u5bfe\u91cd\u91cf\u6bd4\uff08\u4fa1\u5024/\u91cd\u91cf\uff09\u306e\u30a2\u30a4\u30c6\u30e0\u3092\u9078\u629e\u3059\u308b\u3068\u3001\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u4e00\u90e8\u306e\u30b1\u30fc\u30b9\u3067\u6700\u9069\u89e3\u3092\u9054\u6210\u3067\u304d\u307e\u3059\u3002</li> <li>\u682a\u5f0f\u53d6\u5f15\u554f\u984c\uff1a\u682a\u4fa1\u306e\u5c65\u6b74\u306e\u30bb\u30c3\u30c8\u304c\u4e0e\u3048\u3089\u308c\u3001\u8907\u6570\u56de\u306e\u53d6\u5f15\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u304c\u3001\u3059\u3067\u306b\u682a\u5f0f\u3092\u6240\u6709\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u58f2\u5374\u5f8c\u3067\u306a\u3044\u3068\u518d\u5ea6\u8cfc\u5165\u3067\u304d\u307e\u305b\u3093\u3002\u76ee\u6a19\u306f\u6700\u5927\u5229\u76ca\u3092\u9054\u6210\u3059\u308b\u3053\u3068\u3067\u3059\u3002</li> <li>\u30cf\u30d5\u30de\u30f3\u7b26\u53f7\u5316\uff1a\u30cf\u30d5\u30de\u30f3\u7b26\u53f7\u5316\u306f\u7121\u640d\u5931\u30c7\u30fc\u30bf\u5727\u7e2e\u306b\u4f7f\u7528\u3055\u308c\u308b\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u3059\u3002\u30cf\u30d5\u30de\u30f3\u6728\u3092\u69cb\u7bc9\u3059\u308b\u3053\u3068\u306b\u3088\u308a\u3001\u5e38\u306b\u6700\u4f4e\u983b\u5ea6\u306e2\u3064\u306e\u30ce\u30fc\u30c9\u3092\u7d71\u5408\u3057\u3001\u6700\u5c0f\u91cd\u307f\u4ed8\u304d\u30d1\u30b9\u9577\uff08\u7b26\u53f7\u5316\u9577\uff09\u306e\u30cf\u30d5\u30de\u30f3\u6728\u3092\u751f\u6210\u3057\u307e\u3059\u3002</li> <li>\u30c0\u30a4\u30af\u30b9\u30c8\u30e9\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff1a\u3053\u308c\u306f\u4e0e\u3048\u3089\u308c\u305f\u30bd\u30fc\u30b9\u9802\u70b9\u304b\u3089\u4ed6\u306e\u3059\u3079\u3066\u306e\u9802\u70b9\u3078\u306e\u6700\u77ed\u7d4c\u8def\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306e\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u3059\u3002</li> </ul>"},{"location":"chapter_greedy/max_capacity_problem/","title":"15.3 \u00a0 \u6700\u5927\u5bb9\u91cf\u554f\u984c","text":"<p>Question</p> <p>\u914d\u5217 \\(ht\\) \u3092\u5165\u529b\u3057\u307e\u3059\u3002\u5404\u8981\u7d20\u306f\u5782\u76f4\u4ed5\u5207\u308a\u306e\u9ad8\u3055\u3092\u8868\u3057\u307e\u3059\u3002\u914d\u5217\u5185\u306e\u4efb\u610f\u306e2\u3064\u306e\u4ed5\u5207\u308a\u3068\u3001\u305d\u308c\u3089\u306e\u9593\u306e\u30b9\u30da\u30fc\u30b9\u306b\u3088\u3063\u3066\u30b3\u30f3\u30c6\u30ca\u3092\u5f62\u6210\u3067\u304d\u307e\u3059\u3002</p> <p>\u30b3\u30f3\u30c6\u30ca\u306e\u5bb9\u91cf\u306f\u9ad8\u3055\u3068\u5e45\u306e\u7a4d\uff08\u9762\u7a4d\uff09\u3067\u3001\u9ad8\u3055\u306f\u77ed\u3044\u65b9\u306e\u4ed5\u5207\u308a\u306b\u3088\u3063\u3066\u6c7a\u5b9a\u3055\u308c\u3001\u5e45\u306f2\u3064\u306e\u4ed5\u5207\u308a\u306e\u914d\u5217\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306e\u5dee\u3067\u3059\u3002</p> <p>\u30b3\u30f3\u30c6\u30ca\u306e\u5bb9\u91cf\u3092\u6700\u5927\u5316\u3059\u308b2\u3064\u306e\u4ed5\u5207\u308a\u3092\u914d\u5217\u304b\u3089\u9078\u629e\u3057\u3001\u3053\u306e\u6700\u5927\u5bb9\u91cf\u3092\u8fd4\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4f8b\u3092\u4e0b\u306e\u56f3\u306b\u793a\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 15-7 \u00a0 \u6700\u5927\u5bb9\u91cf\u554f\u984c\u306e\u4f8b\u30c7\u30fc\u30bf </p> <p>\u30b3\u30f3\u30c6\u30ca\u306f\u4efb\u610f\u306e2\u3064\u306e\u4ed5\u5207\u308a\u306b\u3088\u3063\u3066\u5f62\u6210\u3055\u308c\u308b\u305f\u3081\u3001\u3053\u306e\u554f\u984c\u306e\u72b6\u614b\u306f2\u3064\u306e\u4ed5\u5207\u308a\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u8868\u73fe\u3055\u308c\u3001\\([i, j]\\) \u3068\u8868\u8a18\u3055\u308c\u307e\u3059\u3002</p> <p>\u554f\u984c\u306e\u8a18\u8ff0\u306b\u3088\u308c\u3070\u3001\u5bb9\u91cf\u306f\u9ad8\u3055\u3068\u5e45\u306e\u7a4d\u306b\u7b49\u3057\u304f\u3001\u9ad8\u3055\u306f\u77ed\u3044\u65b9\u306e\u4ed5\u5207\u308a\u306b\u3088\u3063\u3066\u6c7a\u5b9a\u3055\u308c\u3001\u5e45\u306f2\u3064\u306e\u4ed5\u5207\u308a\u306e\u914d\u5217\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306e\u5dee\u3067\u3059\u3002\u5bb9\u91cf \\(cap[i, j]\\) \u306e\u5f0f\u306f\uff1a</p> \\[ cap[i, j] = \\min(ht[i], ht[j]) \\times (j - i) \\] <p>\u914d\u5217\u306e\u9577\u3055\u3092 \\(n\\) \u3068\u4eee\u5b9a\u3059\u308b\u3068\u30012\u3064\u306e\u4ed5\u5207\u308a\u306e\u7d44\u307f\u5408\u308f\u305b\u6570\uff08\u72b6\u614b\u306e\u7dcf\u6570\uff09\u306f \\(C_n^2 = \\frac{n(n - 1)}{2}\\) \u3067\u3059\u3002\u6700\u3082\u76f4\u63a5\u7684\u306a\u30a2\u30d7\u30ed\u30fc\u30c1\u306f**\u3059\u3079\u3066\u306e\u53ef\u80fd\u306a\u72b6\u614b\u3092\u5217\u6319\u3059\u308b**\u3053\u3068\u3067\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(n^2)\\) \u306b\u306a\u308a\u307e\u3059\u3002</p>"},{"location":"chapter_greedy/max_capacity_problem/#1","title":"1. \u00a0 \u8caa\u6b32\u6226\u7565\u306e\u6c7a\u5b9a","text":"<p>\u3053\u306e\u554f\u984c\u306b\u306f\u3088\u308a\u52b9\u7387\u7684\u306a\u89e3\u6cd5\u304c\u3042\u308a\u307e\u3059\u3002\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 \\(i &lt; j\\) \u304b\u3064\u9ad8\u3055 \\(ht[i] &lt; ht[j]\\) \u306e\u72b6\u614b \\([i, j]\\) \u3092\u9078\u629e\u3057\u307e\u3059\u3002\u3064\u307e\u308a\u3001\\(i\\) \u306f\u77ed\u3044\u4ed5\u5207\u308a\u3001\\(j\\) \u306f\u9ad8\u3044\u4ed5\u5207\u308a\u3067\u3059\u3002</p> <p></p> <p> \u56f3 15-8 \u00a0 \u521d\u671f\u72b6\u614b </p> <p>\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u9ad8\u3044\u4ed5\u5207\u308a \\(j\\) \u3092\u77ed\u3044\u4ed5\u5207\u308a \\(i\\) \u306b\u8fd1\u3065\u3051\u3066\u79fb\u52d5\u3059\u308b\u3068\u3001\u5bb9\u91cf\u306f\u78ba\u5b9f\u306b\u6e1b\u5c11\u3057\u307e\u3059\u3002</p> <p>\u3053\u308c\u306f\u3001\u9ad8\u3044\u4ed5\u5207\u308a \\(j\\) \u3092\u79fb\u52d5\u3059\u308b\u3068\u3001\u5e45 \\(j-i\\) \u304c\u78ba\u5b9f\u306b\u6e1b\u5c11\u3059\u308b\u305f\u3081\u3067\u3059\u3002\u9ad8\u3055\u306f\u77ed\u3044\u4ed5\u5207\u308a\u306b\u3088\u3063\u3066\u6c7a\u5b9a\u3055\u308c\u308b\u305f\u3081\u3001\u9ad8\u3055\u306f\u540c\u3058\u307e\u307e\uff08\\(i\\) \u304c\u77ed\u3044\u4ed5\u5207\u308a\u306e\u307e\u307e\uff09\u304b\u6e1b\u5c11\uff08\u79fb\u52d5\u3057\u305f \\(j\\) \u304c\u77ed\u3044\u4ed5\u5207\u308a\u306b\u306a\u308b\uff09\u3057\u304b\u3042\u308a\u307e\u305b\u3093\u3002</p> <p></p> <p> \u56f3 15-9 \u00a0 \u9ad8\u3044\u4ed5\u5207\u308a\u3092\u5185\u5074\u306b\u79fb\u52d5\u3057\u305f\u5f8c\u306e\u72b6\u614b </p> <p>\u9006\u306b\u3001\u77ed\u3044\u4ed5\u5207\u308a \\(i\\) \u3092\u5185\u5074\u306b\u79fb\u52d5\u3059\u308b\u3053\u3068\u306b\u3088\u3063\u3066\u306e\u307f\u5bb9\u91cf\u3092\u5897\u52a0\u3055\u305b\u308b\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002\u5e45\u306f\u78ba\u5b9f\u306b\u6e1b\u5c11\u3057\u307e\u3059\u304c\u3001\u9ad8\u3055\u304c\u5897\u52a0\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\uff08\u79fb\u52d5\u3057\u305f\u77ed\u3044\u4ed5\u5207\u308a \\(i\\) \u304c\u9ad8\u304f\u306a\u308b\u5834\u5408\uff09\u3002\u4f8b\u3048\u3070\u3001\u4e0b\u306e\u56f3\u3067\u306f\u3001\u77ed\u3044\u4ed5\u5207\u308a\u3092\u79fb\u52d5\u3057\u305f\u5f8c\u306b\u9762\u7a4d\u304c\u5897\u52a0\u3057\u3066\u3044\u307e\u3059\u3002</p> <p></p> <p> \u56f3 15-10 \u00a0 \u77ed\u3044\u4ed5\u5207\u308a\u3092\u5185\u5074\u306b\u79fb\u52d5\u3057\u305f\u5f8c\u306e\u72b6\u614b </p> <p>\u3053\u308c\u306b\u3088\u308a\u3001\u3053\u306e\u554f\u984c\u306e\u8caa\u6b32\u6226\u7565\u304c\u5c0e\u304b\u308c\u307e\u3059\uff1a\u30b3\u30f3\u30c6\u30ca\u306e\u4e21\u7aef\u306b2\u3064\u306e\u30dd\u30a4\u30f3\u30bf\u3092\u521d\u671f\u5316\u3057\u3001\u5404\u30e9\u30a6\u30f3\u30c9\u3067\u77ed\u3044\u4ed5\u5207\u308a\u306b\u5bfe\u5fdc\u3059\u308b\u30dd\u30a4\u30f3\u30bf\u3092\u5185\u5074\u306b\u79fb\u52d5\u3057\u30012\u3064\u306e\u30dd\u30a4\u30f3\u30bf\u304c\u51fa\u4f1a\u3046\u307e\u3067\u7d9a\u3051\u307e\u3059\u3002</p> <p>\u4e0b\u306e\u56f3\u306f\u8caa\u6b32\u6226\u7565\u306e\u5b9f\u884c\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002</p> <ol> <li>\u6700\u521d\u306b\u3001\u30dd\u30a4\u30f3\u30bf \\(i\\) \u3068 \\(j\\) \u304c\u914d\u5217\u306e\u4e21\u7aef\u306b\u914d\u7f6e\u3055\u308c\u307e\u3059\u3002</li> <li>\u73fe\u5728\u306e\u72b6\u614b\u306e\u5bb9\u91cf \\(cap[i, j]\\) \u3092\u8a08\u7b97\u3057\u3001\u6700\u5927\u5bb9\u91cf\u3092\u66f4\u65b0\u3057\u307e\u3059\u3002</li> <li>\u4ed5\u5207\u308a \\(i\\) \u3068 \\(j\\) \u306e\u9ad8\u3055\u3092\u6bd4\u8f03\u3057\u3001\u77ed\u3044\u4ed5\u5207\u308a\u30921\u30b9\u30c6\u30c3\u30d7\u5185\u5074\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002</li> <li>\\(i\\) \u3068 \\(j\\) \u304c\u51fa\u4f1a\u3046\u307e\u3067\u30b9\u30c6\u30c3\u30d7 <code>2.</code> \u3068 <code>3.</code> \u3092\u7e70\u308a\u8fd4\u3057\u307e\u3059\u3002</li> </ol> &lt;1&gt;&lt;2&gt;&lt;3&gt;&lt;4&gt;&lt;5&gt;&lt;6&gt;&lt;7&gt;&lt;8&gt;&lt;9&gt; <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p> \u56f3 15-11 \u00a0 \u6700\u5927\u5bb9\u91cf\u554f\u984c\u306e\u8caa\u6b32\u30d7\u30ed\u30bb\u30b9 </p>"},{"location":"chapter_greedy/max_capacity_problem/#2","title":"2. \u00a0 \u5b9f\u88c5","text":"<p>\u30b3\u30fc\u30c9\u306f\u6700\u5927 \\(n\\) \u56de\u30eb\u30fc\u30d7\u3059\u308b\u305f\u3081\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(n)\\) \u3067\u3059\u3002</p> <p>\u5909\u6570 \\(i\\)\u3001\\(j\\)\u3001\\(res\\) \u306f\u4e00\u5b9a\u91cf\u306e\u8ffd\u52a0\u30b9\u30da\u30fc\u30b9\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u3001\u7a7a\u9593\u8a08\u7b97\u91cf\u306f \\(O(1)\\) \u3067\u3059\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby max_capacity.py<pre><code>def max_capacity(ht: list[int]) -&gt; int:\n \"\"\"\u6700\u5927\u5bb9\u91cf\uff1a\u8caa\u6b32\u6cd5\"\"\"\n # i\u3001j \u3092\u521d\u671f\u5316\u3001\u914d\u5217\u306e\u4e21\u7aef\u3067\u5206\u5272\u3055\u305b\u308b\n i, j = 0, len(ht) - 1\n # \u521d\u671f\u6700\u5927\u5bb9\u91cf\u306f 0\n res = 0\n # 2 \u3064\u306e\u677f\u304c\u51fa\u4f1a\u3046\u307e\u3067\u8caa\u6b32\u9078\u629e\u3092\u30eb\u30fc\u30d7\n while i &lt; j:\n # \u6700\u5927\u5bb9\u91cf\u3092\u66f4\u65b0\n cap = min(ht[i], ht[j]) * (j - i)\n res = max(res, cap)\n # \u77ed\u3044\u677f\u3092\u5185\u5074\u306b\u79fb\u52d5\n if ht[i] &lt; ht[j]:\n i += 1\n else:\n j -= 1\n return res\n</code></pre> max_capacity.cpp<pre><code>/* \u6700\u5927\u5bb9\u91cf\uff1a\u8caa\u6b32\u6cd5 */\nint maxCapacity(vector&lt;int&gt; &amp;ht) {\n // i\u3001j \u3092\u521d\u671f\u5316\u3057\u3001\u914d\u5217\u306e\u4e21\u7aef\u3067\u5206\u5272\u3055\u305b\u308b\n int i = 0, j = ht.size() - 1;\n // \u521d\u671f\u6700\u5927\u5bb9\u91cf\u306f 0\n int res = 0;\n // 2\u3064\u306e\u677f\u304c\u51fa\u4f1a\u3046\u307e\u3067\u8caa\u6b32\u9078\u629e\u3092\u30eb\u30fc\u30d7\n while (i &lt; j) {\n // \u6700\u5927\u5bb9\u91cf\u3092\u66f4\u65b0\n int cap = min(ht[i], ht[j]) * (j - i);\n res = max(res, cap);\n // \u3088\u308a\u77ed\u3044\u677f\u3092\u5185\u5074\u306b\u79fb\u52d5\n if (ht[i] &lt; ht[j]) {\n i++;\n } else {\n j--;\n }\n }\n return res;\n}\n</code></pre> max_capacity.java<pre><code>/* \u6700\u5927\u5bb9\u91cf\uff1a\u8caa\u6b32\u6cd5 */\nint maxCapacity(int[] ht) {\n // i\u3001j \u3092\u521d\u671f\u5316\u3057\u3001\u914d\u5217\u306e\u4e21\u7aef\u3067\u5206\u5272\u3055\u305b\u308b\n int i = 0, j = ht.length - 1;\n // \u521d\u671f\u6700\u5927\u5bb9\u91cf\u306f 0\n int res = 0;\n // 2\u3064\u306e\u677f\u304c\u51fa\u4f1a\u3046\u307e\u3067\u8caa\u6b32\u9078\u629e\u3092\u30eb\u30fc\u30d7\n while (i &lt; j) {\n // \u6700\u5927\u5bb9\u91cf\u3092\u66f4\u65b0\n int cap = Math.min(ht[i], ht[j]) * (j - i);\n res = Math.max(res, cap);\n // \u3088\u308a\u77ed\u3044\u677f\u3092\u5185\u5074\u306b\u79fb\u52d5\n if (ht[i] &lt; ht[j]) {\n i++;\n } else {\n j--;\n }\n }\n return res;\n}\n</code></pre> max_capacity.cs<pre><code>[class]{max_capacity}-[func]{MaxCapacity}\n</code></pre> max_capacity.go<pre><code>[class]{}-[func]{maxCapacity}\n</code></pre> max_capacity.swift<pre><code>[class]{}-[func]{maxCapacity}\n</code></pre> max_capacity.js<pre><code>[class]{}-[func]{maxCapacity}\n</code></pre> max_capacity.ts<pre><code>[class]{}-[func]{maxCapacity}\n</code></pre> max_capacity.dart<pre><code>[class]{}-[func]{maxCapacity}\n</code></pre> max_capacity.rs<pre><code>[class]{}-[func]{max_capacity}\n</code></pre> max_capacity.c<pre><code>[class]{}-[func]{maxCapacity}\n</code></pre> max_capacity.kt<pre><code>[class]{}-[func]{maxCapacity}\n</code></pre> max_capacity.rb<pre><code>[class]{}-[func]{max_capacity}\n</code></pre>"},{"location":"chapter_greedy/max_capacity_problem/#3","title":"3. \u00a0 \u6b63\u3057\u3055\u306e\u8a3c\u660e","text":"<p>\u8caa\u6b32\u6cd5\u304c\u5217\u6319\u3088\u308a\u3082\u9ad8\u901f\u3067\u3042\u308b\u7406\u7531\u306f\u3001\u5404\u30e9\u30a6\u30f3\u30c9\u306e\u8caa\u6b32\u9078\u629e\u304c\u4e00\u90e8\u306e\u72b6\u614b\u3092\u300c\u30b9\u30ad\u30c3\u30d7\u300d\u3059\u308b\u304b\u3089\u3067\u3059\u3002</p> <p>\u4f8b\u3048\u3070\u3001\\(i\\) \u304c\u77ed\u3044\u4ed5\u5207\u308a\u3067 \\(j\\) \u304c\u9ad8\u3044\u4ed5\u5207\u308a\u3067\u3042\u308b\u72b6\u614b \\(cap[i, j]\\) \u306e\u4e0b\u3067\u3001\u77ed\u3044\u4ed5\u5207\u308a \\(i\\) \u3092\u8caa\u6b32\u306b1\u30b9\u30c6\u30c3\u30d7\u5185\u5074\u306b\u79fb\u52d5\u3059\u308b\u3068\u3001\u4e0b\u306e\u56f3\u306b\u793a\u3059\u300c\u30b9\u30ad\u30c3\u30d7\u3055\u308c\u305f\u300d\u72b6\u614b\u306b\u3064\u306a\u304c\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u3053\u308c\u3089\u306e\u72b6\u614b\u306e\u5bb9\u91cf\u3092\u5f8c\u3067\u691c\u8a3c\u3067\u304d\u306a\u3044\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002</p> \\[ cap[i, i+1], cap[i, i+2], \\dots, cap[i, j-2], cap[i, j-1] \\] <p></p> <p> \u56f3 15-12 \u00a0 \u77ed\u3044\u4ed5\u5207\u308a\u306e\u79fb\u52d5\u306b\u3088\u3063\u3066\u30b9\u30ad\u30c3\u30d7\u3055\u308c\u308b\u72b6\u614b </p> <p>\u89b3\u5bdf\u3059\u308b\u3068\u3001\u3053\u308c\u3089\u306e\u30b9\u30ad\u30c3\u30d7\u3055\u308c\u305f\u72b6\u614b\u306f\u5b9f\u969b\u306b\u306f\u9ad8\u3044\u4ed5\u5207\u308a \\(j\\) \u304c\u5185\u5074\u306b\u79fb\u52d5\u3057\u305f\u3059\u3079\u3066\u306e\u72b6\u614b**\u3067\u3059\u3002\u9ad8\u3044\u4ed5\u5207\u308a\u3092\u5185\u5074\u306b\u79fb\u52d5\u3059\u308b\u3068\u5bb9\u91cf\u304c\u78ba\u5b9f\u306b\u6e1b\u5c11\u3059\u308b\u3053\u3068\u3092\u3059\u3067\u306b\u8a3c\u660e\u3057\u307e\u3057\u305f\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30b9\u30ad\u30c3\u30d7\u3055\u308c\u305f\u72b6\u614b\u306f\u6700\u9069\u89e3\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u306a\u304f\u3001**\u305d\u308c\u3089\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u3066\u3082\u6700\u9069\u89e3\u3092\u898b\u9003\u3059\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002</p> <p>\u5206\u6790\u306b\u3088\u308a\u3001\u77ed\u3044\u4ed5\u5207\u308a\u3092\u79fb\u52d5\u3059\u308b\u64cd\u4f5c\u306f\u300c\u5b89\u5168\u300d\u3067\u3042\u308a\u3001\u8caa\u6b32\u6226\u7565\u304c\u52b9\u679c\u7684\u3067\u3042\u308b\u3053\u3068\u304c\u793a\u3055\u308c\u307e\u3059\u3002</p>"},{"location":"chapter_greedy/max_product_cutting_problem/","title":"15.4 \u00a0 \u6700\u5927\u7a4d\u5207\u65ad\u554f\u984c","text":"<p>Question</p> <p>\u6b63\u306e\u6574\u6570 \\(n\\) \u304c\u4e0e\u3048\u3089\u308c\u305f\u3068\u304d\u3001\u305d\u308c\u3092\u5408\u8a08\u304c \\(n\\) \u306b\u306a\u308b\u5c11\u306a\u304f\u3068\u30822\u3064\u306e\u6b63\u306e\u6574\u6570\u306b\u5206\u5272\u3057\u3001\u3053\u308c\u3089\u306e\u6574\u6570\u306e\u6700\u5927\u7a4d\u3092\u6c42\u3081\u3066\u304f\u3060\u3055\u3044\u3002\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3068\u304a\u308a\u3067\u3059\u3002</p> <p></p> <p> \u56f3 15-13 \u00a0 \u6700\u5927\u7a4d\u5207\u65ad\u554f\u984c\u306e\u5b9a\u7fa9 </p> <p>\\(n\\) \u3092 \\(m\\) \u500b\u306e\u6574\u6570\u56e0\u5b50\u306b\u5206\u5272\u3059\u308b\u3068\u4eee\u5b9a\u3057\u3001\\(i\\) \u756a\u76ee\u306e\u56e0\u5b50\u3092 \\(n_i\\) \u3068\u8868\u8a18\u3059\u308b\u3068\u3001</p> \\[ n = \\sum_{i=1}^{m}n_i \\] <p>\u3053\u306e\u554f\u984c\u306e\u76ee\u6a19\u306f\u3001\u3059\u3079\u3066\u306e\u6574\u6570\u56e0\u5b50\u306e\u6700\u5927\u7a4d\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u3067\u3059\u3002\u3059\u306a\u308f\u3061\u3001</p> \\[ \\max(\\prod_{i=1}^{m}n_i) \\] <p>\u8003\u616e\u3059\u3079\u304d\u70b9\uff1a\u5206\u5272\u6570 \\(m\\) \u306f\u3069\u306e\u7a0b\u5ea6\u5927\u304d\u304f\u3059\u3079\u304d\u304b\u3001\u5404 \\(n_i\\) \u306f\u4f55\u3067\u3042\u308b\u3079\u304d\u304b\uff1f</p>"},{"location":"chapter_greedy/max_product_cutting_problem/#1","title":"1. \u00a0 \u8caa\u6b32\u6226\u7565\u306e\u6c7a\u5b9a","text":"<p>\u7d4c\u9a13\u7684\u306b\u30012\u3064\u306e\u6574\u6570\u306e\u7a4d\u306f\u591a\u304f\u306e\u5834\u5408\u305d\u306e\u548c\u3088\u308a\u3082\u5927\u304d\u304f\u306a\u308a\u307e\u3059\u3002\\(n\\) \u304b\u3089\u56e0\u5b50 \\(2\\) \u3092\u5206\u5272\u3059\u308b\u3068\u4eee\u5b9a\u3059\u308b\u3068\u3001\u305d\u306e\u7a4d\u306f \\(2(n-2)\\) \u3067\u3059\u3002\u3053\u306e\u7a4d\u3092 \\(n\\) \u3068\u6bd4\u8f03\u3057\u307e\u3059\uff1a</p> \\[ \\begin{aligned} 2(n-2) &amp; \\geq n \\newline 2n - n - 4 &amp; \\geq 0 \\newline n &amp; \\geq 4 \\end{aligned} \\] <p>\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\\(n \\geq 4\\) \u306e\u3068\u304d\u3001\\(2\\) \u3092\u5206\u5272\u3059\u308b\u3068\u7a4d\u304c\u5897\u52a0\u3057\u307e\u3059\u3002\u3053\u308c\u306f4\u4ee5\u4e0a\u306e\u6574\u6570\u3092\u5206\u5272\u3059\u3079\u304d\u3067\u3042\u308b\u3053\u3068\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002</p> <p>\u8caa\u6b32\u6226\u75651\uff1a\u5206\u5272\u30b9\u30ad\u30fc\u30e0\u304c \\(\\geq 4\\) \u306e\u56e0\u5b50\u3092\u542b\u3080\u5834\u5408\u3001\u305d\u308c\u3089\u306f\u3055\u3089\u306b\u5206\u5272\u3055\u308c\u308b\u3079\u304d\u3067\u3059\u3002\u6700\u7d42\u7684\u306a\u5206\u5272\u306f\u56e0\u5b50 \\(1\\)\u3001\\(2\\)\u3001\\(3\\) \u306e\u307f\u3092\u542b\u3080\u3079\u304d\u3067\u3059\u3002</p> <p></p> <p> \u56f3 15-14 \u00a0 \u5206\u5272\u306b\u3088\u308b\u7a4d\u306e\u5897\u52a0 </p> <p>\u6b21\u306b\u3001\u3069\u306e\u56e0\u5b50\u304c\u6700\u9069\u304b\u3092\u8003\u616e\u3057\u307e\u3059\u3002\u56e0\u5b50 \\(1\\)\u3001\\(2\\)\u3001\\(3\\) \u306e\u4e2d\u3067\u3001\u660e\u3089\u304b\u306b \\(1\\) \u304c\u6700\u60aa\u3067\u3059\u3002\\(1 \\times (n-1) &lt; n\\) \u304c\u5e38\u306b\u6210\u308a\u7acb\u3064\u305f\u3081\u3001\\(1\\) \u3092\u5206\u5272\u3059\u308b\u3068\u5b9f\u969b\u306b\u7a4d\u304c\u6e1b\u5c11\u3057\u307e\u3059\u3002</p> <p>\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\\(n = 6\\) \u306e\u3068\u304d\u3001\\(3 \\times 3 &gt; 2 \\times 2 \\times 2\\) \u3067\u3059\u3002\u3053\u308c\u306f \\(3\\) \u3092\u5206\u5272\u3059\u308b\u65b9\u304c \\(2\\) \u3092\u5206\u5272\u3059\u308b\u3088\u308a\u3082\u826f\u3044\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002</p> <p>\u8caa\u6b32\u6226\u75652\uff1a\u5206\u5272\u30b9\u30ad\u30fc\u30e0\u306b\u306f\u6700\u5927\u30672\u3064\u306e \\(2\\) \u304c\u3042\u308b\u3079\u304d\u3067\u3059\u30023\u3064\u306e \\(2\\) \u306f\u5e38\u306b2\u3064\u306e \\(3\\) \u306b\u7f6e\u304d\u63db\u3048\u3066\u3088\u308a\u9ad8\u3044\u7a4d\u3092\u5f97\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u304b\u3089\u3067\u3059\u3002</p> <p></p> <p> \u56f3 15-15 \u00a0 \u6700\u9069\u306a\u5206\u5272\u56e0\u5b50 </p> <p>\u4e0a\u8a18\u304b\u3089\u3001\u4ee5\u4e0b\u306e\u8caa\u6b32\u6226\u7565\u3092\u5c0e\u51fa\u3067\u304d\u307e\u3059\u3002</p> <ol> <li>\u5165\u529b\u6574\u6570 \\(n\\) \u306b\u3064\u3044\u3066\u3001\u4f59\u308a\u304c \\(0\\)\u3001\\(1\\)\u3001\u307e\u305f\u306f \\(2\\) \u306b\u306a\u308b\u307e\u3067\u56e0\u5b50 \\(3\\) \u3092\u7d99\u7d9a\u7684\u306b\u5206\u5272\u3057\u307e\u3059\u3002</li> <li>\u4f59\u308a\u304c \\(0\\) \u306e\u5834\u5408\u3001\\(n\\) \u304c \\(3\\) \u306e\u500d\u6570\u3067\u3042\u308b\u3053\u3068\u3092\u610f\u5473\u3059\u308b\u305f\u3081\u3001\u305d\u308c\u4ee5\u4e0a\u306e\u884c\u52d5\u306f\u53d6\u308a\u307e\u305b\u3093\u3002</li> <li>\u4f59\u308a\u304c \\(2\\) \u306e\u5834\u5408\u3001\u3055\u3089\u306b\u5206\u5272\u3092\u7d9a\u3051\u305a\u3001\u305d\u306e\u307e\u307e\u4fdd\u6301\u3057\u307e\u3059\u3002</li> <li>\u4f59\u308a\u304c \\(1\\) \u306e\u5834\u5408\u3001\\(2 \\times 2 &gt; 1 \\times 3\\) \u3067\u3042\u308b\u305f\u3081\u3001\u6700\u5f8c\u306e \\(3\\) \u3092 \\(2\\) \u306b\u7f6e\u304d\u63db\u3048\u308b\u3079\u304d\u3067\u3059\u3002</li> </ol>"},{"location":"chapter_greedy/max_product_cutting_problem/#2","title":"2. \u00a0 \u30b3\u30fc\u30c9\u5b9f\u88c5","text":"<p>\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u6574\u6570\u3092\u5206\u5272\u3059\u308b\u305f\u3081\u306b\u30eb\u30fc\u30d7\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u306f\u306a\u304f\u3001\u5e8a\u9664\u7b97\u6f14\u7b97\u3092\u4f7f\u7528\u3057\u3066 \\(3\\) \u306e\u6570 \\(a\\) \u3092\u53d6\u5f97\u3057\u3001\u5270\u4f59\u6f14\u7b97\u3092\u4f7f\u7528\u3057\u3066\u4f59\u308a \\(b\\) \u3092\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\uff1a</p> \\[ n = 3a + b \\] <p>\\(n \\leq 3\\) \u306e\u5883\u754c\u30b1\u30fc\u30b9\u3067\u306f\u3001\\(1\\) \u3092\u5206\u5272\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u7a4d\u306f \\(1 \\times (n - 1)\\) \u3067\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby max_product_cutting.py<pre><code>def max_product_cutting(n: int) -&gt; int:\n \"\"\"\u5207\u65ad\u306e\u6700\u5927\u7a4d\uff1a\u8caa\u6b32\u6cd5\"\"\"\n # n &lt;= 3 \u306e\u5834\u5408\u30011 \u3092\u5207\u308a\u51fa\u3059\u5fc5\u8981\u304c\u3042\u308b\n if n &lt;= 3:\n return 1 * (n - 1)\n # \u8caa\u6b32\u7684\u306b 3 \u3092\u5207\u308a\u51fa\u3059\u3001a \u306f 3 \u306e\u500b\u6570\u3001b \u306f\u4f59\u308a\n a, b = n // 3, n % 3\n if b == 1:\n # \u4f59\u308a\u304c 1 \u306e\u5834\u5408\u30011 * 3 \u306e\u30da\u30a2\u3092 2 * 2 \u306b\u5909\u63db\n return int(math.pow(3, a - 1)) * 2 * 2\n if b == 2:\n # \u4f59\u308a\u304c 2 \u306e\u5834\u5408\u3001\u4f55\u3082\u3057\u306a\u3044\n return int(math.pow(3, a)) * 2\n # \u4f59\u308a\u304c 0 \u306e\u5834\u5408\u3001\u4f55\u3082\u3057\u306a\u3044\n return int(math.pow(3, a))\n</code></pre> max_product_cutting.cpp<pre><code>/* \u6700\u5927\u7a4d\u5207\u65ad\uff1a\u8caa\u6b32\u6cd5 */\nint maxProductCutting(int n) {\n // n &lt;= 3 \u306e\u5834\u5408\u30011 \u3092\u5207\u308a\u51fa\u3059\u5fc5\u8981\u304c\u3042\u308b\n if (n &lt;= 3) {\n return 1 * (n - 1);\n }\n // \u8caa\u6b32\u306b 3 \u3092\u5207\u308a\u51fa\u3059\u3002a \u306f 3 \u306e\u500b\u6570\u3001b \u306f\u4f59\u308a\n int a = n / 3;\n int b = n % 3;\n if (b == 1) {\n // \u4f59\u308a\u304c 1 \u306e\u5834\u5408\u30011 * 3 \u306e\u30da\u30a2\u3092 2 * 2 \u306b\u5909\u63db\n return (int)pow(3, a - 1) * 2 * 2;\n }\n if (b == 2) {\n // \u4f59\u308a\u304c 2 \u306e\u5834\u5408\u3001\u4f55\u3082\u3057\u306a\u3044\n return (int)pow(3, a) * 2;\n }\n // \u4f59\u308a\u304c 0 \u306e\u5834\u5408\u3001\u4f55\u3082\u3057\u306a\u3044\n return (int)pow(3, a);\n}\n</code></pre> max_product_cutting.java<pre><code>/* \u6700\u5927\u7a4d\u5207\u65ad\uff1a\u8caa\u6b32\u6cd5 */\nint maxProductCutting(int n) {\n // n &lt;= 3 \u306e\u5834\u5408\u30011 \u3092\u5207\u308a\u51fa\u3059\u5fc5\u8981\u304c\u3042\u308b\n if (n &lt;= 3) {\n return 1 * (n - 1);\n }\n // \u8caa\u6b32\u306b 3 \u3092\u5207\u308a\u51fa\u3059\u3002a \u306f 3 \u306e\u500b\u6570\u3001b \u306f\u4f59\u308a\n int a = n / 3;\n int b = n % 3;\n if (b == 1) {\n // \u4f59\u308a\u304c 1 \u306e\u5834\u5408\u30011 * 3 \u306e\u30da\u30a2\u3092 2 * 2 \u306b\u5909\u63db\n return (int) Math.pow(3, a - 1) * 2 * 2;\n }\n if (b == 2) {\n // \u4f59\u308a\u304c 2 \u306e\u5834\u5408\u3001\u4f55\u3082\u3057\u306a\u3044\n return (int) Math.pow(3, a) * 2;\n }\n // \u4f59\u308a\u304c 0 \u306e\u5834\u5408\u3001\u4f55\u3082\u3057\u306a\u3044\n return (int) Math.pow(3, a);\n}\n</code></pre> max_product_cutting.cs<pre><code>[class]{max_product_cutting}-[func]{MaxProductCutting}\n</code></pre> max_product_cutting.go<pre><code>[class]{}-[func]{maxProductCutting}\n</code></pre> max_product_cutting.swift<pre><code>[class]{}-[func]{maxProductCutting}\n</code></pre> max_product_cutting.js<pre><code>[class]{}-[func]{maxProductCutting}\n</code></pre> max_product_cutting.ts<pre><code>[class]{}-[func]{maxProductCutting}\n</code></pre> max_product_cutting.dart<pre><code>[class]{}-[func]{maxProductCutting}\n</code></pre> max_product_cutting.rs<pre><code>[class]{}-[func]{max_product_cutting}\n</code></pre> max_product_cutting.c<pre><code>[class]{}-[func]{maxProductCutting}\n</code></pre> max_product_cutting.kt<pre><code>[class]{}-[func]{maxProductCutting}\n</code></pre> max_product_cutting.rb<pre><code>[class]{}-[func]{max_product_cutting}\n</code></pre> <p></p> <p> \u56f3 15-16 \u00a0 \u5207\u65ad\u5f8c\u306e\u6700\u5927\u7a4d\u306e\u8a08\u7b97\u65b9\u6cd5 </p> <p>\u6642\u9593\u8a08\u7b97\u91cf\u306f\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306e\u3079\u304d\u4e57\u6f14\u7b97\u306e\u5b9f\u88c5\u306b\u4f9d\u5b58\u3057\u307e\u3059\u3002Python\u3067\u306f\u3001\u3088\u304f\u4f7f\u7528\u3055\u308c\u308b\u3079\u304d\u4e57\u8a08\u7b97\u95a2\u6570\u306f3\u7a2e\u985e\u3042\u308a\u307e\u3059\uff1a</p> <ul> <li>\u6f14\u7b97\u5b50 <code>**</code> \u3068\u95a2\u6570 <code>pow()</code> \u306e\u4e21\u65b9\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(\\log\u2061 a)\\) \u3067\u3059\u3002</li> <li><code>math.pow()</code> \u95a2\u6570\u306f\u5185\u90e8\u3067C\u8a00\u8a9e\u30e9\u30a4\u30d6\u30e9\u30ea\u306e <code>pow()</code> \u95a2\u6570\u3092\u547c\u3073\u51fa\u3057\u3001\u6d6e\u52d5\u5c0f\u6570\u70b9\u3079\u304d\u4e57\u3092\u5b9f\u884c\u3057\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(1)\\) \u3067\u3059\u3002</li> </ul> <p>\u5909\u6570 \\(a\\) \u3068 \\(b\\) \u306f\u4e00\u5b9a\u30b5\u30a4\u30ba\u306e\u8ffd\u52a0\u30b9\u30da\u30fc\u30b9\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u3001\u7a7a\u9593\u8a08\u7b97\u91cf\u306f \\(O(1)\\) \u3067\u3059\u3002</p>"},{"location":"chapter_greedy/max_product_cutting_problem/#3","title":"3. \u00a0 \u6b63\u3057\u3055\u306e\u8a3c\u660e","text":"<p>\u80cc\u7406\u6cd5\u3092\u4f7f\u7528\u3057\u3001\\(n \\geq 3\\) \u306e\u30b1\u30fc\u30b9\u306e\u307f\u3092\u5206\u6790\u3057\u307e\u3059\u3002</p> <ol> <li>\u3059\u3079\u3066\u306e\u56e0\u5b50 \\(\\leq 3\\)\uff1a\u6700\u9069\u5206\u5272\u30b9\u30ad\u30fc\u30e0\u304c\u56e0\u5b50 \\(x \\geq 4\\) \u3092\u542b\u3080\u3068\u4eee\u5b9a\u3059\u308b\u3068\u3001\u305d\u308c\u3092\u78ba\u5b9f\u306b \\(2(x-2)\\) \u306b\u3055\u3089\u306b\u5206\u5272\u3067\u304d\u3001\u3088\u308a\u5927\u304d\u306a\u7a4d\u3092\u5f97\u3089\u308c\u307e\u3059\u3002\u3053\u308c\u306f\u4eee\u5b9a\u3068\u77db\u76fe\u3057\u307e\u3059\u3002</li> <li>\u5206\u5272\u30b9\u30ad\u30fc\u30e0\u306b \\(1\\) \u304c\u542b\u307e\u308c\u306a\u3044\uff1a\u6700\u9069\u5206\u5272\u30b9\u30ad\u30fc\u30e0\u304c\u56e0\u5b50 \\(1\\) \u3092\u542b\u3080\u3068\u4eee\u5b9a\u3059\u308b\u3068\u3001\u305d\u308c\u3092\u78ba\u5b9f\u306b\u5225\u306e\u56e0\u5b50\u3068\u7d50\u5408\u3057\u3066\u3088\u308a\u5927\u304d\u306a\u7a4d\u3092\u5f97\u3089\u308c\u307e\u3059\u3002\u3053\u308c\u306f\u4eee\u5b9a\u3068\u77db\u76fe\u3057\u307e\u3059\u3002</li> <li>\u5206\u5272\u30b9\u30ad\u30fc\u30e0\u306b\u306f\u6700\u5927\u30672\u3064\u306e \\(2\\) \u304c\u542b\u307e\u308c\u308b\uff1a\u6700\u9069\u5206\u5272\u30b9\u30ad\u30fc\u30e0\u304c3\u3064\u306e \\(2\\) \u3092\u542b\u3080\u3068\u4eee\u5b9a\u3059\u308b\u3068\u3001\u305d\u308c\u3089\u3092\u78ba\u5b9f\u306b2\u3064\u306e \\(3\\) \u306b\u7f6e\u304d\u63db\u3048\u3066\u3001\u3088\u308a\u9ad8\u3044\u7a4d\u3092\u9054\u6210\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u4eee\u5b9a\u3068\u77db\u76fe\u3057\u307e\u3059\u3002</li> </ol>"},{"location":"chapter_greedy/summary/","title":"15.5 \u00a0 \u307e\u3068\u3081","text":"<ul> <li>\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u6700\u9069\u5316\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306b\u3088\u304f\u4f7f\u7528\u3055\u308c\u3001\u539f\u7406\u306f\u5404\u6c7a\u5b9a\u6bb5\u968e\u3067\u5c40\u6240\u7684\u306b\u6700\u9069\u306a\u6c7a\u5b9a\u3092\u884c\u3044\u3001\u30b0\u30ed\u30fc\u30d0\u30eb\u306b\u6700\u9069\u306a\u89e3\u3092\u9054\u6210\u3059\u308b\u3053\u3068\u3067\u3059\u3002</li> <li>\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u8caa\u6b32\u306a\u9078\u629e\u3092\u6b21\u3005\u3068\u53cd\u5fa9\u7684\u306b\u884c\u3044\u3001\u5404\u30e9\u30a6\u30f3\u30c9\u3067\u554f\u984c\u3092\u3088\u308a\u5c0f\u3055\u306a\u90e8\u5206\u554f\u984c\u306b\u5909\u63db\u3057\u3001\u554f\u984c\u304c\u89e3\u6c7a\u3055\u308c\u308b\u307e\u3067\u7d9a\u3051\u307e\u3059\u3002</li> <li>\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u5b9f\u88c5\u304c\u7c21\u5358\u306a\u3060\u3051\u3067\u306a\u304f\u3001\u554f\u984c\u89e3\u6c7a\u52b9\u7387\u3082\u9ad8\u3044\u3067\u3059\u3002\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3068\u6bd4\u8f03\u3057\u3066\u3001\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u4e00\u822c\u7684\u306b\u3088\u308a\u4f4e\u3044\u6642\u9593\u8a08\u7b97\u91cf\u3092\u6301\u3061\u307e\u3059\u3002</li> <li>\u30b3\u30a4\u30f3\u4ea4\u63db\u554f\u984c\u306b\u304a\u3044\u3066\u3001\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u7279\u5b9a\u306e\u30b3\u30a4\u30f3\u306e\u7d44\u307f\u5408\u308f\u305b\u306b\u5bfe\u3057\u3066\u6700\u9069\u89e3\u3092\u4fdd\u8a3c\u3067\u304d\u307e\u3059\u304c\u3001\u4ed6\u306e\u7d44\u307f\u5408\u308f\u305b\u3067\u306f\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u304c\u975e\u5e38\u306b\u60aa\u3044\u89e3\u3092\u898b\u3064\u3051\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u89e3\u6cd5\u306b\u9069\u3057\u305f\u554f\u984c\u306f2\u3064\u306e\u4e3b\u8981\u306a\u6027\u8cea\u3092\u6301\u3061\u307e\u3059\uff1a\u8caa\u6b32\u9078\u629e\u6027\u3068\u6700\u9069\u90e8\u5206\u69cb\u9020\u3002\u8caa\u6b32\u9078\u629e\u6027\u306f\u8caa\u6b32\u6226\u7565\u306e\u52b9\u679c\u3092\u8868\u3057\u307e\u3059\u3002</li> <li>\u4e00\u90e8\u306e\u8907\u96d1\u306a\u554f\u984c\u3067\u306f\u3001\u8caa\u6b32\u9078\u629e\u6027\u3092\u8a3c\u660e\u3059\u308b\u3053\u3068\u306f\u7c21\u5358\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u9006\u306b\u3001\u7121\u52b9\u6027\u3092\u8a3c\u660e\u3059\u308b\u3053\u3068\u306f\u3057\u3070\u3057\u3070\u3088\u308a\u5bb9\u6613\u3067\u3001\u30b3\u30a4\u30f3\u4ea4\u63db\u554f\u984c\u306a\u3069\u304c\u305d\u306e\u4f8b\u3067\u3059\u3002</li> <li>\u8caa\u6b32\u554f\u984c\u306e\u89e3\u6c7a\u306f\u4e3b\u306b3\u3064\u306e\u30b9\u30c6\u30c3\u30d7\u304b\u3089\u69cb\u6210\u3055\u308c\u307e\u3059\uff1a\u554f\u984c\u5206\u6790\u3001\u8caa\u6b32\u6226\u7565\u306e\u6c7a\u5b9a\u3001\u6b63\u3057\u3055\u306e\u8a3c\u660e\u3002\u3053\u306e\u3046\u3061\u3001\u8caa\u6b32\u6226\u7565\u306e\u6c7a\u5b9a\u304c\u91cd\u8981\u306a\u30b9\u30c6\u30c3\u30d7\u3067\u3042\u308a\u3001\u6b63\u3057\u3055\u306e\u8a3c\u660e\u304c\u3057\u3070\u3057\u3070\u6311\u6226\u3068\u306a\u308a\u307e\u3059\u3002</li> <li>\u5206\u6570\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u306f0-1\u30ca\u30c3\u30d7\u30b5\u30c3\u30af\u554f\u984c\u306b\u57fa\u3065\u3044\u3066\u30a2\u30a4\u30c6\u30e0\u306e\u4e00\u90e8\u306e\u9078\u629e\u3092\u53ef\u80fd\u306b\u3057\u3001\u3057\u305f\u304c\u3063\u3066\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u4f7f\u7528\u3057\u3066\u89e3\u6c7a\u3067\u304d\u307e\u3059\u3002\u8caa\u6b32\u6226\u7565\u306e\u6b63\u3057\u3055\u306f\u80cc\u7406\u6cd5\u306b\u3088\u3063\u3066\u8a3c\u660e\u3067\u304d\u307e\u3059\u3002</li> <li>\u6700\u5927\u5bb9\u91cf\u554f\u984c\u306f\u5168\u63a2\u7d22\u6cd5\u3067\u89e3\u6c7a\u3067\u304d\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(n^2)\\) \u3067\u3059\u3002\u8caa\u6b32\u6226\u7565\u3092\u8a2d\u8a08\u3059\u308b\u3053\u3068\u3067\u3001\u5404\u30e9\u30a6\u30f3\u30c9\u3067\u77ed\u3044\u677f\u3092\u5185\u5074\u306b\u79fb\u52d5\u3057\u3001\u6642\u9593\u8a08\u7b97\u91cf\u3092 \\(O(n)\\) \u306b\u6700\u9069\u5316\u3057\u307e\u3059\u3002</li> <li>\u5207\u65ad\u5f8c\u306e\u6700\u5927\u7a4d\u554f\u984c\u306b\u304a\u3044\u3066\u30012\u3064\u306e\u8caa\u6b32\u6226\u7565\u3092\u5c0e\u51fa\u3057\u307e\u3059\uff1a\\(\\geq 4\\) \u306e\u6574\u6570\u306f\u7d99\u7d9a\u7684\u306b\u5207\u65ad\u3055\u308c\u308b\u3079\u304d\u3067\u3001\u6700\u9069\u306a\u5207\u65ad\u56e0\u5b50\u306f \\(3\\) \u3067\u3059\u3002\u30b3\u30fc\u30c9\u306b\u306f\u3079\u304d\u4e57\u6f14\u7b97\u304c\u542b\u307e\u308c\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f\u3079\u304d\u4e57\u6f14\u7b97\u306e\u5b9f\u88c5\u65b9\u6cd5\u306b\u4f9d\u5b58\u3057\u3001\u4e00\u822c\u7684\u306b \\(O(1)\\) \u307e\u305f\u306f \\(O(\\log n)\\) \u3067\u3059\u3002</li> </ul>"},{"location":"chapter_hashing/","title":"\u7b2c 6 \u7ae0 \u00a0 \u30cf\u30c3\u30b7\u30e5\u8868","text":"<p>Abstract</p> <p>\u30b3\u30f3\u30d4\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u4e16\u754c\u306b\u304a\u3044\u3066\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u306f\u8ce2\u3044\u53f8\u66f8\u306e\u3088\u3046\u306a\u3082\u306e\u3067\u3059\u3002</p> <p>\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u756a\u53f7\u306e\u8a08\u7b97\u65b9\u6cd5\u3092\u7406\u89e3\u3057\u3001\u76ee\u7684\u306e\u672c\u3092\u8fc5\u901f\u306b\u53d6\u5f97\u3059\u308b\u3053\u3068\u3092\u53ef\u80fd\u306b\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_hashing/#_1","title":"\u7ae0\u306e\u5185\u5bb9","text":"<ul> <li>6.1 \u00a0 \u30cf\u30c3\u30b7\u30e5\u8868</li> <li>6.2 \u00a0 \u30cf\u30c3\u30b7\u30e5\u885d\u7a81</li> <li>6.3 \u00a0 \u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0</li> <li>6.4 \u00a0 \u307e\u3068\u3081</li> </ul>"},{"location":"chapter_hashing/hash_algorithm/","title":"6.3 \u00a0 \u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0","text":"<p>\u524d\u306e2\u3064\u306e\u7bc0\u3067\u306f\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u52d5\u4f5c\u539f\u7406\u3068\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u3092\u51e6\u7406\u3059\u308b\u65b9\u6cd5\u3092\u7d39\u4ecb\u3057\u307e\u3057\u305f\u3002\u3057\u304b\u3057\u3001\u30aa\u30fc\u30d7\u30f3\u30a2\u30c9\u30ec\u30b9\u6cd5\u3068\u9023\u9396\u6cd5\u306f\u3069\u3061\u3089\u3082**\u885d\u7a81\u304c\u767a\u751f\u3057\u305f\u969b\u306b\u30cf\u30c3\u30b7\u30e5\u8868\u304c\u6b63\u5e38\u306b\u6a5f\u80fd\u3059\u308b\u3053\u3068\u306e\u307f\u3092\u4fdd\u8a3c\u3067\u304d\u3001\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u306e\u767a\u751f\u983b\u5ea6\u3092\u6e1b\u3089\u3059\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093**\u3002</p> <p>\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u304c\u3042\u307e\u308a\u306b\u3082\u983b\u7e41\u306b\u767a\u751f\u3059\u308b\u3068\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u6027\u80fd\u306f\u5287\u7684\u306b\u60aa\u5316\u3057\u307e\u3059\u3002\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u9023\u9396\u6cd5\u30cf\u30c3\u30b7\u30e5\u8868\u3067\u306f\u3001\u7406\u60f3\u7684\u306a\u30b1\u30fc\u30b9\u3067\u306f\u30ad\u30fc\u5024\u30da\u30a2\u304c\u30d0\u30b1\u30c3\u30c8\u9593\u306b\u5747\u7b49\u306b\u5206\u6563\u3055\u308c\u3001\u6700\u9069\u306a\u30af\u30a8\u30ea\u52b9\u7387\u3092\u5b9f\u73fe\u3057\u307e\u3059\u3002\u6700\u60aa\u306e\u30b1\u30fc\u30b9\u3067\u306f\u3001\u3059\u3079\u3066\u306e\u30ad\u30fc\u5024\u30da\u30a2\u304c\u540c\u3058\u30d0\u30b1\u30c3\u30c8\u306b\u683c\u7d0d\u3055\u308c\u3001\u6642\u9593\u8a08\u7b97\u91cf\u304c\\(O(n)\\)\u306b\u60aa\u5316\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 6-8 \u00a0 \u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u306e\u7406\u60f3\u7684\u304a\u3088\u3073\u6700\u60aa\u306e\u30b1\u30fc\u30b9 </p> <p>\u30ad\u30fc\u5024\u30da\u30a2\u306e\u5206\u5e03\u306f\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306b\u3088\u3063\u3066\u6c7a\u5b9a\u3055\u308c\u307e\u3059\u3002\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306e\u8a08\u7b97\u30b9\u30c6\u30c3\u30d7\u3092\u601d\u3044\u51fa\u3059\u3068\u3001\u307e\u305a\u30cf\u30c3\u30b7\u30e5\u5024\u3092\u8a08\u7b97\u3057\u3001\u6b21\u306b\u914d\u5217\u9577\u3067\u5270\u4f59\u3092\u53d6\u308a\u307e\u3059\uff1a</p> <pre><code>index = hash(key) % capacity\n</code></pre> <p>\u4e0a\u8a18\u306e\u5f0f\u3092\u89b3\u5bdf\u3059\u308b\u3068\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u5bb9\u91cf<code>capacity</code>\u304c\u56fa\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0<code>hash()</code>\u304c\u51fa\u529b\u5024\u3092\u6c7a\u5b9a\u3057\u3001\u305d\u308c\u306b\u3088\u3063\u3066\u30cf\u30c3\u30b7\u30e5\u8868\u306b\u304a\u3051\u308b\u30ad\u30fc\u5024\u30da\u30a2\u306e\u5206\u5e03\u3092\u6c7a\u5b9a\u3057\u307e\u3059\u3002</p> <p>\u3053\u308c\u306f\u3001\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u306e\u78ba\u7387\u3092\u6e1b\u3089\u3059\u305f\u3081\u306b\u3001\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0<code>hash()</code>\u306e\u8a2d\u8a08\u306b\u7126\u70b9\u3092\u5f53\u3066\u308b\u3079\u304d\u3067\u3042\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_hashing/hash_algorithm/#631","title":"6.3.1 \u00a0 \u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u76ee\u6a19","text":"<p>\u300c\u9ad8\u901f\u3067\u5b89\u5b9a\u3057\u305f\u300d\u30cf\u30c3\u30b7\u30e5\u8868\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u5b9f\u73fe\u3059\u308b\u305f\u3081\u306b\u3001\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u4ee5\u4e0b\u306e\u7279\u6027\u3092\u6301\u3064\u3079\u304d\u3067\u3059\uff1a</p> <ul> <li>\u6c7a\u5b9a\u6027: \u540c\u3058\u5165\u529b\u306b\u5bfe\u3057\u3066\u3001\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u5e38\u306b\u540c\u3058\u51fa\u529b\u3092\u751f\u6210\u3059\u308b\u3079\u304d\u3067\u3059\u3002\u305d\u3046\u3067\u306a\u3051\u308c\u3070\u30cf\u30c3\u30b7\u30e5\u8868\u306f\u4fe1\u983c\u3067\u304d\u307e\u305b\u3093\u3002</li> <li>\u9ad8\u52b9\u7387: \u30cf\u30c3\u30b7\u30e5\u5024\u3092\u8a08\u7b97\u3059\u308b\u30d7\u30ed\u30bb\u30b9\u306f\u5341\u5206\u306b\u9ad8\u901f\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u8a08\u7b97\u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9\u304c\u5c0f\u3055\u3044\u307b\u3069\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u306f\u3088\u308a\u5b9f\u7528\u7684\u306b\u306a\u308a\u307e\u3059\u3002</li> <li>\u5747\u7b49\u5206\u6563: \u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u30ad\u30fc\u5024\u30da\u30a2\u304c\u30cf\u30c3\u30b7\u30e5\u8868\u306b\u5747\u7b49\u306b\u5206\u6563\u3055\u308c\u308b\u3053\u3068\u3092\u4fdd\u8a3c\u3059\u308b\u3079\u304d\u3067\u3059\u3002\u5206\u6563\u304c\u5747\u7b49\u3067\u3042\u308b\u307b\u3069\u3001\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u306e\u78ba\u7387\u306f\u4f4e\u304f\u306a\u308a\u307e\u3059\u3002</li> </ul> <p>\u5b9f\u969b\u3001\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u5b9f\u88c5\u3060\u3051\u3067\u306a\u304f\u3001\u4ed6\u306e\u5206\u91ce\u3067\u3082\u5e83\u304f\u5fdc\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002</p> <ul> <li>\u30d1\u30b9\u30ef\u30fc\u30c9\u4fdd\u5b58: \u30e6\u30fc\u30b6\u30fc\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3092\u4fdd\u8b77\u3059\u308b\u305f\u3081\u306b\u3001\u30b7\u30b9\u30c6\u30e0\u306f\u901a\u5e38\u5e73\u6587\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u4fdd\u5b58\u305b\u305a\u3001\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u3092\u4fdd\u5b58\u3057\u307e\u3059\u3002\u30e6\u30fc\u30b6\u30fc\u304c\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3059\u308b\u3068\u3001\u30b7\u30b9\u30c6\u30e0\u306f\u5165\u529b\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u3092\u8a08\u7b97\u3057\u3001\u4fdd\u5b58\u3055\u308c\u3066\u3044\u308b\u30cf\u30c3\u30b7\u30e5\u5024\u3068\u6bd4\u8f03\u3057\u307e\u3059\u3002\u4e00\u81f4\u3059\u308c\u3070\u3001\u30d1\u30b9\u30ef\u30fc\u30c9\u306f\u6b63\u3057\u3044\u3068\u898b\u306a\u3055\u308c\u307e\u3059\u3002</li> <li>\u30c7\u30fc\u30bf\u6574\u5408\u6027\u30c1\u30a7\u30c3\u30af: \u30c7\u30fc\u30bf\u9001\u4fe1\u8005\u306f\u30c7\u30fc\u30bf\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u3092\u8a08\u7b97\u3057\u3066\u4e00\u7dd2\u306b\u9001\u4fe1\u3067\u304d\u307e\u3059\u3002\u53d7\u4fe1\u8005\u306f\u53d7\u4fe1\u3057\u305f\u30c7\u30fc\u30bf\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u3092\u518d\u8a08\u7b97\u3057\u3001\u53d7\u4fe1\u3057\u305f\u30cf\u30c3\u30b7\u30e5\u5024\u3068\u6bd4\u8f03\u3067\u304d\u307e\u3059\u3002\u4e00\u81f4\u3059\u308c\u3070\u3001\u30c7\u30fc\u30bf\u306f\u5b8c\u5168\u3067\u3042\u308b\u3068\u898b\u306a\u3055\u308c\u307e\u3059\u3002</li> </ul> <p>\u6697\u53f7\u5316\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u3001\u30cf\u30c3\u30b7\u30e5\u5024\u304b\u3089\u5143\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u63a8\u6e2c\u3059\u308b\u306a\u3069\u306e\u9006\u884c\u5206\u6790\u3092\u9632\u3050\u305f\u3081\u306b\u3001\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u3088\u308a\u9ad8\u3044\u30ec\u30d9\u30eb\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u6a5f\u80fd\u304c\u5fc5\u8981\u3067\u3059\u3002</p> <ul> <li>\u4e00\u65b9\u5411\u6027: \u30cf\u30c3\u30b7\u30e5\u5024\u304b\u3089\u5165\u529b\u30c7\u30fc\u30bf\u306b\u95a2\u3059\u308b\u60c5\u5831\u3092\u63a8\u6e2c\u3059\u308b\u3053\u3068\u306f\u4e0d\u53ef\u80fd\u3067\u3042\u308b\u3079\u304d\u3067\u3059\u3002</li> <li>\u885d\u7a81\u8010\u6027: \u540c\u3058\u30cf\u30c3\u30b7\u30e5\u5024\u3092\u751f\u6210\u3059\u308b2\u3064\u306e\u7570\u306a\u308b\u5165\u529b\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u306f\u6975\u3081\u3066\u56f0\u96e3\u3067\u3042\u308b\u3079\u304d\u3067\u3059\u3002</li> <li>\u96ea\u5d29\u52b9\u679c: \u5165\u529b\u306e\u5c0f\u3055\u306a\u5909\u66f4\u306f\u3001\u51fa\u529b\u306b\u5927\u304d\u304f\u4e88\u6e2c\u4e0d\u53ef\u80fd\u306a\u5909\u5316\u3092\u3082\u305f\u3089\u3059\u3079\u304d\u3067\u3059\u3002</li> </ul> <p>**\u300c\u5747\u7b49\u5206\u6563\u300d\u3068\u300c\u885d\u7a81\u8010\u6027\u300d\u306f2\u3064\u306e\u5225\u3005\u306e\u6982\u5ff5**\u3067\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u5747\u7b49\u5206\u6563\u3092\u6e80\u305f\u3057\u3066\u3082\u3001\u5fc5\u305a\u3057\u3082\u885d\u7a81\u8010\u6027\u304c\u3042\u308b\u3068\u306f\u9650\u308a\u307e\u305b\u3093\u3002\u4f8b\u3048\u3070\u3001\u30e9\u30f3\u30c0\u30e0\u306a\u5165\u529b<code>key</code>\u306e\u4e0b\u3067\u3001\u30cf\u30c3\u30b7\u30e5\u95a2\u6570<code>key % 100</code>\u306f\u5747\u7b49\u306b\u5206\u6563\u3055\u308c\u305f\u51fa\u529b\u3092\u751f\u6210\u3067\u304d\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u3053\u306e\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u904e\u5ea6\u306b\u30b7\u30f3\u30d7\u30eb\u3067\u3001\u4e0b\u4e8c\u6841\u304c\u540c\u3058\u3059\u3079\u3066\u306e<code>key</code>\u306f\u540c\u3058\u51fa\u529b\u3092\u6301\u3064\u305f\u3081\u3001\u30cf\u30c3\u30b7\u30e5\u5024\u304b\u3089\u4f7f\u7528\u53ef\u80fd\u306a<code>key</code>\u3092\u7c21\u5358\u306b\u63a8\u6e2c\u3067\u304d\u3001\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u7834\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</p>"},{"location":"chapter_hashing/hash_algorithm/#632","title":"6.3.2 \u00a0 \u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u8a2d\u8a08","text":"<p>\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u8a2d\u8a08\u306f\u591a\u304f\u306e\u8981\u56e0\u3092\u8003\u616e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u8907\u96d1\u306a\u554f\u984c\u3067\u3059\u3002\u3057\u304b\u3057\u3001\u8981\u6c42\u304c\u5c11\u306a\u3044\u4e00\u90e8\u306e\u30b7\u30ca\u30ea\u30aa\u3067\u306f\u3001\u3044\u304f\u3064\u304b\u306e\u7c21\u5358\u306a\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u8a2d\u8a08\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002</p> <ul> <li>\u52a0\u7b97\u30cf\u30c3\u30b7\u30e5: \u5165\u529b\u306e\u5404\u6587\u5b57\u306eASCII\u30b3\u30fc\u30c9\u3092\u5408\u8a08\u3057\u3001\u5408\u8a08\u3092\u30cf\u30c3\u30b7\u30e5\u5024\u3068\u3057\u3066\u4f7f\u7528\u3057\u307e\u3059\u3002</li> <li>\u4e57\u7b97\u30cf\u30c3\u30b7\u30e5: \u4e57\u7b97\u306e\u975e\u76f8\u95a2\u6027\u3092\u5229\u7528\u3057\u3001\u5404\u30e9\u30a6\u30f3\u30c9\u3067\u5b9a\u6570\u3092\u4e57\u7b97\u3057\u3001\u5404\u6587\u5b57\u306eASCII\u30b3\u30fc\u30c9\u3092\u30cf\u30c3\u30b7\u30e5\u5024\u306b\u7d2f\u7a4d\u3057\u307e\u3059\u3002</li> <li>XOR\u30cf\u30c3\u30b7\u30e5: \u5165\u529b\u30c7\u30fc\u30bf\u306e\u5404\u8981\u7d20\u3092XOR\u3059\u308b\u3053\u3068\u3067\u30cf\u30c3\u30b7\u30e5\u5024\u3092\u7d2f\u7a4d\u3057\u307e\u3059\u3002</li> <li>\u56de\u8ee2\u30cf\u30c3\u30b7\u30e5: \u5404\u6587\u5b57\u306eASCII\u30b3\u30fc\u30c9\u3092\u30cf\u30c3\u30b7\u30e5\u5024\u306b\u7d2f\u7a4d\u3057\u3001\u5404\u7d2f\u7a4d\u524d\u306b\u30cf\u30c3\u30b7\u30e5\u5024\u306b\u56de\u8ee2\u64cd\u4f5c\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002</li> </ul> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby simple_hash.py<pre><code>def add_hash(key: str) -&gt; int:\n \"\"\"\u52a0\u6cd5\u30cf\u30c3\u30b7\u30e5\"\"\"\n hash = 0\n modulus = 1000000007\n for c in key:\n hash += ord(c)\n return hash % modulus\n\ndef mul_hash(key: str) -&gt; int:\n \"\"\"\u4e57\u6cd5\u30cf\u30c3\u30b7\u30e5\"\"\"\n hash = 0\n modulus = 1000000007\n for c in key:\n hash = 31 * hash + ord(c)\n return hash % modulus\n\ndef xor_hash(key: str) -&gt; int:\n \"\"\"XOR\u30cf\u30c3\u30b7\u30e5\"\"\"\n hash = 0\n modulus = 1000000007\n for c in key:\n hash ^= ord(c)\n return hash % modulus\n\ndef rot_hash(key: str) -&gt; int:\n \"\"\"\u56de\u8ee2\u30cf\u30c3\u30b7\u30e5\"\"\"\n hash = 0\n modulus = 1000000007\n for c in key:\n hash = (hash &lt;&lt; 4) ^ (hash &gt;&gt; 28) ^ ord(c)\n return hash % modulus\n</code></pre> simple_hash.cpp<pre><code>/* \u52a0\u7b97\u30cf\u30c3\u30b7\u30e5 */\nint addHash(string key) {\n long long hash = 0;\n const int MODULUS = 1000000007;\n for (unsigned char c : key) {\n hash = (hash + (int)c) % MODULUS;\n }\n return (int)hash;\n}\n\n/* \u4e57\u7b97\u30cf\u30c3\u30b7\u30e5 */\nint mulHash(string key) {\n long long hash = 0;\n const int MODULUS = 1000000007;\n for (unsigned char c : key) {\n hash = (31 * hash + (int)c) % MODULUS;\n }\n return (int)hash;\n}\n\n/* XOR\u30cf\u30c3\u30b7\u30e5 */\nint xorHash(string key) {\n int hash = 0;\n const int MODULUS = 1000000007;\n for (unsigned char c : key) {\n hash ^= (int)c;\n }\n return hash &amp; MODULUS;\n}\n\n/* \u56de\u8ee2\u30cf\u30c3\u30b7\u30e5 */\nint rotHash(string key) {\n long long hash = 0;\n const int MODULUS = 1000000007;\n for (unsigned char c : key) {\n hash = ((hash &lt;&lt; 4) ^ (hash &gt;&gt; 28) ^ (int)c) % MODULUS;\n }\n return (int)hash;\n}\n</code></pre> simple_hash.java<pre><code>/* \u52a0\u7b97\u30cf\u30c3\u30b7\u30e5 */\nint addHash(String key) {\n long hash = 0;\n final int MODULUS = 1000000007;\n for (char c : key.toCharArray()) {\n hash = (hash + (int) c) % MODULUS;\n }\n return (int) hash;\n}\n\n/* \u4e57\u7b97\u30cf\u30c3\u30b7\u30e5 */\nint mulHash(String key) {\n long hash = 0;\n final int MODULUS = 1000000007;\n for (char c : key.toCharArray()) {\n hash = (31 * hash + (int) c) % MODULUS;\n }\n return (int) hash;\n}\n\n/* XOR\u30cf\u30c3\u30b7\u30e5 */\nint xorHash(String key) {\n int hash = 0;\n final int MODULUS = 1000000007;\n for (char c : key.toCharArray()) {\n hash ^= (int) c;\n }\n return hash &amp; MODULUS;\n}\n\n/* \u56de\u8ee2\u30cf\u30c3\u30b7\u30e5 */\nint rotHash(String key) {\n long hash = 0;\n final int MODULUS = 1000000007;\n for (char c : key.toCharArray()) {\n hash = ((hash &lt;&lt; 4) ^ (hash &gt;&gt; 28) ^ (int) c) % MODULUS;\n }\n return (int) hash;\n}\n</code></pre> simple_hash.cs<pre><code>[class]{simple_hash}-[func]{AddHash}\n\n[class]{simple_hash}-[func]{MulHash}\n\n[class]{simple_hash}-[func]{XorHash}\n\n[class]{simple_hash}-[func]{RotHash}\n</code></pre> simple_hash.go<pre><code>[class]{}-[func]{addHash}\n\n[class]{}-[func]{mulHash}\n\n[class]{}-[func]{xorHash}\n\n[class]{}-[func]{rotHash}\n</code></pre> simple_hash.swift<pre><code>[class]{}-[func]{addHash}\n\n[class]{}-[func]{mulHash}\n\n[class]{}-[func]{xorHash}\n\n[class]{}-[func]{rotHash}\n</code></pre> simple_hash.js<pre><code>[class]{}-[func]{addHash}\n\n[class]{}-[func]{mulHash}\n\n[class]{}-[func]{xorHash}\n\n[class]{}-[func]{rotHash}\n</code></pre> simple_hash.ts<pre><code>[class]{}-[func]{addHash}\n\n[class]{}-[func]{mulHash}\n\n[class]{}-[func]{xorHash}\n\n[class]{}-[func]{rotHash}\n</code></pre> simple_hash.dart<pre><code>[class]{}-[func]{addHash}\n\n[class]{}-[func]{mulHash}\n\n[class]{}-[func]{xorHash}\n\n[class]{}-[func]{rotHash}\n</code></pre> simple_hash.rs<pre><code>[class]{}-[func]{add_hash}\n\n[class]{}-[func]{mul_hash}\n\n[class]{}-[func]{xor_hash}\n\n[class]{}-[func]{rot_hash}\n</code></pre> simple_hash.c<pre><code>[class]{}-[func]{addHash}\n\n[class]{}-[func]{mulHash}\n\n[class]{}-[func]{xorHash}\n\n[class]{}-[func]{rotHash}\n</code></pre> simple_hash.kt<pre><code>[class]{}-[func]{addHash}\n\n[class]{}-[func]{mulHash}\n\n[class]{}-[func]{xorHash}\n\n[class]{}-[func]{rotHash}\n</code></pre> simple_hash.rb<pre><code>[class]{}-[func]{add_hash}\n\n[class]{}-[func]{mul_hash}\n\n[class]{}-[func]{xor_hash}\n\n[class]{}-[func]{rot_hash}\n</code></pre> <p>\u5404\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u6700\u5f8c\u306e\u30b9\u30c6\u30c3\u30d7\u304c\u5927\u304d\u306a\u7d20\u6570\\(1000000007\\)\u306e\u5270\u4f59\u3092\u53d6\u308b\u3053\u3068\u3067\u3001\u30cf\u30c3\u30b7\u30e5\u5024\u304c\u9069\u5207\u306a\u7bc4\u56f2\u5185\u306b\u3042\u308b\u3053\u3068\u3092\u4fdd\u8a3c\u3057\u3066\u3044\u308b\u3053\u3068\u304c\u89b3\u5bdf\u3055\u308c\u307e\u3059\u3002\u306a\u305c\u7d20\u6570\u306e\u5270\u4f59\u3092\u53d6\u308b\u3053\u3068\u304c\u5f37\u8abf\u3055\u308c\u308b\u306e\u304b\u3001\u307e\u305f\u306f\u5408\u6210\u6570\u306e\u5270\u4f59\u3092\u53d6\u308b\u3053\u3068\u306e\u6b20\u70b9\u306f\u4f55\u304b\u3092\u8003\u3048\u308b\u4fa1\u5024\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u8208\u5473\u6df1\u3044\u8cea\u554f\u3067\u3059\u3002</p> <p>\u7d50\u8ad6\u3068\u3057\u3066\uff1a\u5927\u304d\u306a\u7d20\u6570\u3092\u5270\u4f59\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30cf\u30c3\u30b7\u30e5\u5024\u306e\u5747\u7b49\u5206\u6563\u3092\u6700\u5927\u5316\u3067\u304d\u307e\u3059\u3002\u7d20\u6570\u306f\u4ed6\u306e\u6570\u3068\u5171\u901a\u56e0\u5b50\u3092\u6301\u305f\u306a\u3044\u305f\u3081\u3001\u5270\u4f59\u6f14\u7b97\u306b\u3088\u3063\u3066\u5f15\u304d\u8d77\u3053\u3055\u308c\u308b\u5468\u671f\u7684\u30d1\u30bf\u30fc\u30f3\u3092\u6e1b\u3089\u3057\u3001\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u3092\u56de\u907f\u3067\u304d\u307e\u3059\u3002</p> <p>\u4f8b\u3048\u3070\u3001\u5408\u6210\u6570\\(9\\)\u3092\u5270\u4f59\u3068\u3057\u3066\u9078\u629e\u3059\u308b\u3068\u3057\u307e\u3059\u3002\u3053\u308c\u306f\\(3\\)\u3067\u5272\u308a\u5207\u308c\u308b\u305f\u3081\u3001\\(3\\)\u3067\u5272\u308a\u5207\u308c\u308b\u3059\u3079\u3066\u306e<code>key</code>\u306f\u30cf\u30c3\u30b7\u30e5\u5024\\(0\\)\u3001\\(3\\)\u3001\\(6\\)\u306b\u30de\u30c3\u30d4\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002</p> \\[ \\begin{aligned} \\text{modulus} &amp; = 9 \\newline \\text{key} &amp; = \\{ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, \\dots \\} \\newline \\text{hash} &amp; = \\{ 0, 3, 6, 0, 3, 6, 0, 3, 6, 0, 3, 6,\\dots \\} \\end{aligned} \\] <p>\u5165\u529b<code>key</code>\u304c\u305f\u307e\u305f\u307e\u3053\u306e\u7a2e\u306e\u7b49\u5dee\u6570\u5217\u5206\u5e03\u3092\u6301\u3064\u5834\u5408\u3001\u30cf\u30c3\u30b7\u30e5\u5024\u304c\u30af\u30e9\u30b9\u30bf\u30fc\u3057\u3001\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u3092\u60aa\u5316\u3055\u305b\u307e\u3059\u3002\u4eca\u5ea6\u306f<code>modulus</code>\u3092\u7d20\u6570\\(13\\)\u306b\u7f6e\u304d\u63db\u3048\u308b\u3068\u3057\u307e\u3059\u3002<code>key</code>\u3068<code>modulus</code>\u306e\u9593\u306b\u5171\u901a\u56e0\u5b50\u304c\u306a\u3044\u305f\u3081\u3001\u51fa\u529b\u30cf\u30c3\u30b7\u30e5\u5024\u306e\u5747\u7b49\u6027\u304c\u5927\u5e45\u306b\u6539\u5584\u3055\u308c\u307e\u3059\u3002</p> \\[ \\begin{aligned} \\text{modulus} &amp; = 13 \\newline \\text{key} &amp; = \\{ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, \\dots \\} \\newline \\text{hash} &amp; = \\{ 0, 3, 6, 9, 12, 2, 5, 8, 11, 1, 4, 7, \\dots \\} \\end{aligned} \\] <p><code>key</code>\u304c\u30e9\u30f3\u30c0\u30e0\u3067\u5747\u7b49\u306b\u5206\u6563\u3055\u308c\u308b\u3053\u3068\u304c\u4fdd\u8a3c\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u5270\u4f59\u3068\u3057\u3066\u7d20\u6570\u307e\u305f\u306f\u5408\u6210\u6570\u3092\u9078\u629e\u3057\u3066\u3082\u3001\u4e21\u65b9\u3068\u3082\u5747\u7b49\u306b\u5206\u6563\u3055\u308c\u305f\u30cf\u30c3\u30b7\u30e5\u5024\u3092\u751f\u6210\u3067\u304d\u308b\u3053\u3068\u306f\u6ce8\u76ee\u306b\u5024\u3057\u307e\u3059\u3002\u3057\u304b\u3057\u3001<code>key</code>\u306e\u5206\u5e03\u306b\u3042\u308b\u7a2e\u306e\u5468\u671f\u6027\u304c\u3042\u308b\u5834\u5408\u3001\u5408\u6210\u6570\u306e\u5270\u4f59\u306f\u30af\u30e9\u30b9\u30bf\u30ea\u30f3\u30b0\u3092\u5f15\u304d\u8d77\u3053\u3057\u3084\u3059\u304f\u306a\u308a\u307e\u3059\u3002</p> <p>\u8981\u7d04\u3059\u308b\u3068\u3001\u901a\u5e38\u306f\u7d20\u6570\u3092\u5270\u4f59\u3068\u3057\u3066\u9078\u629e\u3057\u3001\u3053\u306e\u7d20\u6570\u306f\u5468\u671f\u7684\u30d1\u30bf\u30fc\u30f3\u3092\u53ef\u80fd\u306a\u9650\u308a\u6392\u9664\u3057\u3001\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5805\u7262\u6027\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306b\u5341\u5206\u5927\u304d\u304f\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</p>"},{"location":"chapter_hashing/hash_algorithm/#633","title":"6.3.3 \u00a0 \u4e00\u822c\u7684\u306a\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0","text":"<p>\u4e0a\u8a18\u3067\u8a00\u53ca\u3057\u305f\u7c21\u5358\u306a\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u304b\u306a\u308a\u300c\u8106\u5f31\u300d\u3067\u3001\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u8a2d\u8a08\u76ee\u6a19\u304b\u3089\u7a0b\u9060\u3044\u3053\u3068\u306f\u96e3\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002\u4f8b\u3048\u3070\u3001\u52a0\u7b97\u3068XOR\u306f\u4ea4\u63db\u6cd5\u5247\u306b\u5f93\u3046\u305f\u3081\u3001\u52a0\u7b97\u30cf\u30c3\u30b7\u30e5\u3068XOR\u30cf\u30c3\u30b7\u30e5\u306f\u540c\u3058\u5185\u5bb9\u3060\u304c\u9806\u5e8f\u304c\u7570\u306a\u308b\u6587\u5b57\u5217\u3092\u533a\u5225\u3067\u304d\u305a\u3001\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u3092\u60aa\u5316\u3055\u305b\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u554f\u984c\u3092\u5f15\u304d\u8d77\u3053\u3059\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>\u5b9f\u969b\u306b\u306f\u3001\u901a\u5e38MD5\u3001SHA-1\u3001SHA-2\u3001SHA-3\u306a\u3069\u306e\u6a19\u6e96\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306f\u4efb\u610f\u306e\u9577\u3055\u306e\u5165\u529b\u30c7\u30fc\u30bf\u3092\u56fa\u5b9a\u9577\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306b\u30de\u30c3\u30d4\u30f3\u30b0\u3067\u304d\u307e\u3059\u3002</p> <p>\u904e\u53bb1\u4e16\u7d00\u306b\u308f\u305f\u3063\u3066\u3001\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u7d99\u7d9a\u7684\u306a\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3068\u6700\u9069\u5316\u306e\u30d7\u30ed\u30bb\u30b9\u306b\u3042\u308a\u307e\u3057\u305f\u3002\u4e00\u90e8\u306e\u7814\u7a76\u8005\u306f\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u6027\u80fd\u5411\u4e0a\u306b\u52aa\u3081\u3001\u30cf\u30c3\u30ab\u30fc\u3092\u542b\u3080\u4ed6\u306e\u4eba\u3005\u306f\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u554f\u984c\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u306b\u5c02\u5ff5\u3057\u3066\u3044\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u8868\u306f\u3001\u5b9f\u7528\u7684\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002</p> <ul> <li>MD5\u3068SHA-1\u306f\u8907\u6570\u56de\u653b\u6483\u306b\u6210\u529f\u3057\u3066\u304a\u308a\u3001\u3055\u307e\u3056\u307e\u306a\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u653e\u68c4\u3055\u308c\u3066\u3044\u307e\u3059\u3002</li> <li>SHA-2\u30b7\u30ea\u30fc\u30ba\u3001\u7279\u306bSHA-256\u306f\u3001\u73fe\u5728\u6700\u3082\u5b89\u5168\u306a\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e1\u3064\u3067\u3001\u6210\u529f\u3057\u305f\u653b\u6483\u306f\u5831\u544a\u3055\u308c\u3066\u304a\u3089\u305a\u3001\u3055\u307e\u3056\u307e\u306a\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3068\u30d7\u30ed\u30c8\u30b3\u30eb\u3067\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002</li> <li>SHA-3\u306fSHA-2\u3068\u6bd4\u8f03\u3057\u3066\u5b9f\u88c5\u30b3\u30b9\u30c8\u304c\u4f4e\u304f\u3001\u8a08\u7b97\u52b9\u7387\u304c\u9ad8\u3044\u3067\u3059\u304c\u3001\u73fe\u5728\u306e\u4f7f\u7528\u7bc4\u56f2\u306fSHA-2\u30b7\u30ea\u30fc\u30ba\u307b\u3069\u5e83\u7bc4\u56f2\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002</li> </ul> <p> \u8868 6-2 \u00a0 \u4e00\u822c\u7684\u306a\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0 </p> MD5 SHA-1 SHA-2 SHA-3 \u30ea\u30ea\u30fc\u30b9\u5e74 1992 1995 2002 2008 \u51fa\u529b\u9577 128 bit 160 bit 256/512 bit 224/256/384/512 bit \u30cf\u30c3\u30b7\u30e5\u885d\u7a81 \u983b\u7e41 \u983b\u7e41 \u307e\u308c \u307e\u308c \u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30ec\u30d9\u30eb \u4f4e\u3001\u653b\u6483\u306b\u6210\u529f\u3057\u3066\u3044\u308b \u4f4e\u3001\u653b\u6483\u306b\u6210\u529f\u3057\u3066\u3044\u308b \u9ad8 \u9ad8 \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3 \u653e\u68c4\u3001\u30c7\u30fc\u30bf\u6574\u5408\u6027\u30c1\u30a7\u30c3\u30af\u306b\u307e\u3060\u4f7f\u7528 \u653e\u68c4 \u6697\u53f7\u901a\u8ca8\u53d6\u5f15\u691c\u8a3c\u3001\u30c7\u30b8\u30bf\u30eb\u7f72\u540d\u306a\u3069 SHA-2\u306e\u4ee3\u66ff\u3068\u3057\u3066\u4f7f\u7528\u53ef\u80fd"},{"location":"chapter_hashing/hash_algorithm/#_1","title":"\u30c7\u30fc\u30bf\u69cb\u9020\u306b\u304a\u3051\u308b\u30cf\u30c3\u30b7\u30e5\u5024","text":"<p>\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u30ad\u30fc\u306f\u6574\u6570\u3001\u5c0f\u6570\u3001\u6587\u5b57\u5217\u306a\u3069\u306e\u3055\u307e\u3056\u307e\u306a\u30c7\u30fc\u30bf\u578b\u306b\u3067\u304d\u308b\u3053\u3068\u3092\u77e5\u3063\u3066\u3044\u307e\u3059\u3002\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306f\u901a\u5e38\u3001\u3053\u308c\u3089\u306e\u30c7\u30fc\u30bf\u578b\u306b\u5bfe\u3057\u3066\u7d44\u307f\u8fbc\u307f\u306e\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u63d0\u4f9b\u3057\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u30d0\u30b1\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8a08\u7b97\u3057\u307e\u3059\u3002Python\u3092\u4f8b\u306b\u53d6\u308b\u3068\u3001<code>hash()</code>\u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u3055\u307e\u3056\u307e\u306a\u30c7\u30fc\u30bf\u578b\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u3092\u8a08\u7b97\u3067\u304d\u307e\u3059\u3002</p> <ul> <li>\u6574\u6570\u3068\u30d6\u30fc\u30eb\u5024\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f\u3001\u305d\u308c\u3089\u81ea\u8eab\u306e\u5024\u3067\u3059\u3002</li> <li>\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\u3068\u6587\u5b57\u5217\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306e\u8a08\u7b97\u306f\u3088\u308a\u8907\u96d1\u3067\u3001\u8208\u5473\u306e\u3042\u308b\u8aad\u8005\u306f\u81ea\u5206\u3067\u7814\u7a76\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002</li> <li>\u30bf\u30d7\u30eb\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f\u3001\u305d\u306e\u5404\u8981\u7d20\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306e\u7d44\u307f\u5408\u308f\u305b\u3067\u3001\u5358\u4e00\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306b\u306a\u308a\u307e\u3059\u3002</li> <li>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f\u3001\u305d\u306e\u30e1\u30e2\u30ea\u30a2\u30c9\u30ec\u30b9\u306b\u57fa\u3065\u3044\u3066\u751f\u6210\u3055\u308c\u307e\u3059\u3002\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30cf\u30c3\u30b7\u30e5\u30e1\u30bd\u30c3\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3059\u308b\u3053\u3068\u3067\u3001\u5185\u5bb9\u306b\u57fa\u3065\u3044\u3066\u30cf\u30c3\u30b7\u30e5\u5024\u3092\u751f\u6210\u3067\u304d\u307e\u3059\u3002</li> </ul> <p>Tip</p> <p>\u7570\u306a\u308b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306b\u304a\u3051\u308b\u7d44\u307f\u8fbc\u307f\u30cf\u30c3\u30b7\u30e5\u5024\u8a08\u7b97\u95a2\u6570\u306e\u5b9a\u7fa9\u3068\u65b9\u6cd5\u306f\u7570\u306a\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlin built_in_hash.py<pre><code>num = 3\nhash_num = hash(num)\n# \u6574\u65703\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f3\n\nbol = True\nhash_bol = hash(bol)\n# \u30d6\u30fc\u30eb\u5024True\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f1\n\ndec = 3.14159\nhash_dec = hash(dec)\n# \u5c0f\u65703.14159\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f326484311674566659\n\nstr = \"Hello \u7b97\u6cd5\"\nhash_str = hash(str)\n# \u6587\u5b57\u5217\"Hello \u7b97\u6cd5\"\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f4617003410720528961\n\ntup = (12836, \"\u5c0f\u54c8\")\nhash_tup = hash(tup)\n# \u30bf\u30d7\u30eb(12836, '\u5c0f\u54c8')\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f1029005403108185979\n\nobj = ListNode(0)\nhash_obj = hash(obj)\n# ListNode\u30aa\u30d6\u30b8\u30a7\u30af\u30c80x1058fd810\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f274267521\n</code></pre> built_in_hash.cpp<pre><code>int num = 3;\nsize_t hashNum = hash&lt;int&gt;()(num);\n// \u6574\u65703\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f3\n\nbool bol = true;\nsize_t hashBol = hash&lt;bool&gt;()(bol);\n// \u30d6\u30fc\u30eb\u50241\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f1\n\ndouble dec = 3.14159;\nsize_t hashDec = hash&lt;double&gt;()(dec);\n// \u5c0f\u65703.14159\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f4614256650576692846\n\nstring str = \"Hello \u7b97\u6cd5\";\nsize_t hashStr = hash&lt;string&gt;()(str);\n// \u6587\u5b57\u5217\"Hello \u7b97\u6cd5\"\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f15466937326284535026\n\n// C++\u3067\u306f\u3001\u7d44\u307f\u8fbc\u307fstd::hash()\u306f\u57fa\u672c\u30c7\u30fc\u30bf\u578b\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306e\u307f\u3092\u63d0\u4f9b\n// \u914d\u5217\u3068\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f\u5225\u9014\u5b9f\u88c5\u304c\u5fc5\u8981\n</code></pre> built_in_hash.java<pre><code>int num = 3;\nint hashNum = Integer.hashCode(num);\n// \u6574\u65703\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f3\n\nboolean bol = true;\nint hashBol = Boolean.hashCode(bol);\n// \u30d6\u30fc\u30eb\u5024true\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f1231\n\ndouble dec = 3.14159;\nint hashDec = Double.hashCode(dec);\n// \u5c0f\u65703.14159\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f-1340954729\n\nString str = \"Hello \u7b97\u6cd5\";\nint hashStr = str.hashCode();\n// \u6587\u5b57\u5217\"Hello \u7b97\u6cd5\"\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f-727081396\n\nObject[] arr = { 12836, \"\u5c0f\u54c8\" };\nint hashTup = Arrays.hashCode(arr);\n// \u914d\u5217[12836, \u5c0f\u54c8]\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f1151158\n\nListNode obj = new ListNode(0);\nint hashObj = obj.hashCode();\n// ListNode\u30aa\u30d6\u30b8\u30a7\u30af\u30c8utils.ListNode@7dc5e7b4\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f2110121908\n</code></pre> built_in_hash.cs<pre><code>int num = 3;\nint hashNum = num.GetHashCode();\n// \u6574\u65703\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f3;\n\nbool bol = true;\nint hashBol = bol.GetHashCode();\n// \u30d6\u30fc\u30eb\u5024true\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f1;\n\ndouble dec = 3.14159;\nint hashDec = dec.GetHashCode();\n// \u5c0f\u65703.14159\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f-1340954729;\n\nstring str = \"Hello \u7b97\u6cd5\";\nint hashStr = str.GetHashCode();\n// \u6587\u5b57\u5217\"Hello \u7b97\u6cd5\"\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f-586107568;\n\nobject[] arr = [12836, \"\u5c0f\u54c8\"];\nint hashTup = arr.GetHashCode();\n// \u914d\u5217[12836, \u5c0f\u54c8]\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f42931033;\n\nListNode obj = new(0);\nint hashObj = obj.GetHashCode();\n// ListNode\u30aa\u30d6\u30b8\u30a7\u30af\u30c80\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f39053774;\n</code></pre> built_in_hash.go<pre><code>// Go\u306b\u306f\u7d44\u307f\u8fbc\u307f\u306e\u30cf\u30c3\u30b7\u30e5\u30b3\u30fc\u30c9\u95a2\u6570\u304c\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u305b\u3093\n</code></pre> built_in_hash.swift<pre><code>let num = 3\nlet hashNum = num.hashValue\n// \u6574\u65703\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f9047044699613009734\n\nlet bol = true\nlet hashBol = bol.hashValue\n// \u30d6\u30fc\u30eb\u5024true\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f-4431640247352757451\n\nlet dec = 3.14159\nlet hashDec = dec.hashValue\n// \u5c0f\u65703.14159\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f-2465384235396674631\n\nlet str = \"Hello \u7b97\u6cd5\"\nlet hashStr = str.hashValue\n// \u6587\u5b57\u5217\"Hello \u7b97\u6cd5\"\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f-7850626797806988787\n\nlet arr = [AnyHashable(12836), AnyHashable(\"\u5c0f\u54c8\")]\nlet hashTup = arr.hashValue\n// \u914d\u5217[AnyHashable(12836), AnyHashable(\"\u5c0f\u54c8\")]\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f-2308633508154532996\n\nlet obj = ListNode(x: 0)\nlet hashObj = obj.hashValue\n// ListNode\u30aa\u30d6\u30b8\u30a7\u30af\u30c8utils.ListNode\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f-2434780518035996159\n</code></pre> built_in_hash.js<pre><code>// JavaScript\u306b\u306f\u7d44\u307f\u8fbc\u307f\u306e\u30cf\u30c3\u30b7\u30e5\u30b3\u30fc\u30c9\u95a2\u6570\u304c\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u305b\u3093\n</code></pre> built_in_hash.ts<pre><code>// TypeScript\u306b\u306f\u7d44\u307f\u8fbc\u307f\u306e\u30cf\u30c3\u30b7\u30e5\u30b3\u30fc\u30c9\u95a2\u6570\u304c\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u305b\u3093\n</code></pre> built_in_hash.dart<pre><code>int num = 3;\nint hashNum = num.hashCode;\n// \u6574\u65703\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f34803\n\nbool bol = true;\nint hashBol = bol.hashCode;\n// \u30d6\u30fc\u30eb\u5024true\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f1231\n\ndouble dec = 3.14159;\nint hashDec = dec.hashCode;\n// \u5c0f\u65703.14159\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f2570631074981783\n\nString str = \"Hello \u7b97\u6cd5\";\nint hashStr = str.hashCode;\n// \u6587\u5b57\u5217\"Hello \u7b97\u6cd5\"\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f468167534\n\nList arr = [12836, \"\u5c0f\u54c8\"];\nint hashArr = arr.hashCode;\n// \u914d\u5217[12836, \u5c0f\u54c8]\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f976512528\n\nListNode obj = new ListNode(0);\nint hashObj = obj.hashCode;\n// ListNode\u30aa\u30d6\u30b8\u30a7\u30af\u30c8Instance of 'ListNode'\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f1033450432\n</code></pre> built_in_hash.rs<pre><code>use std::collections::hash_map::DefaultHasher;\nuse std::hash::{Hash, Hasher};\n\nlet num = 3;\nlet mut num_hasher = DefaultHasher::new();\nnum.hash(&amp;mut num_hasher);\nlet hash_num = num_hasher.finish();\n// \u6574\u65703\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f568126464209439262\n\nlet bol = true;\nlet mut bol_hasher = DefaultHasher::new();\nbol.hash(&amp;mut bol_hasher);\nlet hash_bol = bol_hasher.finish();\n// \u30d6\u30fc\u30eb\u5024true\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f4952851536318644461\n\nlet dec: f32 = 3.14159;\nlet mut dec_hasher = DefaultHasher::new();\ndec.to_bits().hash(&amp;mut dec_hasher);\nlet hash_dec = dec_hasher.finish();\n// \u5c0f\u65703.14159\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f2566941990314602357\n\nlet str = \"Hello \u7b97\u6cd5\";\nlet mut str_hasher = DefaultHasher::new();\nstr.hash(&amp;mut str_hasher);\nlet hash_str = str_hasher.finish();\n// \u6587\u5b57\u5217\"Hello \u7b97\u6cd5\"\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f16092673739211250988\n\nlet arr = (&amp;12836, &amp;\"\u5c0f\u54c8\");\nlet mut tup_hasher = DefaultHasher::new();\narr.hash(&amp;mut tup_hasher);\nlet hash_tup = tup_hasher.finish();\n// \u30bf\u30d7\u30eb(12836, \"\u5c0f\u54c8\")\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f1885128010422702749\n\nlet node = ListNode::new(42);\nlet mut hasher = DefaultHasher::new();\nnode.borrow().val.hash(&amp;mut hasher);\nlet hash = hasher.finish();\n// ListNode\u30aa\u30d6\u30b8\u30a7\u30af\u30c8RefCell { value: ListNode { val: 42, next: None } }\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f15387811073369036852\n</code></pre> built_in_hash.c<pre><code>// C\u306b\u306f\u7d44\u307f\u8fbc\u307f\u306e\u30cf\u30c3\u30b7\u30e5\u30b3\u30fc\u30c9\u95a2\u6570\u304c\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u305b\u3093\n</code></pre> built_in_hash.kt<pre><code>\n</code></pre> <p>\u591a\u304f\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u306f\u3001\u4e0d\u5909\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u307f\u304c\u30cf\u30c3\u30b7\u30e5\u8868\u306e<code>key</code>\u3068\u3057\u3066\u6a5f\u80fd\u3067\u304d\u307e\u3059\u3002\u30ea\u30b9\u30c8\uff08\u52d5\u7684\u914d\u5217\uff09\u3092<code>key</code>\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u30ea\u30b9\u30c8\u306e\u5185\u5bb9\u304c\u5909\u66f4\u3055\u308c\u308b\u3068\u3001\u305d\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u3082\u5909\u66f4\u3055\u308c\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u3067\u5143\u306e<code>value</code>\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u306a\u304f\u306a\u308a\u307e\u3059\u3002</p> <p>\u30ab\u30b9\u30bf\u30e0\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\uff08\u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9\u306a\u3069\uff09\u306e\u30e1\u30f3\u30d0\u30fc\u5909\u6570\u306f\u53ef\u5909\u3067\u3059\u304c\u3001\u30cf\u30c3\u30b7\u30e5\u53ef\u80fd\u3067\u3059\u3002\u3053\u308c\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u304c\u901a\u5e38\u305d\u306e\u30e1\u30e2\u30ea\u30a2\u30c9\u30ec\u30b9\u306b\u57fa\u3065\u3044\u3066\u751f\u6210\u3055\u308c\u308b\u305f\u3081\u3067\u3059\u3002\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u5185\u5bb9\u304c\u5909\u66f4\u3055\u308c\u3066\u3082\u3001\u30e1\u30e2\u30ea\u30a2\u30c9\u30ec\u30b9\u306f\u540c\u3058\u307e\u307e\u306a\u306e\u3067\u3001\u30cf\u30c3\u30b7\u30e5\u5024\u306f\u5909\u66f4\u3055\u308c\u307e\u305b\u3093\u3002</p> <p>\u7570\u306a\u308b\u30b3\u30f3\u30bd\u30fc\u30eb\u3067\u51fa\u529b\u3055\u308c\u308b\u30cf\u30c3\u30b7\u30e5\u5024\u304c\u7570\u306a\u308b\u3053\u3068\u306b\u6c17\u3065\u3044\u305f\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u3053\u308c\u306f\u3001Python\u30a4\u30f3\u30bf\u30fc\u30d7\u30ea\u30bf\u30fc\u304c\u8d77\u52d5\u3059\u308b\u305f\u3073\u306b\u6587\u5b57\u5217\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306b\u30e9\u30f3\u30c0\u30e0\u30bd\u30eb\u30c8\u3092\u8ffd\u52a0\u3059\u308b\u305f\u3081\u3067\u3059\u3002\u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306fHashDoS\u653b\u6483\u3092\u52b9\u679c\u7684\u306b\u9632\u304e\u3001\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3092\u5411\u4e0a\u3055\u305b\u307e\u3059\u3002</p>"},{"location":"chapter_hashing/hash_collision/","title":"6.2 \u00a0 \u30cf\u30c3\u30b7\u30e5\u885d\u7a81","text":"<p>\u524d\u7bc0\u3067\u8ff0\u3079\u305f\u3088\u3046\u306b\u3001**\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306e\u5165\u529b\u7a7a\u9593\u306f\u51fa\u529b\u7a7a\u9593\u3088\u308a\u3082\u306f\u308b\u304b\u306b\u5927\u304d\u3044**\u305f\u3081\u3001\u7406\u8ad6\u7684\u306b\u306f\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u306f\u907f\u3051\u3089\u308c\u307e\u305b\u3093\u3002\u4f8b\u3048\u3070\u3001\u5165\u529b\u7a7a\u9593\u304c\u3059\u3079\u3066\u306e\u6574\u6570\u3067\u3001\u51fa\u529b\u7a7a\u9593\u304c\u914d\u5217\u5bb9\u91cf\u306e\u30b5\u30a4\u30ba\u306e\u5834\u5408\u3001\u8907\u6570\u306e\u6574\u6570\u304c\u5fc5\u7136\u7684\u306b\u540c\u3058\u30d0\u30b1\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u30de\u30c3\u30d4\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002</p> <p>\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u306f\u8aa4\u3063\u305f\u30af\u30a8\u30ea\u7d50\u679c\u306b\u3064\u306a\u304c\u308a\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u4f7f\u3044\u3084\u3059\u3055\u306b\u6df1\u523b\u306a\u5f71\u97ff\u3092\u4e0e\u3048\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u554f\u984c\u306b\u5bfe\u51e6\u3059\u308b\u305f\u3081\u306b\u3001\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u304c\u767a\u751f\u3059\u308b\u305f\u3073\u306b\u3001\u885d\u7a81\u304c\u6d88\u3048\u308b\u307e\u3067\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u30ea\u30b5\u30a4\u30ba\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306f\u975e\u5e38\u306b\u30b7\u30f3\u30d7\u30eb\u3067\u76f4\u63a5\u7684\u3067\u3042\u308a\u3001\u3046\u307e\u304f\u6a5f\u80fd\u3057\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u30c6\u30fc\u30d6\u30eb\u306e\u62e1\u5f35\u306b\u306f\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u79fb\u884c\u3068\u30cf\u30c3\u30b7\u30e5\u30b3\u30fc\u30c9\u306e\u518d\u8a08\u7b97\u304c\u542b\u307e\u308c\u3001\u3053\u308c\u3089\u306f\u9ad8\u30b3\u30b9\u30c8\u3067\u3042\u308b\u305f\u3081\u3001\u975e\u5e38\u306b\u975e\u52b9\u7387\u7684\u306b\u898b\u3048\u307e\u3059\u3002\u52b9\u7387\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306b\u3001\u4ee5\u4e0b\u306e\u6226\u7565\u3092\u63a1\u7528\u3067\u304d\u307e\u3059\uff1a</p> <ol> <li>**\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u3067\u3082\u3001\u30bf\u30fc\u30b2\u30c3\u30c8\u8981\u7d20\u306e\u691c\u7d22\u304c\u9069\u5207\u306b\u6a5f\u80fd\u3059\u308b**\u3088\u3046\u306b\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u6539\u5584\u3059\u308b\u3002</li> <li>\u6df1\u523b\u306a\u885d\u7a81\u304c\u89b3\u5bdf\u3055\u308c\u3001\u5fc5\u8981\u306b\u306a\u308b\u524d\u306b\u3001\u62e1\u5f35\u306f\u6700\u5f8c\u306e\u624b\u6bb5\u3068\u3059\u308b\u3002</li> </ol> <p>\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u69cb\u9020\u3092\u6539\u5584\u3059\u308b\u4e3b\u306a\u65b9\u6cd5\u306f2\u3064\u3042\u308a\u307e\u3059\uff1a\u300c\u9023\u9396\u6cd5\u300d\u3068\u300c\u30aa\u30fc\u30d7\u30f3\u30a2\u30c9\u30ec\u30b9\u6cd5\u300d\u3067\u3059\u3002</p>"},{"location":"chapter_hashing/hash_collision/#621","title":"6.2.1 \u00a0 \u9023\u9396\u6cd5","text":"<p>\u5143\u306e\u30cf\u30c3\u30b7\u30e5\u8868\u3067\u306f\u3001\u5404\u30d0\u30b1\u30c3\u30c8\u306f1\u3064\u306e\u30ad\u30fc\u5024\u30da\u30a2\u306e\u307f\u3092\u683c\u7d0d\u3067\u304d\u307e\u3059\u3002\u9023\u9396\u6cd5\u306f\u5358\u4e00\u306e\u8981\u7d20\u3092\u9023\u7d50\u30ea\u30b9\u30c8\u306b\u5909\u63db\u3057\u3001\u30ad\u30fc\u5024\u30da\u30a2\u3092\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9\u3068\u3057\u3066\u6271\u3044\u3001\u885d\u7a81\u3059\u308b\u3059\u3079\u3066\u306e\u30ad\u30fc\u5024\u30da\u30a2\u3092\u540c\u3058\u9023\u7d50\u30ea\u30b9\u30c8\u306b\u683c\u7d0d\u3057\u307e\u3059\u3002\u4e0b\u56f3\u306f\u9023\u9396\u6cd5\u3092\u4f7f\u7528\u3057\u305f\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u4f8b\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002</p> <p></p> <p> \u56f3 6-5 \u00a0 \u9023\u9396\u6cd5\u30cf\u30c3\u30b7\u30e5\u8868 </p> <p>\u9023\u9396\u6cd5\u3067\u5b9f\u88c5\u3055\u308c\u305f\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u64cd\u4f5c\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u5909\u66f4\u3055\u308c\u307e\u3059\uff1a</p> <ul> <li>\u8981\u7d20\u306e\u30af\u30a8\u30ea: <code>key</code>\u3092\u5165\u529b\u3057\u3001\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u3092\u901a\u3057\u3066\u30d0\u30b1\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u53d6\u5f97\u3057\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u30d8\u30c3\u30c9\u30ce\u30fc\u30c9\u306b\u30a2\u30af\u30bb\u30b9\u3057\u307e\u3059\u3002\u9023\u7d50\u30ea\u30b9\u30c8\u3092\u8d70\u67fb\u3057\u3066\u30ad\u30fc\u3092\u6bd4\u8f03\u3057\u3001\u30bf\u30fc\u30b2\u30c3\u30c8\u30ad\u30fc\u5024\u30da\u30a2\u3092\u898b\u3064\u3051\u307e\u3059\u3002</li> <li>\u8981\u7d20\u306e\u8ffd\u52a0: \u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u3092\u901a\u3057\u3066\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u30d8\u30c3\u30c9\u30ce\u30fc\u30c9\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3001\u30ce\u30fc\u30c9\uff08\u30ad\u30fc\u5024\u30da\u30a2\uff09\u3092\u30ea\u30b9\u30c8\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002</li> <li>\u8981\u7d20\u306e\u524a\u9664: \u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306e\u7d50\u679c\u306b\u57fa\u3065\u3044\u3066\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u30d8\u30c3\u30c9\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u3092\u8d70\u67fb\u3057\u3066\u30bf\u30fc\u30b2\u30c3\u30c8\u30ce\u30fc\u30c9\u3092\u898b\u3064\u3051\u3066\u524a\u9664\u3057\u307e\u3059\u3002</li> </ul> <p>\u9023\u9396\u6cd5\u306b\u306f\u4ee5\u4e0b\u306e\u5236\u9650\u304c\u3042\u308a\u307e\u3059\uff1a</p> <ul> <li>\u7a7a\u9593\u4f7f\u7528\u91cf\u306e\u5897\u52a0: \u9023\u7d50\u30ea\u30b9\u30c8\u306b\u306f\u30ce\u30fc\u30c9\u30dd\u30a4\u30f3\u30bf\u304c\u542b\u307e\u308c\u3066\u304a\u308a\u3001\u914d\u5217\u3088\u308a\u3082\u591a\u304f\u306e\u30e1\u30e2\u30ea\u7a7a\u9593\u3092\u6d88\u8cbb\u3057\u307e\u3059\u3002</li> <li>\u30af\u30a8\u30ea\u52b9\u7387\u306e\u4f4e\u4e0b: \u5bfe\u5fdc\u3059\u308b\u8981\u7d20\u3092\u898b\u3064\u3051\u308b\u305f\u3081\u306b\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u7dda\u5f62\u8d70\u67fb\u304c\u5fc5\u8981\u306b\u306a\u308b\u305f\u3081\u3067\u3059\u3002</li> </ul> <p>\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u306f\u9023\u9396\u6cd5\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u7c21\u5358\u306a\u5b9f\u88c5\u3092\u63d0\u4f9b\u3057\u3001\u6ce8\u610f\u3059\u3079\u304d2\u3064\u306e\u70b9\u304c\u3042\u308a\u307e\u3059\uff1a</p> <ul> <li>\u7c21\u5358\u306b\u3059\u308b\u305f\u3081\u306b\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u4ee3\u308f\u308a\u306b\u30ea\u30b9\u30c8\uff08\u52d5\u7684\u914d\u5217\uff09\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u3053\u306e\u8a2d\u5b9a\u3067\u306f\u3001\u30cf\u30c3\u30b7\u30e5\u8868\uff08\u914d\u5217\uff09\u306f\u8907\u6570\u306e\u30d0\u30b1\u30c3\u30c8\u3092\u542b\u307f\u3001\u5404\u30d0\u30b1\u30c3\u30c8\u306f\u30ea\u30b9\u30c8\u3067\u3059\u3002</li> <li>\u3053\u306e\u5b9f\u88c5\u306b\u306f\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u30ea\u30b5\u30a4\u30ba\u30e1\u30bd\u30c3\u30c9\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\u8ca0\u8377\u7387\u304c\\(\\frac{2}{3}\\)\u3092\u8d85\u3048\u308b\u3068\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u3092\u5143\u306e\u30b5\u30a4\u30ba\u306e2\u500d\u306b\u62e1\u5f35\u3057\u307e\u3059\u3002</li> </ul> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby hash_map_chaining.py<pre><code>class HashMapChaining:\n \"\"\"\u30c1\u30a7\u30fc\u30f3\u30a2\u30c9\u30ec\u30b9\u6cd5\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\"\"\"\n\n def __init__(self):\n \"\"\"\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\"\"\"\n self.size = 0 # \u30ad\u30fc\u5024\u30da\u30a2\u306e\u6570\n self.capacity = 4 # \u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u306e\u5bb9\u91cf\n self.load_thres = 2.0 / 3.0 # \u62e1\u5f35\u3092\u30c8\u30ea\u30ac\u30fc\u3059\u308b\u8ca0\u8377\u7387\u306e\u95be\u5024\n self.extend_ratio = 2 # \u62e1\u5f35\u306e\u500d\u6570\n self.buckets = [[] for _ in range(self.capacity)] # \u30d0\u30b1\u30c3\u30c8\u914d\u5217\n\n def hash_func(self, key: int) -&gt; int:\n \"\"\"\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\"\"\"\n return key % self.capacity\n\n def load_factor(self) -&gt; float:\n \"\"\"\u8ca0\u8377\u7387\"\"\"\n return self.size / self.capacity\n\n def get(self, key: int) -&gt; str | None:\n \"\"\"\u7167\u4f1a\u64cd\u4f5c\"\"\"\n index = self.hash_func(key)\n bucket = self.buckets[index]\n # \u30d0\u30b1\u30c3\u30c8\u3092\u8d70\u67fb\u3057\u3001\u30ad\u30fc\u304c\u898b\u3064\u304b\u308c\u3070\u5bfe\u5fdc\u3059\u308b val \u3092\u8fd4\u3059\n for pair in bucket:\n if pair.key == key:\n return pair.val\n # \u30ad\u30fc\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u5834\u5408\u3001None \u3092\u8fd4\u3059\n return None\n\n def put(self, key: int, val: str):\n \"\"\"\u8ffd\u52a0\u64cd\u4f5c\"\"\"\n # \u8ca0\u8377\u7387\u304c\u95be\u5024\u3092\u8d85\u3048\u305f\u5834\u5408\u3001\u62e1\u5f35\u3092\u5b9f\u884c\n if self.load_factor() &gt; self.load_thres:\n self.extend()\n index = self.hash_func(key)\n bucket = self.buckets[index]\n # \u30d0\u30b1\u30c3\u30c8\u3092\u8d70\u67fb\u3057\u3001\u6307\u5b9a\u3055\u308c\u305f\u30ad\u30fc\u306b\u906d\u9047\u3057\u305f\u5834\u5408\u3001\u5bfe\u5fdc\u3059\u308b val \u3092\u66f4\u65b0\u3057\u3066\u8fd4\u3059\n for pair in bucket:\n if pair.key == key:\n pair.val = val\n return\n # \u30ad\u30fc\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u5834\u5408\u3001\u30ad\u30fc\u5024\u30da\u30a2\u3092\u672b\u5c3e\u306b\u8ffd\u52a0\n pair = Pair(key, val)\n bucket.append(pair)\n self.size += 1\n\n def remove(self, key: int):\n \"\"\"\u524a\u9664\u64cd\u4f5c\"\"\"\n index = self.hash_func(key)\n bucket = self.buckets[index]\n # \u30d0\u30b1\u30c3\u30c8\u3092\u8d70\u67fb\u3057\u3001\u305d\u306e\u4e2d\u304b\u3089\u30ad\u30fc\u5024\u30da\u30a2\u3092\u524a\u9664\n for pair in bucket:\n if pair.key == key:\n bucket.remove(pair)\n self.size -= 1\n break\n\n def extend(self):\n \"\"\"\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u62e1\u5f35\"\"\"\n # \u5143\u306e\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u4e00\u6642\u7684\u306b\u4fdd\u5b58\n buckets = self.buckets\n # \u62e1\u5f35\u3055\u308c\u305f\u65b0\u3057\u3044\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n self.capacity *= self.extend_ratio\n self.buckets = [[] for _ in range(self.capacity)]\n self.size = 0\n # \u5143\u306e\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u304b\u3089\u65b0\u3057\u3044\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u306b\u30ad\u30fc\u5024\u30da\u30a2\u3092\u79fb\u52d5\n for bucket in buckets:\n for pair in bucket:\n self.put(pair.key, pair.val)\n\n def print(self):\n \"\"\"\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u51fa\u529b\"\"\"\n for bucket in self.buckets:\n res = []\n for pair in bucket:\n res.append(str(pair.key) + \" -&gt; \" + pair.val)\n print(res)\n</code></pre> hash_map_chaining.cpp<pre><code>/* \u30c1\u30a7\u30a4\u30f3\u6cd5\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb */\nclass HashMapChaining {\n private:\n int size; // \u30ad\u30fc\u5024\u30da\u30a2\u306e\u6570\n int capacity; // \u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u306e\u5bb9\u91cf\n double loadThres; // \u62e1\u5f35\u3092\u30c8\u30ea\u30ac\u30fc\u3059\u308b\u8ca0\u8377\u7387\u306e\u95be\u5024\n int extendRatio; // \u62e1\u5f35\u500d\u7387\n vector&lt;vector&lt;Pair *&gt;&gt; buckets; // \u30d0\u30b1\u30c3\u30c8\u914d\u5217\n\n public:\n /* \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf */\n HashMapChaining() : size(0), capacity(4), loadThres(2.0 / 3.0), extendRatio(2) {\n buckets.resize(capacity);\n }\n\n /* \u30c7\u30b9\u30c8\u30e9\u30af\u30bf */\n ~HashMapChaining() {\n for (auto &amp;bucket : buckets) {\n for (Pair *pair : bucket) {\n // \u30e1\u30e2\u30ea\u3092\u89e3\u653e\n delete pair;\n }\n }\n }\n\n /* \u30cf\u30c3\u30b7\u30e5\u95a2\u6570 */\n int hashFunc(int key) {\n return key % capacity;\n }\n\n /* \u8ca0\u8377\u7387 */\n double loadFactor() {\n return (double)size / (double)capacity;\n }\n\n /* \u30af\u30a8\u30ea\u64cd\u4f5c */\n string get(int key) {\n int index = hashFunc(key);\n // \u30d0\u30b1\u30c3\u30c8\u3092\u8d70\u67fb\u3001\u30ad\u30fc\u304c\u898b\u3064\u304b\u3063\u305f\u5834\u5408\u3001\u5bfe\u5fdc\u3059\u308bval\u3092\u8fd4\u5374\n for (Pair *pair : buckets[index]) {\n if (pair-&gt;key == key) {\n return pair-&gt;val;\n }\n }\n // \u30ad\u30fc\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u5834\u5408\u3001\u7a7a\u6587\u5b57\u5217\u3092\u8fd4\u5374\n return \"\";\n }\n\n /* \u8ffd\u52a0\u64cd\u4f5c */\n void put(int key, string val) {\n // \u8ca0\u8377\u7387\u304c\u95be\u5024\u3092\u8d85\u3048\u305f\u5834\u5408\u3001\u62e1\u5f35\u3092\u5b9f\u884c\n if (loadFactor() &gt; loadThres) {\n extend();\n }\n int index = hashFunc(key);\n // \u30d0\u30b1\u30c3\u30c8\u3092\u8d70\u67fb\u3001\u6307\u5b9a\u30ad\u30fc\u306b\u906d\u9047\u3057\u305f\u5834\u5408\u3001\u5bfe\u5fdc\u3059\u308bval\u3092\u66f4\u65b0\u3057\u3066\u8fd4\u5374\n for (Pair *pair : buckets[index]) {\n if (pair-&gt;key == key) {\n pair-&gt;val = val;\n return;\n }\n }\n // \u30ad\u30fc\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u5834\u5408\u3001\u30ad\u30fc\u5024\u30da\u30a2\u3092\u672b\u5c3e\u306b\u8ffd\u52a0\n buckets[index].push_back(new Pair(key, val));\n size++;\n }\n\n /* \u524a\u9664\u64cd\u4f5c */\n void remove(int key) {\n int index = hashFunc(key);\n auto &amp;bucket = buckets[index];\n // \u30d0\u30b1\u30c3\u30c8\u3092\u8d70\u67fb\u3001\u30ad\u30fc\u5024\u30da\u30a2\u3092\u524a\u9664\n for (int i = 0; i &lt; bucket.size(); i++) {\n if (bucket[i]-&gt;key == key) {\n Pair *tmp = bucket[i];\n bucket.erase(bucket.begin() + i); // \u30ad\u30fc\u5024\u30da\u30a2\u3092\u524a\u9664\n delete tmp; // \u30e1\u30e2\u30ea\u3092\u89e3\u653e\n size--;\n return;\n }\n }\n }\n\n /* \u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u62e1\u5f35 */\n void extend() {\n // \u5143\u306e\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u4e00\u6642\u4fdd\u5b58\n vector&lt;vector&lt;Pair *&gt;&gt; bucketsTmp = buckets;\n // \u62e1\u5f35\u3055\u308c\u305f\u65b0\u3057\u3044\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n capacity *= extendRatio;\n buckets.clear();\n buckets.resize(capacity);\n size = 0;\n // \u5143\u306e\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u304b\u3089\u65b0\u3057\u3044\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u306b\u30ad\u30fc\u5024\u30da\u30a2\u3092\u79fb\u52d5\n for (auto &amp;bucket : bucketsTmp) {\n for (Pair *pair : bucket) {\n put(pair-&gt;key, pair-&gt;val);\n // \u30e1\u30e2\u30ea\u3092\u89e3\u653e\n delete pair;\n }\n }\n }\n\n /* \u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u5370\u5237 */\n void print() {\n for (auto &amp;bucket : buckets) {\n cout &lt;&lt; \"[\";\n for (Pair *pair : bucket) {\n cout &lt;&lt; pair-&gt;key &lt;&lt; \" -&gt; \" &lt;&lt; pair-&gt;val &lt;&lt; \", \";\n }\n cout &lt;&lt; \"]\\n\";\n }\n }\n};\n</code></pre> hash_map_chaining.java<pre><code>/* \u30c1\u30a7\u30a4\u30f3\u6cd5\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb */\nclass HashMapChaining {\n int size; // \u30ad\u30fc\u5024\u30da\u30a2\u306e\u6570\n int capacity; // \u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u306e\u5bb9\u91cf\n double loadThres; // \u62e1\u5f35\u3092\u30c8\u30ea\u30ac\u30fc\u3059\u308b\u8ca0\u8377\u7387\u306e\u95be\u5024\n int extendRatio; // \u62e1\u5f35\u500d\u7387\n List&lt;List&lt;Pair&gt;&gt; buckets; // \u30d0\u30b1\u30c3\u30c8\u914d\u5217\n\n /* \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf */\n public HashMapChaining() {\n size = 0;\n capacity = 4;\n loadThres = 2.0 / 3.0;\n extendRatio = 2;\n buckets = new ArrayList&lt;&gt;(capacity);\n for (int i = 0; i &lt; capacity; i++) {\n buckets.add(new ArrayList&lt;&gt;());\n }\n }\n\n /* \u30cf\u30c3\u30b7\u30e5\u95a2\u6570 */\n int hashFunc(int key) {\n return key % capacity;\n }\n\n /* \u8ca0\u8377\u7387 */\n double loadFactor() {\n return (double) size / capacity;\n }\n\n /* \u30af\u30a8\u30ea\u64cd\u4f5c */\n String get(int key) {\n int index = hashFunc(key);\n List&lt;Pair&gt; bucket = buckets.get(index);\n // \u30d0\u30b1\u30c3\u30c8\u3092\u8d70\u67fb\u3001\u30ad\u30fc\u304c\u898b\u3064\u304b\u3063\u305f\u5834\u5408\u5bfe\u5fdc\u3059\u308bval\u3092\u8fd4\u3059\n for (Pair pair : bucket) {\n if (pair.key == key) {\n return pair.val;\n }\n }\n // \u30ad\u30fc\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u5834\u5408\u3001null\u3092\u8fd4\u3059\n return null;\n }\n\n /* \u8ffd\u52a0\u64cd\u4f5c */\n void put(int key, String val) {\n // \u8ca0\u8377\u7387\u304c\u95be\u5024\u3092\u8d85\u3048\u305f\u5834\u5408\u3001\u62e1\u5f35\u3092\u5b9f\u884c\n if (loadFactor() &gt; loadThres) {\n extend();\n }\n int index = hashFunc(key);\n List&lt;Pair&gt; bucket = buckets.get(index);\n // \u30d0\u30b1\u30c3\u30c8\u3092\u8d70\u67fb\u3001\u6307\u5b9a\u3057\u305f\u30ad\u30fc\u306b\u906d\u9047\u3057\u305f\u5834\u5408\u3001\u5bfe\u5fdc\u3059\u308bval\u3092\u66f4\u65b0\u3057\u3066\u623b\u308b\n for (Pair pair : bucket) {\n if (pair.key == key) {\n pair.val = val;\n return;\n }\n }\n // \u30ad\u30fc\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u5834\u5408\u3001\u30ad\u30fc\u5024\u30da\u30a2\u3092\u672b\u5c3e\u306b\u8ffd\u52a0\n Pair pair = new Pair(key, val);\n bucket.add(pair);\n size++;\n }\n\n /* \u524a\u9664\u64cd\u4f5c */\n void remove(int key) {\n int index = hashFunc(key);\n List&lt;Pair&gt; bucket = buckets.get(index);\n // \u30d0\u30b1\u30c3\u30c8\u3092\u8d70\u67fb\u3001\u305d\u306e\u4e2d\u304b\u3089\u30ad\u30fc\u5024\u30da\u30a2\u3092\u524a\u9664\n for (Pair pair : bucket) {\n if (pair.key == key) {\n bucket.remove(pair);\n size--;\n break;\n }\n }\n }\n\n /* \u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u62e1\u5f35 */\n void extend() {\n // \u5143\u306e\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u4e00\u6642\u7684\u306b\u4fdd\u5b58\n List&lt;List&lt;Pair&gt;&gt; bucketsTmp = buckets;\n // \u62e1\u5f35\u3055\u308c\u305f\u65b0\u3057\u3044\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n capacity *= extendRatio;\n buckets = new ArrayList&lt;&gt;(capacity);\n for (int i = 0; i &lt; capacity; i++) {\n buckets.add(new ArrayList&lt;&gt;());\n }\n size = 0;\n // \u5143\u306e\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u304b\u3089\u65b0\u3057\u3044\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u306b\u30ad\u30fc\u5024\u30da\u30a2\u3092\u79fb\u52d5\n for (List&lt;Pair&gt; bucket : bucketsTmp) {\n for (Pair pair : bucket) {\n put(pair.key, pair.val);\n }\n }\n }\n\n /* \u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u5370\u5237 */\n void print() {\n for (List&lt;Pair&gt; bucket : buckets) {\n List&lt;String&gt; res = new ArrayList&lt;&gt;();\n for (Pair pair : bucket) {\n res.add(pair.key + \" -&gt; \" + pair.val);\n }\n System.out.println(res);\n }\n }\n}\n</code></pre> hash_map_chaining.cs<pre><code>[class]{HashMapChaining}-[func]{}\n</code></pre> hash_map_chaining.go<pre><code>[class]{hashMapChaining}-[func]{}\n</code></pre> hash_map_chaining.swift<pre><code>[class]{HashMapChaining}-[func]{}\n</code></pre> hash_map_chaining.js<pre><code>[class]{HashMapChaining}-[func]{}\n</code></pre> hash_map_chaining.ts<pre><code>[class]{HashMapChaining}-[func]{}\n</code></pre> hash_map_chaining.dart<pre><code>[class]{HashMapChaining}-[func]{}\n</code></pre> hash_map_chaining.rs<pre><code>[class]{HashMapChaining}-[func]{}\n</code></pre> hash_map_chaining.c<pre><code>[class]{Node}-[func]{}\n\n[class]{HashMapChaining}-[func]{}\n</code></pre> hash_map_chaining.kt<pre><code>[class]{HashMapChaining}-[func]{}\n</code></pre> hash_map_chaining.rb<pre><code>[class]{HashMapChaining}-[func]{}\n</code></pre> <p>\u9023\u7d50\u30ea\u30b9\u30c8\u304c\u975e\u5e38\u306b\u9577\u3044\u5834\u5408\u3001\u30af\u30a8\u30ea\u52b9\u7387\\(O(n)\\)\u304c\u60aa\u3044\u3053\u3068\u306f\u6ce8\u76ee\u306b\u5024\u3057\u307e\u3059\u3002\u3053\u306e\u5834\u5408\u3001\u30ea\u30b9\u30c8\u3092\u300cAVL\u6728\u300d\u307e\u305f\u306f\u300c\u8d64\u9ed2\u6728\u300d\u306b\u5909\u63db\u3057\u3066\u3001\u30af\u30a8\u30ea\u64cd\u4f5c\u306e\u6642\u9593\u8a08\u7b97\u91cf\u3092\\(O(\\log n)\\)\u306b\u6700\u9069\u5316\u3067\u304d\u307e\u3059\u3002</p>"},{"location":"chapter_hashing/hash_collision/#622","title":"6.2.2 \u00a0 \u30aa\u30fc\u30d7\u30f3\u30a2\u30c9\u30ec\u30b9\u6cd5","text":"<p>\u30aa\u30fc\u30d7\u30f3\u30a2\u30c9\u30ec\u30b9\u6cd5\u306f\u8ffd\u52a0\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u5c0e\u5165\u305b\u305a\u3001\u4ee3\u308f\u308a\u306b\u300c\u8907\u6570\u56de\u30d7\u30ed\u30fc\u30d6\u300d\u3092\u901a\u3057\u3066\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u3092\u51e6\u7406\u3057\u307e\u3059\u3002\u30d7\u30ed\u30fc\u30d6\u65b9\u6cd5\u306b\u306f\u4e3b\u306b\u7dda\u5f62\u30d7\u30ed\u30fc\u30d6\u3001\u4e8c\u6b21\u30d7\u30ed\u30fc\u30d6\u3001\u4e8c\u91cd\u30cf\u30c3\u30b7\u30e5\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>\u7dda\u5f62\u30d7\u30ed\u30fc\u30d6\u3092\u4f8b\u306b\u3057\u3066\u3001\u30aa\u30fc\u30d7\u30f3\u30a2\u30c9\u30ec\u30b9\u6cd5\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u30e1\u30ab\u30cb\u30ba\u30e0\u3092\u7d39\u4ecb\u3057\u307e\u3057\u3087\u3046\u3002</p>"},{"location":"chapter_hashing/hash_collision/#1","title":"1. \u00a0 \u7dda\u5f62\u30d7\u30ed\u30fc\u30d6","text":"<p>\u7dda\u5f62\u30d7\u30ed\u30fc\u30d6\u306f\u56fa\u5b9a\u30b9\u30c6\u30c3\u30d7\u306e\u7dda\u5f62\u691c\u7d22\u3092\u30d7\u30ed\u30fc\u30d6\u306b\u4f7f\u7528\u3057\u3001\u901a\u5e38\u306e\u30cf\u30c3\u30b7\u30e5\u8868\u3068\u306f\u7570\u306a\u308a\u307e\u3059\u3002</p> <ul> <li>\u8981\u7d20\u306e\u633f\u5165: \u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u30d0\u30b1\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8a08\u7b97\u3057\u307e\u3059\u3002\u30d0\u30b1\u30c3\u30c8\u306b\u65e2\u306b\u8981\u7d20\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u885d\u7a81\u4f4d\u7f6e\u304b\u3089\u7dda\u5f62\u306b\u524d\u65b9\u306b\u8d70\u67fb\u3057\uff08\u901a\u5e38\u30b9\u30c6\u30c3\u30d7\u30b5\u30a4\u30ba\u306f\\(1\\)\uff09\u3001\u7a7a\u306e\u30d0\u30b1\u30c3\u30c8\u304c\u898b\u3064\u304b\u308b\u307e\u3067\u9032\u307f\u3001\u8981\u7d20\u3092\u633f\u5165\u3057\u307e\u3059\u3002</li> <li>\u8981\u7d20\u306e\u691c\u7d22: \u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u306b\u906d\u9047\u3057\u305f\u5834\u5408\u3001\u540c\u3058\u30b9\u30c6\u30c3\u30d7\u30b5\u30a4\u30ba\u3092\u4f7f\u7528\u3057\u3066\u7dda\u5f62\u306b\u524d\u65b9\u306b\u8d70\u67fb\u3057\u3001\u5bfe\u5fdc\u3059\u308b\u8981\u7d20\u304c\u898b\u3064\u304b\u3063\u305f\u3089<code>value</code>\u3092\u8fd4\u3057\u307e\u3059\u3002\u7a7a\u306e\u30d0\u30b1\u30c3\u30c8\u306b\u906d\u9047\u3057\u305f\u5834\u5408\u3001\u30bf\u30fc\u30b2\u30c3\u30c8\u8981\u7d20\u304c\u30cf\u30c3\u30b7\u30e5\u8868\u306b\u306a\u3044\u3053\u3068\u3092\u610f\u5473\u3059\u308b\u305f\u3081\u3001<code>None</code>\u3092\u8fd4\u3057\u307e\u3059\u3002</li> </ul> <p>\u4e0b\u56f3\u306f\u30aa\u30fc\u30d7\u30f3\u30a2\u30c9\u30ec\u30b9\u6cd5\uff08\u7dda\u5f62\u30d7\u30ed\u30fc\u30d6\uff09\u30cf\u30c3\u30b7\u30e5\u8868\u306b\u304a\u3051\u308b\u30ad\u30fc\u5024\u30da\u30a2\u306e\u5206\u5e03\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306b\u3088\u308b\u3068\u3001\u4e0b\u4e8c\u6841\u304c\u540c\u3058\u30ad\u30fc\u306f\u540c\u3058\u30d0\u30b1\u30c3\u30c8\u306b\u30de\u30c3\u30d4\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002\u7dda\u5f62\u30d7\u30ed\u30fc\u30d6\u3092\u901a\u3057\u3066\u3001\u305d\u308c\u3089\u306f\u305d\u306e\u30d0\u30b1\u30c3\u30c8\u3068\u305d\u306e\u4e0b\u306e\u30d0\u30b1\u30c3\u30c8\u306b\u9806\u6b21\u683c\u7d0d\u3055\u308c\u307e\u3059\u3002</p> <p></p> <p> \u56f3 6-6 \u00a0 \u30aa\u30fc\u30d7\u30f3\u30a2\u30c9\u30ec\u30b9\u6cd5\uff08\u7dda\u5f62\u30d7\u30ed\u30fc\u30d6\uff09\u30cf\u30c3\u30b7\u30e5\u8868\u306b\u304a\u3051\u308b\u30ad\u30fc\u5024\u30da\u30a2\u306e\u5206\u5e03 </p> <p>\u3057\u304b\u3057\u3001\u7dda\u5f62\u30d7\u30ed\u30fc\u30d6\u306f\u300c\u30af\u30e9\u30b9\u30bf\u30ea\u30f3\u30b0\u300d\u3092\u4f5c\u308a\u3084\u3059\u3044\u50be\u5411\u304c\u3042\u308a\u307e\u3059\u3002\u5177\u4f53\u7684\u306b\u306f\u3001\u914d\u5217\u5185\u306e\u9023\u7d9a\u7684\u306b\u5360\u6709\u3055\u308c\u305f\u4f4d\u7f6e\u304c\u9577\u3044\u307b\u3069\u3001\u3053\u308c\u3089\u306e\u9023\u7d9a\u3057\u305f\u4f4d\u7f6e\u3067\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u304c\u767a\u751f\u3059\u308b\u78ba\u7387\u304c\u9ad8\u304f\u306a\u308a\u3001\u305d\u306e\u4f4d\u7f6e\u3067\u306e\u30af\u30e9\u30b9\u30bf\u30ea\u30f3\u30b0\u306e\u6210\u9577\u3092\u3055\u3089\u306b\u4fc3\u9032\u3057\u3001\u60aa\u5faa\u74b0\u3092\u5f62\u6210\u3057\u3001\u6700\u7d42\u7684\u306b\u633f\u5165\u3001\u524a\u9664\u3001\u30af\u30a8\u30ea\u3001\u66f4\u65b0\u64cd\u4f5c\u306e\u52b9\u7387\u4f4e\u4e0b\u306b\u3064\u306a\u304c\u308a\u307e\u3059\u3002</p> <p>**\u30aa\u30fc\u30d7\u30f3\u30a2\u30c9\u30ec\u30b9\u6cd5\u30cf\u30c3\u30b7\u30e5\u8868\u3067\u306f\u8981\u7d20\u3092\u76f4\u63a5\u524a\u9664\u3067\u304d\u306a\u3044**\u3053\u3068\u306b\u6ce8\u610f\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002\u8981\u7d20\u3092\u524a\u9664\u3059\u308b\u3068\u3001\u914d\u5217\u306b\u7a7a\u306e\u30d0\u30b1\u30c3\u30c8<code>None</code>\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002\u8981\u7d20\u3092\u691c\u7d22\u3059\u308b\u969b\u3001\u7dda\u5f62\u30d7\u30ed\u30fc\u30d6\u304c\u3053\u306e\u7a7a\u306e\u30d0\u30b1\u30c3\u30c8\u306b\u906d\u9047\u3059\u308b\u3068\u623b\u3063\u3066\u3057\u307e\u3044\u3001\u3053\u306e\u30d0\u30b1\u30c3\u30c8\u306e\u4e0b\u306e\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u306a\u304f\u306a\u308a\u307e\u3059\u3002\u30d7\u30ed\u30b0\u30e9\u30e0\u306f\u3053\u308c\u3089\u306e\u8981\u7d20\u304c\u5b58\u5728\u3057\u306a\u3044\u3068\u8aa4\u3063\u3066\u4eee\u5b9a\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u4e0b\u56f3\u306b\u793a\u3059\u3068\u304a\u308a\u3067\u3059\u3002</p> <p></p> <p> \u56f3 6-7 \u00a0 \u30aa\u30fc\u30d7\u30f3\u30a2\u30c9\u30ec\u30b9\u6cd5\u3067\u306e\u524a\u9664\u306b\u3088\u308b\u30af\u30a8\u30ea\u554f\u984c </p> <p>\u3053\u306e\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306b\u3001\u9045\u5ef6\u524a\u9664\u30e1\u30ab\u30cb\u30ba\u30e0\u3092\u63a1\u7528\u3067\u304d\u307e\u3059\uff1a\u30cf\u30c3\u30b7\u30e5\u8868\u304b\u3089\u8981\u7d20\u3092\u76f4\u63a5\u524a\u9664\u3059\u308b\u4ee3\u308f\u308a\u306b\u3001\u5b9a\u6570<code>TOMBSTONE</code>\u3092\u4f7f\u7528\u3057\u3066\u30d0\u30b1\u30c3\u30c8\u3092\u30de\u30fc\u30af\u3057\u307e\u3059\u3002\u3053\u306e\u30e1\u30ab\u30cb\u30ba\u30e0\u3067\u306f\u3001<code>None</code>\u3068<code>TOMBSTONE</code>\u306e\u4e21\u65b9\u304c\u7a7a\u306e\u30d0\u30b1\u30c3\u30c8\u3092\u8868\u3057\u3001\u30ad\u30fc\u5024\u30da\u30a2\u3092\u4fdd\u6301\u3067\u304d\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u7dda\u5f62\u30d7\u30ed\u30fc\u30d6\u304c<code>TOMBSTONE</code>\u306b\u906d\u9047\u3057\u305f\u5834\u5408\u3001\u305d\u306e\u4e0b\u306b\u307e\u3060\u30ad\u30fc\u5024\u30da\u30a2\u304c\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u8d70\u67fb\u3092\u7d9a\u3051\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>\u3057\u304b\u3057\u3001\u9045\u5ef6\u524a\u9664\u306f\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u6027\u80fd\u52a3\u5316\u3092\u52a0\u901f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u524a\u9664\u64cd\u4f5c\u306e\u305f\u3073\u306b\u524a\u9664\u30de\u30fc\u30af\u304c\u751f\u6210\u3055\u308c\u3001<code>TOMBSTONE</code>\u304c\u5897\u52a0\u3059\u308b\u3068\u3001\u7dda\u5f62\u30d7\u30ed\u30fc\u30d6\u304c\u30bf\u30fc\u30b2\u30c3\u30c8\u8981\u7d20\u3092\u898b\u3064\u3051\u308b\u305f\u3081\u306b\u8907\u6570\u306e<code>TOMBSTONE</code>\u3092\u30b9\u30ad\u30c3\u30d7\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u691c\u7d22\u6642\u9593\u3082\u5897\u52a0\u3057\u307e\u3059\u3002</p> <p>\u3053\u308c\u306b\u5bfe\u51e6\u3059\u308b\u305f\u3081\u306b\u3001\u7dda\u5f62\u30d7\u30ed\u30fc\u30d6\u4e2d\u306b\u6700\u521d\u306b\u906d\u9047\u3057\u305f<code>TOMBSTONE</code>\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8a18\u9332\u3057\u3001\u691c\u7d22\u3055\u308c\u305f\u30bf\u30fc\u30b2\u30c3\u30c8\u8981\u7d20\u3068\u305d\u306e<code>TOMBSTONE</code>\u306e\u4f4d\u7f6e\u3092\u4ea4\u63db\u3059\u308b\u3053\u3068\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u3092\u884c\u3046\u5229\u70b9\u306f\u3001\u8981\u7d20\u304c\u30af\u30a8\u30ea\u307e\u305f\u306f\u8ffd\u52a0\u3055\u308c\u308b\u305f\u3073\u306b\u3001\u8981\u7d20\u304c\u305d\u306e\u7406\u60f3\u7684\u306a\u4f4d\u7f6e\uff08\u30d7\u30ed\u30fc\u30d6\u306e\u958b\u59cb\u70b9\uff09\u306b\u3088\u308a\u8fd1\u3044\u30d0\u30b1\u30c3\u30c8\u306b\u79fb\u52d5\u3055\u308c\u3001\u30af\u30a8\u30ea\u52b9\u7387\u304c\u6700\u9069\u5316\u3055\u308c\u308b\u3053\u3068\u3067\u3059\u3002</p> <p>\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u306f\u3001\u9045\u5ef6\u524a\u9664\u3092\u4f7f\u7528\u3057\u305f\u30aa\u30fc\u30d7\u30f3\u30a2\u30c9\u30ec\u30b9\u6cd5\uff08\u7dda\u5f62\u30d7\u30ed\u30fc\u30d6\uff09\u30cf\u30c3\u30b7\u30e5\u8868\u3092\u5b9f\u88c5\u3057\u3066\u3044\u307e\u3059\u3002\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u7a7a\u9593\u3092\u3088\u308a\u6709\u52b9\u306b\u6d3b\u7528\u3059\u308b\u305f\u3081\u306b\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u3092\u300c\u5faa\u74b0\u914d\u5217\u300d\u3068\u3057\u3066\u6271\u3044\u307e\u3059\u3002\u914d\u5217\u306e\u7d42\u308f\u308a\u3092\u8d85\u3048\u308b\u3068\u3001\u6700\u521d\u306b\u623b\u3063\u3066\u8d70\u67fb\u3092\u7d9a\u3051\u307e\u3059\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby hash_map_open_addressing.py<pre><code>class HashMapOpenAddressing:\n \"\"\"\u30aa\u30fc\u30d7\u30f3\u30a2\u30c9\u30ec\u30b9\u6cd5\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\"\"\"\n\n def __init__(self):\n \"\"\"\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\"\"\"\n self.size = 0 # \u30ad\u30fc\u5024\u30da\u30a2\u306e\u6570\n self.capacity = 4 # \u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u306e\u5bb9\u91cf\n self.load_thres = 2.0 / 3.0 # \u62e1\u5f35\u3092\u30c8\u30ea\u30ac\u30fc\u3059\u308b\u8ca0\u8377\u7387\u306e\u95be\u5024\n self.extend_ratio = 2 # \u62e1\u5f35\u306e\u500d\u6570\n self.buckets: list[Pair | None] = [None] * self.capacity # \u30d0\u30b1\u30c3\u30c8\u914d\u5217\n self.TOMBSTONE = Pair(-1, \"-1\") # \u524a\u9664\u30de\u30fc\u30af\n\n def hash_func(self, key: int) -&gt; int:\n \"\"\"\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\"\"\"\n return key % self.capacity\n\n def load_factor(self) -&gt; float:\n \"\"\"\u8ca0\u8377\u7387\"\"\"\n return self.size / self.capacity\n\n def find_bucket(self, key: int) -&gt; int:\n \"\"\"key \u306b\u5bfe\u5fdc\u3059\u308b\u30d0\u30b1\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u691c\u7d22\"\"\"\n index = self.hash_func(key)\n first_tombstone = -1\n # \u7dda\u5f62\u63a2\u67fb\u3001\u7a7a\u306e\u30d0\u30b1\u30c3\u30c8\u306b\u906d\u9047\u3057\u305f\u3089\u30d6\u30ec\u30fc\u30af\n while self.buckets[index] is not None:\n # \u30ad\u30fc\u306b\u906d\u9047\u3057\u305f\u5834\u5408\u3001\u5bfe\u5fdc\u3059\u308b\u30d0\u30b1\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u3059\n if self.buckets[index].key == key:\n # \u524a\u9664\u30de\u30fc\u30af\u304c\u4ee5\u524d\u306b\u906d\u9047\u3057\u3066\u3044\u305f\u5834\u5408\u3001\u30ad\u30fc\u5024\u30da\u30a2\u3092\u305d\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u79fb\u52d5\n if first_tombstone != -1:\n self.buckets[first_tombstone] = self.buckets[index]\n self.buckets[index] = self.TOMBSTONE\n return first_tombstone # \u79fb\u52d5\u3055\u308c\u305f\u30d0\u30b1\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u3059\n return index # \u30d0\u30b1\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u3059\n # \u6700\u521d\u306b\u906d\u9047\u3057\u305f\u524a\u9664\u30de\u30fc\u30af\u3092\u8a18\u9332\n if first_tombstone == -1 and self.buckets[index] is self.TOMBSTONE:\n first_tombstone = index\n # \u30d0\u30b1\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8a08\u7b97\u3001\u672b\u5c3e\u3092\u8d85\u3048\u305f\u5834\u5408\u306f\u5148\u982d\u306b\u623b\u308b\n index = (index + 1) % self.capacity\n # \u30ad\u30fc\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u3001\u633f\u5165\u30dd\u30a4\u30f3\u30c8\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u3059\n return index if first_tombstone == -1 else first_tombstone\n\n def get(self, key: int) -&gt; str:\n \"\"\"\u7167\u4f1a\u64cd\u4f5c\"\"\"\n # key \u306b\u5bfe\u5fdc\u3059\u308b\u30d0\u30b1\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u691c\u7d22\n index = self.find_bucket(key)\n # \u30ad\u30fc\u5024\u30da\u30a2\u304c\u898b\u3064\u304b\u308c\u3070\u3001\u5bfe\u5fdc\u3059\u308b val \u3092\u8fd4\u3059\n if self.buckets[index] not in [None, self.TOMBSTONE]:\n return self.buckets[index].val\n # \u30ad\u30fc\u5024\u30da\u30a2\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u3001None \u3092\u8fd4\u3059\n return None\n\n def put(self, key: int, val: str):\n \"\"\"\u8ffd\u52a0\u64cd\u4f5c\"\"\"\n # \u8ca0\u8377\u7387\u304c\u95be\u5024\u3092\u8d85\u3048\u305f\u5834\u5408\u3001\u62e1\u5f35\u3092\u5b9f\u884c\n if self.load_factor() &gt; self.load_thres:\n self.extend()\n # key \u306b\u5bfe\u5fdc\u3059\u308b\u30d0\u30b1\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u691c\u7d22\n index = self.find_bucket(key)\n # \u30ad\u30fc\u5024\u30da\u30a2\u304c\u898b\u3064\u304b\u308c\u3070\u3001val \u3092\u4e0a\u66f8\u304d\u3057\u3066\u8fd4\u3059\n if self.buckets[index] not in [None, self.TOMBSTONE]:\n self.buckets[index].val = val\n return\n # \u30ad\u30fc\u5024\u30da\u30a2\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u3001\u30ad\u30fc\u5024\u30da\u30a2\u3092\u8ffd\u52a0\n self.buckets[index] = Pair(key, val)\n self.size += 1\n\n def remove(self, key: int):\n \"\"\"\u524a\u9664\u64cd\u4f5c\"\"\"\n # key \u306b\u5bfe\u5fdc\u3059\u308b\u30d0\u30b1\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u691c\u7d22\n index = self.find_bucket(key)\n # \u30ad\u30fc\u5024\u30da\u30a2\u304c\u898b\u3064\u304b\u308c\u3070\u3001\u524a\u9664\u30de\u30fc\u30af\u3067\u8986\u3046\n if self.buckets[index] not in [None, self.TOMBSTONE]:\n self.buckets[index] = self.TOMBSTONE\n self.size -= 1\n\n def extend(self):\n \"\"\"\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u62e1\u5f35\"\"\"\n # \u5143\u306e\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u4e00\u6642\u7684\u306b\u4fdd\u5b58\n buckets_tmp = self.buckets\n # \u62e1\u5f35\u3055\u308c\u305f\u65b0\u3057\u3044\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n self.capacity *= self.extend_ratio\n self.buckets = [None] * self.capacity\n self.size = 0\n # \u5143\u306e\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u304b\u3089\u65b0\u3057\u3044\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u306b\u30ad\u30fc\u5024\u30da\u30a2\u3092\u79fb\u52d5\n for pair in buckets_tmp:\n if pair not in [None, self.TOMBSTONE]:\n self.put(pair.key, pair.val)\n\n def print(self):\n \"\"\"\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u51fa\u529b\"\"\"\n for pair in self.buckets:\n if pair is None:\n print(\"None\")\n elif pair is self.TOMBSTONE:\n print(\"TOMBSTONE\")\n else:\n print(pair.key, \"-&gt;\", pair.val)\n</code></pre> hash_map_open_addressing.cpp<pre><code>/* \u30aa\u30fc\u30d7\u30f3\u30a2\u30c9\u30ec\u30b9\u6cd5\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb */\nclass HashMapOpenAddressing {\n private:\n int size; // \u30ad\u30fc\u5024\u30da\u30a2\u306e\u6570\n int capacity = 4; // \u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u306e\u5bb9\u91cf\n const double loadThres = 2.0 / 3.0; // \u62e1\u5f35\u3092\u30c8\u30ea\u30ac\u30fc\u3059\u308b\u8ca0\u8377\u7387\u306e\u95be\u5024\n const int extendRatio = 2; // \u62e1\u5f35\u500d\u7387\n vector&lt;Pair *&gt; buckets; // \u30d0\u30b1\u30c3\u30c8\u914d\u5217\n Pair *TOMBSTONE = new Pair(-1, \"-1\"); // \u524a\u9664\u30de\u30fc\u30af\n\n public:\n /* \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf */\n HashMapOpenAddressing() : size(0), buckets(capacity, nullptr) {\n }\n\n /* \u30c7\u30b9\u30c8\u30e9\u30af\u30bf */\n ~HashMapOpenAddressing() {\n for (Pair *pair : buckets) {\n if (pair != nullptr &amp;&amp; pair != TOMBSTONE) {\n delete pair;\n }\n }\n delete TOMBSTONE;\n }\n\n /* \u30cf\u30c3\u30b7\u30e5\u95a2\u6570 */\n int hashFunc(int key) {\n return key % capacity;\n }\n\n /* \u8ca0\u8377\u7387 */\n double loadFactor() {\n return (double)size / capacity;\n }\n\n /* key\u306b\u5bfe\u5fdc\u3059\u308b\u30d0\u30b1\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u691c\u7d22 */\n int findBucket(int key) {\n int index = hashFunc(key);\n int firstTombstone = -1;\n // \u7dda\u5f62\u63a2\u67fb\u3001\u7a7a\u306e\u30d0\u30b1\u30c3\u30c8\u306b\u906d\u9047\u3057\u305f\u3089\u4e2d\u65ad\n while (buckets[index] != nullptr) {\n // key\u306b\u906d\u9047\u3057\u305f\u5834\u5408\u3001\u5bfe\u5fdc\u3059\u308b\u30d0\u30b1\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u5374\n if (buckets[index]-&gt;key == key) {\n // \u4ee5\u524d\u306b\u524a\u9664\u30de\u30fc\u30af\u306b\u906d\u9047\u3057\u3066\u3044\u305f\u5834\u5408\u3001\u30ad\u30fc\u5024\u30da\u30a2\u3092\u305d\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u79fb\u52d5\n if (firstTombstone != -1) {\n buckets[firstTombstone] = buckets[index];\n buckets[index] = TOMBSTONE;\n return firstTombstone; // \u79fb\u52d5\u3055\u308c\u305f\u30d0\u30b1\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u5374\n }\n return index; // \u30d0\u30b1\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u5374\n }\n // \u6700\u521d\u306b\u906d\u9047\u3057\u305f\u524a\u9664\u30de\u30fc\u30af\u3092\u8a18\u9332\n if (firstTombstone == -1 &amp;&amp; buckets[index] == TOMBSTONE) {\n firstTombstone = index;\n }\n // \u30d0\u30b1\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8a08\u7b97\u3001\u672b\u5c3e\u3092\u8d85\u3048\u305f\u5834\u5408\u306f\u5148\u982d\u306b\u623b\u308b\n index = (index + 1) % capacity;\n }\n // key\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u3001\u633f\u5165\u30dd\u30a4\u30f3\u30c8\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u5374\n return firstTombstone == -1 ? index : firstTombstone;\n }\n\n /* \u30af\u30a8\u30ea\u64cd\u4f5c */\n string get(int key) {\n // key\u306b\u5bfe\u5fdc\u3059\u308b\u30d0\u30b1\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u691c\u7d22\n int index = findBucket(key);\n // \u30ad\u30fc\u5024\u30da\u30a2\u304c\u898b\u3064\u304b\u3063\u305f\u5834\u5408\u3001\u5bfe\u5fdc\u3059\u308bval\u3092\u8fd4\u5374\n if (buckets[index] != nullptr &amp;&amp; buckets[index] != TOMBSTONE) {\n return buckets[index]-&gt;val;\n }\n // \u30ad\u30fc\u5024\u30da\u30a2\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u3001\u7a7a\u6587\u5b57\u5217\u3092\u8fd4\u5374\n return \"\";\n }\n\n /* \u8ffd\u52a0\u64cd\u4f5c */\n void put(int key, string val) {\n // \u8ca0\u8377\u7387\u304c\u95be\u5024\u3092\u8d85\u3048\u305f\u5834\u5408\u3001\u62e1\u5f35\u3092\u5b9f\u884c\n if (loadFactor() &gt; loadThres) {\n extend();\n }\n // key\u306b\u5bfe\u5fdc\u3059\u308b\u30d0\u30b1\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u691c\u7d22\n int index = findBucket(key);\n // \u30ad\u30fc\u5024\u30da\u30a2\u304c\u898b\u3064\u304b\u3063\u305f\u5834\u5408\u3001val\u3092\u4e0a\u66f8\u304d\u3057\u3066\u8fd4\u5374\n if (buckets[index] != nullptr &amp;&amp; buckets[index] != TOMBSTONE) {\n buckets[index]-&gt;val = val;\n return;\n }\n // \u30ad\u30fc\u5024\u30da\u30a2\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u3001\u30ad\u30fc\u5024\u30da\u30a2\u3092\u8ffd\u52a0\n buckets[index] = new Pair(key, val);\n size++;\n }\n\n /* \u524a\u9664\u64cd\u4f5c */\n void remove(int key) {\n // key\u306b\u5bfe\u5fdc\u3059\u308b\u30d0\u30b1\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u691c\u7d22\n int index = findBucket(key);\n // \u30ad\u30fc\u5024\u30da\u30a2\u304c\u898b\u3064\u304b\u3063\u305f\u5834\u5408\u3001\u524a\u9664\u30de\u30fc\u30af\u3067\u8986\u3046\n if (buckets[index] != nullptr &amp;&amp; buckets[index] != TOMBSTONE) {\n delete buckets[index];\n buckets[index] = TOMBSTONE;\n size--;\n }\n }\n\n /* \u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u62e1\u5f35 */\n void extend() {\n // \u5143\u306e\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u4e00\u6642\u4fdd\u5b58\n vector&lt;Pair *&gt; bucketsTmp = buckets;\n // \u62e1\u5f35\u3055\u308c\u305f\u65b0\u3057\u3044\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n capacity *= extendRatio;\n buckets = vector&lt;Pair *&gt;(capacity, nullptr);\n size = 0;\n // \u5143\u306e\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u304b\u3089\u65b0\u3057\u3044\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u306b\u30ad\u30fc\u5024\u30da\u30a2\u3092\u79fb\u52d5\n for (Pair *pair : bucketsTmp) {\n if (pair != nullptr &amp;&amp; pair != TOMBSTONE) {\n put(pair-&gt;key, pair-&gt;val);\n delete pair;\n }\n }\n }\n\n /* \u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u5370\u5237 */\n void print() {\n for (Pair *pair : buckets) {\n if (pair == nullptr) {\n cout &lt;&lt; \"nullptr\" &lt;&lt; endl;\n } else if (pair == TOMBSTONE) {\n cout &lt;&lt; \"TOMBSTONE\" &lt;&lt; endl;\n } else {\n cout &lt;&lt; pair-&gt;key &lt;&lt; \" -&gt; \" &lt;&lt; pair-&gt;val &lt;&lt; endl;\n }\n }\n }\n};\n</code></pre> hash_map_open_addressing.java<pre><code>/* \u30aa\u30fc\u30d7\u30f3\u30a2\u30c9\u30ec\u30b9\u6cd5\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb */\nclass HashMapOpenAddressing {\n private int size; // \u30ad\u30fc\u5024\u30da\u30a2\u306e\u6570\n private int capacity = 4; // \u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u306e\u5bb9\u91cf\n private final double loadThres = 2.0 / 3.0; // \u62e1\u5f35\u3092\u30c8\u30ea\u30ac\u30fc\u3059\u308b\u8ca0\u8377\u7387\u306e\u95be\u5024\n private final int extendRatio = 2; // \u62e1\u5f35\u500d\u7387\n private Pair[] buckets; // \u30d0\u30b1\u30c3\u30c8\u914d\u5217\n private final Pair TOMBSTONE = new Pair(-1, \"-1\"); // \u524a\u9664\u30de\u30fc\u30af\n\n /* \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf */\n public HashMapOpenAddressing() {\n size = 0;\n buckets = new Pair[capacity];\n }\n\n /* \u30cf\u30c3\u30b7\u30e5\u95a2\u6570 */\n private int hashFunc(int key) {\n return key % capacity;\n }\n\n /* \u8ca0\u8377\u7387 */\n private double loadFactor() {\n return (double) size / capacity;\n }\n\n /* key\u306b\u5bfe\u5fdc\u3059\u308b\u30d0\u30b1\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u691c\u7d22 */\n private int findBucket(int key) {\n int index = hashFunc(key);\n int firstTombstone = -1;\n // \u7dda\u5f62\u63a2\u67fb\u3001\u7a7a\u306e\u30d0\u30b1\u30c3\u30c8\u306b\u906d\u9047\u3057\u305f\u3089\u7d42\u4e86\n while (buckets[index] != null) {\n // key\u306b\u906d\u9047\u3057\u305f\u5834\u5408\u3001\u5bfe\u5fdc\u3059\u308b\u30d0\u30b1\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u3059\n if (buckets[index].key == key) {\n // \u4ee5\u524d\u306b\u524a\u9664\u30de\u30fc\u30af\u306b\u906d\u9047\u3057\u3066\u3044\u305f\u5834\u5408\u3001\u30ad\u30fc\u5024\u30da\u30a2\u3092\u305d\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u79fb\u52d5\n if (firstTombstone != -1) {\n buckets[firstTombstone] = buckets[index];\n buckets[index] = TOMBSTONE;\n return firstTombstone; // \u79fb\u52d5\u5f8c\u306e\u30d0\u30b1\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u3059\n }\n return index; // \u30d0\u30b1\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u3059\n }\n // \u6700\u521d\u306b\u906d\u9047\u3057\u305f\u524a\u9664\u30de\u30fc\u30af\u3092\u8a18\u9332\n if (firstTombstone == -1 &amp;&amp; buckets[index] == TOMBSTONE) {\n firstTombstone = index;\n }\n // \u30d0\u30b1\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8a08\u7b97\u3001\u672b\u5c3e\u3092\u8d85\u3048\u305f\u5834\u5408\u306f\u5148\u982d\u306b\u623b\u308b\n index = (index + 1) % capacity;\n }\n // key\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u3001\u633f\u5165\u30dd\u30a4\u30f3\u30c8\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u3059\n return firstTombstone == -1 ? index : firstTombstone;\n }\n\n /* \u30af\u30a8\u30ea\u64cd\u4f5c */\n public String get(int key) {\n // key\u306b\u5bfe\u5fdc\u3059\u308b\u30d0\u30b1\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u691c\u7d22\n int index = findBucket(key);\n // \u30ad\u30fc\u5024\u30da\u30a2\u304c\u898b\u3064\u304b\u3063\u305f\u5834\u5408\u3001\u5bfe\u5fdc\u3059\u308bval\u3092\u8fd4\u3059\n if (buckets[index] != null &amp;&amp; buckets[index] != TOMBSTONE) {\n return buckets[index].val;\n }\n // \u30ad\u30fc\u5024\u30da\u30a2\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u3001null\u3092\u8fd4\u3059\n return null;\n }\n\n /* \u8ffd\u52a0\u64cd\u4f5c */\n public void put(int key, String val) {\n // \u8ca0\u8377\u7387\u304c\u95be\u5024\u3092\u8d85\u3048\u305f\u5834\u5408\u3001\u62e1\u5f35\u3092\u5b9f\u884c\n if (loadFactor() &gt; loadThres) {\n extend();\n }\n // key\u306b\u5bfe\u5fdc\u3059\u308b\u30d0\u30b1\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u691c\u7d22\n int index = findBucket(key);\n // \u30ad\u30fc\u5024\u30da\u30a2\u304c\u898b\u3064\u304b\u3063\u305f\u5834\u5408\u3001val\u3092\u4e0a\u66f8\u304d\u3057\u3066\u623b\u308b\n if (buckets[index] != null &amp;&amp; buckets[index] != TOMBSTONE) {\n buckets[index].val = val;\n return;\n }\n // \u30ad\u30fc\u5024\u30da\u30a2\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u3001\u30ad\u30fc\u5024\u30da\u30a2\u3092\u8ffd\u52a0\n buckets[index] = new Pair(key, val);\n size++;\n }\n\n /* \u524a\u9664\u64cd\u4f5c */\n public void remove(int key) {\n // key\u306b\u5bfe\u5fdc\u3059\u308b\u30d0\u30b1\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u691c\u7d22\n int index = findBucket(key);\n // \u30ad\u30fc\u5024\u30da\u30a2\u304c\u898b\u3064\u304b\u3063\u305f\u5834\u5408\u3001\u524a\u9664\u30de\u30fc\u30af\u3067\u8986\u3046\n if (buckets[index] != null &amp;&amp; buckets[index] != TOMBSTONE) {\n buckets[index] = TOMBSTONE;\n size--;\n }\n }\n\n /* \u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u62e1\u5f35 */\n private void extend() {\n // \u5143\u306e\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u4e00\u6642\u7684\u306b\u4fdd\u5b58\n Pair[] bucketsTmp = buckets;\n // \u62e1\u5f35\u3055\u308c\u305f\u65b0\u3057\u3044\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u521d\u671f\u5316\n capacity *= extendRatio;\n buckets = new Pair[capacity];\n size = 0;\n // \u5143\u306e\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u304b\u3089\u65b0\u3057\u3044\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u306b\u30ad\u30fc\u5024\u30da\u30a2\u3092\u79fb\u52d5\n for (Pair pair : bucketsTmp) {\n if (pair != null &amp;&amp; pair != TOMBSTONE) {\n put(pair.key, pair.val);\n }\n }\n }\n\n /* \u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u5370\u5237 */\n public void print() {\n for (Pair pair : buckets) {\n if (pair == null) {\n System.out.println(\"null\");\n } else if (pair == TOMBSTONE) {\n System.out.println(\"TOMBSTONE\");\n } else {\n System.out.println(pair.key + \" -&gt; \" + pair.val);\n }\n }\n }\n}\n</code></pre> hash_map_open_addressing.cs<pre><code>[class]{HashMapOpenAddressing}-[func]{}\n</code></pre> hash_map_open_addressing.go<pre><code>[class]{hashMapOpenAddressing}-[func]{}\n</code></pre> hash_map_open_addressing.swift<pre><code>[class]{HashMapOpenAddressing}-[func]{}\n</code></pre> hash_map_open_addressing.js<pre><code>[class]{HashMapOpenAddressing}-[func]{}\n</code></pre> hash_map_open_addressing.ts<pre><code>[class]{HashMapOpenAddressing}-[func]{}\n</code></pre> hash_map_open_addressing.dart<pre><code>[class]{HashMapOpenAddressing}-[func]{}\n</code></pre> hash_map_open_addressing.rs<pre><code>[class]{HashMapOpenAddressing}-[func]{}\n</code></pre> hash_map_open_addressing.c<pre><code>[class]{HashMapOpenAddressing}-[func]{}\n</code></pre> hash_map_open_addressing.kt<pre><code>[class]{HashMapOpenAddressing}-[func]{}\n</code></pre> hash_map_open_addressing.rb<pre><code>[class]{HashMapOpenAddressing}-[func]{}\n</code></pre>"},{"location":"chapter_hashing/hash_collision/#2","title":"2. \u00a0 \u4e8c\u6b21\u30d7\u30ed\u30fc\u30d6","text":"<p>\u4e8c\u6b21\u30d7\u30ed\u30fc\u30d6\u306f\u7dda\u5f62\u30d7\u30ed\u30fc\u30d6\u306b\u4f3c\u3066\u304a\u308a\u3001\u30aa\u30fc\u30d7\u30f3\u30a2\u30c9\u30ec\u30b9\u6cd5\u306e\u4e00\u822c\u7684\u306a\u6226\u7565\u306e1\u3064\u3067\u3059\u3002\u885d\u7a81\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u3001\u4e8c\u6b21\u30d7\u30ed\u30fc\u30d6\u306f\u5358\u7d14\u306b\u56fa\u5b9a\u30b9\u30c6\u30c3\u30d7\u6570\u3092\u30b9\u30ad\u30c3\u30d7\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u300c\u30d7\u30ed\u30fc\u30d6\u56de\u6570\u306e\u4e8c\u4e57\u300d\u306b\u7b49\u3057\u3044\u30b9\u30c6\u30c3\u30d7\u6570\u3001\u3064\u307e\u308a\\(1, 4, 9, \\dots\\)\u30b9\u30c6\u30c3\u30d7\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u307e\u3059\u3002</p> <p>\u4e8c\u6b21\u30d7\u30ed\u30fc\u30d6\u306b\u306f\u4ee5\u4e0b\u306e\u5229\u70b9\u304c\u3042\u308a\u307e\u3059\uff1a</p> <ul> <li>\u4e8c\u6b21\u30d7\u30ed\u30fc\u30d6\u306f\u3001\u30d7\u30ed\u30fc\u30d6\u56de\u6570\u306e\u4e8c\u4e57\u306e\u8ddd\u96e2\u3092\u30b9\u30ad\u30c3\u30d7\u3059\u308b\u3053\u3068\u3067\u3001\u7dda\u5f62\u30d7\u30ed\u30fc\u30d6\u306e\u30af\u30e9\u30b9\u30bf\u30ea\u30f3\u30b0\u52b9\u679c\u3092\u8efd\u6e1b\u3057\u3088\u3046\u3068\u3057\u307e\u3059\u3002</li> <li>\u4e8c\u6b21\u30d7\u30ed\u30fc\u30d6\u306f\u3088\u308a\u5927\u304d\u306a\u8ddd\u96e2\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u3066\u7a7a\u306e\u4f4d\u7f6e\u3092\u898b\u3064\u3051\u3001\u30c7\u30fc\u30bf\u3092\u3088\u308a\u5747\u7b49\u306b\u5206\u6563\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002</li> </ul> <p>\u3057\u304b\u3057\u3001\u4e8c\u6b21\u30d7\u30ed\u30fc\u30d6\u306f\u5b8c\u74a7\u3067\u306f\u3042\u308a\u307e\u305b\u3093\uff1a</p> <ul> <li>\u30af\u30e9\u30b9\u30bf\u30ea\u30f3\u30b0\u306f\u4f9d\u7136\u3068\u3057\u3066\u5b58\u5728\u3057\u3001\u3064\u307e\u308a\u4e00\u90e8\u306e\u4f4d\u7f6e\u306f\u4ed6\u306e\u4f4d\u7f6e\u3088\u308a\u3082\u5360\u6709\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u9ad8\u3044\u3067\u3059\u3002</li> <li>\u4e8c\u4e57\u306e\u6210\u9577\u306b\u3088\u308a\u3001\u4e8c\u6b21\u30d7\u30ed\u30fc\u30d6\u306f\u30cf\u30c3\u30b7\u30e5\u8868\u5168\u4f53\u3092\u30d7\u30ed\u30fc\u30d6\u3067\u304d\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u306b\u7a7a\u306e\u30d0\u30b1\u30c3\u30c8\u304c\u3042\u3063\u3066\u3082\u3001\u4e8c\u6b21\u30d7\u30ed\u30fc\u30d6\u304c\u30a2\u30af\u30bb\u30b9\u3067\u304d\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_hashing/hash_collision/#3","title":"3. \u00a0 \u4e8c\u91cd\u30cf\u30c3\u30b7\u30e5","text":"<p>\u540d\u524d\u304c\u793a\u3059\u3088\u3046\u306b\u3001\u4e8c\u91cd\u30cf\u30c3\u30b7\u30e5\u6cd5\u306f\u8907\u6570\u306e\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\\(f_1(x)\\)\u3001\\(f_2(x)\\)\u3001\\(f_3(x)\\)\u3001\\(\\dots\\)\u3092\u30d7\u30ed\u30fc\u30d6\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002</p> <ul> <li>\u8981\u7d20\u306e\u633f\u5165: \u30cf\u30c3\u30b7\u30e5\u95a2\u6570\\(f_1(x)\\)\u304c\u885d\u7a81\u306b\u906d\u9047\u3057\u305f\u5834\u5408\u3001\\(f_2(x)\\)\u3092\u8a66\u3057\u3001\u4ee5\u4e0b\u540c\u69d8\u306b\u3001\u7a7a\u306e\u4f4d\u7f6e\u304c\u898b\u3064\u304b\u3063\u3066\u8981\u7d20\u304c\u633f\u5165\u3055\u308c\u308b\u307e\u3067\u7d9a\u3051\u307e\u3059\u3002</li> <li>\u8981\u7d20\u306e\u691c\u7d22: \u540c\u3058\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306e\u9806\u5e8f\u3067\u691c\u7d22\u3057\u3001\u30bf\u30fc\u30b2\u30c3\u30c8\u8981\u7d20\u304c\u898b\u3064\u304b\u3063\u3066\u8fd4\u3055\u308c\u308b\u307e\u3067\u3001\u307e\u305f\u306f\u7a7a\u306e\u4f4d\u7f6e\u306b\u906d\u9047\u3059\u308b\u304b\u3059\u3079\u3066\u306e\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u304c\u8a66\u3055\u308c\u308b\u307e\u3067\u7d9a\u3051\u3001\u8981\u7d20\u304c\u30cf\u30c3\u30b7\u30e5\u8868\u306b\u306a\u3044\u3053\u3068\u3092\u793a\u3057\u3001<code>None</code>\u3092\u8fd4\u3057\u307e\u3059\u3002</li> </ul> <p>\u7dda\u5f62\u30d7\u30ed\u30fc\u30d6\u3068\u6bd4\u8f03\u3057\u3066\u3001\u4e8c\u91cd\u30cf\u30c3\u30b7\u30e5\u6cd5\u306f\u30af\u30e9\u30b9\u30bf\u30ea\u30f3\u30b0\u304c\u8d77\u3053\u308a\u306b\u304f\u3044\u3067\u3059\u304c\u3001\u8907\u6570\u306e\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306f\u8ffd\u52a0\u306e\u8a08\u7b97\u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9\u3092\u5c0e\u5165\u3057\u307e\u3059\u3002</p> <p>Tip</p> <p>\u30aa\u30fc\u30d7\u30f3\u30a2\u30c9\u30ec\u30b9\u6cd5\uff08\u7dda\u5f62\u30d7\u30ed\u30fc\u30d6\u3001\u4e8c\u6b21\u30d7\u30ed\u30fc\u30d6\u3001\u4e8c\u91cd\u30cf\u30c3\u30b7\u30e5\uff09\u30cf\u30c3\u30b7\u30e5\u8868\u306f\u3059\u3079\u3066\u300c\u8981\u7d20\u3092\u76f4\u63a5\u524a\u9664\u3067\u304d\u306a\u3044\u300d\u3068\u3044\u3046\u554f\u984c\u304c\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p>"},{"location":"chapter_hashing/hash_collision/#623","title":"6.2.3 \u00a0 \u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306e\u9078\u629e","text":"<p>\u7570\u306a\u308b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306f\u7570\u306a\u308b\u30cf\u30c3\u30b7\u30e5\u8868\u5b9f\u88c5\u6226\u7565\u3092\u63a1\u7528\u3057\u3066\u3044\u307e\u3059\u3002\u4ee5\u4e0b\u306b\u3044\u304f\u3064\u304b\u306e\u4f8b\u3092\u793a\u3057\u307e\u3059\uff1a</p> <ul> <li>Python\u306f\u30aa\u30fc\u30d7\u30f3\u30a2\u30c9\u30ec\u30b9\u6cd5\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<code>dict</code>\u8f9e\u66f8\u306f\u30d7\u30ed\u30fc\u30d6\u306b\u7591\u4f3c\u4e71\u6570\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</li> <li>Java\u306f\u9023\u9396\u6cd5\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002JDK 1.8\u4ee5\u964d\u3001<code>HashMap</code>\u306e\u914d\u5217\u9577\u304c64\u306b\u9054\u3057\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u9577\u3055\u304c8\u306b\u9054\u3059\u308b\u3068\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306f\u691c\u7d22\u6027\u80fd\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306b\u8d64\u9ed2\u6728\u306b\u5909\u63db\u3055\u308c\u307e\u3059\u3002</li> <li>Go\u306f\u9023\u9396\u6cd5\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002Go\u306f\u5404\u30d0\u30b1\u30c3\u30c8\u304c\u6700\u59278\u3064\u306e\u30ad\u30fc\u5024\u30da\u30a2\u3092\u683c\u7d0d\u3067\u304d\u308b\u3053\u3068\u3092\u898f\u5b9a\u3057\u3001\u5bb9\u91cf\u3092\u8d85\u3048\u305f\u5834\u5408\u306f\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u30d0\u30b1\u30c3\u30c8\u304c\u9023\u7d50\u3055\u308c\u307e\u3059\u3002\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u30d0\u30b1\u30c3\u30c8\u304c\u591a\u3059\u304e\u308b\u5834\u5408\u3001\u6027\u80fd\u3092\u78ba\u4fdd\u3059\u308b\u305f\u3081\u306b\u7279\u5225\u306a\u7b49\u5bb9\u91cf\u30ea\u30b5\u30a4\u30ba\u64cd\u4f5c\u304c\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_hashing/hash_map/","title":"6.1 \u00a0 \u30cf\u30c3\u30b7\u30e5\u8868","text":"<p>\u30cf\u30c3\u30b7\u30e5\u8868\u306f\u30cf\u30c3\u30b7\u30e5\u30de\u30c3\u30d7\u3068\u3082\u547c\u3070\u308c\u3001\u30ad\u30fc\u3068\u5024\u306e\u9593\u306e\u30de\u30c3\u30d4\u30f3\u30b0\u3092\u78ba\u7acb\u3057\u3001\u52b9\u7387\u7684\u306a\u8981\u7d20\u306e\u53d6\u5f97\u3092\u53ef\u80fd\u306b\u3059\u308b\u30c7\u30fc\u30bf\u69cb\u9020\u3067\u3059\u3002\u5177\u4f53\u7684\u306b\u306f\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u306b<code>key</code>\u3092\u5165\u529b\u3059\u308b\u3068\u3001\\(O(1)\\)\u306e\u6642\u9593\u8a08\u7b97\u91cf\u3067\u5bfe\u5fdc\u3059\u308b<code>value</code>\u3092\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002</p> <p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\\(n\\)\u4eba\u306e\u5b66\u751f\u304c\u3044\u3066\u3001\u5404\u5b66\u751f\u306b\u306f\u300c\u540d\u524d\u300d\u3068\u300c\u5b66\u7c4d\u756a\u53f7\u300d\u306e2\u3064\u306e\u30c7\u30fc\u30bf\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u3042\u308b\u3068\u3057\u307e\u3059\u3002\u5b66\u7c4d\u756a\u53f7\u3092\u5165\u529b\u3068\u3057\u3066\u5bfe\u5fdc\u3059\u308b\u540d\u524d\u3092\u8fd4\u3059\u30af\u30a8\u30ea\u6a5f\u80fd\u3092\u5b9f\u88c5\u3057\u305f\u3044\u5834\u5408\u3001\u4e0b\u56f3\u306b\u793a\u3059\u30cf\u30c3\u30b7\u30e5\u8868\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002</p> <p></p> <p> \u56f3 6-1 \u00a0 \u30cf\u30c3\u30b7\u30e5\u8868\u306e\u62bd\u8c61\u7684\u306a\u8868\u73fe </p> <p>\u30cf\u30c3\u30b7\u30e5\u8868\u306b\u52a0\u3048\u3066\u3001\u914d\u5217\u3084\u9023\u7d50\u30ea\u30b9\u30c8\u3082\u30af\u30a8\u30ea\u6a5f\u80fd\u306e\u5b9f\u88c5\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u304c\u3001\u6642\u9593\u8a08\u7b97\u91cf\u304c\u7570\u306a\u308a\u307e\u3059\u3002\u52b9\u7387\u306f\u4ee5\u4e0b\u306e\u8868\u3067\u6bd4\u8f03\u3055\u308c\u3066\u3044\u307e\u3059\uff1a</p> <ul> <li>\u8981\u7d20\u306e\u633f\u5165: \u914d\u5217\uff08\u307e\u305f\u306f\u9023\u7d50\u30ea\u30b9\u30c8\uff09\u306e\u672b\u5c3e\u306b\u8981\u7d20\u3092\u8ffd\u52a0\u3059\u308b\u3060\u3051\u3067\u3059\u3002\u3053\u306e\u64cd\u4f5c\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(1)\\)\u3067\u3059\u3002</li> <li>\u8981\u7d20\u306e\u691c\u7d22: \u914d\u5217\uff08\u307e\u305f\u306f\u9023\u7d50\u30ea\u30b9\u30c8\uff09\u304c\u30bd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u305f\u3081\u3001\u8981\u7d20\u3092\u691c\u7d22\u3059\u308b\u306b\u306f\u3059\u3079\u3066\u306e\u8981\u7d20\u3092\u8d70\u67fb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u64cd\u4f5c\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n)\\)\u3067\u3059\u3002</li> <li>\u8981\u7d20\u306e\u524a\u9664: \u8981\u7d20\u3092\u524a\u9664\u3059\u308b\u306b\u306f\u3001\u307e\u305a\u305d\u306e\u8981\u7d20\u3092\u898b\u3064\u3051\u3066\u304b\u3089\u3001\u914d\u5217\uff08\u307e\u305f\u306f\u9023\u7d50\u30ea\u30b9\u30c8\uff09\u304b\u3089\u524a\u9664\u3057\u307e\u3059\u3002\u3053\u306e\u64cd\u4f5c\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n)\\)\u3067\u3059\u3002</li> </ul> <p> \u8868 6-1 \u00a0 \u4e00\u822c\u7684\u306a\u64cd\u4f5c\u306e\u6642\u9593\u52b9\u7387\u306e\u6bd4\u8f03 </p> \u914d\u5217 \u9023\u7d50\u30ea\u30b9\u30c8 \u30cf\u30c3\u30b7\u30e5\u8868 \u8981\u7d20\u306e\u691c\u7d22 \\(O(n)\\) \\(O(n)\\) \\(O(1)\\) \u8981\u7d20\u306e\u633f\u5165 \\(O(1)\\) \\(O(1)\\) \\(O(1)\\) \u8981\u7d20\u306e\u524a\u9664 \\(O(n)\\) \\(O(n)\\) \\(O(1)\\) <p>\u89b3\u5bdf\u3055\u308c\u308b\u3088\u3046\u306b\u3001**\u30cf\u30c3\u30b7\u30e5\u8868\u306b\u304a\u3051\u308b\u64cd\u4f5c\uff08\u633f\u5165\u3001\u524a\u9664\u3001\u691c\u7d22\u3001\u5909\u66f4\uff09\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(1)\\)**\u3067\u3001\u975e\u5e38\u306b\u52b9\u7387\u7684\u3067\u3059\u3002</p>"},{"location":"chapter_hashing/hash_map/#611","title":"6.1.1 \u00a0 \u30cf\u30c3\u30b7\u30e5\u8868\u306e\u4e00\u822c\u7684\u306a\u64cd\u4f5c","text":"<p>\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u4e00\u822c\u7684\u306a\u64cd\u4f5c\u306b\u306f\u3001\u521d\u671f\u5316\u3001\u30af\u30a8\u30ea\u3001\u30ad\u30fc\u5024\u30da\u30a2\u306e\u8ffd\u52a0\u3001\u30ad\u30fc\u5024\u30da\u30a2\u306e\u524a\u9664\u304c\u3042\u308a\u307e\u3059\u3002\u4ee5\u4e0b\u306f\u30b3\u30fc\u30c9\u4f8b\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlin hash_map.py<pre><code># \u30cf\u30c3\u30b7\u30e5\u8868\u3092\u521d\u671f\u5316\nhmap: dict = {}\n\n# \u8ffd\u52a0\u64cd\u4f5c\n# \u30cf\u30c3\u30b7\u30e5\u8868\u306b\u30ad\u30fc\u5024\u30da\u30a2 (key, value) \u3092\u8ffd\u52a0\nhmap[12836] = \"\u5c0f\u54c8\"\nhmap[15937] = \"\u5c0f\u5570\"\nhmap[16750] = \"\u5c0f\u7b97\"\nhmap[13276] = \"\u5c0f\u6cd5\"\nhmap[10583] = \"\u5c0f\u9e2d\"\n\n# \u30af\u30a8\u30ea\u64cd\u4f5c\n# \u30cf\u30c3\u30b7\u30e5\u8868\u306b\u30ad\u30fc\u3092\u5165\u529b\u3057\u3001\u5024\u3092\u53d6\u5f97\nname: str = hmap[15937]\n\n# \u524a\u9664\u64cd\u4f5c\n# \u30cf\u30c3\u30b7\u30e5\u8868\u304b\u3089\u30ad\u30fc\u5024\u30da\u30a2 (key, value) \u3092\u524a\u9664\nhmap.pop(10583)\n</code></pre> hash_map.cpp<pre><code>/* \u30cf\u30c3\u30b7\u30e5\u8868\u3092\u521d\u671f\u5316 */\nunordered_map&lt;int, string&gt; map;\n\n/* \u8ffd\u52a0\u64cd\u4f5c */\n// \u30cf\u30c3\u30b7\u30e5\u8868\u306b\u30ad\u30fc\u5024\u30da\u30a2 (key, value) \u3092\u8ffd\u52a0\nmap[12836] = \"\u5c0f\u54c8\";\nmap[15937] = \"\u5c0f\u5570\";\nmap[16750] = \"\u5c0f\u7b97\";\nmap[13276] = \"\u5c0f\u6cd5\";\nmap[10583] = \"\u5c0f\u9e2d\";\n\n/* \u30af\u30a8\u30ea\u64cd\u4f5c */\n// \u30cf\u30c3\u30b7\u30e5\u8868\u306b\u30ad\u30fc\u3092\u5165\u529b\u3057\u3001\u5024\u3092\u53d6\u5f97\nstring name = map[15937];\n\n/* \u524a\u9664\u64cd\u4f5c */\n// \u30cf\u30c3\u30b7\u30e5\u8868\u304b\u3089\u30ad\u30fc\u5024\u30da\u30a2 (key, value) \u3092\u524a\u9664\nmap.erase(10583);\n</code></pre> hash_map.java<pre><code>/* \u30cf\u30c3\u30b7\u30e5\u8868\u3092\u521d\u671f\u5316 */\nMap&lt;Integer, String&gt; map = new HashMap&lt;&gt;();\n\n/* \u8ffd\u52a0\u64cd\u4f5c */\n// \u30cf\u30c3\u30b7\u30e5\u8868\u306b\u30ad\u30fc\u5024\u30da\u30a2 (key, value) \u3092\u8ffd\u52a0\nmap.put(12836, \"\u5c0f\u54c8\");\nmap.put(15937, \"\u5c0f\u5570\");\nmap.put(16750, \"\u5c0f\u7b97\");\nmap.put(13276, \"\u5c0f\u6cd5\");\nmap.put(10583, \"\u5c0f\u9e2d\");\n\n/* \u30af\u30a8\u30ea\u64cd\u4f5c */\n// \u30cf\u30c3\u30b7\u30e5\u8868\u306b\u30ad\u30fc\u3092\u5165\u529b\u3057\u3001\u5024\u3092\u53d6\u5f97\nString name = map.get(15937);\n\n/* \u524a\u9664\u64cd\u4f5c */\n// \u30cf\u30c3\u30b7\u30e5\u8868\u304b\u3089\u30ad\u30fc\u5024\u30da\u30a2 (key, value) \u3092\u524a\u9664\nmap.remove(10583);\n</code></pre> hash_map.cs<pre><code>/* \u30cf\u30c3\u30b7\u30e5\u8868\u3092\u521d\u671f\u5316 */\nDictionary&lt;int, string&gt; map = new() {\n /* \u8ffd\u52a0\u64cd\u4f5c */\n // \u30cf\u30c3\u30b7\u30e5\u8868\u306b\u30ad\u30fc\u5024\u30da\u30a2 (key, value) \u3092\u8ffd\u52a0\n { 12836, \"\u5c0f\u54c8\" },\n { 15937, \"\u5c0f\u5570\" },\n { 16750, \"\u5c0f\u7b97\" },\n { 13276, \"\u5c0f\u6cd5\" },\n { 10583, \"\u5c0f\u9e2d\" }\n};\n\n/* \u30af\u30a8\u30ea\u64cd\u4f5c */\n// \u30cf\u30c3\u30b7\u30e5\u8868\u306b\u30ad\u30fc\u3092\u5165\u529b\u3057\u3001\u5024\u3092\u53d6\u5f97\nstring name = map[15937];\n\n/* \u524a\u9664\u64cd\u4f5c */\n// \u30cf\u30c3\u30b7\u30e5\u8868\u304b\u3089\u30ad\u30fc\u5024\u30da\u30a2 (key, value) \u3092\u524a\u9664\nmap.Remove(10583);\n</code></pre> hash_map_test.go<pre><code>/* \u30cf\u30c3\u30b7\u30e5\u8868\u3092\u521d\u671f\u5316 */\nhmap := make(map[int]string)\n\n/* \u8ffd\u52a0\u64cd\u4f5c */\n// \u30cf\u30c3\u30b7\u30e5\u8868\u306b\u30ad\u30fc\u5024\u30da\u30a2 (key, value) \u3092\u8ffd\u52a0\nhmap[12836] = \"\u5c0f\u54c8\"\nhmap[15937] = \"\u5c0f\u5570\"\nhmap[16750] = \"\u5c0f\u7b97\"\nhmap[13276] = \"\u5c0f\u6cd5\"\nhmap[10583] = \"\u5c0f\u9e2d\"\n\n/* \u30af\u30a8\u30ea\u64cd\u4f5c */\n// \u30cf\u30c3\u30b7\u30e5\u8868\u306b\u30ad\u30fc\u3092\u5165\u529b\u3057\u3001\u5024\u3092\u53d6\u5f97\nname := hmap[15937]\n\n/* \u524a\u9664\u64cd\u4f5c */\n// \u30cf\u30c3\u30b7\u30e5\u8868\u304b\u3089\u30ad\u30fc\u5024\u30da\u30a2 (key, value) \u3092\u524a\u9664\ndelete(hmap, 10583)\n</code></pre> hash_map.swift<pre><code>/* \u30cf\u30c3\u30b7\u30e5\u8868\u3092\u521d\u671f\u5316 */\nvar map: [Int: String] = [:]\n\n/* \u8ffd\u52a0\u64cd\u4f5c */\n// \u30cf\u30c3\u30b7\u30e5\u8868\u306b\u30ad\u30fc\u5024\u30da\u30a2 (key, value) \u3092\u8ffd\u52a0\nmap[12836] = \"\u5c0f\u54c8\"\nmap[15937] = \"\u5c0f\u5570\"\nmap[16750] = \"\u5c0f\u7b97\"\nmap[13276] = \"\u5c0f\u6cd5\"\nmap[10583] = \"\u5c0f\u9e2d\"\n\n/* \u30af\u30a8\u30ea\u64cd\u4f5c */\n// \u30cf\u30c3\u30b7\u30e5\u8868\u306b\u30ad\u30fc\u3092\u5165\u529b\u3057\u3001\u5024\u3092\u53d6\u5f97\nlet name = map[15937]!\n\n/* \u524a\u9664\u64cd\u4f5c */\n// \u30cf\u30c3\u30b7\u30e5\u8868\u304b\u3089\u30ad\u30fc\u5024\u30da\u30a2 (key, value) \u3092\u524a\u9664\nmap.removeValue(forKey: 10583)\n</code></pre> hash_map.js<pre><code>/* \u30cf\u30c3\u30b7\u30e5\u8868\u3092\u521d\u671f\u5316 */\nconst map = new Map();\n/* \u8ffd\u52a0\u64cd\u4f5c */\n// \u30cf\u30c3\u30b7\u30e5\u8868\u306b\u30ad\u30fc\u5024\u30da\u30a2 (key, value) \u3092\u8ffd\u52a0\nmap.set(12836, '\u5c0f\u54c8');\nmap.set(15937, '\u5c0f\u5570');\nmap.set(16750, '\u5c0f\u7b97');\nmap.set(13276, '\u5c0f\u6cd5');\nmap.set(10583, '\u5c0f\u9e2d');\n\n/* \u30af\u30a8\u30ea\u64cd\u4f5c */\n// \u30cf\u30c3\u30b7\u30e5\u8868\u306b\u30ad\u30fc\u3092\u5165\u529b\u3057\u3001\u5024\u3092\u53d6\u5f97\nlet name = map.get(15937);\n\n/* \u524a\u9664\u64cd\u4f5c */\n// \u30cf\u30c3\u30b7\u30e5\u8868\u304b\u3089\u30ad\u30fc\u5024\u30da\u30a2 (key, value) \u3092\u524a\u9664\nmap.delete(10583);\n</code></pre> hash_map.ts<pre><code>/* \u30cf\u30c3\u30b7\u30e5\u8868\u3092\u521d\u671f\u5316 */\nconst map = new Map&lt;number, string&gt;();\n/* \u8ffd\u52a0\u64cd\u4f5c */\n// \u30cf\u30c3\u30b7\u30e5\u8868\u306b\u30ad\u30fc\u5024\u30da\u30a2 (key, value) \u3092\u8ffd\u52a0\nmap.set(12836, '\u5c0f\u54c8');\nmap.set(15937, '\u5c0f\u5570');\nmap.set(16750, '\u5c0f\u7b97');\nmap.set(13276, '\u5c0f\u6cd5');\nmap.set(10583, '\u5c0f\u9e2d');\nconsole.info('\\n\u8ffd\u52a0\u5f8c\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u306f\\nKey -&gt; Value');\nconsole.info(map);\n\n/* \u30af\u30a8\u30ea\u64cd\u4f5c */\n// \u30cf\u30c3\u30b7\u30e5\u8868\u306b\u30ad\u30fc\u3092\u5165\u529b\u3057\u3001\u5024\u3092\u53d6\u5f97\nlet name = map.get(15937);\nconsole.info('\\n\u5b66\u7c4d\u756a\u53f715937\u3092\u5165\u529b\u3001\u540d\u524d\u3092\u554f\u3044\u5408\u308f\u305b ' + name);\n\n/* \u524a\u9664\u64cd\u4f5c */\n// \u30cf\u30c3\u30b7\u30e5\u8868\u304b\u3089\u30ad\u30fc\u5024\u30da\u30a2 (key, value) \u3092\u524a\u9664\nmap.delete(10583);\nconsole.info('\\n10583\u3092\u524a\u9664\u5f8c\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u306f\\nKey -&gt; Value');\nconsole.info(map);\n</code></pre> hash_map.dart<pre><code>/* \u30cf\u30c3\u30b7\u30e5\u8868\u3092\u521d\u671f\u5316 */\nMap&lt;int, String&gt; map = {};\n\n/* \u8ffd\u52a0\u64cd\u4f5c */\n// \u30cf\u30c3\u30b7\u30e5\u8868\u306b\u30ad\u30fc\u5024\u30da\u30a2 (key, value) \u3092\u8ffd\u52a0\nmap[12836] = \"\u5c0f\u54c8\";\nmap[15937] = \"\u5c0f\u5570\";\nmap[16750] = \"\u5c0f\u7b97\";\nmap[13276] = \"\u5c0f\u6cd5\";\nmap[10583] = \"\u5c0f\u9e2d\";\n\n/* \u30af\u30a8\u30ea\u64cd\u4f5c */\n// \u30cf\u30c3\u30b7\u30e5\u8868\u306b\u30ad\u30fc\u3092\u5165\u529b\u3057\u3001\u5024\u3092\u53d6\u5f97\nString name = map[15937];\n\n/* \u524a\u9664\u64cd\u4f5c */\n// \u30cf\u30c3\u30b7\u30e5\u8868\u304b\u3089\u30ad\u30fc\u5024\u30da\u30a2 (key, value) \u3092\u524a\u9664\nmap.remove(10583);\n</code></pre> hash_map.rs<pre><code>use std::collections::HashMap;\n\n/* \u30cf\u30c3\u30b7\u30e5\u8868\u3092\u521d\u671f\u5316 */\nlet mut map: HashMap&lt;i32, String&gt; = HashMap::new();\n\n/* \u8ffd\u52a0\u64cd\u4f5c */\n// \u30cf\u30c3\u30b7\u30e5\u8868\u306b\u30ad\u30fc\u5024\u30da\u30a2 (key, value) \u3092\u8ffd\u52a0\nmap.insert(12836, \"\u5c0f\u54c8\".to_string());\nmap.insert(15937, \"\u5c0f\u5570\".to_string());\nmap.insert(16750, \"\u5c0f\u7b97\".to_string());\nmap.insert(13279, \"\u5c0f\u6cd5\".to_string());\nmap.insert(10583, \"\u5c0f\u9e2d\".to_string());\n\n/* \u30af\u30a8\u30ea\u64cd\u4f5c */\n// \u30cf\u30c3\u30b7\u30e5\u8868\u306b\u30ad\u30fc\u3092\u5165\u529b\u3057\u3001\u5024\u3092\u53d6\u5f97\nlet _name: Option&lt;&amp;String&gt; = map.get(&amp;15937);\n\n/* \u524a\u9664\u64cd\u4f5c */\n// \u30cf\u30c3\u30b7\u30e5\u8868\u304b\u3089\u30ad\u30fc\u5024\u30da\u30a2 (key, value) \u3092\u524a\u9664\nlet _removed_value: Option&lt;String&gt; = map.remove(&amp;10583);\n</code></pre> hash_map.c<pre><code>// C\u306b\u306f\u7d44\u307f\u8fbc\u307f\u306e\u30cf\u30c3\u30b7\u30e5\u8868\u304c\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u305b\u3093\n</code></pre> hash_map.kt<pre><code>\n</code></pre> <p>\u30cf\u30c3\u30b7\u30e5\u8868\u3092\u8d70\u67fb\u3059\u308b\u4e00\u822c\u7684\u306a\u65b9\u6cd5\u306f3\u3064\u3042\u308a\u307e\u3059\uff1a\u30ad\u30fc\u5024\u30da\u30a2\u306e\u8d70\u67fb\u3001\u30ad\u30fc\u306e\u8d70\u67fb\u3001\u5024\u306e\u8d70\u67fb\u3002\u4ee5\u4e0b\u306f\u30b3\u30fc\u30c9\u4f8b\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlin hash_map.py<pre><code># \u30cf\u30c3\u30b7\u30e5\u8868\u3092\u8d70\u67fb\n# \u30ad\u30fc\u5024\u30da\u30a2 key-&gt;value \u3092\u8d70\u67fb\nfor key, value in hmap.items():\n print(key, \"-&gt;\", value)\n# \u30ad\u30fc\u306e\u307f\u3092\u8d70\u67fb\nfor key in hmap.keys():\n print(key)\n# \u5024\u306e\u307f\u3092\u8d70\u67fb\nfor value in hmap.values():\n print(value)\n</code></pre> hash_map.cpp<pre><code>/* \u30cf\u30c3\u30b7\u30e5\u8868\u3092\u8d70\u67fb */\n// \u30ad\u30fc\u5024\u30da\u30a2 key-&gt;value \u3092\u8d70\u67fb\nfor (auto kv: map) {\n cout &lt;&lt; kv.first &lt;&lt; \" -&gt; \" &lt;&lt; kv.second &lt;&lt; endl;\n}\n// \u30a4\u30c6\u30ec\u30fc\u30bf\u3092\u4f7f\u7528\u3057\u3066\u30ad\u30fc\u5024\u30da\u30a2 key-&gt;value \u3092\u8d70\u67fb\nfor (auto iter = map.begin(); iter != map.end(); iter++) {\n cout &lt;&lt; iter-&gt;first &lt;&lt; \"-&gt;\" &lt;&lt; iter-&gt;second &lt;&lt; endl;\n}\n</code></pre> hash_map.java<pre><code>/* \u30cf\u30c3\u30b7\u30e5\u8868\u3092\u8d70\u67fb */\n// \u30ad\u30fc\u5024\u30da\u30a2 key-&gt;value \u3092\u8d70\u67fb\nfor (Map.Entry&lt;Integer, String&gt; kv: map.entrySet()) {\n System.out.println(kv.getKey() + \" -&gt; \" + kv.getValue());\n}\n// \u30ad\u30fc\u306e\u307f\u3092\u8d70\u67fb\nfor (int key: map.keySet()) {\n System.out.println(key);\n}\n// \u5024\u306e\u307f\u3092\u8d70\u67fb\nfor (String val: map.values()) {\n System.out.println(val);\n}\n</code></pre> hash_map.cs<pre><code>/* \u30cf\u30c3\u30b7\u30e5\u8868\u3092\u8d70\u67fb */\n// \u30ad\u30fc\u5024\u30da\u30a2 Key-&gt;Value \u3092\u8d70\u67fb\nforeach (var kv in map) {\n Console.WriteLine(kv.Key + \" -&gt; \" + kv.Value);\n}\n// \u30ad\u30fc\u306e\u307f\u3092\u8d70\u67fb\nforeach (int key in map.Keys) {\n Console.WriteLine(key);\n}\n// \u5024\u306e\u307f\u3092\u8d70\u67fb\nforeach (string val in map.Values) {\n Console.WriteLine(val);\n}\n</code></pre> hash_map_test.go<pre><code>/* \u30cf\u30c3\u30b7\u30e5\u8868\u3092\u8d70\u67fb */\n// \u30ad\u30fc\u5024\u30da\u30a2 key-&gt;value \u3092\u8d70\u67fb\nfor key, value := range hmap {\n fmt.Println(key, \"-&gt;\", value)\n}\n// \u30ad\u30fc\u306e\u307f\u3092\u8d70\u67fb\nfor key := range hmap {\n fmt.Println(key)\n}\n// \u5024\u306e\u307f\u3092\u8d70\u67fb\nfor _, value := range hmap {\n fmt.Println(value)\n}\n</code></pre> hash_map.swift<pre><code>/* \u30cf\u30c3\u30b7\u30e5\u8868\u3092\u8d70\u67fb */\n// \u30ad\u30fc\u5024\u30da\u30a2 Key-&gt;Value \u3092\u8d70\u67fb\nfor (key, value) in map {\n print(\"\\(key) -&gt; \\(value)\")\n}\n// \u30ad\u30fc\u306e\u307f\u3092\u8d70\u67fb\nfor key in map.keys {\n print(key)\n}\n// \u5024\u306e\u307f\u3092\u8d70\u67fb\nfor value in map.values {\n print(value)\n}\n</code></pre> hash_map.js<pre><code>/* \u30cf\u30c3\u30b7\u30e5\u8868\u3092\u8d70\u67fb */\nconsole.info('\\n\u30ad\u30fc\u5024\u30da\u30a2 Key-&gt;Value \u3092\u8d70\u67fb');\nfor (const [k, v] of map.entries()) {\n console.info(k + ' -&gt; ' + v);\n}\nconsole.info('\\n\u30ad\u30fc\u306e\u307f\u3092\u8d70\u67fb Key');\nfor (const k of map.keys()) {\n console.info(k);\n}\nconsole.info('\\n\u5024\u306e\u307f\u3092\u8d70\u67fb Value');\nfor (const v of map.values()) {\n console.info(v);\n}\n</code></pre> hash_map.ts<pre><code>/* \u30cf\u30c3\u30b7\u30e5\u8868\u3092\u8d70\u67fb */\nconsole.info('\\n\u30ad\u30fc\u5024\u30da\u30a2 Key-&gt;Value \u3092\u8d70\u67fb');\nfor (const [k, v] of map.entries()) {\n console.info(k + ' -&gt; ' + v);\n}\nconsole.info('\\n\u30ad\u30fc\u306e\u307f\u3092\u8d70\u67fb Key');\nfor (const k of map.keys()) {\n console.info(k);\n}\nconsole.info('\\n\u5024\u306e\u307f\u3092\u8d70\u67fb Value');\nfor (const v of map.values()) {\n console.info(v);\n}\n</code></pre> hash_map.dart<pre><code>/* \u30cf\u30c3\u30b7\u30e5\u8868\u3092\u8d70\u67fb */\n// \u30ad\u30fc\u5024\u30da\u30a2 Key-&gt;Value \u3092\u8d70\u67fb\nmap.forEach((key, value) {\nprint('$key -&gt; $value');\n});\n\n// \u30ad\u30fc\u306e\u307f\u3092\u8d70\u67fb Key\nmap.keys.forEach((key) {\nprint(key);\n});\n\n// \u5024\u306e\u307f\u3092\u8d70\u67fb Value\nmap.values.forEach((value) {\nprint(value);\n});\n</code></pre> hash_map.rs<pre><code>/* \u30cf\u30c3\u30b7\u30e5\u8868\u3092\u8d70\u67fb */\n// \u30ad\u30fc\u5024\u30da\u30a2 Key-&gt;Value \u3092\u8d70\u67fb\nfor (key, value) in &amp;map {\n println!(\"{key} -&gt; {value}\");\n}\n\n// \u30ad\u30fc\u306e\u307f\u3092\u8d70\u67fb Key\nfor key in map.keys() {\n println!(\"{key}\");\n}\n\n// \u5024\u306e\u307f\u3092\u8d70\u67fb Value\nfor value in map.values() {\n println!(\"{value}\");\n}\n</code></pre> hash_map.c<pre><code>// C\u306b\u306f\u7d44\u307f\u8fbc\u307f\u306e\u30cf\u30c3\u30b7\u30e5\u8868\u304c\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u305b\u3093\n</code></pre> hash_map.kt<pre><code>\n</code></pre>"},{"location":"chapter_hashing/hash_map/#612","title":"6.1.2 \u00a0 \u30cf\u30c3\u30b7\u30e5\u8868\u306e\u7c21\u5358\u306a\u5b9f\u88c5","text":"<p>\u307e\u305a\u3001\u6700\u3082\u7c21\u5358\u306a\u30b1\u30fc\u30b9\u3092\u8003\u3048\u3066\u307f\u307e\u3057\u3087\u3046\uff1a\u914d\u5217\u306e\u307f\u3092\u4f7f\u3063\u3066\u30cf\u30c3\u30b7\u30e5\u8868\u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3002\u30cf\u30c3\u30b7\u30e5\u8868\u306b\u304a\u3044\u3066\u3001\u914d\u5217\u306e\u5404\u7a7a\u304d\u30b9\u30ed\u30c3\u30c8\u306f\u30d0\u30b1\u30c3\u30c8\u3068\u547c\u3070\u308c\u3001\u5404\u30d0\u30b1\u30c3\u30c8\u306f\u30ad\u30fc\u5024\u30da\u30a2\u3092\u683c\u7d0d\u3067\u304d\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30af\u30a8\u30ea\u64cd\u4f5c\u306f<code>key</code>\u306b\u5bfe\u5fdc\u3059\u308b\u30d0\u30b1\u30c3\u30c8\u3092\u898b\u3064\u3051\u3001\u305d\u3053\u304b\u3089<code>value</code>\u3092\u53d6\u5f97\u3059\u308b\u3053\u3068\u306b\u306a\u308a\u307e\u3059\u3002</p> <p>\u3067\u306f\u3001<code>key</code>\u306b\u57fa\u3065\u3044\u3066\u5bfe\u5fdc\u3059\u308b\u30d0\u30b1\u30c3\u30c8\u3092\u3069\u306e\u3088\u3046\u306b\u7279\u5b9a\u3059\u308b\u306e\u3067\u3057\u3087\u3046\u304b\uff1f\u3053\u308c\u306f\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306b\u3088\u3063\u3066\u5b9f\u73fe\u3055\u308c\u307e\u3059\u3002\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306e\u5f79\u5272\u306f\u3001\u3088\u308a\u5927\u304d\u306a\u5165\u529b\u7a7a\u9593\u3092\u3088\u308a\u5c0f\u3055\u306a\u51fa\u529b\u7a7a\u9593\u306b\u30de\u30c3\u30d4\u30f3\u30b0\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u30cf\u30c3\u30b7\u30e5\u8868\u3067\u306f\u3001\u5165\u529b\u7a7a\u9593\u306f\u3059\u3079\u3066\u306e\u30ad\u30fc\u3067\u69cb\u6210\u3055\u308c\u3001\u51fa\u529b\u7a7a\u9593\u306f\u3059\u3079\u3066\u306e\u30d0\u30b1\u30c3\u30c8\uff08\u914d\u5217\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\uff09\u3067\u69cb\u6210\u3055\u308c\u307e\u3059\u3002\u3064\u307e\u308a\u3001<code>key</code>\u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u3001\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u5bfe\u5fdc\u3059\u308b\u30ad\u30fc\u5024\u30da\u30a2\u306e\u914d\u5217\u5185\u306e\u683c\u7d0d\u4f4d\u7f6e\u3092\u6c7a\u5b9a\u3067\u304d\u307e\u3059\u3002</p> <p>\u4e0e\u3048\u3089\u308c\u305f<code>key</code>\u306b\u5bfe\u3057\u3066\u3001\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306e\u8a08\u7b97\u306f2\u3064\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u69cb\u6210\u3055\u308c\u307e\u3059\uff1a</p> <ol> <li>\u7279\u5b9a\u306e\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0<code>hash()</code>\u3092\u4f7f\u7528\u3057\u3066\u30cf\u30c3\u30b7\u30e5\u5024\u3092\u8a08\u7b97\u3057\u307e\u3059\u3002</li> <li>\u30cf\u30c3\u30b7\u30e5\u5024\u3092\u30d0\u30b1\u30c3\u30c8\u6570\uff08\u914d\u5217\u9577\uff09<code>capacity</code>\u3067\u5270\u4f59\u3092\u53d6\u308a\u3001\u30ad\u30fc\u306b\u5bfe\u5fdc\u3059\u308b\u914d\u5217<code>index</code>\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002</li> </ol> <pre><code>index = hash(key) % capacity\n</code></pre> <p>\u305d\u306e\u5f8c\u3001<code>index</code>\u3092\u4f7f\u7528\u3057\u3066\u30cf\u30c3\u30b7\u30e5\u8868\u5185\u306e\u5bfe\u5fdc\u3059\u308b\u30d0\u30b1\u30c3\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3001<code>value</code>\u3092\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002</p> <p>\u914d\u5217\u9577\u304c<code>capacity = 100</code>\u3067\u3001\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u304c<code>hash(key) = key</code>\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u3068\u3057\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306f<code>key % 100</code>\u3068\u3057\u3066\u8868\u73fe\u3067\u304d\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u56f3\u306f\u3001<code>key</code>\u3092\u5b66\u7c4d\u756a\u53f7\u3001<code>value</code>\u3092\u540d\u524d\u3068\u3057\u3066\u3001\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306e\u52d5\u4f5c\u539f\u7406\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002</p> <p></p> <p> \u56f3 6-2 \u00a0 \u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306e\u52d5\u4f5c\u539f\u7406 </p> <p>\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u306f\u7c21\u5358\u306a\u30cf\u30c3\u30b7\u30e5\u8868\u3092\u5b9f\u88c5\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u3053\u3067\u306f\u3001<code>key</code>\u3068<code>value</code>\u3092<code>Pair</code>\u30af\u30e9\u30b9\u306b\u30ab\u30d7\u30bb\u30eb\u5316\u3057\u3066\u30ad\u30fc\u5024\u30da\u30a2\u3092\u8868\u73fe\u3057\u3066\u3044\u307e\u3059\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby array_hash_map.py<pre><code>class Pair:\n \"\"\"\u30ad\u30fc\u5024\u30da\u30a2\"\"\"\n\n def __init__(self, key: int, val: str):\n self.key = key\n self.val = val\n\nclass ArrayHashMap:\n \"\"\"\u914d\u5217\u5b9f\u88c5\u306b\u57fa\u3065\u304f\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\"\"\"\n\n def __init__(self):\n \"\"\"\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\"\"\"\n # 100\u500b\u306e\u30d0\u30b1\u30c3\u30c8\u3092\u542b\u3080\u914d\u5217\u3092\u521d\u671f\u5316\n self.buckets: list[Pair | None] = [None] * 100\n\n def hash_func(self, key: int) -&gt; int:\n \"\"\"\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\"\"\"\n index = key % 100\n return index\n\n def get(self, key: int) -&gt; str:\n \"\"\"\u7167\u4f1a\u64cd\u4f5c\"\"\"\n index: int = self.hash_func(key)\n pair: Pair = self.buckets[index]\n if pair is None:\n return None\n return pair.val\n\n def put(self, key: int, val: str):\n \"\"\"\u8ffd\u52a0\u64cd\u4f5c\"\"\"\n pair = Pair(key, val)\n index: int = self.hash_func(key)\n self.buckets[index] = pair\n\n def remove(self, key: int):\n \"\"\"\u524a\u9664\u64cd\u4f5c\"\"\"\n index: int = self.hash_func(key)\n # None \u306b\u8a2d\u5b9a\u3057\u3001\u524a\u9664\u3092\u8868\u73fe\n self.buckets[index] = None\n\n def entry_set(self) -&gt; list[Pair]:\n \"\"\"\u3059\u3079\u3066\u306e\u30ad\u30fc\u5024\u30da\u30a2\u3092\u53d6\u5f97\"\"\"\n result: list[Pair] = []\n for pair in self.buckets:\n if pair is not None:\n result.append(pair)\n return result\n\n def key_set(self) -&gt; list[int]:\n \"\"\"\u3059\u3079\u3066\u306e\u30ad\u30fc\u3092\u53d6\u5f97\"\"\"\n result = []\n for pair in self.buckets:\n if pair is not None:\n result.append(pair.key)\n return result\n\n def value_set(self) -&gt; list[str]:\n \"\"\"\u3059\u3079\u3066\u306e\u5024\u3092\u53d6\u5f97\"\"\"\n result = []\n for pair in self.buckets:\n if pair is not None:\n result.append(pair.val)\n return result\n\n def print(self):\n \"\"\"\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u51fa\u529b\"\"\"\n for pair in self.buckets:\n if pair is not None:\n print(pair.key, \"-&gt;\", pair.val)\n</code></pre> array_hash_map.cpp<pre><code>/* \u30ad\u30fc\u5024\u30da\u30a2 */\nstruct Pair {\n public:\n int key;\n string val;\n Pair(int key, string val) {\n this-&gt;key = key;\n this-&gt;val = val;\n }\n};\n\n/* \u914d\u5217\u5b9f\u88c5\u306b\u57fa\u3065\u304f\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb */\nclass ArrayHashMap {\n private:\n vector&lt;Pair *&gt; buckets;\n\n public:\n ArrayHashMap() {\n // \u914d\u5217\u3092\u521d\u671f\u5316\u3001100\u500b\u306e\u30d0\u30b1\u30c3\u30c8\u3092\u542b\u3080\n buckets = vector&lt;Pair *&gt;(100);\n }\n\n ~ArrayHashMap() {\n // \u30e1\u30e2\u30ea\u3092\u89e3\u653e\n for (const auto &amp;bucket : buckets) {\n delete bucket;\n }\n buckets.clear();\n }\n\n /* \u30cf\u30c3\u30b7\u30e5\u95a2\u6570 */\n int hashFunc(int key) {\n int index = key % 100;\n return index;\n }\n\n /* \u30af\u30a8\u30ea\u64cd\u4f5c */\n string get(int key) {\n int index = hashFunc(key);\n Pair *pair = buckets[index];\n if (pair == nullptr)\n return \"\";\n return pair-&gt;val;\n }\n\n /* \u8ffd\u52a0\u64cd\u4f5c */\n void put(int key, string val) {\n Pair *pair = new Pair(key, val);\n int index = hashFunc(key);\n buckets[index] = pair;\n }\n\n /* \u524a\u9664\u64cd\u4f5c */\n void remove(int key) {\n int index = hashFunc(key);\n // \u30e1\u30e2\u30ea\u3092\u89e3\u653e\u3057\u3066nullptr\u306b\u8a2d\u5b9a\n delete buckets[index];\n buckets[index] = nullptr;\n }\n\n /* \u3059\u3079\u3066\u306e\u30ad\u30fc\u5024\u30da\u30a2\u3092\u53d6\u5f97 */\n vector&lt;Pair *&gt; pairSet() {\n vector&lt;Pair *&gt; pairSet;\n for (Pair *pair : buckets) {\n if (pair != nullptr) {\n pairSet.push_back(pair);\n }\n }\n return pairSet;\n }\n\n /* \u3059\u3079\u3066\u306e\u30ad\u30fc\u3092\u53d6\u5f97 */\n vector&lt;int&gt; keySet() {\n vector&lt;int&gt; keySet;\n for (Pair *pair : buckets) {\n if (pair != nullptr) {\n keySet.push_back(pair-&gt;key);\n }\n }\n return keySet;\n }\n\n /* \u3059\u3079\u3066\u306e\u5024\u3092\u53d6\u5f97 */\n vector&lt;string&gt; valueSet() {\n vector&lt;string&gt; valueSet;\n for (Pair *pair : buckets) {\n if (pair != nullptr) {\n valueSet.push_back(pair-&gt;val);\n }\n }\n return valueSet;\n }\n\n /* \u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u5370\u5237 */\n void print() {\n for (Pair *kv : pairSet()) {\n cout &lt;&lt; kv-&gt;key &lt;&lt; \" -&gt; \" &lt;&lt; kv-&gt;val &lt;&lt; endl;\n }\n }\n};\n</code></pre> array_hash_map.java<pre><code>/* \u30ad\u30fc\u5024\u30da\u30a2 */\nclass Pair {\n public int key;\n public String val;\n\n public Pair(int key, String val) {\n this.key = key;\n this.val = val;\n }\n}\n\n/* \u914d\u5217\u5b9f\u88c5\u306b\u57fa\u3065\u304f\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb */\nclass ArrayHashMap {\n private List&lt;Pair&gt; buckets;\n\n public ArrayHashMap() {\n // 100\u500b\u306e\u30d0\u30b1\u30c3\u30c8\u3092\u542b\u3080\u914d\u5217\u3092\u521d\u671f\u5316\n buckets = new ArrayList&lt;&gt;();\n for (int i = 0; i &lt; 100; i++) {\n buckets.add(null);\n }\n }\n\n /* \u30cf\u30c3\u30b7\u30e5\u95a2\u6570 */\n private int hashFunc(int key) {\n int index = key % 100;\n return index;\n }\n\n /* \u30af\u30a8\u30ea\u64cd\u4f5c */\n public String get(int key) {\n int index = hashFunc(key);\n Pair pair = buckets.get(index);\n if (pair == null)\n return null;\n return pair.val;\n }\n\n /* \u8ffd\u52a0\u64cd\u4f5c */\n public void put(int key, String val) {\n Pair pair = new Pair(key, val);\n int index = hashFunc(key);\n buckets.set(index, pair);\n }\n\n /* \u524a\u9664\u64cd\u4f5c */\n public void remove(int key) {\n int index = hashFunc(key);\n // null\u306b\u8a2d\u5b9a\u3057\u3066\u524a\u9664\u3092\u793a\u3059\n buckets.set(index, null);\n }\n\n /* \u3059\u3079\u3066\u306e\u30ad\u30fc\u5024\u30da\u30a2\u3092\u53d6\u5f97 */\n public List&lt;Pair&gt; pairSet() {\n List&lt;Pair&gt; pairSet = new ArrayList&lt;&gt;();\n for (Pair pair : buckets) {\n if (pair != null)\n pairSet.add(pair);\n }\n return pairSet;\n }\n\n /* \u3059\u3079\u3066\u306e\u30ad\u30fc\u3092\u53d6\u5f97 */\n public List&lt;Integer&gt; keySet() {\n List&lt;Integer&gt; keySet = new ArrayList&lt;&gt;();\n for (Pair pair : buckets) {\n if (pair != null)\n keySet.add(pair.key);\n }\n return keySet;\n }\n\n /* \u3059\u3079\u3066\u306e\u5024\u3092\u53d6\u5f97 */\n public List&lt;String&gt; valueSet() {\n List&lt;String&gt; valueSet = new ArrayList&lt;&gt;();\n for (Pair pair : buckets) {\n if (pair != null)\n valueSet.add(pair.val);\n }\n return valueSet;\n }\n\n /* \u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u5370\u5237 */\n public void print() {\n for (Pair kv : pairSet()) {\n System.out.println(kv.key + \" -&gt; \" + kv.val);\n }\n }\n}\n</code></pre> array_hash_map.cs<pre><code>[class]{Pair}-[func]{}\n\n[class]{ArrayHashMap}-[func]{}\n</code></pre> array_hash_map.go<pre><code>[class]{pair}-[func]{}\n\n[class]{arrayHashMap}-[func]{}\n</code></pre> array_hash_map.swift<pre><code>[file]{utils/pair.swift}-[class]{Pair}-[func]{}\n\n[class]{ArrayHashMap}-[func]{}\n</code></pre> array_hash_map.js<pre><code>[class]{Pair}-[func]{}\n\n[class]{ArrayHashMap}-[func]{}\n</code></pre> array_hash_map.ts<pre><code>[class]{Pair}-[func]{}\n\n[class]{ArrayHashMap}-[func]{}\n</code></pre> array_hash_map.dart<pre><code>[class]{Pair}-[func]{}\n\n[class]{ArrayHashMap}-[func]{}\n</code></pre> array_hash_map.rs<pre><code>[class]{Pair}-[func]{}\n\n[class]{ArrayHashMap}-[func]{}\n</code></pre> array_hash_map.c<pre><code>[class]{Pair}-[func]{}\n\n[class]{ArrayHashMap}-[func]{}\n</code></pre> array_hash_map.kt<pre><code>[class]{Pair}-[func]{}\n\n[class]{ArrayHashMap}-[func]{}\n</code></pre> array_hash_map.rb<pre><code>[class]{Pair}-[func]{}\n\n[class]{ArrayHashMap}-[func]{}\n</code></pre>"},{"location":"chapter_hashing/hash_map/#613","title":"6.1.3 \u00a0 \u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u3068\u30ea\u30b5\u30a4\u30ba","text":"<p>\u672c\u8cea\u7684\u306b\u3001\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306e\u5f79\u5272\u306f\u3001\u3059\u3079\u3066\u306e\u30ad\u30fc\u306e\u5165\u529b\u7a7a\u9593\u5168\u4f53\u3092\u3001\u3059\u3079\u3066\u306e\u914d\u5217\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306e\u51fa\u529b\u7a7a\u9593\u306b\u30de\u30c3\u30d4\u30f3\u30b0\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u3057\u304b\u3057\u3001\u5165\u529b\u7a7a\u9593\u306f\u51fa\u529b\u7a7a\u9593\u3088\u308a\u3082\u306f\u308b\u304b\u306b\u5927\u304d\u3044\u3053\u3068\u304c\u3088\u304f\u3042\u308a\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u7406\u8ad6\u7684\u306b\u306f\u3001\u300c\u8907\u6570\u306e\u5165\u529b\u304c\u540c\u3058\u51fa\u529b\u306b\u5bfe\u5fdc\u3059\u308b\u300d\u30b1\u30fc\u30b9\u304c\u5e38\u306b\u5b58\u5728\u3057\u307e\u3059\u3002</p> <p>\u4e0a\u8a18\u306e\u4f8b\u3067\u306f\u3001\u4e0e\u3048\u3089\u308c\u305f\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u3067\u3001\u5165\u529b<code>key</code>\u306e\u4e0b\u4e8c\u6841\u304c\u540c\u3058\u5834\u5408\u3001\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306f\u540c\u3058\u51fa\u529b\u3092\u751f\u6210\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u5b66\u7c4d\u756a\u53f712836\u306820336\u306e2\u4eba\u306e\u5b66\u751f\u3092\u30af\u30a8\u30ea\u3059\u308b\u3068\u3001\u4ee5\u4e0b\u306e\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3059\uff1a</p> <pre><code>12836 % 100 = 36\n20336 % 100 = 36\n</code></pre> <p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u4e21\u65b9\u306e\u5b66\u7c4d\u756a\u53f7\u304c\u540c\u3058\u540d\u524d\u3092\u6307\u3057\u3066\u304a\u308a\u3001\u3053\u308c\u306f\u660e\u3089\u304b\u306b\u9593\u9055\u3063\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u8907\u6570\u306e\u5165\u529b\u304c\u540c\u3058\u51fa\u529b\u306b\u5bfe\u5fdc\u3059\u308b\u72b6\u6cc1\u3092\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u3068\u547c\u3073\u307e\u3059\u3002</p> <p></p> <p> \u56f3 6-3 \u00a0 \u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u306e\u4f8b </p> <p>\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u5bb9\u91cf\\(n\\)\u304c\u5897\u52a0\u3059\u308b\u306b\u3064\u308c\u3066\u3001\u8907\u6570\u306e\u30ad\u30fc\u304c\u540c\u3058\u30d0\u30b1\u30c3\u30c8\u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u308b\u78ba\u7387\u304c\u6e1b\u5c11\u3057\u3001\u885d\u7a81\u304c\u5c11\u306a\u304f\u306a\u308b\u3053\u3068\u306f\u7406\u89e3\u3057\u3084\u3059\u3044\u3067\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u3092\u30ea\u30b5\u30a4\u30ba\u3059\u308b\u3053\u3068\u3067\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u3092\u6e1b\u3089\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</p> <p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u30ea\u30b5\u30a4\u30ba\u524d\u306f\u3001\u30ad\u30fc\u5024\u30da\u30a2<code>(136, A)</code>\u3068<code>(236, D)</code>\u304c\u885d\u7a81\u3057\u3066\u3044\u307e\u3057\u305f\u3002\u3057\u304b\u3057\u3001\u30ea\u30b5\u30a4\u30ba\u5f8c\u306f\u885d\u7a81\u304c\u89e3\u6c7a\u3055\u308c\u3066\u3044\u307e\u3059\u3002</p> <p></p> <p> \u56f3 6-4 \u00a0 \u30cf\u30c3\u30b7\u30e5\u8868\u306e\u30ea\u30b5\u30a4\u30ba </p> <p>\u914d\u5217\u306e\u62e1\u5f35\u3068\u540c\u69d8\u306b\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u30ea\u30b5\u30a4\u30ba\u306b\u306f\u3059\u3079\u3066\u306e\u30ad\u30fc\u5024\u30da\u30a2\u3092\u5143\u306e\u30cf\u30c3\u30b7\u30e5\u8868\u304b\u3089\u65b0\u3057\u3044\u3082\u306e\u306b\u79fb\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u6642\u9593\u304c\u304b\u304b\u308a\u307e\u3059\u3002\u3055\u3089\u306b\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u306e<code>capacity</code>\u304c\u5909\u66f4\u3055\u308c\u308b\u305f\u3081\u3001\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u3059\u3079\u3066\u306e\u30ad\u30fc\u5024\u30da\u30a2\u306e\u683c\u7d0d\u4f4d\u7f6e\u3092\u518d\u8a08\u7b97\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u30ea\u30b5\u30a4\u30ba\u30d7\u30ed\u30bb\u30b9\u306e\u8a08\u7b97\u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9\u304c\u3055\u3089\u306b\u5897\u52a0\u3057\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306f\u983b\u7e41\u306a\u30ea\u30b5\u30a4\u30ba\u3092\u9632\u3050\u305f\u3081\u306b\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u306b\u5341\u5206\u5927\u304d\u306a\u5bb9\u91cf\u3092\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u304c\u3088\u304f\u3042\u308a\u307e\u3059\u3002</p> <p>\u8ca0\u8377\u7387\u306f\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u91cd\u8981\u306a\u6982\u5ff5\u3067\u3059\u3002\u30cf\u30c3\u30b7\u30e5\u8868\u5185\u306e\u8981\u7d20\u6570\u3068\u30d0\u30b1\u30c3\u30c8\u6570\u306e\u6bd4\u7387\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u3002\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u306e\u6df1\u523b\u5ea6\u3092\u6e2c\u5b9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u3001\u3057\u3070\u3057\u3070\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u30ea\u30b5\u30a4\u30ba\u306e\u30c8\u30ea\u30ac\u30fc\u3068\u3057\u3066\u3082\u6a5f\u80fd\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001Java\u3067\u306f\u3001\u8ca0\u8377\u7387\u304c\\(0.75\\)\u3092\u8d85\u3048\u308b\u3068\u3001\u30b7\u30b9\u30c6\u30e0\u306f\u30cf\u30c3\u30b7\u30e5\u8868\u3092\u5143\u306e\u30b5\u30a4\u30ba\u306e2\u500d\u306b\u30ea\u30b5\u30a4\u30ba\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_hashing/summary/","title":"6.4 \u00a0 \u307e\u3068\u3081","text":""},{"location":"chapter_hashing/summary/#1","title":"1. \u00a0 \u91cd\u8981\u306a\u30dd\u30a4\u30f3\u30c8","text":"<ul> <li>\u5165\u529b<code>key</code>\u304c\u4e0e\u3048\u3089\u308c\u308b\u3068\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u306f\\(O(1)\\)\u306e\u6642\u9593\u3067\u5bfe\u5fdc\u3059\u308b<code>value</code>\u3092\u53d6\u5f97\u3067\u304d\u3001\u975e\u5e38\u306b\u52b9\u7387\u7684\u3067\u3059\u3002</li> <li>\u4e00\u822c\u7684\u306a\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u64cd\u4f5c\u306b\u306f\u3001\u30af\u30a8\u30ea\u3001\u30ad\u30fc\u5024\u30da\u30a2\u306e\u8ffd\u52a0\u3001\u30ad\u30fc\u5024\u30da\u30a2\u306e\u524a\u9664\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u8d70\u67fb\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306f<code>key</code>\u3092\u914d\u5217\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u30de\u30c3\u30d4\u30f3\u30b0\u3057\u3001\u5bfe\u5fdc\u3059\u308b\u30d0\u30b1\u30c3\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066<code>value</code>\u3092\u53d6\u5f97\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002</li> <li>2\u3064\u306e\u7570\u306a\u308b\u30ad\u30fc\u304c\u30cf\u30c3\u30b7\u30e5\u5316\u5f8c\u306b\u540c\u3058\u914d\u5217\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u306a\u308b\u5834\u5408\u304c\u3042\u308a\u3001\u8aa4\u3063\u305f\u30af\u30a8\u30ea\u7d50\u679c\u306b\u3064\u306a\u304c\u308a\u307e\u3059\u3002\u3053\u306e\u73fe\u8c61\u306f\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u3068\u3057\u3066\u77e5\u3089\u308c\u3066\u3044\u307e\u3059\u3002</li> <li>\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u5bb9\u91cf\u304c\u5927\u304d\u3044\u307b\u3069\u3001\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u306e\u78ba\u7387\u306f\u4f4e\u304f\u306a\u308a\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u30ea\u30b5\u30a4\u30ba\u306f\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u3092\u7de9\u548c\u3067\u304d\u307e\u3059\u3002\u914d\u5217\u306e\u30ea\u30b5\u30a4\u30ba\u3068\u540c\u69d8\u306b\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u30ea\u30b5\u30a4\u30ba\u306f\u30b3\u30b9\u30c8\u304c\u9ad8\u3044\u3067\u3059\u3002</li> <li>\u8981\u7d20\u6570\u3092\u30d0\u30b1\u30c3\u30c8\u6570\u3067\u5272\u3063\u305f\u8ca0\u8377\u7387\u306f\u3001\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u306e\u6df1\u523b\u5ea6\u3092\u53cd\u6620\u3057\u3001\u3057\u3070\u3057\u3070\u30cf\u30c3\u30b7\u30e5\u8868\u30ea\u30b5\u30a4\u30ba\u306e\u30c8\u30ea\u30ac\u30fc\u6761\u4ef6\u3068\u3057\u3066\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002</li> <li>\u9023\u9396\u6cd5\u306f\u5404\u8981\u7d20\u3092\u9023\u7d50\u30ea\u30b9\u30c8\u306b\u5909\u63db\u3057\u3001\u885d\u7a81\u3059\u308b\u3059\u3079\u3066\u306e\u8981\u7d20\u3092\u540c\u3058\u30ea\u30b9\u30c8\u306b\u683c\u7d0d\u3059\u308b\u3053\u3068\u3067\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u306b\u5bfe\u51e6\u3057\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u904e\u5ea6\u306b\u9577\u3044\u30ea\u30b9\u30c8\u306f\u30af\u30a8\u30ea\u52b9\u7387\u3092\u4f4e\u4e0b\u3055\u305b\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u3001\u30ea\u30b9\u30c8\u3092\u8d64\u9ed2\u6728\u306b\u5909\u63db\u3059\u308b\u3053\u3068\u3067\u6539\u5584\u3067\u304d\u307e\u3059\u3002</li> <li>\u30aa\u30fc\u30d7\u30f3\u30a2\u30c9\u30ec\u30b9\u6cd5\u306f\u8907\u6570\u56de\u306e\u30d7\u30ed\u30fc\u30d6\u3092\u901a\u3057\u3066\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u3092\u51e6\u7406\u3057\u307e\u3059\u3002\u7dda\u5f62\u30d7\u30ed\u30fc\u30d6\u306f\u56fa\u5b9a\u30b9\u30c6\u30c3\u30d7\u30b5\u30a4\u30ba\u3092\u4f7f\u7528\u3057\u307e\u3059\u304c\u3001\u8981\u7d20\u3092\u524a\u9664\u3067\u304d\u305a\u3001\u30af\u30e9\u30b9\u30bf\u30ea\u30f3\u30b0\u3092\u8d77\u3053\u3057\u3084\u3059\u3044\u50be\u5411\u304c\u3042\u308a\u307e\u3059\u3002\u591a\u91cd\u30cf\u30c3\u30b7\u30e5\u306f\u30d7\u30ed\u30fc\u30d6\u306b\u8907\u6570\u306e\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u3092\u4f7f\u7528\u3057\u3001\u7dda\u5f62\u30d7\u30ed\u30fc\u30d6\u3068\u6bd4\u8f03\u3057\u3066\u30af\u30e9\u30b9\u30bf\u30ea\u30f3\u30b0\u3092\u6e1b\u3089\u3057\u307e\u3059\u304c\u3001\u8a08\u7b97\u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9\u304c\u5897\u52a0\u3057\u307e\u3059\u3002</li> <li>\u7570\u306a\u308b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306f\u3055\u307e\u3056\u307e\u306a\u30cf\u30c3\u30b7\u30e5\u8868\u5b9f\u88c5\u3092\u63a1\u7528\u3057\u3066\u3044\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001Java\u306e<code>HashMap</code>\u306f\u9023\u9396\u6cd5\u3092\u4f7f\u7528\u3057\u3001Python\u306e<code>dict</code>\u306f\u30aa\u30fc\u30d7\u30f3\u30a2\u30c9\u30ec\u30b9\u6cd5\u3092\u63a1\u7528\u3057\u3066\u3044\u307e\u3059\u3002</li> <li>\u30cf\u30c3\u30b7\u30e5\u8868\u3067\u306f\u3001\u6c7a\u5b9a\u6027\u3001\u9ad8\u52b9\u7387\u3001\u5747\u7b49\u5206\u6563\u3092\u6301\u3064\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u304c\u671b\u307e\u308c\u307e\u3059\u3002\u6697\u53f7\u5316\u3067\u306f\u3001\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u885d\u7a81\u8010\u6027\u3068\u96ea\u5d29\u52b9\u679c\u3082\u6301\u3064\u3079\u304d\u3067\u3059\u3002</li> <li>\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u901a\u5e38\u3001\u30cf\u30c3\u30b7\u30e5\u5024\u306e\u5747\u7b49\u5206\u6563\u3092\u4fdd\u8a3c\u3057\u3001\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u3092\u6e1b\u3089\u3059\u305f\u3081\u306b\u3001\u5927\u304d\u306a\u7d20\u6570\u3092\u5270\u4f59\u3068\u3057\u3066\u4f7f\u7528\u3057\u307e\u3059\u3002</li> <li>\u4e00\u822c\u7684\u306a\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306b\u306f\u3001MD5\u3001SHA-1\u3001SHA-2\u3001SHA-3\u304c\u3042\u308a\u307e\u3059\u3002MD5\u306f\u30d5\u30a1\u30a4\u30eb\u6574\u5408\u6027\u30c1\u30a7\u30c3\u30af\u306b\u3088\u304f\u4f7f\u7528\u3055\u308c\u3001SHA-2\u306f\u5b89\u5168\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3068\u30d7\u30ed\u30c8\u30b3\u30eb\u3067\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002</li> <li>\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306f\u901a\u5e38\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u30d0\u30b1\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8a08\u7b97\u3059\u308b\u305f\u3081\u306b\u3001\u30c7\u30fc\u30bf\u578b\u306b\u5bfe\u3057\u3066\u7d44\u307f\u8fbc\u307f\u306e\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u4e00\u822c\u7684\u306b\u3001\u4e0d\u5909\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u307f\u304c\u30cf\u30c3\u30b7\u30e5\u53ef\u80fd\u3067\u3059\u3002</li> </ul>"},{"location":"chapter_hashing/summary/#2-q-a","title":"2. \u00a0 Q &amp; A","text":"<p>Q: \u30cf\u30c3\u30b7\u30e5\u8868\u306e\u6642\u9593\u8a08\u7b97\u91cf\u304c\\(O(n)\\)\u306b\u60aa\u5316\u3059\u308b\u306e\u306f\u3044\u3064\u3067\u3059\u304b\uff1f</p> <p>\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f\u3001\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u304c\u6df1\u523b\u306a\u5834\u5408\u306b\\(O(n)\\)\u306b\u60aa\u5316\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u304c\u9069\u5207\u306b\u8a2d\u8a08\u3055\u308c\u3001\u5bb9\u91cf\u304c\u9069\u5207\u306b\u8a2d\u5b9a\u3055\u308c\u3001\u885d\u7a81\u304c\u5747\u7b49\u306b\u5206\u6563\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(1)\\)\u3067\u3059\u3002\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306e\u7d44\u307f\u8fbc\u307f\u30cf\u30c3\u30b7\u30e5\u8868\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u901a\u5e38\u306f\u6642\u9593\u8a08\u7b97\u91cf\u3092\\(O(1)\\)\u3068\u8003\u3048\u307e\u3059\u3002</p> <p>Q: \u306a\u305c\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\\(f(x) = x\\)\u3092\u4f7f\u7528\u3057\u306a\u3044\u306e\u3067\u3059\u304b\uff1f\u3053\u308c\u306a\u3089\u885d\u7a81\u3092\u6392\u9664\u3067\u304d\u307e\u3059\u3002</p> <p>\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\\(f(x) = x\\)\u3067\u306f\u3001\u5404\u8981\u7d20\u304c\u4e00\u610f\u306e\u30d0\u30b1\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u5bfe\u5fdc\u3057\u3001\u3053\u308c\u306f\u914d\u5217\u3068\u540c\u7b49\u3067\u3059\u3002\u3057\u304b\u3057\u3001\u5165\u529b\u7a7a\u9593\u306f\u901a\u5e38\u51fa\u529b\u7a7a\u9593\uff08\u914d\u5217\u9577\uff09\u3088\u308a\u3082\u306f\u308b\u304b\u306b\u5927\u304d\u3044\u305f\u3081\u3001\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306e\u6700\u5f8c\u306e\u30b9\u30c6\u30c3\u30d7\u306f\u914d\u5217\u9577\u306e\u5270\u4f59\u3092\u53d6\u308b\u3053\u3068\u304c\u3088\u304f\u3042\u308a\u307e\u3059\u3002\u8a00\u3044\u63db\u3048\u308b\u3068\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u76ee\u6a19\u306f\u3001\\(O(1)\\)\u306e\u30af\u30a8\u30ea\u52b9\u7387\u3092\u63d0\u4f9b\u3057\u306a\u304c\u3089\u3001\u3088\u308a\u5927\u304d\u306a\u72b6\u614b\u7a7a\u9593\u3092\u3088\u308a\u5c0f\u3055\u306a\u3082\u306e\u306b\u30de\u30c3\u30d4\u30f3\u30b0\u3059\u308b\u3053\u3068\u3067\u3059\u3002</p> <p>Q: \u30cf\u30c3\u30b7\u30e5\u8868\u304c\u3053\u308c\u3089\u306e\u69cb\u9020\u3092\u4f7f\u3063\u3066\u5b9f\u88c5\u3055\u308c\u3066\u3044\u308b\u306b\u3082\u304b\u304b\u308f\u3089\u305a\u3001\u306a\u305c\u914d\u5217\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u3001\u4e8c\u5206\u6728\u3088\u308a\u3082\u52b9\u7387\u7684\u306b\u306a\u308c\u308b\u306e\u3067\u3059\u304b\uff1f</p> <p>\u307e\u305a\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u306f\u6642\u9593\u52b9\u7387\u304c\u9ad8\u3044\u3067\u3059\u304c\u3001\u7a7a\u9593\u52b9\u7387\u306f\u4f4e\u3044\u3067\u3059\u3002\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u30e1\u30e2\u30ea\u306e\u5927\u90e8\u5206\u306f\u672a\u4f7f\u7528\u306e\u307e\u307e\u3067\u3059\u3002</p> <p>\u6b21\u306b\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u306f\u7279\u5b9a\u306e\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u3067\u306e\u307f\u6642\u9593\u52b9\u7387\u304c\u9ad8\u3044\u3067\u3059\u3002\u914d\u5217\u3084\u9023\u7d50\u30ea\u30b9\u30c8\u3092\u4f7f\u7528\u3057\u3066\u540c\u3058\u6642\u9593\u8a08\u7b97\u91cf\u3067\u6a5f\u80fd\u3092\u5b9f\u88c5\u3067\u304d\u308b\u5834\u5408\u3001\u901a\u5e38\u306f\u30cf\u30c3\u30b7\u30e5\u8868\u3092\u4f7f\u7528\u3059\u308b\u3088\u308a\u3082\u9ad8\u901f\u3067\u3059\u3002\u3053\u308c\u306f\u3001\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306e\u8a08\u7b97\u304c\u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9\u3092\u767a\u751f\u3055\u305b\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306e\u5b9a\u6570\u56e0\u5b50\u304c\u5927\u304d\u304f\u306a\u308b\u305f\u3081\u3067\u3059\u3002</p> <p>\u6700\u5f8c\u306b\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f\u60aa\u5316\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u9023\u9396\u6cd5\u3067\u306f\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u3084\u8d64\u9ed2\u6728\u3067\u691c\u7d22\u64cd\u4f5c\u3092\u5b9f\u884c\u3057\u3001\u3053\u308c\u306f\u4f9d\u7136\u3068\u3057\u3066\\(O(n)\\)\u6642\u9593\u306b\u60aa\u5316\u3059\u308b\u30ea\u30b9\u30af\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>Q: \u591a\u91cd\u30cf\u30c3\u30b7\u30e5\u306b\u3082\u8981\u7d20\u3092\u76f4\u63a5\u524a\u9664\u3067\u304d\u306a\u3044\u3068\u3044\u3046\u6b20\u9665\u304c\u3042\u308a\u307e\u3059\u304b\uff1f\u524a\u9664\u3068\u3057\u3066\u30de\u30fc\u30af\u3055\u308c\u305f\u7a7a\u9593\u306f\u518d\u5229\u7528\u3067\u304d\u307e\u3059\u304b\uff1f</p> <p>\u591a\u91cd\u30cf\u30c3\u30b7\u30e5\u306f\u30aa\u30fc\u30d7\u30f3\u30a2\u30c9\u30ec\u30b9\u6cd5\u306e\u4e00\u5f62\u614b\u3067\u3042\u308a\u3001\u3059\u3079\u3066\u306e\u30aa\u30fc\u30d7\u30f3\u30a2\u30c9\u30ec\u30b9\u6cd5\u306b\u306f\u8981\u7d20\u3092\u76f4\u63a5\u524a\u9664\u3067\u304d\u306a\u3044\u3068\u3044\u3046\u6b20\u70b9\u304c\u3042\u308a\u307e\u3059\u3002\u8981\u7d20\u3092\u524a\u9664\u6e08\u307f\u3068\u3057\u3066\u30de\u30fc\u30af\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30de\u30fc\u30af\u3055\u308c\u305f\u7a7a\u9593\u306f\u518d\u5229\u7528\u3067\u304d\u307e\u3059\u3002\u30cf\u30c3\u30b7\u30e5\u8868\u306b\u65b0\u3057\u3044\u8981\u7d20\u3092\u633f\u5165\u3059\u308b\u969b\u3001\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u304c\u524a\u9664\u6e08\u307f\u3068\u3057\u3066\u30de\u30fc\u30af\u3055\u308c\u305f\u4f4d\u7f6e\u3092\u6307\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u305d\u306e\u4f4d\u7f6e\u306f\u65b0\u3057\u3044\u8981\u7d20\u306b\u3088\u3063\u3066\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u30d7\u30ed\u30fc\u30d6\u30b7\u30fc\u30b1\u30f3\u30b9\u3092\u7dad\u6301\u3057\u306a\u304c\u3089\u3001\u7a7a\u9593\u306e\u52b9\u7387\u7684\u306a\u4f7f\u7528\u304c\u4fdd\u8a3c\u3055\u308c\u307e\u3059\u3002</p> <p>Q: \u306a\u305c\u7dda\u5f62\u30d7\u30ed\u30fc\u30d6\u306e\u691c\u7d22\u30d7\u30ed\u30bb\u30b9\u4e2d\u306b\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u304c\u767a\u751f\u3059\u308b\u306e\u3067\u3059\u304b\uff1f</p> <p>\u691c\u7d22\u30d7\u30ed\u30bb\u30b9\u4e2d\u3001\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306f\u5bfe\u5fdc\u3059\u308b\u30d0\u30b1\u30c3\u30c8\u3068\u30ad\u30fc\u5024\u30da\u30a2\u3092\u6307\u3057\u307e\u3059\u3002<code>key</code>\u304c\u4e00\u81f4\u3057\u306a\u3044\u5834\u5408\u3001\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u3092\u793a\u3057\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u7dda\u5f62\u30d7\u30ed\u30fc\u30d6\u306f\u6b63\u3057\u3044\u30ad\u30fc\u5024\u30da\u30a2\u304c\u898b\u3064\u304b\u308b\u304b\u691c\u7d22\u304c\u5931\u6557\u3059\u308b\u307e\u3067\u3001\u4e8b\u524d\u306b\u6c7a\u3081\u3089\u308c\u305f\u30b9\u30c6\u30c3\u30d7\u30b5\u30a4\u30ba\u3067\u4e0b\u65b9\u5411\u306b\u691c\u7d22\u3057\u307e\u3059\u3002</p> <p>Q: \u306a\u305c\u30cf\u30c3\u30b7\u30e5\u8868\u306e\u30ea\u30b5\u30a4\u30ba\u304c\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u3092\u7de9\u548c\u3067\u304d\u308b\u306e\u3067\u3059\u304b\uff1f</p> <p>\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306e\u6700\u5f8c\u306e\u30b9\u30c6\u30c3\u30d7\u306f\u3001\u51fa\u529b\u3092\u914d\u5217\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u7bc4\u56f2\u5185\u306b\u4fdd\u3064\u305f\u3081\u306b\u3001\u914d\u5217\u9577\\(n\\)\u306e\u5270\u4f59\u3092\u53d6\u308b\u3053\u3068\u304c\u3088\u304f\u3042\u308a\u307e\u3059\u3002\u30ea\u30b5\u30a4\u30ba\u6642\u3001\u914d\u5217\u9577\\(n\\)\u304c\u5909\u5316\u3057\u3001\u30ad\u30fc\u306b\u5bfe\u5fdc\u3059\u308b\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3082\u5909\u5316\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u4ee5\u524d\u306b\u540c\u3058\u30d0\u30b1\u30c3\u30c8\u306b\u30de\u30c3\u30d4\u30f3\u30b0\u3055\u308c\u3066\u3044\u305f\u30ad\u30fc\u304c\u3001\u30ea\u30b5\u30a4\u30ba\u5f8c\u306b\u8907\u6570\u306e\u30d0\u30b1\u30c3\u30c8\u306b\u5206\u6563\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u3001\u305d\u308c\u306b\u3088\u3063\u3066\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u304c\u7de9\u548c\u3055\u308c\u307e\u3059\u3002</p>"},{"location":"chapter_heap/","title":"\u7b2c 8 \u7ae0 \u00a0 \u30d2\u30fc\u30d7","text":"<p>Abstract</p> <p>\u30d2\u30fc\u30d7\u306f\u5c71\u3068\u305d\u306e\u967a\u3057\u3044\u5cf0\u306e\u3088\u3046\u306b\u3001\u5c64\u3092\u306a\u3057\u3066\u8d77\u4f0f\u3057\u3001\u305d\u308c\u305e\u308c\u304c\u72ec\u7279\u306e\u5f62\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002</p> <p>\u5404\u5c71\u306e\u9802\u306f\u6563\u3089\u3070\u3063\u305f\u9ad8\u3055\u3067\u4e0a\u4e0b\u3057\u307e\u3059\u304c\u3001\u6700\u3082\u9ad8\u3044\u3082\u306e\u304c\u5e38\u306b\u6700\u521d\u306b\u6ce8\u76ee\u3092\u96c6\u3081\u307e\u3059\u3002</p>"},{"location":"chapter_heap/#_1","title":"\u7ae0\u306e\u5185\u5bb9","text":"<ul> <li>8.1 \u00a0 \u30d2\u30fc\u30d7</li> <li>8.2 \u00a0 \u30d2\u30fc\u30d7\u69cb\u7bc9\u64cd\u4f5c</li> <li>8.3 \u00a0 Top-k \u554f\u984c</li> <li>8.4 \u00a0 \u307e\u3068\u3081</li> </ul>"},{"location":"chapter_heap/build_heap/","title":"8.2 \u00a0 \u30d2\u30fc\u30d7\u69cb\u7bc9\u64cd\u4f5c","text":"<p>\u5834\u5408\u306b\u3088\u3063\u3066\u306f\u3001\u30ea\u30b9\u30c8\u306e\u3059\u3079\u3066\u306e\u8981\u7d20\u3092\u4f7f\u7528\u3057\u3066\u30d2\u30fc\u30d7\u3092\u69cb\u7bc9\u3057\u305f\u3044\u3053\u3068\u304c\u3042\u308a\u3001\u3053\u306e\u30d7\u30ed\u30bb\u30b9\u306f\u300c\u30d2\u30fc\u30d7\u69cb\u7bc9\u64cd\u4f5c\u300d\u3068\u3057\u3066\u77e5\u3089\u308c\u3066\u3044\u307e\u3059\u3002</p>"},{"location":"chapter_heap/build_heap/#821","title":"8.2.1 \u00a0 \u30d2\u30fc\u30d7\u633f\u5165\u64cd\u4f5c\u306b\u3088\u308b\u5b9f\u88c5","text":"<p>\u307e\u305a\u3001\u7a7a\u306e\u30d2\u30fc\u30d7\u3092\u4f5c\u6210\u3057\u3001\u6b21\u306b\u30ea\u30b9\u30c8\u3092\u53cd\u5fa9\u51e6\u7406\u3057\u3066\u3001\u5404\u8981\u7d20\u306b\u5bfe\u3057\u3066\u9806\u756a\u306b\u300c\u30d2\u30fc\u30d7\u633f\u5165\u64cd\u4f5c\u300d\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u8981\u7d20\u3092\u30d2\u30fc\u30d7\u306e\u672b\u5c3e\u306b\u8ffd\u52a0\u3057\u3001\u6b21\u306b\u4e0b\u304b\u3089\u4e0a\u306b\u300c\u30d2\u30fc\u30d7\u5316\u300d\u3059\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002</p> <p>\u30d2\u30fc\u30d7\u306b\u8981\u7d20\u304c\u8ffd\u52a0\u3055\u308c\u308b\u305f\u3073\u306b\u3001\u30d2\u30fc\u30d7\u306e\u9577\u3055\u306f1\u3064\u305a\u3064\u5897\u52a0\u3057\u307e\u3059\u3002\u30ce\u30fc\u30c9\u306f\u4e8c\u5206\u6728\u306b\u4e0a\u304b\u3089\u4e0b\u306b\u8ffd\u52a0\u3055\u308c\u308b\u305f\u3081\u3001\u30d2\u30fc\u30d7\u306f\u300c\u4e0a\u304b\u3089\u4e0b\u306b\u300d\u69cb\u7bc9\u3055\u308c\u307e\u3059\u3002</p> <p>\u8981\u7d20\u6570\u3092\\(n\\)\u3068\u3059\u308b\u3068\u3001\u5404\u8981\u7d20\u306e\u633f\u5165\u64cd\u4f5c\u306f\\(O(\\log{n})\\)\u6642\u9593\u304b\u304b\u308b\u305f\u3081\u3001\u3053\u306e\u30d2\u30fc\u30d7\u69cb\u7bc9\u65b9\u6cd5\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n \\log n)\\)\u3067\u3059\u3002</p>"},{"location":"chapter_heap/build_heap/#822","title":"8.2.2 \u00a0 \u8d70\u67fb\u306b\u3088\u308b\u30d2\u30fc\u30d7\u5316\u306e\u5b9f\u88c5","text":"<p>\u5b9f\u969b\u306b\u306f\u30012\u3064\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u3088\u308a\u52b9\u7387\u7684\u306a\u30d2\u30fc\u30d7\u69cb\u7bc9\u65b9\u6cd5\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002</p> <ol> <li>\u30ea\u30b9\u30c8\u306e\u3059\u3079\u3066\u306e\u8981\u7d20\u3092\u305d\u306e\u307e\u307e\u30d2\u30fc\u30d7\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002\u3053\u306e\u6642\u70b9\u3067\u306f\u3001\u30d2\u30fc\u30d7\u306e\u6027\u8cea\u306f\u307e\u3060\u6e80\u305f\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002</li> <li>\u30d2\u30fc\u30d7\u3092\u9006\u9806\uff08\u30ec\u30d9\u30eb\u9806\u8d70\u67fb\u306e\u9006\uff09\u3067\u8d70\u67fb\u3057\u3001\u5404\u975e\u8449\u30ce\u30fc\u30c9\u306b\u5bfe\u3057\u3066\u300c\u4e0a\u304b\u3089\u4e0b\u306e\u30d2\u30fc\u30d7\u5316\u300d\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002</li> </ol> <p>\u30ce\u30fc\u30c9\u3092\u30d2\u30fc\u30d7\u5316\u3057\u305f\u5f8c\u3001\u305d\u306e\u30ce\u30fc\u30c9\u3092\u6839\u3068\u3059\u308b\u90e8\u5206\u6728\u306f\u6709\u52b9\u306a\u90e8\u5206\u30d2\u30fc\u30d7\u306b\u306a\u308a\u307e\u3059\u3002\u8d70\u67fb\u304c\u9006\u9806\u3067\u3042\u308b\u305f\u3081\u3001\u30d2\u30fc\u30d7\u306f\u300c\u4e0b\u304b\u3089\u4e0a\u306b\u300d\u69cb\u7bc9\u3055\u308c\u307e\u3059\u3002</p> <p>\u9006\u8d70\u67fb\u3092\u9078\u629e\u3059\u308b\u7406\u7531\u306f\u3001\u73fe\u5728\u306e\u30ce\u30fc\u30c9\u306e\u4e0b\u306e\u90e8\u5206\u6728\u304c\u3059\u3067\u306b\u6709\u52b9\u306a\u90e8\u5206\u30d2\u30fc\u30d7\u3067\u3042\u308b\u3053\u3068\u3092\u4fdd\u8a3c\u3057\u3001\u73fe\u5728\u306e\u30ce\u30fc\u30c9\u306e\u30d2\u30fc\u30d7\u5316\u3092\u52b9\u679c\u7684\u306b\u3059\u308b\u305f\u3081\u3067\u3059\u3002</p> <p>\u8a00\u53ca\u3059\u308b\u4fa1\u5024\u304c\u3042\u308b\u306e\u306f\u3001**\u8449\u30ce\u30fc\u30c9\u306f\u5b50\u3092\u6301\u305f\u306a\u3044\u305f\u3081\u3001\u81ea\u7136\u306b\u6709\u52b9\u306a\u90e8\u5206\u30d2\u30fc\u30d7\u3092\u5f62\u6210\u3057\u3001\u30d2\u30fc\u30d7\u5316\u3059\u308b\u5fc5\u8981\u304c\u306a\u3044**\u3068\u3044\u3046\u3053\u3068\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u6700\u5f8c\u306e\u975e\u8449\u30ce\u30fc\u30c9\u306f\u6700\u5f8c\u306e\u30ce\u30fc\u30c9\u306e\u89aa\u3067\u3059\u3002\u305d\u3053\u304b\u3089\u958b\u59cb\u3057\u3066\u9006\u9806\u306b\u8d70\u67fb\u3057\u3066\u30d2\u30fc\u30d7\u5316\u3092\u5b9f\u884c\u3057\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby my_heap.py<pre><code>def __init__(self, nums: list[int]):\n \"\"\"\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3001\u5165\u529b\u30ea\u30b9\u30c8\u306b\u57fa\u3065\u3044\u3066\u30d2\u30fc\u30d7\u3092\u69cb\u7bc9\"\"\"\n # \u3059\u3079\u3066\u306e\u30ea\u30b9\u30c8\u8981\u7d20\u3092\u30d2\u30fc\u30d7\u306b\u8ffd\u52a0\n self.max_heap = nums\n # \u8449\u4ee5\u5916\u306e\u3059\u3079\u3066\u306e\u30ce\u30fc\u30c9\u3092\u30d2\u30fc\u30d7\u5316\n for i in range(self.parent(self.size() - 1), -1, -1):\n self.sift_down(i)\n</code></pre> my_heap.cpp<pre><code>/* \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3001\u5165\u529b\u30ea\u30b9\u30c8\u306b\u57fa\u3065\u3044\u3066\u30d2\u30fc\u30d7\u3092\u69cb\u7bc9 */\nMaxHeap(vector&lt;int&gt; nums) {\n // \u3059\u3079\u3066\u306e\u30ea\u30b9\u30c8\u8981\u7d20\u3092\u30d2\u30fc\u30d7\u306b\u8ffd\u52a0\n maxHeap = nums;\n // \u8449\u4ee5\u5916\u306e\u3059\u3079\u3066\u306e\u30ce\u30fc\u30c9\u3092\u30d2\u30fc\u30d7\u5316\n for (int i = parent(size() - 1); i &gt;= 0; i--) {\n siftDown(i);\n }\n}\n</code></pre> my_heap.java<pre><code>/* \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3001\u5165\u529b\u30ea\u30b9\u30c8\u306b\u57fa\u3065\u3044\u3066\u30d2\u30fc\u30d7\u3092\u69cb\u7bc9 */\nMaxHeap(List&lt;Integer&gt; nums) {\n // \u3059\u3079\u3066\u306e\u30ea\u30b9\u30c8\u8981\u7d20\u3092\u30d2\u30fc\u30d7\u306b\u8ffd\u52a0\n maxHeap = new ArrayList&lt;&gt;(nums);\n // \u8449\u3092\u9664\u304f\u3059\u3079\u3066\u306e\u30ce\u30fc\u30c9\u3092\u30d2\u30fc\u30d7\u5316\n for (int i = parent(size() - 1); i &gt;= 0; i--) {\n siftDown(i);\n }\n}\n</code></pre> my_heap.cs<pre><code>[class]{MaxHeap}-[func]{MaxHeap}\n</code></pre> my_heap.go<pre><code>[class]{maxHeap}-[func]{newMaxHeap}\n</code></pre> my_heap.swift<pre><code>[class]{MaxHeap}-[func]{init}\n</code></pre> my_heap.js<pre><code>[class]{MaxHeap}-[func]{constructor}\n</code></pre> my_heap.ts<pre><code>[class]{MaxHeap}-[func]{constructor}\n</code></pre> my_heap.dart<pre><code>[class]{MaxHeap}-[func]{MaxHeap}\n</code></pre> my_heap.rs<pre><code>[class]{MaxHeap}-[func]{new}\n</code></pre> my_heap.c<pre><code>[class]{MaxHeap}-[func]{newMaxHeap}\n</code></pre> my_heap.kt<pre><code>[class]{MaxHeap}-[func]{}\n</code></pre> my_heap.rb<pre><code>[class]{MaxHeap}-[func]{initialize}\n</code></pre>"},{"location":"chapter_heap/build_heap/#823","title":"8.2.3 \u00a0 \u8a08\u7b97\u91cf\u5206\u6790","text":"<p>\u6b21\u306b\u3001\u3053\u306e\u7b2c2\u306e\u30d2\u30fc\u30d7\u69cb\u7bc9\u65b9\u6cd5\u306e\u6642\u9593\u8a08\u7b97\u91cf\u3092\u8a08\u7b97\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002</p> <ul> <li>\u5b8c\u5099\u4e8c\u5206\u6728\u306e\u30ce\u30fc\u30c9\u6570\u3092\\(n\\)\u3068\u4eee\u5b9a\u3059\u308b\u3068\u3001\u8449\u30ce\u30fc\u30c9\u306e\u6570\u306f\\((n + 1) / 2\\)\u3067\u3059\u3002\u3053\u3053\u3067\\(/\\) \u306f\u6574\u6570\u9664\u7b97\u3067\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30d2\u30fc\u30d7\u5316\u304c\u5fc5\u8981\u306a\u30ce\u30fc\u30c9\u306e\u6570\u306f\\((n - 1) / 2\\)\u3067\u3059\u3002</li> <li>\u300c\u4e0a\u304b\u3089\u4e0b\u306e\u30d2\u30fc\u30d7\u5316\u300d\u306e\u30d7\u30ed\u30bb\u30b9\u3067\u306f\u3001\u5404\u30ce\u30fc\u30c9\u306f\u6700\u5927\u3067\u8449\u30ce\u30fc\u30c9\u307e\u3067\u30d2\u30fc\u30d7\u5316\u3055\u308c\u308b\u305f\u3081\u3001\u6700\u5927\u53cd\u5fa9\u56de\u6570\u306f\u4e8c\u5206\u6728\u306e\u9ad8\u3055\\(\\log n\\)\u3067\u3059\u3002</li> </ul> <p>\u3053\u306e2\u3064\u3092\u639b\u3051\u5408\u308f\u305b\u308b\u3068\u3001\u30d2\u30fc\u30d7\u69cb\u7bc9\u30d7\u30ed\u30bb\u30b9\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n \\log n)\\)\u3068\u306a\u308a\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u3053\u306e\u63a8\u5b9a\u306f\u6b63\u78ba\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u4e8c\u5206\u6728\u306e\u4e0b\u4f4d\u30ec\u30d9\u30eb\u306b\u306f\u4e0a\u4f4d\u3088\u308a\u3082\u306f\u308b\u304b\u306b\u591a\u304f\u306e\u30ce\u30fc\u30c9\u304c\u3042\u308b\u3068\u3044\u3046\u6027\u8cea\u3092\u8003\u616e\u3057\u3066\u3044\u306a\u3044\u304b\u3089\u3067\u3059\u3002</p> <p>\u3088\u308a\u6b63\u78ba\u306a\u8a08\u7b97\u3092\u884c\u3044\u307e\u3057\u3087\u3046\u3002\u8a08\u7b97\u3092\u7c21\u7d20\u5316\u3059\u308b\u305f\u3081\u3001\\(n\\)\u500b\u306e\u30ce\u30fc\u30c9\u3068\u9ad8\u3055\\(h\\)\u3092\u6301\u3064\u300c\u5b8c\u5168\u4e8c\u5206\u6728\u300d\u3092\u4eee\u5b9a\u3057\u307e\u3059\u3002\u3053\u306e\u4eee\u5b9a\u306f\u7d50\u679c\u306e\u6b63\u78ba\u6027\u306b\u5f71\u97ff\u3057\u307e\u305b\u3093\u3002</p> <p></p> <p> \u56f3 8-5 \u00a0 \u5b8c\u5168\u4e8c\u5206\u6728\u306e\u5404\u30ec\u30d9\u30eb\u306e\u30ce\u30fc\u30c9\u6570 </p> <p>\u4e0a\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u30ce\u30fc\u30c9\u304c\u300c\u4e0a\u304b\u3089\u4e0b\u306b\u30d2\u30fc\u30d7\u5316\u3055\u308c\u308b\u300d\u6700\u5927\u53cd\u5fa9\u56de\u6570\u306f\u3001\u305d\u306e\u30ce\u30fc\u30c9\u304b\u3089\u8449\u30ce\u30fc\u30c9\u307e\u3067\u306e\u8ddd\u96e2\u3068\u7b49\u3057\u304f\u3001\u3053\u308c\u306f\u6b63\u78ba\u306b\u300c\u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u300d\u3067\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u5404\u30ec\u30d9\u30eb\u3067\u300c\u30ce\u30fc\u30c9\u6570\u00d7\u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u300d\u3092\u5408\u8a08\u3057\u3066\u3001**\u3059\u3079\u3066\u306e\u30ce\u30fc\u30c9\u306e\u7dcf\u30d2\u30fc\u30d7\u5316\u53cd\u5fa9\u56de\u6570\u3092\u5f97\u308b**\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</p> \\[ T(h) = 2^0h + 2^1(h-1) + 2^2(h-2) + \\dots + 2^{(h-1)}\\times1 \\] <p>\u4e0a\u8a18\u306e\u65b9\u7a0b\u5f0f\u3092\u7c21\u7d20\u5316\u3059\u308b\u305f\u3081\u306b\u3001\u9ad8\u6821\u306e\u6570\u5217\u306e\u77e5\u8b58\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u307e\u305a\\(T(h)\\)\u306b\\(2\\)\u3092\u639b\u3051\u3066\u4ee5\u4e0b\u3092\u5f97\u307e\u3059\uff1a</p> \\[ \\begin{aligned} T(h) &amp; = 2^0h + 2^1(h-1) + 2^2(h-2) + \\dots + 2^{h-1}\\times1 \\newline 2T(h) &amp; = 2^1h + 2^2(h-1) + 2^3(h-2) + \\dots + 2^h\\times1 \\newline \\end{aligned} \\] <p>\u5909\u4f4d\u6cd5\u3092\u4f7f\u7528\u3057\u3066\\(2T(h)\\)\u304b\u3089\\(T(h)\\)\u3092\u6e1b\u7b97\u3059\u308b\u3068\u3001\u4ee5\u4e0b\u3092\u5f97\u307e\u3059\uff1a</p> \\[ 2T(h) - T(h) = T(h) = -2^0h + 2^1 + 2^2 + \\dots + 2^{h-1} + 2^h \\] <p>\u65b9\u7a0b\u5f0f\u3092\u89b3\u5bdf\u3059\u308b\u3068\u3001\\(T(h)\\)\u306f\u7b49\u6bd4\u6570\u5217\u3067\u3042\u308a\u3001\u548c\u306e\u516c\u5f0f\u3092\u4f7f\u7528\u3057\u3066\u76f4\u63a5\u8a08\u7b97\u3067\u304d\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f\u4ee5\u4e0b\u306b\u306a\u308a\u307e\u3059\uff1a</p> \\[ \\begin{aligned} T(h) &amp; = 2 \\frac{1 - 2^h}{1 - 2} - h \\newline &amp; = 2^{h+1} - h - 2 \\newline &amp; = O(2^h) \\end{aligned} \\] <p>\u3055\u3089\u306b\u3001\u9ad8\u3055\\(h\\)\u306e\u5b8c\u5168\u4e8c\u5206\u6728\u306f\\(n = 2^{h+1} - 1\\)\u500b\u306e\u30ce\u30fc\u30c9\u3092\u6301\u3064\u305f\u3081\u3001\u8a08\u7b97\u91cf\u306f\\(O(2^h) = O(n)\\)\u3067\u3059\u3002\u3053\u306e\u8a08\u7b97\u306f\u3001**\u30ea\u30b9\u30c8\u3092\u5165\u529b\u3057\u3066\u30d2\u30fc\u30d7\u3092\u69cb\u7bc9\u3059\u308b\u6642\u9593\u8a08\u7b97\u91cf\u304c\\(O(n)\\)\u3067\u3042\u308a\u3001\u975e\u5e38\u306b\u52b9\u7387\u7684\u3067\u3042\u308b**\u3053\u3068\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002</p>"},{"location":"chapter_heap/heap/","title":"8.1 \u00a0 \u30d2\u30fc\u30d7","text":"<p>\u30d2\u30fc\u30d7\u306f\u7279\u5b9a\u306e\u6761\u4ef6\u3092\u6e80\u305f\u3059\u5b8c\u5099\u4e8c\u5206\u6728\u3067\u3001\u4e3b\u306b\u6b21\u306e2\u3064\u306e\u30bf\u30a4\u30d7\u306b\u5206\u985e\u3055\u308c\u307e\u3059\uff08\u4e0b\u56f3\u53c2\u7167\uff09\u3002</p> <ul> <li>\u6700\u5c0f\u30d2\u30fc\u30d7\uff1a\u4efb\u610f\u306e\u30ce\u30fc\u30c9\u306e\u5024 \\(\\leq\\) \u305d\u306e\u5b50\u30ce\u30fc\u30c9\u306e\u5024\u3002</li> <li>\u6700\u5927\u30d2\u30fc\u30d7\uff1a\u4efb\u610f\u306e\u30ce\u30fc\u30c9\u306e\u5024 \\(\\geq\\) \u305d\u306e\u5b50\u30ce\u30fc\u30c9\u306e\u5024\u3002</li> </ul> <p></p> <p> \u56f3 8-1 \u00a0 \u6700\u5c0f\u30d2\u30fc\u30d7\u3068\u6700\u5927\u30d2\u30fc\u30d7 </p> <p>\u5b8c\u5099\u4e8c\u5206\u6728\u306e\u7279\u5225\u306a\u30b1\u30fc\u30b9\u3068\u3057\u3066\u3001\u30d2\u30fc\u30d7\u306b\u306f\u4ee5\u4e0b\u306e\u7279\u6027\u304c\u3042\u308a\u307e\u3059\uff1a</p> <ul> <li>\u6700\u4e0b\u4f4d\u5c64\u306e\u30ce\u30fc\u30c9\u306f\u5de6\u304b\u3089\u53f3\u306b\u57cb\u3081\u3089\u308c\u3001\u4ed6\u306e\u5c64\u306e\u30ce\u30fc\u30c9\u306f\u5b8c\u5168\u306b\u57cb\u3081\u3089\u308c\u3066\u3044\u307e\u3059\u3002</li> <li>\u4e8c\u5206\u6728\u306e\u6839\u30ce\u30fc\u30c9\u3092\u30d2\u30fc\u30d7\u306e\u300c\u5148\u982d\u300d\u3068\u547c\u3073\u3001\u6700\u3082\u53f3\u4e0b\u306e\u30ce\u30fc\u30c9\u3092\u30d2\u30fc\u30d7\u306e\u300c\u672b\u5c3e\u300d\u3068\u547c\u3073\u307e\u3059\u3002</li> <li>\u6700\u5927\u30d2\u30fc\u30d7\uff08\u6700\u5c0f\u30d2\u30fc\u30d7\uff09\u306e\u5834\u5408\u3001\u5148\u982d\u8981\u7d20\uff08\u6839\uff09\u306e\u5024\u306f\u3059\u3079\u3066\u306e\u8981\u7d20\u306e\u4e2d\u3067\u6700\u5927\uff08\u6700\u5c0f\uff09\u3067\u3059\u3002</li> </ul>"},{"location":"chapter_heap/heap/#811","title":"8.1.1 \u00a0 \u30d2\u30fc\u30d7\u306e\u4e00\u822c\u7684\u306a\u64cd\u4f5c","text":"<p>\u591a\u304f\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u304c\u512a\u5148\u5ea6\u30ad\u30e5\u30fc\u3092\u63d0\u4f9b\u3057\u3066\u3044\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u306f\u512a\u5148\u5ea6\u4ed8\u304d\u30bd\u30fc\u30c8\u3092\u6301\u3064\u30ad\u30e5\u30fc\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u308b\u62bd\u8c61\u30c7\u30fc\u30bf\u69cb\u9020\u3067\u3059\u3002</p> <p>\u5b9f\u969b\u306b\u306f\u3001\u30d2\u30fc\u30d7\u306f\u512a\u5148\u5ea6\u30ad\u30e5\u30fc\u3092\u5b9f\u88c5\u3059\u308b\u305f\u3081\u306b\u3088\u304f\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u6700\u5927\u30d2\u30fc\u30d7\u306f\u3001\u8981\u7d20\u304c\u964d\u9806\u3067\u30c7\u30ad\u30e5\u30fc\u3055\u308c\u308b\u512a\u5148\u5ea6\u30ad\u30e5\u30fc\u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002\u4f7f\u7528\u306e\u89b3\u70b9\u304b\u3089\u3001\u300c\u512a\u5148\u5ea6\u30ad\u30e5\u30fc\u300d\u3068\u300c\u30d2\u30fc\u30d7\u300d\u3092\u540c\u7b49\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u8003\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u3053\u306e\u672c\u3067\u306f\u4e21\u8005\u3092\u7279\u5225\u306b\u533a\u5225\u305b\u305a\u3001\u7d71\u4e00\u3057\u3066\u300c\u30d2\u30fc\u30d7\u300d\u3068\u547c\u3073\u307e\u3059\u3002</p> <p>\u30d2\u30fc\u30d7\u306e\u4e00\u822c\u7684\u306a\u64cd\u4f5c\u3092\u4e0b\u8868\u306b\u793a\u3057\u307e\u3059\u3002\u30e1\u30bd\u30c3\u30c9\u540d\u306f\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306b\u3088\u3063\u3066\u7570\u306a\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002</p> <p> \u8868 8-1 \u00a0 \u30d2\u30fc\u30d7\u64cd\u4f5c\u306e\u52b9\u7387 </p> \u30e1\u30bd\u30c3\u30c9\u540d \u8aac\u660e \u6642\u9593\u8a08\u7b97\u91cf <code>push()</code> \u30d2\u30fc\u30d7\u306b\u8981\u7d20\u3092\u8ffd\u52a0 \\(O(\\log n)\\) <code>pop()</code> \u30d2\u30fc\u30d7\u304b\u3089\u5148\u982d\u8981\u7d20\u3092\u524a\u9664 \\(O(\\log n)\\) <code>peek()</code> \u5148\u982d\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\uff08\u6700\u5927/\u6700\u5c0f\u30d2\u30fc\u30d7\u306e\u5834\u5408\u3001\u6700\u5927/\u6700\u5c0f\u5024\uff09 \\(O(1)\\) <code>size()</code> \u30d2\u30fc\u30d7\u5185\u306e\u8981\u7d20\u6570\u3092\u53d6\u5f97 \\(O(1)\\) <code>isEmpty()</code> \u30d2\u30fc\u30d7\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u30c1\u30a7\u30c3\u30af \\(O(1)\\) <p>\u5b9f\u969b\u306b\u306f\u3001\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306b\u3088\u3063\u3066\u63d0\u4f9b\u3055\u308c\u308b\u30d2\u30fc\u30d7\u30af\u30e9\u30b9\uff08\u307e\u305f\u306f\u512a\u5148\u5ea6\u30ad\u30e5\u30fc\u30af\u30e9\u30b9\uff09\u3092\u76f4\u63a5\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002</p> <p>\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u300c\u6607\u9806\u300d\u3068\u300c\u964d\u9806\u300d\u304c\u3042\u308b\u3088\u3046\u306b\u3001<code>flag</code>\u3092\u8a2d\u5b9a\u3059\u308b\u304b<code>Comparator</code>\u3092\u5909\u66f4\u3059\u308b\u3053\u3068\u3067\u300c\u6700\u5c0f\u30d2\u30fc\u30d7\u300d\u3068\u300c\u6700\u5927\u30d2\u30fc\u30d7\u300d\u3092\u5207\u308a\u66ff\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby heap.py<pre><code># \u6700\u5c0f\u30d2\u30fc\u30d7\u306e\u521d\u671f\u5316\nmin_heap, flag = [], 1\n# \u6700\u5927\u30d2\u30fc\u30d7\u306e\u521d\u671f\u5316\nmax_heap, flag = [], -1\n\n# Python\u306eheapq\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u6700\u5c0f\u30d2\u30fc\u30d7\u3092\u5b9f\u88c5\n# \u8981\u7d20\u3092\u30d2\u30fc\u30d7\u306b\u30d7\u30c3\u30b7\u30e5\u3059\u308b\u524d\u306b\u8ca0\u306e\u5024\u306b\u3059\u308b\u3053\u3068\u3067\u3001\u9806\u5e8f\u3092\u53cd\u8ee2\u3055\u305b\u3001\u6700\u5927\u30d2\u30fc\u30d7\u3092\u5b9f\u88c5\n# \u3053\u306e\u4f8b\u3067\u306f\u3001flag = 1\u306f\u6700\u5c0f\u30d2\u30fc\u30d7\u306b\u5bfe\u5fdc\u3057\u3001flag = -1\u306f\u6700\u5927\u30d2\u30fc\u30d7\u306b\u5bfe\u5fdc\n\n# \u30d2\u30fc\u30d7\u306b\u8981\u7d20\u3092\u30d7\u30c3\u30b7\u30e5\nheapq.heappush(max_heap, flag * 1)\nheapq.heappush(max_heap, flag * 3)\nheapq.heappush(max_heap, flag * 2)\nheapq.heappush(max_heap, flag * 5)\nheapq.heappush(max_heap, flag * 4)\n\n# \u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3092\u53d6\u5f97\npeek: int = flag * max_heap[0] # 5\n\n# \u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3092\u30dd\u30c3\u30d7\n# \u30dd\u30c3\u30d7\u3055\u308c\u305f\u8981\u7d20\u306f\u964d\u9806\u306e\u30b7\u30fc\u30b1\u30f3\u30b9\u3092\u5f62\u6210\nval = flag * heapq.heappop(max_heap) # 5\nval = flag * heapq.heappop(max_heap) # 4\nval = flag * heapq.heappop(max_heap) # 3\nval = flag * heapq.heappop(max_heap) # 2\nval = flag * heapq.heappop(max_heap) # 1\n\n# \u30d2\u30fc\u30d7\u306e\u30b5\u30a4\u30ba\u3092\u53d6\u5f97\nsize: int = len(max_heap)\n\n# \u30d2\u30fc\u30d7\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u30c1\u30a7\u30c3\u30af\nis_empty: bool = not max_heap\n\n# \u30ea\u30b9\u30c8\u304b\u3089\u30d2\u30fc\u30d7\u3092\u4f5c\u6210\nmin_heap: list[int] = [1, 3, 2, 5, 4]\nheapq.heapify(min_heap)\n</code></pre> heap.cpp<pre><code>/* \u30d2\u30fc\u30d7\u306e\u521d\u671f\u5316 */\n// \u6700\u5c0f\u30d2\u30fc\u30d7\u306e\u521d\u671f\u5316\npriority_queue&lt;int, vector&lt;int&gt;, greater&lt;int&gt;&gt; minHeap;\n// \u6700\u5927\u30d2\u30fc\u30d7\u306e\u521d\u671f\u5316\npriority_queue&lt;int, vector&lt;int&gt;, less&lt;int&gt;&gt; maxHeap;\n\n/* \u30d2\u30fc\u30d7\u306b\u8981\u7d20\u3092\u30d7\u30c3\u30b7\u30e5 */\nmaxHeap.push(1);\nmaxHeap.push(3);\nmaxHeap.push(2);\nmaxHeap.push(5);\nmaxHeap.push(4);\n\n/* \u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3092\u53d6\u5f97 */\nint peek = maxHeap.top(); // 5\n\n/* \u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3092\u30dd\u30c3\u30d7 */\n// \u30dd\u30c3\u30d7\u3055\u308c\u305f\u8981\u7d20\u306f\u964d\u9806\u306e\u30b7\u30fc\u30b1\u30f3\u30b9\u3092\u5f62\u6210\nmaxHeap.pop(); // 5\nmaxHeap.pop(); // 4\nmaxHeap.pop(); // 3\nmaxHeap.pop(); // 2\nmaxHeap.pop(); // 1\n\n/* \u30d2\u30fc\u30d7\u306e\u30b5\u30a4\u30ba\u3092\u53d6\u5f97 */\nint size = maxHeap.size();\n\n/* \u30d2\u30fc\u30d7\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u30c1\u30a7\u30c3\u30af */\nbool isEmpty = maxHeap.empty();\n\n/* \u30ea\u30b9\u30c8\u304b\u3089\u30d2\u30fc\u30d7\u3092\u4f5c\u6210 */\nvector&lt;int&gt; input{1, 3, 2, 5, 4};\npriority_queue&lt;int, vector&lt;int&gt;, greater&lt;int&gt;&gt; minHeap(input.begin(), input.end());\n</code></pre> heap.java<pre><code>/* \u30d2\u30fc\u30d7\u306e\u521d\u671f\u5316 */\n// \u6700\u5c0f\u30d2\u30fc\u30d7\u306e\u521d\u671f\u5316\nQueue&lt;Integer&gt; minHeap = new PriorityQueue&lt;&gt;();\n// \u6700\u5927\u30d2\u30fc\u30d7\u306e\u521d\u671f\u5316\uff08\u30e9\u30e0\u30c0\u5f0f\u3067Comparator\u3092\u5909\u66f4\u3059\u308b\u3060\u3051\uff09\nQueue&lt;Integer&gt; maxHeap = new PriorityQueue&lt;&gt;((a, b) -&gt; b - a);\n\n/* \u30d2\u30fc\u30d7\u306b\u8981\u7d20\u3092\u30d7\u30c3\u30b7\u30e5 */\nmaxHeap.offer(1);\nmaxHeap.offer(3);\nmaxHeap.offer(2);\nmaxHeap.offer(5);\nmaxHeap.offer(4);\n\n/* \u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3092\u53d6\u5f97 */\nint peek = maxHeap.peek(); // 5\n\n/* \u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3092\u30dd\u30c3\u30d7 */\n// \u30dd\u30c3\u30d7\u3055\u308c\u305f\u8981\u7d20\u306f\u964d\u9806\u306e\u30b7\u30fc\u30b1\u30f3\u30b9\u3092\u5f62\u6210\npeek = maxHeap.poll(); // 5\npeek = maxHeap.poll(); // 4\npeek = maxHeap.poll(); // 3\npeek = maxHeap.poll(); // 2\npeek = maxHeap.poll(); // 1\n\n/* \u30d2\u30fc\u30d7\u306e\u30b5\u30a4\u30ba\u3092\u53d6\u5f97 */\nint size = maxHeap.size();\n\n/* \u30d2\u30fc\u30d7\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u30c1\u30a7\u30c3\u30af */\nboolean isEmpty = maxHeap.isEmpty();\n\n/* \u30ea\u30b9\u30c8\u304b\u3089\u30d2\u30fc\u30d7\u3092\u4f5c\u6210 */\nminHeap = new PriorityQueue&lt;&gt;(Arrays.asList(1, 3, 2, 5, 4));\n</code></pre> heap.cs<pre><code>/* \u30d2\u30fc\u30d7\u306e\u521d\u671f\u5316 */\n// \u6700\u5c0f\u30d2\u30fc\u30d7\u306e\u521d\u671f\u5316\nPriorityQueue&lt;int, int&gt; minHeap = new();\n// \u6700\u5927\u30d2\u30fc\u30d7\u306e\u521d\u671f\u5316\uff08\u30e9\u30e0\u30c0\u5f0f\u3067Comparator\u3092\u5909\u66f4\u3059\u308b\u3060\u3051\uff09\nPriorityQueue&lt;int, int&gt; maxHeap = new(Comparer&lt;int&gt;.Create((x, y) =&gt; y - x));\n\n/* \u30d2\u30fc\u30d7\u306b\u8981\u7d20\u3092\u30d7\u30c3\u30b7\u30e5 */\nmaxHeap.Enqueue(1, 1);\nmaxHeap.Enqueue(3, 3);\nmaxHeap.Enqueue(2, 2);\nmaxHeap.Enqueue(5, 5);\nmaxHeap.Enqueue(4, 4);\n\n/* \u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3092\u53d6\u5f97 */\nint peek = maxHeap.Peek();//5\n\n/* \u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3092\u30dd\u30c3\u30d7 */\n// \u30dd\u30c3\u30d7\u3055\u308c\u305f\u8981\u7d20\u306f\u964d\u9806\u306e\u30b7\u30fc\u30b1\u30f3\u30b9\u3092\u5f62\u6210\npeek = maxHeap.Dequeue(); // 5\npeek = maxHeap.Dequeue(); // 4\npeek = maxHeap.Dequeue(); // 3\npeek = maxHeap.Dequeue(); // 2\npeek = maxHeap.Dequeue(); // 1\n\n/* \u30d2\u30fc\u30d7\u306e\u30b5\u30a4\u30ba\u3092\u53d6\u5f97 */\nint size = maxHeap.Count;\n\n/* \u30d2\u30fc\u30d7\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u30c1\u30a7\u30c3\u30af */\nbool isEmpty = maxHeap.Count == 0;\n\n/* \u30ea\u30b9\u30c8\u304b\u3089\u30d2\u30fc\u30d7\u3092\u4f5c\u6210 */\nminHeap = new PriorityQueue&lt;int, int&gt;([(1, 1), (3, 3), (2, 2), (5, 5), (4, 4)]);\n</code></pre> heap.go<pre><code>// Go\u3067\u306f\u3001heap.Interface\u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3067\u6574\u6570\u306e\u6700\u5927\u30d2\u30fc\u30d7\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\n// heap.Interface\u3092\u5b9f\u88c5\u3059\u308b\u306b\u306f\u3001sort.Interface\u3082\u5b9f\u88c5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\ntype intHeap []any\n\n// heap.Interface\u306ePush\u30e1\u30bd\u30c3\u30c9\u3001\u8981\u7d20\u3092\u30d2\u30fc\u30d7\u306b\u30d7\u30c3\u30b7\u30e5\nfunc (h *intHeap) Push(x any) {\n // Push\u3068Pop\u306e\u4e21\u65b9\u3067\u30dd\u30a4\u30f3\u30bf\u30ec\u30b7\u30fc\u30d0\u30fc\u3092\u4f7f\u7528\n // \u30b9\u30e9\u30a4\u30b9\u306e\u8981\u7d20\u3092\u8abf\u6574\u3059\u308b\u3060\u3051\u3067\u306a\u304f\u3001\u305d\u306e\u9577\u3055\u3082\u5909\u66f4\u3059\u308b\u305f\u3081\n *h = append(*h, x.(int))\n}\n\n// heap.Interface\u306ePop\u30e1\u30bd\u30c3\u30c9\u3001\u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3092\u524a\u9664\nfunc (h *intHeap) Pop() any {\n // \u30d2\u30fc\u30d7\u304b\u3089\u30dd\u30c3\u30d7\u3059\u308b\u8981\u7d20\u306f\u672b\u5c3e\u306b\u683c\u7d0d\n last := (*h)[len(*h)-1]\n *h = (*h)[:len(*h)-1]\n return last\n}\n\n// sort.Interface\u306eLen\u30e1\u30bd\u30c3\u30c9\nfunc (h *intHeap) Len() int {\n return len(*h)\n}\n\n// sort.Interface\u306eLess\u30e1\u30bd\u30c3\u30c9\nfunc (h *intHeap) Less(i, j int) bool {\n // \u6700\u5c0f\u30d2\u30fc\u30d7\u3092\u5b9f\u88c5\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u3053\u308c\u3092\u5c0f\u306a\u308a\u6bd4\u8f03\u306b\u5909\u66f4\n return (*h)[i].(int) &gt; (*h)[j].(int)\n}\n\n// sort.Interface\u306eSwap\u30e1\u30bd\u30c3\u30c9\nfunc (h *intHeap) Swap(i, j int) {\n (*h)[i], (*h)[j] = (*h)[j], (*h)[i]\n}\n\n// Top \u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3092\u53d6\u5f97\nfunc (h *intHeap) Top() any {\n return (*h)[0]\n}\n\n/* \u30c9\u30e9\u30a4\u30d0\u30fc\u30b3\u30fc\u30c9 */\nfunc TestHeap(t *testing.T) {\n /* \u30d2\u30fc\u30d7\u306e\u521d\u671f\u5316 */\n // \u6700\u5927\u30d2\u30fc\u30d7\u306e\u521d\u671f\u5316\n maxHeap := &amp;intHeap{}\n heap.Init(maxHeap)\n /* \u30d2\u30fc\u30d7\u306b\u8981\u7d20\u3092\u30d7\u30c3\u30b7\u30e5 */\n // heap.Interface\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u547c\u3073\u51fa\u3057\u3066\u8981\u7d20\u3092\u8ffd\u52a0\n heap.Push(maxHeap, 1)\n heap.Push(maxHeap, 3)\n heap.Push(maxHeap, 2)\n heap.Push(maxHeap, 4)\n heap.Push(maxHeap, 5)\n\n /* \u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3092\u53d6\u5f97 */\n top := maxHeap.Top()\n fmt.Printf(\"\u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u306f %d\\n\", top)\n\n /* \u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3092\u30dd\u30c3\u30d7 */\n // heap.Interface\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u547c\u3073\u51fa\u3057\u3066\u8981\u7d20\u3092\u524a\u9664\n heap.Pop(maxHeap) // 5\n heap.Pop(maxHeap) // 4\n heap.Pop(maxHeap) // 3\n heap.Pop(maxHeap) // 2\n heap.Pop(maxHeap) // 1\n\n /* \u30d2\u30fc\u30d7\u306e\u30b5\u30a4\u30ba\u3092\u53d6\u5f97 */\n size := len(*maxHeap)\n fmt.Printf(\"\u30d2\u30fc\u30d7\u5185\u306e\u8981\u7d20\u6570\u306f %d\\n\", size)\n\n /* \u30d2\u30fc\u30d7\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u30c1\u30a7\u30c3\u30af */\n isEmpty := len(*maxHeap) == 0\n fmt.Printf(\"\u30d2\u30fc\u30d7\u306f\u7a7a\u3067\u3059\u304b\uff1f %t\\n\", isEmpty)\n}\n</code></pre> heap.swift<pre><code>/* \u30d2\u30fc\u30d7\u306e\u521d\u671f\u5316 */\n// Swift\u306eHeap\u578b\u306f\u6700\u5927\u30d2\u30fc\u30d7\u3068\u6700\u5c0f\u30d2\u30fc\u30d7\u306e\u4e21\u65b9\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3001swift-collections\u30e9\u30a4\u30d6\u30e9\u30ea\u304c\u5fc5\u8981\nvar heap = Heap&lt;Int&gt;()\n\n/* \u30d2\u30fc\u30d7\u306b\u8981\u7d20\u3092\u30d7\u30c3\u30b7\u30e5 */\nheap.insert(1)\nheap.insert(3)\nheap.insert(2)\nheap.insert(5)\nheap.insert(4)\n\n/* \u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3092\u53d6\u5f97 */\nvar peek = heap.max()!\n\n/* \u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3092\u30dd\u30c3\u30d7 */\npeek = heap.removeMax() // 5\npeek = heap.removeMax() // 4\npeek = heap.removeMax() // 3\npeek = heap.removeMax() // 2\npeek = heap.removeMax() // 1\n\n/* \u30d2\u30fc\u30d7\u306e\u30b5\u30a4\u30ba\u3092\u53d6\u5f97 */\nlet size = heap.count\n\n/* \u30d2\u30fc\u30d7\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u30c1\u30a7\u30c3\u30af */\nlet isEmpty = heap.isEmpty\n\n/* \u30ea\u30b9\u30c8\u304b\u3089\u30d2\u30fc\u30d7\u3092\u4f5c\u6210 */\nlet heap2 = Heap([1, 3, 2, 5, 4])\n</code></pre> heap.js<pre><code>// JavaScript\u306f\u7d44\u307f\u8fbc\u307f\u306eHeap\u30af\u30e9\u30b9\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u305b\u3093\n</code></pre> heap.ts<pre><code>// TypeScript\u306f\u7d44\u307f\u8fbc\u307f\u306eHeap\u30af\u30e9\u30b9\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u305b\u3093\n</code></pre> heap.dart<pre><code>// Dart\u306f\u7d44\u307f\u8fbc\u307f\u306eHeap\u30af\u30e9\u30b9\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u305b\u3093\n</code></pre> heap.rs<pre><code>use std::collections::BinaryHeap;\nuse std::cmp::Reverse;\n\n/* \u30d2\u30fc\u30d7\u306e\u521d\u671f\u5316 */\n// \u6700\u5c0f\u30d2\u30fc\u30d7\u306e\u521d\u671f\u5316\nlet mut min_heap = BinaryHeap::&lt;Reverse&lt;i32&gt;&gt;::new();\n// \u6700\u5927\u30d2\u30fc\u30d7\u306e\u521d\u671f\u5316\nlet mut max_heap = BinaryHeap::new();\n\n/* \u30d2\u30fc\u30d7\u306b\u8981\u7d20\u3092\u30d7\u30c3\u30b7\u30e5 */\nmax_heap.push(1);\nmax_heap.push(3);\nmax_heap.push(2);\nmax_heap.push(5);\nmax_heap.push(4);\n\n/* \u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3092\u53d6\u5f97 */\nlet peek = max_heap.peek().unwrap(); // 5\n\n/* \u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3092\u30dd\u30c3\u30d7 */\n// \u30dd\u30c3\u30d7\u3055\u308c\u305f\u8981\u7d20\u306f\u964d\u9806\u306e\u30b7\u30fc\u30b1\u30f3\u30b9\u3092\u5f62\u6210\nlet peek = max_heap.pop().unwrap(); // 5\nlet peek = max_heap.pop().unwrap(); // 4\nlet peek = max_heap.pop().unwrap(); // 3\nlet peek = max_heap.pop().unwrap(); // 2\nlet peek = max_heap.pop().unwrap(); // 1\n\n/* \u30d2\u30fc\u30d7\u306e\u30b5\u30a4\u30ba\u3092\u53d6\u5f97 */\nlet size = max_heap.len();\n\n/* \u30d2\u30fc\u30d7\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u30c1\u30a7\u30c3\u30af */\nlet is_empty = max_heap.is_empty();\n\n/* \u30ea\u30b9\u30c8\u304b\u3089\u30d2\u30fc\u30d7\u3092\u4f5c\u6210 */\nlet min_heap = BinaryHeap::from(vec![Reverse(1), Reverse(3), Reverse(2), Reverse(5), Reverse(4)]);\n</code></pre> heap.c<pre><code>// C\u306f\u7d44\u307f\u8fbc\u307f\u306eHeap\u30af\u30e9\u30b9\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u305b\u3093\n</code></pre> heap.kt<pre><code>/* \u30d2\u30fc\u30d7\u306e\u521d\u671f\u5316 */\n// \u6700\u5c0f\u30d2\u30fc\u30d7\u306e\u521d\u671f\u5316\nvar minHeap = PriorityQueue&lt;Int&gt;()\n// \u6700\u5927\u30d2\u30fc\u30d7\u306e\u521d\u671f\u5316\uff08\u30e9\u30e0\u30c0\u5f0f\u3067Comparator\u3092\u5909\u66f4\u3059\u308b\u3060\u3051\uff09\nval maxHeap = PriorityQueue { a: Int, b: Int -&gt; b - a }\n\n/* \u30d2\u30fc\u30d7\u306b\u8981\u7d20\u3092\u30d7\u30c3\u30b7\u30e5 */\nmaxHeap.offer(1)\nmaxHeap.offer(3)\nmaxHeap.offer(2)\nmaxHeap.offer(5)\nmaxHeap.offer(4)\n\n/* \u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3092\u53d6\u5f97 */\nvar peek = maxHeap.peek() // 5\n\n/* \u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3092\u30dd\u30c3\u30d7 */\n// \u30dd\u30c3\u30d7\u3055\u308c\u305f\u8981\u7d20\u306f\u964d\u9806\u306e\u30b7\u30fc\u30b1\u30f3\u30b9\u3092\u5f62\u6210\npeek = maxHeap.poll() // 5\npeek = maxHeap.poll() // 4\npeek = maxHeap.poll() // 3\npeek = maxHeap.poll() // 2\npeek = maxHeap.poll() // 1\n\n/* \u30d2\u30fc\u30d7\u306e\u30b5\u30a4\u30ba\u3092\u53d6\u5f97 */\nval size = maxHeap.size\n\n/* \u30d2\u30fc\u30d7\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u30c1\u30a7\u30c3\u30af */\nval isEmpty = maxHeap.isEmpty()\n\n/* \u30ea\u30b9\u30c8\u304b\u3089\u30d2\u30fc\u30d7\u3092\u4f5c\u6210 */\nminHeap = PriorityQueue(mutableListOf(1, 3, 2, 5, 4))\n</code></pre> heap.rb<pre><code>\n</code></pre>"},{"location":"chapter_heap/heap/#812","title":"8.1.2 \u00a0 \u30d2\u30fc\u30d7\u306e\u5b9f\u88c5","text":"<p>\u4ee5\u4e0b\u306e\u5b9f\u88c5\u306f\u6700\u5927\u30d2\u30fc\u30d7\u3067\u3059\u3002\u6700\u5c0f\u30d2\u30fc\u30d7\u306b\u5909\u63db\u3059\u308b\u306b\u306f\u3001\u3059\u3079\u3066\u306e\u30b5\u30a4\u30ba\u8ad6\u7406\u6bd4\u8f03\u3092\u53cd\u8ee2\u3055\u305b\u308b\u3060\u3051\u3067\u3059\uff08\u4f8b\u3048\u3070\u3001\\(\\geq\\)\u3092\\(\\leq\\)\u306b\u7f6e\u304d\u63db\u3048\u308b\uff09\u3002\u8208\u5473\u306e\u3042\u308b\u8aad\u8005\u306f\u81ea\u5206\u3067\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_heap/heap/#1","title":"1. \u00a0 \u30d2\u30fc\u30d7\u306e\u683c\u7d0d\u3068\u8868\u73fe","text":"<p>\u300c\u4e8c\u5206\u6728\u300d\u306e\u7bc0\u3067\u8ff0\u3079\u305f\u3088\u3046\u306b\u3001\u5b8c\u5099\u4e8c\u5206\u6728\u306f\u914d\u5217\u8868\u73fe\u306b\u975e\u5e38\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002\u30d2\u30fc\u30d7\u306f\u5b8c\u5099\u4e8c\u5206\u6728\u306e\u4e00\u7a2e\u306a\u306e\u3067\u3001\u914d\u5217\u3092\u4f7f\u7528\u3057\u3066\u30d2\u30fc\u30d7\u3092\u683c\u7d0d\u3057\u307e\u3059\u3002</p> <p>\u914d\u5217\u3092\u4f7f\u7528\u3057\u3066\u4e8c\u5206\u6728\u3092\u8868\u73fe\u3059\u308b\u5834\u5408\u3001\u8981\u7d20\u306f\u30ce\u30fc\u30c9\u5024\u3092\u8868\u3057\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306f\u4e8c\u5206\u6728\u5185\u306e\u30ce\u30fc\u30c9\u4f4d\u7f6e\u3092\u8868\u3057\u307e\u3059\u3002\u30ce\u30fc\u30c9\u30dd\u30a4\u30f3\u30bf\u306f\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30de\u30c3\u30d4\u30f3\u30b0\u516c\u5f0f\u3092\u901a\u3058\u3066\u5b9f\u88c5\u3055\u308c\u307e\u3059\u3002</p> <p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\\(i\\)\u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u3001\u305d\u306e\u5de6\u306e\u5b50\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306f\\(2i + 1\\)\u3001\u53f3\u306e\u5b50\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306f\\(2i + 2\\)\u3001\u89aa\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306f\\((i - 1) / 2\\)\uff08\u5e8a\u9664\u7b97\uff09\u3067\u3059\u3002\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\u7bc4\u56f2\u5916\u306e\u5834\u5408\u3001null\u30ce\u30fc\u30c9\u307e\u305f\u306f\u30ce\u30fc\u30c9\u304c\u5b58\u5728\u3057\u306a\u3044\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 8-2 \u00a0 \u30d2\u30fc\u30d7\u306e\u8868\u73fe\u3068\u683c\u7d0d </p> <p>\u5f8c\u3067\u4fbf\u5229\u306b\u4f7f\u7528\u3059\u308b\u305f\u3081\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30de\u30c3\u30d4\u30f3\u30b0\u516c\u5f0f\u3092\u95a2\u6570\u306b\u30ab\u30d7\u30bb\u30eb\u5316\u3067\u304d\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby my_heap.py<pre><code>def left(self, i: int) -&gt; int:\n \"\"\"\u5de6\u306e\u5b50\u30ce\u30fc\u30c9\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u53d6\u5f97\"\"\"\n return 2 * i + 1\n\ndef right(self, i: int) -&gt; int:\n \"\"\"\u53f3\u306e\u5b50\u30ce\u30fc\u30c9\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u53d6\u5f97\"\"\"\n return 2 * i + 2\n\ndef parent(self, i: int) -&gt; int:\n \"\"\"\u89aa\u30ce\u30fc\u30c9\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u53d6\u5f97\"\"\"\n return (i - 1) // 2 # \u6574\u6570\u9664\u7b97\u3067\u5207\u308a\u4e0b\u3052\n</code></pre> my_heap.cpp<pre><code>/* \u5de6\u306e\u5b50\u30ce\u30fc\u30c9\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u53d6\u5f97 */\nint left(int i) {\n return 2 * i + 1;\n}\n\n/* \u53f3\u306e\u5b50\u30ce\u30fc\u30c9\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u53d6\u5f97 */\nint right(int i) {\n return 2 * i + 2;\n}\n\n/* \u89aa\u30ce\u30fc\u30c9\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u53d6\u5f97 */\nint parent(int i) {\n return (i - 1) / 2; // \u6574\u6570\u9664\u7b97\u3067\u5207\u308a\u4e0b\u3052\n}\n</code></pre> my_heap.java<pre><code>/* \u5de6\u306e\u5b50\u30ce\u30fc\u30c9\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u53d6\u5f97 */\nint left(int i) {\n return 2 * i + 1;\n}\n\n/* \u53f3\u306e\u5b50\u30ce\u30fc\u30c9\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u53d6\u5f97 */\nint right(int i) {\n return 2 * i + 2;\n}\n\n/* \u89aa\u30ce\u30fc\u30c9\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u53d6\u5f97 */\nint parent(int i) {\n return (i - 1) / 2; // \u6574\u6570\u9664\u7b97\u3067\u5207\u308a\u4e0b\u3052\n}\n</code></pre> my_heap.cs<pre><code>[class]{MaxHeap}-[func]{Left}\n\n[class]{MaxHeap}-[func]{Right}\n\n[class]{MaxHeap}-[func]{Parent}\n</code></pre> my_heap.go<pre><code>[class]{maxHeap}-[func]{left}\n\n[class]{maxHeap}-[func]{right}\n\n[class]{maxHeap}-[func]{parent}\n</code></pre> my_heap.swift<pre><code>[class]{MaxHeap}-[func]{left}\n\n[class]{MaxHeap}-[func]{right}\n\n[class]{MaxHeap}-[func]{parent}\n</code></pre> my_heap.js<pre><code>[class]{MaxHeap}-[func]{left}\n\n[class]{MaxHeap}-[func]{right}\n\n[class]{MaxHeap}-[func]{parent}\n</code></pre> my_heap.ts<pre><code>[class]{MaxHeap}-[func]{left}\n\n[class]{MaxHeap}-[func]{right}\n\n[class]{MaxHeap}-[func]{parent}\n</code></pre> my_heap.dart<pre><code>[class]{MaxHeap}-[func]{_left}\n\n[class]{MaxHeap}-[func]{_right}\n\n[class]{MaxHeap}-[func]{_parent}\n</code></pre> my_heap.rs<pre><code>[class]{MaxHeap}-[func]{left}\n\n[class]{MaxHeap}-[func]{right}\n\n[class]{MaxHeap}-[func]{parent}\n</code></pre> my_heap.c<pre><code>[class]{MaxHeap}-[func]{left}\n\n[class]{MaxHeap}-[func]{right}\n\n[class]{MaxHeap}-[func]{parent}\n</code></pre> my_heap.kt<pre><code>[class]{MaxHeap}-[func]{left}\n\n[class]{MaxHeap}-[func]{right}\n\n[class]{MaxHeap}-[func]{parent}\n</code></pre> my_heap.rb<pre><code>[class]{MaxHeap}-[func]{left}\n\n[class]{MaxHeap}-[func]{right}\n\n[class]{MaxHeap}-[func]{parent}\n</code></pre>"},{"location":"chapter_heap/heap/#2","title":"2. \u00a0 \u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3078\u306e\u30a2\u30af\u30bb\u30b9","text":"<p>\u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u306f\u4e8c\u5206\u6728\u306e\u6839\u30ce\u30fc\u30c9\u3067\u3001\u30ea\u30b9\u30c8\u306e\u6700\u521d\u306e\u8981\u7d20\u3067\u3082\u3042\u308a\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby my_heap.py<pre><code>def peek(self) -&gt; int:\n \"\"\"\u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\"\"\"\n return self.max_heap[0]\n</code></pre> my_heap.cpp<pre><code>/* \u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nint peek() {\n return maxHeap[0];\n}\n</code></pre> my_heap.java<pre><code>/* \u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nint peek() {\n return maxHeap.get(0);\n}\n</code></pre> my_heap.cs<pre><code>[class]{MaxHeap}-[func]{Peek}\n</code></pre> my_heap.go<pre><code>[class]{maxHeap}-[func]{peek}\n</code></pre> my_heap.swift<pre><code>[class]{MaxHeap}-[func]{peek}\n</code></pre> my_heap.js<pre><code>[class]{MaxHeap}-[func]{peek}\n</code></pre> my_heap.ts<pre><code>[class]{MaxHeap}-[func]{peek}\n</code></pre> my_heap.dart<pre><code>[class]{MaxHeap}-[func]{peek}\n</code></pre> my_heap.rs<pre><code>[class]{MaxHeap}-[func]{peek}\n</code></pre> my_heap.c<pre><code>[class]{MaxHeap}-[func]{peek}\n</code></pre> my_heap.kt<pre><code>[class]{MaxHeap}-[func]{peek}\n</code></pre> my_heap.rb<pre><code>[class]{MaxHeap}-[func]{peek}\n</code></pre>"},{"location":"chapter_heap/heap/#3","title":"3. \u00a0 \u30d2\u30fc\u30d7\u3078\u306e\u8981\u7d20\u633f\u5165","text":"<p>\u8981\u7d20<code>val</code>\u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u3001\u307e\u305a\u305d\u308c\u3092\u30d2\u30fc\u30d7\u306e\u5e95\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002\u8ffd\u52a0\u5f8c\u3001<code>val</code>\u304c\u30d2\u30fc\u30d7\u5185\u306e\u4ed6\u306e\u8981\u7d20\u3088\u308a\u5927\u304d\u3044\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u30d2\u30fc\u30d7\u306e\u5b8c\u5168\u6027\u304c\u640d\u306a\u308f\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u633f\u5165\u3055\u308c\u305f\u30ce\u30fc\u30c9\u304b\u3089\u6839\u30ce\u30fc\u30c9\u307e\u3067\u306e\u30d1\u30b9\u3092\u4fee\u5fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u64cd\u4f5c\u306f\u30d2\u30fc\u30d7\u5316\u3068\u547c\u3070\u308c\u307e\u3059\u3002</p> <p>\u633f\u5165\u3055\u308c\u305f\u30ce\u30fc\u30c9\u304b\u3089\u958b\u59cb\u3057\u3066\u3001\u4e0b\u304b\u3089\u4e0a\u306b\u30d2\u30fc\u30d7\u5316\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u633f\u5165\u3055\u308c\u305f\u30ce\u30fc\u30c9\u306e\u5024\u3092\u305d\u306e\u89aa\u30ce\u30fc\u30c9\u3068\u6bd4\u8f03\u3057\u3001\u633f\u5165\u3055\u308c\u305f\u30ce\u30fc\u30c9\u304c\u5927\u304d\u3044\u5834\u5408\u306f\u305d\u308c\u3089\u3092\u4ea4\u63db\u3057\u307e\u3059\u3002\u6b21\u306b\u3053\u306e\u64cd\u4f5c\u3092\u7d9a\u884c\u3057\u3001\u6839\u306b\u5230\u9054\u3059\u308b\u304b\u3001\u4ea4\u63db\u304c\u4e0d\u8981\u306a\u30ce\u30fc\u30c9\u306b\u906d\u9047\u3059\u308b\u307e\u3067\u3001\u4e0b\u304b\u3089\u4e0a\u306b\u30d2\u30fc\u30d7\u5185\u306e\u5404\u30ce\u30fc\u30c9\u3092\u4fee\u5fa9\u3057\u307e\u3059\u3002</p> &lt;1&gt;&lt;2&gt;&lt;3&gt;&lt;4&gt;&lt;5&gt;&lt;6&gt;&lt;7&gt;&lt;8&gt;&lt;9&gt; <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p> \u56f3 8-3 \u00a0 \u30d2\u30fc\u30d7\u3078\u306e\u8981\u7d20\u633f\u5165\u306e\u624b\u9806 </p> <p>\u7dcf\u30ce\u30fc\u30c9\u6570\u3092\\(n\\)\u3068\u3059\u308b\u3068\u3001\u6728\u306e\u9ad8\u3055\u306f\\(O(\\log n)\\)\u3067\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30d2\u30fc\u30d7\u5316\u64cd\u4f5c\u306e\u30eb\u30fc\u30d7\u53cd\u5fa9\u56de\u6570\u306f\u6700\u5927\\(O(\\log n)\\)\u3067\u3001\u8981\u7d20\u633f\u5165\u64cd\u4f5c\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(\\log n)\\)\u306b\u306a\u308a\u307e\u3059\u3002\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby my_heap.py<pre><code>def push(self, val: int):\n \"\"\"\u30d2\u30fc\u30d7\u306b\u8981\u7d20\u3092\u30d7\u30c3\u30b7\u30e5\"\"\"\n # \u30ce\u30fc\u30c9\u3092\u8ffd\u52a0\n self.max_heap.append(val)\n # \u4e0b\u304b\u3089\u4e0a\u3078\u30d2\u30fc\u30d7\u5316\n self.sift_up(self.size() - 1)\n\ndef sift_up(self, i: int):\n \"\"\"\u30ce\u30fc\u30c9i\u304b\u3089\u958b\u59cb\u3057\u3066\u3001\u4e0b\u304b\u3089\u4e0a\u3078\u30d2\u30fc\u30d7\u5316\"\"\"\n while True:\n # \u30ce\u30fc\u30c9i\u306e\u89aa\u30ce\u30fc\u30c9\u3092\u53d6\u5f97\n p = self.parent(i)\n # \u300c\u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u3092\u8d8a\u3048\u308b\u300d\u307e\u305f\u306f\u300c\u30ce\u30fc\u30c9\u304c\u4fee\u5fa9\u4e0d\u8981\u300d\u306e\u5834\u5408\u3001\u30d2\u30fc\u30d7\u5316\u3092\u7d42\u4e86\n if p &lt; 0 or self.max_heap[i] &lt;= self.max_heap[p]:\n break\n # 2\u3064\u306e\u30ce\u30fc\u30c9\u3092\u4ea4\u63db\n self.swap(i, p)\n # \u4e0a\u5411\u304d\u306e\u30eb\u30fc\u30d7\u30d2\u30fc\u30d7\u5316\n i = p\n</code></pre> my_heap.cpp<pre><code>/* \u30d2\u30fc\u30d7\u306b\u8981\u7d20\u3092\u30d7\u30c3\u30b7\u30e5 */\nvoid push(int val) {\n // \u30ce\u30fc\u30c9\u3092\u8ffd\u52a0\n maxHeap.push_back(val);\n // \u4e0b\u304b\u3089\u4e0a\u3078\u30d2\u30fc\u30d7\u5316\n siftUp(size() - 1);\n}\n\n/* \u30ce\u30fc\u30c9i\u304b\u3089\u4e0a\u5411\u304d\u306b\u30d2\u30fc\u30d7\u5316\u3092\u958b\u59cb */\nvoid siftUp(int i) {\n while (true) {\n // \u30ce\u30fc\u30c9i\u306e\u89aa\u30ce\u30fc\u30c9\u3092\u53d6\u5f97\n int p = parent(i);\n // \u300c\u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u3092\u8d85\u3048\u308b\u300d\u307e\u305f\u306f\u300c\u30ce\u30fc\u30c9\u304c\u4fee\u5fa9\u4e0d\u8981\u300d\u306e\u5834\u5408\u3001\u30d2\u30fc\u30d7\u5316\u3092\u7d42\u4e86\n if (p &lt; 0 || maxHeap[i] &lt;= maxHeap[p])\n break;\n // 2\u3064\u306e\u30ce\u30fc\u30c9\u3092\u4ea4\u63db\n swap(maxHeap[i], maxHeap[p]);\n // \u4e0a\u5411\u304d\u306b\u30eb\u30fc\u30d7\u3057\u3066\u30d2\u30fc\u30d7\u5316\n i = p;\n }\n}\n</code></pre> my_heap.java<pre><code>/* \u8981\u7d20\u3092\u30d2\u30fc\u30d7\u306b\u30d7\u30c3\u30b7\u30e5 */\nvoid push(int val) {\n // \u30ce\u30fc\u30c9\u3092\u8ffd\u52a0\n maxHeap.add(val);\n // \u4e0b\u304b\u3089\u4e0a\u3078\u30d2\u30fc\u30d7\u5316\n siftUp(size() - 1);\n}\n\n/* \u30ce\u30fc\u30c9 i \u304b\u3089\u4e0a\u5411\u304d\u306b\u30d2\u30fc\u30d7\u5316\u3092\u958b\u59cb */\nvoid siftUp(int i) {\n while (true) {\n // \u30ce\u30fc\u30c9 i \u306e\u89aa\u30ce\u30fc\u30c9\u3092\u53d6\u5f97\n int p = parent(i);\n // \u300c\u6839\u30ce\u30fc\u30c9\u3092\u8d8a\u3048\u308b\u300d\u307e\u305f\u306f\u300c\u30ce\u30fc\u30c9\u304c\u4fee\u5fa9\u4e0d\u8981\u300d\u306e\u5834\u5408\u3001\u30d2\u30fc\u30d7\u5316\u3092\u7d42\u4e86\n if (p &lt; 0 || maxHeap.get(i) &lt;= maxHeap.get(p))\n break;\n // 2\u3064\u306e\u30ce\u30fc\u30c9\u3092\u4ea4\u63db\n swap(i, p);\n // \u4e0a\u5411\u304d\u306b\u30d2\u30fc\u30d7\u5316\u3092\u30eb\u30fc\u30d7\n i = p;\n }\n}\n</code></pre> my_heap.cs<pre><code>[class]{MaxHeap}-[func]{Push}\n\n[class]{MaxHeap}-[func]{SiftUp}\n</code></pre> my_heap.go<pre><code>[class]{maxHeap}-[func]{push}\n\n[class]{maxHeap}-[func]{siftUp}\n</code></pre> my_heap.swift<pre><code>[class]{MaxHeap}-[func]{push}\n\n[class]{MaxHeap}-[func]{siftUp}\n</code></pre> my_heap.js<pre><code>[class]{MaxHeap}-[func]{push}\n\n[class]{MaxHeap}-[func]{siftUp}\n</code></pre> my_heap.ts<pre><code>[class]{MaxHeap}-[func]{push}\n\n[class]{MaxHeap}-[func]{siftUp}\n</code></pre> my_heap.dart<pre><code>[class]{MaxHeap}-[func]{push}\n\n[class]{MaxHeap}-[func]{siftUp}\n</code></pre> my_heap.rs<pre><code>[class]{MaxHeap}-[func]{push}\n\n[class]{MaxHeap}-[func]{sift_up}\n</code></pre> my_heap.c<pre><code>[class]{MaxHeap}-[func]{push}\n\n[class]{MaxHeap}-[func]{siftUp}\n</code></pre> my_heap.kt<pre><code>[class]{MaxHeap}-[func]{push}\n\n[class]{MaxHeap}-[func]{siftUp}\n</code></pre> my_heap.rb<pre><code>[class]{MaxHeap}-[func]{push}\n\n[class]{MaxHeap}-[func]{sift_up}\n</code></pre>"},{"location":"chapter_heap/heap/#4","title":"4. \u00a0 \u30d2\u30fc\u30d7\u304b\u3089\u306e\u5148\u982d\u8981\u7d20\u524a\u9664","text":"<p>\u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u306f\u4e8c\u5206\u6728\u306e\u6839\u30ce\u30fc\u30c9\u3001\u3064\u307e\u308a\u30ea\u30b9\u30c8\u306e\u6700\u521d\u306e\u8981\u7d20\u3067\u3059\u3002\u30ea\u30b9\u30c8\u304b\u3089\u6700\u521d\u306e\u8981\u7d20\u3092\u76f4\u63a5\u524a\u9664\u3059\u308b\u3068\u3001\u4e8c\u5206\u6728\u5185\u306e\u3059\u3079\u3066\u306e\u30ce\u30fc\u30c9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\u5909\u66f4\u3055\u308c\u3001\u5f8c\u7d9a\u306e\u4fee\u5fa9\u306b\u30d2\u30fc\u30d7\u5316\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u56f0\u96e3\u306b\u306a\u308a\u307e\u3059\u3002\u8981\u7d20\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306e\u5909\u66f4\u3092\u6700\u5c0f\u9650\u306b\u6291\u3048\u308b\u305f\u3081\u3001\u6b21\u306e\u624b\u9806\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</p> <ol> <li>\u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3068\u5e95\u306e\u8981\u7d20\u3092\u4ea4\u63db\u3057\u307e\u3059\uff08\u6839\u30ce\u30fc\u30c9\u3068\u6700\u3082\u53f3\u306e\u8449\u30ce\u30fc\u30c9\u3092\u4ea4\u63db\uff09\u3002</li> <li>\u4ea4\u63db\u5f8c\u3001\u30ea\u30b9\u30c8\u304b\u3089\u30d2\u30fc\u30d7\u306e\u5e95\u3092\u524a\u9664\u3057\u307e\u3059\uff08\u4ea4\u63db\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u5b9f\u969b\u306b\u306f\u5143\u306e\u5148\u982d\u8981\u7d20\u304c\u524a\u9664\u3055\u308c\u308b\uff09\u3002</li> <li>\u6839\u30ce\u30fc\u30c9\u304b\u3089\u958b\u59cb\u3057\u3066\u3001\u4e0a\u304b\u3089\u4e0b\u306b\u30d2\u30fc\u30d7\u5316\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002</li> </ol> <p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u300c\u4e0a\u304b\u3089\u4e0b\u306e\u30d2\u30fc\u30d7\u5316\u300d\u306e\u65b9\u5411\u306f\u300c\u4e0b\u304b\u3089\u4e0a\u306e\u30d2\u30fc\u30d7\u5316\u300d\u3068\u53cd\u5bfe\u3067\u3059\u3002\u6839\u30ce\u30fc\u30c9\u306e\u5024\u3092\u305d\u306e2\u3064\u306e\u5b50\u3068\u6bd4\u8f03\u3057\u3001\u6700\u5927\u306e\u5b50\u3068\u4ea4\u63db\u3057\u307e\u3059\u3002\u6b21\u306b\u3001\u8449\u30ce\u30fc\u30c9\u306b\u5230\u9054\u3059\u308b\u304b\u3001\u4ea4\u63db\u304c\u4e0d\u8981\u306a\u30ce\u30fc\u30c9\u306b\u906d\u9047\u3059\u308b\u307e\u3067\u3001\u3053\u306e\u64cd\u4f5c\u3092\u7e70\u308a\u8fd4\u3057\u307e\u3059\u3002</p> &lt;1&gt;&lt;2&gt;&lt;3&gt;&lt;4&gt;&lt;5&gt;&lt;6&gt;&lt;7&gt;&lt;8&gt;&lt;9&gt;&lt;10&gt; <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p> \u56f3 8-4 \u00a0 \u30d2\u30fc\u30d7\u304b\u3089\u306e\u5148\u982d\u8981\u7d20\u524a\u9664\u306e\u624b\u9806 </p> <p>\u8981\u7d20\u633f\u5165\u64cd\u4f5c\u3068\u540c\u69d8\u306b\u3001\u5148\u982d\u8981\u7d20\u524a\u9664\u64cd\u4f5c\u306e\u6642\u9593\u8a08\u7b97\u91cf\u3082\\(O(\\log n)\\)\u3067\u3059\u3002\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby my_heap.py<pre><code>def pop(self) -&gt; int:\n \"\"\"\u8981\u7d20\u3092\u30d2\u30fc\u30d7\u304b\u3089\u51fa\u3059\"\"\"\n # \u7a7a\u306e\u51e6\u7406\n if self.is_empty():\n raise IndexError(\"Heap is empty\")\n # \u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u3068\u6700\u53f3\u7aef\u306e\u8449\u30ce\u30fc\u30c9\u3092\u4ea4\u63db\uff08\u6700\u521d\u306e\u8981\u7d20\u3068\u6700\u5f8c\u306e\u8981\u7d20\u3092\u4ea4\u63db\uff09\n self.swap(0, self.size() - 1)\n # \u30ce\u30fc\u30c9\u3092\u524a\u9664\n val = self.max_heap.pop()\n # \u4e0a\u304b\u3089\u4e0b\u3078\u30d2\u30fc\u30d7\u5316\n self.sift_down(0)\n # \u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3092\u8fd4\u3059\n return val\n\ndef sift_down(self, i: int):\n \"\"\"\u30ce\u30fc\u30c9i\u304b\u3089\u958b\u59cb\u3057\u3066\u3001\u4e0a\u304b\u3089\u4e0b\u3078\u30d2\u30fc\u30d7\u5316\"\"\"\n while True:\n # i\u3001l\u3001r\u306e\u4e2d\u3067\u6700\u5927\u306e\u30ce\u30fc\u30c9\u3092\u6c7a\u5b9a\u3057\u3001ma\u3068\u3059\u308b\n l, r, ma = self.left(i), self.right(i), i\n if l &lt; self.size() and self.max_heap[l] &gt; self.max_heap[ma]:\n ma = l\n if r &lt; self.size() and self.max_heap[r] &gt; self.max_heap[ma]:\n ma = r\n # \u30ce\u30fc\u30c9i\u304c\u6700\u5927\u307e\u305f\u306f\u30a4\u30f3\u30c7\u30c3\u30af\u30b9l\u3001r\u304c\u7bc4\u56f2\u5916\u306e\u5834\u5408\u3001\u3055\u3089\u306a\u308b\u30d2\u30fc\u30d7\u5316\u306f\u4e0d\u8981\u3001\u30d6\u30ec\u30fc\u30af\n if ma == i:\n break\n # 2\u3064\u306e\u30ce\u30fc\u30c9\u3092\u4ea4\u63db\n self.swap(i, ma)\n # \u4e0b\u5411\u304d\u306e\u30eb\u30fc\u30d7\u30d2\u30fc\u30d7\u5316\n i = ma\n</code></pre> my_heap.cpp<pre><code>/* \u8981\u7d20\u304c\u30d2\u30fc\u30d7\u304b\u3089\u9000\u51fa */\nvoid pop() {\n // \u7a7a\u306e\u51e6\u7406\n if (isEmpty()) {\n throw out_of_range(\"Heap is empty\");\n }\n // \u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u3092\u6700\u3082\u53f3\u306e\u8449\u30ce\u30fc\u30c9\u3068\u4ea4\u63db\uff08\u6700\u521d\u306e\u8981\u7d20\u3068\u6700\u5f8c\u306e\u8981\u7d20\u3092\u4ea4\u63db\uff09\n swap(maxHeap[0], maxHeap[size() - 1]);\n // \u30ce\u30fc\u30c9\u3092\u524a\u9664\n maxHeap.pop_back();\n // \u4e0a\u304b\u3089\u4e0b\u3078\u30d2\u30fc\u30d7\u5316\n siftDown(0);\n}\n\n/* \u30ce\u30fc\u30c9i\u304b\u3089\u4e0b\u5411\u304d\u306b\u30d2\u30fc\u30d7\u5316\u3092\u958b\u59cb */\nvoid siftDown(int i) {\n while (true) {\n // i\u3001l\u3001r\u306e\u4e2d\u3067\u6700\u5927\u306e\u30ce\u30fc\u30c9\u3092\u6c7a\u5b9a\u3057\u3001ma\u3068\u3057\u3066\u8a18\u9332\n int l = left(i), r = right(i), ma = i;\n if (l &lt; size() &amp;&amp; maxHeap[l] &gt; maxHeap[ma])\n ma = l;\n if (r &lt; size() &amp;&amp; maxHeap[r] &gt; maxHeap[ma])\n ma = r;\n // \u30ce\u30fc\u30c9i\u304c\u6700\u5927\u3001\u307e\u305f\u306f\u30a4\u30f3\u30c7\u30c3\u30af\u30b9l\u3001r\u304c\u7bc4\u56f2\u5916\u306e\u5834\u5408\u3001\u3053\u308c\u4ee5\u4e0a\u306e\u30d2\u30fc\u30d7\u5316\u306f\u4e0d\u8981\u3001\u30d6\u30ec\u30fc\u30af\n if (ma == i)\n break;\n swap(maxHeap[i], maxHeap[ma]);\n // \u4e0b\u5411\u304d\u306b\u30eb\u30fc\u30d7\u3057\u3066\u30d2\u30fc\u30d7\u5316\n i = ma;\n }\n}\n</code></pre> my_heap.java<pre><code>/* \u8981\u7d20\u304c\u30d2\u30fc\u30d7\u304b\u3089\u9000\u51fa */\nint pop() {\n // \u7a7a\u306e\u51e6\u7406\n if (isEmpty())\n throw new IndexOutOfBoundsException();\n // \u6839\u30ce\u30fc\u30c9\u3092\u6700\u3082\u53f3\u306e\u8449\u30ce\u30fc\u30c9\u3068\u4ea4\u63db\uff08\u6700\u521d\u306e\u8981\u7d20\u3092\u6700\u5f8c\u306e\u8981\u7d20\u3068\u4ea4\u63db\uff09\n swap(0, size() - 1);\n // \u30ce\u30fc\u30c9\u3092\u524a\u9664\n int val = maxHeap.remove(size() - 1);\n // \u4e0a\u304b\u3089\u4e0b\u3078\u30d2\u30fc\u30d7\u5316\n siftDown(0);\n // \u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3092\u8fd4\u3059\n return val;\n}\n\n/* \u30ce\u30fc\u30c9 i \u304b\u3089\u4e0b\u5411\u304d\u306b\u30d2\u30fc\u30d7\u5316\u3092\u958b\u59cb */\nvoid siftDown(int i) {\n while (true) {\n // i\u3001l\u3001r \u306e\u4e2d\u3067\u6700\u5927\u306e\u30ce\u30fc\u30c9\u3092\u6c7a\u5b9a\u3057\u3001ma \u3068\u3059\u308b\n int l = left(i), r = right(i), ma = i;\n if (l &lt; size() &amp;&amp; maxHeap.get(l) &gt; maxHeap.get(ma))\n ma = l;\n if (r &lt; size() &amp;&amp; maxHeap.get(r) &gt; maxHeap.get(ma))\n ma = r;\n // \u30ce\u30fc\u30c9 i \u304c\u6700\u5927\u306e\u5834\u5408\u3001\u307e\u305f\u306f\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 l\u3001r \u304c\u7bc4\u56f2\u5916\u306e\u5834\u5408\u3001\u3055\u3089\u306a\u308b\u30d2\u30fc\u30d7\u5316\u306f\u4e0d\u8981\u3001\u7d42\u4e86\n if (ma == i)\n break;\n // 2\u3064\u306e\u30ce\u30fc\u30c9\u3092\u4ea4\u63db\n swap(i, ma);\n // \u4e0b\u5411\u304d\u306b\u30d2\u30fc\u30d7\u5316\u3092\u30eb\u30fc\u30d7\n i = ma;\n }\n}\n</code></pre> my_heap.cs<pre><code>[class]{MaxHeap}-[func]{Pop}\n\n[class]{MaxHeap}-[func]{SiftDown}\n</code></pre> my_heap.go<pre><code>[class]{maxHeap}-[func]{pop}\n\n[class]{maxHeap}-[func]{siftDown}\n</code></pre> my_heap.swift<pre><code>[class]{MaxHeap}-[func]{pop}\n\n[class]{MaxHeap}-[func]{siftDown}\n</code></pre> my_heap.js<pre><code>[class]{MaxHeap}-[func]{pop}\n\n[class]{MaxHeap}-[func]{siftDown}\n</code></pre> my_heap.ts<pre><code>[class]{MaxHeap}-[func]{pop}\n\n[class]{MaxHeap}-[func]{siftDown}\n</code></pre> my_heap.dart<pre><code>[class]{MaxHeap}-[func]{pop}\n\n[class]{MaxHeap}-[func]{siftDown}\n</code></pre> my_heap.rs<pre><code>[class]{MaxHeap}-[func]{pop}\n\n[class]{MaxHeap}-[func]{sift_down}\n</code></pre> my_heap.c<pre><code>[class]{MaxHeap}-[func]{pop}\n\n[class]{MaxHeap}-[func]{siftDown}\n</code></pre> my_heap.kt<pre><code>[class]{MaxHeap}-[func]{pop}\n\n[class]{MaxHeap}-[func]{siftDown}\n</code></pre> my_heap.rb<pre><code>[class]{MaxHeap}-[func]{pop}\n\n[class]{MaxHeap}-[func]{sift_down}\n</code></pre>"},{"location":"chapter_heap/heap/#813","title":"8.1.3 \u00a0 \u30d2\u30fc\u30d7\u306e\u4e00\u822c\u7684\u306a\u5fdc\u7528","text":"<ul> <li>\u512a\u5148\u5ea6\u30ad\u30e5\u30fc\uff1a\u30d2\u30fc\u30d7\u306f\u512a\u5148\u5ea6\u30ad\u30e5\u30fc\u3092\u5b9f\u88c5\u3059\u308b\u305f\u3081\u306e\u597d\u307e\u3057\u3044\u30c7\u30fc\u30bf\u69cb\u9020\u3067\u3001\u30a8\u30f3\u30ad\u30e5\u30fc\u64cd\u4f5c\u3068\u30c7\u30ad\u30e5\u30fc\u64cd\u4f5c\u306e\u4e21\u65b9\u306e\u6642\u9593\u8a08\u7b97\u91cf\u304c\\(O(\\log n)\\)\u3001\u30ad\u30e5\u30fc\u69cb\u7bc9\u306e\u6642\u9593\u8a08\u7b97\u91cf\u304c\\(O(n)\\)\u3067\u3001\u3059\u3079\u3066\u975e\u5e38\u306b\u52b9\u7387\u7684\u3067\u3059\u3002</li> <li>\u30d2\u30fc\u30d7\u30bd\u30fc\u30c8\uff1a\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u3001\u305d\u308c\u3089\u304b\u3089\u30d2\u30fc\u30d7\u3092\u4f5c\u6210\u3057\u3001\u6b21\u306b\u8981\u7d20\u524a\u9664\u64cd\u4f5c\u3092\u7d99\u7d9a\u7684\u306b\u5b9f\u884c\u3057\u3066\u9806\u5e8f\u4ed8\u3051\u3055\u308c\u305f\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u30d2\u30fc\u30d7\u30bd\u30fc\u30c8\u3092\u5b9f\u88c5\u3059\u308b\u3088\u308a\u6d17\u7df4\u3055\u308c\u305f\u65b9\u6cd5\u304c\u3042\u308a\u3001\u300c\u30d2\u30fc\u30d7\u30bd\u30fc\u30c8\u300d\u306e\u7ae0\u3067\u8aac\u660e\u3055\u308c\u3066\u3044\u307e\u3059\u3002</li> <li>\u6700\u5927\\(k\\)\u500b\u306e\u8981\u7d20\u306e\u767a\u898b\uff1a\u3053\u308c\u306f\u53e4\u5178\u7684\u306a\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u554f\u984c\u3067\u3042\u308a\u3001\u4e00\u822c\u7684\u306a\u4f7f\u7528\u4f8b\u3067\u3082\u3042\u308a\u307e\u3059\u3002Weibo\u30db\u30c3\u30c8\u691c\u7d22\u306e\u30c8\u30c3\u30d710\u30db\u30c3\u30c8\u30cb\u30e5\u30fc\u30b9\u306e\u9078\u629e\u3084\u3001\u30c8\u30c3\u30d710\u306e\u58f2\u308c\u7b4b\u5546\u54c1\u306e\u9078\u629e\u306a\u3069\u3067\u3059\u3002</li> </ul>"},{"location":"chapter_heap/summary/","title":"8.4 \u00a0 \u307e\u3068\u3081","text":""},{"location":"chapter_heap/summary/#1","title":"1. \u00a0 \u91cd\u8981\u306a\u5fa9\u7fd2","text":"<ul> <li>\u30d2\u30fc\u30d7\u306f\u5b8c\u5099\u4e8c\u5206\u6728\u3067\u3001\u305d\u306e\u69cb\u7bc9\u6027\u8cea\u306b\u57fa\u3065\u3044\u3066\u6700\u5927\u30d2\u30fc\u30d7\u307e\u305f\u306f\u6700\u5c0f\u30d2\u30fc\u30d7\u306b\u5206\u985e\u3067\u304d\u307e\u3059\u3002\u6700\u5927\u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u306f\u6700\u5927\u3067\u3001\u6700\u5c0f\u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u306f\u6700\u5c0f\u3067\u3059\u3002</li> <li>\u512a\u5148\u5ea6\u30ad\u30e5\u30fc\u306f\u3001\u30c7\u30ad\u30e5\u30fc\u306e\u512a\u5148\u5ea6\u3092\u6301\u3064\u30ad\u30e5\u30fc\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u3001\u901a\u5e38\u30d2\u30fc\u30d7\u3092\u4f7f\u7528\u3057\u3066\u5b9f\u88c5\u3055\u308c\u307e\u3059\u3002</li> <li>\u30d2\u30fc\u30d7\u306e\u4e00\u822c\u7684\u306a\u64cd\u4f5c\u3068\u305d\u308c\u306b\u5bfe\u5fdc\u3059\u308b\u6642\u9593\u8a08\u7b97\u91cf\u306b\u306f\u4ee5\u4e0b\u304c\u3042\u308a\u307e\u3059\uff1a\u30d2\u30fc\u30d7\u3078\u306e\u8981\u7d20\u633f\u5165\\(O(\\log n)\\)\u3001\u30d2\u30fc\u30d7\u304b\u3089\u306e\u5148\u982d\u8981\u7d20\u524a\u9664\\(O(\\log n)\\)\u3001\u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3078\u306e\u30a2\u30af\u30bb\u30b9\\(O(1)\\)\u3002</li> <li>\u5b8c\u5099\u4e8c\u5206\u6728\u306f\u914d\u5217\u3067\u8868\u73fe\u3059\u308b\u306e\u306b\u9069\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u30d2\u30fc\u30d7\u306f\u4e00\u822c\u7684\u306b\u914d\u5217\u3092\u4f7f\u7528\u3057\u3066\u683c\u7d0d\u3055\u308c\u307e\u3059\u3002</li> <li>\u30d2\u30fc\u30d7\u5316\u64cd\u4f5c\u306f\u30d2\u30fc\u30d7\u306e\u6027\u8cea\u3092\u7dad\u6301\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u3001\u30d2\u30fc\u30d7\u306e\u633f\u5165\u64cd\u4f5c\u3068\u524a\u9664\u64cd\u4f5c\u306e\u4e21\u65b9\u3067\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002</li> <li>\\(n\\)\u500b\u306e\u8981\u7d20\u304c\u5165\u529b\u3068\u3057\u3066\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u306e\u30d2\u30fc\u30d7\u69cb\u7bc9\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n)\\)\u306b\u6700\u9069\u5316\u3067\u304d\u3001\u3053\u308c\u306f\u975e\u5e38\u306b\u52b9\u7387\u7684\u3067\u3059\u3002</li> <li>Top-k\u306f\u53e4\u5178\u7684\u306a\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u554f\u984c\u3067\u3001\u30d2\u30fc\u30d7\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u4f7f\u7528\u3057\u3066\u52b9\u7387\u7684\u306b\u89e3\u6c7a\u3067\u304d\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n \\log k)\\)\u3067\u3059\u3002</li> </ul>"},{"location":"chapter_heap/summary/#2-q-a","title":"2. \u00a0 Q &amp; A","text":"<p>Q: \u30c7\u30fc\u30bf\u69cb\u9020\u306e\u300c\u30d2\u30fc\u30d7\u300d\u3068\u30e1\u30e2\u30ea\u7ba1\u7406\u306e\u300c\u30d2\u30fc\u30d7\u300d\u306f\u540c\u3058\u6982\u5ff5\u3067\u3059\u304b\uff1f</p> <p>\u3053\u306e2\u3064\u306f\u3001\u3069\u3061\u3089\u3082\u300c\u30d2\u30fc\u30d7\u300d\u3068\u547c\u3070\u308c\u307e\u3059\u304c\u3001\u540c\u3058\u6982\u5ff5\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30b7\u30b9\u30c6\u30e0\u30e1\u30e2\u30ea\u306e\u30d2\u30fc\u30d7\u306f\u52d5\u7684\u30e1\u30e2\u30ea\u5272\u308a\u5f53\u3066\u306e\u4e00\u90e8\u3067\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u304c\u5b9f\u884c\u4e2d\u306b\u30c7\u30fc\u30bf\u3092\u683c\u7d0d\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u30d7\u30ed\u30b0\u30e9\u30e0\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3084\u914d\u5217\u306a\u3069\u306e\u8907\u96d1\u306a\u69cb\u9020\u3092\u683c\u7d0d\u3059\u308b\u305f\u3081\u306b\u3001\u4e00\u5b9a\u91cf\u306e\u30d2\u30fc\u30d7\u30e1\u30e2\u30ea\u3092\u8981\u6c42\u3067\u304d\u307e\u3059\u3002\u5272\u308a\u5f53\u3066\u3089\u308c\u305f\u30c7\u30fc\u30bf\u304c\u4e0d\u8981\u306b\u306a\u3063\u305f\u3068\u304d\u306f\u3001\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u3092\u9632\u3050\u305f\u3081\u306b\u30d7\u30ed\u30b0\u30e9\u30e0\u304c\u3053\u306e\u30e1\u30e2\u30ea\u3092\u89e3\u653e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30b9\u30bf\u30c3\u30af\u30e1\u30e2\u30ea\u3068\u6bd4\u8f03\u3057\u3066\u3001\u30d2\u30fc\u30d7\u30e1\u30e2\u30ea\u306e\u7ba1\u7406\u3068\u4f7f\u7528\u306b\u306f\u3088\u308a\u591a\u304f\u306e\u6ce8\u610f\u304c\u5fc5\u8981\u3067\u3001\u4e0d\u9069\u5207\u306a\u4f7f\u7528\u306f\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u3084\u30c0\u30f3\u30b0\u30ea\u30f3\u30b0\u30dd\u30a4\u30f3\u30bf\u306b\u3064\u306a\u304c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</p>"},{"location":"chapter_heap/top_k/","title":"8.3 \u00a0 Top-k\u554f\u984c","text":"<p>Question</p> <p>\u9577\u3055\\(n\\)\u306e\u9806\u5e8f\u4ed8\u3051\u3089\u308c\u3066\u3044\u306a\u3044\u914d\u5217<code>nums</code>\u304c\u4e0e\u3048\u3089\u308c\u305f\u3068\u304d\u3001\u914d\u5217\u5185\u306e\u6700\u5927\\(k\\)\u500b\u306e\u8981\u7d20\u3092\u8fd4\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <p>\u3053\u306e\u554f\u984c\u306b\u3064\u3044\u3066\u3001\u307e\u305a2\u3064\u306e\u76f4\u63a5\u7684\u306a\u89e3\u6cd5\u3092\u7d39\u4ecb\u3057\u3001\u6b21\u306b\u3088\u308a\u52b9\u7387\u7684\u306a\u30d2\u30fc\u30d7\u30d9\u30fc\u30b9\u306e\u65b9\u6cd5\u3092\u8aac\u660e\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_heap/top_k/#831-1","title":"8.3.1 \u00a0 \u65b9\u6cd51\uff1a\u53cd\u5fa9\u9078\u629e","text":"<p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\\(k\\)\u56de\u306e\u53cd\u5fa9\u3092\u5b9f\u884c\u3057\u3001\u5404\u56de\u3067\\(1\\)\u756a\u76ee\u3001\\(2\\)\u756a\u76ee\u3001\\(\\dots\\)\u3001\\(k\\)\u756a\u76ee\u306b\u5927\u304d\u3044\u8981\u7d20\u3092\u62bd\u51fa\u3067\u304d\u307e\u3059\u3002\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(nk)\\)\u3067\u3059\u3002</p> <p>\u3053\u306e\u65b9\u6cd5\u306f\\(k \\ll n\\)\u306e\u5834\u5408\u306b\u306e\u307f\u9069\u3057\u3066\u3044\u307e\u3059\u3002\\(k\\)\u304c\\(n\\)\u306b\u8fd1\u3044\u5834\u5408\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n^2)\\)\u306b\u8fd1\u3065\u304d\u3001\u975e\u5e38\u306b\u6642\u9593\u304c\u304b\u304b\u308a\u307e\u3059\u3002</p> <p></p> <p> \u56f3 8-6 \u00a0 \u6700\u5927k\u500b\u306e\u8981\u7d20\u3092\u53cd\u5fa9\u7684\u306b\u898b\u3064\u3051\u308b </p> <p>Tip</p> <p>\\(k = n\\)\u306e\u5834\u5408\u3001\u5b8c\u5168\u306b\u9806\u5e8f\u4ed8\u3051\u3089\u308c\u305f\u30b7\u30fc\u30b1\u30f3\u30b9\u3092\u5f97\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u3053\u308c\u306f\u300c\u9078\u629e\u30bd\u30fc\u30c8\u300d\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3068\u540c\u7b49\u3067\u3059\u3002</p>"},{"location":"chapter_heap/top_k/#832-2","title":"8.3.2 \u00a0 \u65b9\u6cd52\uff1a\u30bd\u30fc\u30c8","text":"<p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u307e\u305a\u914d\u5217<code>nums</code>\u3092\u30bd\u30fc\u30c8\u3057\u3001\u6b21\u306b\u6700\u5f8c\u306e\\(k\\)\u500b\u306e\u8981\u7d20\u3092\u8fd4\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n \\log n)\\)\u3067\u3059\u3002</p> <p>\u660e\u3089\u304b\u306b\u3001\u3053\u306e\u65b9\u6cd5\u306f\u30bf\u30b9\u30af\u3092\u300c\u3084\u308a\u3059\u304e\u300d\u3066\u3044\u307e\u3059\u3002\u6700\u5927\\(k\\)\u500b\u306e\u8981\u7d20\u3092\u898b\u3064\u3051\u308b\u3060\u3051\u3067\u3088\u304f\u3001\u4ed6\u306e\u8981\u7d20\u3092\u30bd\u30fc\u30c8\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002</p> <p></p> <p> \u56f3 8-7 \u00a0 \u30bd\u30fc\u30c8\u306b\u3088\u308b\u6700\u5927k\u500b\u306e\u8981\u7d20\u306e\u767a\u898b </p>"},{"location":"chapter_heap/top_k/#833-3","title":"8.3.3 \u00a0 \u65b9\u6cd53\uff1a\u30d2\u30fc\u30d7","text":"<p>\u4ee5\u4e0b\u306e\u30d7\u30ed\u30bb\u30b9\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u30d2\u30fc\u30d7\u306b\u57fa\u3065\u3044\u3066Top-k\u554f\u984c\u3092\u3088\u308a\u52b9\u7387\u7684\u306b\u89e3\u6c7a\u3067\u304d\u307e\u3059\u3002</p> <ol> <li>\u6700\u5c0f\u30d2\u30fc\u30d7\u3092\u521d\u671f\u5316\u3057\u307e\u3059\u3002\u5148\u982d\u8981\u7d20\u304c\u6700\u5c0f\u306b\u306a\u308a\u307e\u3059\u3002</li> <li>\u307e\u305a\u3001\u914d\u5217\u306e\u6700\u521d\u306e\\(k\\)\u500b\u306e\u8981\u7d20\u3092\u30d2\u30fc\u30d7\u306b\u633f\u5165\u3057\u307e\u3059\u3002</li> <li>\\(k + 1\\)\u756a\u76ee\u306e\u8981\u7d20\u304b\u3089\u958b\u59cb\u3057\u3001\u73fe\u5728\u306e\u8981\u7d20\u304c\u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3088\u308a\u5927\u304d\u3044\u5834\u5408\u3001\u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3092\u524a\u9664\u3057\u3001\u73fe\u5728\u306e\u8981\u7d20\u3092\u30d2\u30fc\u30d7\u306b\u633f\u5165\u3057\u307e\u3059\u3002</li> <li>\u8d70\u67fb\u3092\u5b8c\u4e86\u3057\u305f\u5f8c\u3001\u30d2\u30fc\u30d7\u306b\u306f\u6700\u5927\\(k\\)\u500b\u306e\u8981\u7d20\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002</li> </ol> &lt;1&gt;&lt;2&gt;&lt;3&gt;&lt;4&gt;&lt;5&gt;&lt;6&gt;&lt;7&gt;&lt;8&gt;&lt;9&gt; <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p> \u56f3 8-8 \u00a0 \u30d2\u30fc\u30d7\u306b\u57fa\u3065\u304f\u6700\u5927k\u500b\u306e\u8981\u7d20\u306e\u767a\u898b </p> <p>\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby top_k.py<pre><code>def top_k_heap(nums: list[int], k: int) -&gt; list[int]:\n \"\"\"\u30d2\u30fc\u30d7\u3092\u4f7f\u7528\u3057\u3066\u914d\u5217\u5185\u306e\u6700\u5927k\u500b\u306e\u8981\u7d20\u3092\u898b\u3064\u3051\u308b\"\"\"\n # \u6700\u5c0f\u30d2\u30fc\u30d7\u3092\u521d\u671f\u5316\n heap = []\n # \u914d\u5217\u306e\u6700\u521d\u306ek\u500b\u306e\u8981\u7d20\u3092\u30d2\u30fc\u30d7\u306b\u5165\u529b\n for i in range(k):\n heapq.heappush(heap, nums[i])\n # k+1\u756a\u76ee\u306e\u8981\u7d20\u304b\u3089\u3001\u30d2\u30fc\u30d7\u306e\u9577\u3055\u3092k\u306b\u4fdd\u3064\n for i in range(k, len(nums)):\n # \u73fe\u5728\u306e\u8981\u7d20\u304c\u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3088\u308a\u5927\u304d\u3044\u5834\u5408\u3001\u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3092\u524a\u9664\u3057\u3001\u73fe\u5728\u306e\u8981\u7d20\u3092\u30d2\u30fc\u30d7\u306b\u5165\u529b\n if nums[i] &gt; heap[0]:\n heapq.heappop(heap)\n heapq.heappush(heap, nums[i])\n return heap\n</code></pre> top_k.cpp<pre><code>/* \u30d2\u30fc\u30d7\u3092\u4f7f\u7528\u3057\u3066\u914d\u5217\u5185\u306e\u6700\u5927k\u500b\u306e\u8981\u7d20\u3092\u898b\u3064\u3051\u308b */\npriority_queue&lt;int, vector&lt;int&gt;, greater&lt;int&gt;&gt; topKHeap(vector&lt;int&gt; &amp;nums, int k) {\n // \u6700\u5c0f\u30d2\u30fc\u30d7\u3092\u521d\u671f\u5316\n priority_queue&lt;int, vector&lt;int&gt;, greater&lt;int&gt;&gt; heap;\n // \u914d\u5217\u306e\u6700\u521d\u306ek\u500b\u306e\u8981\u7d20\u3092\u30d2\u30fc\u30d7\u306b\u5165\u529b\n for (int i = 0; i &lt; k; i++) {\n heap.push(nums[i]);\n }\n // k+1\u756a\u76ee\u306e\u8981\u7d20\u304b\u3089\u3001\u30d2\u30fc\u30d7\u306e\u9577\u3055\u3092k\u306b\u4fdd\u3064\n for (int i = k; i &lt; nums.size(); i++) {\n // \u73fe\u5728\u306e\u8981\u7d20\u304c\u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3088\u308a\u5927\u304d\u3044\u5834\u5408\u3001\u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3092\u524a\u9664\u3057\u3001\u73fe\u5728\u306e\u8981\u7d20\u3092\u30d2\u30fc\u30d7\u306b\u5165\u529b\n if (nums[i] &gt; heap.top()) {\n heap.pop();\n heap.push(nums[i]);\n }\n }\n return heap;\n}\n</code></pre> top_k.java<pre><code>/* \u30d2\u30fc\u30d7\u3092\u4f7f\u7528\u3057\u3066\u914d\u5217\u5185\u306e\u6700\u5927 k \u500b\u306e\u8981\u7d20\u3092\u691c\u7d22 */\nQueue&lt;Integer&gt; topKHeap(int[] nums, int k) {\n // \u6700\u5c0f\u30d2\u30fc\u30d7\u3092\u521d\u671f\u5316\n Queue&lt;Integer&gt; heap = new PriorityQueue&lt;Integer&gt;();\n // \u914d\u5217\u306e\u6700\u521d\u306e k \u500b\u306e\u8981\u7d20\u3092\u30d2\u30fc\u30d7\u306b\u5165\u529b\n for (int i = 0; i &lt; k; i++) {\n heap.offer(nums[i]);\n }\n // k+1 \u756a\u76ee\u306e\u8981\u7d20\u304b\u3089\u3001\u30d2\u30fc\u30d7\u306e\u9577\u3055\u3092 k \u306b\u4fdd\u3064\n for (int i = k; i &lt; nums.length; i++) {\n // \u73fe\u5728\u306e\u8981\u7d20\u304c\u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3088\u308a\u5927\u304d\u3044\u5834\u5408\u3001\u30d2\u30fc\u30d7\u306e\u5148\u982d\u8981\u7d20\u3092\u524a\u9664\u3057\u3001\u73fe\u5728\u306e\u8981\u7d20\u3092\u30d2\u30fc\u30d7\u306b\u5165\u529b\n if (nums[i] &gt; heap.peek()) {\n heap.poll();\n heap.offer(nums[i]);\n }\n }\n return heap;\n}\n</code></pre> top_k.cs<pre><code>[class]{top_k}-[func]{TopKHeap}\n</code></pre> top_k.go<pre><code>[class]{}-[func]{topKHeap}\n</code></pre> top_k.swift<pre><code>[class]{}-[func]{topKHeap}\n</code></pre> top_k.js<pre><code>[class]{}-[func]{pushMinHeap}\n\n[class]{}-[func]{popMinHeap}\n\n[class]{}-[func]{peekMinHeap}\n\n[class]{}-[func]{getMinHeap}\n\n[class]{}-[func]{topKHeap}\n</code></pre> top_k.ts<pre><code>[class]{}-[func]{pushMinHeap}\n\n[class]{}-[func]{popMinHeap}\n\n[class]{}-[func]{peekMinHeap}\n\n[class]{}-[func]{getMinHeap}\n\n[class]{}-[func]{topKHeap}\n</code></pre> top_k.dart<pre><code>[class]{}-[func]{topKHeap}\n</code></pre> top_k.rs<pre><code>[class]{}-[func]{top_k_heap}\n</code></pre> top_k.c<pre><code>[class]{}-[func]{pushMinHeap}\n\n[class]{}-[func]{popMinHeap}\n\n[class]{}-[func]{peekMinHeap}\n\n[class]{}-[func]{getMinHeap}\n\n[class]{}-[func]{topKHeap}\n</code></pre> top_k.kt<pre><code>[class]{}-[func]{topKHeap}\n</code></pre> top_k.rb<pre><code>[class]{}-[func]{top_k_heap}\n</code></pre> <p>\u5408\u8a08\\(n\\)\u56de\u306e\u30d2\u30fc\u30d7\u633f\u5165\u3068\u524a\u9664\u304c\u5b9f\u884c\u3055\u308c\u3001\u6700\u5927\u30d2\u30fc\u30d7\u30b5\u30a4\u30ba\u304c\\(k\\)\u3067\u3042\u308b\u305f\u3081\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n \\log k)\\)\u3067\u3059\u3002\u3053\u306e\u65b9\u6cd5\u306f\u975e\u5e38\u306b\u52b9\u7387\u7684\u3067\u3001\\(k\\)\u304c\u5c0f\u3055\u3044\u5834\u5408\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n)\\)\u306b\u8fd1\u3065\u304d\u3001\\(k\\)\u304c\u5927\u304d\u3044\u5834\u5408\u3067\u3082\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n \\log n)\\)\u3092\u8d85\u3048\u307e\u305b\u3093\u3002</p> <p>\u3055\u3089\u306b\u3001\u3053\u306e\u65b9\u6cd5\u306f\u52d5\u7684\u30c7\u30fc\u30bf\u30b9\u30c8\u30ea\u30fc\u30e0\u306e\u30b7\u30ca\u30ea\u30aa\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002\u30c7\u30fc\u30bf\u3092\u7d99\u7d9a\u7684\u306b\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3067\u3001\u30d2\u30fc\u30d7\u5185\u306e\u8981\u7d20\u3092\u7dad\u6301\u3057\u3001\u6700\u5927\\(k\\)\u500b\u306e\u8981\u7d20\u306e\u52d5\u7684\u66f4\u65b0\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002</p>"},{"location":"chapter_hello_algo/","title":"\u306f\u3058\u3081\u306b","text":"<p>\u6570\u5e74\u524d\u3001\u79c1\u306fLeetCode\u3067\u300c\u5263\u6307Offer\u300d\u306e\u554f\u984c\u89e3\u7b54\u3092\u5171\u6709\u3057\u3001\u591a\u304f\u306e\u8aad\u8005\u304b\u3089\u52b1\u307e\u3057\u3068\u30b5\u30dd\u30fc\u30c8\u3092\u53d7\u3051\u307e\u3057\u305f\u3002\u8aad\u8005\u3068\u306e\u3084\u308a\u53d6\u308a\u306e\u4e2d\u3067\u3001\u6700\u3082\u3088\u304f\u805e\u304b\u308c\u305f\u8cea\u554f\u306f\u300c\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u52c9\u5f37\u3092\u3069\u3046\u59cb\u3081\u305f\u3089\u3088\u3044\u304b\u300d\u3067\u3057\u305f\u3002\u6b21\u7b2c\u306b\u3001\u79c1\u306f\u3053\u306e\u8cea\u554f\u306b\u5f37\u3044\u95a2\u5fc3\u3092\u62b1\u304f\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002</p> <p>\u554f\u984c\u3092\u76f4\u63a5\u89e3\u304f\u3053\u3068\u304c\u6700\u3082\u4eba\u6c17\u306e\u3042\u308b\u65b9\u6cd5\u306e\u3088\u3046\u3067\u3059\u3002\u3053\u308c\u306f\u30b7\u30f3\u30d7\u30eb\u3067\u76f4\u63a5\u7684\u3067\u52b9\u679c\u7684\u3067\u3059\u3002\u3057\u304b\u3057\u3001\u554f\u984c\u89e3\u6c7a\u306f\u30de\u30a4\u30f3\u30b9\u30a4\u30fc\u30d1\u30fc\u3092\u30d7\u30ec\u30a4\u3059\u308b\u3088\u3046\u306a\u3082\u306e\u3067\u3059\u3002\u81ea\u5b66\u81ea\u7fd2\u306e\u80fd\u529b\u304c\u9ad8\u3044\u4eba\u306f\u3001\u5730\u96f7\u3092\u4e00\u3064\u305a\u3064\u56de\u907f\u3057\u3066\u3044\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u304c\u3001\u3057\u3063\u304b\u308a\u3068\u3057\u305f\u57fa\u790e\u304c\u306a\u3044\u4eba\u306f\u3001\u4f55\u5ea6\u3082\u3064\u307e\u305a\u3044\u3066\u632b\u6298\u3057\u306a\u304c\u3089\u5f8c\u9000\u3059\u308b\u3053\u3068\u306b\u306a\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u6559\u79d1\u66f8\u3092\u8aad\u3080\u3053\u3068\u3082\u4e00\u822c\u7684\u306a\u65b9\u6cd5\u3067\u3059\u304c\u3001\u5c31\u8077\u6d3b\u52d5\u4e2d\u306e\u4eba\u306b\u3068\u3063\u3066\u3001\u5352\u696d\u8ad6\u6587\u306e\u57f7\u7b46\u3001\u5c65\u6b74\u66f8\u306e\u63d0\u51fa\u3001\u7b46\u8a18\u8a66\u9a13\u3084\u9762\u63a5\u306e\u6e96\u5099\u304c\u65e2\u306b\u30a8\u30cd\u30eb\u30ae\u30fc\u306e\u5927\u90e8\u5206\u3092\u6d88\u8cbb\u3057\u3066\u304a\u308a\u3001\u5206\u539a\u3044\u672c\u3092\u8aad\u3080\u3053\u3068\u306f\u3057\u3070\u3057\u3070\u56f0\u96e3\u306a\u6311\u6226\u3068\u306a\u308a\u307e\u3059\u3002</p> <p>\u3082\u3057\u3042\u306a\u305f\u304c\u540c\u69d8\u306e\u60a9\u307f\u3092\u62b1\u3048\u3066\u3044\u308b\u306a\u3089\u3001\u3053\u306e\u672c\u304c\u3042\u306a\u305f\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u3066\u5e78\u904b\u3067\u3059\u3002\u3053\u306e\u672c\u306f\u3001\u3053\u306e\u8cea\u554f\u306b\u5bfe\u3059\u308b\u79c1\u306e\u7b54\u3048\u3067\u3059\u3002\u3053\u308c\u304c\u6700\u826f\u306e\u89e3\u6c7a\u7b56\u3067\u306f\u306a\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3001\u5c11\u306a\u304f\u3068\u3082\u7a4d\u6975\u7684\u306a\u8a66\u307f\u3067\u3059\u3002\u3053\u306e\u672c\u304c\u3042\u306a\u305f\u306b\u76f4\u63a5\u5185\u5b9a\u3092\u3082\u305f\u3089\u3059\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u304c\u3001\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u300c\u77e5\u8b58\u5730\u56f3\u300d\u3092\u63a2\u7d22\u3059\u308b\u624b\u5f15\u304d\u3068\u306a\u308a\u3001\u3055\u307e\u3056\u307e\u306a\u300c\u5730\u96f7\u300d\u306e\u5f62\u3001\u5927\u304d\u3055\u3001\u4f4d\u7f6e\u3092\u7406\u89e3\u3057\u3001\u3055\u307e\u3056\u307e\u306a\u300c\u5730\u96f7\u9664\u53bb\u65b9\u6cd5\u300d\u3092\u30de\u30b9\u30bf\u30fc\u3067\u304d\u308b\u3088\u3046\u304a\u624b\u4f1d\u3044\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30b9\u30ad\u30eb\u304c\u3042\u308c\u3070\u3001\u3088\u308a\u5feb\u9069\u306b\u554f\u984c\u3092\u89e3\u304d\u3001\u6587\u732e\u3092\u8aad\u3080\u3053\u3068\u304c\u3067\u304d\u3001\u5f90\u3005\u306b\u77e5\u8b58\u4f53\u7cfb\u3092\u69cb\u7bc9\u3067\u304d\u308b\u3068\u4fe1\u3058\u3066\u3044\u307e\u3059\u3002</p> <p>\u79c1\u306f\u3001\u30d5\u30a1\u30a4\u30f3\u30de\u30f3\u6559\u6388\u306e\u8a00\u8449\u306b\u6df1\u304f\u540c\u611f\u3057\u307e\u3059\u3002\u300c\u77e5\u8b58\u306f\u7121\u6599\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u6ce8\u610f\u3092\u6255\u308f\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u306e\u3067\u3059\u3002\u300d\u3053\u306e\u610f\u5473\u3067\u3001\u3053\u306e\u672c\u306f\u5b8c\u5168\u306b\u300c\u7121\u6599\u300d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u3053\u306e\u672c\u306b\u5bfe\u3059\u308b\u3042\u306a\u305f\u306e\u8cb4\u91cd\u306a\u300c\u6ce8\u610f\u300d\u306b\u5fdc\u3048\u308b\u305f\u3081\u306b\u3001\u79c1\u306f\u6700\u5584\u3092\u5c3d\u304f\u3057\u3001\u6700\u5927\u306e\u300c\u6ce8\u610f\u300d\u3092\u6255\u3063\u3066\u3053\u306e\u672c\u3092\u66f8\u304d\u307e\u3059\u3002</p> <p>\u81ea\u5206\u306e\u9650\u754c\u3092\u8a8d\u8b58\u3057\u3066\u304a\u308a\u3001\u3053\u306e\u672c\u306e\u5185\u5bb9\u304c\u6642\u9593\u3092\u304b\u3051\u3066\u6d17\u7df4\u3055\u308c\u305f\u306b\u3082\u304b\u304b\u308f\u3089\u305a\u3001\u9593\u9055\u3044\u306f\u78ba\u5b9f\u306b\u6b8b\u3063\u3066\u3044\u308b\u3053\u3068\u3092\u7406\u89e3\u3057\u3066\u3044\u307e\u3059\u3002\u5148\u751f\u65b9\u3084\u5b66\u751f\u306e\u7686\u69d8\u304b\u3089\u306e\u6279\u8a55\u3068\u8a02\u6b63\u3092\u5fc3\u304b\u3089\u6b53\u8fce\u3044\u305f\u3057\u307e\u3059\u3002</p> <p></p> Hello, Algo! <p>\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u306e\u51fa\u73fe\u306f\u4e16\u754c\u306b\u5927\u304d\u306a\u5909\u5316\u3092\u3082\u305f\u3089\u3057\u307e\u3057\u305f\u3002\u9ad8\u901f\u306a\u8a08\u7b97\u80fd\u529b\u3068\u512a\u308c\u305f\u30d7\u30ed\u30b0\u30e9\u30e0\u53ef\u80fd\u6027\u306b\u3088\u308a\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u306f\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u5b9f\u884c\u3057\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3059\u308b\u305f\u3081\u306e\u7406\u60f3\u7684\u306a\u5a92\u4f53\u3068\u306a\u308a\u307e\u3057\u305f\u3002\u30d3\u30c7\u30aa\u30b2\u30fc\u30e0\u306e\u30ea\u30a2\u30eb\u306a\u30b0\u30e9\u30d5\u30a3\u30c3\u30af\u30b9\u3001\u81ea\u52d5\u904b\u8ee2\u306e\u77e5\u7684\u306a\u5224\u65ad\u3001AlphaGo\u306e\u898b\u4e8b\u306a\u56f2\u7881\u30b2\u30fc\u30e0\u3001ChatGPT\u306e\u81ea\u7136\u306a\u5bfe\u8a71\u306a\u3069\u3001\u3053\u308c\u3089\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f\u3059\u3079\u3066\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u4e0a\u3067\u52d5\u4f5c\u3059\u308b\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u7cbe\u5de7\u306a\u5b9f\u6f14\u3067\u3059\u3002</p> <p>\u5b9f\u969b\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u306e\u51fa\u73fe\u4ee5\u524d\u304b\u3089\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3068\u30c7\u30fc\u30bf\u69cb\u9020\u306f\u4e16\u754c\u306e\u81f3\u308b\u6240\u306b\u5b58\u5728\u3057\u3066\u3044\u307e\u3057\u305f\u3002\u521d\u671f\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u6bd4\u8f03\u7684\u30b7\u30f3\u30d7\u30eb\u3067\u3001\u53e4\u4ee3\u306e\u8a08\u6570\u65b9\u6cd5\u3084\u9053\u5177\u4f5c\u308a\u306e\u624b\u9806\u306a\u3069\u304c\u3042\u308a\u307e\u3057\u305f\u3002\u6587\u660e\u304c\u9032\u6b69\u3059\u308b\u306b\u3064\u308c\u3066\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u3088\u308a\u6d17\u7df4\u3055\u308c\u8907\u96d1\u306b\u306a\u308a\u307e\u3057\u305f\u3002\u8077\u4eba\u306e\u7cbe\u5de7\u306a\u6280\u8853\u304b\u3089\u3001\u751f\u7523\u529b\u3092\u89e3\u653e\u3059\u308b\u5de5\u696d\u88fd\u54c1\u3001\u5b87\u5b99\u3092\u652f\u914d\u3059\u308b\u79d1\u5b66\u6cd5\u5247\u307e\u3067\u3001\u307b\u307c\u3059\u3079\u3066\u306e\u5e73\u51e1\u307e\u305f\u306f\u9a5a\u7570\u7684\u306a\u3053\u3068\u306e\u80cc\u5f8c\u306b\u306f\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5de7\u5999\u306a\u601d\u8003\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>\u540c\u69d8\u306b\u3001\u30c7\u30fc\u30bf\u69cb\u9020\u306f\u81f3\u308b\u6240\u306b\u3042\u308a\u307e\u3059\u3002\u30bd\u30fc\u30b7\u30e3\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u304b\u3089\u5730\u4e0b\u9244\u8def\u7dda\u307e\u3067\u3001\u591a\u304f\u306e\u30b7\u30b9\u30c6\u30e0\u306f\u300c\u30b0\u30e9\u30d5\u300d\u3068\u3057\u3066\u30e2\u30c7\u30eb\u5316\u3067\u304d\u307e\u3059\u3002\u56fd\u304b\u3089\u5bb6\u65cf\u307e\u3067\u3001\u793e\u4f1a\u7d44\u7e54\u306e\u4e3b\u8981\u306a\u5f62\u614b\u306f\u300c\u6728\u300d\u306e\u7279\u5fb4\u3092\u793a\u3057\u307e\u3059\u3002\u51ac\u670d\u306f\u300c\u30b9\u30bf\u30c3\u30af\u300d\u306e\u3088\u3046\u3067\u3001\u6700\u521d\u306b\u7740\u305f\u3082\u306e\u304c\u6700\u5f8c\u306b\u8131\u304c\u308c\u307e\u3059\u3002\u30d0\u30c9\u30df\u30f3\u30c8\u30f3\u306e\u30b7\u30e3\u30c8\u30eb\u7b52\u306f\u300c\u30ad\u30e5\u30fc\u300d\u306b\u4f3c\u3066\u304a\u308a\u3001\u4e00\u65b9\u306e\u7aef\u3067\u633f\u5165\u3057\u3001\u3082\u3046\u4e00\u65b9\u306e\u7aef\u3067\u53d6\u308a\u51fa\u3057\u307e\u3059\u3002\u8f9e\u66f8\u306f\u300c\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u300d\u306e\u3088\u3046\u3067\u3001\u76ee\u6a19\u30a8\u30f3\u30c8\u30ea\u3092\u7d20\u65e9\u304f\u691c\u7d22\u3067\u304d\u307e\u3059\u3002</p> <p>\u3053\u306e\u672c\u306f\u3001\u660e\u78ba\u3067\u7406\u89e3\u3057\u3084\u3059\u3044\u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3\u56f3\u89e3\u3068\u5b9f\u884c\u53ef\u80fd\u306a\u30b3\u30fc\u30c9\u4f8b\u3092\u901a\u3058\u3066\u3001\u8aad\u8005\u304c\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3068\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u6838\u5fc3\u6982\u5ff5\u3092\u7406\u89e3\u3057\u3001\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3092\u901a\u3058\u3066\u305d\u308c\u3089\u3092\u5b9f\u88c5\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308b\u3053\u3068\u3092\u76ee\u6307\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u57fa\u76e4\u306e\u4e0a\u3067\u3001\u3053\u306e\u672c\u306f\u8907\u96d1\u306a\u4e16\u754c\u306b\u304a\u3051\u308b\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u751f\u304d\u751f\u304d\u3068\u3057\u305f\u73fe\u308c\u3092\u660e\u3089\u304b\u306b\u3057\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u7f8e\u3057\u3055\u3092\u793a\u3059\u3053\u3068\u306b\u52aa\u3081\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u672c\u304c\u3042\u306a\u305f\u306e\u304a\u5f79\u306b\u7acb\u3066\u308b\u3053\u3068\u3092\u9858\u3063\u3066\u3044\u307e\u3059\uff01</p>"},{"location":"chapter_introduction/","title":"\u7b2c 1 \u7ae0 \u00a0 \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3068\u306e\u51fa\u4f1a\u3044","text":"<p>Abstract</p> <p>\u512a\u96c5\u306a\u4e59\u5973\u304c\u8e0a\u308a\u307e\u3059\u3002\u30c7\u30fc\u30bf\u3068\u7d61\u307f\u5408\u3044\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u30e1\u30ed\u30c7\u30a3\u30fc\u306b\u5408\u308f\u305b\u3066\u30b9\u30ab\u30fc\u30c8\u3092\u306a\u3073\u304b\u305b\u306a\u304c\u3089\u3002</p> <p>\u5f7c\u5973\u304c\u3042\u306a\u305f\u3092\u30c0\u30f3\u30b9\u306b\u8a98\u3044\u307e\u3059\u3002\u5f7c\u5973\u306e\u30b9\u30c6\u30c3\u30d7\u306b\u5f93\u3063\u3066\u3001\u8ad6\u7406\u3068\u7f8e\u306b\u6e80\u3061\u305f\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u4e16\u754c\u306b\u5165\u308a\u307e\u3057\u3087\u3046\u3002</p>"},{"location":"chapter_introduction/#_1","title":"\u7ae0\u306e\u5185\u5bb9","text":"<ul> <li>1.1 \u00a0 \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u3069\u3053\u306b\u3067\u3082\u3042\u308b</li> <li>1.2 \u00a0 \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3068\u306f\u4f55\u304b</li> <li>1.3 \u00a0 \u307e\u3068\u3081</li> </ul>"},{"location":"chapter_introduction/algorithms_are_everywhere/","title":"1.1 \u00a0 \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u81f3\u308b\u6240\u306b\u3042\u308b","text":"<p>\u300c\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u300d\u3068\u3044\u3046\u8a00\u8449\u3092\u805e\u304f\u3068\u3001\u81ea\u7136\u306b\u6570\u5b66\u3092\u601d\u3044\u6d6e\u304b\u3079\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u591a\u304f\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u8907\u96d1\u306a\u6570\u5b66\u3092\u542b\u307e\u305a\u3001\u57fa\u672c\u7684\u306a\u8ad6\u7406\u306b\u3088\u308a\u591a\u304f\u4f9d\u5b58\u3057\u3066\u304a\u308a\u3001\u3053\u308c\u306f\u79c1\u305f\u3061\u306e\u65e5\u5e38\u751f\u6d3b\u306e\u81f3\u308b\u6240\u3067\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</p> <p>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306b\u3064\u3044\u3066\u6b63\u5f0f\u306b\u8b70\u8ad6\u3092\u59cb\u3081\u308b\u524d\u306b\u3001\u8208\u5473\u6df1\u3044\u4e8b\u5b9f\u3092\u5171\u6709\u3059\u308b\u4fa1\u5024\u304c\u3042\u308a\u307e\u3059\u3002\u3042\u306a\u305f\u306f\u7121\u610f\u8b58\u306e\u3046\u3061\u306b\u591a\u304f\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u5b66\u3073\u3001\u65e5\u5e38\u751f\u6d3b\u3067\u305d\u308c\u3089\u3092\u5fdc\u7528\u3059\u308b\u3053\u3068\u306b\u6163\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u3053\u3067\u3001\u3053\u306e\u70b9\u3092\u8a3c\u660e\u3059\u308b\u305f\u3081\u306b\u3044\u304f\u3064\u304b\u306e\u5177\u4f53\u7684\u306a\u4f8b\u3092\u6319\u3052\u307e\u3059\u3002</p> <p>\u4f8b1\uff1a\u8f9e\u66f8\u306e\u5f15\u304d\u65b9\u3002\u82f1\u8a9e\u306e\u8f9e\u66f8\u3067\u306f\u3001\u5358\u8a9e\u304c\u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c8\u9806\u306b\u4e26\u3093\u3067\u3044\u307e\u3059\u3002\\(r\\)\u3067\u59cb\u307e\u308b\u5358\u8a9e\u3092\u63a2\u3057\u3066\u3044\u308b\u3068\u4eee\u5b9a\u3059\u308b\u3068\u3001\u901a\u5e38\u306f\u4ee5\u4e0b\u306e\u65b9\u6cd5\u3067\u884c\u3044\u307e\u3059\uff1a</p> <ol> <li>\u8f9e\u66f8\u3092\u5927\u4f53\u534a\u5206\u3050\u3089\u3044\u306e\u3068\u3053\u308d\u3067\u958b\u304d\u3001\u305d\u306e\u30da\u30fc\u30b8\u306e\u6700\u521d\u306e\u8a9e\u5f59\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070\\(m\\)\u3067\u59cb\u307e\u308b\u6587\u5b57\u3060\u3068\u3057\u307e\u3057\u3087\u3046\u3002</li> <li>\\(r\\)\u306f\u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c8\u3067\\(m\\)\u306e\u5f8c\u306b\u6765\u308b\u306e\u3067\u3001\u524d\u534a\u3092\u7121\u8996\u3057\u3066\u3001\u63a2\u7d22\u7a7a\u9593\u3092\u5f8c\u534a\u306b\u7d5e\u308a\u307e\u3059\u3002</li> <li>\\(r\\)\u3067\u59cb\u307e\u308b\u5358\u8a9e\u3092\u898b\u3064\u3051\u308b\u307e\u3067\u3001\u30b9\u30c6\u30c3\u30d7<code>1.</code>\u3068<code>2.</code>\u3092\u7e70\u308a\u8fd4\u3057\u307e\u3059\u3002</li> </ol> &lt;1&gt;&lt;2&gt;&lt;3&gt;&lt;4&gt;&lt;5&gt; <p></p> <p></p> <p></p> <p></p> <p></p> <p> \u56f3 1-1 \u00a0 \u8f9e\u66f8\u3092\u5f15\u304f\u904e\u7a0b </p> <p>\u8f9e\u66f8\u3092\u5f15\u304f\u3053\u3068\u306f\u3001\u5c0f\u5b66\u751f\u306b\u3068\u3063\u3066\u5fc5\u9808\u306e\u30b9\u30ad\u30eb\u3067\u3059\u304c\u3001\u5b9f\u969b\u306b\u306f\u6709\u540d\u306a\u300c\u4e8c\u5206\u63a2\u7d22\u300d\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u3059\u3002\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u89b3\u70b9\u304b\u3089\u3001\u8f9e\u66f8\u3092\u30bd\u30fc\u30c8\u3055\u308c\u305f\u300c\u914d\u5217\u300d\u3068\u8003\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u89b3\u70b9\u304b\u3089\u3001\u8f9e\u66f8\u3067\u5358\u8a9e\u3092\u63a2\u3059\u305f\u3081\u306b\u53d6\u3089\u308c\u308b\u4e00\u9023\u306e\u884c\u52d5\u306f\u3001\u300c\u4e8c\u5206\u63a2\u7d22\u300d\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3068\u898b\u306a\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</p> <p>\u4f8b2\uff1a\u30c8\u30e9\u30f3\u30d7\u306e\u6574\u7406\u3002\u30c8\u30e9\u30f3\u30d7\u3092\u30d7\u30ec\u30a4\u3059\u308b\u3068\u304d\u3001\u624b\u672d\u3092\u6607\u9806\u306b\u4e26\u3079\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u904e\u7a0b\u3067\u793a\u3055\u308c\u307e\u3059\u3002</p> <ol> <li>\u30c8\u30e9\u30f3\u30d7\u3092\u300c\u6574\u5217\u6e08\u307f\u300d\u3068\u300c\u672a\u6574\u5217\u300d\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u306b\u5206\u3051\u307e\u3059\u3002\u6700\u521d\u306f\u4e00\u756a\u5de6\u306e\u30ab\u30fc\u30c9\u304c\u65e2\u306b\u6574\u5217\u3057\u3066\u3044\u308b\u3068\u4eee\u5b9a\u3057\u307e\u3059\u3002</li> <li>\u672a\u6574\u5217\u30bb\u30af\u30b7\u30e7\u30f3\u304b\u3089\u30ab\u30fc\u30c9\u30921\u679a\u53d6\u308a\u51fa\u3057\u3001\u6574\u5217\u6e08\u307f\u30bb\u30af\u30b7\u30e7\u30f3\u306e\u6b63\u3057\u3044\u4f4d\u7f6e\u306b\u633f\u5165\u3057\u307e\u3059\u3002\u3053\u306e\u5f8c\u3001\u5de6\u7aef\u306e2\u679a\u306e\u30ab\u30fc\u30c9\u304c\u6574\u5217\u3057\u307e\u3059\u3002</li> <li>\u3059\u3079\u3066\u306e\u30ab\u30fc\u30c9\u304c\u6574\u5217\u3059\u308b\u307e\u3067\u3001\u30b9\u30c6\u30c3\u30d7<code>2</code>\u3092\u7e70\u308a\u8fd4\u3057\u307e\u3059\u3002</li> </ol> <p></p> <p> \u56f3 1-2 \u00a0 \u30c8\u30e9\u30f3\u30d7\u306e\u6574\u7406\u904e\u7a0b </p> <p>\u4e0a\u8a18\u306e\u30c8\u30e9\u30f3\u30d7\u3092\u6574\u7406\u3059\u308b\u65b9\u6cd5\u306f\u3001\u5b9f\u8cea\u7684\u306b\u300c\u633f\u5165\u30bd\u30fc\u30c8\u300d\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u3042\u308a\u3001\u5c0f\u3055\u306a\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u306b\u5bfe\u3057\u3066\u975e\u5e38\u306b\u52b9\u7387\u7684\u3067\u3059\u3002\u591a\u304f\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306e\u30bd\u30fc\u30c8\u95a2\u6570\u306b\u306f\u633f\u5165\u30bd\u30fc\u30c8\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002</p> <p>\u4f8b3\uff1a\u304a\u91e3\u308a\u306e\u8a08\u7b97\u3002\u30b9\u30fc\u30d1\u30fc\u30de\u30fc\u30b1\u30c3\u30c8\u3067\\(69\\)\u306e\u8cb7\u3044\u7269\u3092\u3057\u305f\u3068\u4eee\u5b9a\u3057\u307e\u3059\u3002\u30ec\u30b8\u4fc2\u306b\\(100\\)\u3092\u6e21\u3059\u3068\u3001\\(31\\)\u306e\u304a\u91e3\u308a\u3092\u63d0\u4f9b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u904e\u7a0b\u306f\u4ee5\u4e0b\u306e\u56f3\u3067\u660e\u78ba\u306b\u7406\u89e3\u3067\u304d\u307e\u3059\u3002</p> <ol> <li>\u9078\u629e\u80a2\u306f\\(31\\)\u4ee5\u4e0b\u306e\u4fa1\u5024\u306e\u3042\u308b\u901a\u8ca8\u3067\u3001\\(1\\)\u3001\\(5\\)\u3001\\(10\\)\u3001\\(20\\)\u304c\u542b\u307e\u308c\u307e\u3059\u3002</li> <li>\u9078\u629e\u80a2\u304b\u3089\u6700\u5927\u306e\\(20\\)\u3092\u53d6\u308a\u51fa\u3057\u3001\\(31 - 20 = 11\\)\u304c\u6b8b\u308a\u307e\u3059\u3002</li> <li>\u6b8b\u308a\u306e\u9078\u629e\u80a2\u304b\u3089\u6700\u5927\u306e\\(10\\)\u3092\u53d6\u308a\u51fa\u3057\u3001\\(11 - 10 = 1\\)\u304c\u6b8b\u308a\u307e\u3059\u3002</li> <li>\u6b8b\u308a\u306e\u9078\u629e\u80a2\u304b\u3089\u6700\u5927\u306e\\(1\\)\u3092\u53d6\u308a\u51fa\u3057\u3001\\(1 - 1 = 0\\)\u304c\u6b8b\u308a\u307e\u3059\u3002</li> <li>\u304a\u91e3\u308a\u306e\u8a08\u7b97\u304c\u5b8c\u4e86\u3057\u3001\u89e3\u7b54\u306f\\(20 + 10 + 1 = 31\\)\u3067\u3059\u3002</li> </ol> <p></p> <p> \u56f3 1-3 \u00a0 \u304a\u91e3\u308a\u306e\u8a08\u7b97\u904e\u7a0b </p> <p>\u8a18\u8ff0\u3055\u308c\u305f\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001\u5229\u7528\u53ef\u80fd\u306a\u6700\u5927\u306e\u984d\u9762\u3092\u4f7f\u7528\u3057\u3066\u5404\u6bb5\u968e\u3067\u6700\u826f\u306e\u9078\u629e\u80a2\u3092\u9078\u3076\u3053\u3068\u3067\u3001\u52b9\u679c\u7684\u306a\u304a\u91e3\u308a\u8a08\u7b97\u6226\u7565\u306b\u3064\u306a\u304c\u308a\u307e\u3059\u3002\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u89b3\u70b9\u304b\u3089\u3001\u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306f\u300c\u8caa\u6b32\u300d\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3068\u3057\u3066\u77e5\u3089\u308c\u3066\u3044\u307e\u3059\u3002</p> <p>\u6599\u7406\u306e\u6e96\u5099\u304b\u3089\u5b87\u5b99\u65c5\u884c\u307e\u3067\u3001\u307b\u307c\u3059\u3079\u3066\u306e\u554f\u984c\u89e3\u6c7a\u306b\u306f\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u304c\u95a2\u308f\u3063\u3066\u3044\u307e\u3059\u3002\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u306e\u51fa\u73fe\u306b\u3088\u308a\u3001\u30e1\u30e2\u30ea\u306b\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u683c\u7d0d\u3057\u3001CPU\u3068GPU\u3092\u547c\u3073\u51fa\u3057\u3066\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u5b9f\u884c\u3059\u308b\u30b3\u30fc\u30c9\u3092\u66f8\u304f\u3053\u3068\u304c\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002\u3053\u306e\u3088\u3046\u306b\u3057\u3066\u3001\u73fe\u5b9f\u4e16\u754c\u306e\u554f\u984c\u3092\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u306b\u79fb\u3057\u3001\u3088\u308a\u52b9\u7387\u7684\u306a\u65b9\u6cd5\u3067\u3055\u307e\u3056\u307e\u306a\u8907\u96d1\u306a\u554f\u984c\u3092\u89e3\u6c7a\u3067\u304d\u307e\u3059\u3002</p> <p>Tip</p> <p>\u30c7\u30fc\u30bf\u69cb\u9020\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3001\u914d\u5217\u3001\u4e8c\u5206\u63a2\u7d22\u306a\u3069\u306e\u6982\u5ff5\u306b\u3064\u3044\u3066\u307e\u3060\u6df7\u4e71\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u8aad\u307f\u7d9a\u3051\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002\u3053\u306e\u672c\u306f\u3001\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u7406\u89e3\u306e\u9818\u57df\u3078\u3068\u512a\u3057\u304f\u5c0e\u3044\u3066\u304f\u308c\u308b\u3067\u3057\u3087\u3046\u3002</p>"},{"location":"chapter_introduction/summary/","title":"1.3 \u00a0 \u307e\u3068\u3081","text":"<ul> <li>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u65e5\u5e38\u751f\u6d3b\u306b\u3042\u308a\u3075\u308c\u3066\u304a\u308a\u3001\u601d\u3063\u3066\u3044\u308b\u307b\u3069\u30a2\u30af\u30bb\u30b9\u3057\u306b\u304f\u304f\u8907\u96d1\u306a\u3082\u306e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u5b9f\u969b\u3001\u79c1\u305f\u3061\u306f\u65e2\u306b\u7121\u610f\u8b58\u306e\u3046\u3061\u306b\u591a\u304f\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u5b66\u3073\u3001\u751f\u6d3b\u306e\u69d8\u3005\u306a\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002</li> <li>\u8f9e\u66f8\u3067\u5358\u8a9e\u3092\u5f15\u304f\u539f\u7406\u306f\u4e8c\u5206\u63a2\u7d22\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3068\u4e00\u81f4\u3057\u3066\u3044\u307e\u3059\u3002\u4e8c\u5206\u63a2\u7d22\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u5206\u5272\u7d71\u6cbb\u3068\u3044\u3046\u91cd\u8981\u306a\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u6982\u5ff5\u3092\u4f53\u73fe\u3057\u3066\u3044\u307e\u3059\u3002</li> <li>\u30c8\u30e9\u30f3\u30d7\u3092\u6574\u7406\u3059\u308b\u904e\u7a0b\u306f\u633f\u5165\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3068\u975e\u5e38\u306b\u4f3c\u3066\u3044\u307e\u3059\u3002\u633f\u5165\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u5c0f\u3055\u306a\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u306e\u30bd\u30fc\u30c8\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002</li> <li>\u901a\u8ca8\u3067\u304a\u91e3\u308a\u3092\u8a08\u7b97\u3059\u308b\u30b9\u30c6\u30c3\u30d7\u306f\u672c\u8cea\u7684\u306b\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306b\u5f93\u3063\u3066\u304a\u308a\u3001\u5404\u30b9\u30c6\u30c3\u30d7\u3067\u305d\u306e\u6642\u70b9\u3067\u306e\u6700\u826f\u306e\u9078\u629e\u3092\u3057\u307e\u3059\u3002</li> <li>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u6709\u9650\u6642\u9593\u5185\u3067\u7279\u5b9a\u306e\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306e\u6bb5\u968e\u7684\u306a\u6307\u793a\u306e\u30bb\u30c3\u30c8\u3067\u3059\u304c\u3001\u30c7\u30fc\u30bf\u69cb\u9020\u306f\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u3067\u306e\u30c7\u30fc\u30bf\u306e\u7d44\u7e54\u5316\u3068\u4fdd\u5b58\u65b9\u6cd5\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002</li> <li>\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u5bc6\u63a5\u306b\u95a2\u9023\u3057\u3066\u3044\u307e\u3059\u3002\u30c7\u30fc\u30bf\u69cb\u9020\u306f\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u57fa\u790e\u3067\u3042\u308a\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u6a5f\u80fd\u3092\u6d3b\u7528\u3059\u308b\u30b9\u30c6\u30fc\u30b8\u3067\u3059\u3002</li> <li>\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u30d6\u30ed\u30c3\u30af\u306e\u7d44\u307f\u7acb\u3066\u306b\u4f8b\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30d6\u30ed\u30c3\u30af\u306f\u30c7\u30fc\u30bf\u3092\u8868\u3057\u3001\u30d6\u30ed\u30c3\u30af\u306e\u5f62\u72b6\u3068\u63a5\u7d9a\u65b9\u6cd5\u306f\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u8868\u3057\u3001\u30d6\u30ed\u30c3\u30af\u3092\u7d44\u307f\u7acb\u3066\u308b\u30b9\u30c6\u30c3\u30d7\u306f\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_introduction/summary/#1-q-a","title":"1. \u00a0 Q &amp; A","text":"<p>Q\uff1a\u30d7\u30ed\u30b0\u30e9\u30de\u30fc\u3068\u3057\u3066\u3001\u65e5\u5e38\u306e\u4ed5\u4e8b\u3067\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u624b\u52d5\u3067\u5b9f\u88c5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u306f\u3081\u3063\u305f\u306b\u3042\u308a\u307e\u305b\u3093\u3002\u6700\u3082\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u3001\u65e2\u306b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3068\u30e9\u30a4\u30d6\u30e9\u30ea\u306b\u7d44\u307f\u8fbc\u307e\u308c\u3066\u304a\u308a\u3001\u3059\u3050\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u79c1\u305f\u3061\u304c\u4ed5\u4e8b\u3067\u906d\u9047\u3059\u308b\u554f\u984c\u304c\u3001\u30ab\u30b9\u30bf\u30e0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u8a2d\u8a08\u3092\u5fc5\u8981\u3068\u3059\u308b\u8907\u96d1\u3055\u306e\u30ec\u30d9\u30eb\u306b\u307e\u3060\u9054\u3057\u3066\u3044\u306a\u3044\u3053\u3068\u3092\u793a\u5506\u3057\u3066\u3044\u307e\u3059\u304b\uff1f</p> <p>\u7279\u5b9a\u306e\u4ed5\u4e8b\u30b9\u30ad\u30eb\u304c\u6b66\u8853\u306e\u300c\u6280\u300d\u306e\u3088\u3046\u306a\u3082\u306e\u3060\u3068\u3059\u308c\u3070\u3001\u57fa\u790e\u79d1\u76ee\u306f\u300c\u5185\u529f\u300d\u306e\u3088\u3046\u306a\u3082\u306e\u3067\u3059\u3002</p> <p>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff08\u304a\u3088\u3073\u305d\u306e\u4ed6\u306e\u57fa\u790e\u79d1\u76ee\uff09\u3092\u5b66\u3076\u610f\u7fa9\u306f\u3001\u5fc5\u305a\u3057\u3082\u4ed5\u4e8b\u3067\u305d\u308c\u3089\u3092\u4e00\u304b\u3089\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3067\u306f\u306a\u304f\u3001\u6982\u5ff5\u306e\u78ba\u56fa\u305f\u308b\u7406\u89e3\u306b\u57fa\u3065\u3044\u3066\u3001\u3088\u308a\u5c02\u9580\u7684\u306a\u610f\u601d\u6c7a\u5b9a\u3068\u554f\u984c\u89e3\u6c7a\u3092\u53ef\u80fd\u306b\u3057\u3001\u305d\u308c\u306b\u3088\u3063\u3066\u4ed5\u4e8b\u306e\u5168\u4f53\u7684\u306a\u8cea\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u3060\u3068\u79c1\u306f\u4fe1\u3058\u3066\u3044\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u3059\u3079\u3066\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306b\u306f\u7d44\u307f\u8fbc\u307f\u306e\u30bd\u30fc\u30c8\u95a2\u6570\u304c\u3042\u308a\u307e\u3059\uff1a</p> <ul> <li>\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u5b66\u3093\u3067\u3044\u306a\u3044\u5834\u5408\u3001\u3069\u3093\u306a\u30c7\u30fc\u30bf\u304c\u4e0e\u3048\u3089\u308c\u3066\u3082\u3001\u3053\u306e\u30bd\u30fc\u30c8\u95a2\u6570\u306b\u6e21\u3059\u3060\u3051\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u30b9\u30e0\u30fc\u30ba\u306b\u52d5\u4f5c\u3057\u3001\u826f\u3044\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u793a\u3057\u3001\u554f\u984c\u304c\u306a\u3044\u3088\u3046\u306b\u898b\u3048\u307e\u3059\u3002</li> <li>\u3057\u304b\u3057\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u5b66\u3093\u3060\u3053\u3068\u304c\u3042\u308c\u3070\u3001\u7d44\u307f\u8fbc\u307f\u306e\u30bd\u30fc\u30c8\u95a2\u6570\u306e\u6642\u9593\u8907\u96d1\u5ea6\u306f\u901a\u5e38\\(O(n \\log n)\\)\u3067\u3042\u308b\u3053\u3068\u3092\u7406\u89e3\u3057\u3066\u3044\u307e\u3059\u3002\u3055\u3089\u306b\u3001\u30c7\u30fc\u30bf\u304c\u56fa\u5b9a\u6841\u6570\u306e\u6574\u6570\uff08\u5b66\u751fID\u306a\u3069\uff09\u3067\u69cb\u6210\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u57fa\u6570\u30bd\u30fc\u30c8\u306e\u3088\u3046\u306a\u3088\u308a\u52b9\u7387\u7684\u306a\u30a2\u30d7\u30ed\u30fc\u30c1\u3092\u9069\u7528\u3067\u304d\u3001\u6642\u9593\u8907\u96d1\u5ea6\u3092O(nk)\u306b\u524a\u6e1b\u3067\u304d\u307e\u3059\u3002\u3053\u3053\u3067k\u306f\u6841\u6570\u3067\u3059\u3002\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3059\u308b\u969b\u3001\u7bc0\u7d04\u3055\u308c\u305f\u6642\u9593\u306f\u91cd\u8981\u306a\u4fa1\u5024\u306b\u5909\u308f\u308a\u307e\u3059 \u2014 \u30b3\u30b9\u30c8\u306e\u524a\u6e1b\u3001\u30e6\u30fc\u30b6\u30fc\u30a8\u30af\u30b9\u30da\u30ea\u30a8\u30f3\u30b9\u306e\u5411\u4e0a\u3001\u30b7\u30b9\u30c6\u30e0\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u5411\u4e0a\u3002</li> </ul> <p>\u30a8\u30f3\u30b8\u30cb\u30a2\u30ea\u30f3\u30b0\u3067\u306f\u3001\u591a\u304f\u306e\u554f\u984c\u3092\u6700\u9069\u306b\u89e3\u6c7a\u3059\u308b\u3053\u3068\u306f\u56f0\u96e3\u3067\u3059\u3002\u307b\u3068\u3093\u3069\u306f\u300c\u6e96\u6700\u9069\u300d\u89e3\u6c7a\u7b56\u3067\u5bfe\u51e6\u3055\u308c\u307e\u3059\u3002\u554f\u984c\u306e\u96e3\u3057\u3055\u306f\u3001\u305d\u306e\u56fa\u6709\u306e\u8907\u96d1\u3055\u3060\u3051\u3067\u306a\u304f\u3001\u305d\u308c\u306b\u53d6\u308a\u7d44\u3080\u4eba\u306e\u77e5\u8b58\u3068\u7d4c\u9a13\u306b\u3082\u4f9d\u5b58\u3057\u307e\u3059\u3002\u5c02\u9580\u77e5\u8b58\u3068\u7d4c\u9a13\u304c\u6df1\u3044\u307b\u3069\u3001\u5206\u6790\u304c\u3088\u308a\u5fb9\u5e95\u7684\u306b\u306a\u308a\u3001\u554f\u984c\u3092\u3088\u308a\u512a\u96c5\u306b\u89e3\u6c7a\u3067\u304d\u307e\u3059\u3002</p>"},{"location":"chapter_introduction/what_is_dsa/","title":"1.2 \u00a0 \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3068\u306f\u4f55\u304b","text":""},{"location":"chapter_introduction/what_is_dsa/#121","title":"1.2.1 \u00a0 \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5b9a\u7fa9","text":"<p>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u3001\u6709\u9650\u6642\u9593\u5185\u3067\u7279\u5b9a\u306e\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306e\u4e00\u9023\u306e\u6307\u793a\u307e\u305f\u306f\u30b9\u30c6\u30c3\u30d7\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u7279\u5fb4\u304c\u3042\u308a\u307e\u3059\uff1a</p> <ul> <li>\u554f\u984c\u304c\u660e\u78ba\u306b\u5b9a\u7fa9\u3055\u308c\u3066\u304a\u308a\u3001\u5165\u529b\u3068\u51fa\u529b\u306e\u660e\u78ba\u306a\u5b9a\u7fa9\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002</li> <li>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u5b9f\u884c\u53ef\u80fd\u3067\u3001\u6709\u9650\u306e\u56de\u6570\u306e\u30b9\u30c6\u30c3\u30d7\u3001\u6642\u9593\u3001\u30e1\u30e2\u30ea\u7a7a\u9593\u5185\u3067\u5b8c\u4e86\u3067\u304d\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002</li> <li>\u5404\u30b9\u30c6\u30c3\u30d7\u306b\u306f\u660e\u78ba\u306a\u610f\u5473\u304c\u3042\u308a\u307e\u3059\u3002\u540c\u3058\u5165\u529b\u3068\u6761\u4ef6\u306e\u4e0b\u3067\u51fa\u529b\u306f\u4e00\u8cab\u3057\u3066\u540c\u3058\u3067\u3059\u3002</li> </ul>"},{"location":"chapter_introduction/what_is_dsa/#122","title":"1.2.2 \u00a0 \u30c7\u30fc\u30bf\u69cb\u9020\u306e\u5b9a\u7fa9","text":"<p>\u30c7\u30fc\u30bf\u69cb\u9020\u306f\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u5185\u3067\u30c7\u30fc\u30bf\u3092\u7d44\u7e54\u3057\u4fdd\u5b58\u3059\u308b\u65b9\u6cd5\u3067\u3001\u4ee5\u4e0b\u306e\u8a2d\u8a08\u76ee\u6a19\u304c\u3042\u308a\u307e\u3059\uff1a</p> <ul> <li>\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u306e\u30e1\u30e2\u30ea\u3092\u7bc0\u7d04\u3059\u308b\u305f\u3081\u306b\u7a7a\u9593\u5360\u6709\u3092\u6700\u5c0f\u5316\u3059\u308b\u3002</li> <li>\u30c7\u30fc\u30bf\u64cd\u4f5c\u3092\u53ef\u80fd\u306a\u9650\u308a\u9ad8\u901f\u306b\u3057\u3001\u30c7\u30fc\u30bf\u306e\u30a2\u30af\u30bb\u30b9\u3001\u8ffd\u52a0\u3001\u524a\u9664\u3001\u66f4\u65b0\u306a\u3069\u3092\u30ab\u30d0\u30fc\u3059\u308b\u3002</li> <li>\u52b9\u7387\u7684\u306a\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u5b9f\u884c\u3092\u53ef\u80fd\u306b\u3059\u308b\u305f\u3081\u306b\u3001\u7c21\u6f54\u306a\u30c7\u30fc\u30bf\u8868\u73fe\u3068\u8ad6\u7406\u60c5\u5831\u3092\u63d0\u4f9b\u3059\u308b\u3002</li> </ul> <p>\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u8a2d\u8a08\u306f\u30d0\u30e9\u30f3\u30b9\u3092\u53d6\u308b\u884c\u70ba\u3067\u3042\u308a\u3001\u3057\u3070\u3057\u3070\u30c8\u30ec\u30fc\u30c9\u30aa\u30d5\u304c\u5fc5\u8981\u3067\u3059\u3002\u4e00\u3064\u306e\u5074\u9762\u3092\u6539\u5584\u3057\u305f\u3044\u5834\u5408\u3001\u3057\u3070\u3057\u3070\u5225\u306e\u5074\u9762\u3067\u59a5\u5354\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4ee5\u4e0b\u306f2\u3064\u306e\u4f8b\u3067\u3059\uff1a</p> <ul> <li>\u914d\u5217\u3068\u6bd4\u8f03\u3057\u3066\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306f\u30c7\u30fc\u30bf\u306e\u8ffd\u52a0\u3068\u524a\u9664\u306b\u304a\u3044\u3066\u3088\u308a\u4fbf\u5229\u3067\u3059\u304c\u3001\u30c7\u30fc\u30bf\u30a2\u30af\u30bb\u30b9\u901f\u5ea6\u3092\u72a0\u7272\u306b\u3057\u307e\u3059\u3002</li> <li>\u9023\u7d50\u30ea\u30b9\u30c8\u3068\u6bd4\u8f03\u3057\u3066\u3001\u30b0\u30e9\u30d5\u306f\u3088\u308a\u8c4a\u5bcc\u306a\u8ad6\u7406\u60c5\u5831\u3092\u63d0\u4f9b\u3057\u307e\u3059\u304c\u3001\u3088\u308a\u591a\u304f\u306e\u30e1\u30e2\u30ea\u7a7a\u9593\u304c\u5fc5\u8981\u3067\u3059\u3002</li> </ul>"},{"location":"chapter_introduction/what_is_dsa/#123","title":"1.2.3 \u00a0 \u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u95a2\u4fc2","text":"<p>\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u9ad8\u5ea6\u306b\u95a2\u9023\u3057\u3001\u5bc6\u63a5\u306b\u7d71\u5408\u3055\u308c\u3066\u304a\u308a\u3001\u5177\u4f53\u7684\u306b\u306f\u4ee5\u4e0b\u306e3\u3064\u306e\u5074\u9762\u304c\u3042\u308a\u307e\u3059\uff1a</p> <ul> <li>\u30c7\u30fc\u30bf\u69cb\u9020\u306f\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u57fa\u790e\u3067\u3059\u3002\u69cb\u9020\u5316\u3055\u308c\u305f\u30c7\u30fc\u30bf\u4fdd\u5b58\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u305f\u3081\u306e\u30c7\u30fc\u30bf\u64cd\u4f5c\u65b9\u6cd5\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002</li> <li>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u30c7\u30fc\u30bf\u69cb\u9020\u306b\u6d3b\u529b\u3092\u6ce8\u5165\u3057\u307e\u3059\u3002\u30c7\u30fc\u30bf\u69cb\u9020\u3060\u3051\u3067\u306f\u30c7\u30fc\u30bf\u60c5\u5831\u3092\u4fdd\u5b58\u3059\u308b\u3060\u3051\u3067\u3059\u3002\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5fdc\u7528\u306b\u3088\u3063\u3066\u3001\u7279\u5b9a\u306e\u554f\u984c\u3092\u89e3\u6c7a\u3067\u304d\u307e\u3059\u3002</li> <li>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u7570\u306a\u308b\u30c7\u30fc\u30bf\u69cb\u9020\u306b\u57fa\u3065\u3044\u3066\u5b9f\u88c5\u3067\u304d\u308b\u3053\u3068\u304c\u591a\u3044\u3067\u3059\u304c\u3001\u5b9f\u884c\u52b9\u7387\u306f\u5927\u304d\u304f\u7570\u306a\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u9069\u5207\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u9078\u629e\u3059\u308b\u3053\u3068\u304c\u9375\u3067\u3059\u3002</li> </ul> <p></p> <p> \u56f3 1-4 \u00a0 \u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u95a2\u4fc2 </p> <p>\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u3001\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u30d6\u30ed\u30c3\u30af\u306e\u30bb\u30c3\u30c8\u306b\u4f8b\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30d6\u30ed\u30c3\u30af\u30bb\u30c3\u30c8\u306b\u306f\u591a\u6570\u306e\u30d4\u30fc\u30b9\u304c\u542b\u307e\u308c\u3001\u8a73\u7d30\u306a\u7d44\u307f\u7acb\u3066\u8aac\u660e\u66f8\u304c\u4ed8\u3044\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u8aac\u660e\u66f8\u306b\u6bb5\u968e\u7684\u306b\u5f93\u3046\u3053\u3068\u3067\u3001\u8907\u96d1\u306a\u30d6\u30ed\u30c3\u30af\u30e2\u30c7\u30eb\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002</p> <p></p> <p> \u56f3 1-5 \u00a0 \u30d6\u30ed\u30c3\u30af\u306e\u7d44\u307f\u7acb\u3066 </p> <p>\u4e21\u8005\u306e\u8a73\u7d30\u306a\u5bfe\u5fdc\u95a2\u4fc2\u306f\u4ee5\u4e0b\u306e\u8868\u306b\u793a\u3055\u308c\u3066\u3044\u307e\u3059\u3002</p> <p> \u8868 1-1 \u00a0 \u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u30d6\u30ed\u30c3\u30af\u3068\u6bd4\u8f03 </p> \u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0 \u30d6\u30ed\u30c3\u30af \u5165\u529b\u30c7\u30fc\u30bf \u672a\u7d44\u307f\u7acb\u3066\u306e\u30d6\u30ed\u30c3\u30af \u30c7\u30fc\u30bf\u69cb\u9020 \u30d6\u30ed\u30c3\u30af\u306e\u7d44\u7e54\u3001\u5f62\u72b6\u3001\u30b5\u30a4\u30ba\u3001\u63a5\u7d9a\u306a\u3069\u3092\u542b\u3080 \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0 \u30d6\u30ed\u30c3\u30af\u3092\u671b\u307e\u3057\u3044\u5f62\u72b6\u306b\u7d44\u307f\u7acb\u3066\u308b\u4e00\u9023\u306e\u30b9\u30c6\u30c3\u30d7 \u51fa\u529b\u30c7\u30fc\u30bf \u5b8c\u6210\u3057\u305f\u30d6\u30ed\u30c3\u30af\u30e2\u30c7\u30eb <p>\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u304b\u3089\u72ec\u7acb\u3057\u3066\u3044\u308b\u3053\u3068\u306f\u6ce8\u76ee\u306b\u5024\u3057\u307e\u3059\u3002\u3053\u306e\u7406\u7531\u306b\u3088\u308a\u3001\u3053\u306e\u672c\u306f\u8907\u6570\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u306e\u5b9f\u88c5\u3092\u63d0\u4f9b\u3067\u304d\u307e\u3059\u3002</p> <p>\u6163\u7fd2\u7684\u306a\u7565\u8a9e</p> <p>\u5b9f\u751f\u6d3b\u306e\u8b70\u8ad6\u3067\u306f\u3001\u300c\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u300d\u3092\u5358\u7d14\u306b\u300c\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u300d\u3068\u547c\u3076\u3053\u3068\u304c\u3088\u304f\u3042\u308a\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u3088\u304f\u77e5\u3089\u308c\u305fLeetCode\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u554f\u984c\u306f\u3001\u5b9f\u969b\u306b\u306f\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u4e21\u65b9\u306e\u77e5\u8b58\u3092\u30c6\u30b9\u30c8\u3057\u3066\u3044\u307e\u3059\u3002</p>"},{"location":"chapter_preface/","title":"\u7b2c 0 \u7ae0 \u00a0 \u5e8f\u6587","text":"<p>Abstract</p> <p>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u7f8e\u3057\u3044\u4ea4\u97ff\u66f2\u306e\u3088\u3046\u3067\u3001\u30b3\u30fc\u30c9\u306e\u4e00\u884c\u4e00\u884c\u304c\u30ea\u30ba\u30e0\u306e\u3088\u3046\u306b\u6d41\u308c\u3066\u3044\u307e\u3059\u3002</p> <p>\u3053\u306e\u672c\u304c\u3042\u306a\u305f\u306e\u5fc3\u306e\u4e2d\u3067\u9759\u304b\u306b\u97ff\u304d\u3001\u72ec\u7279\u3067\u6df1\u3044\u65cb\u5f8b\u3092\u6b8b\u3059\u3053\u3068\u3092\u9858\u3063\u3066\u3044\u307e\u3059\u3002</p>"},{"location":"chapter_preface/#_1","title":"\u7ae0\u306e\u5185\u5bb9","text":"<ul> <li>0.1 \u00a0 \u672c\u66f8\u306b\u3064\u3044\u3066</li> <li>0.2 \u00a0 \u672c\u66f8\u306e\u4f7f\u3044\u65b9</li> <li>0.3 \u00a0 \u307e\u3068\u3081</li> </ul>"},{"location":"chapter_preface/about_the_book/","title":"0.1 \u00a0 \u3053\u306e\u672c\u306b\u3064\u3044\u3066","text":"<p>\u3053\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u3001\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306b\u95a2\u3059\u308b\u7121\u6599\u3067\u521d\u5fc3\u8005\u306b\u3084\u3055\u3057\u3044\u30af\u30e9\u30c3\u30b7\u30e5\u30b3\u30fc\u30b9\u306e\u4f5c\u6210\u3092\u76ee\u6307\u3057\u3066\u3044\u307e\u3059\u3002</p> <ul> <li>\u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3\u4ed8\u304d\u306e\u56f3\u89e3\u3001\u7406\u89e3\u3057\u3084\u3059\u3044\u5185\u5bb9\u3001\u6ed1\u3089\u304b\u306a\u5b66\u7fd2\u66f2\u7dda\u306b\u3088\u308a\u3001\u521d\u5fc3\u8005\u304c\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u300c\u77e5\u8b58\u30de\u30c3\u30d7\u300d\u3092\u63a2\u7d22\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002</li> <li>\u30ef\u30f3\u30af\u30ea\u30c3\u30af\u3067\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u3067\u304d\u308b\u305f\u3081\u3001\u8aad\u8005\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30b9\u30ad\u30eb\u306e\u5411\u4e0a\u3068\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u52d5\u4f5c\u539f\u7406\u304a\u3088\u3073\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u57fa\u790e\u5b9f\u88c5\u306e\u7406\u89e3\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002</li> <li>\u6559\u3048\u308b\u3053\u3068\u306b\u3088\u308b\u5b66\u7fd2\u3092\u4fc3\u9032\u3057\u3001\u8cea\u554f\u3084\u6d1e\u5bdf\u306e\u5171\u6709\u3092\u81ea\u7531\u306b\u884c\u3063\u3066\u304f\u3060\u3055\u3044\u3002\u8b70\u8ad6\u3092\u901a\u3058\u3066\u4e00\u7dd2\u306b\u6210\u9577\u3057\u307e\u3057\u3087\u3046\u3002</li> </ul>"},{"location":"chapter_preface/about_the_book/#011","title":"0.1.1 \u00a0 \u5bfe\u8c61\u8aad\u8005","text":"<p>\u3082\u3057\u3042\u306a\u305f\u304c\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306b\u89e6\u308c\u305f\u3070\u304b\u308a\u3067\u7d4c\u9a13\u304c\u9650\u3089\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u307e\u305f\u306f\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u3042\u308b\u7a0b\u5ea6\u306e\u7d4c\u9a13\u3092\u7a4d\u3093\u3067\u3044\u3066\u3082\u3001\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306b\u3064\u3044\u3066\u66d6\u6627\u306a\u7406\u89e3\u3057\u304b\u306a\u304f\u3001\u5e38\u306b\u300c\u5206\u304b\u3063\u305f\u300d\u3068\u300c\u3046\u30fc\u3093\u300d\u306e\u9593\u3092\u884c\u304d\u6765\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u3053\u306e\u672c\u306f\u3042\u306a\u305f\u306e\u305f\u3081\u306e\u3082\u306e\u3067\u3059\uff01</p> <p>\u3059\u3067\u306b\u3042\u308b\u7a0b\u5ea6\u306e\u554f\u984c\u89e3\u6c7a\u7d4c\u9a13\u3092\u7a4d\u3093\u3067\u304a\u308a\u3001\u307b\u3068\u3093\u3069\u306e\u30bf\u30a4\u30d7\u306e\u554f\u984c\u306b\u7cbe\u901a\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u3053\u306e\u672c\u306f\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u77e5\u8b58\u4f53\u7cfb\u3092\u5fa9\u7fd2\u3057\u6574\u7406\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306f\u300c\u554f\u984c\u89e3\u6c7a\u30c4\u30fc\u30eb\u30ad\u30c3\u30c8\u300d\u3084\u300c\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u30c1\u30fc\u30c8\u30b7\u30fc\u30c8\u300d\u3068\u3057\u3066\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002</p> <p>\u3082\u3057\u3042\u306a\u305f\u304c\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5c02\u9580\u5bb6\u3067\u3042\u308c\u3070\u3001\u8cb4\u91cd\u306a\u63d0\u6848\u3092\u3044\u305f\u3060\u304f\u304b\u3001\u53c2\u52a0\u3057\u3066\u5354\u529b\u3057\u3066\u3044\u305f\u3060\u3051\u308c\u3070\u3068\u601d\u3044\u307e\u3059\u3002</p> <p>\u524d\u63d0\u6761\u4ef6</p> <p>\u5c11\u306a\u304f\u3068\u3082\u4e00\u3064\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u7c21\u5358\u306a\u30b3\u30fc\u30c9\u3092\u66f8\u3044\u3066\u8aad\u3080\u3053\u3068\u304c\u3067\u304d\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</p>"},{"location":"chapter_preface/about_the_book/#012","title":"0.1.2 \u00a0 \u5185\u5bb9\u69cb\u6210","text":"<p>\u672c\u66f8\u306e\u4e3b\u306a\u5185\u5bb9\u3092\u4e0b\u56f3\u306b\u793a\u3057\u307e\u3059\u3002</p> <ul> <li>\u8a08\u7b97\u91cf\u89e3\u6790: \u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u8a55\u4fa1\u3059\u308b\u5074\u9762\u3068\u65b9\u6cd5\u3092\u63a2\u6c42\u3057\u307e\u3059\u3002\u6642\u9593\u8a08\u7b97\u91cf\u3068\u7a7a\u9593\u8a08\u7b97\u91cf\u3092\u5c0e\u51fa\u3059\u308b\u65b9\u6cd5\u3001\u304a\u3088\u3073\u4e00\u822c\u7684\u306a\u30bf\u30a4\u30d7\u3068\u4f8b\u3092\u6271\u3044\u307e\u3059\u3002</li> <li>\u30c7\u30fc\u30bf\u69cb\u9020: \u57fa\u672c\u7684\u306a\u30c7\u30fc\u30bf\u578b\u3001\u5206\u985e\u65b9\u6cd5\u3001\u5b9a\u7fa9\u3001\u9577\u6240\u3068\u77ed\u6240\u3001\u4e00\u822c\u7684\u306a\u64cd\u4f5c\u3001\u30bf\u30a4\u30d7\u3001\u5fdc\u7528\u3001\u304a\u3088\u3073\u914d\u5217\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u3001\u30b9\u30bf\u30c3\u30af\u3001\u30ad\u30e5\u30fc\u3001\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3001\u6728\u3001\u30d2\u30fc\u30d7\u3001\u30b0\u30e9\u30d5\u306a\u3069\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u5b9f\u88c5\u65b9\u6cd5\u306b\u7126\u70b9\u3092\u5f53\u3066\u307e\u3059\u3002</li> <li>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0: \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u5b9a\u7fa9\u3057\u3001\u305d\u306e\u9577\u6240\u3068\u77ed\u6240\u3001\u52b9\u7387\u6027\u3001\u5fdc\u7528\u30b7\u30ca\u30ea\u30aa\u3001\u554f\u984c\u89e3\u6c7a\u30b9\u30c6\u30c3\u30d7\u306b\u3064\u3044\u3066\u8b70\u8ad6\u3057\u3001\u691c\u7d22\u3001\u30bd\u30fc\u30c8\u3001\u5206\u5272\u7d71\u6cbb\u3001\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u3001\u52d5\u7684\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3001\u8caa\u6b32\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u30b5\u30f3\u30d7\u30eb\u554f\u984c\u3092\u542b\u307f\u307e\u3059\u3002</li> </ul> <p></p> <p> \u56f3 0-1 \u00a0 \u672c\u66f8\u306e\u4e3b\u306a\u5185\u5bb9 </p>"},{"location":"chapter_preface/about_the_book/#013","title":"0.1.3 \u00a0 \u8b1d\u8f9e","text":"<p>\u672c\u66f8\u306f\u3001\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306e\u591a\u6570\u306e\u8ca2\u732e\u8005\u306b\u3088\u308b\u5171\u540c\u306e\u52aa\u529b\u306e\u3082\u3068\u3001\u7d99\u7d9a\u7684\u306b\u6539\u5584\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u6642\u9593\u3068\u52b4\u529b\u3092\u6ce8\u3044\u3067\u57f7\u7b46\u306b\u643a\u308f\u3063\u3066\u304f\u3060\u3055\u3063\u305f\u3059\u3079\u3066\u306e\u65b9\u3005\u306b\u611f\u8b1d\u3057\u307e\u3059\u3002\u8ca2\u732e\u8005\u306f\u4ee5\u4e0b\u306e\u3068\u304a\u308a\u3067\u3059\uff08GitHub \u306b\u3088\u308a\u81ea\u52d5\u751f\u6210\u3055\u308c\u305f\u9806\u5e8f\uff09\uff1akrahets\u3001coderonion\u3001Gonglja\u3001nuomi1\u3001Reanon\u3001justin-tse\u3001hpstory\u3001danielsss\u3001curtishd\u3001night-cruise\u3001S-N-O-R-L-A-X\u3001rongyi\u3001msk397\u3001gvenusleo\u3001khoaxuantu\u3001rivertwilight\u3001K3v123\u3001gyt95\u3001zhuoqinyue\u3001yuelinxin\u3001Zuoxun\u3001mingXta\u3001Phoenix0415\u3001FangYuan33\u3001GN-Yu\u3001longsizhuo\u3001IsChristina\u3001xBLACKICEx\u3001guowei-gong\u3001Cathay-Chen\u3001pengchzn\u3001QiLOL\u3001magentaqin\u3001hello-ikun\u3001JoseHung\u3001qualifier1024\u3001thomasq0\u3001sunshinesDL\u3001L-Super\u3001Guanngxu\u3001Transmigration-zhou\u3001WSL0809\u3001Slone123c\u3001lhxsm\u3001yuan0221\u3001what-is-me\u3001Shyam-Chen\u3001theNefelibatas\u3001longranger2\u3001codeberg-user\u3001xiongsp\u3001JeffersonHuang\u3001prinpal\u3001seven1240\u3001Wonderdch\u3001malone6\u3001xiaomiusa87\u3001gaofer\u3001bluebean-cloud\u3001a16su\u3001SamJin98\u3001hongyun-robot\u3001nanlei\u3001XiaChuerwu\u3001yd-j\u3001iron-irax\u3001mgisr\u3001steventimes\u3001junminhong\u3001heshuyue\u3001danny900714\u3001MolDuM\u3001Nigh\u3001Dr-XYZ\u3001XC-Zero\u3001reeswell\u3001PXG-XPG\u3001NI-SW\u3001Horbin-Magician\u3001Enlightenus\u3001YangXuanyi\u3001beatrix-chan\u3001DullSword\u3001xjr7670\u3001jiaxianhua\u3001qq909244296\u3001iStig\u3001boloboloda\u3001hts0000\u3001gledfish\u3001wenjianmin\u3001keshida\u3001kilikilikid\u3001lclc6\u3001lwbaptx\u3001linyejoe2\u3001liuxjerry\u3001llql1211\u3001fbigm\u3001echo1937\u3001szu17dmy\u3001dshlstarr\u3001Yucao-cy\u3001coderlef\u3001czruby\u3001bongbongbakudan\u3001beintentional\u3001ZongYangL\u3001ZhongYuuu\u3001ZhongGuanbin\u3001hezhizhen\u3001linzeyan\u3001ZJKung\u3001luluxia\u3001xb534\u3001ztkuaikuai\u3001yw-1021\u3001ElaBosak233\u3001baagod\u3001zhouLion\u3001yishangzhang\u3001yi427\u3001yanedie\u3001yabo083\u3001weibk\u3001wangwang105\u3001th1nk3r-ing\u3001tao363\u30014yDX3906\u3001syd168\u3001sslmj2020\u3001smilelsb\u3001siqyka\u3001selear\u3001sdshaoda\u3001Xi-Row\u3001popozhu\u3001nuquist19\u3001noobcodemaker\u3001XiaoK29\u3001chadyi\u3001lyl625760\u3001lucaswangdev\u30010130w\u3001shanghai-Jerry\u3001EJackYang\u3001Javesun99\u3001eltociear\u3001lipusheng\u3001KNChiu\u3001BlindTerran\u3001ShiMaRing\u3001lovelock\u3001FreddieLi\u3001FloranceYeh\u3001fanchenggang\u3001gltianwen\u3001goerll\u3001nedchu\u3001curly210102\u3001CuB3y0nd\u3001KraHsu\u3001CarrotDLaw\u3001youshaoXG\u3001bubble9um\u3001Asashishi\u3001Asa0oo0o0o\u3001fanenr\u3001eagleanurag\u3001akshiterate\u300152coder\u3001foursevenlove\u3001KorsChen\u3001GaochaoZhu\u3001hopkings2008\u3001yang-le\u3001realwujing\u3001Evilrabbit520\u3001Umer-Jahangir\u3001Turing-1024-Lee\u3001Suremotoo\u3001paoxiaomooo\u3001Chieko-Seren\u3001Allen-Scai\u3001ymmmas\u3001Risuntsy\u3001Richard-Zhang1019\u3001RafaelCaso\u3001qingpeng9802\u3001primexiao\u3001Urbaner3\u3001zhongfq\u3001nidhoggfgg\u3001MwumLi\u3001CreatorMetaSky\u3001martinx\u3001ZnYang2018\u3001hugtyftg\u3001logan-qiu\u3001psychelzh\u3001Keynman\u3001KeiichiKasai\u3001KawaiiAsh\u3002</p> <p>\u3053\u306e\u672c\u306e\u30b3\u30fc\u30c9\u30ec\u30d3\u30e5\u30fc\u4f5c\u696d\u306f\u3001coderonion, Gonglja, gvenusleo, hpstory, justin\u2010tse, khoaxuantu, krahets, night-cruise, nuomi1, Reanon and rongyi\uff08\u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c8\u9806\uff09\u306b\u3088\u3063\u3066\u5b8c\u4e86\u3055\u308c\u307e\u3057\u305f\u3002\u5f7c\u3089\u306e\u6642\u9593\u3068\u52aa\u529b\u306b\u611f\u8b1d\u3057\u3001\u69d8\u3005\u306a\u8a00\u8a9e\u3067\u306e\u30b3\u30fc\u30c9\u306e\u6a19\u6e96\u5316\u3068\u7d71\u4e00\u6027\u3092\u78ba\u4fdd\u3057\u3066\u304f\u3060\u3055\u3044\u307e\u3057\u305f\u3002</p> <p>\u672c\u66f8\u306e\u7e41\u4f53\u5b57\u4e2d\u56fd\u8a9e\u7248\u306f Shyam-Chen \u304a\u3088\u3073 Dr-XYZ \u306b\u3088\u3063\u3066\u30ec\u30d3\u30e5\u30fc\u3055\u308c\u3001\u82f1\u8a9e\u7248\u306f yuelinxin\u3001K3v123\u3001QiLOL\u3001Phoenix0415\u3001SamJin98\u3001yanedie\u3001RafaelCaso\u3001pengchzn\u3001thomasq0\u3001magentaqin \u306b\u3088\u3063\u3066\u30ec\u30d3\u30e5\u30fc\u3055\u308c\u3001\u65e5\u672c\u8a9e\u7248\u306f eltociear \u306b\u3088\u3063\u3066\u30ec\u30d3\u30e5\u30fc\u3055\u308c\u307e\u3057\u305f\u3002\u5f7c\u3089\u306e\u7d99\u7d9a\u7684\u306a\u8ca2\u732e\u306e\u304a\u304b\u3052\u3067\u3001\u672c\u66f8\u306f\u3088\u308a\u5e45\u5e83\u3044\u8aad\u8005\u5c64\u306b\u63d0\u4f9b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u3066\u3044\u307e\u3059\u3002\u3053\u3053\u306b\u6df1\u304f\u611f\u8b1d\u3044\u305f\u3057\u307e\u3059\u3002</p> <p>\u3053\u306e\u672c\u306e\u5236\u4f5c\u904e\u7a0b\u306b\u304a\u3044\u3066\u3001\u591a\u304f\u306e\u65b9\u3005\u304b\u3089\u8cb4\u91cd\u306a\u652f\u63f4\u3092\u3044\u305f\u3060\u304d\u307e\u3057\u305f\u3002\u3053\u308c\u3089\u306b\u9650\u5b9a\u3055\u308c\u307e\u305b\u3093\u304c\uff1a</p> <ul> <li>\u4f1a\u793e\u3067\u306e\u30e1\u30f3\u30bf\u30fc\u3001\u674e\u7199\u535a\u58eb\u306b\u611f\u8b1d\u3057\u307e\u3059\u3002\u3042\u308b\u4f1a\u8a71\u3067\u300c\u65e9\u304f\u884c\u52d5\u3057\u308d\u300d\u3068\u52b1\u307e\u3057\u3066\u3044\u305f\u3060\u304d\u3001\u3053\u306e\u672c\u3092\u66f8\u304f\u6c7a\u610f\u3092\u56fa\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3057\u305f\u3002</li> <li>\u30ac\u30fc\u30eb\u30d5\u30ec\u30f3\u30c9\u306eBubble\u306b\u611f\u8b1d\u3057\u307e\u3059\u3002\u3053\u306e\u672c\u306e\u6700\u521d\u306e\u8aad\u8005\u3068\u3057\u3066\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u521d\u5fc3\u8005\u306e\u8996\u70b9\u304b\u3089\u591a\u304f\u306e\u8cb4\u91cd\u306a\u63d0\u6848\u3092\u3044\u305f\u3060\u304d\u3001\u3053\u306e\u672c\u3092\u521d\u5fc3\u8005\u306b\u3088\u308a\u9069\u3057\u305f\u3082\u306e\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u307e\u3057\u305f\u3002</li> <li>Tengbao\u3001Qibao\u3001Feibao\u306b\u611f\u8b1d\u3057\u307e\u3059\u3002\u3053\u306e\u672c\u306e\u30af\u30ea\u30a8\u30a4\u30c6\u30a3\u30d6\u306a\u540d\u524d\u3092\u8003\u3048\u3066\u304f\u3060\u3055\u308a\u3001\u307f\u3093\u306a\u304c\u521d\u3081\u3066\u300cHello World!\u300d\u3092\u66f8\u3044\u305f\u6642\u306e\u7d20\u6674\u3089\u3057\u3044\u601d\u3044\u51fa\u3092\u547c\u3073\u8d77\u3053\u3057\u3066\u304f\u308c\u307e\u3057\u305f\u3002</li> <li>Xiaoquan\u306b\u611f\u8b1d\u3057\u307e\u3059\u3002\u77e5\u7684\u8ca1\u7523\u306b\u95a2\u3059\u308b\u5c02\u9580\u7684\u306a\u652f\u63f4\u3092\u63d0\u4f9b\u3057\u3066\u304f\u3060\u3055\u308a\u3001\u3053\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u672c\u306e\u958b\u767a\u306b\u304a\u3044\u3066\u91cd\u8981\u306a\u5f79\u5272\u3092\u679c\u305f\u3057\u3066\u304f\u3060\u3055\u3044\u307e\u3057\u305f\u3002</li> <li>Sutong\u306b\u611f\u8b1d\u3057\u307e\u3059\u3002\u3053\u306e\u672c\u306e\u7f8e\u3057\u3044\u30ab\u30d0\u30fc\u3068\u30ed\u30b4\u3092\u30c7\u30b6\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u308a\u3001\u79c1\u306e\u8981\u6c42\u3067\u4f55\u5ea6\u3082\u4fee\u6b63\u3092\u8f9b\u62b1\u5f37\u304f\u884c\u3063\u3066\u304f\u3060\u3055\u3044\u307e\u3057\u305f\u3002</li> <li>@squidfunk \u306b\u611f\u8b1d\u3057\u307e\u3059\u3002\u57f7\u7b46\u3068\u7d44\u7248\u306e\u63d0\u6848\u3001\u304a\u3088\u3073\u5f7c\u304c\u958b\u767a\u3057\u305f\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30c6\u30fc\u30de Material-for-MkDocs \u3092\u63d0\u4f9b\u3057\u3066\u304f\u3060\u3055\u3044\u307e\u3057\u305f\u3002</li> </ul> <p>\u57f7\u7b46\u306e\u904e\u7a0b\u3067\u3001\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306b\u95a2\u3059\u308b\u591a\u6570\u306e\u6559\u79d1\u66f8\u3084\u8a18\u4e8b\u3092\u6df1\u304f\u7814\u7a76\u3057\u307e\u3057\u305f\u3002\u3053\u308c\u3089\u306e\u4f5c\u54c1\u306f\u6a21\u7bc4\u7684\u306a\u30e2\u30c7\u30eb\u3068\u3057\u3066\u6a5f\u80fd\u3057\u3001\u3053\u306e\u672c\u306e\u5185\u5bb9\u306e\u6b63\u78ba\u6027\u3068\u54c1\u8cea\u3092\u78ba\u4fdd\u3057\u3066\u304f\u3060\u3055\u3044\u307e\u3057\u305f\u3002\u5148\u4eba\u306e\u65b9\u3005\u306e\u8cb4\u91cd\u306a\u8ca2\u732e\u306b\u611f\u8b1d\u3044\u305f\u3057\u307e\u3059\uff01</p> <p>\u3053\u306e\u672c\u306f\u3001\u7406\u8ad6\u3068\u5b9f\u8df5\u3092\u7d44\u307f\u5408\u308f\u305b\u305f\u5b66\u7fd2\u3092\u63d0\u5531\u3057\u3066\u304a\u308a\u3001\u3053\u306e\u70b9\u3067 \"Dive into Deep Learning\" \u304b\u3089\u30a4\u30f3\u30b9\u30d4\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u53d7\u3051\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u512a\u308c\u305f\u672c\u3092\u3059\u3079\u3066\u306e\u8aad\u8005\u306b\u5f37\u304f\u304a\u52e7\u3081\u3057\u307e\u3059\u3002</p> <p>\u7d99\u7d9a\u7684\u306a\u652f\u63f4\u3068\u52b1\u307e\u3057\u306b\u3088\u308a\u3001\u3053\u306e\u8208\u5473\u6df1\u3044\u4ed5\u4e8b\u3092\u3059\u308b\u3053\u3068\u3092\u53ef\u80fd\u306b\u3057\u3066\u304f\u3060\u3055\u3063\u305f\u4e21\u89aa\u306b\u5fc3\u304b\u3089\u611f\u8b1d\u3044\u305f\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_preface/suggestions/","title":"0.2 \u00a0 \u8aad\u307f\u65b9","text":"<p>Tip</p> <p>\u6700\u826f\u306e\u8aad\u66f8\u4f53\u9a13\u306e\u305f\u3081\u306b\u3001\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3092\u901a\u8aad\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_preface/suggestions/#021","title":"0.2.1 \u00a0 \u8a18\u8ff0\u898f\u5247","text":"<ul> <li>\u30bf\u30a4\u30c8\u30eb\u306e\u5f8c\u306b\u300c*\u300d\u304c\u4ed8\u3044\u305f\u7ae0\u306f\u4efb\u610f\u3067\u3042\u308a\u3001\u6bd4\u8f03\u7684\u96e3\u6613\u5ea6\u306e\u9ad8\u3044\u5185\u5bb9\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\u6642\u9593\u306b\u5236\u7d04\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u3053\u308c\u3089\u3092\u30b9\u30ad\u30c3\u30d7\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002</li> <li>\u6280\u8853\u7528\u8a9e\u306f\u592a\u5b57\uff08\u5370\u5237\u7248\u304a\u3088\u3073PDF\u7248\uff09\u307e\u305f\u306f\u4e0b\u7dda\uff08Web\u7248\uff09\u3067\u8868\u793a\u3055\u308c\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u914d\u5217\u306a\u3069\u3067\u3059\u3002\u6280\u8853\u6587\u66f8\u3092\u3088\u308a\u826f\u304f\u7406\u89e3\u3059\u308b\u305f\u3081\u306b\u3001\u3053\u308c\u3089\u306b\u6163\u308c\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002</li> <li>**\u592a\u5b57\u306e\u30c6\u30ad\u30b9\u30c8**\u306f\u91cd\u8981\u306a\u5185\u5bb9\u3084\u8981\u7d04\u6587\u3092\u793a\u3057\u3001\u7279\u5225\u306a\u6ce8\u610f\u3092\u6255\u3046\u4fa1\u5024\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u7279\u5b9a\u306e\u610f\u5473\u3092\u6301\u3064\u5358\u8a9e\u3084\u53e5\u306f\u300c\u5f15\u7528\u7b26\u300d\u3067\u793a\u3055\u308c\u3001\u66d6\u6627\u3055\u3092\u907f\u3051\u307e\u3059\u3002</li> <li>\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u9593\u3067\u4e00\u81f4\u3057\u306a\u3044\u7528\u8a9e\u306b\u3064\u3044\u3066\u306f\u3001\u3053\u306e\u672c\u306fPython\u306b\u5f93\u3044\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001<code>null</code>\u3092\u610f\u5473\u3059\u308b\u305f\u3081\u306b<code>None</code>\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</li> <li>\u3053\u306e\u672c\u306f\u3001\u3088\u308a\u30b3\u30f3\u30d1\u30af\u30c8\u306a\u30b3\u30f3\u30c6\u30f3\u30c4\u30ec\u30a4\u30a2\u30a6\u30c8\u3068\u5f15\u304d\u63db\u3048\u306b\u3001\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306e\u30b3\u30e1\u30f3\u30c8\u898f\u7d04\u3092\u90e8\u5206\u7684\u306b\u7121\u8996\u3057\u3066\u3044\u307e\u3059\u3002\u30b3\u30e1\u30f3\u30c8\u306f\u4e3b\u306b3\u3064\u306e\u30bf\u30a4\u30d7\u3067\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u3059\uff1a\u30bf\u30a4\u30c8\u30eb\u30b3\u30e1\u30f3\u30c8\u3001\u5185\u5bb9\u30b3\u30e1\u30f3\u30c8\u3001\u8907\u6570\u884c\u30b3\u30e1\u30f3\u30c8\u3002</li> </ul> PythonC++JavaC#GoSwiftJSTSDartRustCKotlin <pre><code>\"\"\"\u95a2\u6570\u3001\u30af\u30e9\u30b9\u3001\u30c6\u30b9\u30c8\u30b5\u30f3\u30d7\u30eb\u306a\u3069\u3092\u30e9\u30d9\u30eb\u4ed8\u3051\u3059\u308b\u305f\u3081\u306e\u30d8\u30c3\u30c0\u30fc\u30b3\u30e1\u30f3\u30c8\"\"\"\n\n# \u8a73\u7d30\u3092\u8aac\u660e\u3059\u308b\u305f\u3081\u306e\u30b3\u30e1\u30f3\u30c8\n\n\"\"\"\n\u8907\u6570\u884c\n\u30b3\u30e1\u30f3\u30c8\n\"\"\"\n</code></pre> <pre><code>/* \u95a2\u6570\u3001\u30af\u30e9\u30b9\u3001\u30c6\u30b9\u30c8\u30b5\u30f3\u30d7\u30eb\u306a\u3069\u3092\u30e9\u30d9\u30eb\u4ed8\u3051\u3059\u308b\u305f\u3081\u306e\u30d8\u30c3\u30c0\u30fc\u30b3\u30e1\u30f3\u30c8 */\n\n// \u8a73\u7d30\u3092\u8aac\u660e\u3059\u308b\u305f\u3081\u306e\u30b3\u30e1\u30f3\u30c8\n\n/**\n * \u8907\u6570\u884c\n * \u30b3\u30e1\u30f3\u30c8\n */\n</code></pre> <pre><code>/* \u95a2\u6570\u3001\u30af\u30e9\u30b9\u3001\u30c6\u30b9\u30c8\u30b5\u30f3\u30d7\u30eb\u306a\u3069\u3092\u30e9\u30d9\u30eb\u4ed8\u3051\u3059\u308b\u305f\u3081\u306e\u30d8\u30c3\u30c0\u30fc\u30b3\u30e1\u30f3\u30c8 */\n\n// \u8a73\u7d30\u3092\u8aac\u660e\u3059\u308b\u305f\u3081\u306e\u30b3\u30e1\u30f3\u30c8\n\n/**\n * \u8907\u6570\u884c\n * \u30b3\u30e1\u30f3\u30c8\n */\n</code></pre> <pre><code>/* \u95a2\u6570\u3001\u30af\u30e9\u30b9\u3001\u30c6\u30b9\u30c8\u30b5\u30f3\u30d7\u30eb\u306a\u3069\u3092\u30e9\u30d9\u30eb\u4ed8\u3051\u3059\u308b\u305f\u3081\u306e\u30d8\u30c3\u30c0\u30fc\u30b3\u30e1\u30f3\u30c8 */\n\n// \u8a73\u7d30\u3092\u8aac\u660e\u3059\u308b\u305f\u3081\u306e\u30b3\u30e1\u30f3\u30c8\n\n/**\n * \u8907\u6570\u884c\n * \u30b3\u30e1\u30f3\u30c8\n */\n</code></pre> <pre><code>/* \u95a2\u6570\u3001\u30af\u30e9\u30b9\u3001\u30c6\u30b9\u30c8\u30b5\u30f3\u30d7\u30eb\u306a\u3069\u3092\u30e9\u30d9\u30eb\u4ed8\u3051\u3059\u308b\u305f\u3081\u306e\u30d8\u30c3\u30c0\u30fc\u30b3\u30e1\u30f3\u30c8 */\n\n// \u8a73\u7d30\u3092\u8aac\u660e\u3059\u308b\u305f\u3081\u306e\u30b3\u30e1\u30f3\u30c8\n\n/**\n * \u8907\u6570\u884c\n * \u30b3\u30e1\u30f3\u30c8\n */\n</code></pre> <pre><code>/* \u95a2\u6570\u3001\u30af\u30e9\u30b9\u3001\u30c6\u30b9\u30c8\u30b5\u30f3\u30d7\u30eb\u306a\u3069\u3092\u30e9\u30d9\u30eb\u4ed8\u3051\u3059\u308b\u305f\u3081\u306e\u30d8\u30c3\u30c0\u30fc\u30b3\u30e1\u30f3\u30c8 */\n\n// \u8a73\u7d30\u3092\u8aac\u660e\u3059\u308b\u305f\u3081\u306e\u30b3\u30e1\u30f3\u30c8\n\n/**\n * \u8907\u6570\u884c\n * \u30b3\u30e1\u30f3\u30c8\n */\n</code></pre> <pre><code>/* \u95a2\u6570\u3001\u30af\u30e9\u30b9\u3001\u30c6\u30b9\u30c8\u30b5\u30f3\u30d7\u30eb\u306a\u3069\u3092\u30e9\u30d9\u30eb\u4ed8\u3051\u3059\u308b\u305f\u3081\u306e\u30d8\u30c3\u30c0\u30fc\u30b3\u30e1\u30f3\u30c8 */\n\n// \u8a73\u7d30\u3092\u8aac\u660e\u3059\u308b\u305f\u3081\u306e\u30b3\u30e1\u30f3\u30c8\n\n/**\n * \u8907\u6570\u884c\n * \u30b3\u30e1\u30f3\u30c8\n */\n</code></pre> <pre><code>/* \u95a2\u6570\u3001\u30af\u30e9\u30b9\u3001\u30c6\u30b9\u30c8\u30b5\u30f3\u30d7\u30eb\u306a\u3069\u3092\u30e9\u30d9\u30eb\u4ed8\u3051\u3059\u308b\u305f\u3081\u306e\u30d8\u30c3\u30c0\u30fc\u30b3\u30e1\u30f3\u30c8 */\n\n// \u8a73\u7d30\u3092\u8aac\u660e\u3059\u308b\u305f\u3081\u306e\u30b3\u30e1\u30f3\u30c8\n\n/**\n * \u8907\u6570\u884c\n * \u30b3\u30e1\u30f3\u30c8\n */\n</code></pre> <pre><code>/* \u95a2\u6570\u3001\u30af\u30e9\u30b9\u3001\u30c6\u30b9\u30c8\u30b5\u30f3\u30d7\u30eb\u306a\u3069\u3092\u30e9\u30d9\u30eb\u4ed8\u3051\u3059\u308b\u305f\u3081\u306e\u30d8\u30c3\u30c0\u30fc\u30b3\u30e1\u30f3\u30c8 */\n\n// \u8a73\u7d30\u3092\u8aac\u660e\u3059\u308b\u305f\u3081\u306e\u30b3\u30e1\u30f3\u30c8\n\n/**\n * \u8907\u6570\u884c\n * \u30b3\u30e1\u30f3\u30c8\n */\n</code></pre> <pre><code>/* \u95a2\u6570\u3001\u30af\u30e9\u30b9\u3001\u30c6\u30b9\u30c8\u30b5\u30f3\u30d7\u30eb\u306a\u3069\u3092\u30e9\u30d9\u30eb\u4ed8\u3051\u3059\u308b\u305f\u3081\u306e\u30d8\u30c3\u30c0\u30fc\u30b3\u30e1\u30f3\u30c8 */\n\n// \u8a73\u7d30\u3092\u8aac\u660e\u3059\u308b\u305f\u3081\u306e\u30b3\u30e1\u30f3\u30c8\n\n/**\n * \u8907\u6570\u884c\n * \u30b3\u30e1\u30f3\u30c8\n */\n</code></pre> <pre><code>/* \u95a2\u6570\u3001\u30af\u30e9\u30b9\u3001\u30c6\u30b9\u30c8\u30b5\u30f3\u30d7\u30eb\u306a\u3069\u3092\u30e9\u30d9\u30eb\u4ed8\u3051\u3059\u308b\u305f\u3081\u306e\u30d8\u30c3\u30c0\u30fc\u30b3\u30e1\u30f3\u30c8 */\n\n// \u8a73\u7d30\u3092\u8aac\u660e\u3059\u308b\u305f\u3081\u306e\u30b3\u30e1\u30f3\u30c8\n\n/**\n * \u8907\u6570\u884c\n * \u30b3\u30e1\u30f3\u30c8\n */\n</code></pre> <pre><code>/* \u95a2\u6570\u3001\u30af\u30e9\u30b9\u3001\u30c6\u30b9\u30c8\u30b5\u30f3\u30d7\u30eb\u306a\u3069\u3092\u30e9\u30d9\u30eb\u4ed8\u3051\u3059\u308b\u305f\u3081\u306e\u30d8\u30c3\u30c0\u30fc\u30b3\u30e1\u30f3\u30c8 */\n\n// \u8a73\u7d30\u3092\u8aac\u660e\u3059\u308b\u305f\u3081\u306e\u30b3\u30e1\u30f3\u30c8\n\n/**\n * \u8907\u6570\u884c\n * \u30b3\u30e1\u30f3\u30c8\n */\n</code></pre>"},{"location":"chapter_preface/suggestions/#022","title":"0.2.2 \u00a0 \u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3\u56f3\u89e3\u306b\u3088\u308b\u52b9\u7387\u7684\u5b66\u7fd2","text":"<p>\u30c6\u30ad\u30b9\u30c8\u3068\u6bd4\u8f03\u3057\u3066\u3001\u52d5\u753b\u3084\u753b\u50cf\u306f\u60c5\u5831\u5bc6\u5ea6\u304c\u9ad8\u304f\u3001\u3088\u308a\u69cb\u9020\u5316\u3055\u308c\u3066\u304a\u308a\u3001\u7406\u89e3\u3057\u3084\u3059\u304f\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u672c\u3067\u306f\u3001\u91cd\u8981\u3067\u96e3\u3057\u3044\u6982\u5ff5\u306f\u4e3b\u306b\u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3\u3068\u56f3\u89e3\u3092\u901a\u3058\u3066\u63d0\u793a\u3055\u308c\u3001\u30c6\u30ad\u30b9\u30c8\u306f\u8aac\u660e\u3068\u88dc\u8db3\u3068\u3057\u3066\u6a5f\u80fd\u3057\u307e\u3059\u3002</p> <p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306a\u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3\u3084\u56f3\u89e3\u306e\u3042\u308b\u5185\u5bb9\u306b\u906d\u9047\u3057\u305f\u5834\u5408\u3001\u56f3\u306e\u7406\u89e3\u3092\u512a\u5148\u3057\u3001\u30c6\u30ad\u30b9\u30c8\u3092\u88dc\u8db3\u3068\u3057\u3066\u3001\u4e21\u65b9\u3092\u7d71\u5408\u3057\u3066\u5305\u62ec\u7684\u306a\u7406\u89e3\u3092\u5f97\u3066\u304f\u3060\u3055\u3044\u3002</p> <p></p> <p> \u56f3 0-2 \u00a0 \u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3\u56f3\u89e3\u306e\u4f8b </p>"},{"location":"chapter_preface/suggestions/#023","title":"0.2.3 \u00a0 \u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u5b9f\u8df5\u306b\u3088\u308b\u7406\u89e3\u306e\u6df1\u5316","text":"<p>\u3053\u306e\u672c\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306fGitHub\u30ea\u30dd\u30b8\u30c8\u30ea\u3067\u30db\u30b9\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306b\u306f\u30c6\u30b9\u30c8\u4f8b\u304c\u4ed8\u5c5e\u3057\u3066\u304a\u308a\u3001\u30ef\u30f3\u30af\u30ea\u30c3\u30af\u3067\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002</p> <p>\u6642\u9593\u306b\u4f59\u88d5\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u81ea\u5206\u3067\u30b3\u30fc\u30c9\u3092\u30bf\u30a4\u30d7\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002\u6642\u9593\u304c\u306a\u3044\u5834\u5408\u306f\u3001\u5c11\u306a\u304f\u3068\u3082\u3059\u3079\u3066\u306e\u30b3\u30fc\u30c9\u3092\u8aad\u3093\u3067\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <p>\u30b3\u30fc\u30c9\u3092\u8aad\u3080\u3060\u3051\u3068\u6bd4\u8f03\u3057\u3066\u3001\u30b3\u30fc\u30c9\u3092\u66f8\u304f\u3053\u3068\u306f\u591a\u304f\u306e\u5834\u5408\u3001\u3088\u308a\u591a\u304f\u306e\u5b66\u7fd2\u3092\u3082\u305f\u3089\u3057\u307e\u3059\u3002\u5b9f\u8df5\u306b\u3088\u308b\u5b66\u7fd2\u3053\u305d\u304c\u771f\u306e\u5b66\u7fd2\u65b9\u6cd5\u3067\u3059\u3002</p> <p></p> <p> \u56f3 0-3 \u00a0 \u30b3\u30fc\u30c9\u5b9f\u884c\u4f8b </p> <p>\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u8a2d\u5b9a\u306b\u306f\u3001\u4e3b\u306b3\u3064\u306e\u30b9\u30c6\u30c3\u30d7\u304c\u542b\u307e\u308c\u307e\u3059\u3002</p> <p>\u30b9\u30c6\u30c3\u30d71\uff1a\u30ed\u30fc\u30ab\u30eb\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u74b0\u5883\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3002\u4ed8\u9332\u306e\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306b\u5f93\u3063\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u304b\u3001\u3059\u3067\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <p>\u30b9\u30c6\u30c3\u30d72\uff1a\u30b3\u30fc\u30c9\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u30af\u30ed\u30fc\u30f3\u307e\u305f\u306f\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3002GitHub\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u8a2a\u554f\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <p>Git\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u30af\u30ed\u30fc\u30f3\u3057\u307e\u3059\uff1a</p> <pre><code>git clone https://github.com/krahets/hello-algo.git\n</code></pre> <p>\u307e\u305f\u306f\u3001\u4e0b\u56f3\u306b\u793a\u3059\u5834\u6240\u306b\u3042\u308b\u300cDownload ZIP\u300d\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u3001\u30b3\u30fc\u30c9\u3092\u5727\u7e2eZIP\u30d5\u30a1\u30a4\u30eb\u3068\u3057\u3066\u76f4\u63a5\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u305d\u306e\u5f8c\u3001\u30ed\u30fc\u30ab\u30eb\u3067\u5c55\u958b\u3059\u308b\u3060\u3051\u3067\u3059\u3002</p> <p></p> <p> \u56f3 0-4 \u00a0 \u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30af\u30ed\u30fc\u30f3\u3068\u30b3\u30fc\u30c9\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 </p> <p>\u30b9\u30c6\u30c3\u30d73\uff1a\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u3002\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u4e0a\u90e8\u306b\u30d5\u30a1\u30a4\u30eb\u540d\u304c\u8a18\u8f09\u3055\u308c\u305f\u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u306b\u3064\u3044\u3066\u306f\u3001\u30ea\u30dd\u30b8\u30c8\u30ea\u306e<code>codes</code>\u30d5\u30a9\u30eb\u30c0\u3067\u5bfe\u5fdc\u3059\u308b\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u30d5\u30a1\u30a4\u30eb\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u30ef\u30f3\u30af\u30ea\u30c3\u30af\u3067\u5b9f\u884c\u3067\u304d\u3001\u4e0d\u8981\u306a\u30c7\u30d0\u30c3\u30b0\u6642\u9593\u3092\u7bc0\u7d04\u3057\u3001\u5b66\u7fd2\u306b\u96c6\u4e2d\u3067\u304d\u307e\u3059\u3002</p> <p></p> <p> \u56f3 0-5 \u00a0 \u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u3068\u5bfe\u5fdc\u3059\u308b\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u30d5\u30a1\u30a4\u30eb </p>"},{"location":"chapter_preface/suggestions/#024","title":"0.2.4 \u00a0 \u8b70\u8ad6\u306b\u3088\u308b\u5171\u540c\u5b66\u7fd2","text":"<p>\u3053\u306e\u672c\u3092\u8aad\u3093\u3067\u3044\u308b\u9593\u3001\u5b66\u3079\u306a\u304b\u3063\u305f\u70b9\u3092\u98db\u3070\u3055\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u30b3\u30e1\u30f3\u30c8\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u6c17\u8efd\u306b\u8cea\u554f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u559c\u3093\u3067\u304a\u7b54\u3048\u3057\u3001\u901a\u5e382\u65e5\u4ee5\u5185\u306b\u56de\u7b54\u3067\u304d\u307e\u3059\u3002</p> <p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u5404\u7ae0\u306e\u4e0b\u90e8\u306b\u30b3\u30e1\u30f3\u30c8\u30bb\u30af\u30b7\u30e7\u30f3\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30b3\u30e1\u30f3\u30c8\u306b\u6ce8\u610f\u3092\u6255\u3046\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002\u4ed6\u306e\u4eba\u304c\u906d\u9047\u3057\u305f\u554f\u984c\u3092\u77e5\u308b\u3053\u3068\u3067\u3001\u77e5\u8b58\u306e\u30ae\u30e3\u30c3\u30d7\u3092\u7279\u5b9a\u3057\u3001\u3088\u308a\u6df1\u3044\u601d\u7d22\u3092\u4fc3\u3059\u3060\u3051\u3067\u306a\u304f\u3001\u4ef2\u9593\u306e\u8aad\u8005\u306e\u8cea\u554f\u306b\u7b54\u3048\u305f\u308a\u3001\u6d1e\u5bdf\u3092\u5171\u6709\u3057\u305f\u308a\u3001\u76f8\u4e92\u306e\u5411\u4e0a\u3092\u4fc3\u9032\u3057\u305f\u308a\u3059\u308b\u3053\u3068\u3067\u5bdb\u5927\u306b\u8ca2\u732e\u3059\u308b\u3053\u3068\u3082\u62db\u5f85\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 0-6 \u00a0 \u30b3\u30e1\u30f3\u30c8\u30bb\u30af\u30b7\u30e7\u30f3\u306e\u4f8b </p>"},{"location":"chapter_preface/suggestions/#025","title":"0.2.5 \u00a0 \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u5b66\u7fd2\u30d1\u30b9","text":"<p>\u5168\u4f53\u7684\u306b\u3001\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u30de\u30b9\u30bf\u30fc\u3059\u308b\u65c5\u306f3\u3064\u306e\u6bb5\u968e\u306b\u5206\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff1a</p> <ol> <li>\u6bb5\u968e1\uff1a\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5165\u9580\u3002\u3055\u307e\u3056\u307e\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u7279\u6027\u3068\u4f7f\u7528\u6cd5\u306b\u6163\u308c\u3001\u7570\u306a\u308b\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u539f\u7406\u3001\u30d7\u30ed\u30bb\u30b9\u3001\u7528\u9014\u3001\u52b9\u7387\u306b\u3064\u3044\u3066\u5b66\u3076\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u6bb5\u968e2\uff1a\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u554f\u984c\u306e\u7df4\u7fd2\u3002Sword for Offer\u3084LeetCode Hot 100\u306a\u3069\u306e\u4eba\u6c17\u306e\u3042\u308b\u554f\u984c\u304b\u3089\u59cb\u3081\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u3001\u5c11\u306a\u304f\u3068\u3082100\u554f\u3092\u84c4\u7a4d\u3057\u3066\u4e3b\u6d41\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u554f\u984c\u306b\u6163\u308c\u308b\u3053\u3068\u3067\u3059\u3002\u7df4\u7fd2\u3092\u59cb\u3081\u308b\u3068\u5fd8\u5374\u304c\u8ab2\u984c\u306b\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u3053\u308c\u306f\u6b63\u5e38\u306a\u3053\u3068\u3067\u3059\u306e\u3067\u3054\u5b89\u5fc3\u304f\u3060\u3055\u3044\u3002\u300c\u30a8\u30d3\u30f3\u30b0\u30cf\u30a6\u30b9\u306e\u5fd8\u5374\u66f2\u7dda\u300d\u306b\u5f93\u3063\u3066\u554f\u984c\u3092\u5fa9\u7fd2\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u901a\u5e383\u301c5\u56de\u306e\u53cd\u5fa9\u306e\u5f8c\u3001\u305d\u308c\u3089\u3092\u899a\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3067\u3057\u3087\u3046\u3002</li> <li>\u6bb5\u968e3\uff1a\u77e5\u8b58\u4f53\u7cfb\u306e\u69cb\u7bc9\u3002\u5b66\u7fd2\u306e\u9762\u3067\u306f\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u30b3\u30e9\u30e0\u8a18\u4e8b\u3001\u89e3\u6cd5\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u6559\u79d1\u66f8\u3092\u8aad\u3093\u3067\u77e5\u8b58\u4f53\u7cfb\u3092\u7d99\u7d9a\u7684\u306b\u8c4a\u304b\u306b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u7df4\u7fd2\u306e\u9762\u3067\u306f\u3001\u30c8\u30d4\u30c3\u30af\u5225\u5206\u985e\u3001\u4e00\u3064\u306e\u554f\u984c\u306b\u5bfe\u3059\u308b\u8907\u6570\u306e\u89e3\u6cd5\u3001\u8907\u6570\u306e\u554f\u984c\u306b\u5bfe\u3059\u308b\u4e00\u3064\u306e\u89e3\u6cd5\u306a\u3069\u3001\u9ad8\u5ea6\u306a\u6226\u7565\u3092\u8a66\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u6226\u7565\u306b\u95a2\u3059\u308b\u6d1e\u5bdf\u306f\u3001\u3055\u307e\u3056\u307e\u306a\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3067\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</li> </ol> <p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u3053\u306e\u672c\u306f\u4e3b\u306b\u300c\u6bb5\u968e1\u300d\u3092\u30ab\u30d0\u30fc\u3057\u3066\u304a\u308a\u3001\u6bb5\u968e2\u30683\u306b\u3088\u308a\u52b9\u7387\u7684\u306b\u53d6\u308a\u7d44\u3080\u306e\u306b\u5f79\u7acb\u3064\u3053\u3068\u3092\u76ee\u7684\u3068\u3057\u3066\u3044\u307e\u3059\u3002</p> <p></p> <p> \u56f3 0-7 \u00a0 \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u5b66\u7fd2\u30d1\u30b9 </p>"},{"location":"chapter_preface/summary/","title":"0.3 \u00a0 \u307e\u3068\u3081","text":"<ul> <li>\u3053\u306e\u672c\u306e\u4e3b\u306a\u8aad\u8005\u306f\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u521d\u5fc3\u8005\u3067\u3059\u3002\u3059\u3067\u306b\u57fa\u672c\u7684\u306a\u77e5\u8b58\u3092\u304a\u6301\u3061\u306e\u5834\u5408\u3001\u3053\u306e\u672c\u306f\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u77e5\u8b58\u3092\u4f53\u7cfb\u7684\u306b\u5fa9\u7fd2\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u3001\u3053\u306e\u672c\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306f\u300c\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u30c4\u30fc\u30eb\u30ad\u30c3\u30c8\u300d\u3068\u3057\u3066\u3082\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002</li> <li>\u3053\u306e\u672c\u306f3\u3064\u306e\u4e3b\u8981\u306a\u30bb\u30af\u30b7\u30e7\u30f3\u3001\u8a08\u7b97\u91cf\u89e3\u6790\u3001\u30c7\u30fc\u30bf\u69cb\u9020\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u69cb\u6210\u3055\u308c\u3066\u304a\u308a\u3001\u3053\u306e\u5206\u91ce\u306e\u307b\u3068\u3093\u3069\u306e\u30c8\u30d4\u30c3\u30af\u3092\u30ab\u30d0\u30fc\u3057\u3066\u3044\u307e\u3059\u3002</li> <li>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u521d\u5fc3\u8005\u306b\u3068\u3063\u3066\u3001\u591a\u304f\u306e\u56de\u308a\u9053\u3084\u4e00\u822c\u7684\u306a\u843d\u3068\u3057\u7a74\u3092\u907f\u3051\u308b\u305f\u3081\u306b\u3001\u521d\u671f\u6bb5\u968e\u3067\u5165\u9580\u66f8\u3092\u8aad\u3080\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002</li> <li>\u672c\u66f8\u5185\u306e\u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3\u3068\u56f3\u306f\u901a\u5e38\u3001\u91cd\u8981\u306a\u30dd\u30a4\u30f3\u30c8\u3068\u96e3\u3057\u3044\u77e5\u8b58\u3092\u7d39\u4ecb\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u672c\u3092\u8aad\u3080\u969b\u306b\u306f\u3053\u308c\u3089\u306b\u3088\u308a\u591a\u304f\u306e\u6ce8\u610f\u3092\u6255\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u5b9f\u8df5\u306f\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3092\u5b66\u3076\u6700\u826f\u306e\u65b9\u6cd5\u3067\u3059\u3002\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u3057\u3001\u81ea\u5206\u3067\u30b3\u30fc\u30c9\u3092\u30bf\u30a4\u30d7\u3059\u308b\u3053\u3068\u3092\u5f37\u304f\u304a\u52e7\u3081\u3057\u307e\u3059\u3002</li> <li>\u3053\u306e\u672c\u306eWeb\u7248\u306e\u5404\u7ae0\u306b\u306f\u8b70\u8ad6\u30bb\u30af\u30b7\u30e7\u30f3\u304c\u3042\u308a\u3001\u3044\u3064\u3067\u3082\u8cea\u554f\u3084\u6d1e\u5bdf\u3092\u5171\u6709\u3059\u308b\u3053\u3068\u3092\u6b53\u8fce\u3057\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_reference/","title":"\u53c2\u8003\u6587\u732e","text":"<p>[1] Thomas H. Cormen, et al. Introduction to Algorithms (3<sup>rd</sup> Edition).</p> <p>[2] Aditya Bhargava. Grokking Algorithms: An Illustrated Guide for Programmers and Other Curious People (1<sup>st</sup> Edition).</p> <p>[3] Robert Sedgewick, et al. Algorithms (4<sup>th</sup> Edition).</p> <p>[4] Yan Weimin. Data Structures (C Language Version).</p> <p>[5] Deng Junhui. Data Structures (C++ Language Version, Third Edition).</p> <p>[6] Mark Allen Weiss, translated by Chen Yue. Data Structures and Algorithm Analysis in Java (Third Edition).</p> <p>[7] Cheng Jie. Speaking of Data Structures.</p> <p>[8] Wang Zheng. The Beauty of Data Structures and Algorithms.</p> <p>[9] Gayle Laakmann McDowell. Cracking the Coding Interview: 189 Programming Questions and Solutions (6<sup>th</sup> Edition).</p> <p>[10] Aston Zhang, et al. Dive into Deep Learning.</p>"},{"location":"chapter_searching/","title":"\u7b2c 10 \u7ae0 \u00a0 \u63a2\u7d22","text":"<p>Abstract</p> <p>\u63a2\u7d22\u306f\u672a\u77e5\u3078\u306e\u5192\u967a\u3067\u3059\u3002\u795e\u79d8\u7684\u306a\u7a7a\u9593\u306e\u9685\u3005\u307e\u3067\u5de1\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3057\u3001\u3042\u308b\u3044\u306f\u3059\u3050\u306b\u76ee\u6a19\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002</p> <p>\u3053\u306e\u767a\u898b\u306e\u65c5\u306b\u304a\u3044\u3066\u3001\u305d\u308c\u305e\u308c\u306e\u63a2\u67fb\u306f\u4e88\u671f\u3057\u306a\u3044\u7b54\u3048\u3067\u7d42\u308f\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002</p>"},{"location":"chapter_searching/#_1","title":"\u7ae0\u306e\u5185\u5bb9","text":"<ul> <li>10.1 \u00a0 \u4e8c\u5206\u63a2\u7d22</li> <li>10.2 \u00a0 \u4e8c\u5206\u63a2\u7d22\u306e\u633f\u5165\u70b9</li> <li>10.3 \u00a0 \u4e8c\u5206\u63a2\u7d22\u306e\u5883\u754c</li> <li>10.4 \u00a0 \u30cf\u30c3\u30b7\u30e5\u6700\u9069\u5316\u6226\u7565</li> <li>10.5 \u00a0 \u63a2\u7d22\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u518d\u8a8d\u8b58</li> <li>10.6 \u00a0 \u307e\u3068\u3081</li> </ul>"},{"location":"chapter_searching/binary_search/","title":"10.1 \u00a0 \u4e8c\u5206\u63a2\u7d22","text":"<p>\u4e8c\u5206\u63a2\u7d22\u306f\u5206\u5272\u7d71\u6cbb\u6226\u7565\u3092\u7528\u3044\u308b\u52b9\u7387\u7684\u306a\u63a2\u7d22\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u3059\u3002\u914d\u5217\u5185\u306e\u8981\u7d20\u306e\u6574\u5217\u9806\u5e8f\u3092\u5229\u7528\u3057\u3001\u5404\u53cd\u5fa9\u3067\u63a2\u7d22\u533a\u9593\u3092\u534a\u5206\u306b\u6e1b\u3089\u3057\u306a\u304c\u3089\u3001\u76ee\u6a19\u8981\u7d20\u304c\u898b\u3064\u304b\u308b\u304b\u63a2\u7d22\u533a\u9593\u304c\u7a7a\u306b\u306a\u308b\u307e\u3067\u7d9a\u884c\u3057\u307e\u3059\u3002</p> <p>Question</p> <p>\u9577\u3055\\(n\\)\u306e\u914d\u5217<code>nums</code>\u304c\u4e0e\u3048\u3089\u308c\u3001\u8981\u7d20\u306f\u91cd\u8907\u306a\u3057\u3067\u6607\u9806\u306b\u914d\u5217\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u914d\u5217\u5185\u306e\u8981\u7d20<code>target</code>\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u898b\u3064\u3051\u3066\u8fd4\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u914d\u5217\u306b\u8981\u7d20\u304c\u542b\u307e\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306f\\(-1\\)\u3092\u8fd4\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4f8b\u3092\u4e0b\u56f3\u306b\u793a\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 10-1 \u00a0 Binary search example data </p> <p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u307e\u305a\\(i = 0\\)\u3068\\(j = n - 1\\)\u3067\u30dd\u30a4\u30f3\u30bf\u3092\u521d\u671f\u5316\u3057\u3001\u305d\u308c\u305e\u308c\u914d\u5217\u306e\u6700\u521d\u3068\u6700\u5f8c\u306e\u8981\u7d20\u3092\u6307\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306f\u307e\u305f\u5168\u4f53\u306e\u63a2\u7d22\u533a\u9593\\([0, n - 1]\\)\u3092\u8868\u3057\u307e\u3059\u3002\u89d2\u62ec\u5f27\u306f\u9589\u533a\u9593\u3092\u793a\u3057\u3001\u5883\u754c\u5024\u81ea\u8eab\u3082\u542b\u3080\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <p>\u305d\u3057\u3066\u3001\u4ee5\u4e0b\u306e2\u3064\u306e\u30b9\u30c6\u30c3\u30d7\u3092\u30eb\u30fc\u30d7\u3067\u5b9f\u884c\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</p> <ol> <li>\u4e2d\u70b9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\\(m = \\lfloor {(i + j) / 2} \\rfloor\\)\u3092\u8a08\u7b97\u3057\u307e\u3059\u3002\u3053\u3053\u3067\\(\\lfloor \\: \\rfloor\\)\u306f\u5e8a\u95a2\u6570\u3092\u8868\u3057\u307e\u3059\u3002</li> <li><code>nums[m]</code>\u3068<code>target</code>\u306e\u6bd4\u8f03\u306b\u57fa\u3065\u3044\u3066\u3001\u4ee5\u4e0b\u306e3\u3064\u306e\u30b1\u30fc\u30b9\u306e\u3046\u30611\u3064\u3092\u9078\u629e\u3057\u3066\u5b9f\u884c\u3057\u307e\u3059\u3002<ol> <li><code>nums[m] &lt; target</code>\u306e\u5834\u5408\u3001<code>target</code>\u306f\u533a\u9593\\([m + 1, j]\\)\u306b\u3042\u308b\u3053\u3068\u3092\u793a\u3059\u305f\u3081\u3001\\(i = m + 1\\)\u3068\u3057\u307e\u3059\u3002</li> <li><code>nums[m] &gt; target</code>\u306e\u5834\u5408\u3001<code>target</code>\u306f\u533a\u9593\\([i, m - 1]\\)\u306b\u3042\u308b\u3053\u3068\u3092\u793a\u3059\u305f\u3081\u3001\\(j = m - 1\\)\u3068\u3057\u307e\u3059\u3002</li> <li><code>nums[m] = target</code>\u306e\u5834\u5408\u3001<code>target</code>\u304c\u898b\u3064\u304b\u3063\u305f\u3053\u3068\u3092\u793a\u3059\u305f\u3081\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\\(m\\)\u3092\u8fd4\u3057\u307e\u3059\u3002</li> </ol> </li> </ol> <p>\u914d\u5217\u306b\u76ee\u6a19\u8981\u7d20\u304c\u542b\u307e\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001\u63a2\u7d22\u533a\u9593\u306f\u6700\u7d42\u7684\u306b\u7a7a\u306b\u306a\u308a\u3001\\(-1\\)\u3092\u8fd4\u3057\u3066\u7d42\u4e86\u3057\u307e\u3059\u3002</p> &lt;1&gt;&lt;2&gt;&lt;3&gt;&lt;4&gt;&lt;5&gt;&lt;6&gt;&lt;7&gt; <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p> \u56f3 10-2 \u00a0 Binary search process </p> <p>\\(i\\)\u3068\\(j\\)\u304c\u4e21\u65b9\u3068\u3082<code>int</code>\u578b\u3067\u3042\u308b\u305f\u3081\u3001**\\(i + j\\)\u306f<code>int</code>\u578b\u306e\u7bc4\u56f2\u3092\u8d85\u3048\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b**\u3053\u3068\u306f\u6ce8\u76ee\u306b\u5024\u3057\u307e\u3059\u3002\u5927\u304d\u306a\u6570\u306e\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u3092\u907f\u3051\u308b\u305f\u3081\u3001\u901a\u5e38\u306f\u5f0f\\(m = \\lfloor {i + (j - i) / 2} \\rfloor\\)\u3092\u4f7f\u7528\u3057\u3066\u4e2d\u70b9\u3092\u8a08\u7b97\u3057\u307e\u3059\u3002</p> <p>\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby binary_search.py<pre><code>def binary_search(nums: list[int], target: int) -&gt; int:\n \"\"\"\u4e8c\u5206\u63a2\u7d22\uff08\u4e21\u7aef\u9589\u533a\u9593\uff09\"\"\"\n # \u4e21\u7aef\u9589\u533a\u9593 [0, n-1] \u3092\u521d\u671f\u5316\u3001\u3059\u306a\u308f\u3061 i, j \u306f\u305d\u308c\u305e\u308c\u914d\u5217\u306e\u6700\u521d\u306e\u8981\u7d20\u3068\u6700\u5f8c\u306e\u8981\u7d20\u3092\u6307\u3059\n i, j = 0, len(nums) - 1\n # \u691c\u7d22\u533a\u9593\u304c\u7a7a\u306b\u306a\u308b\u307e\u3067\u30eb\u30fc\u30d7\uff08i &gt; j \u306e\u3068\u304d\u7a7a\uff09\n while i &lt;= j:\n # \u7406\u8ad6\u7684\u306b\u306f\u3001Python\u306e\u6570\u5024\u306f\u7121\u9650\u306b\u5927\u304d\u304f\u306a\u308b\u3053\u3068\u304c\u3067\u304d\u308b\uff08\u30e1\u30e2\u30ea\u30b5\u30a4\u30ba\u306b\u4f9d\u5b58\uff09\u305f\u3081\u3001\u5927\u304d\u306a\u6570\u306e\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u3092\u8003\u616e\u3059\u308b\u5fc5\u8981\u306f\u306a\u3044\n m = i + (j - i) // 2 # \u4e2d\u70b9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 m \u3092\u8a08\u7b97\n if nums[m] &lt; target:\n i = m + 1 # \u3053\u306e\u5834\u5408\u3001target \u306f\u533a\u9593 [m+1, j] \u306b\u3042\u308b\u3053\u3068\u3092\u793a\u3059\n elif nums[m] &gt; target:\n j = m - 1 # \u3053\u306e\u5834\u5408\u3001target \u306f\u533a\u9593 [i, m-1] \u306b\u3042\u308b\u3053\u3068\u3092\u793a\u3059\n else:\n return m # \u30bf\u30fc\u30b2\u30c3\u30c8\u8981\u7d20\u304c\u898b\u3064\u304b\u3063\u305f\u305f\u3081\u3001\u305d\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u3059\n return -1 # \u30bf\u30fc\u30b2\u30c3\u30c8\u8981\u7d20\u304c\u898b\u3064\u304b\u3089\u306a\u304b\u3063\u305f\u305f\u3081\u3001-1 \u3092\u8fd4\u3059\n</code></pre> binary_search.cpp<pre><code>/* \u4e8c\u5206\u63a2\u7d22\uff08\u4e21\u7aef\u9589\u533a\u9593\uff09 */\nint binarySearch(vector&lt;int&gt; &amp;nums, int target) {\n // \u4e21\u7aef\u9589\u533a\u9593[0, n-1]\u3092\u521d\u671f\u5316\u3001\u3059\u306a\u308f\u3061i\u3001j\u306f\u305d\u308c\u305e\u308c\u914d\u5217\u306e\u6700\u521d\u306e\u8981\u7d20\u3068\u6700\u5f8c\u306e\u8981\u7d20\u3092\u6307\u3059\n int i = 0, j = nums.size() - 1;\n // \u63a2\u7d22\u533a\u9593\u304c\u7a7a\u306b\u306a\u308b\u307e\u3067\u30eb\u30fc\u30d7\uff08i &gt; j\u306e\u6642\u7a7a\u306b\u306a\u308b\uff09\n while (i &lt;= j) {\n int m = i + (j - i) / 2; // \u4e2d\u70b9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9m\u3092\u8a08\u7b97\n if (nums[m] &lt; target) // \u3053\u306e\u72b6\u6cc1\u306ftarget\u304c\u533a\u9593[m+1, j]\u306b\u3042\u308b\u3053\u3068\u3092\u793a\u3059\n i = m + 1;\n else if (nums[m] &gt; target) // \u3053\u306e\u72b6\u6cc1\u306ftarget\u304c\u533a\u9593[i, m-1]\u306b\u3042\u308b\u3053\u3068\u3092\u793a\u3059\n j = m - 1;\n else // \u30bf\u30fc\u30b2\u30c3\u30c8\u8981\u7d20\u304c\u898b\u3064\u304b\u3063\u305f\u305f\u3081\u3001\u305d\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u3059\n return m;\n }\n // \u30bf\u30fc\u30b2\u30c3\u30c8\u8981\u7d20\u304c\u898b\u3064\u304b\u3089\u306a\u304b\u3063\u305f\u305f\u3081\u3001-1\u3092\u8fd4\u3059\n return -1;\n}\n</code></pre> binary_search.java<pre><code>/* \u4e8c\u5206\u63a2\u7d22\uff08\u4e21\u7aef\u9589\u533a\u9593\uff09 */\nint binarySearch(int[] nums, int target) {\n // \u4e21\u7aef\u9589\u533a\u9593 [0, n-1] \u3092\u521d\u671f\u5316\u3001\u3059\u306a\u308f\u3061 i, j \u306f\u305d\u308c\u305e\u308c\u914d\u5217\u306e\u6700\u521d\u306e\u8981\u7d20\u3068\u6700\u5f8c\u306e\u8981\u7d20\u3092\u6307\u3059\n int i = 0, j = nums.length - 1;\n // \u63a2\u7d22\u533a\u9593\u304c\u7a7a\u306b\u306a\u308b\u307e\u3067\u30eb\u30fc\u30d7\uff08i &gt; j \u306e\u3068\u304d\u7a7a\uff09\n while (i &lt;= j) {\n int m = i + (j - i) / 2; // \u4e2d\u70b9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 m \u3092\u8a08\u7b97\n if (nums[m] &lt; target) // \u3053\u306e\u72b6\u6cc1\u306f target \u304c\u533a\u9593 [m+1, j] \u306b\u3042\u308b\u3053\u3068\u3092\u793a\u3059\n i = m + 1;\n else if (nums[m] &gt; target) // \u3053\u306e\u72b6\u6cc1\u306f target \u304c\u533a\u9593 [i, m-1] \u306b\u3042\u308b\u3053\u3068\u3092\u793a\u3059\n j = m - 1;\n else // \u76ee\u6a19\u8981\u7d20\u3092\u898b\u3064\u3051\u305f\u306e\u3067\u3001\u305d\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u3059\n return m;\n }\n // \u76ee\u6a19\u8981\u7d20\u3092\u898b\u3064\u3051\u3089\u308c\u306a\u304b\u3063\u305f\u306e\u3067\u3001-1 \u3092\u8fd4\u3059\n return -1;\n}\n</code></pre> binary_search.cs<pre><code>[class]{binary_search}-[func]{BinarySearch}\n</code></pre> binary_search.go<pre><code>[class]{}-[func]{binarySearch}\n</code></pre> binary_search.swift<pre><code>[class]{}-[func]{binarySearch}\n</code></pre> binary_search.js<pre><code>[class]{}-[func]{binarySearch}\n</code></pre> binary_search.ts<pre><code>[class]{}-[func]{binarySearch}\n</code></pre> binary_search.dart<pre><code>[class]{}-[func]{binarySearch}\n</code></pre> binary_search.rs<pre><code>[class]{}-[func]{binary_search}\n</code></pre> binary_search.c<pre><code>[class]{}-[func]{binarySearch}\n</code></pre> binary_search.kt<pre><code>[class]{}-[func]{binarySearch}\n</code></pre> binary_search.rb<pre><code>[class]{}-[func]{binary_search}\n</code></pre> <p>\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(\\log n)\\)\u3067\u3059\uff1a\u4e8c\u5206\u30eb\u30fc\u30d7\u306b\u304a\u3044\u3066\u3001\u533a\u9593\u306f\u5404\u30e9\u30a6\u30f3\u30c9\u3067\u534a\u5206\u306b\u6e1b\u5c11\u3059\u308b\u305f\u3081\u3001\u53cd\u5fa9\u56de\u6570\u306f\\(\\log_2 n\\)\u3068\u306a\u308a\u307e\u3059\u3002</p> <p>\u7a7a\u9593\u8a08\u7b97\u91cf\u306f\\(O(1)\\)\u3067\u3059\uff1a\u30dd\u30a4\u30f3\u30bf\\(i\\)\u3068\\(j\\)\u306f\u5b9a\u6570\u30b5\u30a4\u30ba\u306e\u7a7a\u9593\u3092\u5360\u6709\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_searching/binary_search/#1011","title":"10.1.1 \u00a0 \u533a\u9593\u8868\u73fe\u65b9\u6cd5","text":"<p>\u4e0a\u8a18\u306e\u9589\u533a\u9593\u306e\u4ed6\u306b\u3001\u3082\u3046\u4e00\u3064\u306e\u4e00\u822c\u7684\u306a\u533a\u9593\u8868\u73fe\u306f\u300c\u5de6\u9589\u53f3\u958b\u300d\u533a\u9593\u3067\u3001\\([0, n)\\)\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u3001\u5de6\u5883\u754c\u306f\u81ea\u8eab\u3092\u542b\u307f\u3001\u53f3\u5883\u754c\u306f\u542b\u307f\u307e\u305b\u3093\u3002\u3053\u306e\u8868\u73fe\u3067\u306f\u3001\\(i = j\\)\u306e\u3068\u304d\u533a\u9593\\([i, j)\\)\u306f\u7a7a\u306b\u306a\u308a\u307e\u3059\u3002</p> <p>\u3053\u306e\u8868\u73fe\u306b\u57fa\u3065\u3044\u3066\u540c\u3058\u6a5f\u80fd\u3092\u6301\u3064\u4e8c\u5206\u63a2\u7d22\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby binary_search.py<pre><code>def binary_search_lcro(nums: list[int], target: int) -&gt; int:\n \"\"\"\u4e8c\u5206\u63a2\u7d22\uff08\u5de6\u9589\u53f3\u958b\u533a\u9593\uff09\"\"\"\n # \u5de6\u9589\u53f3\u958b\u533a\u9593 [0, n) \u3092\u521d\u671f\u5316\u3001\u3059\u306a\u308f\u3061 i, j \u306f\u305d\u308c\u305e\u308c\u914d\u5217\u306e\u6700\u521d\u306e\u8981\u7d20\u3068\u6700\u5f8c\u306e\u8981\u7d20+1\u3092\u6307\u3059\n i, j = 0, len(nums)\n # \u691c\u7d22\u533a\u9593\u304c\u7a7a\u306b\u306a\u308b\u307e\u3067\u30eb\u30fc\u30d7\uff08i = j \u306e\u3068\u304d\u7a7a\uff09\n while i &lt; j:\n m = i + (j - i) // 2 # \u4e2d\u70b9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 m \u3092\u8a08\u7b97\n if nums[m] &lt; target:\n i = m + 1 # \u3053\u306e\u5834\u5408\u3001target \u306f\u533a\u9593 [m+1, j) \u306b\u3042\u308b\u3053\u3068\u3092\u793a\u3059\n elif nums[m] &gt; target:\n j = m # \u3053\u306e\u5834\u5408\u3001target \u306f\u533a\u9593 [i, m) \u306b\u3042\u308b\u3053\u3068\u3092\u793a\u3059\n else:\n return m # \u30bf\u30fc\u30b2\u30c3\u30c8\u8981\u7d20\u304c\u898b\u3064\u304b\u3063\u305f\u305f\u3081\u3001\u305d\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u3059\n return -1 # \u30bf\u30fc\u30b2\u30c3\u30c8\u8981\u7d20\u304c\u898b\u3064\u304b\u3089\u306a\u304b\u3063\u305f\u305f\u3081\u3001-1 \u3092\u8fd4\u3059\n</code></pre> binary_search.cpp<pre><code>/* \u4e8c\u5206\u63a2\u7d22\uff08\u5de6\u9589\u53f3\u958b\u533a\u9593\uff09 */\nint binarySearchLCRO(vector&lt;int&gt; &amp;nums, int target) {\n // \u5de6\u9589\u53f3\u958b\u533a\u9593[0, n)\u3092\u521d\u671f\u5316\u3001\u3059\u306a\u308f\u3061i\u3001j\u306f\u305d\u308c\u305e\u308c\u914d\u5217\u306e\u6700\u521d\u306e\u8981\u7d20\u3068\u6700\u5f8c\u306e\u8981\u7d20+1\u3092\u6307\u3059\n int i = 0, j = nums.size();\n // \u63a2\u7d22\u533a\u9593\u304c\u7a7a\u306b\u306a\u308b\u307e\u3067\u30eb\u30fc\u30d7\uff08i = j\u306e\u6642\u7a7a\u306b\u306a\u308b\uff09\n while (i &lt; j) {\n int m = i + (j - i) / 2; // \u4e2d\u70b9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9m\u3092\u8a08\u7b97\n if (nums[m] &lt; target) // \u3053\u306e\u72b6\u6cc1\u306ftarget\u304c\u533a\u9593[m+1, j)\u306b\u3042\u308b\u3053\u3068\u3092\u793a\u3059\n i = m + 1;\n else if (nums[m] &gt; target) // \u3053\u306e\u72b6\u6cc1\u306ftarget\u304c\u533a\u9593[i, m)\u306b\u3042\u308b\u3053\u3068\u3092\u793a\u3059\n j = m;\n else // \u30bf\u30fc\u30b2\u30c3\u30c8\u8981\u7d20\u304c\u898b\u3064\u304b\u3063\u305f\u305f\u3081\u3001\u305d\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u3059\n return m;\n }\n // \u30bf\u30fc\u30b2\u30c3\u30c8\u8981\u7d20\u304c\u898b\u3064\u304b\u3089\u306a\u304b\u3063\u305f\u305f\u3081\u3001-1\u3092\u8fd4\u3059\n return -1;\n}\n</code></pre> binary_search.java<pre><code>/* \u4e8c\u5206\u63a2\u7d22\uff08\u5de6\u9589\u53f3\u958b\u533a\u9593\uff09 */\nint binarySearchLCRO(int[] nums, int target) {\n // \u5de6\u9589\u53f3\u958b\u533a\u9593 [0, n) \u3092\u521d\u671f\u5316\u3001\u3059\u306a\u308f\u3061 i, j \u306f\u305d\u308c\u305e\u308c\u914d\u5217\u306e\u6700\u521d\u306e\u8981\u7d20\u3068\u6700\u5f8c\u306e\u8981\u7d20+1\u3092\u6307\u3059\n int i = 0, j = nums.length;\n // \u63a2\u7d22\u533a\u9593\u304c\u7a7a\u306b\u306a\u308b\u307e\u3067\u30eb\u30fc\u30d7\uff08i = j \u306e\u3068\u304d\u7a7a\uff09\n while (i &lt; j) {\n int m = i + (j - i) / 2; // \u4e2d\u70b9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 m \u3092\u8a08\u7b97\n if (nums[m] &lt; target) // \u3053\u306e\u72b6\u6cc1\u306f target \u304c\u533a\u9593 [m+1, j) \u306b\u3042\u308b\u3053\u3068\u3092\u793a\u3059\n i = m + 1;\n else if (nums[m] &gt; target) // \u3053\u306e\u72b6\u6cc1\u306f target \u304c\u533a\u9593 [i, m) \u306b\u3042\u308b\u3053\u3068\u3092\u793a\u3059\n j = m;\n else // \u76ee\u6a19\u8981\u7d20\u3092\u898b\u3064\u3051\u305f\u306e\u3067\u3001\u305d\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u3059\n return m;\n }\n // \u76ee\u6a19\u8981\u7d20\u3092\u898b\u3064\u3051\u3089\u308c\u306a\u304b\u3063\u305f\u306e\u3067\u3001-1 \u3092\u8fd4\u3059\n return -1;\n}\n</code></pre> binary_search.cs<pre><code>[class]{binary_search}-[func]{BinarySearchLCRO}\n</code></pre> binary_search.go<pre><code>[class]{}-[func]{binarySearchLCRO}\n</code></pre> binary_search.swift<pre><code>[class]{}-[func]{binarySearchLCRO}\n</code></pre> binary_search.js<pre><code>[class]{}-[func]{binarySearchLCRO}\n</code></pre> binary_search.ts<pre><code>[class]{}-[func]{binarySearchLCRO}\n</code></pre> binary_search.dart<pre><code>[class]{}-[func]{binarySearchLCRO}\n</code></pre> binary_search.rs<pre><code>[class]{}-[func]{binary_search_lcro}\n</code></pre> binary_search.c<pre><code>[class]{}-[func]{binarySearchLCRO}\n</code></pre> binary_search.kt<pre><code>[class]{}-[func]{binarySearchLCRO}\n</code></pre> binary_search.rb<pre><code>[class]{}-[func]{binary_search_lcro}\n</code></pre> <p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u30012\u3064\u306e\u533a\u9593\u8868\u73fe\u30bf\u30a4\u30d7\u306b\u304a\u3044\u3066\u3001\u4e8c\u5206\u63a2\u7d22\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u521d\u671f\u5316\u3001\u30eb\u30fc\u30d7\u6761\u4ef6\u3001\u533a\u9593\u7e2e\u5c0f\u64cd\u4f5c\u304c\u7570\u306a\u308a\u307e\u3059\u3002</p> <p>\u300c\u9589\u533a\u9593\u300d\u8868\u73fe\u3067\u306f\u4e21\u65b9\u306e\u5883\u754c\u304c\u5305\u542b\u7684\u3067\u3042\u308b\u305f\u3081\u3001\u30dd\u30a4\u30f3\u30bf\\(i\\)\u3068\\(j\\)\u306b\u3088\u308b\u533a\u9593\u7e2e\u5c0f\u64cd\u4f5c\u3082\u5bfe\u79f0\u7684\u3067\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u306b\u304f\u304f\u306a\u308b\u305f\u3081\u3001\u4e00\u822c\u7684\u306b\u300c\u9589\u533a\u9593\u300d\u30a2\u30d7\u30ed\u30fc\u30c1\u306e\u4f7f\u7528\u304c\u63a8\u5968\u3055\u308c\u307e\u3059\u3002</p> <p></p> <p> \u56f3 10-3 \u00a0 Two types of interval definitions </p>"},{"location":"chapter_searching/binary_search/#1012","title":"10.1.2 \u00a0 \u5229\u70b9\u3068\u5236\u9650","text":"<p>\u4e8c\u5206\u63a2\u7d22\u306f\u6642\u9593\u3068\u7a7a\u9593\u306e\u4e21\u65b9\u306e\u9762\u3067\u826f\u597d\u306a\u6027\u80fd\u3092\u793a\u3057\u307e\u3059\u3002</p> <ul> <li>\u4e8c\u5206\u63a2\u7d22\u306f\u6642\u9593\u52b9\u7387\u304c\u826f\u3044\u3067\u3059\u3002\u5927\u304d\u306a\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3067\u306f\u3001\u5bfe\u6570\u6642\u9593\u8a08\u7b97\u91cf\u304c\u5927\u304d\u306a\u5229\u70b9\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u30b5\u30a4\u30ba\\(n = 2^{20}\\)\u306e\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u3001\u7dda\u5f62\u63a2\u7d22\u306f\\(2^{20} = 1048576\\)\u56de\u306e\u53cd\u5fa9\u304c\u5fc5\u8981\u3067\u3059\u304c\u3001\u4e8c\u5206\u63a2\u7d22\u306f\\(\\log_2 2^{20} = 20\\)\u56de\u306e\u30eb\u30fc\u30d7\u306e\u307f\u3067\u6e08\u307f\u307e\u3059\u3002</li> <li>\u4e8c\u5206\u63a2\u7d22\u306b\u306f\u8ffd\u52a0\u306e\u7a7a\u9593\u304c\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\u3002\u8ffd\u52a0\u306e\u7a7a\u9593\u306b\u4f9d\u5b58\u3059\u308b\u63a2\u7d22\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff08\u30cf\u30c3\u30b7\u30e5\u63a2\u7d22\u306a\u3069\uff09\u3068\u6bd4\u8f03\u3057\u3066\u3001\u4e8c\u5206\u63a2\u7d22\u306f\u3088\u308a\u7a7a\u9593\u52b9\u7387\u7684\u3067\u3059\u3002</li> </ul> <p>\u3057\u304b\u3057\u3001\u4e8c\u5206\u63a2\u7d22\u306f\u4ee5\u4e0b\u306e\u61f8\u5ff5\u306b\u3088\u308a\u3001\u3059\u3079\u3066\u306e\u30b7\u30ca\u30ea\u30aa\u306b\u9069\u3057\u3066\u3044\u308b\u3068\u306f\u9650\u308a\u307e\u305b\u3093\u3002</p> <ul> <li>\u4e8c\u5206\u63a2\u7d22\u306f\u30bd\u30fc\u30c8\u6e08\u307f\u30c7\u30fc\u30bf\u306b\u306e\u307f\u9069\u7528\u3067\u304d\u307e\u3059\u3002\u672a\u30bd\u30fc\u30c8\u306e\u30c7\u30fc\u30bf\u306f\u4e8c\u5206\u63a2\u7d22\u3092\u9069\u7528\u3059\u308b\u524d\u306b\u30bd\u30fc\u30c8\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u901a\u5e38\\(O(n \\log n)\\)\u306e\u6642\u9593\u8a08\u7b97\u91cf\u3092\u6301\u3064\u305f\u3081\u3001\u3053\u308c\u306f\u4fa1\u5024\u304c\u306a\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u3053\u306e\u30b3\u30b9\u30c8\u306f\u7dda\u5f62\u63a2\u7d22\u3088\u308a\u3082\u9ad8\u304f\u3001\u4e8c\u5206\u63a2\u7d22\u81ea\u4f53\u306f\u8a00\u3046\u307e\u3067\u3082\u3042\u308a\u307e\u305b\u3093\u3002\u983b\u7e41\u306a\u633f\u5165\u304c\u3042\u308b\u30b7\u30ca\u30ea\u30aa\u3067\u306f\u3001\u914d\u5217\u3092\u9806\u5e8f\u306b\u4fdd\u3064\u30b3\u30b9\u30c8\u306f\u975e\u5e38\u306b\u9ad8\u304f\u3001\u7279\u5b9a\u306e\u4f4d\u7f6e\u306b\u65b0\u3057\u3044\u8981\u7d20\u3092\u633f\u5165\u3059\u308b\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n)\\)\u3067\u3059\u3002</li> <li>\u4e8c\u5206\u63a2\u7d22\u306f\u914d\u5217\u306e\u307f\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u4e8c\u5206\u63a2\u7d22\u306b\u306f\u975e\u9023\u7d9a\uff08\u30b8\u30e3\u30f3\u30d7\uff09\u8981\u7d20\u30a2\u30af\u30bb\u30b9\u304c\u5fc5\u8981\u3067\u3001\u3053\u308c\u306f\u9023\u7d50\u30ea\u30b9\u30c8\u3067\u306f\u975e\u52b9\u7387\u7684\u3067\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u3084\u9023\u7d50\u30ea\u30b9\u30c8\u306b\u57fa\u3065\u304f\u30c7\u30fc\u30bf\u69cb\u9020\u306f\u3053\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306b\u9069\u3057\u3066\u3044\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u7dda\u5f62\u63a2\u7d22\u306f\u5c0f\u3055\u306a\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3067\u3088\u308a\u826f\u3044\u6027\u80fd\u3092\u793a\u3057\u307e\u3059\u3002\u7dda\u5f62\u63a2\u7d22\u3067\u306f\u5404\u53cd\u5fa9\u30671\u3064\u306e\u5224\u5b9a\u64cd\u4f5c\u306e\u307f\u304c\u5fc5\u8981\u3067\u3059\u304c\u3001\u4e8c\u5206\u63a2\u7d22\u3067\u306f1\u3064\u306e\u52a0\u7b97\u30011\u3064\u306e\u9664\u7b97\u30011\u3064\u304b\u30893\u3064\u306e\u5224\u5b9a\u64cd\u4f5c\u30011\u3064\u306e\u52a0\u7b97\uff08\u6e1b\u7b97\uff09\u3092\u542b\u307f\u3001\u5408\u8a084\u3064\u304b\u30896\u3064\u306e\u64cd\u4f5c\u304c\u5fc5\u8981\u3067\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u30c7\u30fc\u30bf\u30b5\u30a4\u30ba\\(n\\)\u304c\u5c0f\u3055\u3044\u5834\u5408\u3001\u7dda\u5f62\u63a2\u7d22\u306f\u4e8c\u5206\u63a2\u7d22\u3088\u308a\u3082\u9ad8\u901f\u3067\u3059\u3002</li> </ul>"},{"location":"chapter_searching/binary_search_edge/","title":"10.3 \u00a0 \u4e8c\u5206\u63a2\u7d22\u306e\u5883\u754c","text":""},{"location":"chapter_searching/binary_search_edge/#1031","title":"10.3.1 \u00a0 \u5de6\u5883\u754c\u3092\u898b\u3064\u3051\u308b","text":"<p>Question</p> <p>\u91cd\u8907\u8981\u7d20\u3092\u542b\u3080\u53ef\u80fd\u6027\u304c\u3042\u308b\u9577\u3055\\(n\\)\u306e\u30bd\u30fc\u30c8\u6e08\u307f\u914d\u5217<code>nums</code>\u304c\u4e0e\u3048\u3089\u308c\u3001\u6700\u3082\u5de6\u306e\u8981\u7d20<code>target</code>\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u8981\u7d20\u304c\u914d\u5217\u306b\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u306f\u3001\\(-1\\)\u3092\u8fd4\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <p>\u633f\u5165\u4f4d\u7f6e\u306e\u4e8c\u5206\u63a2\u7d22\u65b9\u6cd5\u3092\u601d\u3044\u51fa\u3059\u3068\u3001\u63a2\u7d22\u5b8c\u4e86\u5f8c\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\\(i\\)\u306f<code>target</code>\u306e\u6700\u3082\u5de6\u306e\u51fa\u73fe\u3092\u6307\u3057\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u633f\u5165\u4f4d\u7f6e\u306e\u63a2\u7d22\u306f\u672c\u8cea\u7684\u306b\u6700\u3082\u5de6\u306e<code>target</code>\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u3068\u540c\u3058\u3067\u3059\u3002</p> <p>\u633f\u5165\u4f4d\u7f6e\u3092\u898b\u3064\u3051\u308b\u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066<code>target</code>\u306e\u5de6\u5883\u754c\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u914d\u5217\u306b<code>target</code>\u304c\u542b\u307e\u308c\u3066\u3044\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u306f\u4ee5\u4e0b\u306e2\u3064\u306e\u7d50\u679c\u306b\u3064\u306a\u304c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\uff1a</p> <ul> <li>\u633f\u5165\u4f4d\u7f6e\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\\(i\\)\u304c\u7bc4\u56f2\u5916\u3067\u3059\u3002</li> <li>\u8981\u7d20<code>nums[i]</code>\u304c<code>target</code>\u3068\u7b49\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002</li> </ul> <p>\u3053\u308c\u3089\u306e\u5834\u5408\u3001\u5358\u306b\\(-1\\)\u3092\u8fd4\u3057\u307e\u3059\u3002\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby binary_search_edge.py<pre><code>def binary_search_left_edge(nums: list[int], target: int) -&gt; int:\n \"\"\"\u6700\u5de6\u7aef\u306e\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u4e8c\u5206\u63a2\u7d22\"\"\"\n # \u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u633f\u5165\u4f4d\u7f6e\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u3068\u540c\u7b49\n i = binary_search_insertion(nums, target)\n # \u30bf\u30fc\u30b2\u30c3\u30c8\u304c\u898b\u3064\u304b\u3089\u306a\u304b\u3063\u305f\u5834\u5408\u3001-1 \u3092\u8fd4\u3059\n if i == len(nums) or nums[i] != target:\n return -1\n # \u30bf\u30fc\u30b2\u30c3\u30c8\u304c\u898b\u3064\u304b\u3063\u305f\u5834\u5408\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 i \u3092\u8fd4\u3059\n return i\n</code></pre> binary_search_edge.cpp<pre><code>/* \u6700\u5de6\u306e\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u4e8c\u5206\u63a2\u7d22 */\nint binarySearchLeftEdge(vector&lt;int&gt; &amp;nums, int target) {\n // target\u306e\u633f\u5165\u30dd\u30a4\u30f3\u30c8\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u3068\u7b49\u4fa1\n int i = binarySearchInsertion(nums, target);\n // target\u304c\u898b\u3064\u304b\u3089\u306a\u304b\u3063\u305f\u305f\u3081\u3001-1\u3092\u8fd4\u3059\n if (i == nums.size() || nums[i] != target) {\n return -1;\n }\n // target\u304c\u898b\u3064\u304b\u3063\u305f\u305f\u3081\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9i\u3092\u8fd4\u3059\n return i;\n}\n</code></pre> binary_search_edge.java<pre><code>/* \u6700\u3082\u5de6\u306e target \u3092\u4e8c\u5206\u63a2\u7d22 */\nint binarySearchLeftEdge(int[] nums, int target) {\n // target \u306e\u633f\u5165\u70b9\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u3068\u7b49\u4fa1\n int i = binary_search_insertion.binarySearchInsertion(nums, target);\n // target \u3092\u898b\u3064\u3051\u3089\u308c\u306a\u304b\u3063\u305f\u306e\u3067\u3001-1 \u3092\u8fd4\u3059\n if (i == nums.length || nums[i] != target) {\n return -1;\n }\n // target \u3092\u898b\u3064\u3051\u305f\u306e\u3067\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 i \u3092\u8fd4\u3059\n return i;\n}\n</code></pre> binary_search_edge.cs<pre><code>[class]{binary_search_edge}-[func]{BinarySearchLeftEdge}\n</code></pre> binary_search_edge.go<pre><code>[class]{}-[func]{binarySearchLeftEdge}\n</code></pre> binary_search_edge.swift<pre><code>[class]{}-[func]{binarySearchLeftEdge}\n</code></pre> binary_search_edge.js<pre><code>[class]{}-[func]{binarySearchLeftEdge}\n</code></pre> binary_search_edge.ts<pre><code>[class]{}-[func]{binarySearchLeftEdge}\n</code></pre> binary_search_edge.dart<pre><code>[class]{}-[func]{binarySearchLeftEdge}\n</code></pre> binary_search_edge.rs<pre><code>[class]{}-[func]{binary_search_left_edge}\n</code></pre> binary_search_edge.c<pre><code>[class]{}-[func]{binarySearchLeftEdge}\n</code></pre> binary_search_edge.kt<pre><code>[class]{}-[func]{binarySearchLeftEdge}\n</code></pre> binary_search_edge.rb<pre><code>[class]{}-[func]{binary_search_left_edge}\n</code></pre>"},{"location":"chapter_searching/binary_search_edge/#1032","title":"10.3.2 \u00a0 \u53f3\u5883\u754c\u3092\u898b\u3064\u3051\u308b","text":"<p><code>target</code>\u306e\u6700\u3082\u53f3\u306e\u51fa\u73fe\u3092\u3069\u306e\u3088\u3046\u306b\u898b\u3064\u3051\u308b\u3067\u3057\u3087\u3046\u304b\uff1f\u6700\u3082\u76f4\u63a5\u7684\u306a\u65b9\u6cd5\u306f\u3001<code>nums[m] == target</code>\u306e\u5834\u5408\u306b\u63a2\u7d22\u5883\u754c\u3092\u8abf\u6574\u3059\u308b\u65b9\u6cd5\u3092\u5909\u66f4\u3057\u3066\u3001\u5f93\u6765\u306e\u4e8c\u5206\u63a2\u7d22\u30ed\u30b8\u30c3\u30af\u3092\u4fee\u6b63\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u30b3\u30fc\u30c9\u306f\u3053\u3053\u3067\u306f\u7701\u7565\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u8208\u5473\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u81ea\u5206\u3067\u30b3\u30fc\u30c9\u3092\u5b9f\u88c5\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002</p> <p>\u4ee5\u4e0b\u3067\u306f\u3001\u3055\u3089\u306b2\u3064\u306e\u5de7\u5999\u306a\u65b9\u6cd5\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_searching/binary_search_edge/#1","title":"1. \u00a0 \u5de6\u5883\u754c\u63a2\u7d22\u3092\u518d\u5229\u7528\u3059\u308b","text":"<p><code>target</code>\u306e\u6700\u3082\u53f3\u306e\u51fa\u73fe\u3092\u898b\u3064\u3051\u308b\u306b\u306f\u3001\u6700\u3082\u5de6\u306e<code>target</code>\u3092\u898b\u3064\u3051\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u305f\u95a2\u6570\u3092\u518d\u5229\u7528\u3067\u304d\u307e\u3059\u3002\u5177\u4f53\u7684\u306b\u306f\u3001\u6700\u3082\u53f3\u306e\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u63a2\u7d22\u3092\u6700\u3082\u5de6\u306e\u30bf\u30fc\u30b2\u30c3\u30c8 + 1\u306e\u63a2\u7d22\u306b\u5909\u63db\u3057\u307e\u3059\u3002</p> <p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u63a2\u7d22\u5b8c\u4e86\u5f8c\u3001\u30dd\u30a4\u30f3\u30bf\\(i\\)\u306f\u6700\u3082\u5de6\u306e<code>target + 1</code>\uff08\u5b58\u5728\u3059\u308b\u5834\u5408\uff09\u3092\u6307\u3057\u3001\u30dd\u30a4\u30f3\u30bf\\(j\\)\u306f<code>target</code>\u306e\u6700\u3082\u53f3\u306e\u51fa\u73fe\u3092\u6307\u3057\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\\(j\\)\u3092\u8fd4\u3059\u3053\u3068\u3067\u53f3\u5883\u754c\u304c\u5f97\u3089\u308c\u307e\u3059\u3002</p> <p></p> <p> \u56f3 10-7 \u00a0 Transforming the search for the right boundary into the search for the left boundary </p> <p>\u8fd4\u3055\u308c\u308b\u633f\u5165\u4f4d\u7f6e\u306f\\(i\\)\u3067\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3057\u305f\u304c\u3063\u3066\u3001\\(j\\)\u3092\u5f97\u308b\u305f\u3081\u306b\u306f1\u3092\u5f15\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby binary_search_edge.py<pre><code>def binary_search_right_edge(nums: list[int], target: int) -&gt; int:\n \"\"\"\u6700\u53f3\u7aef\u306e\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u4e8c\u5206\u63a2\u7d22\"\"\"\n # \u6700\u5de6\u7aef\u306e\u30bf\u30fc\u30b2\u30c3\u30c8 + 1 \u3092\u898b\u3064\u3051\u308b\u3053\u3068\u306b\u5909\u63db\n i = binary_search_insertion(nums, target + 1)\n # j \u306f\u6700\u53f3\u7aef\u306e\u30bf\u30fc\u30b2\u30c3\u30c8\u3092\u6307\u3057\u3001i \u306f\u30bf\u30fc\u30b2\u30c3\u30c8\u3088\u308a\u5927\u304d\u3044\u6700\u521d\u306e\u8981\u7d20\u3092\u6307\u3059\n j = i - 1\n # \u30bf\u30fc\u30b2\u30c3\u30c8\u304c\u898b\u3064\u304b\u3089\u306a\u304b\u3063\u305f\u5834\u5408\u3001-1 \u3092\u8fd4\u3059\n if j == -1 or nums[j] != target:\n return -1\n # \u30bf\u30fc\u30b2\u30c3\u30c8\u304c\u898b\u3064\u304b\u3063\u305f\u5834\u5408\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 j \u3092\u8fd4\u3059\n return j\n</code></pre> binary_search_edge.cpp<pre><code>/* \u6700\u53f3\u306e\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u4e8c\u5206\u63a2\u7d22 */\nint binarySearchRightEdge(vector&lt;int&gt; &amp;nums, int target) {\n // \u6700\u5de6\u306etarget + 1\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u306b\u5909\u63db\n int i = binarySearchInsertion(nums, target + 1);\n // j\u306f\u6700\u53f3\u306e\u30bf\u30fc\u30b2\u30c3\u30c8\u3092\u6307\u3057\u3001i\u306ftarget\u3088\u308a\u5927\u304d\u3044\u6700\u521d\u306e\u8981\u7d20\u3092\u6307\u3059\n int j = i - 1;\n // target\u304c\u898b\u3064\u304b\u3089\u306a\u304b\u3063\u305f\u305f\u3081\u3001-1\u3092\u8fd4\u3059\n if (j == -1 || nums[j] != target) {\n return -1;\n }\n // target\u304c\u898b\u3064\u304b\u3063\u305f\u305f\u3081\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9j\u3092\u8fd4\u3059\n return j;\n}\n</code></pre> binary_search_edge.java<pre><code>/* \u6700\u3082\u53f3\u306e target \u3092\u4e8c\u5206\u63a2\u7d22 */\nint binarySearchRightEdge(int[] nums, int target) {\n // \u6700\u3082\u5de6\u306e target + 1 \u3092\u898b\u3064\u3051\u308b\u3053\u3068\u306b\u5909\u63db\n int i = binary_search_insertion.binarySearchInsertion(nums, target + 1);\n // j \u306f\u6700\u3082\u53f3\u306e target \u3092\u6307\u3057\u3001i \u306f target \u3088\u308a\u5927\u304d\u3044\u6700\u521d\u306e\u8981\u7d20\u3092\u6307\u3059\n int j = i - 1;\n // target \u3092\u898b\u3064\u3051\u3089\u308c\u306a\u304b\u3063\u305f\u306e\u3067\u3001-1 \u3092\u8fd4\u3059\n if (j == -1 || nums[j] != target) {\n return -1;\n }\n // target \u3092\u898b\u3064\u3051\u305f\u306e\u3067\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 j \u3092\u8fd4\u3059\n return j;\n}\n</code></pre> binary_search_edge.cs<pre><code>[class]{binary_search_edge}-[func]{BinarySearchRightEdge}\n</code></pre> binary_search_edge.go<pre><code>[class]{}-[func]{binarySearchRightEdge}\n</code></pre> binary_search_edge.swift<pre><code>[class]{}-[func]{binarySearchRightEdge}\n</code></pre> binary_search_edge.js<pre><code>[class]{}-[func]{binarySearchRightEdge}\n</code></pre> binary_search_edge.ts<pre><code>[class]{}-[func]{binarySearchRightEdge}\n</code></pre> binary_search_edge.dart<pre><code>[class]{}-[func]{binarySearchRightEdge}\n</code></pre> binary_search_edge.rs<pre><code>[class]{}-[func]{binary_search_right_edge}\n</code></pre> binary_search_edge.c<pre><code>[class]{}-[func]{binarySearchRightEdge}\n</code></pre> binary_search_edge.kt<pre><code>[class]{}-[func]{binarySearchRightEdge}\n</code></pre> binary_search_edge.rb<pre><code>[class]{}-[func]{binary_search_right_edge}\n</code></pre>"},{"location":"chapter_searching/binary_search_edge/#2","title":"2. \u00a0 \u8981\u7d20\u63a2\u7d22\u306b\u5909\u63db\u3059\u308b","text":"<p>\u914d\u5217\u306b<code>target</code>\u304c\u542b\u307e\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001\\(i\\)\u3068\\(j\\)\u306f\u6700\u7d42\u7684\u306b<code>target</code>\u3088\u308a\u5927\u304d\u3044\u6700\u521d\u306e\u8981\u7d20\u3068\u5c0f\u3055\u3044\u6700\u521d\u306e\u8981\u7d20\u3092\u305d\u308c\u305e\u308c\u6307\u3057\u307e\u3059\u3002</p> <p>\u3057\u305f\u304c\u3063\u3066\u3001\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u914d\u5217\u306b\u5b58\u5728\u3057\u306a\u3044\u8981\u7d20\u3092\u69cb\u7bc9\u3057\u3066\u3001\u5de6\u3068\u53f3\u306e\u5883\u754c\u3092\u63a2\u7d22\u3067\u304d\u307e\u3059\u3002</p> <ul> <li>\u6700\u3082\u5de6\u306e<code>target</code>\u3092\u898b\u3064\u3051\u308b\u306b\u306f\uff1a<code>target - 0.5</code>\u3092\u63a2\u7d22\u3059\u308b\u3053\u3068\u306b\u5909\u63db\u3067\u304d\u3001\u30dd\u30a4\u30f3\u30bf\\(i\\)\u3092\u8fd4\u3057\u307e\u3059\u3002</li> <li>\u6700\u3082\u53f3\u306e<code>target</code>\u3092\u898b\u3064\u3051\u308b\u306b\u306f\uff1a<code>target + 0.5</code>\u3092\u63a2\u7d22\u3059\u308b\u3053\u3068\u306b\u5909\u63db\u3067\u304d\u3001\u30dd\u30a4\u30f3\u30bf\\(j\\)\u3092\u8fd4\u3057\u307e\u3059\u3002</li> </ul> <p></p> <p> \u56f3 10-8 \u00a0 Transforming the search for boundaries into the search for an element </p> <p>\u30b3\u30fc\u30c9\u306f\u3053\u3053\u3067\u306f\u7701\u7565\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u3001\u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306b\u3064\u3044\u3066\u6ce8\u610f\u3059\u3079\u304d2\u3064\u306e\u91cd\u8981\u306a\u70b9\u304c\u3042\u308a\u307e\u3059\u3002</p> <ul> <li>\u4e0e\u3048\u3089\u308c\u305f\u914d\u5217<code>nums</code>\u306b\u306f\u5c0f\u6570\u304c\u542b\u307e\u308c\u3066\u3044\u306a\u3044\u305f\u3081\u3001\u7b49\u3057\u3044\u5834\u5408\u306e\u51e6\u7406\u306f\u5fc3\u914d\u3042\u308a\u307e\u305b\u3093\u3002</li> <li>\u305f\u3060\u3057\u3001\u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u3067\u5c0f\u6570\u3092\u5c0e\u5165\u3059\u308b\u306b\u306f\u3001<code>target</code>\u5909\u6570\u3092\u6d6e\u52d5\u5c0f\u6570\u70b9\u578b\u306b\u5909\u66f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff08Python\u3067\u306f\u5909\u66f4\u306f\u4e0d\u8981\u3067\u3059\uff09\u3002</li> </ul>"},{"location":"chapter_searching/binary_search_insertion/","title":"10.2 \u00a0 \u4e8c\u5206\u63a2\u7d22\u306b\u3088\u308b\u633f\u5165","text":"<p>\u4e8c\u5206\u63a2\u7d22\u306f\u76ee\u6a19\u8981\u7d20\u3092\u63a2\u7d22\u3059\u308b\u3060\u3051\u3067\u306a\u304f\u3001\u76ee\u6a19\u8981\u7d20\u306e\u633f\u5165\u4f4d\u7f6e\u3092\u63a2\u7d22\u3059\u308b\u306a\u3069\u3001\u591a\u304f\u306e\u5909\u7a2e\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306b\u3082\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002</p>"},{"location":"chapter_searching/binary_search_insertion/#1021","title":"10.2.1 \u00a0 \u91cd\u8907\u8981\u7d20\u304c\u306a\u3044\u5834\u5408","text":"<p>Question</p> <p>\u4e00\u610f\u306e\u8981\u7d20\u3092\u6301\u3064\u9577\u3055\\(n\\)\u306e\u30bd\u30fc\u30c8\u6e08\u307f\u914d\u5217<code>nums</code>\u3068\u8981\u7d20<code>target</code>\u304c\u4e0e\u3048\u3089\u308c\u3001\u30bd\u30fc\u30c8\u9806\u3092\u7dad\u6301\u3057\u306a\u304c\u3089<code>target</code>\u3092<code>nums</code>\u306b\u633f\u5165\u3057\u307e\u3059\u3002<code>target</code>\u304c\u914d\u5217\u306b\u3059\u3067\u306b\u5b58\u5728\u3059\u308b\u5834\u5408\u306f\u3001\u65e2\u5b58\u306e\u8981\u7d20\u306e\u5de6\u5074\u306b\u633f\u5165\u3057\u307e\u3059\u3002\u633f\u5165\u5f8c\u306e\u914d\u5217\u306b\u304a\u3051\u308b<code>target</code>\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e0b\u56f3\u306b\u793a\u3059\u4f8b\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <p></p> <p> \u56f3 10-4 \u00a0 Example data for binary search insertion point </p> <p>\u524d\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u306e\u4e8c\u5206\u63a2\u7d22\u30b3\u30fc\u30c9\u3092\u518d\u5229\u7528\u3057\u305f\u3044\u5834\u5408\u3001\u4ee5\u4e0b\u306e2\u3064\u306e\u8cea\u554f\u306b\u7b54\u3048\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>\u8cea\u554f1\uff1a\u914d\u5217\u306b\u3059\u3067\u306b<code>target</code>\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u633f\u5165\u4f4d\u7f6e\u306f\u65e2\u5b58\u8981\u7d20\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u306a\u308a\u307e\u3059\u304b\uff1f</p> <p><code>target</code>\u3092\u7b49\u3057\u3044\u8981\u7d20\u306e\u5de6\u5074\u306b\u633f\u5165\u3059\u308b\u3068\u3044\u3046\u8981\u4ef6\u306f\u3001\u65b0\u3057\u304f\u633f\u5165\u3055\u308c\u308b<code>target</code>\u304c\u5143\u306e<code>target</code>\u306e\u4f4d\u7f6e\u3092\u7f6e\u304d\u63db\u3048\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u3064\u307e\u308a\u3001\u914d\u5217\u306b<code>target</code>\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u633f\u5165\u4f4d\u7f6e\u306f\u78ba\u304b\u306b\u305d\u306e<code>target</code>\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u3059\u3002</p> <p>\u8cea\u554f2\uff1a\u914d\u5217\u306b<code>target</code>\u304c\u542b\u307e\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001\u3069\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u633f\u5165\u3055\u308c\u307e\u3059\u304b\uff1f</p> <p>\u4e8c\u5206\u63a2\u7d22\u30d7\u30ed\u30bb\u30b9\u3092\u3055\u3089\u306b\u8003\u3048\u3066\u307f\u307e\u3057\u3087\u3046\uff1a<code>nums[m] &lt; target</code>\u306e\u3068\u304d\u3001\u30dd\u30a4\u30f3\u30bf\\(i\\)\u304c\u79fb\u52d5\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30dd\u30a4\u30f3\u30bf\\(i\\)\u304c<code>target</code>\u4ee5\u4e0a\u306e\u8981\u7d20\u306b\u8fd1\u3065\u3044\u3066\u3044\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u540c\u69d8\u306b\u3001\u30dd\u30a4\u30f3\u30bf\\(j\\)\u306f\u5e38\u306b<code>target</code>\u4ee5\u4e0b\u306e\u8981\u7d20\u306b\u8fd1\u3065\u3044\u3066\u3044\u307e\u3059\u3002</p> <p>\u3057\u305f\u304c\u3063\u3066\u3001\u4e8c\u5206\u306e\u7d42\u4e86\u6642\u306b\u306f\u78ba\u5b9f\u306b\uff1a\\(i\\)\u306f<code>target</code>\u3088\u308a\u5927\u304d\u3044\u6700\u521d\u306e\u8981\u7d20\u3092\u6307\u3057\u3001\\(j\\)\u306f<code>target</code>\u3088\u308a\u5c0f\u3055\u3044\u6700\u521d\u306e\u8981\u7d20\u3092\u6307\u3057\u307e\u3059\u3002\u914d\u5217\u306b<code>target</code>\u304c\u542b\u307e\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001\u633f\u5165\u4f4d\u7f6e\u306f\\(i\\)\u3067\u3042\u308b\u3053\u3068\u306f\u660e\u3089\u304b\u3067\u3059\u3002\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby binary_search_insertion.py<pre><code>def binary_search_insertion_simple(nums: list[int], target: int) -&gt; int:\n \"\"\"\u633f\u5165\u4f4d\u7f6e\u306e\u4e8c\u5206\u63a2\u7d22\uff08\u91cd\u8907\u8981\u7d20\u306a\u3057\uff09\"\"\"\n i, j = 0, len(nums) - 1 # \u4e21\u7aef\u9589\u533a\u9593 [0, n-1] \u3092\u521d\u671f\u5316\n while i &lt;= j:\n m = i + (j - i) // 2 # \u4e2d\u70b9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 m \u3092\u8a08\u7b97\n if nums[m] &lt; target:\n i = m + 1 # \u30bf\u30fc\u30b2\u30c3\u30c8\u306f\u533a\u9593 [m+1, j] \u306b\u3042\u308b\n elif nums[m] &gt; target:\n j = m - 1 # \u30bf\u30fc\u30b2\u30c3\u30c8\u306f\u533a\u9593 [i, m-1] \u306b\u3042\u308b\n else:\n return m # \u30bf\u30fc\u30b2\u30c3\u30c8\u304c\u898b\u3064\u304b\u3063\u305f\u5834\u5408\u3001\u633f\u5165\u4f4d\u7f6e m \u3092\u8fd4\u3059\n # \u30bf\u30fc\u30b2\u30c3\u30c8\u304c\u898b\u3064\u304b\u3089\u306a\u304b\u3063\u305f\u5834\u5408\u3001\u633f\u5165\u4f4d\u7f6e i \u3092\u8fd4\u3059\n return i\n</code></pre> binary_search_insertion.cpp<pre><code>/* \u633f\u5165\u30dd\u30a4\u30f3\u30c8\u306e\u4e8c\u5206\u63a2\u7d22\uff08\u91cd\u8907\u8981\u7d20\u306a\u3057\uff09 */\nint binarySearchInsertionSimple(vector&lt;int&gt; &amp;nums, int target) {\n int i = 0, j = nums.size() - 1; // \u4e21\u7aef\u9589\u533a\u9593[0, n-1]\u3092\u521d\u671f\u5316\n while (i &lt;= j) {\n int m = i + (j - i) / 2; // \u4e2d\u70b9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9m\u3092\u8a08\u7b97\n if (nums[m] &lt; target) {\n i = m + 1; // \u30bf\u30fc\u30b2\u30c3\u30c8\u306f\u533a\u9593[m+1, j]\u306b\u3042\u308b\n } else if (nums[m] &gt; target) {\n j = m - 1; // \u30bf\u30fc\u30b2\u30c3\u30c8\u306f\u533a\u9593[i, m-1]\u306b\u3042\u308b\n } else {\n return m; // \u30bf\u30fc\u30b2\u30c3\u30c8\u304c\u898b\u3064\u304b\u3063\u305f\u305f\u3081\u3001\u633f\u5165\u30dd\u30a4\u30f3\u30c8m\u3092\u8fd4\u3059\n }\n }\n // \u30bf\u30fc\u30b2\u30c3\u30c8\u304c\u898b\u3064\u304b\u3089\u306a\u304b\u3063\u305f\u305f\u3081\u3001\u633f\u5165\u30dd\u30a4\u30f3\u30c8i\u3092\u8fd4\u3059\n return i;\n}\n</code></pre> binary_search_insertion.java<pre><code>/* \u633f\u5165\u70b9\u306e\u4e8c\u5206\u63a2\u7d22\uff08\u91cd\u8907\u8981\u7d20\u306a\u3057\uff09 */\nint binarySearchInsertionSimple(int[] nums, int target) {\n int i = 0, j = nums.length - 1; // \u4e21\u7aef\u9589\u533a\u9593 [0, n-1] \u3092\u521d\u671f\u5316\n while (i &lt;= j) {\n int m = i + (j - i) / 2; // \u4e2d\u70b9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 m \u3092\u8a08\u7b97\n if (nums[m] &lt; target) {\n i = m + 1; // target \u306f\u533a\u9593 [m+1, j] \u306b\u3042\u308b\n } else if (nums[m] &gt; target) {\n j = m - 1; // target \u306f\u533a\u9593 [i, m-1] \u306b\u3042\u308b\n } else {\n return m; // target \u3092\u898b\u3064\u3051\u305f\u306e\u3067\u3001\u633f\u5165\u70b9 m \u3092\u8fd4\u3059\n }\n }\n // target \u3092\u898b\u3064\u3051\u3089\u308c\u306a\u304b\u3063\u305f\u306e\u3067\u3001\u633f\u5165\u70b9 i \u3092\u8fd4\u3059\n return i;\n}\n</code></pre> binary_search_insertion.cs<pre><code>[class]{binary_search_insertion}-[func]{BinarySearchInsertionSimple}\n</code></pre> binary_search_insertion.go<pre><code>[class]{}-[func]{binarySearchInsertionSimple}\n</code></pre> binary_search_insertion.swift<pre><code>[class]{}-[func]{binarySearchInsertionSimple}\n</code></pre> binary_search_insertion.js<pre><code>[class]{}-[func]{binarySearchInsertionSimple}\n</code></pre> binary_search_insertion.ts<pre><code>[class]{}-[func]{binarySearchInsertionSimple}\n</code></pre> binary_search_insertion.dart<pre><code>[class]{}-[func]{binarySearchInsertionSimple}\n</code></pre> binary_search_insertion.rs<pre><code>[class]{}-[func]{binary_search_insertion_simple}\n</code></pre> binary_search_insertion.c<pre><code>[class]{}-[func]{binarySearchInsertionSimple}\n</code></pre> binary_search_insertion.kt<pre><code>[class]{}-[func]{binarySearchInsertionSimple}\n</code></pre> binary_search_insertion.rb<pre><code>[class]{}-[func]{binary_search_insertion_simple}\n</code></pre>"},{"location":"chapter_searching/binary_search_insertion/#1022","title":"10.2.2 \u00a0 \u91cd\u8907\u8981\u7d20\u304c\u3042\u308b\u5834\u5408","text":"<p>Question</p> <p>\u524d\u306e\u8cea\u554f\u306b\u57fa\u3065\u3044\u3066\u3001\u914d\u5217\u306b\u91cd\u8907\u8981\u7d20\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u3068\u4eee\u5b9a\u3057\u3001\u4ed6\u306f\u3059\u3079\u3066\u540c\u3058\u3068\u3057\u307e\u3059\u3002</p> <p>\u914d\u5217\u306b<code>target</code>\u306e\u8907\u6570\u306e\u51fa\u73fe\u304c\u3042\u308b\u5834\u5408\u3001\u901a\u5e38\u306e\u4e8c\u5206\u63a2\u7d22\u306f<code>target</code>\u306e1\u3064\u306e\u51fa\u73fe\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306e\u307f\u3092\u8fd4\u3059\u3053\u3068\u304c\u3067\u304d\u3001\u305d\u306e\u4f4d\u7f6e\u306e\u5de6\u53f3\u306b<code>target</code>\u306e\u51fa\u73fe\u304c\u3044\u304f\u3064\u3042\u308b\u304b\u3092\u7279\u5b9a\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002</p> <p>\u554f\u984c\u3067\u306f\u76ee\u6a19\u8981\u7d20\u3092\u6700\u3082\u5de6\u306e\u4f4d\u7f6e\u306b\u633f\u5165\u3059\u308b\u3053\u3068\u304c\u8981\u6c42\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u914d\u5217\u5185\u306e\u6700\u3082\u5de6\u306e<code>target</code>\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u898b\u3064\u3051\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u6700\u521d\u306b\u4e0b\u56f3\u306b\u793a\u3059\u30b9\u30c6\u30c3\u30d7\u3092\u901a\u3057\u3066\u3053\u308c\u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3092\u8003\u3048\u3066\u307f\u307e\u3057\u3087\u3046\u3002</p> <ol> <li>\u4e8c\u5206\u63a2\u7d22\u3092\u5b9f\u884c\u3057\u3066<code>target</code>\u306e\u4efb\u610f\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3001\u4f8b\u3048\u3070\\(k\\)\u3092\u898b\u3064\u3051\u307e\u3059\u3002</li> <li>\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\\(k\\)\u304b\u3089\u958b\u59cb\u3057\u3066\u3001\u6700\u3082\u5de6\u306e<code>target</code>\u306e\u51fa\u73fe\u304c\u898b\u3064\u304b\u308b\u307e\u3067\u5de6\u306b\u7dda\u5f62\u63a2\u7d22\u3092\u884c\u3044\u3001\u3053\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u3057\u307e\u3059\u3002</li> </ol> <p></p> <p> \u56f3 10-5 \u00a0 Linear search for the insertion point of duplicate elements </p> <p>\u3053\u306e\u65b9\u6cd5\u306f\u5b9f\u73fe\u53ef\u80fd\u3067\u3059\u304c\u3001\u7dda\u5f62\u63a2\u7d22\u3092\u542b\u3080\u305f\u3081\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n)\\)\u3067\u3059\u3002\u3053\u306e\u65b9\u6cd5\u306f\u3001\u914d\u5217\u306b\u591a\u304f\u306e\u91cd\u8907\u3059\u308b<code>target</code>\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u5834\u5408\u306b\u975e\u52b9\u7387\u3067\u3059\u3002</p> <p>\u4eca\u5ea6\u306f\u4e8c\u5206\u63a2\u7d22\u30b3\u30fc\u30c9\u3092\u62e1\u5f35\u3059\u308b\u3053\u3068\u3092\u8003\u3048\u3066\u307f\u307e\u3057\u3087\u3046\u3002\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u5168\u4f53\u7684\u306a\u30d7\u30ed\u30bb\u30b9\u306f\u540c\u3058\u307e\u307e\u3067\u3059\u3002\u5404\u30e9\u30a6\u30f3\u30c9\u3067\u3001\u307e\u305a\u4e2d\u9593\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\\(m\\)\u3092\u8a08\u7b97\u3057\u3001\u6b21\u306b<code>target</code>\u3068<code>nums[m]</code>\u306e\u5024\u3092\u6bd4\u8f03\u3057\u3066\u3001\u4ee5\u4e0b\u306e\u30b1\u30fc\u30b9\u306b\u306a\u308a\u307e\u3059\u3002</p> <ul> <li><code>nums[m] &lt; target</code>\u307e\u305f\u306f<code>nums[m] &gt; target</code>\u306e\u3068\u304d\u3001\u3053\u308c\u306f<code>target</code>\u304c\u307e\u3060\u898b\u3064\u304b\u3063\u3066\u3044\u306a\u3044\u3053\u3068\u3092\u610f\u5473\u3059\u308b\u305f\u3081\u3001\u901a\u5e38\u306e\u4e8c\u5206\u63a2\u7d22\u3092\u4f7f\u7528\u3057\u3066\u63a2\u7d22\u7bc4\u56f2\u3092\u72ed\u3081\u3001\u30dd\u30a4\u30f3\u30bf\\(i\\)\u3068\\(j\\)\u3092<code>target</code>\u306b\u8fd1\u3065\u3051\u307e\u3059\u3002</li> <li><code>nums[m] == target</code>\u306e\u3068\u304d\u3001\u3053\u308c\u306f<code>target</code>\u3088\u308a\u5c0f\u3055\u3044\u8981\u7d20\u304c\u7bc4\u56f2\\([i, m - 1]\\)\u306b\u3042\u308b\u3053\u3068\u3092\u793a\u3059\u305f\u3081\u3001\\(j = m - 1\\)\u3092\u4f7f\u7528\u3057\u3066\u7bc4\u56f2\u3092\u72ed\u3081\u3001\u30dd\u30a4\u30f3\u30bf\\(j\\)\u3092<code>target</code>\u3088\u308a\u5c0f\u3055\u3044\u8981\u7d20\u306b\u8fd1\u3065\u3051\u307e\u3059\u3002</li> </ul> <p>\u30eb\u30fc\u30d7\u5f8c\u3001\\(i\\)\u306f\u6700\u3082\u5de6\u306e<code>target</code>\u3092\u6307\u3057\u3001\\(j\\)\u306f<code>target</code>\u3088\u308a\u5c0f\u3055\u3044\u6700\u521d\u306e\u8981\u7d20\u3092\u6307\u3059\u305f\u3081\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\\(i\\)\u304c\u633f\u5165\u4f4d\u7f6e\u3067\u3059\u3002</p> &lt;1&gt;&lt;2&gt;&lt;3&gt;&lt;4&gt;&lt;5&gt;&lt;6&gt;&lt;7&gt;&lt;8&gt; <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p> \u56f3 10-6 \u00a0 Steps for binary search insertion point of duplicate elements </p> <p>\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u3092\u89b3\u5bdf\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u5206\u5c90<code>nums[m] &gt; target</code>\u3068<code>nums[m] == target</code>\u306e\u64cd\u4f5c\u306f\u540c\u3058\u3067\u3042\u308b\u305f\u3081\u3001\u3053\u308c\u30892\u3064\u306e\u5206\u5c90\u3092\u30de\u30fc\u30b8\u3067\u304d\u307e\u3059\u3002</p> <p>\u305d\u308c\u3067\u3082\u3001\u30ed\u30b8\u30c3\u30af\u304c\u3088\u308a\u660e\u78ba\u306b\u306a\u308a\u3001\u53ef\u8aad\u6027\u304c\u5411\u4e0a\u3059\u308b\u305f\u3081\u3001\u6761\u4ef6\u3092\u5c55\u958b\u3057\u305f\u307e\u307e\u306b\u3057\u3066\u304a\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby binary_search_insertion.py<pre><code>def binary_search_insertion(nums: list[int], target: int) -&gt; int:\n \"\"\"\u633f\u5165\u4f4d\u7f6e\u306e\u4e8c\u5206\u63a2\u7d22\uff08\u91cd\u8907\u8981\u7d20\u3042\u308a\uff09\"\"\"\n i, j = 0, len(nums) - 1 # \u4e21\u7aef\u9589\u533a\u9593 [0, n-1] \u3092\u521d\u671f\u5316\n while i &lt;= j:\n m = i + (j - i) // 2 # \u4e2d\u70b9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 m \u3092\u8a08\u7b97\n if nums[m] &lt; target:\n i = m + 1 # \u30bf\u30fc\u30b2\u30c3\u30c8\u306f\u533a\u9593 [m+1, j] \u306b\u3042\u308b\n elif nums[m] &gt; target:\n j = m - 1 # \u30bf\u30fc\u30b2\u30c3\u30c8\u306f\u533a\u9593 [i, m-1] \u306b\u3042\u308b\n else:\n j = m - 1 # \u30bf\u30fc\u30b2\u30c3\u30c8\u672a\u6e80\u306e\u6700\u521d\u306e\u8981\u7d20\u306f\u533a\u9593 [i, m-1] \u306b\u3042\u308b\n # \u633f\u5165\u4f4d\u7f6e i \u3092\u8fd4\u3059\n return i\n</code></pre> binary_search_insertion.cpp<pre><code>/* \u633f\u5165\u30dd\u30a4\u30f3\u30c8\u306e\u4e8c\u5206\u63a2\u7d22\uff08\u91cd\u8907\u8981\u7d20\u3042\u308a\uff09 */\nint binarySearchInsertion(vector&lt;int&gt; &amp;nums, int target) {\n int i = 0, j = nums.size() - 1; // \u4e21\u7aef\u9589\u533a\u9593[0, n-1]\u3092\u521d\u671f\u5316\n while (i &lt;= j) {\n int m = i + (j - i) / 2; // \u4e2d\u70b9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9m\u3092\u8a08\u7b97\n if (nums[m] &lt; target) {\n i = m + 1; // \u30bf\u30fc\u30b2\u30c3\u30c8\u306f\u533a\u9593[m+1, j]\u306b\u3042\u308b\n } else if (nums[m] &gt; target) {\n j = m - 1; // \u30bf\u30fc\u30b2\u30c3\u30c8\u306f\u533a\u9593[i, m-1]\u306b\u3042\u308b\n } else {\n j = m - 1; // \u30bf\u30fc\u30b2\u30c3\u30c8\u672a\u6e80\u306e\u6700\u521d\u306e\u8981\u7d20\u306f\u533a\u9593[i, m-1]\u306b\u3042\u308b\n }\n }\n // \u633f\u5165\u30dd\u30a4\u30f3\u30c8i\u3092\u8fd4\u3059\n return i;\n}\n</code></pre> binary_search_insertion.java<pre><code>/* \u633f\u5165\u70b9\u306e\u4e8c\u5206\u63a2\u7d22\uff08\u91cd\u8907\u8981\u7d20\u3042\u308a\uff09 */\nint binarySearchInsertion(int[] nums, int target) {\n int i = 0, j = nums.length - 1; // \u4e21\u7aef\u9589\u533a\u9593 [0, n-1] \u3092\u521d\u671f\u5316\n while (i &lt;= j) {\n int m = i + (j - i) / 2; // \u4e2d\u70b9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 m \u3092\u8a08\u7b97\n if (nums[m] &lt; target) {\n i = m + 1; // target \u306f\u533a\u9593 [m+1, j] \u306b\u3042\u308b\n } else if (nums[m] &gt; target) {\n j = m - 1; // target \u306f\u533a\u9593 [i, m-1] \u306b\u3042\u308b\n } else {\n j = m - 1; // target \u3088\u308a\u5c0f\u3055\u3044\u6700\u521d\u306e\u8981\u7d20\u306f\u533a\u9593 [i, m-1] \u306b\u3042\u308b\n }\n }\n // \u633f\u5165\u70b9 i \u3092\u8fd4\u3059\n return i;\n}\n</code></pre> binary_search_insertion.cs<pre><code>[class]{binary_search_insertion}-[func]{BinarySearchInsertion}\n</code></pre> binary_search_insertion.go<pre><code>[class]{}-[func]{binarySearchInsertion}\n</code></pre> binary_search_insertion.swift<pre><code>[class]{}-[func]{binarySearchInsertion}\n</code></pre> binary_search_insertion.js<pre><code>[class]{}-[func]{binarySearchInsertion}\n</code></pre> binary_search_insertion.ts<pre><code>[class]{}-[func]{binarySearchInsertion}\n</code></pre> binary_search_insertion.dart<pre><code>[class]{}-[func]{binarySearchInsertion}\n</code></pre> binary_search_insertion.rs<pre><code>[class]{}-[func]{binary_search_insertion}\n</code></pre> binary_search_insertion.c<pre><code>[class]{}-[func]{binarySearchInsertion}\n</code></pre> binary_search_insertion.kt<pre><code>[class]{}-[func]{binarySearchInsertion}\n</code></pre> binary_search_insertion.rb<pre><code>[class]{}-[func]{binary_search_insertion}\n</code></pre> <p>Tip</p> <p>\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u306e\u30b3\u30fc\u30c9\u306f\u300c\u9589\u533a\u9593\u300d\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002\u300c\u5de6\u9589\u53f3\u958b\u300d\u306b\u8208\u5473\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u81ea\u5206\u3067\u30b3\u30fc\u30c9\u3092\u5b9f\u88c5\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002</p> <p>\u8981\u7d04\u3059\u308b\u3068\u3001\u4e8c\u5206\u63a2\u7d22\u306f\u672c\u8cea\u7684\u306b\u30dd\u30a4\u30f3\u30bf\\(i\\)\u3068\\(j\\)\u306e\u63a2\u7d22\u76ee\u6a19\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u3053\u308c\u3089\u306e\u76ee\u6a19\u306f\u7279\u5b9a\u306e\u8981\u7d20\uff08<code>target</code>\u306a\u3069\uff09\u307e\u305f\u306f\u8981\u7d20\u306e\u7bc4\u56f2\uff08<code>target</code>\u3088\u308a\u5c0f\u3055\u3044\u3082\u306e\u306a\u3069\uff09\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>\u4e8c\u5206\u63a2\u7d22\u306e\u9023\u7d9a\u30eb\u30fc\u30d7\u306b\u304a\u3044\u3066\u3001\u30dd\u30a4\u30f3\u30bf\\(i\\)\u3068\\(j\\)\u306f\u6bb5\u968e\u7684\u306b\u4e8b\u524d\u5b9a\u7fa9\u3055\u308c\u305f\u76ee\u6a19\u306b\u8fd1\u3065\u304d\u307e\u3059\u3002\u6700\u7d42\u7684\u306b\u3001\u305d\u308c\u3089\u306f\u7b54\u3048\u3092\u898b\u3064\u3051\u308b\u304b\u3001\u5883\u754c\u3092\u8d8a\u3048\u305f\u5f8c\u306b\u505c\u6b62\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_searching/replace_linear_by_hashing/","title":"10.4 \u00a0 \u30cf\u30c3\u30b7\u30e5\u6700\u9069\u5316\u6226\u7565","text":"<p>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u554f\u984c\u306b\u304a\u3044\u3066\u3001\u7dda\u5f62\u63a2\u7d22\u3092\u30cf\u30c3\u30b7\u30e5\u30d9\u30fc\u30b9\u306e\u63a2\u7d22\u306b\u7f6e\u304d\u63db\u3048\u308b\u3053\u3068\u3067\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u6642\u9593\u8a08\u7b97\u91cf\u3092\u524a\u6e1b\u3059\u308b\u3053\u3068\u304c\u3088\u304f\u3042\u308a\u307e\u3059\u3002\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u554f\u984c\u3092\u4f7f\u7528\u3057\u3066\u7406\u89e3\u3092\u6df1\u3081\u307e\u3057\u3087\u3046\u3002</p> <p>Question</p> <p>\u6574\u6570\u914d\u5217<code>nums</code>\u3068\u76ee\u6a19\u8981\u7d20<code>target</code>\u304c\u4e0e\u3048\u3089\u308c\u3001\u914d\u5217\u5185\u3067\u300c\u548c\u300d\u304c<code>target</code>\u306b\u7b49\u3057\u30442\u3064\u306e\u8981\u7d20\u3092\u63a2\u7d22\u3057\u3001\u305d\u308c\u3089\u306e\u914d\u5217\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4efb\u610f\u306e\u89e3\u304c\u53d7\u3051\u5165\u308c\u3089\u308c\u307e\u3059\u3002</p>"},{"location":"chapter_searching/replace_linear_by_hashing/#1041","title":"10.4.1 \u00a0 \u7dda\u5f62\u63a2\u7d22\uff1a\u6642\u9593\u3092\u7a7a\u9593\u3068\u4ea4\u63db","text":"<p>\u3059\u3079\u3066\u306e\u53ef\u80fd\u306a\u7d44\u307f\u5408\u308f\u305b\u3092\u76f4\u63a5\u6a2a\u65ad\u3059\u308b\u3053\u3068\u3092\u8003\u3048\u3066\u307f\u307e\u3059\u3002\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u30cd\u30b9\u30c8\u3057\u305f\u30eb\u30fc\u30d7\u3092\u958b\u59cb\u3057\u3001\u5404\u53cd\u5fa9\u30672\u3064\u306e\u6574\u6570\u306e\u548c\u304c<code>target</code>\u306b\u7b49\u3057\u3044\u304b\u3069\u3046\u304b\u3092\u5224\u65ad\u3057\u307e\u3059\u3002\u305d\u3046\u3067\u3042\u308c\u3070\u3001\u305d\u308c\u3089\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 10-9 \u00a0 Linear search solution for two-sum problem </p> <p>\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby two_sum.py<pre><code>def two_sum_brute_force(nums: list[int], target: int) -&gt; list[int]:\n \"\"\"\u65b9\u6cd5\u4e00\uff1a\u30d6\u30eb\u30fc\u30c8\u30d5\u30a9\u30fc\u30b9\u5217\u6319\"\"\"\n # \u4e8c\u91cd\u30eb\u30fc\u30d7\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f O(n^2)\n for i in range(len(nums) - 1):\n for j in range(i + 1, len(nums)):\n if nums[i] + nums[j] == target:\n return [i, j]\n return []\n</code></pre> two_sum.cpp<pre><code>/* \u65b9\u6cd5\u4e00\uff1a\u30d6\u30eb\u30fc\u30c8\u30d5\u30a9\u30fc\u30b9\u5217\u6319 */\nvector&lt;int&gt; twoSumBruteForce(vector&lt;int&gt; &amp;nums, int target) {\n int size = nums.size();\n // \u4e8c\u91cd\u30eb\u30fc\u30d7\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306fO(n^2)\n for (int i = 0; i &lt; size - 1; i++) {\n for (int j = i + 1; j &lt; size; j++) {\n if (nums[i] + nums[j] == target)\n return {i, j};\n }\n }\n return {};\n}\n</code></pre> two_sum.java<pre><code>/* \u65b9\u6cd5\u4e00: \u66b4\u529b\u5217\u6319 */\nint[] twoSumBruteForce(int[] nums, int target) {\n int size = nums.length;\n // \u4e8c\u91cd\u30eb\u30fc\u30d7\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f O(n^2)\n for (int i = 0; i &lt; size - 1; i++) {\n for (int j = i + 1; j &lt; size; j++) {\n if (nums[i] + nums[j] == target)\n return new int[] { i, j };\n }\n }\n return new int[0];\n}\n</code></pre> two_sum.cs<pre><code>[class]{two_sum}-[func]{TwoSumBruteForce}\n</code></pre> two_sum.go<pre><code>[class]{}-[func]{twoSumBruteForce}\n</code></pre> two_sum.swift<pre><code>[class]{}-[func]{twoSumBruteForce}\n</code></pre> two_sum.js<pre><code>[class]{}-[func]{twoSumBruteForce}\n</code></pre> two_sum.ts<pre><code>[class]{}-[func]{twoSumBruteForce}\n</code></pre> two_sum.dart<pre><code>[class]{}-[func]{twoSumBruteForce}\n</code></pre> two_sum.rs<pre><code>[class]{}-[func]{two_sum_brute_force}\n</code></pre> two_sum.c<pre><code>[class]{}-[func]{twoSumBruteForce}\n</code></pre> two_sum.kt<pre><code>[class]{}-[func]{twoSumBruteForce}\n</code></pre> two_sum.rb<pre><code>[class]{}-[func]{two_sum_brute_force}\n</code></pre> <p>\u3053\u306e\u65b9\u6cd5\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n^2)\\)\u3001\u7a7a\u9593\u8a08\u7b97\u91cf\u306f\\(O(1)\\)\u3067\u3001\u5927\u5bb9\u91cf\u30c7\u30fc\u30bf\u3067\u306f\u975e\u5e38\u306b\u6642\u9593\u304c\u304b\u304b\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</p>"},{"location":"chapter_searching/replace_linear_by_hashing/#1042","title":"10.4.2 \u00a0 \u30cf\u30c3\u30b7\u30e5\u63a2\u7d22\uff1a\u7a7a\u9593\u3092\u6642\u9593\u3068\u4ea4\u63db","text":"<p>\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u306e\u4f7f\u7528\u3092\u8003\u3048\u3066\u307f\u307e\u3057\u3087\u3046\u3002\u30ad\u30fc\u3068\u5024\u306e\u30da\u30a2\u306f\u305d\u308c\u305e\u308c\u914d\u5217\u8981\u7d20\u3068\u305d\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u3059\u3002\u914d\u5217\u3092\u30eb\u30fc\u30d7\u3057\u3001\u5404\u53cd\u5fa9\u4e2d\u306b\u4e0b\u56f3\u306b\u793a\u3059\u30b9\u30c6\u30c3\u30d7\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002</p> <ol> <li>\u6570\u5024<code>target - nums[i]</code>\u304c\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u306b\u3042\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\u3042\u308b\u5834\u5408\u306f\u3001\u3053\u308c\u30892\u3064\u306e\u8981\u7d20\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u76f4\u63a5\u8fd4\u3057\u307e\u3059\u3002</li> <li>\u30ad\u30fc\u3068\u5024\u306e\u30da\u30a2<code>nums[i]</code>\u3068\u30a4\u30f3\u30c7\u30c3\u30af\u30b9<code>i</code>\u3092\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002</li> </ol> &lt;1&gt;&lt;2&gt;&lt;3&gt; <p></p> <p></p> <p></p> <p> \u56f3 10-10 \u00a0 Help hash table solve two-sum </p> <p>\u5b9f\u88c5\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306b\u793a\u3055\u308c\u3001\u5358\u4e00\u306e\u30eb\u30fc\u30d7\u306e\u307f\u304c\u5fc5\u8981\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby two_sum.py<pre><code>def two_sum_hash_table(nums: list[int], target: int) -&gt; list[int]:\n \"\"\"\u65b9\u6cd5\u4e8c\uff1a\u88dc\u52a9\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\"\"\"\n # \u88dc\u52a9\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3001\u7a7a\u9593\u8a08\u7b97\u91cf\u306f O(n)\n dic = {}\n # \u5358\u4e00\u30eb\u30fc\u30d7\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f O(n)\n for i in range(len(nums)):\n if target - nums[i] in dic:\n return [dic[target - nums[i]], i]\n dic[nums[i]] = i\n return []\n</code></pre> two_sum.cpp<pre><code>/* \u65b9\u6cd5\u4e8c\uff1a\u88dc\u52a9\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb */\nvector&lt;int&gt; twoSumHashTable(vector&lt;int&gt; &amp;nums, int target) {\n int size = nums.size();\n // \u88dc\u52a9\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3001\u7a7a\u9593\u8a08\u7b97\u91cf\u306fO(n)\n unordered_map&lt;int, int&gt; dic;\n // \u5358\u5c64\u30eb\u30fc\u30d7\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306fO(n)\n for (int i = 0; i &lt; size; i++) {\n if (dic.find(target - nums[i]) != dic.end()) {\n return {dic[target - nums[i]], i};\n }\n dic.emplace(nums[i], i);\n }\n return {};\n}\n</code></pre> two_sum.java<pre><code>/* \u65b9\u6cd5\u4e8c: \u88dc\u52a9\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb */\nint[] twoSumHashTable(int[] nums, int target) {\n int size = nums.length;\n // \u88dc\u52a9\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3001\u7a7a\u9593\u8a08\u7b97\u91cf\u306f O(n)\n Map&lt;Integer, Integer&gt; dic = new HashMap&lt;&gt;();\n // \u5358\u4e00\u5c64\u30eb\u30fc\u30d7\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f O(n)\n for (int i = 0; i &lt; size; i++) {\n if (dic.containsKey(target - nums[i])) {\n return new int[] { dic.get(target - nums[i]), i };\n }\n dic.put(nums[i], i);\n }\n return new int[0];\n}\n</code></pre> two_sum.cs<pre><code>[class]{two_sum}-[func]{TwoSumHashTable}\n</code></pre> two_sum.go<pre><code>[class]{}-[func]{twoSumHashTable}\n</code></pre> two_sum.swift<pre><code>[class]{}-[func]{twoSumHashTable}\n</code></pre> two_sum.js<pre><code>[class]{}-[func]{twoSumHashTable}\n</code></pre> two_sum.ts<pre><code>[class]{}-[func]{twoSumHashTable}\n</code></pre> two_sum.dart<pre><code>[class]{}-[func]{twoSumHashTable}\n</code></pre> two_sum.rs<pre><code>[class]{}-[func]{two_sum_hash_table}\n</code></pre> two_sum.c<pre><code>[class]{HashTable}-[func]{}\n\n[class]{}-[func]{twoSumHashTable}\n</code></pre> two_sum.kt<pre><code>[class]{}-[func]{twoSumHashTable}\n</code></pre> two_sum.rb<pre><code>[class]{}-[func]{two_sum_hash_table}\n</code></pre> <p>\u3053\u306e\u65b9\u6cd5\u306f\u3001\u30cf\u30c3\u30b7\u30e5\u63a2\u7d22\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u6642\u9593\u8a08\u7b97\u91cf\u3092\\(O(n^2)\\)\u304b\u3089\\(O(n)\\)\u306b\u524a\u6e1b\u3057\u3001\u5b9f\u884c\u6642\u52b9\u7387\u3092\u5927\u5e45\u306b\u5411\u4e0a\u3055\u305b\u307e\u3059\u3002</p> <p>\u8ffd\u52a0\u306e\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u7dad\u6301\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u305f\u3081\u3001\u7a7a\u9593\u8a08\u7b97\u91cf\u306f\\(O(n)\\)\u3067\u3059\u3002\u305d\u308c\u306b\u3082\u304b\u304b\u308f\u3089\u305a\u3001\u3053\u306e\u65b9\u6cd5\u306f\u5168\u4f53\u7684\u306b\u3088\u308a\u5747\u8861\u306e\u3068\u308c\u305f\u6642\u7a7a\u9593\u52b9\u7387\u3092\u6301\u3061\u3001\u3053\u306e\u554f\u984c\u306e\u6700\u9069\u89e3\u3068\u306a\u308a\u307e\u3059\u3002</p>"},{"location":"chapter_searching/searching_algorithm_revisited/","title":"10.5 \u00a0 \u63a2\u7d22\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u518d\u691c\u8a0e","text":"<p>\u63a2\u7d22\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff08\u691c\u7d22\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff09\u306f\u3001\u914d\u5217\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u3001\u6728\u3001\u30b0\u30e9\u30d5\u306a\u3069\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u5185\u3067\u7279\u5b9a\u306e\u57fa\u6e96\u3092\u6e80\u305f\u30591\u3064\u4ee5\u4e0a\u306e\u8981\u7d20\u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002</p> <p>\u63a2\u7d22\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u3001\u305d\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306b\u57fa\u3065\u3044\u3066\u4ee5\u4e0b\u306e2\u3064\u306e\u30ab\u30c6\u30b4\u30ea\u306b\u5206\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</p> <ul> <li>\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u6a2a\u65ad\u3059\u308b\u3053\u3068\u3067\u76ee\u6a19\u8981\u7d20\u3092\u7279\u5b9a\u3059\u308b\uff1a\u914d\u5217\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u3001\u6728\u3001\u30b0\u30e9\u30d5\u306e\u6a2a\u65ad\u306a\u3069\u3002</li> <li>\u30c7\u30fc\u30bf\u306e\u7d44\u7e54\u69cb\u9020\u3084\u65e2\u5b58\u306e\u30c7\u30fc\u30bf\u3092\u4f7f\u7528\u3057\u3066\u52b9\u7387\u7684\u306a\u8981\u7d20\u63a2\u7d22\u3092\u5b9f\u73fe\u3059\u308b\uff1a\u4e8c\u5206\u63a2\u7d22\u3001\u30cf\u30c3\u30b7\u30e5\u63a2\u7d22\u3001\u4e8c\u5206\u63a2\u7d22\u6728\u63a2\u7d22\u306a\u3069\u3002</li> </ul> <p>\u3053\u308c\u3089\u306e\u30c8\u30d4\u30c3\u30af\u306f\u524d\u306e\u7ae0\u3067\u7d39\u4ecb\u3055\u308c\u305f\u305f\u3081\u3001\u79c1\u305f\u3061\u306b\u306f\u99b4\u67d3\u307f\u306e\u306a\u3044\u3082\u306e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3088\u308a\u4f53\u7cfb\u7684\u306a\u89b3\u70b9\u304b\u3089\u63a2\u7d22\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u518d\u691c\u8a0e\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_searching/searching_algorithm_revisited/#1051","title":"10.5.1 \u00a0 \u7dcf\u5f53\u305f\u308a\u63a2\u7d22","text":"<p>\u7dcf\u5f53\u305f\u308a\u63a2\u7d22\u306f\u3001\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u3059\u3079\u3066\u306e\u8981\u7d20\u3092\u6a2a\u65ad\u3059\u308b\u3053\u3068\u3067\u76ee\u6a19\u8981\u7d20\u3092\u7279\u5b9a\u3057\u307e\u3059\u3002</p> <ul> <li>\u300c\u7dda\u5f62\u63a2\u7d22\u300d\u306f\u914d\u5217\u3084\u9023\u7d50\u30ea\u30b9\u30c8\u306a\u3069\u306e\u7dda\u5f62\u30c7\u30fc\u30bf\u69cb\u9020\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u4e00\u7aef\u304b\u3089\u958b\u59cb\u3057\u3001\u76ee\u6a19\u8981\u7d20\u304c\u898b\u3064\u304b\u308b\u304b\u3001\u76ee\u6a19\u8981\u7d20\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u306a\u304f\u4ed6\u7aef\u306b\u5230\u9054\u3059\u308b\u307e\u3067\u3001\u5404\u8981\u7d20\u306b\u4e00\u3064\u305a\u3064\u30a2\u30af\u30bb\u30b9\u3057\u307e\u3059\u3002</li> <li>\u300c\u5e45\u512a\u5148\u63a2\u7d22\u300d\u3068\u300c\u6df1\u3055\u512a\u5148\u63a2\u7d22\u300d\u306f\u3001\u30b0\u30e9\u30d5\u3068\u6728\u306e2\u3064\u306e\u6a2a\u65ad\u6226\u7565\u3067\u3059\u3002\u5e45\u512a\u5148\u63a2\u7d22\u306f\u521d\u671f\u30ce\u30fc\u30c9\u304b\u3089\u958b\u59cb\u3057\u3001\u5c64\u3054\u3068\uff08\u5de6\u304b\u3089\u53f3\u3078\uff09\u306b\u63a2\u7d22\u3057\u3001\u8fd1\u304f\u304b\u3089\u9060\u304f\u306e\u30ce\u30fc\u30c9\u306b\u30a2\u30af\u30bb\u30b9\u3057\u307e\u3059\u3002\u6df1\u3055\u512a\u5148\u63a2\u7d22\u306f\u521d\u671f\u30ce\u30fc\u30c9\u304b\u3089\u958b\u59cb\u3057\u3001\u30d1\u30b9\u306e\u7d42\u7aef\uff08\u4e0a\u304b\u3089\u4e0b\u3078\uff09\u307e\u3067\u8ffd\u8de1\u3057\u3001\u305d\u306e\u5f8c\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30af\u3057\u3066\u4ed6\u306e\u30d1\u30b9\u3092\u8a66\u3057\u3001\u30c7\u30fc\u30bf\u69cb\u9020\u5168\u4f53\u304c\u6a2a\u65ad\u3055\u308c\u308b\u307e\u3067\u7d9a\u884c\u3057\u307e\u3059\u3002</li> </ul> <p>\u7dcf\u5f53\u305f\u308a\u63a2\u7d22\u306e\u5229\u70b9\u306f\u3001\u305d\u306e\u5358\u7d14\u3055\u3068\u6c4e\u7528\u6027\u3067\u3042\u308a\u3001**\u30c7\u30fc\u30bf\u306e\u524d\u51e6\u7406\u3084\u8ffd\u52a0\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u52a9\u3051\u304c\u4e0d\u8981**\u3067\u3059\u3002</p> <p>\u305f\u3060\u3057\u3001**\u3053\u306e\u30bf\u30a4\u30d7\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n)\\)**\u3067\u3001\\(n\\)\u306f\u8981\u7d20\u6570\u3067\u3042\u308b\u305f\u3081\u3001\u5927\u898f\u6a21\u306a\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3067\u306f\u6027\u80fd\u304c\u60aa\u304f\u306a\u308a\u307e\u3059\u3002</p>"},{"location":"chapter_searching/searching_algorithm_revisited/#1052","title":"10.5.2 \u00a0 \u9069\u5fdc\u7684\u63a2\u7d22","text":"<p>\u9069\u5fdc\u7684\u63a2\u7d22\u306f\u3001\u30c7\u30fc\u30bf\u306e\u56fa\u6709\u306e\u6027\u8cea\uff08\u9806\u5e8f\u306a\u3069\uff09\u3092\u4f7f\u7528\u3057\u3066\u63a2\u7d22\u30d7\u30ed\u30bb\u30b9\u3092\u6700\u9069\u5316\u3057\u3001\u305d\u308c\u306b\u3088\u308a\u76ee\u6a19\u8981\u7d20\u3092\u3088\u308a\u52b9\u7387\u7684\u306b\u7279\u5b9a\u3057\u307e\u3059\u3002</p> <ul> <li>\u300c\u4e8c\u5206\u63a2\u7d22\u300d\u306f\u30c7\u30fc\u30bf\u306e\u6574\u5217\u6027\u3092\u4f7f\u7528\u3057\u3066\u52b9\u7387\u7684\u306a\u63a2\u7d22\u3092\u5b9f\u73fe\u3057\u3001\u914d\u5217\u306b\u306e\u307f\u9069\u7528\u53ef\u80fd\u3067\u3059\u3002</li> <li>\u300c\u30cf\u30c3\u30b7\u30e5\u63a2\u7d22\u300d\u306f\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u4f7f\u7528\u3057\u3066\u63a2\u7d22\u30c7\u30fc\u30bf\u3068\u76ee\u6a19\u30c7\u30fc\u30bf\u306e\u9593\u306b\u30ad\u30fc\u3068\u5024\u306e\u30de\u30c3\u30d4\u30f3\u30b0\u3092\u78ba\u7acb\u3057\u3001\u305d\u308c\u306b\u3088\u308a\u30af\u30a8\u30ea\u64cd\u4f5c\u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002</li> <li>\u7279\u5b9a\u306e\u6728\u69cb\u9020\uff08\u4e8c\u5206\u63a2\u7d22\u6728\u306a\u3069\uff09\u3067\u306e\u300c\u6728\u63a2\u7d22\u300d\u306f\u3001\u30ce\u30fc\u30c9\u5024\u306e\u6bd4\u8f03\u306b\u57fa\u3065\u3044\u3066\u30ce\u30fc\u30c9\u3092\u8fc5\u901f\u306b\u9664\u5916\u3057\u3001\u305d\u308c\u306b\u3088\u308a\u76ee\u6a19\u8981\u7d20\u3092\u7279\u5b9a\u3057\u307e\u3059\u3002</li> </ul> <p>\u3053\u308c\u3089\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5229\u70b9\u306f\u9ad8\u52b9\u7387\u3067\u3042\u308a\u3001\u6642\u9593\u8a08\u7b97\u91cf\u304c\\(O(\\log n)\\)\u307e\u305f\u306f\\(O(1)\\)\u306b\u307e\u3067\u9054\u3057\u307e\u3059\u3002</p> <p>\u305f\u3060\u3057\u3001\u3053\u308c\u3089\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001\u591a\u304f\u306e\u5834\u5408\u30c7\u30fc\u30bf\u306e\u524d\u51e6\u7406\u304c\u5fc5\u8981\u3067\u3059\u3002\u4f8b\u3048\u3070\u3001\u4e8c\u5206\u63a2\u7d22\u3067\u306f\u4e8b\u524d\u306b\u914d\u5217\u3092\u30bd\u30fc\u30c8\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u30cf\u30c3\u30b7\u30e5\u63a2\u7d22\u3068\u6728\u63a2\u7d22\u306e\u4e21\u65b9\u3067\u8ffd\u52a0\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u52a9\u3051\u304c\u5fc5\u8981\u3067\u3059\u3002\u3053\u308c\u3089\u306e\u69cb\u9020\u3092\u7dad\u6301\u3059\u308b\u3053\u3068\u3082\u3001\u6642\u9593\u3068\u7a7a\u9593\u306e\u9762\u3067\u3088\u308a\u591a\u304f\u306e\u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9\u304c\u5fc5\u8981\u3067\u3059\u3002</p> <p>Tip</p> <p>\u9069\u5fdc\u7684\u63a2\u7d22\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u3001\u591a\u304f\u306e\u5834\u5408\u63a2\u7d22\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3068\u547c\u3070\u308c\u3001\u4e3b\u306b\u7279\u5b9a\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u5185\u3067\u76ee\u6a19\u8981\u7d20\u3092\u8fc5\u901f\u306b\u53d6\u5f97\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002</p>"},{"location":"chapter_searching/searching_algorithm_revisited/#1053","title":"10.5.3 \u00a0 \u63a2\u7d22\u65b9\u6cd5\u306e\u9078\u629e","text":"<p>\u30b5\u30a4\u30ba\\(n\\)\u306e\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u3001\u7dda\u5f62\u63a2\u7d22\u3001\u4e8c\u5206\u63a2\u7d22\u3001\u6728\u63a2\u7d22\u3001\u30cf\u30c3\u30b7\u30e5\u63a2\u7d22\u3001\u307e\u305f\u306f\u305d\u306e\u4ed6\u306e\u65b9\u6cd5\u3092\u4f7f\u7528\u3057\u3066\u76ee\u6a19\u8981\u7d20\u3092\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u65b9\u6cd5\u306e\u52d5\u4f5c\u539f\u7406\u3092\u4e0b\u56f3\u306b\u793a\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 10-11 \u00a0 Various search strategies </p> <p>\u524d\u8ff0\u306e\u65b9\u6cd5\u306e\u7279\u6027\u3068\u64cd\u4f5c\u52b9\u7387\u3092\u4ee5\u4e0b\u306e\u8868\u306b\u793a\u3057\u307e\u3059\u3002</p> <p> \u8868 10-1 \u00a0 \u63a2\u7d22\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u52b9\u7387\u306e\u6bd4\u8f03 </p> \u7dda\u5f62\u63a2\u7d22 \u4e8c\u5206\u63a2\u7d22 \u6728\u63a2\u7d22 \u30cf\u30c3\u30b7\u30e5\u63a2\u7d22 \u8981\u7d20\u63a2\u7d22 \\(O(n)\\) \\(O(\\log n)\\) \\(O(\\log n)\\) \\(O(1)\\) \u8981\u7d20\u633f\u5165 \\(O(1)\\) \\(O(n)\\) \\(O(\\log n)\\) \\(O(1)\\) \u8981\u7d20\u524a\u9664 \\(O(n)\\) \\(O(n)\\) \\(O(\\log n)\\) \\(O(1)\\) \u8ffd\u52a0\u7a7a\u9593 \\(O(1)\\) \\(O(1)\\) \\(O(n)\\) \\(O(n)\\) \u30c7\u30fc\u30bf\u524d\u51e6\u7406 / \u30bd\u30fc\u30c8 \\(O(n \\log n)\\) \u6728\u69cb\u7bc9 \\(O(n \\log n)\\) \u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u69cb\u7bc9 \\(O(n)\\) \u30c7\u30fc\u30bf\u9806\u5e8f\u6027 \u7121\u9806\u5e8f \u9806\u5e8f \u9806\u5e8f \u7121\u9806\u5e8f <p>\u63a2\u7d22\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u9078\u629e\u306f\u3001\u30c7\u30fc\u30bf\u91cf\u3001\u63a2\u7d22\u6027\u80fd\u8981\u4ef6\u3001\u30c7\u30fc\u30bf\u30af\u30a8\u30ea\u3068\u66f4\u65b0\u306e\u983b\u5ea6\u306a\u3069\u306b\u3082\u4f9d\u5b58\u3057\u307e\u3059\u3002</p> <p>\u7dda\u5f62\u63a2\u7d22</p> <ul> <li>\u6c4e\u7528\u6027\u304c\u826f\u304f\u3001\u30c7\u30fc\u30bf\u524d\u51e6\u7406\u64cd\u4f5c\u304c\u4e0d\u8981\u3067\u3059\u3002\u30c7\u30fc\u30bf\u3092\u4e00\u5ea6\u3060\u3051\u30af\u30a8\u30ea\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u3001\u4ed6\u306e3\u3064\u306e\u65b9\u6cd5\u306e\u30c7\u30fc\u30bf\u524d\u51e6\u7406\u6642\u9593\u306f\u7dda\u5f62\u63a2\u7d22\u306e\u6642\u9593\u3088\u308a\u3082\u9577\u304f\u306a\u308a\u307e\u3059\u3002</li> <li>\u5c0f\u5bb9\u91cf\u306e\u30c7\u30fc\u30bf\u306b\u9069\u3057\u3066\u304a\u308a\u3001\u6642\u9593\u8a08\u7b97\u91cf\u304c\u52b9\u7387\u306b\u4e0e\u3048\u308b\u5f71\u97ff\u306f\u5c0f\u3055\u3044\u3067\u3059\u3002</li> <li>\u30c7\u30fc\u30bf\u66f4\u65b0\u304c\u975e\u5e38\u306b\u983b\u7e41\u306a\u30b7\u30ca\u30ea\u30aa\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u65b9\u6cd5\u306f\u30c7\u30fc\u30bf\u306e\u8ffd\u52a0\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u3092\u5fc5\u8981\u3068\u3057\u306a\u3044\u305f\u3081\u3067\u3059\u3002</li> </ul> <p>\u4e8c\u5206\u63a2\u7d22</p> <ul> <li>\u3088\u308a\u5927\u304d\u306a\u30c7\u30fc\u30bf\u91cf\u306b\u9069\u3057\u3066\u304a\u308a\u3001\u5b89\u5b9a\u3057\u305f\u6027\u80fd\u3068\u6700\u60aa\u30b1\u30fc\u30b9\u306e\u6642\u9593\u8a08\u7b97\u91cf\\(O(\\log n)\\)\u3092\u6301\u3061\u307e\u3059\u3002</li> <li>\u305f\u3060\u3057\u3001\u30c7\u30fc\u30bf\u91cf\u304c\u5927\u304d\u3059\u304e\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u914d\u5217\u306e\u4fdd\u5b58\u306b\u306f\u9023\u7d9a\u3057\u305f\u30e1\u30e2\u30ea\u7a7a\u9593\u304c\u5fc5\u8981\u3060\u304b\u3089\u3067\u3059\u3002</li> <li>\u983b\u7e41\u306a\u8ffd\u52a0\u3068\u524a\u9664\u304c\u3042\u308b\u30b7\u30ca\u30ea\u30aa\u306b\u306f\u9069\u3057\u3066\u3044\u307e\u305b\u3093\u3002\u9806\u5e8f\u4ed8\u304d\u914d\u5217\u306e\u7dad\u6301\u306b\u591a\u304f\u306e\u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9\u304c\u767a\u751f\u3059\u308b\u305f\u3081\u3067\u3059\u3002</li> </ul> <p>\u30cf\u30c3\u30b7\u30e5\u63a2\u7d22</p> <ul> <li>\u9ad8\u901f\u30af\u30a8\u30ea\u6027\u80fd\u304c\u4e0d\u53ef\u6b20\u306a\u30b7\u30ca\u30ea\u30aa\u306b\u9069\u3057\u3066\u304a\u308a\u3001\u5e73\u5747\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(1)\\)\u3067\u3059\u3002</li> <li>\u9806\u5e8f\u4ed8\u304d\u30c7\u30fc\u30bf\u3084\u7bc4\u56f2\u63a2\u7d22\u304c\u5fc5\u8981\u306a\u30b7\u30ca\u30ea\u30aa\u306b\u306f\u9069\u3057\u3066\u3044\u307e\u305b\u3093\u3002\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u306f\u30c7\u30fc\u30bf\u306e\u9806\u5e8f\u6027\u3092\u7dad\u6301\u3067\u304d\u306a\u3044\u305f\u3081\u3067\u3059\u3002</li> <li>\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u3068\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u51e6\u7406\u6226\u7565\u3078\u306e\u4f9d\u5b58\u5ea6\u304c\u9ad8\u304f\u3001\u6027\u80fd\u52a3\u5316\u306e\u30ea\u30b9\u30af\u304c\u5927\u304d\u3044\u3067\u3059\u3002</li> <li>\u904e\u5ea6\u306b\u5927\u5bb9\u91cf\u306e\u30c7\u30fc\u30bf\u306b\u306f\u9069\u3057\u3066\u3044\u307e\u305b\u3093\u3002\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u306f\u885d\u7a81\u3092\u6700\u5c0f\u5316\u3057\u3001\u826f\u597d\u306a\u30af\u30a8\u30ea\u6027\u80fd\u3092\u63d0\u4f9b\u3059\u308b\u305f\u3081\u306b\u8ffd\u52a0\u306e\u7a7a\u9593\u304c\u5fc5\u8981\u3060\u304b\u3089\u3067\u3059\u3002</li> </ul> <p>\u6728\u63a2\u7d22</p> <ul> <li>\u5927\u5bb9\u91cf\u30c7\u30fc\u30bf\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002\u6728\u30ce\u30fc\u30c9\u306f\u30e1\u30e2\u30ea\u5185\u306b\u5206\u6563\u3057\u3066\u4fdd\u5b58\u3055\u308c\u308b\u305f\u3081\u3067\u3059\u3002</li> <li>\u9806\u5e8f\u4ed8\u304d\u30c7\u30fc\u30bf\u306e\u7dad\u6301\u3084\u7bc4\u56f2\u63a2\u7d22\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002</li> <li>\u30ce\u30fc\u30c9\u306e\u7d99\u7d9a\u7684\u306a\u8ffd\u52a0\u3068\u524a\u9664\u306b\u3088\u308a\u3001\u4e8c\u5206\u63a2\u7d22\u6728\u306f\u504f\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u3001\u6642\u9593\u8a08\u7b97\u91cf\u304c\\(O(n)\\)\u306b\u52a3\u5316\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>AVL\u6728\u3084\u8d64\u9ed2\u6728\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u64cd\u4f5c\u306f\\(O(\\log n)\\)\u52b9\u7387\u3067\u5b89\u5b9a\u3057\u3066\u5b9f\u884c\u3067\u304d\u307e\u3059\u304c\u3001\u6728\u306e\u30d0\u30e9\u30f3\u30b9\u3092\u7dad\u6301\u3059\u308b\u64cd\u4f5c\u306b\u3088\u308a\u8ffd\u52a0\u306e\u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9\u304c\u8ffd\u52a0\u3055\u308c\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_searching/summary/","title":"10.6 \u00a0 \u307e\u3068\u3081","text":"<ul> <li>\u4e8c\u5206\u63a2\u7d22\u306f\u30c7\u30fc\u30bf\u306e\u9806\u5e8f\u306b\u4f9d\u5b58\u3057\u3001\u63a2\u7d22\u533a\u9593\u3092\u53cd\u5fa9\u7684\u306b\u534a\u5206\u306b\u3059\u308b\u3053\u3068\u3067\u63a2\u7d22\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u5165\u529b\u30c7\u30fc\u30bf\u304c\u30bd\u30fc\u30c8\u6e08\u307f\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u914d\u5217\u307e\u305f\u306f\u914d\u5217\u30d9\u30fc\u30b9\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u306b\u306e\u307f\u9069\u7528\u53ef\u80fd\u3067\u3059\u3002</li> <li>\u7121\u9806\u5e8f\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u5185\u306e\u30a8\u30f3\u30c8\u30ea\u3092\u898b\u3064\u3051\u308b\u306b\u306f\u3001\u7dcf\u5f53\u305f\u308a\u63a2\u7d22\u304c\u5fc5\u8981\u306a\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u30c7\u30fc\u30bf\u69cb\u9020\u306b\u57fa\u3065\u3044\u3066\u7570\u306a\u308b\u63a2\u7d22\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u9069\u7528\u3067\u304d\u307e\u3059\uff1a\u7dda\u5f62\u63a2\u7d22\u306f\u914d\u5217\u3068\u9023\u7d50\u30ea\u30b9\u30c8\u306b\u9069\u3057\u3066\u304a\u308a\u3001\u5e45\u512a\u5148\u63a2\u7d22\uff08BFS\uff09\u3068\u6df1\u3055\u512a\u5148\u63a2\u7d22\uff08DFS\uff09\u306f\u30b0\u30e9\u30d5\u3068\u6728\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u975e\u5e38\u306b\u6c4e\u7528\u6027\u304c\u9ad8\u304f\u3001\u30c7\u30fc\u30bf\u306e\u524d\u51e6\u7406\u304c\u4e0d\u8981\u3067\u3059\u304c\u3001\\(O(n)\\)\u3068\u3044\u3046\u9ad8\u3044\u6642\u9593\u8a08\u7b97\u91cf\u3092\u6301\u3061\u307e\u3059\u3002</li> <li>\u30cf\u30c3\u30b7\u30e5\u63a2\u7d22\u3001\u6728\u63a2\u7d22\u3001\u4e8c\u5206\u63a2\u7d22\u306f\u52b9\u7387\u7684\u306a\u63a2\u7d22\u65b9\u6cd5\u3067\u3001\u7279\u5b9a\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u5185\u3067\u76ee\u6a19\u8981\u7d20\u3092\u8fc5\u901f\u306b\u7279\u5b9a\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u975e\u5e38\u306b\u52b9\u7387\u7684\u3067\u3001\u6642\u9593\u8a08\u7b97\u91cf\u304c\\(O(\\log n)\\)\u307e\u305f\u306f\\(O(1)\\)\u306b\u307e\u3067\u9054\u3057\u307e\u3059\u304c\u3001\u901a\u5e38\u306f\u8ffd\u52a0\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u53ce\u5bb9\u3059\u308b\u305f\u3081\u306b\u8ffd\u52a0\u306e\u7a7a\u9593\u304c\u5fc5\u8981\u3067\u3059\u3002</li> <li>\u5b9f\u969b\u306b\u306f\u3001\u30c7\u30fc\u30bf\u91cf\u3001\u63a2\u7d22\u6027\u80fd\u8981\u4ef6\u3001\u30c7\u30fc\u30bf\u30af\u30a8\u30ea\u3068\u66f4\u65b0\u983b\u5ea6\u306a\u3069\u306e\u8981\u56e0\u3092\u5206\u6790\u3057\u3066\u3001\u9069\u5207\u306a\u63a2\u7d22\u65b9\u6cd5\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u7dda\u5f62\u63a2\u7d22\u306f\u5c0f\u3055\u306a\u30c7\u30fc\u30bf\u3084\u983b\u7e41\u306b\u66f4\u65b0\u3055\u308c\u308b\uff08\u5909\u52d5\u6027\u306e\u9ad8\u3044\uff09\u30c7\u30fc\u30bf\u306b\u7406\u60f3\u7684\u3067\u3059\u3002\u4e8c\u5206\u63a2\u7d22\u306f\u5927\u304d\u304f\u3066\u30bd\u30fc\u30c8\u6e08\u307f\u306e\u30c7\u30fc\u30bf\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002\u30cf\u30c3\u30b7\u30e5\u63a2\u7d22\u306f\u9ad8\u3044\u30af\u30a8\u30ea\u52b9\u7387\u304c\u5fc5\u8981\u3067\u7bc4\u56f2\u30af\u30a8\u30ea\u304c\u4e0d\u8981\u306a\u30c7\u30fc\u30bf\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002\u6728\u63a2\u7d22\u306f\u9806\u5e8f\u3092\u7dad\u6301\u3057\u3001\u7bc4\u56f2\u30af\u30a8\u30ea\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5927\u304d\u306a\u52d5\u7684\u30c7\u30fc\u30bf\u306b\u6700\u3082\u9069\u3057\u3066\u3044\u307e\u3059\u3002</li> <li>\u7dda\u5f62\u63a2\u7d22\u3092\u30cf\u30c3\u30b7\u30e5\u63a2\u7d22\u306b\u7f6e\u304d\u63db\u3048\u308b\u3053\u3068\u306f\u3001\u5b9f\u884c\u6642\u6027\u80fd\u3092\u6700\u9069\u5316\u3059\u308b\u4e00\u822c\u7684\u306a\u6226\u7565\u3067\u3001\u6642\u9593\u8a08\u7b97\u91cf\u3092\\(O(n)\\)\u304b\u3089\\(O(1)\\)\u306b\u524a\u6e1b\u3057\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_sorting/","title":"\u7b2c 11 \u7ae0 \u00a0 \u30bd\u30fc\u30c8","text":"<p>Abstract</p> <p>\u30bd\u30fc\u30c8\u306f\u6df7\u6c8c\u3092\u79e9\u5e8f\u306b\u5909\u3048\u308b\u9b54\u6cd5\u306e\u9375\u306e\u3088\u3046\u306a\u3082\u306e\u3067\u3001\u30c7\u30fc\u30bf\u3092\u3088\u308a\u52b9\u7387\u7684\u306b\u7406\u89e3\u3057\u51e6\u7406\u3059\u308b\u3053\u3068\u3092\u53ef\u80fd\u306b\u3057\u307e\u3059\u3002</p> <p>\u5358\u7d14\u306a\u6607\u9806\u3067\u3042\u308d\u3046\u3068\u8907\u96d1\u306a\u30ab\u30c6\u30b4\u30ea\u914d\u5217\u3067\u3042\u308d\u3046\u3068\u3001\u30bd\u30fc\u30c8\u306f\u30c7\u30fc\u30bf\u306e\u8abf\u548c\u7f8e\u3092\u660e\u3089\u304b\u306b\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_sorting/#_1","title":"\u7ae0\u306e\u5185\u5bb9","text":"<ul> <li>11.1 \u00a0 \u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0</li> <li>11.2 \u00a0 \u9078\u629e\u30bd\u30fc\u30c8</li> <li>11.3 \u00a0 \u30d0\u30d6\u30eb\u30bd\u30fc\u30c8</li> <li>11.4 \u00a0 \u633f\u5165\u30bd\u30fc\u30c8</li> <li>11.5 \u00a0 \u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8</li> <li>11.6 \u00a0 \u30de\u30fc\u30b8\u30bd\u30fc\u30c8</li> <li>11.7 \u00a0 \u30d2\u30fc\u30d7\u30bd\u30fc\u30c8</li> <li>11.8 \u00a0 \u30d0\u30b1\u30c3\u30c8\u30bd\u30fc\u30c8</li> <li>11.9 \u00a0 \u8a08\u6570\u30bd\u30fc\u30c8</li> <li>11.10 \u00a0 \u57fa\u6570\u30bd\u30fc\u30c8</li> <li>11.11 \u00a0 \u307e\u3068\u3081</li> </ul>"},{"location":"chapter_sorting/bubble_sort/","title":"11.3 \u00a0 \u30d0\u30d6\u30eb\u30bd\u30fc\u30c8","text":"<p>\u30d0\u30d6\u30eb\u30bd\u30fc\u30c8\u306f\u3001\u96a3\u63a5\u3059\u308b\u8981\u7d20\u3092\u7d99\u7d9a\u7684\u306b\u6bd4\u8f03\u3057\u4ea4\u63db\u3059\u308b\u3053\u3068\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002\u3053\u306e\u30d7\u30ed\u30bb\u30b9\u306f\u6ce1\u304c\u5e95\u304b\u3089\u4e0a\u306b\u4e0a\u6607\u3059\u308b\u3088\u3046\u306a\u3082\u306e\u306a\u306e\u3067\u3001\u300c\u30d0\u30d6\u30eb\u30bd\u30fc\u30c8\u300d\u3068\u540d\u4ed8\u3051\u3089\u308c\u307e\u3057\u305f\u3002</p> <p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u30d0\u30d6\u30ea\u30f3\u30b0\u30d7\u30ed\u30bb\u30b9\u306f\u8981\u7d20\u4ea4\u63db\u3092\u4f7f\u7528\u3057\u3066\u30b7\u30df\u30e5\u30ec\u30fc\u30c8\u3067\u304d\u307e\u3059\uff1a\u914d\u5217\u306e\u5de6\u7aef\u304b\u3089\u958b\u59cb\u3057\u3066\u53f3\u306b\u79fb\u52d5\u3057\u3001\u96a3\u63a5\u3059\u308b\u8981\u7d20\u306e\u5404\u30da\u30a2\u3092\u6bd4\u8f03\u3057\u307e\u3059\u3002\u5de6\u306e\u8981\u7d20\u304c\u53f3\u306e\u8981\u7d20\u3088\u308a\u5927\u304d\u3044\u5834\u5408\u306f\u3001\u305d\u308c\u3089\u3092\u4ea4\u63db\u3057\u307e\u3059\u3002\u6a2a\u65ad\u5f8c\u3001\u6700\u5927\u8981\u7d20\u306f\u914d\u5217\u306e\u53f3\u7aef\u306b\u30d0\u30d6\u30eb\u30a2\u30c3\u30d7\u3057\u307e\u3059\u3002</p> &lt;1&gt;&lt;2&gt;&lt;3&gt;&lt;4&gt;&lt;5&gt;&lt;6&gt;&lt;7&gt; <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p> \u56f3 11-4 \u00a0 Simulating bubble process using element swap </p>"},{"location":"chapter_sorting/bubble_sort/#1131","title":"11.3.1 \u00a0 \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u30d7\u30ed\u30bb\u30b9","text":"<p>\u914d\u5217\u306e\u9577\u3055\u3092\\(n\\)\u3068\u3057\u307e\u3059\u3002\u30d0\u30d6\u30eb\u30bd\u30fc\u30c8\u306e\u30b9\u30c6\u30c3\u30d7\u306f\u4e0b\u56f3\u306b\u793a\u3055\u308c\u307e\u3059\uff1a</p> <ol> <li>\u307e\u305a\u3001\\(n\\)\u500b\u306e\u8981\u7d20\u306b\u5bfe\u3057\u30661\u56de\u306e\u300c\u30d0\u30d6\u30eb\u300d\u30d1\u30b9\u3092\u5b9f\u884c\u3057\u3001\u6700\u5927\u8981\u7d20\u3092\u6b63\u3057\u3044\u4f4d\u7f6e\u306b\u4ea4\u63db\u3057\u307e\u3059\u3002</li> <li>\u6b21\u306b\u3001\u6b8b\u308a\u306e\\(n - 1\\)\u500b\u306e\u8981\u7d20\u306b\u5bfe\u3057\u3066\u300c\u30d0\u30d6\u30eb\u300d\u30d1\u30b9\u3092\u5b9f\u884c\u3057\u30012\u756a\u76ee\u306b\u5927\u304d\u3044\u8981\u7d20\u3092\u6b63\u3057\u3044\u4f4d\u7f6e\u306b\u4ea4\u63db\u3057\u307e\u3059\u3002</li> <li>\u3053\u306e\u65b9\u6cd5\u3067\u7d9a\u884c\u3057\u307e\u3059\uff1b\\(n - 1\\)\u56de\u306e\u30d1\u30b9\u306e\u5f8c\u3001\u6700\u5927\\(n - 1\\)\u500b\u306e\u8981\u7d20\u304c\u6b63\u3057\u3044\u4f4d\u7f6e\u306b\u79fb\u52d5\u3055\u308c\u307e\u3059\u3002</li> <li>\u6b8b\u308a\u306e\u552f\u4e00\u306e\u8981\u7d20\u306f**\u5fc5\u305a**\u6700\u5c0f\u3067\u3042\u308b\u305f\u3081\u3001**\u3055\u3089\u306a\u308b**\u30bd\u30fc\u30c8\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\u3002\u3053\u306e\u6642\u70b9\u3067\u3001\u914d\u5217\u306f\u30bd\u30fc\u30c8\u3055\u308c\u307e\u3059\u3002</li> </ol> <p></p> <p> \u56f3 11-5 \u00a0 Bubble sort process </p> <p>\u30b3\u30fc\u30c9\u4f8b\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby bubble_sort.py<pre><code>def bubble_sort(nums: list[int]):\n \"\"\"\u30d0\u30d6\u30eb\u30bd\u30fc\u30c8\"\"\"\n n = len(nums)\n # \u5916\u5074\u306e\u30eb\u30fc\u30d7\uff1a\u672a\u30bd\u30fc\u30c8\u7bc4\u56f2\u306f [0, i]\n for i in range(n - 1, 0, -1):\n # \u5185\u5074\u306e\u30eb\u30fc\u30d7\uff1a\u672a\u30bd\u30fc\u30c8\u7bc4\u56f2 [0, i] \u306e\u6700\u5927\u8981\u7d20\u3092\u7bc4\u56f2\u306e\u53f3\u7aef\u306b\u79fb\u52d5\n for j in range(i):\n if nums[j] &gt; nums[j + 1]:\n # nums[j] \u3068 nums[j + 1] \u3092\u4ea4\u63db\n nums[j], nums[j + 1] = nums[j + 1], nums[j]\n</code></pre> bubble_sort.cpp<pre><code>/* \u30d0\u30d6\u30eb\u30bd\u30fc\u30c8 */\nvoid bubbleSort(vector&lt;int&gt; &amp;nums) {\n // \u5916\u5074\u30eb\u30fc\u30d7\uff1a\u672a\u30bd\u30fc\u30c8\u7bc4\u56f2\u306f[0, i]\n for (int i = nums.size() - 1; i &gt; 0; i--) {\n // \u5185\u5074\u30eb\u30fc\u30d7\uff1a\u672a\u30bd\u30fc\u30c8\u7bc4\u56f2[0, i]\u5185\u306e\u6700\u5927\u8981\u7d20\u3092\u7bc4\u56f2\u306e\u53f3\u7aef\u306b\u4ea4\u63db\n for (int j = 0; j &lt; i; j++) {\n if (nums[j] &gt; nums[j + 1]) {\n // nums[j]\u3068nums[j + 1]\u3092\u4ea4\u63db\n // \u3053\u3053\u3067\u306fstd\u306eswap\u3092\u4f7f\u7528\n swap(nums[j], nums[j + 1]);\n }\n }\n }\n}\n</code></pre> bubble_sort.java<pre><code>/* \u30d0\u30d6\u30eb\u30bd\u30fc\u30c8 */\nvoid bubbleSort(int[] nums) {\n // \u5916\u5074\u30eb\u30fc\u30d7: \u672a\u30bd\u30fc\u30c8\u7bc4\u56f2\u306f [0, i]\n for (int i = nums.length - 1; i &gt; 0; i--) {\n // \u5185\u5074\u30eb\u30fc\u30d7: \u672a\u30bd\u30fc\u30c8\u7bc4\u56f2 [0, i] \u306e\u6700\u5927\u8981\u7d20\u3092\u7bc4\u56f2\u306e\u53f3\u7aef\u306b\u4ea4\u63db\n for (int j = 0; j &lt; i; j++) {\n if (nums[j] &gt; nums[j + 1]) {\n // nums[j] \u3068 nums[j + 1] \u3092\u4ea4\u63db\n int tmp = nums[j];\n nums[j] = nums[j + 1];\n nums[j + 1] = tmp;\n }\n }\n }\n}\n</code></pre> bubble_sort.cs<pre><code>[class]{bubble_sort}-[func]{BubbleSort}\n</code></pre> bubble_sort.go<pre><code>[class]{}-[func]{bubbleSort}\n</code></pre> bubble_sort.swift<pre><code>[class]{}-[func]{bubbleSort}\n</code></pre> bubble_sort.js<pre><code>[class]{}-[func]{bubbleSort}\n</code></pre> bubble_sort.ts<pre><code>[class]{}-[func]{bubbleSort}\n</code></pre> bubble_sort.dart<pre><code>[class]{}-[func]{bubbleSort}\n</code></pre> bubble_sort.rs<pre><code>[class]{}-[func]{bubble_sort}\n</code></pre> bubble_sort.c<pre><code>[class]{}-[func]{bubbleSort}\n</code></pre> bubble_sort.kt<pre><code>[class]{}-[func]{bubbleSort}\n</code></pre> bubble_sort.rb<pre><code>[class]{}-[func]{bubble_sort}\n</code></pre>"},{"location":"chapter_sorting/bubble_sort/#1132","title":"11.3.2 \u00a0 \u52b9\u7387\u306e\u6700\u9069\u5316","text":"<p>\u300c\u30d0\u30d6\u30ea\u30f3\u30b0\u300d\u306e\u30e9\u30a6\u30f3\u30c9\u4e2d\u306b\u4ea4\u63db\u304c\u767a\u751f\u3057\u306a\u3044\u5834\u5408\u3001\u914d\u5217\u306f\u3059\u3067\u306b\u30bd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u3059\u3050\u306b\u623b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u3092\u691c\u51fa\u3059\u308b\u305f\u3081\u306b\u3001<code>flag</code>\u5909\u6570\u3092\u8ffd\u52a0\u3067\u304d\u307e\u3059\uff1b\u30d1\u30b9\u3067\u4ea4\u63db\u304c\u884c\u308f\u308c\u306a\u3044\u5834\u5408\u306f\u3001\u30d5\u30e9\u30b0\u3092\u8a2d\u5b9a\u3057\u3066\u65e9\u671f\u306b\u623b\u308a\u307e\u3059\u3002</p> <p>\u3053\u306e\u6700\u9069\u5316\u304c\u3042\u3063\u3066\u3082\u3001\u30d0\u30d6\u30eb\u30bd\u30fc\u30c8\u306e\u6700\u60aa\u6642\u9593\u8a08\u7b97\u91cf\u3068\u5e73\u5747\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n^2)\\)\u306e\u307e\u307e\u3067\u3059\u3002\u305f\u3060\u3057\u3001\u5165\u529b\u914d\u5217\u304c\u3059\u3067\u306b\u30bd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u6700\u826f\u30b1\u30fc\u30b9\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n)\\)\u307e\u3067\u4f4e\u304f\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby bubble_sort.py<pre><code>def bubble_sort_with_flag(nums: list[int]):\n \"\"\"\u30d0\u30d6\u30eb\u30bd\u30fc\u30c8\uff08\u30d5\u30e9\u30b0\u306b\u3088\u308b\u6700\u9069\u5316\uff09\"\"\"\n n = len(nums)\n # \u5916\u5074\u306e\u30eb\u30fc\u30d7\uff1a\u672a\u30bd\u30fc\u30c8\u7bc4\u56f2\u306f [0, i]\n for i in range(n - 1, 0, -1):\n flag = False # \u30d5\u30e9\u30b0\u3092\u521d\u671f\u5316\n # \u5185\u5074\u306e\u30eb\u30fc\u30d7\uff1a\u672a\u30bd\u30fc\u30c8\u7bc4\u56f2 [0, i] \u306e\u6700\u5927\u8981\u7d20\u3092\u7bc4\u56f2\u306e\u53f3\u7aef\u306b\u79fb\u52d5\n for j in range(i):\n if nums[j] &gt; nums[j + 1]:\n # nums[j] \u3068 nums[j + 1] \u3092\u4ea4\u63db\n nums[j], nums[j + 1] = nums[j + 1], nums[j]\n flag = True # \u8981\u7d20\u3092\u4ea4\u63db\u3057\u305f\u3053\u3068\u3092\u8a18\u9332\n if not flag:\n break # \u3053\u306e\u56de\u306e\u300c\u30d0\u30d6\u30ea\u30f3\u30b0\u300d\u3067\u8981\u7d20\u304c\u4ea4\u63db\u3055\u308c\u306a\u304b\u3063\u305f\u5834\u5408\u3001\u7d42\u4e86\n</code></pre> bubble_sort.cpp<pre><code>/* \u30d0\u30d6\u30eb\u30bd\u30fc\u30c8\uff08\u30d5\u30e9\u30b0\u6700\u9069\u5316\u7248\uff09*/\nvoid bubbleSortWithFlag(vector&lt;int&gt; &amp;nums) {\n // \u5916\u5074\u30eb\u30fc\u30d7\uff1a\u672a\u30bd\u30fc\u30c8\u7bc4\u56f2\u306f[0, i]\n for (int i = nums.size() - 1; i &gt; 0; i--) {\n bool flag = false; // \u30d5\u30e9\u30b0\u3092\u521d\u671f\u5316\n // \u5185\u5074\u30eb\u30fc\u30d7\uff1a\u672a\u30bd\u30fc\u30c8\u7bc4\u56f2[0, i]\u5185\u306e\u6700\u5927\u8981\u7d20\u3092\u7bc4\u56f2\u306e\u53f3\u7aef\u306b\u4ea4\u63db\n for (int j = 0; j &lt; i; j++) {\n if (nums[j] &gt; nums[j + 1]) {\n // nums[j]\u3068nums[j + 1]\u3092\u4ea4\u63db\n // \u3053\u3053\u3067\u306fstd\u306eswap\u3092\u4f7f\u7528\n swap(nums[j], nums[j + 1]);\n flag = true; // \u4ea4\u63db\u3055\u308c\u305f\u8981\u7d20\u3092\u8a18\u9332\n }\n }\n if (!flag)\n break; // \u3053\u306e\u56de\u306e\u300c\u30d0\u30d6\u30ea\u30f3\u30b0\u300d\u3067\u8981\u7d20\u304c\u4ea4\u63db\u3055\u308c\u306a\u304b\u3063\u305f\u5834\u5408\u3001\u7d42\u4e86\n }\n}\n</code></pre> bubble_sort.java<pre><code>/* \u30d0\u30d6\u30eb\u30bd\u30fc\u30c8\uff08\u30d5\u30e9\u30b0\u306b\u3088\u308b\u6700\u9069\u5316\uff09 */\nvoid bubbleSortWithFlag(int[] nums) {\n // \u5916\u5074\u30eb\u30fc\u30d7: \u672a\u30bd\u30fc\u30c8\u7bc4\u56f2\u306f [0, i]\n for (int i = nums.length - 1; i &gt; 0; i--) {\n boolean flag = false; // \u30d5\u30e9\u30b0\u3092\u521d\u671f\u5316\n // \u5185\u5074\u30eb\u30fc\u30d7: \u672a\u30bd\u30fc\u30c8\u7bc4\u56f2 [0, i] \u306e\u6700\u5927\u8981\u7d20\u3092\u7bc4\u56f2\u306e\u53f3\u7aef\u306b\u4ea4\u63db\n for (int j = 0; j &lt; i; j++) {\n if (nums[j] &gt; nums[j + 1]) {\n // nums[j] \u3068 nums[j + 1] \u3092\u4ea4\u63db\n int tmp = nums[j];\n nums[j] = nums[j + 1];\n nums[j + 1] = tmp;\n flag = true; // \u4ea4\u63db\u3055\u308c\u305f\u8981\u7d20\u3092\u8a18\u9332\n }\n }\n if (!flag)\n break; // \u3053\u306e\u300c\u30d0\u30d6\u30ea\u30f3\u30b0\u300d\u30e9\u30a6\u30f3\u30c9\u3067\u8981\u7d20\u304c\u4ea4\u63db\u3055\u308c\u306a\u304b\u3063\u305f\u5834\u5408\u3001\u7d42\u4e86\n }\n}\n</code></pre> bubble_sort.cs<pre><code>[class]{bubble_sort}-[func]{BubbleSortWithFlag}\n</code></pre> bubble_sort.go<pre><code>[class]{}-[func]{bubbleSortWithFlag}\n</code></pre> bubble_sort.swift<pre><code>[class]{}-[func]{bubbleSortWithFlag}\n</code></pre> bubble_sort.js<pre><code>[class]{}-[func]{bubbleSortWithFlag}\n</code></pre> bubble_sort.ts<pre><code>[class]{}-[func]{bubbleSortWithFlag}\n</code></pre> bubble_sort.dart<pre><code>[class]{}-[func]{bubbleSortWithFlag}\n</code></pre> bubble_sort.rs<pre><code>[class]{}-[func]{bubble_sort_with_flag}\n</code></pre> bubble_sort.c<pre><code>[class]{}-[func]{bubbleSortWithFlag}\n</code></pre> bubble_sort.kt<pre><code>[class]{}-[func]{bubbleSortWithFlag}\n</code></pre> bubble_sort.rb<pre><code>[class]{}-[func]{bubble_sort_with_flag}\n</code></pre>"},{"location":"chapter_sorting/bubble_sort/#1133","title":"11.3.3 \u00a0 \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u7279\u6027","text":"<ul> <li>\\(O(n^2)\\)\u306e\u6642\u9593\u8a08\u7b97\u91cf\u3001\u9069\u5fdc\u30bd\u30fc\u30c8\u3002 \u5404\u300c\u30d0\u30d6\u30ea\u30f3\u30b0\u300d\u30e9\u30a6\u30f3\u30c9\u306f\u9577\u3055\\(n - 1\\)\u3001\\(n - 2\\)\u3001\\(\\dots\\)\u3001\\(2\\)\u3001\\(1\\)\u306e\u914d\u5217\u30bb\u30b0\u30e1\u30f3\u30c8\u3092\u6a2a\u65ad\u3057\u3001\u5408\u8a08\u306f\\((n - 1) n / 2\\)\u3068\u306a\u308a\u307e\u3059\u3002<code>flag</code>\u6700\u9069\u5316\u306b\u3088\u308a\u3001\u914d\u5217\u304c\u3059\u3067\u306b\u30bd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u6700\u826f\u30b1\u30fc\u30b9\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n)\\)\u306b\u9054\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\\(O(1)\\)\u306e\u7a7a\u9593\u8a08\u7b97\u91cf\u3001\u30a4\u30f3\u30d7\u30ec\u30fc\u30b9\u30bd\u30fc\u30c8\u3002 \u30dd\u30a4\u30f3\u30bf\\(i\\)\u3068\\(j\\)\u306b\u3088\u3063\u3066\u5b9a\u6570\u91cf\u306e\u8ffd\u52a0\u7a7a\u9593\u306e\u307f\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002</li> <li>\u5b89\u5b9a\u30bd\u30fc\u30c8\u3002 \u7b49\u3057\u3044\u8981\u7d20\u306f\u300c\u30d0\u30d6\u30ea\u30f3\u30b0\u300d\u4e2d\u306b\u4ea4\u63db\u3055\u308c\u306a\u3044\u305f\u3081\u3001\u5143\u306e\u9806\u5e8f\u304c\u4fdd\u6301\u3055\u308c\u3001\u3053\u308c\u306f\u5b89\u5b9a\u30bd\u30fc\u30c8\u306b\u306a\u308a\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_sorting/bucket_sort/","title":"11.8 \u00a0 \u30d0\u30b1\u30c3\u30c8\u30bd\u30fc\u30c8","text":"<p>\u524d\u8ff0\u306e\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u3059\u3079\u3066\u300c\u6bd4\u8f03\u30d9\u30fc\u30b9\u306e\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u300d\u3067\u3001\u5024\u3092\u6bd4\u8f03\u3059\u308b\u3053\u3068\u3067\u8981\u7d20\u3092\u30bd\u30fc\u30c8\u3057\u307e\u3059\u3002\u3053\u306e\u3088\u3046\u306a\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f \\(O(n \\log n)\\) \u3088\u308a\u826f\u3044\u6642\u9593\u8a08\u7b97\u91cf\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u6b21\u306b\u3001\u7dda\u5f62\u6642\u9593\u8a08\u7b97\u91cf\u3092\u9054\u6210\u3067\u304d\u308b\u3044\u304f\u3064\u304b\u306e\u300c\u975e\u6bd4\u8f03\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u300d\u306b\u3064\u3044\u3066\u8b70\u8ad6\u3057\u307e\u3059\u3002</p> <p>\u30d0\u30b1\u30c3\u30c8\u30bd\u30fc\u30c8\u306f\u5206\u5272\u7d71\u6cbb\u6226\u7565\u306e\u5178\u578b\u7684\u306a\u5fdc\u7528\u3067\u3059\u3002\u4e00\u9023\u306e\u9806\u5e8f\u4ed8\u3051\u3089\u308c\u305f\u30d0\u30b1\u30c3\u30c8\u3092\u8a2d\u5b9a\u3057\u3001\u5404\u30d0\u30b1\u30c3\u30c8\u304c\u30c7\u30fc\u30bf\u306e\u7bc4\u56f2\u3092\u542b\u307f\u3001\u5165\u529b\u30c7\u30fc\u30bf\u3092\u3053\u308c\u3089\u306e\u30d0\u30b1\u30c3\u30c8\u306b\u5747\u7b49\u306b\u5206\u6563\u3055\u305b\u308b\u3053\u3068\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002\u305d\u3057\u3066\u3001\u5404\u30d0\u30b1\u30c3\u30c8\u5185\u306e\u30c7\u30fc\u30bf\u3092\u500b\u5225\u306b\u30bd\u30fc\u30c8\u3057\u307e\u3059\u3002\u6700\u5f8c\u306b\u3001\u3059\u3079\u3066\u306e\u30d0\u30b1\u30c3\u30c8\u304b\u3089\u306e\u30bd\u30fc\u30c8\u6e08\u307f\u30c7\u30fc\u30bf\u3092\u9806\u6b21\u30de\u30fc\u30b8\u3057\u3066\u6700\u7d42\u7d50\u679c\u3092\u751f\u6210\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_sorting/bucket_sort/#1181","title":"11.8.1 \u00a0 \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u904e\u7a0b","text":"<p>\u9577\u3055 \\(n\\) \u306e\u914d\u5217\u3067\u3001\\([0, 1)\\) \u306e\u7bc4\u56f2\u306e\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\u3092\u8003\u3048\u3066\u307f\u307e\u3059\u3002\u30d0\u30b1\u30c3\u30c8\u30bd\u30fc\u30c8\u306e\u904e\u7a0b\u306f\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3055\u308c\u3066\u3044\u307e\u3059\u3002</p> <ol> <li>\\(k\\) \u500b\u306e\u30d0\u30b1\u30c3\u30c8\u3092\u521d\u671f\u5316\u3057\u3001\\(n\\) \u500b\u306e\u8981\u7d20\u3092\u3053\u308c\u3089\u306e \\(k\\) \u500b\u306e\u30d0\u30b1\u30c3\u30c8\u306b\u5206\u6563\u3055\u305b\u307e\u3059\u3002</li> <li>\u5404\u30d0\u30b1\u30c3\u30c8\u3092\u500b\u5225\u306b\u30bd\u30fc\u30c8\u3057\u307e\u3059\uff08\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306e\u7d44\u307f\u8fbc\u307f\u30bd\u30fc\u30c8\u95a2\u6570\u3092\u4f7f\u7528\uff09\u3002</li> <li>\u6700\u5c0f\u304b\u3089\u6700\u5927\u306e\u30d0\u30b1\u30c3\u30c8\u306e\u9806\u5e8f\u3067\u7d50\u679c\u3092\u30de\u30fc\u30b8\u3057\u307e\u3059\u3002</li> </ol> <p></p> <p> \u56f3 11-13 \u00a0 \u30d0\u30b1\u30c3\u30c8\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u904e\u7a0b </p> <p>\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby bucket_sort.py<pre><code>def bucket_sort(nums: list[float]):\n \"\"\"\u30d0\u30b1\u30c3\u30c8\u30bd\u30fc\u30c8\"\"\"\n # k = n/2 \u500b\u306e\u30d0\u30b1\u30c3\u30c8\u3092\u521d\u671f\u5316\u3001\u5404\u30d0\u30b1\u30c3\u30c8\u306b\u5e73\u57472\u500b\u306e\u8981\u7d20\u3092\u914d\u7f6e\u3059\u308b\u3053\u3068\u3092\u671f\u5f85\n k = len(nums) // 2\n buckets = [[] for _ in range(k)]\n # 1. \u914d\u5217\u8981\u7d20\u3092\u5404\u30d0\u30b1\u30c3\u30c8\u306b\u5206\u6563\n for num in nums:\n # \u5165\u529b\u30c7\u30fc\u30bf\u7bc4\u56f2\u306f [0, 1)\u3001num * k \u3092\u4f7f\u7528\u3057\u3066\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u7bc4\u56f2 [0, k-1] \u306b\u30de\u30c3\u30d4\u30f3\u30b0\n i = int(num * k)\n # num \u3092\u30d0\u30b1\u30c3\u30c8 i \u306b\u8ffd\u52a0\n buckets[i].append(num)\n # 2. \u5404\u30d0\u30b1\u30c3\u30c8\u3092\u30bd\u30fc\u30c8\n for bucket in buckets:\n # \u7d44\u307f\u8fbc\u307f\u30bd\u30fc\u30c8\u95a2\u6570\u3092\u4f7f\u7528\u3001\u4ed6\u306e\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306b\u7f6e\u304d\u63db\u3048\u308b\u3053\u3068\u3082\u53ef\u80fd\n bucket.sort()\n # 3. \u30d0\u30b1\u30c3\u30c8\u3092\u8d70\u67fb\u3057\u3066\u7d50\u679c\u3092\u30de\u30fc\u30b8\n i = 0\n for bucket in buckets:\n for num in bucket:\n nums[i] = num\n i += 1\n</code></pre> bucket_sort.cpp<pre><code>/* \u30d0\u30b1\u30c3\u30c8\u30bd\u30fc\u30c8 */\nvoid bucketSort(vector&lt;float&gt; &amp;nums) {\n // k = n/2\u500b\u306e\u30d0\u30b1\u30c3\u30c8\u3092\u521d\u671f\u5316\u3001\u5404\u30d0\u30b1\u30c3\u30c8\u306b2\u3064\u306e\u8981\u7d20\u3092\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u3092\u671f\u5f85\n int k = nums.size() / 2;\n vector&lt;vector&lt;float&gt;&gt; buckets(k);\n // 1. \u914d\u5217\u8981\u7d20\u3092\u5404\u30d0\u30b1\u30c3\u30c8\u306b\u5206\u914d\n for (float num : nums) {\n // \u5165\u529b\u30c7\u30fc\u30bf\u7bc4\u56f2\u306f[0, 1)\u3001num * k\u3092\u4f7f\u7528\u3057\u3066\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u7bc4\u56f2[0, k-1]\u306b\u30de\u30c3\u30d7\n int i = num * k;\n // bucket_idx\u30d0\u30b1\u30c3\u30c8\u306b\u6570\u5024\u3092\u8ffd\u52a0\n buckets[i].push_back(num);\n }\n // 2. \u5404\u30d0\u30b1\u30c3\u30c8\u3092\u30bd\u30fc\u30c8\n for (vector&lt;float&gt; &amp;bucket : buckets) {\n // \u7d44\u307f\u8fbc\u307f\u30bd\u30fc\u30c8\u95a2\u6570\u3092\u4f7f\u7528\u3001\u4ed6\u306e\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306b\u7f6e\u304d\u63db\u3048\u308b\u3053\u3068\u3082\u53ef\u80fd\n sort(bucket.begin(), bucket.end());\n }\n // 3. \u30d0\u30b1\u30c3\u30c8\u3092\u8d70\u67fb\u3057\u3066\u7d50\u679c\u3092\u30de\u30fc\u30b8\n int i = 0;\n for (vector&lt;float&gt; &amp;bucket : buckets) {\n for (float num : bucket) {\n nums[i++] = num;\n }\n }\n}\n</code></pre> bucket_sort.java<pre><code>/* \u30d0\u30b1\u30c3\u30c8\u30bd\u30fc\u30c8 */\nvoid bucketSort(float[] nums) {\n // k = n/2 \u500b\u306e\u30d0\u30b1\u30c3\u30c8\u3092\u521d\u671f\u5316\u3001\u5404\u30d0\u30b1\u30c3\u30c8\u306b\u671f\u5f85\u3055\u308c\u308b\u8981\u7d20\u6570\u306f 2 \u500b\n int k = nums.length / 2;\n List&lt;List&lt;Float&gt;&gt; buckets = new ArrayList&lt;&gt;();\n for (int i = 0; i &lt; k; i++) {\n buckets.add(new ArrayList&lt;&gt;());\n }\n // 1. \u914d\u5217\u8981\u7d20\u3092\u5404\u30d0\u30b1\u30c3\u30c8\u306b\u5206\u6563\n for (float num : nums) {\n // \u5165\u529b\u30c7\u30fc\u30bf\u7bc4\u56f2\u306f [0, 1)\u3001num * k \u3092\u4f7f\u3063\u3066\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u7bc4\u56f2 [0, k-1] \u306b\u30de\u30c3\u30d4\u30f3\u30b0\n int i = (int) (num * k);\n // num \u3092\u30d0\u30b1\u30c3\u30c8 i \u306b\u8ffd\u52a0\n buckets.get(i).add(num);\n }\n // 2. \u5404\u30d0\u30b1\u30c3\u30c8\u3092\u30bd\u30fc\u30c8\n for (List&lt;Float&gt; bucket : buckets) {\n // \u7d44\u307f\u8fbc\u307f\u30bd\u30fc\u30c8\u95a2\u6570\u3092\u4f7f\u7528\u3001\u4ed6\u306e\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306b\u7f6e\u304d\u63db\u3048\u308b\u3053\u3068\u3082\u53ef\u80fd\n Collections.sort(bucket);\n }\n // 3. \u30d0\u30b1\u30c3\u30c8\u3092\u8d70\u67fb\u3057\u3066\u7d50\u679c\u3092\u30de\u30fc\u30b8\n int i = 0;\n for (List&lt;Float&gt; bucket : buckets) {\n for (float num : bucket) {\n nums[i++] = num;\n }\n }\n}\n</code></pre> bucket_sort.cs<pre><code>[class]{bucket_sort}-[func]{BucketSort}\n</code></pre> bucket_sort.go<pre><code>[class]{}-[func]{bucketSort}\n</code></pre> bucket_sort.swift<pre><code>[class]{}-[func]{bucketSort}\n</code></pre> bucket_sort.js<pre><code>[class]{}-[func]{bucketSort}\n</code></pre> bucket_sort.ts<pre><code>[class]{}-[func]{bucketSort}\n</code></pre> bucket_sort.dart<pre><code>[class]{}-[func]{bucketSort}\n</code></pre> bucket_sort.rs<pre><code>[class]{}-[func]{bucket_sort}\n</code></pre> bucket_sort.c<pre><code>[class]{}-[func]{bucketSort}\n</code></pre> bucket_sort.kt<pre><code>[class]{}-[func]{bucketSort}\n</code></pre> bucket_sort.rb<pre><code>[class]{}-[func]{bucket_sort}\n</code></pre>"},{"location":"chapter_sorting/bucket_sort/#1182","title":"11.8.2 \u00a0 \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u7279\u5fb4","text":"<p>\u30d0\u30b1\u30c3\u30c8\u30bd\u30fc\u30c8\u306f\u975e\u5e38\u306b\u5927\u304d\u306a\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u306e\u51e6\u7406\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u5165\u529b\u30c7\u30fc\u30bf\u306b100\u4e07\u500b\u306e\u8981\u7d20\u304c\u542b\u307e\u308c\u3001\u30b7\u30b9\u30c6\u30e0\u30e1\u30e2\u30ea\u306e\u5236\u9650\u306b\u3088\u308a\u3059\u3079\u3066\u306e\u30c7\u30fc\u30bf\u3092\u540c\u6642\u306b\u30ed\u30fc\u30c9\u3067\u304d\u306a\u3044\u5834\u5408\u3001\u30c7\u30fc\u30bf\u30921,000\u500b\u306e\u30d0\u30b1\u30c3\u30c8\u306b\u5206\u5272\u3057\u3001\u5404\u30d0\u30b1\u30c3\u30c8\u3092\u500b\u5225\u306b\u30bd\u30fc\u30c8\u3057\u3066\u304b\u3089\u7d50\u679c\u3092\u30de\u30fc\u30b8\u3067\u304d\u307e\u3059\u3002</p> <ul> <li>\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(n + k)\\)\uff1a\u8981\u7d20\u304c\u30d0\u30b1\u30c3\u30c8\u9593\u3067\u5747\u7b49\u306b\u5206\u6563\u3055\u308c\u3066\u3044\u308b\u3068\u4eee\u5b9a\u3059\u308b\u3068\u3001\u5404\u30d0\u30b1\u30c3\u30c8\u5185\u306e\u8981\u7d20\u6570\u306f \\(n/k\\) \u3067\u3059\u3002\u5358\u4e00\u306e\u30d0\u30b1\u30c3\u30c8\u306e\u30bd\u30fc\u30c8\u306b \\(O(n/k \\log(n/k))\\) \u6642\u9593\u304c\u304b\u304b\u308b\u3068\u4eee\u5b9a\u3059\u308b\u3068\u3001\u3059\u3079\u3066\u306e\u30d0\u30b1\u30c3\u30c8\u306e\u30bd\u30fc\u30c8\u306b \\(O(n \\log(n/k))\\) \u6642\u9593\u304c\u304b\u304b\u308a\u307e\u3059\u3002\u30d0\u30b1\u30c3\u30c8\u6570 \\(k\\) \u304c\u6bd4\u8f03\u7684\u5927\u304d\u3044\u3068\u304d\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(n)\\) \u306b\u8fd1\u3065\u304d\u307e\u3059\u3002\u7d50\u679c\u306e\u30de\u30fc\u30b8\u306b\u306f\u3001\u3059\u3079\u3066\u306e\u30d0\u30b1\u30c3\u30c8\u3068\u8981\u7d20\u3092\u8d70\u67fb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\\(O(n + k)\\) \u6642\u9593\u304c\u304b\u304b\u308a\u307e\u3059\u3002\u6700\u60aa\u306e\u5834\u5408\u3001\u3059\u3079\u3066\u306e\u30c7\u30fc\u30bf\u304c\u5358\u4e00\u306e\u30d0\u30b1\u30c3\u30c8\u306b\u5206\u6563\u3055\u308c\u3001\u305d\u306e\u30d0\u30b1\u30c3\u30c8\u306e\u30bd\u30fc\u30c8\u306b\u306f \\(O(n^2)\\) \u6642\u9593\u304c\u304b\u304b\u308a\u307e\u3059\u3002</li> <li>\u7a7a\u9593\u8a08\u7b97\u91cf\u306f \\(O(n + k)\\)\u3001\u975e\u30a4\u30f3\u30d7\u30ec\u30fc\u30b9\u30bd\u30fc\u30c8\uff1a\\(k\\) \u500b\u306e\u30d0\u30b1\u30c3\u30c8\u3068\u5408\u8a08 \\(n\\) \u500b\u306e\u8981\u7d20\u306e\u305f\u3081\u306e\u8ffd\u52a0\u30b9\u30da\u30fc\u30b9\u304c\u5fc5\u8981\u3067\u3059\u3002</li> <li>\u30d0\u30b1\u30c3\u30c8\u30bd\u30fc\u30c8\u304c\u5b89\u5b9a\u304b\u3069\u3046\u304b\u306f\u3001\u5404\u30d0\u30b1\u30c3\u30c8\u5185\u3067\u4f7f\u7528\u3055\u308c\u308b\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u304c\u5b89\u5b9a\u304b\u3069\u3046\u304b\u306b\u4f9d\u5b58\u3057\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_sorting/bucket_sort/#1183","title":"11.8.3 \u00a0 \u5747\u7b49\u5206\u6563\u3092\u9054\u6210\u3059\u308b\u65b9\u6cd5","text":"<p>\u30d0\u30b1\u30c3\u30c8\u30bd\u30fc\u30c8\u306e\u7406\u8ad6\u7684\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(n)\\) \u306b\u9054\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u91cd\u8981\u306a\u3053\u3068\u306f\u3001\u3059\u3079\u3066\u306e\u30d0\u30b1\u30c3\u30c8\u306b\u8981\u7d20\u3092\u5747\u7b49\u306b\u5206\u6563\u3055\u305b\u308b\u3053\u3068\u3067\u3059\u3002\u5b9f\u4e16\u754c\u306e\u30c7\u30fc\u30bf\u306f\u3057\u3070\u3057\u3070\u5747\u4e00\u306b\u5206\u6563\u3055\u308c\u3066\u3044\u306a\u3044\u304b\u3089\u3067\u3059\u3002\u4f8b\u3048\u3070\u3001eBay\u306e\u3059\u3079\u3066\u306e\u5546\u54c1\u3092\u4fa1\u683c\u7bc4\u56f2\u306710\u500b\u306e\u30d0\u30b1\u30c3\u30c8\u306b\u5747\u7b49\u306b\u5206\u6563\u3055\u305b\u305f\u3044\u3068\u3057\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u5546\u54c1\u4fa1\u683c\u306e\u5206\u6563\u306f\u5747\u7b49\u3067\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u3001100\u30c9\u30eb\u672a\u6e80\u306e\u5546\u54c1\u304c\u591a\u304f\u3001500\u30c9\u30eb\u4ee5\u4e0a\u306e\u5546\u54c1\u304c\u5c11\u306a\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u4fa1\u683c\u7bc4\u56f2\u3092\u5747\u7b49\u306b10\u5206\u5272\u3059\u308b\u3068\u3001\u5404\u30d0\u30b1\u30c3\u30c8\u306e\u5546\u54c1\u6570\u306e\u5dee\u304c\u5927\u304d\u304f\u306a\u308a\u307e\u3059\u3002</p> <p>\u5747\u7b49\u5206\u6563\u3092\u9054\u6210\u3059\u308b\u305f\u3081\u306b\u3001\u6700\u521d\u306b\u304a\u304a\u3088\u305d\u306e\u5883\u754c\u3092\u8a2d\u5b9a\u3057\u3066\u3001\u30c7\u30fc\u30bf\u30923\u3064\u306e\u30d0\u30b1\u30c3\u30c8\u306b\u5927\u307e\u304b\u306b\u5206\u5272\u3067\u304d\u307e\u3059\u3002\u5206\u6563\u304c\u5b8c\u4e86\u3057\u305f\u5f8c\u3001\u3088\u308a\u591a\u304f\u306e\u30a2\u30a4\u30c6\u30e0\u3092\u6301\u3064\u30d0\u30b1\u30c3\u30c8\u3092\u3055\u3089\u306b3\u3064\u306e\u30d0\u30b1\u30c3\u30c8\u306b\u5206\u5272\u3057\u3001\u3059\u3079\u3066\u306e\u30d0\u30b1\u30c3\u30c8\u306e\u8981\u7d20\u6570\u304c\u307b\u307c\u7b49\u3057\u304f\u306a\u308b\u307e\u3067\u7d9a\u3051\u307e\u3059\u3002</p> <p>\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u3053\u306e\u65b9\u6cd5\u306f\u672c\u8cea\u7684\u306b\u518d\u5e30\u6728\u3092\u69cb\u7bc9\u3057\u3001\u8449\u30ce\u30fc\u30c9\u306e\u8981\u7d20\u6570\u304c\u3067\u304d\u308b\u3060\u3051\u5747\u7b49\u306b\u306a\u308b\u3053\u3068\u3092\u76ee\u6307\u3057\u307e\u3059\u3002\u3082\u3061\u308d\u3093\u3001\u5404\u30e9\u30a6\u30f3\u30c9\u3067\u30c7\u30fc\u30bf\u30923\u3064\u306e\u30d0\u30b1\u30c3\u30c8\u306b\u5206\u5272\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093 - \u5206\u5272\u6226\u7565\u306f\u30c7\u30fc\u30bf\u306e\u72ec\u7279\u306a\u7279\u6027\u306b\u9069\u5fdc\u7684\u306b\u8abf\u6574\u3067\u304d\u307e\u3059\u3002</p> <p></p> <p> \u56f3 11-14 \u00a0 \u30d0\u30b1\u30c3\u30c8\u306e\u518d\u5e30\u7684\u5206\u5272 </p> <p>\u5546\u54c1\u4fa1\u683c\u306e\u78ba\u7387\u5206\u5e03\u3092\u4e8b\u524d\u306b\u77e5\u3063\u3066\u3044\u308b\u5834\u5408\u3001\u30c7\u30fc\u30bf\u306e\u78ba\u7387\u5206\u5e03\u306b\u57fa\u3065\u3044\u3066\u5404\u30d0\u30b1\u30c3\u30c8\u306e\u4fa1\u683c\u5883\u754c\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002\u30c7\u30fc\u30bf\u5206\u5e03\u3092\u5177\u4f53\u7684\u306b\u8a08\u7b97\u3059\u308b\u5fc5\u8981\u306f\u5fc5\u305a\u3057\u3082\u306a\u304f\u3001\u4ee3\u308f\u308a\u306b\u78ba\u7387\u30e2\u30c7\u30eb\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u7279\u6027\u306b\u57fa\u3065\u3044\u3066\u8fd1\u4f3c\u3067\u304d\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <p>\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u5546\u54c1\u4fa1\u683c\u304c\u6b63\u898f\u5206\u5e03\u306b\u5f93\u3046\u3068\u4eee\u5b9a\u3059\u308b\u3068\u3001\u30d0\u30b1\u30c3\u30c8\u9593\u3067\u30a2\u30a4\u30c6\u30e0\u306e\u5206\u6563\u306e\u30d0\u30e9\u30f3\u30b9\u3092\u53d6\u308b\u305f\u3081\u306b\u5408\u7406\u7684\u306a\u4fa1\u683c\u533a\u9593\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002</p> <p></p> <p> \u56f3 11-15 \u00a0 \u78ba\u7387\u5206\u5e03\u306b\u57fa\u3065\u304f\u30d0\u30b1\u30c3\u30c8\u5206\u5272 </p>"},{"location":"chapter_sorting/counting_sort/","title":"11.9 \u00a0 \u8a08\u6570\u30bd\u30fc\u30c8","text":"<p>\u8a08\u6570\u30bd\u30fc\u30c8\u306f\u8981\u7d20\u306e\u6570\u3092\u30ab\u30a6\u30f3\u30c8\u3059\u308b\u3053\u3068\u3067\u30bd\u30fc\u30c8\u3092\u5b9f\u73fe\u3057\u3001\u901a\u5e38\u306f\u6574\u6570\u914d\u5217\u306b\u9069\u7528\u3055\u308c\u307e\u3059\u3002</p>"},{"location":"chapter_sorting/counting_sort/#1191","title":"11.9.1 \u00a0 \u7c21\u5358\u306a\u5b9f\u88c5","text":"<p>\u7c21\u5358\u306a\u4f8b\u304b\u3089\u59cb\u3081\u307e\u3057\u3087\u3046\u3002\u9577\u3055 \\(n\\) \u306e\u914d\u5217 <code>nums</code> \u304c\u4e0e\u3048\u3089\u308c\u3001\u3059\u3079\u3066\u306e\u8981\u7d20\u304c\u300c\u975e\u8ca0\u6574\u6570\u300d\u3067\u3042\u308b\u5834\u5408\u3001\u8a08\u6570\u30bd\u30fc\u30c8\u306e\u5168\u4f53\u7684\u306a\u904e\u7a0b\u306f\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3055\u308c\u3066\u3044\u307e\u3059\u3002</p> <ol> <li>\u914d\u5217\u3092\u8d70\u67fb\u3057\u3066\u6700\u5927\u6570\u3092\u898b\u3064\u3051\u3001\u305d\u308c\u3092 \\(m\\) \u3068\u3057\u3001\u9577\u3055 \\(m + 1\\) \u306e\u88dc\u52a9\u914d\u5217 <code>counter</code> \u3092\u4f5c\u6210\u3057\u307e\u3059\u3002</li> <li><code>counter</code> \u3092\u4f7f\u7528\u3057\u3066 <code>nums</code> \u5185\u306e\u5404\u6570\u306e\u51fa\u73fe\u56de\u6570\u3092\u30ab\u30a6\u30f3\u30c8\u3057\u307e\u3059\u3002\u3053\u3053\u3067 <code>counter[num]</code> \u306f\u6570 <code>num</code> \u306e\u51fa\u73fe\u56de\u6570\u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002\u30ab\u30a6\u30f3\u30c8\u65b9\u6cd5\u306f\u7c21\u5358\u3067\u3001<code>nums</code> \u3092\u8d70\u67fb\u3057\uff08\u73fe\u5728\u306e\u6570\u3092 <code>num</code> \u3068\u3059\u308b\uff09\u3001\u5404\u30e9\u30a6\u30f3\u30c9\u3067 <code>counter[num]</code> \u3092 \\(1\\) \u5897\u3084\u3057\u307e\u3059\u3002</li> <li><code>counter</code> \u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306f\u81ea\u7136\u306b\u9806\u5e8f\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u3059\u3079\u3066\u306e\u6570\u306f\u672c\u8cea\u7684\u306b\u3059\u3067\u306b\u30bd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u6b21\u306b\u3001<code>counter</code> \u3092\u8d70\u67fb\u3057\u3001\u51fa\u73fe\u9806\u306b <code>nums</code> \u3092\u6607\u9806\u3067\u57cb\u3081\u307e\u3059\u3002</li> </ol> <p></p> <p> \u56f3 11-16 \u00a0 \u8a08\u6570\u30bd\u30fc\u30c8\u306e\u904e\u7a0b </p> <p>\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby counting_sort.py<pre><code>def counting_sort_naive(nums: list[int]):\n \"\"\"\u8a08\u6570\u30bd\u30fc\u30c8\"\"\"\n # \u30b7\u30f3\u30d7\u30eb\u306a\u5b9f\u88c5\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30bd\u30fc\u30c8\u306b\u306f\u4f7f\u7528\u3067\u304d\u306a\u3044\n # 1. \u914d\u5217\u5185\u306e\u6700\u5927\u8981\u7d20 m \u3092\u7d71\u8a08\n m = 0\n for num in nums:\n m = max(m, num)\n # 2. \u5404\u6570\u5b57\u306e\u51fa\u73fe\u56de\u6570\u3092\u7d71\u8a08\n # counter[num] \u306f num \u306e\u51fa\u73fe\u56de\u6570\u3092\u8868\u3059\n counter = [0] * (m + 1)\n for num in nums:\n counter[num] += 1\n # 3. counter \u3092\u8d70\u67fb\u3057\u3001\u5404\u8981\u7d20\u3092\u5143\u306e\u914d\u5217 nums \u306b\u57cb\u3081\u623b\u3057\n i = 0\n for num in range(m + 1):\n for _ in range(counter[num]):\n nums[i] = num\n i += 1\n</code></pre> counting_sort.cpp<pre><code>/* \u30ab\u30a6\u30f3\u30c8\u30bd\u30fc\u30c8 */\n// \u7c21\u5358\u306a\u5b9f\u88c5\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30bd\u30fc\u30c8\u306b\u306f\u4f7f\u7528\u3067\u304d\u306a\u3044\nvoid countingSortNaive(vector&lt;int&gt; &amp;nums) {\n // 1. \u914d\u5217\u306e\u6700\u5927\u8981\u7d20m\u3092\u7d71\u8a08\n int m = 0;\n for (int num : nums) {\n m = max(m, num);\n }\n // 2. \u5404\u6570\u5b57\u306e\u51fa\u73fe\u56de\u6570\u3092\u7d71\u8a08\n // counter[num]\u306fnum\u306e\u51fa\u73fe\u56de\u6570\u3092\u8868\u3059\n vector&lt;int&gt; counter(m + 1, 0);\n for (int num : nums) {\n counter[num]++;\n }\n // 3. counter\u3092\u8d70\u67fb\u3057\u3001\u5404\u8981\u7d20\u3092\u5143\u306e\u914d\u5217nums\u306b\u623b\u3059\n int i = 0;\n for (int num = 0; num &lt; m + 1; num++) {\n for (int j = 0; j &lt; counter[num]; j++, i++) {\n nums[i] = num;\n }\n }\n}\n</code></pre> counting_sort.java<pre><code>/* \u8a08\u6570\u30bd\u30fc\u30c8 */\n// \u7c21\u5358\u306a\u5b9f\u88c5\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30bd\u30fc\u30c8\u306b\u306f\u4f7f\u7528\u3067\u304d\u306a\u3044\nvoid countingSortNaive(int[] nums) {\n // 1. \u914d\u5217\u306e\u6700\u5927\u8981\u7d20 m \u3092\u7d71\u8a08\n int m = 0;\n for (int num : nums) {\n m = Math.max(m, num);\n }\n // 2. \u5404\u6570\u5b57\u306e\u51fa\u73fe\u56de\u6570\u3092\u7d71\u8a08\n // counter[num] \u306f num \u306e\u51fa\u73fe\u56de\u6570\u3092\u8868\u3059\n int[] counter = new int[m + 1];\n for (int num : nums) {\n counter[num]++;\n }\n // 3. counter \u3092\u8d70\u67fb\u3057\u3001\u5404\u8981\u7d20\u3092\u5143\u306e\u914d\u5217 nums \u306b\u623b\u3059\n int i = 0;\n for (int num = 0; num &lt; m + 1; num++) {\n for (int j = 0; j &lt; counter[num]; j++, i++) {\n nums[i] = num;\n }\n }\n}\n</code></pre> counting_sort.cs<pre><code>[class]{counting_sort}-[func]{CountingSortNaive}\n</code></pre> counting_sort.go<pre><code>[class]{}-[func]{countingSortNaive}\n</code></pre> counting_sort.swift<pre><code>[class]{}-[func]{countingSortNaive}\n</code></pre> counting_sort.js<pre><code>[class]{}-[func]{countingSortNaive}\n</code></pre> counting_sort.ts<pre><code>[class]{}-[func]{countingSortNaive}\n</code></pre> counting_sort.dart<pre><code>[class]{}-[func]{countingSortNaive}\n</code></pre> counting_sort.rs<pre><code>[class]{}-[func]{counting_sort_naive}\n</code></pre> counting_sort.c<pre><code>[class]{}-[func]{countingSortNaive}\n</code></pre> counting_sort.kt<pre><code>[class]{}-[func]{countingSortNaive}\n</code></pre> counting_sort.rb<pre><code>[class]{}-[func]{counting_sort_naive}\n</code></pre> <p>\u8a08\u6570\u30bd\u30fc\u30c8\u3068\u30d0\u30b1\u30c3\u30c8\u30bd\u30fc\u30c8\u306e\u95a2\u4fc2</p> <p>\u30d0\u30b1\u30c3\u30c8\u30bd\u30fc\u30c8\u306e\u89b3\u70b9\u304b\u3089\u3001\u8a08\u6570\u30bd\u30fc\u30c8\u306b\u304a\u3051\u308b\u8a08\u6570\u914d\u5217 <code>counter</code> \u306e\u5404\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u30d0\u30b1\u30c3\u30c8\u3068\u8003\u3048\u3001\u30ab\u30a6\u30f3\u30c8\u306e\u904e\u7a0b\u3092\u8981\u7d20\u3092\u5bfe\u5fdc\u3059\u308b\u30d0\u30b1\u30c3\u30c8\u306b\u5206\u6563\u3055\u305b\u308b\u3053\u3068\u3068\u8003\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u672c\u8cea\u7684\u306b\u3001\u8a08\u6570\u30bd\u30fc\u30c8\u306f\u6574\u6570\u30c7\u30fc\u30bf\u306e\u305f\u3081\u306e\u30d0\u30b1\u30c3\u30c8\u30bd\u30fc\u30c8\u306e\u7279\u5225\u306a\u30b1\u30fc\u30b9\u3067\u3059\u3002</p>"},{"location":"chapter_sorting/counting_sort/#1192","title":"11.9.2 \u00a0 \u5b8c\u5168\u306a\u5b9f\u88c5","text":"<p>\u6ce8\u610f\u6df1\u3044\u8aad\u8005\u306f\u6c17\u4ed8\u304f\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3001\u5165\u529b\u30c7\u30fc\u30bf\u304c\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u5834\u5408\u3001\u4e0a\u8a18\u306e\u624b\u9806 <code>3.</code> \u306f\u7121\u52b9\u3067\u3059\u3002\u5165\u529b\u30c7\u30fc\u30bf\u304c\u5546\u54c1\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3067\u3001\u4fa1\u683c\uff08\u30af\u30e9\u30b9\u30e1\u30f3\u30d0\u5909\u6570\uff09\u3067\u5546\u54c1\u3092\u30bd\u30fc\u30c8\u3057\u305f\u3044\u3068\u3057\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u4e0a\u8a18\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u7d50\u679c\u3068\u3057\u3066\u30bd\u30fc\u30c8\u6e08\u307f\u306e\u4fa1\u683c\u306e\u307f\u3092\u63d0\u4f9b\u3067\u304d\u307e\u3059\u3002</p> <p>\u3067\u306f\u3001\u5143\u306e\u30c7\u30fc\u30bf\u306e\u30bd\u30fc\u30c8\u7d50\u679c\u3092\u3069\u306e\u3088\u3046\u306b\u53d6\u5f97\u3067\u304d\u308b\u3067\u3057\u3087\u3046\u304b\uff1f\u307e\u305a\u3001<code>counter</code> \u306e\u300c\u524d\u7f6e\u548c\u300d\u3092\u8a08\u7b97\u3057\u307e\u3059\u3002\u540d\u524d\u304c\u793a\u3059\u3088\u3046\u306b\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 <code>i</code> \u3067\u306e\u524d\u7f6e\u548c <code>prefix[i]</code> \u306f\u3001\u914d\u5217\u306e\u6700\u521d\u306e <code>i</code> \u500b\u306e\u8981\u7d20\u306e\u548c\u306b\u7b49\u3057\u3044\u3067\u3059\uff1a</p> \\[ \\text{prefix}[i] = \\sum_{j=0}^i \\text{counter[j]} \\] <p>\u524d\u7f6e\u548c\u306b\u306f\u660e\u78ba\u306a\u610f\u5473\u304c\u3042\u308a\u307e\u3059\u3002<code>prefix[num] - 1</code> \u306f\u7d50\u679c\u914d\u5217 <code>res</code> \u306b\u304a\u3051\u308b\u8981\u7d20 <code>num</code> \u306e\u6700\u5f8c\u306e\u51fa\u73fe\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8868\u3057\u307e\u3059\u3002\u3053\u306e\u60c5\u5831\u306f\u91cd\u8981\u3067\u3001\u5404\u8981\u7d20\u304c\u7d50\u679c\u914d\u5217\u306e\u3069\u3053\u306b\u73fe\u308c\u308b\u3079\u304d\u304b\u3092\u6559\u3048\u3066\u304f\u308c\u307e\u3059\u3002\u6b21\u306b\u3001\u5143\u306e\u914d\u5217 <code>nums</code> \u306e\u5404\u8981\u7d20 <code>num</code> \u3092\u9006\u9806\u3067\u8d70\u67fb\u3057\u3001\u5404\u53cd\u5fa9\u3067\u4ee5\u4e0b\u306e2\u3064\u306e\u624b\u9806\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002</p> <ol> <li>\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 <code>prefix[num] - 1</code> \u3067\u914d\u5217 <code>res</code> \u306b <code>num</code> \u3092\u57cb\u3081\u307e\u3059\u3002</li> <li>\u524d\u7f6e\u548c <code>prefix[num]</code> \u3092 \\(1\\) \u6e1b\u3089\u3057\u3066\u3001<code>num</code> \u3092\u914d\u7f6e\u3059\u308b\u6b21\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002</li> </ol> <p>\u8d70\u67fb\u5f8c\u3001\u914d\u5217 <code>res</code> \u306b\u306f\u30bd\u30fc\u30c8\u3055\u308c\u305f\u7d50\u679c\u304c\u542b\u307e\u308c\u3001\u6700\u5f8c\u306b <code>res</code> \u304c\u5143\u306e\u914d\u5217 <code>nums</code> \u3092\u7f6e\u304d\u63db\u3048\u307e\u3059\u3002\u5b8c\u5168\u306a\u8a08\u6570\u30bd\u30fc\u30c8\u306e\u904e\u7a0b\u306f\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3055\u308c\u3066\u3044\u307e\u3059\u3002</p> &lt;1&gt;&lt;2&gt;&lt;3&gt;&lt;4&gt;&lt;5&gt;&lt;6&gt;&lt;7&gt;&lt;8&gt; <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p> \u56f3 11-17 \u00a0 \u8a08\u6570\u30bd\u30fc\u30c8\u306e\u904e\u7a0b </p> <p>\u8a08\u6570\u30bd\u30fc\u30c8\u306e\u5b9f\u88c5\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby counting_sort.py<pre><code>def counting_sort(nums: list[int]):\n \"\"\"\u8a08\u6570\u30bd\u30fc\u30c8\"\"\"\n # \u5b8c\u5168\u306a\u5b9f\u88c5\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30bd\u30fc\u30c8\u304c\u53ef\u80fd\u3067\u3001\u5b89\u5b9a\u30bd\u30fc\u30c8\n # 1. \u914d\u5217\u5185\u306e\u6700\u5927\u8981\u7d20 m \u3092\u7d71\u8a08\n m = max(nums)\n # 2. \u5404\u6570\u5b57\u306e\u51fa\u73fe\u56de\u6570\u3092\u7d71\u8a08\n # counter[num] \u306f num \u306e\u51fa\u73fe\u56de\u6570\u3092\u8868\u3059\n counter = [0] * (m + 1)\n for num in nums:\n counter[num] += 1\n # 3. counter \u306e\u524d\u7f6e\u548c\u3092\u8a08\u7b97\u3057\u3001\u300c\u51fa\u73fe\u56de\u6570\u300d\u3092\u300c\u672b\u5c3e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u300d\u306b\u5909\u63db\n # counter[num]-1 \u306f res \u306b\u304a\u3044\u3066 num \u304c\u6700\u5f8c\u306b\u51fa\u73fe\u3059\u308b\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\n for i in range(m):\n counter[i + 1] += counter[i]\n # 4. nums \u3092\u9006\u9806\u306b\u8d70\u67fb\u3057\u3001\u5404\u8981\u7d20\u3092\u7d50\u679c\u914d\u5217 res \u306b\u914d\u7f6e\n # \u7d50\u679c\u3092\u8a18\u9332\u3059\u308b\u305f\u3081\u306e\u914d\u5217 res \u3092\u521d\u671f\u5316\n n = len(nums)\n res = [0] * n\n for i in range(n - 1, -1, -1):\n num = nums[i]\n res[counter[num] - 1] = num # num \u3092\u5bfe\u5fdc\u3059\u308b\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u914d\u7f6e\n counter[num] -= 1 # \u524d\u7f6e\u548c\u30921\u6e1b\u3089\u3057\u3001num \u3092\u914d\u7f6e\u3059\u308b\u6b21\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u53d6\u5f97\n # \u7d50\u679c\u914d\u5217 res \u3092\u4f7f\u7528\u3057\u3066\u5143\u306e\u914d\u5217 nums \u3092\u4e0a\u66f8\u304d\n for i in range(n):\n nums[i] = res[i]\n</code></pre> counting_sort.cpp<pre><code>/* \u30ab\u30a6\u30f3\u30c8\u30bd\u30fc\u30c8 */\n// \u5b8c\u5168\u306a\u5b9f\u88c5\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30bd\u30fc\u30c8\u304c\u53ef\u80fd\u3067\u5b89\u5b9a\u30bd\u30fc\u30c8\nvoid countingSort(vector&lt;int&gt; &amp;nums) {\n // 1. \u914d\u5217\u306e\u6700\u5927\u8981\u7d20m\u3092\u7d71\u8a08\n int m = 0;\n for (int num : nums) {\n m = max(m, num);\n }\n // 2. \u5404\u6570\u5b57\u306e\u51fa\u73fe\u56de\u6570\u3092\u7d71\u8a08\n // counter[num]\u306fnum\u306e\u51fa\u73fe\u56de\u6570\u3092\u8868\u3059\n vector&lt;int&gt; counter(m + 1, 0);\n for (int num : nums) {\n counter[num]++;\n }\n // 3. counter\u306e\u524d\u7f00\u548c\u3092\u8a08\u7b97\u3057\u3001\u300c\u51fa\u73fe\u56de\u6570\u300d\u3092\u300c\u672b\u5c3e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u300d\u306b\u5909\u63db\n // counter[num]-1\u306fnum\u304cres\u3067\u73fe\u308c\u308b\u6700\u5f8c\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\n for (int i = 0; i &lt; m; i++) {\n counter[i + 1] += counter[i];\n }\n // 4. nums\u3092\u9006\u9806\u3067\u8d70\u67fb\u3057\u3001\u5404\u8981\u7d20\u3092\u7d50\u679c\u914d\u5217res\u306b\u914d\u7f6e\n // \u7d50\u679c\u3092\u8a18\u9332\u3059\u308b\u914d\u5217res\u3092\u521d\u671f\u5316\n int n = nums.size();\n vector&lt;int&gt; res(n);\n for (int i = n - 1; i &gt;= 0; i--) {\n int num = nums[i];\n res[counter[num] - 1] = num; // num\u3092\u5bfe\u5fdc\u3059\u308b\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u914d\u7f6e\n counter[num]--; // \u524d\u7f00\u548c\u30921\u6e1b\u3089\u3057\u3001num\u3092\u914d\u7f6e\u3059\u308b\u6b21\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u53d6\u5f97\n }\n // \u7d50\u679c\u914d\u5217res\u3067\u5143\u306e\u914d\u5217nums\u3092\u4e0a\u66f8\u304d\n nums = res;\n}\n</code></pre> counting_sort.java<pre><code>/* \u8a08\u6570\u30bd\u30fc\u30c8 */\n// \u5b8c\u5168\u306a\u5b9f\u88c5\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u30bd\u30fc\u30c8\u3067\u304d\u3001\u5b89\u5b9a\u30bd\u30fc\u30c8\nvoid countingSort(int[] nums) {\n // 1. \u914d\u5217\u306e\u6700\u5927\u8981\u7d20 m \u3092\u7d71\u8a08\n int m = 0;\n for (int num : nums) {\n m = Math.max(m, num);\n }\n // 2. \u5404\u6570\u5b57\u306e\u51fa\u73fe\u56de\u6570\u3092\u7d71\u8a08\n // counter[num] \u306f num \u306e\u51fa\u73fe\u56de\u6570\u3092\u8868\u3059\n int[] counter = new int[m + 1];\n for (int num : nums) {\n counter[num]++;\n }\n // 3. counter \u306e\u7d2f\u7a4d\u548c\u3092\u8a08\u7b97\u3057\u3001\u300c\u51fa\u73fe\u56de\u6570\u300d\u3092\u300c\u5c3b\u5c3e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u300d\u306b\u5909\u63db\n // counter[num]-1 \u306f res \u5185\u3067 num \u304c\u51fa\u73fe\u3059\u308b\u6700\u5f8c\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\n for (int i = 0; i &lt; m; i++) {\n counter[i + 1] += counter[i];\n }\n // 4. nums \u3092\u9006\u9806\u306b\u8d70\u67fb\u3057\u3001\u5404\u8981\u7d20\u3092\u7d50\u679c\u914d\u5217 res \u306b\u914d\u7f6e\n // \u7d50\u679c\u3092\u8a18\u9332\u3059\u308b\u914d\u5217 res \u3092\u521d\u671f\u5316\n int n = nums.length;\n int[] res = new int[n];\n for (int i = n - 1; i &gt;= 0; i--) {\n int num = nums[i];\n res[counter[num] - 1] = num; // num \u3092\u5bfe\u5fdc\u3059\u308b\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u914d\u7f6e\n counter[num]--; // \u7d2f\u7a4d\u548c\u3092 1 \u6e1b\u7b97\u3057\u3001num \u3092\u914d\u7f6e\u3059\u308b\u6b21\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u53d6\u5f97\n }\n // \u7d50\u679c\u914d\u5217 res \u3092\u4f7f\u3063\u3066\u5143\u306e\u914d\u5217 nums \u3092\u4e0a\u66f8\u304d\n for (int i = 0; i &lt; n; i++) {\n nums[i] = res[i];\n }\n}\n</code></pre> counting_sort.cs<pre><code>[class]{counting_sort}-[func]{CountingSort}\n</code></pre> counting_sort.go<pre><code>[class]{}-[func]{countingSort}\n</code></pre> counting_sort.swift<pre><code>[class]{}-[func]{countingSort}\n</code></pre> counting_sort.js<pre><code>[class]{}-[func]{countingSort}\n</code></pre> counting_sort.ts<pre><code>[class]{}-[func]{countingSort}\n</code></pre> counting_sort.dart<pre><code>[class]{}-[func]{countingSort}\n</code></pre> counting_sort.rs<pre><code>[class]{}-[func]{counting_sort}\n</code></pre> counting_sort.c<pre><code>[class]{}-[func]{countingSort}\n</code></pre> counting_sort.kt<pre><code>[class]{}-[func]{countingSort}\n</code></pre> counting_sort.rb<pre><code>[class]{}-[func]{counting_sort}\n</code></pre>"},{"location":"chapter_sorting/counting_sort/#1193","title":"11.9.3 \u00a0 \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u7279\u5fb4","text":"<ul> <li>\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(n + m)\\)\u3001\u975e\u9069\u5fdc\u30bd\u30fc\u30c8\uff1a<code>nums</code> \u3068 <code>counter</code> \u306e\u8d70\u67fb\u304c\u542b\u307e\u308c\u3001\u3069\u3061\u3089\u3082\u7dda\u5f62\u6642\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u4e00\u822c\u7684\u306b\u3001\\(n \\gg m\\) \u3067\u3042\u308a\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(n)\\) \u306b\u8fd1\u3065\u304d\u307e\u3059\u3002</li> <li>\u7a7a\u9593\u8a08\u7b97\u91cf\u306f \\(O(n + m)\\)\u3001\u975e\u30a4\u30f3\u30d7\u30ec\u30fc\u30b9\u30bd\u30fc\u30c8\uff1a\u9577\u3055 \\(n\\) \u306e\u914d\u5217 <code>res</code> \u3068\u9577\u3055 \\(m\\) \u306e\u914d\u5217 <code>counter</code> \u3092\u305d\u308c\u305e\u308c\u4f7f\u7528\u3057\u307e\u3059\u3002</li> <li>\u5b89\u5b9a\u30bd\u30fc\u30c8\uff1a\u8981\u7d20\u304c\u300c\u53f3\u304b\u3089\u5de6\u300d\u306e\u9806\u5e8f\u3067 <code>res</code> \u306b\u57cb\u3081\u3089\u308c\u308b\u305f\u3081\u3001<code>nums</code> \u306e\u8d70\u67fb\u3092\u9006\u9806\u306b\u3059\u308b\u3053\u3068\u3067\u3001\u7b49\u3057\u3044\u8981\u7d20\u9593\u306e\u76f8\u5bfe\u4f4d\u7f6e\u306e\u5909\u5316\u3092\u9632\u304e\u3001\u5b89\u5b9a\u3057\u305f\u30bd\u30fc\u30c8\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002\u5b9f\u969b\u3001<code>nums</code> \u3092\u9806\u756a\u306b\u8d70\u67fb\u3057\u3066\u3082\u6b63\u3057\u3044\u30bd\u30fc\u30c8\u7d50\u679c\u3092\u751f\u6210\u3067\u304d\u307e\u3059\u304c\u3001\u7d50\u679c\u306f\u4e0d\u5b89\u5b9a\u3067\u3059\u3002</li> </ul>"},{"location":"chapter_sorting/counting_sort/#1194","title":"11.9.4 \u00a0 \u5236\u9650\u4e8b\u9805","text":"<p>\u4eca\u307e\u3067\u306b\u3001\u8a08\u6570\u30bd\u30fc\u30c8\u306f\u975e\u5e38\u306b\u5de7\u5999\u3060\u3068\u611f\u3058\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u5358\u306b\u91cf\u3092\u30ab\u30a6\u30f3\u30c8\u3059\u308b\u3060\u3051\u3067\u52b9\u7387\u7684\u306a\u30bd\u30fc\u30c8\u3092\u5b9f\u73fe\u3067\u304d\u308b\u304b\u3089\u3067\u3059\u3002\u3057\u304b\u3057\u3001\u8a08\u6570\u30bd\u30fc\u30c8\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306e\u524d\u63d0\u6761\u4ef6\u306f\u6bd4\u8f03\u7684\u53b3\u3057\u3044\u3067\u3059\u3002</p> <p>\u8a08\u6570\u30bd\u30fc\u30c8\u306f\u975e\u8ca0\u6574\u6570\u306b\u306e\u307f\u9069\u7528\u3067\u304d\u307e\u3059\u3002\u4ed6\u306e\u30bf\u30a4\u30d7\u306e\u30c7\u30fc\u30bf\u306b\u9069\u7528\u3057\u305f\u3044\u5834\u5408\u3001\u3053\u308c\u3089\u306e\u30c7\u30fc\u30bf\u304c\u8981\u7d20\u306e\u5143\u306e\u9806\u5e8f\u3092\u5909\u66f4\u3059\u308b\u3053\u3068\u306a\u304f\u975e\u8ca0\u6574\u6570\u306b\u5909\u63db\u3067\u304d\u308b\u3053\u3068\u3092\u4fdd\u8a3c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u8ca0\u306e\u6574\u6570\u3092\u542b\u3080\u914d\u5217\u306e\u5834\u5408\u3001\u6700\u521d\u306b\u3059\u3079\u3066\u306e\u6570\u306b\u5b9a\u6570\u3092\u52a0\u3048\u3066\u3001\u3059\u3079\u3066\u3092\u6b63\u306e\u6570\u306b\u5909\u63db\u3057\u3001\u30bd\u30fc\u30c8\u5b8c\u4e86\u5f8c\u306b\u5143\u306b\u623b\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</p> <p>\u8a08\u6570\u30bd\u30fc\u30c8\u306f\u5024\u306e\u7bc4\u56f2\u304c\u5c0f\u3055\u3044\u5927\u304d\u306a\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u4e0a\u8a18\u306e\u4f8b\u3067\u306f\u3001\\(m\\) \u306f\u5927\u304d\u3059\u304e\u308b\u3079\u304d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u305d\u3046\u3067\u306a\u3051\u308c\u3070\u3001\u3042\u307e\u308a\u306b\u3082\u591a\u304f\u306e\u30b9\u30da\u30fc\u30b9\u3092\u5360\u6709\u3057\u3066\u3057\u307e\u3044\u307e\u3059\u3002\u305d\u3057\u3066 \\(n \\ll m\\) \u306e\u5834\u5408\u3001\u8a08\u6570\u30bd\u30fc\u30c8\u306f \\(O(m)\\) \u6642\u9593\u3092\u4f7f\u7528\u3057\u3001\\(O(n \\log n)\\) \u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3088\u308a\u9045\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</p>"},{"location":"chapter_sorting/heap_sort/","title":"11.7 \u00a0 \u30d2\u30fc\u30d7\u30bd\u30fc\u30c8","text":"<p>Tip</p> <p>\u3053\u306e\u7bc0\u3092\u8aad\u3080\u524d\u306b\u3001\u300c\u30d2\u30fc\u30d7\u300d\u306e\u7ae0\u3092\u5fc5\u305a\u5b8c\u4e86\u3055\u305b\u3066\u304f\u3060\u3055\u3044\u3002</p> <p>\u30d2\u30fc\u30d7\u30bd\u30fc\u30c8\u306f\u3001\u30d2\u30fc\u30d7\u30c7\u30fc\u30bf\u69cb\u9020\u306b\u57fa\u3065\u304f\u52b9\u7387\u7684\u306a\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u3059\u3002\u3059\u3067\u306b\u5b66\u7fd2\u3057\u305f\u300c\u30d2\u30fc\u30d7\u306e\u69cb\u7bc9\u300d\u3068\u300c\u8981\u7d20\u306e\u62bd\u51fa\u300d\u64cd\u4f5c\u3092\u4f7f\u7528\u3057\u3066\u30d2\u30fc\u30d7\u30bd\u30fc\u30c8\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002</p> <ol> <li>\u914d\u5217\u3092\u5165\u529b\u3057\u3001\u6700\u5c0f\u30d2\u30fc\u30d7\u3092\u69cb\u7bc9\u3057\u307e\u3059\u3002\u3053\u3053\u3067\u3001\u6700\u5c0f\u8981\u7d20\u304c\u30d2\u30fc\u30d7\u306e\u9802\u4e0a\u306b\u4f4d\u7f6e\u3057\u307e\u3059\u3002</li> <li>\u7d99\u7d9a\u7684\u306b\u62bd\u51fa\u64cd\u4f5c\u3092\u5b9f\u884c\u3057\u3001\u62bd\u51fa\u3055\u308c\u305f\u8981\u7d20\u3092\u9806\u6b21\u8a18\u9332\u3057\u3066\u3001\u6700\u5c0f\u304b\u3089\u6700\u5927\u307e\u3067\u306e\u30bd\u30fc\u30c8\u6e08\u307f\u30ea\u30b9\u30c8\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002</li> </ol> <p>\u4e0a\u8a18\u306e\u65b9\u6cd5\u306f\u5b9f\u73fe\u53ef\u80fd\u3067\u3059\u304c\u3001\u30dd\u30c3\u30d7\u3055\u308c\u305f\u8981\u7d20\u3092\u683c\u7d0d\u3059\u308b\u305f\u3081\u306e\u8ffd\u52a0\u306e\u914d\u5217\u304c\u5fc5\u8981\u3067\u3001\u3084\u3084\u7a7a\u9593\u3092\u6d88\u8cbb\u3057\u307e\u3059\u3002\u5b9f\u969b\u306b\u306f\u3001\u901a\u5e38\u3001\u3088\u308a\u512a\u96c5\u306a\u5b9f\u88c5\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_sorting/heap_sort/#1171","title":"11.7.1 \u00a0 \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u6d41\u308c","text":"<p>\u914d\u5217\u306e\u9577\u3055\u3092 \\(n\\) \u3068\u3059\u308b\u3068\u3001\u30d2\u30fc\u30d7\u30bd\u30fc\u30c8\u306e\u904e\u7a0b\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002</p> <ol> <li>\u914d\u5217\u3092\u5165\u529b\u3057\u3001\u6700\u5927\u30d2\u30fc\u30d7\u3092\u69cb\u7bc9\u3057\u307e\u3059\u3002\u3053\u306e\u624b\u9806\u306e\u5f8c\u3001\u6700\u5927\u8981\u7d20\u304c\u30d2\u30fc\u30d7\u306e\u9802\u4e0a\u306b\u4f4d\u7f6e\u3057\u307e\u3059\u3002</li> <li>\u30d2\u30fc\u30d7\u306e\u9802\u4e0a\u8981\u7d20\uff08\u6700\u521d\u306e\u8981\u7d20\uff09\u3068\u30d2\u30fc\u30d7\u306e\u5e95\u90e8\u8981\u7d20\uff08\u6700\u5f8c\u306e\u8981\u7d20\uff09\u3092\u4ea4\u63db\u3057\u307e\u3059\u3002\u3053\u306e\u4ea4\u63db\u306e\u5f8c\u3001\u30d2\u30fc\u30d7\u306e\u9577\u3055\u3092 \\(1\\) \u6e1b\u3089\u3057\u3001\u30bd\u30fc\u30c8\u6e08\u307f\u8981\u7d20\u306e\u6570\u3092 \\(1\\) \u5897\u3084\u3057\u307e\u3059\u3002</li> <li>\u30d2\u30fc\u30d7\u306e\u9802\u4e0a\u304b\u3089\u958b\u59cb\u3057\u3066\u3001\u4e0a\u304b\u3089\u4e0b\u3078\u306esift-down\u64cd\u4f5c\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002sift-down\u306e\u5f8c\u3001\u30d2\u30fc\u30d7\u306e\u6027\u8cea\u304c\u5fa9\u5143\u3055\u308c\u307e\u3059\u3002</li> <li>\u624b\u9806 <code>2.</code> \u3068 <code>3.</code> \u3092\u7e70\u308a\u8fd4\u3057\u307e\u3059\u3002\\(n - 1\\) \u30e9\u30a6\u30f3\u30c9\u30eb\u30fc\u30d7\u3057\u3066\u3001\u914d\u5217\u306e\u30bd\u30fc\u30c8\u3092\u5b8c\u4e86\u3057\u307e\u3059\u3002</li> </ol> <p>Tip</p> <p>\u5b9f\u969b\u3001\u8981\u7d20\u62bd\u51fa\u64cd\u4f5c\u3082\u624b\u9806 <code>2.</code> \u3068 <code>3.</code> \u3092\u542b\u307f\u3001\u62bd\u51fa\u3055\u308c\u305f\u8981\u7d20\u3092\u30d2\u30fc\u30d7\u304b\u3089\u524a\u9664\u3059\u308b\u8ffd\u52a0\u306e\u624b\u9806\u304c\u3042\u308a\u307e\u3059\u3002</p> &lt;1&gt;&lt;2&gt;&lt;3&gt;&lt;4&gt;&lt;5&gt;&lt;6&gt;&lt;7&gt;&lt;8&gt;&lt;9&gt;&lt;10&gt;&lt;11&gt;&lt;12&gt; <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p> \u56f3 11-12 \u00a0 \u30d2\u30fc\u30d7\u30bd\u30fc\u30c8\u306e\u904e\u7a0b </p> <p>\u30b3\u30fc\u30c9\u306e\u5b9f\u88c5\u3067\u306f\u3001\u300c\u30d2\u30fc\u30d7\u300d\u306e\u7ae0\u304b\u3089\u306esift-down\u95a2\u6570 <code>sift_down()</code> \u3092\u4f7f\u7528\u3057\u307e\u3057\u305f\u3002\u6700\u5927\u8981\u7d20\u304c\u62bd\u51fa\u3055\u308c\u308b\u306b\u3064\u308c\u3066\u30d2\u30fc\u30d7\u306e\u9577\u3055\u304c\u6e1b\u5c11\u3059\u308b\u305f\u3081\u3001<code>sift_down()</code> \u95a2\u6570\u306b\u9577\u3055\u30d1\u30e9\u30e1\u30fc\u30bf \\(n\\) \u3092\u8ffd\u52a0\u3057\u3066\u3001\u30d2\u30fc\u30d7\u306e\u73fe\u5728\u306e\u6709\u52b9\u9577\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby heap_sort.py<pre><code>def sift_down(nums: list[int], n: int, i: int):\n \"\"\"\u30d2\u30fc\u30d7\u306e\u9577\u3055\u304c n\u3001\u30ce\u30fc\u30c9 i \u304b\u3089\u4e0a\u304b\u3089\u4e0b\u3078\u30d2\u30fc\u30d7\u5316\u3092\u958b\u59cb\"\"\"\n while True:\n # i\u3001l\u3001r \u306e\u4e2d\u3067\u6700\u5927\u306e\u30ce\u30fc\u30c9\u3092\u5224\u5b9a\u3057\u3001ma \u3068\u3059\u308b\n l = 2 * i + 1\n r = 2 * i + 2\n ma = i\n if l &lt; n and nums[l] &gt; nums[ma]:\n ma = l\n if r &lt; n and nums[r] &gt; nums[ma]:\n ma = r\n # \u30ce\u30fc\u30c9 i \u304c\u6700\u5927\u307e\u305f\u306f l\u3001r \u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\u7bc4\u56f2\u5916\u306e\u5834\u5408\u3001\u3055\u3089\u306a\u308b\u30d2\u30fc\u30d7\u5316\u306f\u4e0d\u8981\u3001\u30eb\u30fc\u30d7\u3092\u629c\u3051\u308b\n if ma == i:\n break\n # 2\u3064\u306e\u30ce\u30fc\u30c9\u3092\u4ea4\u63db\n nums[i], nums[ma] = nums[ma], nums[i]\n # \u4e0b\u5411\u304d\u306b\u30d2\u30fc\u30d7\u5316\u3092\u30eb\u30fc\u30d7\n i = ma\n\ndef heap_sort(nums: list[int]):\n \"\"\"\u30d2\u30fc\u30d7\u30bd\u30fc\u30c8\"\"\"\n # \u30d2\u30fc\u30d7\u69cb\u7bc9\u64cd\u4f5c\uff1a\u8449\u30ce\u30fc\u30c9\u4ee5\u5916\u306e\u3059\u3079\u3066\u306e\u30ce\u30fc\u30c9\u3092\u30d2\u30fc\u30d7\u5316\n for i in range(len(nums) // 2 - 1, -1, -1):\n sift_down(nums, len(nums), i)\n # \u30d2\u30fc\u30d7\u304b\u3089\u6700\u5927\u8981\u7d20\u3092\u62bd\u51fa\u3057\u3001n-1 \u56de\u7e70\u308a\u8fd4\u3059\n for i in range(len(nums) - 1, 0, -1):\n # \u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u3068\u6700\u3082\u53f3\u306e\u8449\u30ce\u30fc\u30c9\u3092\u4ea4\u63db\uff08\u6700\u521d\u306e\u8981\u7d20\u3068\u6700\u5f8c\u306e\u8981\u7d20\u3092\u4ea4\u63db\uff09\n nums[0], nums[i] = nums[i], nums[0]\n # \u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u304b\u3089\u4e0a\u304b\u3089\u4e0b\u3078\u30d2\u30fc\u30d7\u5316\u3092\u958b\u59cb\n sift_down(nums, i, 0)\n</code></pre> heap_sort.cpp<pre><code>/* \u30d2\u30fc\u30d7\u306e\u9577\u3055\u306fn\u3001\u30ce\u30fc\u30c9i\u304b\u3089\u4e0a\u304b\u3089\u4e0b\u3078\u30d2\u30fc\u30d7\u5316\u3092\u958b\u59cb */\nvoid siftDown(vector&lt;int&gt; &amp;nums, int n, int i) {\n while (true) {\n // i\u3001l\u3001r \u306e\u4e2d\u3067\u6700\u5927\u306e\u30ce\u30fc\u30c9\u3092\u6c7a\u5b9a\u3057\u3001ma\u3068\u3057\u3066\u8a18\u9332\n int l = 2 * i + 1;\n int r = 2 * i + 2;\n int ma = i;\n if (l &lt; n &amp;&amp; nums[l] &gt; nums[ma])\n ma = l;\n if (r &lt; n &amp;&amp; nums[r] &gt; nums[ma])\n ma = r;\n // \u30ce\u30fc\u30c9i\u304c\u6700\u5927\u304b\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9l\u3001r\u304c\u5883\u754c\u5916\u306e\u5834\u5408\u3001\u305d\u308c\u4ee5\u4e0a\u306e\u30d2\u30fc\u30d7\u5316\u306f\u4e0d\u8981\u3067\u7d42\u4e86\n if (ma == i) {\n break;\n }\n // \u4e8c\u3064\u306e\u30ce\u30fc\u30c9\u3092\u4ea4\u63db\n swap(nums[i], nums[ma]);\n // \u4e0b\u5411\u304d\u306b\u30d2\u30fc\u30d7\u5316\u3092\u30eb\u30fc\u30d7\n i = ma;\n }\n}\n\n/* \u30d2\u30fc\u30d7\u30bd\u30fc\u30c8 */\nvoid heapSort(vector&lt;int&gt; &amp;nums) {\n // \u30d2\u30fc\u30d7\u69cb\u7bc9\u64cd\u4f5c\uff1a\u8449\u4ee5\u5916\u306e\u3059\u3079\u3066\u306e\u30ce\u30fc\u30c9\u3092\u30d2\u30fc\u30d7\u5316\n for (int i = nums.size() / 2 - 1; i &gt;= 0; --i) {\n siftDown(nums, nums.size(), i);\n }\n // \u30d2\u30fc\u30d7\u304b\u3089\u6700\u5927\u8981\u7d20\u3092\u62bd\u51fa\u3057\u3001n-1\u56de\u7e70\u308a\u8fd4\u3059\n for (int i = nums.size() - 1; i &gt; 0; --i) {\n // \u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u3092\u6700\u53f3\u8449\u30ce\u30fc\u30c9\u3068\u4ea4\u63db\uff08\u6700\u521d\u306e\u8981\u7d20\u3092\u6700\u5f8c\u306e\u8981\u7d20\u3068\u4ea4\u63db\uff09\n swap(nums[0], nums[i]);\n // \u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u304b\u3089\u4e0a\u304b\u3089\u4e0b\u3078\u30d2\u30fc\u30d7\u5316\u3092\u958b\u59cb\n siftDown(nums, i, 0);\n }\n}\n</code></pre> heap_sort.java<pre><code>/* \u30d2\u30fc\u30d7\u306e\u9577\u3055\u306f n\u3001\u30ce\u30fc\u30c9 i \u304b\u3089\u4e0a\u304b\u3089\u4e0b\u3078\u30d2\u30fc\u30d7\u5316\u958b\u59cb */\nvoid siftDown(int[] nums, int n, int i) {\n while (true) {\n // i, l, r \u306e\u4e2d\u3067\u6700\u5927\u306e\u30ce\u30fc\u30c9\u3092\u5224\u5b9a\u3057\u3001ma \u3068\u3059\u308b\n int l = 2 * i + 1;\n int r = 2 * i + 2;\n int ma = i;\n if (l &lt; n &amp;&amp; nums[l] &gt; nums[ma])\n ma = l;\n if (r &lt; n &amp;&amp; nums[r] &gt; nums[ma])\n ma = r;\n // \u30ce\u30fc\u30c9 i \u304c\u6700\u5927\u3001\u307e\u305f\u306f\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 l, r \u304c\u7bc4\u56f2\u5916\u306e\u5834\u5408\u3001\u3055\u3089\u306a\u308b\u30d2\u30fc\u30d7\u5316\u306f\u4e0d\u8981\u3001\u30d6\u30ec\u30fc\u30af\n if (ma == i)\n break;\n // 2\u3064\u306e\u30ce\u30fc\u30c9\u3092\u4ea4\u63db\n int temp = nums[i];\n nums[i] = nums[ma];\n nums[ma] = temp;\n // \u4e0b\u5411\u304d\u306b\u30d2\u30fc\u30d7\u5316\u3092\u30eb\u30fc\u30d7\n i = ma;\n }\n}\n\n/* \u30d2\u30fc\u30d7\u30bd\u30fc\u30c8 */\nvoid heapSort(int[] nums) {\n // \u30d2\u30fc\u30d7\u69cb\u7bc9\u64cd\u4f5c: \u8449\u30ce\u30fc\u30c9\u4ee5\u5916\u306e\u3059\u3079\u3066\u306e\u30ce\u30fc\u30c9\u3092\u30d2\u30fc\u30d7\u5316\n for (int i = nums.length / 2 - 1; i &gt;= 0; i--) {\n siftDown(nums, nums.length, i);\n }\n // \u30d2\u30fc\u30d7\u304b\u3089\u6700\u5927\u8981\u7d20\u3092\u62bd\u51fa\u3057\u3001n-1 \u56de\u7e70\u308a\u8fd4\u3057\n for (int i = nums.length - 1; i &gt; 0; i--) {\n // \u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u3068\u6700\u3082\u53f3\u306e\u8449\u30ce\u30fc\u30c9\u3092\u4ea4\u63db\uff08\u6700\u521d\u306e\u8981\u7d20\u3068\u6700\u5f8c\u306e\u8981\u7d20\u3092\u4ea4\u63db\uff09\n int tmp = nums[0];\n nums[0] = nums[i];\n nums[i] = tmp;\n // \u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u304b\u3089\u4e0a\u304b\u3089\u4e0b\u3078\u30d2\u30fc\u30d7\u5316\u958b\u59cb\n siftDown(nums, i, 0);\n }\n}\n</code></pre> heap_sort.cs<pre><code>[class]{heap_sort}-[func]{SiftDown}\n\n[class]{heap_sort}-[func]{HeapSort}\n</code></pre> heap_sort.go<pre><code>[class]{}-[func]{siftDown}\n\n[class]{}-[func]{heapSort}\n</code></pre> heap_sort.swift<pre><code>[class]{}-[func]{siftDown}\n\n[class]{}-[func]{heapSort}\n</code></pre> heap_sort.js<pre><code>[class]{}-[func]{siftDown}\n\n[class]{}-[func]{heapSort}\n</code></pre> heap_sort.ts<pre><code>[class]{}-[func]{siftDown}\n\n[class]{}-[func]{heapSort}\n</code></pre> heap_sort.dart<pre><code>[class]{}-[func]{siftDown}\n\n[class]{}-[func]{heapSort}\n</code></pre> heap_sort.rs<pre><code>[class]{}-[func]{sift_down}\n\n[class]{}-[func]{heap_sort}\n</code></pre> heap_sort.c<pre><code>[class]{}-[func]{siftDown}\n\n[class]{}-[func]{heapSort}\n</code></pre> heap_sort.kt<pre><code>[class]{}-[func]{siftDown}\n\n[class]{}-[func]{heapSort}\n</code></pre> heap_sort.rb<pre><code>[class]{}-[func]{sift_down}\n\n[class]{}-[func]{heap_sort}\n</code></pre>"},{"location":"chapter_sorting/heap_sort/#1172","title":"11.7.2 \u00a0 \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u7279\u5fb4","text":"<ul> <li>\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(n \\log n)\\)\u3001\u975e\u9069\u5fdc\u30bd\u30fc\u30c8\uff1a\u30d2\u30fc\u30d7\u306e\u69cb\u7bc9\u306f \\(O(n)\\) \u6642\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u30d2\u30fc\u30d7\u304b\u3089\u6700\u5927\u8981\u7d20\u3092\u62bd\u51fa\u3059\u308b\u306b\u306f \\(O(\\log n)\\) \u6642\u9593\u304c\u304b\u304b\u308a\u3001\\(n - 1\\) \u30e9\u30a6\u30f3\u30c9\u30eb\u30fc\u30d7\u3057\u307e\u3059\u3002</li> <li>\u7a7a\u9593\u8a08\u7b97\u91cf\u306f \\(O(1)\\)\u3001\u30a4\u30f3\u30d7\u30ec\u30fc\u30b9\u30bd\u30fc\u30c8\uff1a\u3044\u304f\u3064\u304b\u306e\u30dd\u30a4\u30f3\u30bf\u5909\u6570\u304c \\(O(1)\\) \u7a7a\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u8981\u7d20\u306e\u4ea4\u63db\u3068\u30d2\u30fc\u30d7\u5316\u64cd\u4f5c\u306f\u5143\u306e\u914d\u5217\u3067\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002</li> <li>\u975e\u5b89\u5b9a\u30bd\u30fc\u30c8\uff1a\u30d2\u30fc\u30d7\u306e\u9802\u4e0a\u3068\u5e95\u90e8\u8981\u7d20\u306e\u4ea4\u63db\u4e2d\u306b\u3001\u7b49\u3057\u3044\u8981\u7d20\u306e\u76f8\u5bfe\u4f4d\u7f6e\u304c\u5909\u308f\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_sorting/insertion_sort/","title":"11.4 \u00a0 \u633f\u5165\u30bd\u30fc\u30c8","text":"<p>\u633f\u5165\u30bd\u30fc\u30c8\u306f\u3001\u30c8\u30e9\u30f3\u30d7\u306e\u30c7\u30c3\u30ad\u3092\u624b\u52d5\u3067\u30bd\u30fc\u30c8\u3059\u308b\u30d7\u30ed\u30bb\u30b9\u306b\u3088\u304f\u4f3c\u305f\u52d5\u4f5c\u3092\u3059\u308b\u30b7\u30f3\u30d7\u30eb\u306a\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u3059\u3002</p> <p>\u5177\u4f53\u7684\u306b\u306f\u3001\u672a\u30bd\u30fc\u30c8\u533a\u9593\u304b\u3089\u30d9\u30fc\u30b9\u8981\u7d20\u3092\u9078\u629e\u3057\u3001\u305d\u306e\u5de6\u5074\u306e\u30bd\u30fc\u30c8\u6e08\u307f\u533a\u9593\u306e\u8981\u7d20\u3068\u6bd4\u8f03\u3057\u3066\u3001\u8981\u7d20\u3092\u6b63\u3057\u3044\u4f4d\u7f6e\u306b\u633f\u5165\u3057\u307e\u3059\u3002</p> <p>\u4e0b\u56f3\u306f\u3001\u8981\u7d20\u304c\u914d\u5217\u306b\u633f\u5165\u3055\u308c\u308b\u65b9\u6cd5\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u30d9\u30fc\u30b9\u8981\u7d20\u3092<code>base</code>\u3068\u3059\u308b\u3068\u3001\u30bf\u30fc\u30b2\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304b\u3089<code>base</code>\u307e\u3067\u306e\u3059\u3079\u3066\u306e\u8981\u7d20\u3092\u53f3\u306b1\u3064\u305a\u3064\u30b7\u30d5\u30c8\u3057\u3001\u305d\u306e\u5f8c<code>base</code>\u3092\u30bf\u30fc\u30b2\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u5272\u308a\u5f53\u3066\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</p> <p></p> <p> \u56f3 11-6 \u00a0 Single insertion operation </p>"},{"location":"chapter_sorting/insertion_sort/#1141","title":"11.4.1 \u00a0 \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u30d7\u30ed\u30bb\u30b9","text":"<p>\u633f\u5165\u30bd\u30fc\u30c8\u306e\u5168\u4f53\u7684\u306a\u30d7\u30ed\u30bb\u30b9\u306f\u4e0b\u56f3\u306b\u793a\u3055\u308c\u307e\u3059\u3002</p> <ol> <li>\u914d\u5217\u306e\u6700\u521d\u306e\u8981\u7d20\u3092\u30bd\u30fc\u30c8\u6e08\u307f\u3068\u307f\u306a\u3057\u307e\u3059\u3002</li> <li>2\u756a\u76ee\u306e\u8981\u7d20\u3092<code>base</code>\u3068\u3057\u3066\u9078\u629e\u3057\u3001\u6b63\u3057\u3044\u4f4d\u7f6e\u306b\u633f\u5165\u3057\u3066\u3001\u6700\u521d\u306e2\u3064\u306e\u8981\u7d20\u3092\u30bd\u30fc\u30c8\u6e08\u307f\u306b\u3057\u307e\u3059\u3002</li> <li>3\u756a\u76ee\u306e\u8981\u7d20\u3092<code>base</code>\u3068\u3057\u3066\u9078\u629e\u3057\u3001\u6b63\u3057\u3044\u4f4d\u7f6e\u306b\u633f\u5165\u3057\u3066\u3001\u6700\u521d\u306e3\u3064\u306e\u8981\u7d20\u3092\u30bd\u30fc\u30c8\u6e08\u307f\u306b\u3057\u307e\u3059\u3002</li> <li>\u3053\u306e\u65b9\u6cd5\u3067\u7d9a\u884c\u3057\u3001\u6700\u5f8c\u306e\u53cd\u5fa9\u3067\u306f\u3001\u6700\u5f8c\u306e\u8981\u7d20\u3092<code>base</code>\u3068\u3057\u3066\u53d6\u308a\u3001\u6b63\u3057\u3044\u4f4d\u7f6e\u306b\u633f\u5165\u3057\u305f\u5f8c\u3001\u3059\u3079\u3066\u306e\u8981\u7d20\u304c\u30bd\u30fc\u30c8\u3055\u308c\u307e\u3059\u3002</li> </ol> <p></p> <p> \u56f3 11-7 \u00a0 Insertion sort process </p> <p>\u30b3\u30fc\u30c9\u4f8b\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby insertion_sort.py<pre><code>def insertion_sort(nums: list[int]):\n \"\"\"\u633f\u5165\u30bd\u30fc\u30c8\"\"\"\n # \u5916\u5074\u306e\u30eb\u30fc\u30d7\uff1a\u30bd\u30fc\u30c8\u6e08\u307f\u7bc4\u56f2\u306f [0, i-1]\n for i in range(1, len(nums)):\n base = nums[i]\n j = i - 1\n # \u5185\u5074\u306e\u30eb\u30fc\u30d7\uff1abase \u3092\u30bd\u30fc\u30c8\u6e08\u307f\u7bc4\u56f2 [0, i-1] \u306e\u6b63\u3057\u3044\u4f4d\u7f6e\u306b\u633f\u5165\n while j &gt;= 0 and nums[j] &gt; base:\n nums[j + 1] = nums[j] # nums[j] \u3092\u53f3\u306b1\u3064\u79fb\u52d5\n j -= 1\n nums[j + 1] = base # base \u3092\u6b63\u3057\u3044\u4f4d\u7f6e\u306b\u4ee3\u5165\n</code></pre> insertion_sort.cpp<pre><code>/* \u633f\u5165\u30bd\u30fc\u30c8 */\nvoid insertionSort(vector&lt;int&gt; &amp;nums) {\n // \u5916\u5074\u30eb\u30fc\u30d7\uff1a\u30bd\u30fc\u30c8\u6e08\u307f\u7bc4\u56f2\u306f[0, i-1]\n for (int i = 1; i &lt; nums.size(); i++) {\n int base = nums[i], j = i - 1;\n // \u5185\u5074\u30eb\u30fc\u30d7\uff1abase\u3092\u30bd\u30fc\u30c8\u6e08\u307f\u7bc4\u56f2[0, i-1]\u5185\u306e\u6b63\u3057\u3044\u4f4d\u7f6e\u306b\u633f\u5165\n while (j &gt;= 0 &amp;&amp; nums[j] &gt; base) {\n nums[j + 1] = nums[j]; // nums[j]\u3092\u4e00\u3064\u53f3\u306b\u79fb\u52d5\n j--;\n }\n nums[j + 1] = base; // base\u3092\u6b63\u3057\u3044\u4f4d\u7f6e\u306b\u4ee3\u5165\n }\n}\n</code></pre> insertion_sort.java<pre><code>/* \u633f\u5165\u30bd\u30fc\u30c8 */\nvoid insertionSort(int[] nums) {\n // \u5916\u5074\u30eb\u30fc\u30d7: \u30bd\u30fc\u30c8\u6e08\u307f\u7bc4\u56f2\u306f [0, i-1]\n for (int i = 1; i &lt; nums.length; i++) {\n int base = nums[i], j = i - 1;\n // \u5185\u5074\u30eb\u30fc\u30d7: base \u3092\u30bd\u30fc\u30c8\u6e08\u307f\u7bc4\u56f2 [0, i-1] \u306e\u6b63\u3057\u3044\u4f4d\u7f6e\u306b\u633f\u5165\n while (j &gt;= 0 &amp;&amp; nums[j] &gt; base) {\n nums[j + 1] = nums[j]; // nums[j] \u3092\u53f3\u306b1\u3064\u79fb\u52d5\n j--;\n }\n nums[j + 1] = base; // base \u3092\u6b63\u3057\u3044\u4f4d\u7f6e\u306b\u4ee3\u5165\n }\n}\n</code></pre> insertion_sort.cs<pre><code>[class]{insertion_sort}-[func]{InsertionSort}\n</code></pre> insertion_sort.go<pre><code>[class]{}-[func]{insertionSort}\n</code></pre> insertion_sort.swift<pre><code>[class]{}-[func]{insertionSort}\n</code></pre> insertion_sort.js<pre><code>[class]{}-[func]{insertionSort}\n</code></pre> insertion_sort.ts<pre><code>[class]{}-[func]{insertionSort}\n</code></pre> insertion_sort.dart<pre><code>[class]{}-[func]{insertionSort}\n</code></pre> insertion_sort.rs<pre><code>[class]{}-[func]{insertion_sort}\n</code></pre> insertion_sort.c<pre><code>[class]{}-[func]{insertionSort}\n</code></pre> insertion_sort.kt<pre><code>[class]{}-[func]{insertionSort}\n</code></pre> insertion_sort.rb<pre><code>[class]{}-[func]{insertion_sort}\n</code></pre>"},{"location":"chapter_sorting/insertion_sort/#1142","title":"11.4.2 \u00a0 \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u7279\u6027","text":"<ul> <li>\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n^2)\\)\u3001\u9069\u5fdc\u30bd\u30fc\u30c8\uff1a\u6700\u60aa\u306e\u5834\u5408\u3001\u5404\u633f\u5165\u64cd\u4f5c\u306b\u306f\\(n - 1\\)\u3001\\(n-2\\)\u3001...\u3001\\(2\\)\u3001\\(1\\)\u306e\u30eb\u30fc\u30d7\u304c\u5fc5\u8981\u3067\u3001\u5408\u8a08\u306f\\((n - 1) n / 2\\)\u3068\u306a\u308a\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n^2)\\)\u3067\u3059\u3002\u9806\u5e8f\u4ed8\u304d\u30c7\u30fc\u30bf\u306e\u5834\u5408\u3001\u633f\u5165\u64cd\u4f5c\u306f\u65e9\u671f\u306b\u7d42\u4e86\u3057\u307e\u3059\u3002\u5165\u529b\u914d\u5217\u304c\u5b8c\u5168\u306b\u9806\u5e8f\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u633f\u5165\u30bd\u30fc\u30c8\u306f\u6700\u826f\u6642\u9593\u8a08\u7b97\u91cf\\(O(n)\\)\u3092\u5b9f\u73fe\u3057\u307e\u3059\u3002</li> <li>\u7a7a\u9593\u8a08\u7b97\u91cf\u306f\\(O(1)\\)\u3001\u30a4\u30f3\u30d7\u30ec\u30fc\u30b9\u30bd\u30fc\u30c8\uff1a\u30dd\u30a4\u30f3\u30bf\\(i\\)\u3068\\(j\\)\u306f\u5b9a\u6570\u91cf\u306e\u8ffd\u52a0\u7a7a\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</li> <li>\u5b89\u5b9a\u30bd\u30fc\u30c8\uff1a\u633f\u5165\u64cd\u4f5c\u4e2d\u3001\u7b49\u3057\u3044\u8981\u7d20\u306e\u53f3\u5074\u306b\u8981\u7d20\u3092\u633f\u5165\u3057\u3001\u9806\u5e8f\u3092\u5909\u66f4\u3057\u307e\u305b\u3093\u3002</li> </ul>"},{"location":"chapter_sorting/insertion_sort/#1143","title":"11.4.3 \u00a0 \u633f\u5165\u30bd\u30fc\u30c8\u306e\u5229\u70b9","text":"<p>\u633f\u5165\u30bd\u30fc\u30c8\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n^2)\\)\u3067\u3001\u6b21\u306b\u5b66\u7fd2\u3059\u308b\u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n \\log n)\\)\u3067\u3059\u3002\u633f\u5165\u30bd\u30fc\u30c8\u306f\u3088\u308a\u9ad8\u3044\u6642\u9593\u8a08\u7b97\u91cf\u3092\u6301\u3061\u307e\u3059\u304c\u3001\u5c0f\u3055\u306a\u5165\u529b\u30b5\u30a4\u30ba\u3067\u306f\u901a\u5e38\u3088\u308a\u9ad8\u901f\u3067\u3059\u3002</p> <p>\u3053\u306e\u7d50\u8ad6\u306f\u7dda\u5f62\u63a2\u7d22\u3068\u4e8c\u5206\u63a2\u7d22\u306e\u7d50\u8ad6\u3068\u4f3c\u3066\u3044\u307e\u3059\u3002\u6642\u9593\u8a08\u7b97\u91cf\u304c\\(O(n \\log n)\\)\u3067\u5206\u5272\u7d71\u6cbb\u6226\u7565\u306b\u57fa\u3065\u304f\u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\u306a\u3069\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u3001\u591a\u304f\u306e\u5834\u5408\u3088\u308a\u591a\u304f\u306e\u5358\u4f4d\u64cd\u4f5c\u3092\u542b\u307f\u307e\u3059\u3002\u5c0f\u3055\u306a\u5165\u529b\u30b5\u30a4\u30ba\u3067\u306f\u3001\\(n^2\\)\u3068\\(n \\log n\\)\u306e\u6570\u5024\u306f\u8fd1\u304f\u3001\u8a08\u7b97\u91cf\u304c\u652f\u914d\u7684\u3067\u306a\u304f\u3001\u30e9\u30a6\u30f3\u30c9\u3042\u305f\u308a\u306e\u5358\u4f4d\u64cd\u4f5c\u6570\u304c\u6c7a\u5b9a\u7684\u306a\u5f79\u5272\u3092\u679c\u305f\u3057\u307e\u3059\u3002</p> <p>\u5b9f\u969b\u3001\u591a\u304f\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\uff08Java\u306a\u3069\uff09\u306f\u3001\u7d44\u307f\u8fbc\u307f\u30bd\u30fc\u30c8\u95a2\u6570\u5185\u3067\u633f\u5165\u30bd\u30fc\u30c8\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002\u4e00\u822c\u7684\u306a\u30a2\u30d7\u30ed\u30fc\u30c1\u306f\uff1a\u9577\u3044\u914d\u5217\u306b\u5bfe\u3057\u3066\u306f\u3001\u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\u306a\u3069\u306e\u5206\u5272\u7d71\u6cbb\u6226\u7565\u306b\u57fa\u3065\u304f\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u4f7f\u7528\u3057\u3001\u77ed\u3044\u914d\u5217\u306b\u5bfe\u3057\u3066\u306f\u633f\u5165\u30bd\u30fc\u30c8\u3092\u76f4\u63a5\u4f7f\u7528\u3057\u307e\u3059\u3002</p> <p>\u30d0\u30d6\u30eb\u30bd\u30fc\u30c8\u3001\u9078\u629e\u30bd\u30fc\u30c8\u3001\u633f\u5165\u30bd\u30fc\u30c8\u306f\u3059\u3079\u3066\u6642\u9593\u8a08\u7b97\u91cf\\(O(n^2)\\)\u3092\u6301\u3061\u307e\u3059\u304c\u3001\u5b9f\u969b\u306b\u306f\u3001\u633f\u5165\u30bd\u30fc\u30c8\u306f\u30d0\u30d6\u30eb\u30bd\u30fc\u30c8\u3084\u9078\u629e\u30bd\u30fc\u30c8\u3088\u308a\u3082\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u4e3b\u306a\u7406\u7531\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002</p> <ul> <li>\u30d0\u30d6\u30eb\u30bd\u30fc\u30c8\u306f\u8981\u7d20\u4ea4\u63db\u306b\u57fa\u3065\u304d\u3001\u4e00\u6642\u5909\u6570\u306e\u4f7f\u7528\u304c\u5fc5\u8981\u3067\u30013\u3064\u306e\u5358\u4f4d\u64cd\u4f5c\u3092\u542b\u307f\u307e\u3059\uff1b\u633f\u5165\u30bd\u30fc\u30c8\u306f\u8981\u7d20\u4ee3\u5165\u306b\u57fa\u3065\u304d\u30011\u3064\u306e\u5358\u4f4d\u64cd\u4f5c\u306e\u307f\u304c\u5fc5\u8981\u3067\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30d0\u30d6\u30eb\u30bd\u30fc\u30c8\u306e\u8a08\u7b97\u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9\u306f\u4e00\u822c\u7684\u306b\u633f\u5165\u30bd\u30fc\u30c8\u3088\u308a\u3082\u9ad8\u304f\u306a\u308a\u307e\u3059\u3002</li> <li>\u9078\u629e\u30bd\u30fc\u30c8\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f\u5e38\u306b\\(O(n^2)\\)\u3067\u3059\u3002\u90e8\u5206\u7684\u306b\u9806\u5e8f\u4ed8\u3051\u3089\u308c\u305f\u30c7\u30fc\u30bf\u306e\u30bb\u30c3\u30c8\u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u3001\u633f\u5165\u30bd\u30fc\u30c8\u306f\u901a\u5e38\u9078\u629e\u30bd\u30fc\u30c8\u3088\u308a\u3082\u52b9\u7387\u7684\u3067\u3059\u3002</li> <li>\u9078\u629e\u30bd\u30fc\u30c8\u306f\u4e0d\u5b89\u5b9a\u3067\u3001\u30de\u30eb\u30c1\u30ec\u30d9\u30eb\u30bd\u30fc\u30c8\u306b\u9069\u7528\u3067\u304d\u307e\u305b\u3093\u3002</li> </ul>"},{"location":"chapter_sorting/merge_sort/","title":"11.6 \u00a0 \u30de\u30fc\u30b8\u30bd\u30fc\u30c8","text":"<p>\u30de\u30fc\u30b8\u30bd\u30fc\u30c8\u306f\u5206\u5272\u7d71\u6cbb\u6226\u7565\u306b\u57fa\u3065\u304f\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u3001\u4e0b\u56f3\u306b\u793a\u3059\u300c\u5206\u5272\u300d\u3068\u300c\u30de\u30fc\u30b8\u300d\u30d5\u30a7\u30fc\u30ba\u3092\u542b\u307f\u307e\u3059\u3002</p> <ol> <li>\u5206\u5272\u30d5\u30a7\u30fc\u30ba\uff1a\u4e2d\u70b9\u304b\u3089\u914d\u5217\u3092\u518d\u5e30\u7684\u306b\u5206\u5272\u3057\u3001\u9577\u3044\u914d\u5217\u306e\u30bd\u30fc\u30c8\u554f\u984c\u3092\u3088\u308a\u77ed\u3044\u914d\u5217\u306b\u5909\u63db\u3057\u307e\u3059\u3002</li> <li>\u30de\u30fc\u30b8\u30d5\u30a7\u30fc\u30ba\uff1a\u30b5\u30d6\u914d\u5217\u306e\u9577\u3055\u304c1\u306b\u306a\u3063\u305f\u3068\u304d\u306b\u5206\u5272\u3092\u505c\u6b62\u3057\u3001\u305d\u306e\u5f8c\u30de\u30fc\u30b8\u3092\u958b\u59cb\u3057\u307e\u3059\u30022\u3064\u306e\u77ed\u3044\u30bd\u30fc\u30c8\u6e08\u307f\u914d\u5217\u3092\u9023\u7d9a\u7684\u306b\u3088\u308a\u9577\u3044\u30bd\u30fc\u30c8\u6e08\u307f\u914d\u5217\u306b\u30de\u30fc\u30b8\u3057\u3001\u30d7\u30ed\u30bb\u30b9\u304c\u5b8c\u4e86\u3059\u308b\u307e\u3067\u7d9a\u884c\u3057\u307e\u3059\u3002</li> </ol> <p></p> <p> \u56f3 11-10 \u00a0 The divide and merge phases of merge sort </p>"},{"location":"chapter_sorting/merge_sort/#1161","title":"11.6.1 \u00a0 \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u30ef\u30fc\u30af\u30d5\u30ed\u30fc","text":"<p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u300c\u5206\u5272\u30d5\u30a7\u30fc\u30ba\u300d\u306f\u4e2d\u70b9\u304b\u3089\u914d\u5217\u3092\u4e0a\u304b\u3089\u4e0b\u306b2\u3064\u306e\u30b5\u30d6\u914d\u5217\u306b\u518d\u5e30\u7684\u306b\u5206\u5272\u3057\u307e\u3059\u3002</p> <ol> <li>\u4e2d\u70b9<code>mid</code>\u3092\u8a08\u7b97\u3057\u3001\u5de6\u30b5\u30d6\u914d\u5217\uff08\u533a\u9593<code>[left, mid]</code>\uff09\u3068\u53f3\u30b5\u30d6\u914d\u5217\uff08\u533a\u9593<code>[mid + 1, right]</code>\uff09\u3092\u518d\u5e30\u7684\u306b\u5206\u5272\u3057\u307e\u3059\u3002</li> <li>\u30b5\u30d6\u914d\u5217\u306e\u9577\u3055\u304c1\u306b\u306a\u308b\u307e\u3067\u30b9\u30c6\u30c3\u30d7<code>1.</code>\u3092\u518d\u5e30\u7684\u306b\u7d9a\u884c\u3057\u3001\u305d\u306e\u5f8c\u505c\u6b62\u3057\u307e\u3059\u3002</li> </ol> <p>\u300c\u30de\u30fc\u30b8\u30d5\u30a7\u30fc\u30ba\u300d\u306f\u5de6\u3068\u53f3\u306e\u30b5\u30d6\u914d\u5217\u3092\u4e0b\u304b\u3089\u4e0a\u306b\u30bd\u30fc\u30c8\u6e08\u307f\u914d\u5217\u306b\u7d50\u5408\u3057\u307e\u3059\u3002\u91cd\u8981\u306a\u306e\u306f\u3001\u30de\u30fc\u30b8\u304c\u9577\u30551\u306e\u30b5\u30d6\u914d\u5217\u304b\u3089\u958b\u59cb\u3055\u308c\u3001\u30de\u30fc\u30b8\u30d5\u30a7\u30fc\u30ba\u4e2d\u306b\u5404\u30b5\u30d6\u914d\u5217\u304c\u30bd\u30fc\u30c8\u3055\u308c\u308b\u3053\u3068\u3067\u3059\u3002</p> &lt;1&gt;&lt;2&gt;&lt;3&gt;&lt;4&gt;&lt;5&gt;&lt;6&gt;&lt;7&gt;&lt;8&gt;&lt;9&gt;&lt;10&gt; <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p> \u56f3 11-11 \u00a0 Merge sort process </p> <p>\u30de\u30fc\u30b8\u30bd\u30fc\u30c8\u306e\u518d\u5e30\u9806\u5e8f\u306f\u4e8c\u5206\u6728\u306e\u5f8c\u9806\u6a2a\u65ad\u3068\u4e00\u81f4\u3059\u308b\u3053\u3068\u304c\u89b3\u5bdf\u3067\u304d\u307e\u3059\u3002</p> <ul> <li>\u5f8c\u9806\u6a2a\u65ad\uff1a\u307e\u305a\u5de6\u306e\u30b5\u30d6\u30c4\u30ea\u30fc\u3092\u518d\u5e30\u7684\u306b\u6a2a\u65ad\u3057\u3001\u6b21\u306b\u53f3\u306e\u30b5\u30d6\u30c4\u30ea\u30fc\u3092\u6a2a\u65ad\u3057\u3001\u6700\u5f8c\u306b\u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u3092\u51e6\u7406\u3057\u307e\u3059\u3002</li> <li>\u30de\u30fc\u30b8\u30bd\u30fc\u30c8\uff1a\u307e\u305a\u5de6\u306e\u30b5\u30d6\u914d\u5217\u3092\u518d\u5e30\u7684\u306b\u51e6\u7406\u3057\u3001\u6b21\u306b\u53f3\u306e\u30b5\u30d6\u914d\u5217\u3092\u51e6\u7406\u3057\u3001\u6700\u5f8c\u306b\u30de\u30fc\u30b8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002</li> </ul> <p>\u30de\u30fc\u30b8\u30bd\u30fc\u30c8\u306e\u5b9f\u88c5\u306f\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u306b\u793a\u3055\u308c\u307e\u3059\u3002<code>nums</code>\u3067\u30de\u30fc\u30b8\u3055\u308c\u308b\u533a\u9593\u306f<code>[left, right]</code>\u3067\u3001<code>tmp</code>\u306e\u5bfe\u5fdc\u3059\u308b\u533a\u9593\u306f<code>[0, right - left]</code>\u3067\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby merge_sort.py<pre><code>def merge(nums: list[int], left: int, mid: int, right: int):\n \"\"\"\u5de6\u30b5\u30d6\u914d\u5217\u3068\u53f3\u30b5\u30d6\u914d\u5217\u3092\u30de\u30fc\u30b8\"\"\"\n # \u5de6\u30b5\u30d6\u914d\u5217\u533a\u9593\u306f [left, mid]\u3001\u53f3\u30b5\u30d6\u914d\u5217\u533a\u9593\u306f [mid+1, right]\n # \u4e00\u6642\u914d\u5217 tmp \u3092\u4f5c\u6210\u3057\u3066\u30de\u30fc\u30b8\u7d50\u679c\u3092\u683c\u7d0d\n tmp = [0] * (right - left + 1)\n # \u5de6\u53f3\u30b5\u30d6\u914d\u5217\u306e\u958b\u59cb\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u521d\u671f\u5316\n i, j, k = left, mid + 1, 0\n # \u4e21\u65b9\u306e\u30b5\u30d6\u914d\u5217\u306b\u8981\u7d20\u304c\u6b8b\u3063\u3066\u3044\u308b\u9593\u3001\u3088\u308a\u5c0f\u3055\u3044\u8981\u7d20\u3092\u4e00\u6642\u914d\u5217\u306b\u30b3\u30d4\u30fc\n while i &lt;= mid and j &lt;= right:\n if nums[i] &lt;= nums[j]:\n tmp[k] = nums[i]\n i += 1\n else:\n tmp[k] = nums[j]\n j += 1\n k += 1\n # \u6b8b\u3063\u305f\u5de6\u53f3\u30b5\u30d6\u914d\u5217\u306e\u8981\u7d20\u3092\u4e00\u6642\u914d\u5217\u306b\u30b3\u30d4\u30fc\n while i &lt;= mid:\n tmp[k] = nums[i]\n i += 1\n k += 1\n while j &lt;= right:\n tmp[k] = nums[j]\n j += 1\n k += 1\n # \u4e00\u6642\u914d\u5217 tmp \u306e\u8981\u7d20\u3092\u5143\u306e\u914d\u5217 nums \u306e\u5bfe\u5fdc\u3059\u308b\u533a\u9593\u306b\u30b3\u30d4\u30fc\u30d0\u30c3\u30af\n for k in range(0, len(tmp)):\n nums[left + k] = tmp[k]\n\ndef merge_sort(nums: list[int], left: int, right: int):\n \"\"\"\u30de\u30fc\u30b8\u30bd\u30fc\u30c8\"\"\"\n # \u7d42\u4e86\u6761\u4ef6\n if left &gt;= right:\n return # \u30b5\u30d6\u914d\u5217\u306e\u9577\u3055\u304c1\u306e\u3068\u304d\u306b\u518d\u5e30\u3092\u7d42\u4e86\n # \u5206\u5272\u6bb5\u968e\n mid = left + (right - left) // 2 # \u4e2d\u70b9\u3092\u8a08\u7b97\n merge_sort(nums, left, mid) # \u5de6\u30b5\u30d6\u914d\u5217\u3092\u518d\u5e30\u7684\u306b\u51e6\u7406\n merge_sort(nums, mid + 1, right) # \u53f3\u30b5\u30d6\u914d\u5217\u3092\u518d\u5e30\u7684\u306b\u51e6\u7406\n # \u30de\u30fc\u30b8\u6bb5\u968e\n merge(nums, left, mid, right)\n</code></pre> merge_sort.cpp<pre><code>/* \u5de6\u30b5\u30d6\u914d\u5217\u3068\u53f3\u30b5\u30d6\u914d\u5217\u3092\u30de\u30fc\u30b8 */\nvoid merge(vector&lt;int&gt; &amp;nums, int left, int mid, int right) {\n // \u5de6\u30b5\u30d6\u914d\u5217\u306e\u533a\u9593\u306f[left, mid]\u3001\u53f3\u30b5\u30d6\u914d\u5217\u306e\u533a\u9593\u306f[mid+1, right]\n // \u30de\u30fc\u30b8\u7d50\u679c\u3092\u4fdd\u5b58\u3059\u308b\u4e00\u6642\u914d\u5217tmp\u3092\u4f5c\u6210\n vector&lt;int&gt; tmp(right - left + 1);\n // \u5de6\u53f3\u30b5\u30d6\u914d\u5217\u306e\u958b\u59cb\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u521d\u671f\u5316\n int i = left, j = mid + 1, k = 0;\n // \u4e21\u30b5\u30d6\u914d\u5217\u306b\u8981\u7d20\u304c\u3042\u308b\u9593\u3001\u5c0f\u3055\u3044\u65b9\u306e\u8981\u7d20\u3092\u4e00\u6642\u914d\u5217\u306b\u30b3\u30d4\u30fc\n while (i &lt;= mid &amp;&amp; j &lt;= right) {\n if (nums[i] &lt;= nums[j])\n tmp[k++] = nums[i++];\n else\n tmp[k++] = nums[j++];\n }\n // \u5de6\u53f3\u30b5\u30d6\u914d\u5217\u306e\u6b8b\u308a\u306e\u8981\u7d20\u3092\u4e00\u6642\u914d\u5217\u306b\u30b3\u30d4\u30fc\n while (i &lt;= mid) {\n tmp[k++] = nums[i++];\n }\n while (j &lt;= right) {\n tmp[k++] = nums[j++];\n }\n // \u4e00\u6642\u914d\u5217tmp\u306e\u8981\u7d20\u3092\u5143\u306e\u914d\u5217nums\u306e\u5bfe\u5fdc\u3059\u308b\u533a\u9593\u306b\u30b3\u30d4\u30fc\n for (k = 0; k &lt; tmp.size(); k++) {\n nums[left + k] = tmp[k];\n }\n}\n\n/* \u30de\u30fc\u30b8\u30bd\u30fc\u30c8 */\nvoid mergeSort(vector&lt;int&gt; &amp;nums, int left, int right) {\n // \u7d42\u4e86\u6761\u4ef6\n if (left &gt;= right)\n return; // \u30b5\u30d6\u914d\u5217\u306e\u9577\u3055\u304c1\u306e\u6642\u3001\u518d\u5e30\u3092\u7d42\u4e86\n // \u5206\u5272\u6bb5\u968e\n int mid = left + (right - left) / 2; // \u4e2d\u70b9\u3092\u8a08\u7b97\n mergeSort(nums, left, mid); // \u5de6\u30b5\u30d6\u914d\u5217\u3092\u518d\u5e30\u7684\u306b\u51e6\u7406\n mergeSort(nums, mid + 1, right); // \u53f3\u30b5\u30d6\u914d\u5217\u3092\u518d\u5e30\u7684\u306b\u51e6\u7406\n // \u30de\u30fc\u30b8\u6bb5\u968e\n merge(nums, left, mid, right);\n}\n</code></pre> merge_sort.java<pre><code>/* \u5de6\u90e8\u5206\u914d\u5217\u3068\u53f3\u90e8\u5206\u914d\u5217\u3092\u30de\u30fc\u30b8 */\nvoid merge(int[] nums, int left, int mid, int right) {\n // \u5de6\u90e8\u5206\u914d\u5217\u533a\u9593\u306f [left, mid]\u3001\u53f3\u90e8\u5206\u914d\u5217\u533a\u9593\u306f [mid+1, right]\n // \u4e00\u6642\u914d\u5217 tmp \u3092\u4f5c\u6210\u3057\u3066\u30de\u30fc\u30b8\u7d50\u679c\u3092\u683c\u7d0d\n int[] tmp = new int[right - left + 1];\n // \u5de6\u53f3\u90e8\u5206\u914d\u5217\u306e\u958b\u59cb\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u521d\u671f\u5316\n int i = left, j = mid + 1, k = 0;\n // \u4e21\u90e8\u5206\u914d\u5217\u306b\u307e\u3060\u8981\u7d20\u304c\u3042\u308b\u9593\u3001\u6bd4\u8f03\u3057\u3066\u3088\u308a\u5c0f\u3055\u3044\u8981\u7d20\u3092\u4e00\u6642\u914d\u5217\u306b\u30b3\u30d4\u30fc\n while (i &lt;= mid &amp;&amp; j &lt;= right) {\n if (nums[i] &lt;= nums[j])\n tmp[k++] = nums[i++];\n else\n tmp[k++] = nums[j++];\n }\n // \u5de6\u53f3\u90e8\u5206\u914d\u5217\u306e\u6b8b\u308a\u306e\u8981\u7d20\u3092\u4e00\u6642\u914d\u5217\u306b\u30b3\u30d4\u30fc\n while (i &lt;= mid) {\n tmp[k++] = nums[i++];\n }\n while (j &lt;= right) {\n tmp[k++] = nums[j++];\n }\n // \u4e00\u6642\u914d\u5217 tmp \u306e\u8981\u7d20\u3092\u5143\u306e\u914d\u5217 nums \u306e\u5bfe\u5fdc\u3059\u308b\u533a\u9593\u306b\u30b3\u30d4\u30fc\u30d0\u30c3\u30af\n for (k = 0; k &lt; tmp.length; k++) {\n nums[left + k] = tmp[k];\n }\n}\n\n/* \u30de\u30fc\u30b8\u30bd\u30fc\u30c8 */\nvoid mergeSort(int[] nums, int left, int right) {\n // \u7d42\u4e86\u6761\u4ef6\n if (left &gt;= right)\n return; // \u90e8\u5206\u914d\u5217\u306e\u9577\u3055\u304c 1 \u306e\u3068\u304d\u518d\u5e30\u3092\u7d42\u4e86\n // \u5206\u5272\u6bb5\u968e\n int mid = left + (right - left) / 2; // \u4e2d\u70b9\u3092\u8a08\u7b97\n mergeSort(nums, left, mid); // \u5de6\u90e8\u5206\u914d\u5217\u3092\u518d\u5e30\u7684\u306b\u51e6\u7406\n mergeSort(nums, mid + 1, right); // \u53f3\u90e8\u5206\u914d\u5217\u3092\u518d\u5e30\u7684\u306b\u51e6\u7406\n // \u30de\u30fc\u30b8\u6bb5\u968e\n merge(nums, left, mid, right);\n}\n</code></pre> merge_sort.cs<pre><code>[class]{merge_sort}-[func]{Merge}\n\n[class]{merge_sort}-[func]{MergeSort}\n</code></pre> merge_sort.go<pre><code>[class]{}-[func]{merge}\n\n[class]{}-[func]{mergeSort}\n</code></pre> merge_sort.swift<pre><code>[class]{}-[func]{merge}\n\n[class]{}-[func]{mergeSort}\n</code></pre> merge_sort.js<pre><code>[class]{}-[func]{merge}\n\n[class]{}-[func]{mergeSort}\n</code></pre> merge_sort.ts<pre><code>[class]{}-[func]{merge}\n\n[class]{}-[func]{mergeSort}\n</code></pre> merge_sort.dart<pre><code>[class]{}-[func]{merge}\n\n[class]{}-[func]{mergeSort}\n</code></pre> merge_sort.rs<pre><code>[class]{}-[func]{merge}\n\n[class]{}-[func]{merge_sort}\n</code></pre> merge_sort.c<pre><code>[class]{}-[func]{merge}\n\n[class]{}-[func]{mergeSort}\n</code></pre> merge_sort.kt<pre><code>[class]{}-[func]{merge}\n\n[class]{}-[func]{mergeSort}\n</code></pre> merge_sort.rb<pre><code>[class]{}-[func]{merge}\n\n[class]{}-[func]{merge_sort}\n</code></pre>"},{"location":"chapter_sorting/merge_sort/#1162","title":"11.6.2 \u00a0 \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u7279\u6027","text":"<ul> <li>\\(O(n \\log n)\\)\u306e\u6642\u9593\u8a08\u7b97\u91cf\u3001\u975e\u9069\u5fdc\u30bd\u30fc\u30c8\uff1a\u5206\u5272\u306b\u3088\u308a\u9ad8\u3055\\(\\log n\\)\u306e\u518d\u5e30\u30c4\u30ea\u30fc\u304c\u4f5c\u6210\u3055\u308c\u3001\u5404\u5c64\u3067\u5408\u8a08\\(n\\)\u56de\u306e\u64cd\u4f5c\u3092\u30de\u30fc\u30b8\u3057\u3001\u5168\u4f53\u7684\u306a\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n \\log n)\\)\u3068\u306a\u308a\u307e\u3059\u3002</li> <li>\\(O(n)\\)\u306e\u7a7a\u9593\u8a08\u7b97\u91cf\u3001\u975e\u30a4\u30f3\u30d7\u30ec\u30fc\u30b9\u30bd\u30fc\u30c8\uff1a\u518d\u5e30\u6df1\u5ea6\u306f\\(\\log n\\)\u3067\u3001\\(O(\\log n)\\)\u306e\u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u30de\u30fc\u30b8\u64cd\u4f5c\u306b\u306f\u88dc\u52a9\u914d\u5217\u304c\u5fc5\u8981\u3067\u3001\u8ffd\u52a0\u306e\\(O(n)\\)\u7a7a\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</li> <li>\u5b89\u5b9a\u30bd\u30fc\u30c8\uff1a\u30de\u30fc\u30b8\u30d7\u30ed\u30bb\u30b9\u4e2d\u3001\u7b49\u3057\u3044\u8981\u7d20\u306e\u9806\u5e8f\u306f\u5909\u66f4\u3055\u308c\u307e\u305b\u3093\u3002</li> </ul>"},{"location":"chapter_sorting/merge_sort/#1163","title":"11.6.3 \u00a0 \u9023\u7d50\u30ea\u30b9\u30c8\u306e\u30bd\u30fc\u30c8","text":"<p>\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u5834\u5408\u3001\u30de\u30fc\u30b8\u30bd\u30fc\u30c8\u306f\u4ed6\u306e\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3088\u308a\u3082\u5927\u304d\u306a\u5229\u70b9\u304c\u3042\u308a\u307e\u3059\u3002\u9023\u7d50\u30ea\u30b9\u30c8\u30bd\u30fc\u30c8\u30bf\u30b9\u30af\u306e\u7a7a\u9593\u8a08\u7b97\u91cf\u3092\\(O(1)\\)\u306b\u6700\u9069\u5316\u3067\u304d\u307e\u3059\u3002</p> <ul> <li>\u5206\u5272\u30d5\u30a7\u30fc\u30ba\uff1a\u300c\u518d\u5e30\u300d\u306e\u4ee3\u308f\u308a\u306b\u300c\u53cd\u5fa9\u300d\u3092\u4f7f\u7528\u3057\u3066\u9023\u7d50\u30ea\u30b9\u30c8\u5206\u5272\u4f5c\u696d\u3092\u5b9f\u884c\u3067\u304d\u308b\u305f\u3081\u3001\u518d\u5e30\u3067\u4f7f\u7528\u3055\u308c\u308b\u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593\u3092\u7bc0\u7d04\u3067\u304d\u307e\u3059\u3002</li> <li>\u30de\u30fc\u30b8\u30d5\u30a7\u30fc\u30ba\uff1a\u9023\u7d50\u30ea\u30b9\u30c8\u3067\u306f\u3001\u30ce\u30fc\u30c9\u306e\u633f\u5165\u3068\u524a\u9664\u64cd\u4f5c\u306f\u53c2\u7167\uff08\u30dd\u30a4\u30f3\u30bf\uff09\u3092\u5909\u66f4\u3059\u308b\u3053\u3068\u3067\u5b9f\u73fe\u3067\u304d\u308b\u305f\u3081\u3001\u30de\u30fc\u30b8\u30d5\u30a7\u30fc\u30ba\uff082\u3064\u306e\u77ed\u3044\u9806\u5e8f\u4ed8\u304d\u30ea\u30b9\u30c8\u30921\u3064\u306e\u9577\u3044\u9806\u5e8f\u4ed8\u304d\u30ea\u30b9\u30c8\u306b\u7d50\u5408\uff09\u4e2d\u306b\u8ffd\u52a0\u306e\u30ea\u30b9\u30c8\u3092\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u305b\u3093\u3002</li> </ul> <p>\u5b9f\u88c5\u306e\u8a73\u7d30\u306f\u6bd4\u8f03\u7684\u8907\u96d1\u3067\u3001\u8208\u5473\u306e\u3042\u308b\u8aad\u8005\u306f\u95a2\u9023\u8cc7\u6599\u3092\u53c2\u7167\u3057\u3066\u5b66\u7fd2\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p>"},{"location":"chapter_sorting/quick_sort/","title":"11.5 \u00a0 \u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8","text":"<p>\u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\u306f\u5206\u5272\u7d71\u6cbb\u6226\u7565\u306b\u57fa\u3065\u304f\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u3001\u305d\u306e\u52b9\u7387\u6027\u3068\u5e45\u5e83\u3044\u5fdc\u7528\u3067\u77e5\u3089\u308c\u3066\u3044\u307e\u3059\u3002</p> <p>\u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\u306e\u30b3\u30a2\u64cd\u4f5c\u306f\u300c\u30d4\u30dc\u30c3\u30c8\u5206\u5272\u300d\u3067\u3001\u914d\u5217\u304b\u3089\u8981\u7d20\u3092\u300c\u30d4\u30dc\u30c3\u30c8\u300d\u3068\u3057\u3066\u9078\u629e\u3057\u3001\u30d4\u30dc\u30c3\u30c8\u3088\u308a\u5c0f\u3055\u3044\u3059\u3079\u3066\u306e\u8981\u7d20\u3092\u305d\u306e\u5de6\u5074\u306b\u79fb\u52d5\u3057\u3001\u30d4\u30dc\u30c3\u30c8\u3088\u308a\u5927\u304d\u3044\u3059\u3079\u3066\u306e\u8981\u7d20\u3092\u305d\u306e\u53f3\u5074\u306b\u79fb\u52d5\u3059\u308b\u3053\u3068\u3092\u76ee\u7684\u3068\u3057\u3066\u3044\u307e\u3059\u3002\u5177\u4f53\u7684\u306b\u3001\u30d4\u30dc\u30c3\u30c8\u5206\u5272\u306e\u30d7\u30ed\u30bb\u30b9\u306f\u4e0b\u56f3\u306b\u793a\u3055\u308c\u307e\u3059\u3002</p> <ol> <li>\u914d\u5217\u306e\u6700\u3082\u5de6\u306e\u8981\u7d20\u3092\u30d4\u30dc\u30c3\u30c8\u3068\u3057\u3066\u9078\u629e\u3057\u30012\u3064\u306e\u30dd\u30a4\u30f3\u30bf<code>i</code>\u3068<code>j</code>\u3092\u521d\u671f\u5316\u3057\u3066\u914d\u5217\u306e\u4e21\u7aef\u3092\u305d\u308c\u305e\u308c\u6307\u3059\u3088\u3046\u306b\u3057\u307e\u3059\u3002</li> <li>\u5404\u30e9\u30a6\u30f3\u30c9\u3067<code>i</code>\uff08<code>j</code>\uff09\u3092\u4f7f\u7528\u3057\u3066\u30d4\u30dc\u30c3\u30c8\u3088\u308a\u5927\u304d\u3044\uff08\u5c0f\u3055\u3044\uff09\u6700\u521d\u306e\u8981\u7d20\u3092\u63a2\u7d22\u3057\u3001\u6b21\u306b\u3053\u308c\u30892\u3064\u306e\u8981\u7d20\u3092\u4ea4\u63db\u3059\u308b\u30eb\u30fc\u30d7\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002</li> <li><code>i</code>\u3068<code>j</code>\u304c\u51fa\u4f1a\u3046\u307e\u3067\u30b9\u30c6\u30c3\u30d7<code>2.</code>\u3092\u7e70\u308a\u8fd4\u3057\u3001\u6700\u5f8c\u306b\u30d4\u30dc\u30c3\u30c8\u30922\u3064\u306e\u30b5\u30d6\u914d\u5217\u306e\u5883\u754c\u306b\u4ea4\u63db\u3057\u307e\u3059\u3002</li> </ol> &lt;1&gt;&lt;2&gt;&lt;3&gt;&lt;4&gt;&lt;5&gt;&lt;6&gt;&lt;7&gt;&lt;8&gt;&lt;9&gt; <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p> \u56f3 11-8 \u00a0 Pivot division process </p> <p>\u30d4\u30dc\u30c3\u30c8\u5206\u5272\u5f8c\u3001\u5143\u306e\u914d\u5217\u306f3\u3064\u306e\u90e8\u5206\u306b\u5206\u5272\u3055\u308c\u307e\u3059\uff1a\u5de6\u30b5\u30d6\u914d\u5217\u3001\u30d4\u30dc\u30c3\u30c8\u3001\u53f3\u30b5\u30d6\u914d\u5217\u3067\u3001\u300c\u5de6\u30b5\u30d6\u914d\u5217\u306e\u4efb\u610f\u306e\u8981\u7d20 \\(\\leq\\) \u30d4\u30dc\u30c3\u30c8 \\(\\leq\\) \u53f3\u30b5\u30d6\u914d\u5217\u306e\u4efb\u610f\u306e\u8981\u7d20\u300d\u3092\u6e80\u305f\u3057\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u3053\u308c\u30892\u3064\u306e\u30b5\u30d6\u914d\u5217\u306e\u307f\u3092\u30bd\u30fc\u30c8\u3059\u308c\u3070\u3088\u3044\u306e\u3067\u3059\u3002</p> <p>\u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\u306e\u5206\u5272\u7d71\u6cbb\u6226\u7565</p> <p>\u30d4\u30dc\u30c3\u30c8\u5206\u5272\u306e\u672c\u8cea\u306f\u3001\u3088\u308a\u9577\u3044\u914d\u5217\u306e\u30bd\u30fc\u30c8\u554f\u984c\u3092\u3088\u308a\u77ed\u30442\u3064\u306e\u914d\u5217\u306b\u7c21\u7d20\u5316\u3059\u308b\u3053\u3068\u3067\u3059\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby quick_sort.py<pre><code>def partition(self, nums: list[int], left: int, right: int) -&gt; int:\n \"\"\"\u5206\u5272\"\"\"\n # nums[left] \u3092\u30d4\u30dc\u30c3\u30c8\u3068\u3057\u3066\u4f7f\u7528\n i, j = left, right\n while i &lt; j:\n while i &lt; j and nums[j] &gt;= nums[left]:\n j -= 1 # \u53f3\u304b\u3089\u5de6\u3078\u30d4\u30dc\u30c3\u30c8\u3088\u308a\u5c0f\u3055\u3044\u6700\u521d\u306e\u8981\u7d20\u3092\u63a2\u3059\n while i &lt; j and nums[i] &lt;= nums[left]:\n i += 1 # \u5de6\u304b\u3089\u53f3\u3078\u30d4\u30dc\u30c3\u30c8\u3088\u308a\u5927\u304d\u3044\u6700\u521d\u306e\u8981\u7d20\u3092\u63a2\u3059\n # \u8981\u7d20\u3092\u4ea4\u63db\n nums[i], nums[j] = nums[j], nums[i]\n # \u30d4\u30dc\u30c3\u30c8\u30922\u3064\u306e\u30b5\u30d6\u914d\u5217\u306e\u5883\u754c\u306b\u4ea4\u63db\n nums[i], nums[left] = nums[left], nums[i]\n return i # \u30d4\u30dc\u30c3\u30c8\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u3059\n</code></pre> quick_sort.cpp<pre><code>/* \u5206\u5272 */\nint partition(vector&lt;int&gt; &amp;nums, int left, int right) {\n // nums[left]\u3092\u30d4\u30dc\u30c3\u30c8\u3068\u3057\u3066\u4f7f\u7528\n int i = left, j = right;\n while (i &lt; j) {\n while (i &lt; j &amp;&amp; nums[j] &gt;= nums[left])\n j--; // \u53f3\u304b\u3089\u5de6\u3078\u30d4\u30dc\u30c3\u30c8\u3088\u308a\u5c0f\u3055\u3044\u6700\u521d\u306e\u8981\u7d20\u3092\u691c\u7d22\n while (i &lt; j &amp;&amp; nums[i] &lt;= nums[left])\n i++; // \u5de6\u304b\u3089\u53f3\u3078\u30d4\u30dc\u30c3\u30c8\u3088\u308a\u5927\u304d\u3044\u6700\u521d\u306e\u8981\u7d20\u3092\u691c\u7d22\n swap(nums, i, j); // \u3053\u308c\u3089\u4e8c\u3064\u306e\u8981\u7d20\u3092\u4ea4\u63db\n }\n swap(nums, i, left); // \u30d4\u30dc\u30c3\u30c8\u3092\u4e8c\u3064\u306e\u30b5\u30d6\u914d\u5217\u306e\u5883\u754c\u306b\u4ea4\u63db\n return i; // \u30d4\u30dc\u30c3\u30c8\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u3059\n}\n</code></pre> quick_sort.java<pre><code>/* \u8981\u7d20\u3092\u4ea4\u63db */\nvoid swap(int[] nums, int i, int j) {\n int tmp = nums[i];\n nums[i] = nums[j];\n nums[j] = tmp;\n}\n\n/* \u5206\u5272 */\nint partition(int[] nums, int left, int right) {\n // nums[left] \u3092\u57fa\u6e96\u5024\u3068\u3057\u3066\u4f7f\u7528\n int i = left, j = right;\n while (i &lt; j) {\n while (i &lt; j &amp;&amp; nums[j] &gt;= nums[left])\n j--; // \u53f3\u304b\u3089\u5de6\u3078\u3001\u57fa\u6e96\u5024\u3088\u308a\u5c0f\u3055\u3044\u6700\u521d\u306e\u8981\u7d20\u3092\u691c\u7d22\n while (i &lt; j &amp;&amp; nums[i] &lt;= nums[left])\n i++; // \u5de6\u304b\u3089\u53f3\u3078\u3001\u57fa\u6e96\u5024\u3088\u308a\u5927\u304d\u3044\u6700\u521d\u306e\u8981\u7d20\u3092\u691c\u7d22\n swap(nums, i, j); // \u3053\u308c\u30892\u3064\u306e\u8981\u7d20\u3092\u4ea4\u63db\n }\n swap(nums, i, left); // \u57fa\u6e96\u5024\u30922\u3064\u306e\u90e8\u5206\u914d\u5217\u306e\u5883\u754c\u306b\u4ea4\u63db\n return i; // \u57fa\u6e96\u5024\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u3059\n}\n</code></pre> quick_sort.cs<pre><code>[class]{quickSort}-[func]{Swap}\n\n[class]{quickSort}-[func]{Partition}\n</code></pre> quick_sort.go<pre><code>[class]{quickSort}-[func]{partition}\n</code></pre> quick_sort.swift<pre><code>[class]{}-[func]{partition}\n</code></pre> quick_sort.js<pre><code>[class]{QuickSort}-[func]{swap}\n\n[class]{QuickSort}-[func]{partition}\n</code></pre> quick_sort.ts<pre><code>[class]{QuickSort}-[func]{swap}\n\n[class]{QuickSort}-[func]{partition}\n</code></pre> quick_sort.dart<pre><code>[class]{QuickSort}-[func]{_swap}\n\n[class]{QuickSort}-[func]{_partition}\n</code></pre> quick_sort.rs<pre><code>[class]{QuickSort}-[func]{partition}\n</code></pre> quick_sort.c<pre><code>[class]{}-[func]{swap}\n\n[class]{}-[func]{partition}\n</code></pre> quick_sort.kt<pre><code>[class]{}-[func]{swap}\n\n[class]{}-[func]{partition}\n</code></pre> quick_sort.rb<pre><code>[class]{QuickSort}-[func]{partition}\n</code></pre>"},{"location":"chapter_sorting/quick_sort/#1151","title":"11.5.1 \u00a0 \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u30d7\u30ed\u30bb\u30b9","text":"<p>\u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\u306e\u5168\u4f53\u7684\u306a\u30d7\u30ed\u30bb\u30b9\u306f\u4e0b\u56f3\u306b\u793a\u3055\u308c\u307e\u3059\u3002</p> <ol> <li>\u307e\u305a\u3001\u5143\u306e\u914d\u5217\u306b\u5bfe\u3057\u3066\u300c\u30d4\u30dc\u30c3\u30c8\u5206\u5272\u300d\u3092\u5b9f\u884c\u3057\u3001\u672a\u30bd\u30fc\u30c8\u306e\u5de6\u3068\u53f3\u306e\u30b5\u30d6\u914d\u5217\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002</li> <li>\u6b21\u306b\u3001\u5de6\u3068\u53f3\u306e\u30b5\u30d6\u914d\u5217\u306b\u5bfe\u3057\u3066\u305d\u308c\u305e\u308c\u518d\u5e30\u7684\u306b\u300c\u30d4\u30dc\u30c3\u30c8\u5206\u5272\u300d\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002</li> <li>\u30b5\u30d6\u914d\u5217\u306e\u9577\u3055\u304c1\u306b\u306a\u308b\u307e\u3067\u518d\u5e30\u3092\u7d9a\u3051\u3001\u914d\u5217\u5168\u4f53\u306e\u30bd\u30fc\u30c8\u3092\u5b8c\u4e86\u3057\u307e\u3059\u3002</li> </ol> <p></p> <p> \u56f3 11-9 \u00a0 Quick sort process </p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby quick_sort.py<pre><code>def quick_sort(self, nums: list[int], left: int, right: int):\n \"\"\"\u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\"\"\"\n # \u30b5\u30d6\u914d\u5217\u306e\u9577\u3055\u304c1\u306e\u3068\u304d\u306b\u518d\u5e30\u3092\u7d42\u4e86\n if left &gt;= right:\n return\n # \u5206\u5272\n pivot = self.partition(nums, left, right)\n # \u5de6\u30b5\u30d6\u914d\u5217\u3068\u53f3\u30b5\u30d6\u914d\u5217\u3092\u518d\u5e30\u7684\u306b\u51e6\u7406\n self.quick_sort(nums, left, pivot - 1)\n self.quick_sort(nums, pivot + 1, right)\n</code></pre> quick_sort.cpp<pre><code>/* \u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8 */\nvoid quickSort(vector&lt;int&gt; &amp;nums, int left, int right) {\n // \u30b5\u30d6\u914d\u5217\u306e\u9577\u3055\u304c1\u306e\u6642\u3001\u518d\u5e30\u3092\u7d42\u4e86\n if (left &gt;= right)\n return;\n // \u5206\u5272\n int pivot = partition(nums, left, right);\n // \u5de6\u30b5\u30d6\u914d\u5217\u3068\u53f3\u30b5\u30d6\u914d\u5217\u3092\u518d\u5e30\u7684\u306b\u51e6\u7406\n quickSort(nums, left, pivot - 1);\n quickSort(nums, pivot + 1, right);\n}\n</code></pre> quick_sort.java<pre><code>/* \u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8 */\nvoid quickSort(int[] nums, int left, int right) {\n // \u90e8\u5206\u914d\u5217\u306e\u9577\u3055\u304c 1 \u306e\u3068\u304d\u518d\u5e30\u3092\u7d42\u4e86\n if (left &gt;= right)\n return;\n // \u5206\u5272\n int pivot = partition(nums, left, right);\n // \u5de6\u90e8\u5206\u914d\u5217\u3068\u53f3\u90e8\u5206\u914d\u5217\u3092\u518d\u5e30\u7684\u306b\u51e6\u7406\n quickSort(nums, left, pivot - 1);\n quickSort(nums, pivot + 1, right);\n}\n</code></pre> quick_sort.cs<pre><code>[class]{quickSort}-[func]{QuickSort}\n</code></pre> quick_sort.go<pre><code>[class]{quickSort}-[func]{quickSort}\n</code></pre> quick_sort.swift<pre><code>[class]{}-[func]{quickSort}\n</code></pre> quick_sort.js<pre><code>[class]{QuickSort}-[func]{quickSort}\n</code></pre> quick_sort.ts<pre><code>[class]{QuickSort}-[func]{quickSort}\n</code></pre> quick_sort.dart<pre><code>[class]{QuickSort}-[func]{quickSort}\n</code></pre> quick_sort.rs<pre><code>[class]{QuickSort}-[func]{quick_sort}\n</code></pre> quick_sort.c<pre><code>[class]{}-[func]{quickSort}\n</code></pre> quick_sort.kt<pre><code>[class]{}-[func]{quickSort}\n</code></pre> quick_sort.rb<pre><code>[class]{QuickSort}-[func]{quick_sort}\n</code></pre>"},{"location":"chapter_sorting/quick_sort/#1152","title":"11.5.2 \u00a0 \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u7279\u5fb4","text":"<ul> <li>\\(O(n \\log n)\\)\u306e\u6642\u9593\u8a08\u7b97\u91cf\u3001\u975e\u9069\u5fdc\u30bd\u30fc\u30c8\uff1a\u5e73\u5747\u7684\u306a\u30b1\u30fc\u30b9\u3067\u306f\u3001\u30d4\u30dc\u30c3\u30c8\u5206\u5272\u306e\u518d\u5e30\u30ec\u30d9\u30eb\u306f\\(\\log n\\)\u3067\u3001\u30ec\u30d9\u30eb\u3042\u305f\u308a\u306e\u30eb\u30fc\u30d7\u306e\u7dcf\u6570\u306f\\(n\\)\u3067\u3042\u308a\u3001\u5168\u4f53\u3067\\(O(n \\log n)\\)\u306e\u6642\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u6700\u60aa\u306e\u5834\u5408\u3001\u5404\u30e9\u30a6\u30f3\u30c9\u306e\u30d4\u30dc\u30c3\u30c8\u5206\u5272\u306f\u9577\u3055\\(n\\)\u306e\u914d\u5217\u3092\u9577\u3055\\(0\\)\u3068\\(n - 1\\)\u306e2\u3064\u306e\u30b5\u30d6\u914d\u5217\u306b\u5206\u5272\u3057\u3001\u518d\u5e30\u30ec\u30d9\u30eb\u6570\u304c\\(n\\)\u306b\u9054\u3059\u308b\u3068\u3001\u5404\u30ec\u30d9\u30eb\u306e\u30eb\u30fc\u30d7\u6570\u306f\\(n\\)\u3067\u3001\u4f7f\u7528\u3055\u308c\u308b\u7dcf\u6642\u9593\u306f\\(O(n^2)\\)\u3067\u3059\u3002</li> <li>\\(O(n)\\)\u306e\u7a7a\u9593\u8a08\u7b97\u91cf\u3001\u30a4\u30f3\u30d7\u30ec\u30fc\u30b9\u30bd\u30fc\u30c8\uff1a\u5165\u529b\u914d\u5217\u304c\u5b8c\u5168\u306b\u9006\u9806\u306e\u5834\u5408\u3001\u6700\u60aa\u306e\u518d\u5e30\u6df1\u5ea6\u306f\\(n\\)\u306b\u9054\u3057\u3001\\(O(n)\\)\u306e\u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u30bd\u30fc\u30c8\u64cd\u4f5c\u306f\u8ffd\u52a0\u306e\u914d\u5217\u306e\u52a9\u3051\u306a\u3057\u306b\u5143\u306e\u914d\u5217\u3067\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002</li> <li>\u975e\u5b89\u5b9a\u30bd\u30fc\u30c8\uff1a\u30d4\u30dc\u30c3\u30c8\u5206\u5272\u306e\u6700\u7d42\u30b9\u30c6\u30c3\u30d7\u3067\u3001\u30d4\u30dc\u30c3\u30c8\u306f\u7b49\u3057\u3044\u8981\u7d20\u306e\u53f3\u5074\u306b\u4ea4\u63db\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_sorting/quick_sort/#1153","title":"11.5.3 \u00a0 \u306a\u305c\u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\u306f\u9ad8\u901f\u306a\u306e\u304b","text":"<p>\u540d\u524d\u304c\u793a\u3059\u3088\u3046\u306b\u3001\u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\u306f\u52b9\u7387\u6027\u306e\u9762\u3067\u4e00\u5b9a\u306e\u5229\u70b9\u3092\u6301\u3064\u3079\u304d\u3067\u3059\u3002\u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\u306e\u5e73\u5747\u6642\u9593\u8a08\u7b97\u91cf\u306f\u300c\u30de\u30fc\u30b8\u30bd\u30fc\u30c8\u300d\u3084\u300c\u30d2\u30fc\u30d7\u30bd\u30fc\u30c8\u300d\u3068\u540c\u3058\u3067\u3059\u304c\u3001\u4ee5\u4e0b\u306e\u7406\u7531\u3067\u4e00\u822c\u7684\u306b\u3088\u308a\u52b9\u7387\u7684\u3067\u3059\u3002</p> <ul> <li>\u6700\u60aa\u30b1\u30fc\u30b9\u30b7\u30ca\u30ea\u30aa\u306e\u4f4e\u3044\u78ba\u7387\uff1a\u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\u306e\u6700\u60aa\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n^2)\\)\u3067\u3001\u30de\u30fc\u30b8\u30bd\u30fc\u30c8\u307b\u3069\u5b89\u5b9a\u3057\u3066\u3044\u307e\u305b\u3093\u304c\u3001\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\u306f\\(O(n \\log n)\\)\u306e\u6642\u9593\u8a08\u7b97\u91cf\u3067\u52d5\u4f5c\u3067\u304d\u307e\u3059\u3002</li> <li>\u9ad8\u3044\u30ad\u30e3\u30c3\u30b7\u30e5\u5229\u7528\u7387\uff1a\u30d4\u30dc\u30c3\u30c8\u5206\u5272\u64cd\u4f5c\u4e2d\u3001\u30b7\u30b9\u30c6\u30e0\u306f\u30b5\u30d6\u914d\u5217\u5168\u4f53\u3092\u30ad\u30e3\u30c3\u30b7\u30e5\u306b\u30ed\u30fc\u30c9\u3067\u304d\u308b\u305f\u3081\u3001\u8981\u7d20\u306b\u3088\u308a\u52b9\u7387\u7684\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002\u5bfe\u7167\u7684\u306b\u3001\u300c\u30d2\u30fc\u30d7\u30bd\u30fc\u30c8\u300d\u306a\u3069\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u8981\u7d20\u306b\u30b8\u30e3\u30f3\u30d7\u65b9\u5f0f\u3067\u30a2\u30af\u30bb\u30b9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u3053\u306e\u7279\u5fb4\u3092\u6b20\u3044\u3066\u3044\u307e\u3059\u3002</li> <li>\u8a08\u7b97\u91cf\u306e\u5c0f\u3055\u306a\u5b9a\u6570\u4fc2\u6570\uff1a\u4e0a\u8a183\u3064\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u4e2d\u3067\u3001\u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\u306f\u6bd4\u8f03\u3001\u4ee3\u5165\u3001\u4ea4\u63db\u306a\u3069\u306e\u64cd\u4f5c\u306e\u7dcf\u6570\u304c\u6700\u3082\u5c11\u306a\u3044\u3067\u3059\u3002\u3053\u308c\u306f\u300c\u633f\u5165\u30bd\u30fc\u30c8\u300d\u304c\u300c\u30d0\u30d6\u30eb\u30bd\u30fc\u30c8\u300d\u3088\u308a\u3082\u9ad8\u901f\u306a\u7406\u7531\u3068\u4f3c\u3066\u3044\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_sorting/quick_sort/#1154","title":"11.5.4 \u00a0 \u30d4\u30dc\u30c3\u30c8\u6700\u9069\u5316","text":"<p>\u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\u306e\u6642\u9593\u52b9\u7387\u306f\u7279\u5b9a\u306e\u5165\u529b\u3067\u52a3\u5316\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u5165\u529b\u914d\u5217\u304c\u5b8c\u5168\u306b\u9006\u9806\u306e\u5834\u5408\u3001\u6700\u3082\u5de6\u306e\u8981\u7d20\u3092\u30d4\u30dc\u30c3\u30c8\u3068\u3057\u3066\u9078\u629e\u3059\u308b\u305f\u3081\u3001\u30d4\u30dc\u30c3\u30c8\u5206\u5272\u5f8c\u3001\u30d4\u30dc\u30c3\u30c8\u306f\u914d\u5217\u306e\u53f3\u7aef\u306b\u4ea4\u63db\u3055\u308c\u3001\u5de6\u30b5\u30d6\u914d\u5217\u306e\u9577\u3055\u304c\\(n - 1\\)\u3001\u53f3\u30b5\u30d6\u914d\u5217\u306e\u9577\u3055\u304c\\(0\\)\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u306e\u65b9\u6cd5\u3092\u7d9a\u3051\u308b\u3068\u3001\u5404\u30e9\u30a6\u30f3\u30c9\u306e\u30d4\u30dc\u30c3\u30c8\u5206\u5272\u3067\u30b5\u30d6\u914d\u5217\u306e\u9577\u3055\u304c\\(0\\)\u306b\u306a\u308a\u3001\u5206\u5272\u7d71\u6cbb\u6226\u7565\u304c\u5931\u6557\u3057\u3001\u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\u306f\u300c\u30d0\u30d6\u30eb\u30bd\u30fc\u30c8\u300d\u306b\u4f3c\u305f\u5f62\u306b\u52a3\u5316\u3057\u307e\u3059\u3002</p> <p>\u3053\u306e\u72b6\u6cc1\u3092\u907f\u3051\u308b\u305f\u3081\u3001\u30d4\u30dc\u30c3\u30c8\u5206\u5272\u3067\u30d4\u30dc\u30c3\u30c8\u9078\u629e\u6226\u7565\u3092\u6700\u9069\u5316\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u8981\u7d20\u3092\u30e9\u30f3\u30c0\u30e0\u306b\u9078\u629e\u3057\u3066\u30d4\u30dc\u30c3\u30c8\u3068\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u904b\u304c\u60aa\u304f\u3001\u4e00\u8cab\u3057\u3066\u6700\u9069\u3067\u306a\u3044\u30d4\u30dc\u30c3\u30c8\u3092\u9078\u629e\u3057\u305f\u5834\u5408\u3001\u52b9\u7387\u306f\u307e\u3060\u6e80\u8db3\u3067\u304d\u307e\u305b\u3093\u3002</p> <p>\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306f\u901a\u5e38\u300c\u7591\u4f3c\u4e71\u6570\u300d\u3092\u751f\u6210\u3059\u308b\u3053\u3068\u306b\u6ce8\u610f\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002\u7591\u4f3c\u4e71\u6570\u30b7\u30fc\u30b1\u30f3\u30b9\u306b\u5bfe\u3057\u3066\u7279\u5b9a\u306e\u30c6\u30b9\u30c8\u30b1\u30fc\u30b9\u3092\u69cb\u7bc9\u3059\u308b\u3068\u3001\u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\u306e\u52b9\u7387\u306f\u307e\u3060\u52a3\u5316\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>\u3055\u3089\u306a\u308b\u6539\u5584\u306e\u305f\u3081\u30013\u3064\u306e\u5019\u88dc\u8981\u7d20\uff08\u901a\u5e38\u306f\u914d\u5217\u306e\u6700\u521d\u3001\u6700\u5f8c\u3001\u4e2d\u70b9\u306e\u8981\u7d20\uff09\u3092\u9078\u629e\u3057\u3001**\u3053\u308c\u30893\u3064\u306e\u5019\u88dc\u8981\u7d20\u306e\u4e2d\u592e\u5024\u3092\u30d4\u30dc\u30c3\u30c8\u3068\u3057\u3066\u4f7f\u7528**\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u65b9\u6cd5\u3067\u3001\u30d4\u30dc\u30c3\u30c8\u304c\u300c\u5c0f\u3055\u3059\u304e\u305a\u5927\u304d\u3059\u304e\u306a\u3044\u300d\u78ba\u7387\u304c\u5927\u5e45\u306b\u5897\u52a0\u3057\u307e\u3059\u3002\u3082\u3061\u308d\u3093\u3001\u3055\u3089\u306b\u591a\u304f\u306e\u5019\u88dc\u8981\u7d20\u3092\u9078\u629e\u3057\u3066\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5805\u7262\u6027\u3092\u3055\u3089\u306b\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u65b9\u6cd5\u306b\u3088\u308a\u3001\u6642\u9593\u8a08\u7b97\u91cf\u304c\\(O(n^2)\\)\u306b\u52a3\u5316\u3059\u308b\u78ba\u7387\u304c\u5927\u5e45\u306b\u524a\u6e1b\u3055\u308c\u307e\u3059\u3002</p> <p>\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby quick_sort.py<pre><code>def median_three(self, nums: list[int], left: int, mid: int, right: int) -&gt; int:\n \"\"\"3\u3064\u306e\u5019\u88dc\u8981\u7d20\u306e\u4e2d\u592e\u5024\u3092\u9078\u629e\"\"\"\n l, m, r = nums[left], nums[mid], nums[right]\n if (l &lt;= m &lt;= r) or (r &lt;= m &lt;= l):\n return mid # m \u306f l \u3068 r \u306e\u9593\n if (m &lt;= l &lt;= r) or (r &lt;= l &lt;= m):\n return left # l \u306f m \u3068 r \u306e\u9593\n return right\n\ndef partition(self, nums: list[int], left: int, right: int) -&gt; int:\n \"\"\"\u5206\u5272\uff08\u4e09\u70b9\u4e2d\u592e\u5024\uff09\"\"\"\n # nums[left] \u3092\u30d4\u30dc\u30c3\u30c8\u3068\u3057\u3066\u4f7f\u7528\n med = self.median_three(nums, left, (left + right) // 2, right)\n # \u4e2d\u592e\u5024\u3092\u914d\u5217\u306e\u6700\u5de6\u7aef\u306b\u4ea4\u63db\n nums[left], nums[med] = nums[med], nums[left]\n # nums[left] \u3092\u30d4\u30dc\u30c3\u30c8\u3068\u3057\u3066\u4f7f\u7528\n i, j = left, right\n while i &lt; j:\n while i &lt; j and nums[j] &gt;= nums[left]:\n j -= 1 # \u53f3\u304b\u3089\u5de6\u3078\u30d4\u30dc\u30c3\u30c8\u3088\u308a\u5c0f\u3055\u3044\u6700\u521d\u306e\u8981\u7d20\u3092\u63a2\u3059\n while i &lt; j and nums[i] &lt;= nums[left]:\n i += 1 # \u5de6\u304b\u3089\u53f3\u3078\u30d4\u30dc\u30c3\u30c8\u3088\u308a\u5927\u304d\u3044\u6700\u521d\u306e\u8981\u7d20\u3092\u63a2\u3059\n # \u8981\u7d20\u3092\u4ea4\u63db\n nums[i], nums[j] = nums[j], nums[i]\n # \u30d4\u30dc\u30c3\u30c8\u30922\u3064\u306e\u30b5\u30d6\u914d\u5217\u306e\u5883\u754c\u306b\u4ea4\u63db\n nums[i], nums[left] = nums[left], nums[i]\n return i # \u30d4\u30dc\u30c3\u30c8\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u3059\n</code></pre> quick_sort.cpp<pre><code>/* \u4e09\u3064\u306e\u5019\u88dc\u8981\u7d20\u306e\u4e2d\u592e\u5024\u3092\u9078\u629e */\nint medianThree(vector&lt;int&gt; &amp;nums, int left, int mid, int right) {\n int l = nums[left], m = nums[mid], r = nums[right];\n if ((l &lt;= m &amp;&amp; m &lt;= r) || (r &lt;= m &amp;&amp; m &lt;= l))\n return mid; // m\u306fl\u3068r\u306e\u9593\n if ((m &lt;= l &amp;&amp; l &lt;= r) || (r &lt;= l &amp;&amp; l &lt;= m))\n return left; // l\u306fm\u3068r\u306e\u9593\n return right;\n}\n\n/* \u5206\u5272\uff08\u4e09\u3064\u306e\u4e2d\u592e\u5024\uff09 */\nint partition(vector&lt;int&gt; &amp;nums, int left, int right) {\n // \u4e09\u3064\u306e\u5019\u88dc\u8981\u7d20\u306e\u4e2d\u592e\u5024\u3092\u9078\u629e\n int med = medianThree(nums, left, (left + right) / 2, right);\n // \u4e2d\u592e\u5024\u3092\u914d\u5217\u306e\u6700\u5de6\u4f4d\u7f6e\u306b\u4ea4\u63db\n swap(nums, left, med);\n // nums[left]\u3092\u30d4\u30dc\u30c3\u30c8\u3068\u3057\u3066\u4f7f\u7528\n int i = left, j = right;\n while (i &lt; j) {\n while (i &lt; j &amp;&amp; nums[j] &gt;= nums[left])\n j--; // \u53f3\u304b\u3089\u5de6\u3078\u30d4\u30dc\u30c3\u30c8\u3088\u308a\u5c0f\u3055\u3044\u6700\u521d\u306e\u8981\u7d20\u3092\u691c\u7d22\n while (i &lt; j &amp;&amp; nums[i] &lt;= nums[left])\n i++; // \u5de6\u304b\u3089\u53f3\u3078\u30d4\u30dc\u30c3\u30c8\u3088\u308a\u5927\u304d\u3044\u6700\u521d\u306e\u8981\u7d20\u3092\u691c\u7d22\n swap(nums, i, j); // \u3053\u308c\u3089\u4e8c\u3064\u306e\u8981\u7d20\u3092\u4ea4\u63db\n }\n swap(nums, i, left); // \u30d4\u30dc\u30c3\u30c8\u3092\u4e8c\u3064\u306e\u30b5\u30d6\u914d\u5217\u306e\u5883\u754c\u306b\u4ea4\u63db\n return i; // \u30d4\u30dc\u30c3\u30c8\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u3059\n}\n</code></pre> quick_sort.java<pre><code>/* 3\u3064\u306e\u5019\u88dc\u8981\u7d20\u306e\u4e2d\u592e\u5024\u3092\u9078\u629e */\nint medianThree(int[] nums, int left, int mid, int right) {\n int l = nums[left], m = nums[mid], r = nums[right];\n if ((l &lt;= m &amp;&amp; m &lt;= r) || (r &lt;= m &amp;&amp; m &lt;= l))\n return mid; // m \u306f l \u3068 r \u306e\u9593\n if ((m &lt;= l &amp;&amp; l &lt;= r) || (r &lt;= l &amp;&amp; l &lt;= m))\n return left; // l \u306f m \u3068 r \u306e\u9593\n return right;\n}\n\n/* \u5206\u5272\uff083\u3064\u306e\u4e2d\u592e\u5024\uff09 */\nint partition(int[] nums, int left, int right) {\n // 3\u3064\u306e\u5019\u88dc\u8981\u7d20\u306e\u4e2d\u592e\u5024\u3092\u9078\u629e\n int med = medianThree(nums, left, (left + right) / 2, right);\n // \u4e2d\u592e\u5024\u3092\u914d\u5217\u306e\u6700\u5de6\u7aef\u306e\u4f4d\u7f6e\u306b\u4ea4\u63db\n swap(nums, left, med);\n // nums[left] \u3092\u57fa\u6e96\u5024\u3068\u3057\u3066\u4f7f\u7528\n int i = left, j = right;\n while (i &lt; j) {\n while (i &lt; j &amp;&amp; nums[j] &gt;= nums[left])\n j--; // \u53f3\u304b\u3089\u5de6\u3078\u3001\u57fa\u6e96\u5024\u3088\u308a\u5c0f\u3055\u3044\u6700\u521d\u306e\u8981\u7d20\u3092\u691c\u7d22\n while (i &lt; j &amp;&amp; nums[i] &lt;= nums[left])\n i++; // \u5de6\u304b\u3089\u53f3\u3078\u3001\u57fa\u6e96\u5024\u3088\u308a\u5927\u304d\u3044\u6700\u521d\u306e\u8981\u7d20\u3092\u691c\u7d22\n swap(nums, i, j); // \u3053\u308c\u30892\u3064\u306e\u8981\u7d20\u3092\u4ea4\u63db\n }\n swap(nums, i, left); // \u57fa\u6e96\u5024\u30922\u3064\u306e\u90e8\u5206\u914d\u5217\u306e\u5883\u754c\u306b\u4ea4\u63db\n return i; // \u57fa\u6e96\u5024\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8fd4\u3059\n}\n</code></pre> quick_sort.cs<pre><code>[class]{QuickSortMedian}-[func]{MedianThree}\n\n[class]{QuickSortMedian}-[func]{Partition}\n</code></pre> quick_sort.go<pre><code>[class]{quickSortMedian}-[func]{medianThree}\n\n[class]{quickSortMedian}-[func]{partition}\n</code></pre> quick_sort.swift<pre><code>[class]{}-[func]{medianThree}\n\n[class]{}-[func]{partitionMedian}\n</code></pre> quick_sort.js<pre><code>[class]{QuickSortMedian}-[func]{medianThree}\n\n[class]{QuickSortMedian}-[func]{partition}\n</code></pre> quick_sort.ts<pre><code>[class]{QuickSortMedian}-[func]{medianThree}\n\n[class]{QuickSortMedian}-[func]{partition}\n</code></pre> quick_sort.dart<pre><code>[class]{QuickSortMedian}-[func]{_medianThree}\n\n[class]{QuickSortMedian}-[func]{_partition}\n</code></pre> quick_sort.rs<pre><code>[class]{QuickSortMedian}-[func]{median_three}\n\n[class]{QuickSortMedian}-[func]{partition}\n</code></pre> quick_sort.c<pre><code>[class]{}-[func]{medianThree}\n\n[class]{}-[func]{partitionMedian}\n</code></pre> quick_sort.kt<pre><code>[class]{}-[func]{medianThree}\n\n[class]{}-[func]{partitionMedian}\n</code></pre> quick_sort.rb<pre><code>[class]{QuickSortMedian}-[func]{median_three}\n\n[class]{QuickSortMedian}-[func]{partition}\n</code></pre>"},{"location":"chapter_sorting/quick_sort/#1155","title":"11.5.5 \u00a0 \u672b\u5c3e\u518d\u5e30\u6700\u9069\u5316","text":"<p>\u7279\u5b9a\u306e\u5165\u529b\u3067\u306f\u3001\u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\u306f\u3088\u308a\u591a\u304f\u306e\u7a7a\u9593\u3092\u5360\u6709\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u5b8c\u5168\u306b\u9806\u5e8f\u4ed8\u3051\u3089\u308c\u305f\u5165\u529b\u914d\u5217\u3092\u8003\u3048\u3066\u307f\u307e\u3057\u3087\u3046\u3002\u518d\u5e30\u3067\u306e\u30b5\u30d6\u914d\u5217\u306e\u9577\u3055\u3092\\(m\\)\u3068\u3057\u307e\u3059\u3002\u5404\u30e9\u30a6\u30f3\u30c9\u306e\u30d4\u30dc\u30c3\u30c8\u5206\u5272\u3067\u3001\u9577\u3055\\(0\\)\u306e\u5de6\u30b5\u30d6\u914d\u5217\u3068\u9577\u3055\\(m - 1\\)\u306e\u53f3\u30b5\u30d6\u914d\u5217\u304c\u751f\u6210\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u518d\u5e30\u547c\u3073\u51fa\u3057\u3054\u3068\u306b\u554f\u984c\u30b5\u30a4\u30ba\u304c1\u3064\u306e\u8981\u7d20\u306e\u307f\u6e1b\u5c11\u3059\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u3001\u5404\u30ec\u30d9\u30eb\u306e\u518d\u5e30\u3067\u306e\u524a\u6e1b\u304c\u975e\u5e38\u306b\u5c0f\u3055\u304f\u306a\u308a\u307e\u3059\u3002 \u7d50\u679c\u3068\u3057\u3066\u3001\u518d\u5e30\u30c4\u30ea\u30fc\u306e\u9ad8\u3055\u306f\\(n \u2212 1\\)\u306b\u9054\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u3001\u3053\u308c\u306b\u306f\\(O(n)\\)\u306e\u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593\u304c\u5fc5\u8981\u3067\u3059\u3002</p> <p>\u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593\u306e\u84c4\u7a4d\u3092\u9632\u3050\u305f\u3081\u3001\u5404\u30e9\u30a6\u30f3\u30c9\u306e\u30d4\u30dc\u30c3\u30c8\u30bd\u30fc\u30c8\u5f8c\u306b2\u3064\u306e\u30b5\u30d6\u914d\u5217\u306e\u9577\u3055\u3092\u6bd4\u8f03\u3057\u3001**\u3088\u308a\u77ed\u3044\u30b5\u30d6\u914d\u5217\u306e\u307f\u3092\u518d\u5e30\u7684\u306b\u30bd\u30fc\u30c8**\u3067\u304d\u307e\u3059\u3002\u3088\u308a\u77ed\u3044\u30b5\u30d6\u914d\u5217\u306e\u9577\u3055\u306f\\(n / 2\\)\u3092\u8d85\u3048\u306a\u3044\u305f\u3081\u3001\u3053\u306e\u65b9\u6cd5\u306f\u518d\u5e30\u6df1\u5ea6\u304c\\(\\log n\\)\u3092\u8d85\u3048\u306a\u3044\u3053\u3068\u3092\u4fdd\u8a3c\u3057\u3001\u6700\u60aa\u7a7a\u9593\u8a08\u7b97\u91cf\u3092\\(O(\\log n)\\)\u306b\u6700\u9069\u5316\u3057\u307e\u3059\u3002\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby quick_sort.py<pre><code>def quick_sort(self, nums: list[int], left: int, right: int):\n \"\"\"\u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\uff08\u672b\u5c3e\u518d\u5e30\u6700\u9069\u5316\uff09\"\"\"\n # \u30b5\u30d6\u914d\u5217\u306e\u9577\u3055\u304c1\u306e\u3068\u304d\u306b\u7d42\u4e86\n while left &lt; right:\n # \u5206\u5272\u64cd\u4f5c\n pivot = self.partition(nums, left, right)\n # 2\u3064\u306e\u30b5\u30d6\u914d\u5217\u306e\u3046\u3061\u77ed\u3044\u65b9\u306b\u5bfe\u3057\u3066\u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\u3092\u5b9f\u884c\n if pivot - left &lt; right - pivot:\n self.quick_sort(nums, left, pivot - 1) # \u5de6\u30b5\u30d6\u914d\u5217\u3092\u518d\u5e30\u7684\u306b\u30bd\u30fc\u30c8\n left = pivot + 1 # \u6b8b\u308a\u306e\u672a\u30bd\u30fc\u30c8\u533a\u9593\u306f [pivot + 1, right]\n else:\n self.quick_sort(nums, pivot + 1, right) # \u53f3\u30b5\u30d6\u914d\u5217\u3092\u518d\u5e30\u7684\u306b\u30bd\u30fc\u30c8\n right = pivot - 1 # \u6b8b\u308a\u306e\u672a\u30bd\u30fc\u30c8\u533a\u9593\u306f [left, pivot - 1]\n</code></pre> quick_sort.cpp<pre><code>/* \u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\uff08\u672b\u5c3e\u518d\u5e30\u6700\u9069\u5316\uff09 */\nvoid quickSort(vector&lt;int&gt; &amp;nums, int left, int right) {\n // \u30b5\u30d6\u914d\u5217\u306e\u9577\u3055\u304c1\u306e\u6642\u7d42\u4e86\n while (left &lt; right) {\n // \u5206\u5272\u64cd\u4f5c\n int pivot = partition(nums, left, right);\n // \u4e8c\u3064\u306e\u30b5\u30d6\u914d\u5217\u306e\u3046\u3061\u77ed\u3044\u65b9\u3067\u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\u3092\u5b9f\u884c\n if (pivot - left &lt; right - pivot) {\n quickSort(nums, left, pivot - 1); // \u5de6\u30b5\u30d6\u914d\u5217\u3092\u518d\u5e30\u7684\u306b\u30bd\u30fc\u30c8\n left = pivot + 1; // \u6b8b\u308a\u306e\u672a\u30bd\u30fc\u30c8\u533a\u9593\u306f[pivot + 1, right]\n } else {\n quickSort(nums, pivot + 1, right); // \u53f3\u30b5\u30d6\u914d\u5217\u3092\u518d\u5e30\u7684\u306b\u30bd\u30fc\u30c8\n right = pivot - 1; // \u6b8b\u308a\u306e\u672a\u30bd\u30fc\u30c8\u533a\u9593\u306f[left, pivot - 1]\n }\n }\n}\n</code></pre> quick_sort.java<pre><code>/* \u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\uff08\u672b\u5c3e\u518d\u5e30\u6700\u9069\u5316\uff09 */\nvoid quickSort(int[] nums, int left, int right) {\n // \u90e8\u5206\u914d\u5217\u306e\u9577\u3055\u304c 1 \u306e\u3068\u304d\u7d42\u4e86\n while (left &lt; right) {\n // \u5206\u5272\u64cd\u4f5c\n int pivot = partition(nums, left, right);\n // 2\u3064\u306e\u90e8\u5206\u914d\u5217\u306e\u3046\u3061\u77ed\u3044\u65b9\u306b\u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\u3092\u5b9f\u884c\n if (pivot - left &lt; right - pivot) {\n quickSort(nums, left, pivot - 1); // \u5de6\u90e8\u5206\u914d\u5217\u3092\u518d\u5e30\u7684\u306b\u30bd\u30fc\u30c8\n left = pivot + 1; // \u6b8b\u308a\u306e\u672a\u30bd\u30fc\u30c8\u533a\u9593\u306f [pivot + 1, right]\n } else {\n quickSort(nums, pivot + 1, right); // \u53f3\u90e8\u5206\u914d\u5217\u3092\u518d\u5e30\u7684\u306b\u30bd\u30fc\u30c8\n right = pivot - 1; // \u6b8b\u308a\u306e\u672a\u30bd\u30fc\u30c8\u533a\u9593\u306f [left, pivot - 1]\n }\n }\n}\n</code></pre> quick_sort.cs<pre><code>[class]{QuickSortTailCall}-[func]{QuickSort}\n</code></pre> quick_sort.go<pre><code>[class]{quickSortTailCall}-[func]{quickSort}\n</code></pre> quick_sort.swift<pre><code>[class]{}-[func]{quickSortTailCall}\n</code></pre> quick_sort.js<pre><code>[class]{QuickSortTailCall}-[func]{quickSort}\n</code></pre> quick_sort.ts<pre><code>[class]{QuickSortTailCall}-[func]{quickSort}\n</code></pre> quick_sort.dart<pre><code>[class]{QuickSortTailCall}-[func]{quickSort}\n</code></pre> quick_sort.rs<pre><code>[class]{QuickSortTailCall}-[func]{quick_sort}\n</code></pre> quick_sort.c<pre><code>[class]{}-[func]{quickSortTailCall}\n</code></pre> quick_sort.kt<pre><code>[class]{}-[func]{quickSortTailCall}\n</code></pre> quick_sort.rb<pre><code>[class]{QuickSortTailCall}-[func]{quick_sort}\n</code></pre>"},{"location":"chapter_sorting/radix_sort/","title":"11.10 \u00a0 \u57fa\u6570\u30bd\u30fc\u30c8","text":"<p>\u524d\u306e\u7bc0\u3067\u306f\u8a08\u6570\u30bd\u30fc\u30c8\u3092\u7d39\u4ecb\u3057\u307e\u3057\u305f\u3002\u3053\u308c\u306f\u3001\u30c7\u30fc\u30bf\u30b5\u30a4\u30ba \\(n\\) \u304c\u5927\u304d\u3044\u304c\u30c7\u30fc\u30bf\u7bc4\u56f2 \\(m\\) \u304c\u5c0f\u3055\u3044\u30b7\u30ca\u30ea\u30aa\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002\\(n = 10^6\\) \u306e\u5b66\u751fID\u3092\u30bd\u30fc\u30c8\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u5404ID\u304c \\(8\\) \u6841\u306e\u6570\u5b57\u3067\u3042\u308b\u3068\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30c7\u30fc\u30bf\u7bc4\u56f2 \\(m = 10^8\\) \u304c\u975e\u5e38\u306b\u5927\u304d\u3044\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u3053\u306e\u5834\u5408\u3001\u8a08\u6570\u30bd\u30fc\u30c8\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u5927\u91cf\u306e\u30e1\u30e2\u30ea\u30b9\u30da\u30fc\u30b9\u304c\u5fc5\u8981\u306b\u306a\u308a\u307e\u3059\u3002\u57fa\u6570\u30bd\u30fc\u30c8\u306f\u3053\u306e\u72b6\u6cc1\u3092\u56de\u907f\u3067\u304d\u307e\u3059\u3002</p> <p>\u57fa\u6570\u30bd\u30fc\u30c8\u306f\u8a08\u6570\u30bd\u30fc\u30c8\u3068\u540c\u3058\u6838\u5fc3\u6982\u5ff5\u3092\u5171\u6709\u3057\u3001\u8981\u7d20\u306e\u983b\u5ea6\u3092\u30ab\u30a6\u30f3\u30c8\u3059\u308b\u3053\u3068\u3067\u30bd\u30fc\u30c8\u3057\u307e\u3059\u3002\u540c\u6642\u306b\u3001\u57fa\u6570\u30bd\u30fc\u30c8\u306f\u6570\u5b57\u306e\u6841\u9593\u306e\u6f38\u9032\u7684\u95a2\u4fc2\u3092\u5229\u7528\u3057\u3066\u3053\u308c\u3092\u57fa\u76e4\u3068\u3057\u3066\u3044\u307e\u3059\u3002\u6841\u3092\u4e00\u5ea6\u306b\u4e00\u3064\u305a\u3064\u51e6\u7406\u3057\u3066\u30bd\u30fc\u30c8\u3057\u3001\u6700\u7d42\u7684\u306a\u30bd\u30fc\u30c8\u9806\u5e8f\u3092\u9054\u6210\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_sorting/radix_sort/#11101","title":"11.10.1 \u00a0 \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u904e\u7a0b","text":"<p>\u5b66\u751fID\u30c7\u30fc\u30bf\u3092\u4f8b\u3068\u3057\u3066\u3001\u6700\u4e0b\u4f4d\u6841\u3092 \\(1\\) \u756a\u76ee\u3001\u6700\u4e0a\u4f4d\u6841\u3092 \\(8\\) \u756a\u76ee\u3068\u3059\u308b\u3068\u3001\u57fa\u6570\u30bd\u30fc\u30c8\u306e\u904e\u7a0b\u306f\u4ee5\u4e0b\u306e\u56f3\u306b\u793a\u3055\u308c\u3066\u3044\u307e\u3059\u3002</p> <ol> <li>\u6841 \\(k = 1\\) \u3092\u521d\u671f\u5316\u3057\u307e\u3059\u3002</li> <li>\u5b66\u751fID\u306e \\(k\\) \u756a\u76ee\u306e\u6841\u306b\u5bfe\u3057\u3066\u300c\u8a08\u6570\u30bd\u30fc\u30c8\u300d\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u5b8c\u4e86\u5f8c\u3001\u30c7\u30fc\u30bf\u306f \\(k\\) \u756a\u76ee\u306e\u6841\u306b\u57fa\u3065\u3044\u3066\u6700\u5c0f\u304b\u3089\u6700\u5927\u307e\u3067\u30bd\u30fc\u30c8\u3055\u308c\u307e\u3059\u3002</li> <li>\\(k\\) \u3092 \\(1\\) \u5897\u3084\u3057\u3001\u624b\u9806 <code>2.</code> \u306b\u623b\u3063\u3066\u53cd\u5fa9\u3092\u7d9a\u3051\u3001\u3059\u3079\u3066\u306e\u6841\u304c\u30bd\u30fc\u30c8\u3055\u308c\u308b\u307e\u3067\u7d9a\u3051\u307e\u3059\u3002\u3053\u306e\u6642\u70b9\u3067\u904e\u7a0b\u304c\u7d42\u4e86\u3057\u307e\u3059\u3002</li> </ol> <p></p> <p> \u56f3 11-18 \u00a0 \u57fa\u6570\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u904e\u7a0b </p> <p>\u4ee5\u4e0b\u3001\u30b3\u30fc\u30c9\u5b9f\u88c5\u3092\u8a73\u3057\u304f\u898b\u3066\u307f\u307e\u3059\u3002\u57fa\u6570 \\(d\\) \u3067\u306e\u6570 \\(x\\) \u306b\u5bfe\u3057\u3066\u3001\u305d\u306e \\(k\\) \u756a\u76ee\u306e\u6841 \\(x_k\\) \u3092\u53d6\u5f97\u3059\u308b\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u8a08\u7b97\u5f0f\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\uff1a</p> \\[ x_k = \\lfloor\\frac{x}{d^{k-1}}\\rfloor \\bmod d \\] <p>\u3053\u3053\u3067 \\(\\lfloor a \\rfloor\\) \u306f\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570 \\(a\\) \u306e\u5207\u308a\u6368\u3066\u3092\u8868\u3057\u3001\\(\\bmod \\: d\\) \u306f \\(d\\) \u306b\u3088\u308b\u5270\u4f59\u3092\u8868\u3057\u307e\u3059\u3002\u5b66\u751fID\u30c7\u30fc\u30bf\u306e\u5834\u5408\u3001\\(d = 10\\) \u3067 \\(k \\in [1, 8]\\) \u3067\u3059\u3002</p> <p>\u3055\u3089\u306b\u3001\\(k\\) \u756a\u76ee\u306e\u6841\u306b\u57fa\u3065\u3044\u3066\u30bd\u30fc\u30c8\u3067\u304d\u308b\u3088\u3046\u306b\u3001\u8a08\u6570\u30bd\u30fc\u30c8\u306e\u30b3\u30fc\u30c9\u3092\u5c11\u3057\u4fee\u6b63\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby radix_sort.py<pre><code>def digit(num: int, exp: int) -&gt; int:\n \"\"\"\u8981\u7d20 num \u306e k \u756a\u76ee\u306e\u6841\u3092\u53d6\u5f97\u3001exp = 10^(k-1)\"\"\"\n # k \u306e\u4ee3\u308f\u308a\u306b exp \u3092\u6e21\u3059\u3053\u3068\u3067\u3001\u3053\u3053\u3067\u30b3\u30b9\u30c8\u306e\u9ad8\u3044\u7d2f\u4e57\u8a08\u7b97\u3092\u907f\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u308b\n return (num // exp) % 10\n\ndef counting_sort_digit(nums: list[int], exp: int):\n \"\"\"\u8a08\u6570\u30bd\u30fc\u30c8\uff08nums \u306e k \u756a\u76ee\u306e\u6841\u306b\u57fa\u3065\u304f\uff09\"\"\"\n # 10\u9032\u6570\u306e\u6841\u306e\u7bc4\u56f2\u306f 0~9\u3001\u3057\u305f\u304c\u3063\u3066\u9577\u305510\u306e\u30d0\u30b1\u30c3\u30c8\u914d\u5217\u304c\u5fc5\u8981\n counter = [0] * 10\n n = len(nums)\n # \u6570\u5b57 0~9 \u306e\u51fa\u73fe\u56de\u6570\u3092\u7d71\u8a08\n for i in range(n):\n d = digit(nums[i], exp) # nums[i] \u306e k \u756a\u76ee\u306e\u6841\u3092\u53d6\u5f97\u3001d \u3068\u3059\u308b\n counter[d] += 1 # \u6570\u5b57 d \u306e\u51fa\u73fe\u56de\u6570\u3092\u7d71\u8a08\n # \u524d\u7f6e\u548c\u3092\u8a08\u7b97\u3057\u3001\u300c\u51fa\u73fe\u56de\u6570\u300d\u3092\u300c\u914d\u5217\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u300d\u306b\u5909\u63db\n for i in range(1, 10):\n counter[i] += counter[i - 1]\n # \u9006\u9806\u306b\u8d70\u67fb\u3057\u3001\u30d0\u30b1\u30c3\u30c8\u7d71\u8a08\u306b\u57fa\u3065\u3044\u3066\u5404\u8981\u7d20\u3092 res \u306b\u914d\u7f6e\n res = [0] * n\n for i in range(n - 1, -1, -1):\n d = digit(nums[i], exp)\n j = counter[d] - 1 # \u914d\u5217\u5185\u306e d \u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 j \u3092\u53d6\u5f97\n res[j] = nums[i] # \u73fe\u5728\u306e\u8981\u7d20\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 j \u306b\u914d\u7f6e\n counter[d] -= 1 # d \u306e\u6570\u30921\u6e1b\u3089\u3059\n # \u7d50\u679c\u3092\u4f7f\u7528\u3057\u3066\u5143\u306e\u914d\u5217 nums \u3092\u4e0a\u66f8\u304d\n for i in range(n):\n nums[i] = res[i]\n\ndef radix_sort(nums: list[int]):\n \"\"\"\u57fa\u6570\u30bd\u30fc\u30c8\"\"\"\n # \u914d\u5217\u306e\u6700\u5927\u8981\u7d20\u3092\u53d6\u5f97\u3057\u3001\u6700\u5927\u6841\u6570\u3092\u5224\u5b9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\n m = max(nums)\n # \u6700\u4e0b\u4f4d\u6841\u304b\u3089\u6700\u4e0a\u4f4d\u6841\u307e\u3067\u8d70\u67fb\n exp = 1\n while exp &lt;= m:\n # \u914d\u5217\u8981\u7d20\u306e k \u756a\u76ee\u306e\u6841\u306b\u5bfe\u3057\u3066\u8a08\u6570\u30bd\u30fc\u30c8\u3092\u5b9f\u884c\n # k = 1 -&gt; exp = 1\n # k = 2 -&gt; exp = 10\n # \u3064\u307e\u308a\u3001exp = 10^(k-1)\n counting_sort_digit(nums, exp)\n exp *= 10\n</code></pre> radix_sort.cpp<pre><code>/* \u8981\u7d20num\u306ek\u756a\u76ee\u306e\u6841\u3092\u53d6\u5f97\u3001exp = 10^(k-1) */\nint digit(int num, int exp) {\n // k\u306e\u4ee3\u308f\u308a\u306bexp\u3092\u6e21\u3059\u3053\u3068\u3067\u3001\u3053\u3053\u3067\u7e70\u308a\u8fd4\u3055\u308c\u308b\u9ad8\u4fa1\u306a\u51aa\u4e57\u8a08\u7b97\u3092\u907f\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u308b\n return (num / exp) % 10;\n}\n\n/* \u30ab\u30a6\u30f3\u30c8\u30bd\u30fc\u30c8\uff08nums\u306ek\u756a\u76ee\u306e\u6841\u306b\u57fa\u3065\u304f\uff09 */\nvoid countingSortDigit(vector&lt;int&gt; &amp;nums, int exp) {\n // 10\u9032\u6570\u306e\u6841\u7bc4\u56f2\u306f0~9\u306a\u306e\u3067\u3001\u9577\u305510\u306e\u30d0\u30b1\u30c3\u30c8\u914d\u5217\u304c\u5fc5\u8981\n vector&lt;int&gt; counter(10, 0);\n int n = nums.size();\n // \u6570\u5b570~9\u306e\u51fa\u73fe\u56de\u6570\u3092\u7d71\u8a08\n for (int i = 0; i &lt; n; i++) {\n int d = digit(nums[i], exp); // nums[i]\u306ek\u756a\u76ee\u306e\u6841\u3092\u53d6\u5f97\u3001d\u3068\u3057\u3066\u8a18\u9332\n counter[d]++; // \u6570\u5b57d\u306e\u51fa\u73fe\u56de\u6570\u3092\u7d71\u8a08\n }\n // \u524d\u7f00\u548c\u3092\u8a08\u7b97\u3057\u3001\u300c\u51fa\u73fe\u56de\u6570\u300d\u3092\u300c\u914d\u5217\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u300d\u306b\u5909\u63db\n for (int i = 1; i &lt; 10; i++) {\n counter[i] += counter[i - 1];\n }\n // \u9006\u9806\u3067\u8d70\u67fb\u3057\u3001\u30d0\u30b1\u30c3\u30c8\u7d71\u8a08\u306b\u57fa\u3065\u3044\u3066\u5404\u8981\u7d20\u3092res\u306b\u914d\u7f6e\n vector&lt;int&gt; res(n, 0);\n for (int i = n - 1; i &gt;= 0; i--) {\n int d = digit(nums[i], exp);\n int j = counter[d] - 1; // d\u304c\u914d\u5217\u5185\u306b\u3042\u308b\u30a4\u30f3\u30c7\u30c3\u30af\u30b9j\u3092\u53d6\u5f97\n res[j] = nums[i]; // \u73fe\u5728\u306e\u8981\u7d20\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9j\u306b\u914d\u7f6e\n counter[d]--; // d\u306e\u30ab\u30a6\u30f3\u30c8\u30921\u6e1b\u3089\u3059\n }\n // \u7d50\u679c\u3067\u5143\u306e\u914d\u5217nums\u3092\u4e0a\u66f8\u304d\n for (int i = 0; i &lt; n; i++)\n nums[i] = res[i];\n}\n\n/* \u57fa\u6570\u30bd\u30fc\u30c8 */\nvoid radixSort(vector&lt;int&gt; &amp;nums) {\n // \u914d\u5217\u306e\u6700\u5927\u8981\u7d20\u3092\u53d6\u5f97\u3001\u6700\u5927\u6841\u6570\u3092\u5224\u5b9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\n int m = *max_element(nums.begin(), nums.end());\n // \u6700\u4e0b\u4f4d\u6841\u304b\u3089\u6700\u4e0a\u4f4d\u6841\u307e\u3067\u8d70\u67fb\n for (int exp = 1; exp &lt;= m; exp *= 10)\n // \u914d\u5217\u8981\u7d20\u306ek\u756a\u76ee\u306e\u6841\u3067\u30ab\u30a6\u30f3\u30c8\u30bd\u30fc\u30c8\u3092\u5b9f\u884c\n // k = 1 -&gt; exp = 1\n // k = 2 -&gt; exp = 10\n // \u3064\u307e\u308a\u3001exp = 10^(k-1)\n countingSortDigit(nums, exp);\n}\n</code></pre> radix_sort.java<pre><code>/* \u8981\u7d20 num \u306e k \u756a\u76ee\u306e\u6841\u3092\u53d6\u5f97\u3001exp = 10^(k-1) */\nint digit(int num, int exp) {\n // k \u306e\u4ee3\u308f\u308a\u306b exp \u3092\u6e21\u3059\u3053\u3068\u3067\u3001\u3053\u3053\u3067\u30b3\u30b9\u30c8\u306e\u9ad8\u3044\u7d2f\u4e57\u8a08\u7b97\u306e\u7e70\u308a\u8fd4\u3057\u3092\u907f\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u308b\n return (num / exp) % 10;\n}\n\n/* \u8a08\u6570\u30bd\u30fc\u30c8\uff08nums \u306e k \u756a\u76ee\u306e\u6841\u306b\u57fa\u3065\u304f\uff09 */\nvoid countingSortDigit(int[] nums, int exp) {\n // 10\u9032\u6570\u306e\u6841\u306e\u7bc4\u56f2\u306f 0~9\u3001\u3057\u305f\u304c\u3063\u3066\u9577\u3055 10 \u306e\u30d0\u30b1\u30c3\u30c8\u914d\u5217\u304c\u5fc5\u8981\n int[] counter = new int[10];\n int n = nums.length;\n // \u6841 0~9 \u306e\u51fa\u73fe\u56de\u6570\u3092\u7d71\u8a08\n for (int i = 0; i &lt; n; i++) {\n int d = digit(nums[i], exp); // nums[i] \u306e k \u756a\u76ee\u306e\u6841\u3092\u53d6\u5f97\u3001d \u3068\u3059\u308b\n counter[d]++; // \u6841 d \u306e\u51fa\u73fe\u56de\u6570\u3092\u7d71\u8a08\n }\n // \u7d2f\u7a4d\u548c\u3092\u8a08\u7b97\u3057\u3001\u300c\u51fa\u73fe\u56de\u6570\u300d\u3092\u300c\u914d\u5217\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u300d\u306b\u5909\u63db\n for (int i = 1; i &lt; 10; i++) {\n counter[i] += counter[i - 1];\n }\n // \u9006\u9806\u306b\u8d70\u67fb\u3057\u3001\u30d0\u30b1\u30c3\u30c8\u7d71\u8a08\u306b\u57fa\u3065\u3044\u3066\u5404\u8981\u7d20\u3092 res \u306b\u914d\u7f6e\n int[] res = new int[n];\n for (int i = n - 1; i &gt;= 0; i--) {\n int d = digit(nums[i], exp);\n int j = counter[d] - 1; // \u914d\u5217\u5185\u3067\u306e d \u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 j \u3092\u53d6\u5f97\n res[j] = nums[i]; // \u73fe\u5728\u306e\u8981\u7d20\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 j \u306b\u914d\u7f6e\n counter[d]--; // d \u306e\u30ab\u30a6\u30f3\u30c8\u3092 1 \u6e1b\u3089\u3059\n }\n // \u7d50\u679c\u3067\u5143\u306e\u914d\u5217 nums \u3092\u4e0a\u66f8\u304d\n for (int i = 0; i &lt; n; i++)\n nums[i] = res[i];\n}\n\n/* \u57fa\u6570\u30bd\u30fc\u30c8 */\nvoid radixSort(int[] nums) {\n // \u914d\u5217\u306e\u6700\u5927\u8981\u7d20\u3092\u53d6\u5f97\u3057\u3001\u6700\u5927\u6841\u6570\u3092\u5224\u5b9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\n int m = Integer.MIN_VALUE;\n for (int num : nums)\n if (num &gt; m)\n m = num;\n // \u6700\u4e0b\u4f4d\u6841\u304b\u3089\u6700\u4e0a\u4f4d\u6841\u307e\u3067\u8d70\u67fb\n for (int exp = 1; exp &lt;= m; exp *= 10) {\n // \u914d\u5217\u8981\u7d20\u306e k \u756a\u76ee\u306e\u6841\u306b\u5bfe\u3057\u3066\u8a08\u6570\u30bd\u30fc\u30c8\u3092\u5b9f\u884c\n // k = 1 -&gt; exp = 1\n // k = 2 -&gt; exp = 10\n // \u3059\u306a\u308f\u3061 exp = 10^(k-1)\n countingSortDigit(nums, exp);\n }\n}\n</code></pre> radix_sort.cs<pre><code>[class]{radix_sort}-[func]{Digit}\n\n[class]{radix_sort}-[func]{CountingSortDigit}\n\n[class]{radix_sort}-[func]{RadixSort}\n</code></pre> radix_sort.go<pre><code>[class]{}-[func]{digit}\n\n[class]{}-[func]{countingSortDigit}\n\n[class]{}-[func]{radixSort}\n</code></pre> radix_sort.swift<pre><code>[class]{}-[func]{digit}\n\n[class]{}-[func]{countingSortDigit}\n\n[class]{}-[func]{radixSort}\n</code></pre> radix_sort.js<pre><code>[class]{}-[func]{digit}\n\n[class]{}-[func]{countingSortDigit}\n\n[class]{}-[func]{radixSort}\n</code></pre> radix_sort.ts<pre><code>[class]{}-[func]{digit}\n\n[class]{}-[func]{countingSortDigit}\n\n[class]{}-[func]{radixSort}\n</code></pre> radix_sort.dart<pre><code>[class]{}-[func]{digit}\n\n[class]{}-[func]{countingSortDigit}\n\n[class]{}-[func]{radixSort}\n</code></pre> radix_sort.rs<pre><code>[class]{}-[func]{digit}\n\n[class]{}-[func]{counting_sort_digit}\n\n[class]{}-[func]{radix_sort}\n</code></pre> radix_sort.c<pre><code>[class]{}-[func]{digit}\n\n[class]{}-[func]{countingSortDigit}\n\n[class]{}-[func]{radixSort}\n</code></pre> radix_sort.kt<pre><code>[class]{}-[func]{digit}\n\n[class]{}-[func]{countingSortDigit}\n\n[class]{}-[func]{radixSort}\n</code></pre> radix_sort.rb<pre><code>[class]{}-[func]{digit}\n\n[class]{}-[func]{counting_sort_digit}\n\n[class]{}-[func]{radix_sort}\n</code></pre> <p>\u306a\u305c\u6700\u4e0b\u4f4d\u6841\u304b\u3089\u958b\u59cb\u3059\u308b\u306e\u304b\uff1f</p> <p>\u9023\u7d9a\u3059\u308b\u30bd\u30fc\u30c8\u30e9\u30a6\u30f3\u30c9\u3067\u306f\u3001\u5f8c\u306e\u30e9\u30a6\u30f3\u30c9\u306e\u7d50\u679c\u304c\u524d\u306e\u30e9\u30a6\u30f3\u30c9\u306e\u7d50\u679c\u3092\u4e0a\u66f8\u304d\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u6700\u521d\u306e\u30e9\u30a6\u30f3\u30c9\u306e\u7d50\u679c\u304c \\(a &lt; b\\) \u3067\u30012\u756a\u76ee\u306e\u30e9\u30a6\u30f3\u30c9\u304c \\(a &gt; b\\) \u306e\u5834\u5408\u30012\u756a\u76ee\u306e\u30e9\u30a6\u30f3\u30c9\u306e\u7d50\u679c\u304c\u6700\u521d\u306e\u30e9\u30a6\u30f3\u30c9\u306e\u7d50\u679c\u3092\u7f6e\u304d\u63db\u3048\u307e\u3059\u3002\u4e0a\u4f4d\u6841\u306f\u4e0b\u4f4d\u6841\u3088\u308a\u512a\u5148\u3055\u308c\u308b\u305f\u3081\u3001\u4e0a\u4f4d\u6841\u306e\u524d\u306b\u4e0b\u4f4d\u6841\u3092\u30bd\u30fc\u30c8\u3059\u308b\u3053\u3068\u304c\u7406\u306b\u304b\u306a\u3063\u3066\u3044\u307e\u3059\u3002</p>"},{"location":"chapter_sorting/radix_sort/#11102","title":"11.10.2 \u00a0 \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u7279\u5fb4","text":"<p>\u8a08\u6570\u30bd\u30fc\u30c8\u3068\u6bd4\u8f03\u3057\u3066\u3001\u57fa\u6570\u30bd\u30fc\u30c8\u306f\u3088\u308a\u5927\u304d\u306a\u6570\u5024\u7bc4\u56f2\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u30c7\u30fc\u30bf\u304c\u56fa\u5b9a\u6841\u6570\u3067\u8868\u73fe\u3067\u304d\u3001\u6841\u6570\u304c\u3042\u307e\u308a\u5927\u304d\u304f\u306a\u3044\u3053\u3068\u3092\u524d\u63d0\u3068\u3057\u3066\u3044\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\u306f\u6841\u6570 \\(k\\) \u304c\u5927\u304d\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u3001\u6642\u9593\u8a08\u7b97\u91cf \\(O(nk) \\gg O(n^2)\\) \u306b\u3064\u306a\u304c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u57fa\u6570\u30bd\u30fc\u30c8\u306b\u306f\u9069\u3057\u3066\u3044\u307e\u305b\u3093\u3002</p> <ul> <li>\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(nk)\\)\u3001\u975e\u9069\u5fdc\u30bd\u30fc\u30c8\uff1a\u30c7\u30fc\u30bf\u30b5\u30a4\u30ba\u3092 \\(n\\)\u3001\u30c7\u30fc\u30bf\u304c\u57fa\u6570 \\(d\\)\u3001\u6700\u5927\u6841\u6570\u3092 \\(k\\) \u3068\u3059\u308b\u3068\u3001\u5358\u4e00\u6841\u306e\u30bd\u30fc\u30c8\u306b\u306f \\(O(n + d)\\) \u6642\u9593\u304c\u304b\u304b\u308a\u3001\u3059\u3079\u3066\u306e \\(k\\) \u6841\u306e\u30bd\u30fc\u30c8\u306b\u306f \\(O((n + d)k)\\) \u6642\u9593\u304c\u304b\u304b\u308a\u307e\u3059\u3002\u4e00\u822c\u7684\u306b\u3001\\(d\\) \u3068 \\(k\\) \u306f\u3069\u3061\u3089\u3082\u6bd4\u8f03\u7684\u5c0f\u3055\u304f\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(n)\\) \u306b\u8fd1\u3065\u304d\u307e\u3059\u3002</li> <li>\u7a7a\u9593\u8a08\u7b97\u91cf\u306f \\(O(n + d)\\)\u3001\u975e\u30a4\u30f3\u30d7\u30ec\u30fc\u30b9\u30bd\u30fc\u30c8\uff1a\u8a08\u6570\u30bd\u30fc\u30c8\u3068\u540c\u69d8\u306b\u3001\u57fa\u6570\u30bd\u30fc\u30c8\u306f\u9577\u3055 \\(n\\) \u3068 \\(d\\) \u306e\u914d\u5217 <code>res</code> \u3068 <code>counter</code> \u306b\u305d\u308c\u305e\u308c\u4f9d\u5b58\u3057\u307e\u3059\u3002</li> <li>\u5b89\u5b9a\u30bd\u30fc\u30c8\uff1a\u8a08\u6570\u30bd\u30fc\u30c8\u304c\u5b89\u5b9a\u306a\u5834\u5408\u3001\u57fa\u6570\u30bd\u30fc\u30c8\u3082\u5b89\u5b9a\u3067\u3059\u3002\u8a08\u6570\u30bd\u30fc\u30c8\u304c\u4e0d\u5b89\u5b9a\u306a\u5834\u5408\u3001\u57fa\u6570\u30bd\u30fc\u30c8\u306f\u6b63\u3057\u3044\u30bd\u30fc\u30c8\u9806\u5e8f\u3092\u4fdd\u8a3c\u3067\u304d\u307e\u305b\u3093\u3002</li> </ul>"},{"location":"chapter_sorting/selection_sort/","title":"11.2 \u00a0 \u9078\u629e\u30bd\u30fc\u30c8","text":"<p>\u9078\u629e\u30bd\u30fc\u30c8\u306f\u975e\u5e38\u306b\u30b7\u30f3\u30d7\u30eb\u306a\u539f\u7406\u3067\u52d5\u4f5c\u3057\u307e\u3059\uff1a\u5404\u53cd\u5fa9\u3067\u672a\u30bd\u30fc\u30c8\u533a\u9593\u304b\u3089\u6700\u5c0f\u8981\u7d20\u3092\u9078\u629e\u3057\u3001\u30bd\u30fc\u30c8\u6e08\u307f\u30bb\u30af\u30b7\u30e7\u30f3\u306e\u672b\u5c3e\u306b\u79fb\u52d5\u3059\u308b\u30eb\u30fc\u30d7\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</p> <p>\u914d\u5217\u306e\u9577\u3055\u3092\\(n\\)\u3068\u3059\u308b\u3068\u3001\u9078\u629e\u30bd\u30fc\u30c8\u306e\u30b9\u30c6\u30c3\u30d7\u306f\u4e0b\u56f3\u306b\u793a\u3055\u308c\u307e\u3059\u3002</p> <ol> <li>\u6700\u521d\u306b\u3001\u3059\u3079\u3066\u306e\u8981\u7d20\u306f\u672a\u30bd\u30fc\u30c8\u3067\u3001\u3064\u307e\u308a\u672a\u30bd\u30fc\u30c8\uff08\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\uff09\u533a\u9593\u306f\\([0, n-1]\\)\u3067\u3059\u3002</li> <li>\u533a\u9593\\([0, n-1]\\)\u306e\u6700\u5c0f\u8981\u7d20\u3092\u9078\u629e\u3057\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\\(0\\)\u306e\u8981\u7d20\u3068\u4ea4\u63db\u3057\u307e\u3059\u3002\u3053\u306e\u5f8c\u3001\u914d\u5217\u306e\u6700\u521d\u306e\u8981\u7d20\u304c\u30bd\u30fc\u30c8\u3055\u308c\u307e\u3059\u3002</li> <li>\u533a\u9593\\([1, n-1]\\)\u306e\u6700\u5c0f\u8981\u7d20\u3092\u9078\u629e\u3057\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\\(1\\)\u306e\u8981\u7d20\u3068\u4ea4\u63db\u3057\u307e\u3059\u3002\u3053\u306e\u5f8c\u3001\u914d\u5217\u306e\u6700\u521d\u306e2\u3064\u306e\u8981\u7d20\u304c\u30bd\u30fc\u30c8\u3055\u308c\u307e\u3059\u3002</li> <li>\u3053\u306e\u65b9\u6cd5\u3067\u7d9a\u884c\u3057\u307e\u3059\u3002\\(n - 1\\)\u30e9\u30a6\u30f3\u30c9\u306e\u9078\u629e\u3068\u4ea4\u63db\u306e\u5f8c\u3001\u6700\u521d\u306e\\(n - 1\\)\u500b\u306e\u8981\u7d20\u304c\u30bd\u30fc\u30c8\u3055\u308c\u307e\u3059\u3002</li> <li>\u6b8b\u308a\u306e\u552f\u4e00\u306e\u8981\u7d20\u306f\u7d50\u679c\u7684\u306b\u6700\u5927\u8981\u7d20\u3067\u3042\u308a\u3001\u30bd\u30fc\u30c8\u3059\u308b\u5fc5\u8981\u304c\u306a\u3044\u305f\u3081\u3001\u914d\u5217\u306f\u30bd\u30fc\u30c8\u3055\u308c\u307e\u3059\u3002</li> </ol> &lt;1&gt;&lt;2&gt;&lt;3&gt;&lt;4&gt;&lt;5&gt;&lt;6&gt;&lt;7&gt;&lt;8&gt;&lt;9&gt;&lt;10&gt;&lt;11&gt; <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p> \u56f3 11-2 \u00a0 Selection sort process </p> <p>\u30b3\u30fc\u30c9\u3067\u306f\u3001\\(k\\)\u3092\u4f7f\u7528\u3057\u3066\u672a\u30bd\u30fc\u30c8\u533a\u9593\u5185\u306e\u6700\u5c0f\u8981\u7d20\u3092\u8a18\u9332\u3057\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby selection_sort.py<pre><code>def selection_sort(nums: list[int]):\n \"\"\"\u9078\u629e\u30bd\u30fc\u30c8\"\"\"\n n = len(nums)\n # \u5916\u5074\u306e\u30eb\u30fc\u30d7\uff1a\u672a\u30bd\u30fc\u30c8\u7bc4\u56f2\u306f [i, n-1]\n for i in range(n - 1):\n # \u5185\u5074\u306e\u30eb\u30fc\u30d7\uff1a\u672a\u30bd\u30fc\u30c8\u7bc4\u56f2\u5185\u3067\u6700\u5c0f\u8981\u7d20\u3092\u898b\u3064\u3051\u308b\n k = i\n for j in range(i + 1, n):\n if nums[j] &lt; nums[k]:\n k = j # \u6700\u5c0f\u8981\u7d20\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8a18\u9332\n # \u6700\u5c0f\u8981\u7d20\u3092\u672a\u30bd\u30fc\u30c8\u7bc4\u56f2\u306e\u5148\u982d\u8981\u7d20\u3068\u4ea4\u63db\n nums[i], nums[k] = nums[k], nums[i]\n</code></pre> selection_sort.cpp<pre><code>/* \u9078\u629e\u30bd\u30fc\u30c8 */\nvoid selectionSort(vector&lt;int&gt; &amp;nums) {\n int n = nums.size();\n // \u5916\u5074\u30eb\u30fc\u30d7\uff1a\u672a\u30bd\u30fc\u30c8\u7bc4\u56f2\u306f[i, n-1]\n for (int i = 0; i &lt; n - 1; i++) {\n // \u5185\u5074\u30eb\u30fc\u30d7\uff1a\u672a\u30bd\u30fc\u30c8\u7bc4\u56f2\u5185\u3067\u6700\u5c0f\u8981\u7d20\u3092\u898b\u3064\u3051\u308b\n int k = i;\n for (int j = i + 1; j &lt; n; j++) {\n if (nums[j] &lt; nums[k])\n k = j; // \u6700\u5c0f\u8981\u7d20\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8a18\u9332\n }\n // \u6700\u5c0f\u8981\u7d20\u3092\u672a\u30bd\u30fc\u30c8\u7bc4\u56f2\u306e\u6700\u521d\u306e\u8981\u7d20\u3068\u4ea4\u63db\n swap(nums[i], nums[k]);\n }\n}\n</code></pre> selection_sort.java<pre><code>/* \u9078\u629e\u30bd\u30fc\u30c8 */\nvoid selectionSort(int[] nums) {\n int n = nums.length;\n // \u5916\u5074\u30eb\u30fc\u30d7: \u672a\u30bd\u30fc\u30c8\u7bc4\u56f2\u306f [i, n-1]\n for (int i = 0; i &lt; n - 1; i++) {\n // \u5185\u5074\u30eb\u30fc\u30d7: \u672a\u30bd\u30fc\u30c8\u7bc4\u56f2\u5185\u3067\u6700\u5c0f\u8981\u7d20\u3092\u898b\u3064\u3051\u308b\n int k = i;\n for (int j = i + 1; j &lt; n; j++) {\n if (nums[j] &lt; nums[k])\n k = j; // \u6700\u5c0f\u8981\u7d20\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8a18\u9332\n }\n // \u6700\u5c0f\u8981\u7d20\u3068\u672a\u30bd\u30fc\u30c8\u7bc4\u56f2\u306e\u6700\u521d\u306e\u8981\u7d20\u3092\u4ea4\u63db\n int temp = nums[i];\n nums[i] = nums[k];\n nums[k] = temp;\n }\n}\n</code></pre> selection_sort.cs<pre><code>[class]{selection_sort}-[func]{SelectionSort}\n</code></pre> selection_sort.go<pre><code>[class]{}-[func]{selectionSort}\n</code></pre> selection_sort.swift<pre><code>[class]{}-[func]{selectionSort}\n</code></pre> selection_sort.js<pre><code>[class]{}-[func]{selectionSort}\n</code></pre> selection_sort.ts<pre><code>[class]{}-[func]{selectionSort}\n</code></pre> selection_sort.dart<pre><code>[class]{}-[func]{selectionSort}\n</code></pre> selection_sort.rs<pre><code>[class]{}-[func]{selection_sort}\n</code></pre> selection_sort.c<pre><code>[class]{}-[func]{selectionSort}\n</code></pre> selection_sort.kt<pre><code>[class]{}-[func]{selectionSort}\n</code></pre> selection_sort.rb<pre><code>[class]{}-[func]{selection_sort}\n</code></pre>"},{"location":"chapter_sorting/selection_sort/#1121","title":"11.2.1 \u00a0 \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u7279\u6027","text":"<ul> <li>\\(O(n^2)\\)\u306e\u6642\u9593\u8a08\u7b97\u91cf\u3001\u975e\u9069\u5fdc\u30bd\u30fc\u30c8\uff1a\u5916\u5074\u30eb\u30fc\u30d7\u306b\\(n - 1\\)\u56de\u306e\u53cd\u5fa9\u304c\u3042\u308a\u3001\u672a\u30bd\u30fc\u30c8\u30bb\u30af\u30b7\u30e7\u30f3\u306e\u9577\u3055\u306f\u6700\u521d\u306e\u53cd\u5fa9\u3067\\(n\\)\u304b\u3089\u59cb\u307e\u308a\u3001\u6700\u5f8c\u306e\u53cd\u5fa9\u3067\\(2\\)\u307e\u3067\u6e1b\u5c11\u3057\u307e\u3059\u3002\u3064\u307e\u308a\u3001\u5404\u5916\u5074\u30eb\u30fc\u30d7\u53cd\u5fa9\u306b\u306f\u305d\u308c\u305e\u308c\\(n\\)\u3001\\(n - 1\\)\u3001\\(\\dots\\)\u3001\\(3\\)\u3001\\(2\\)\u56de\u306e\u5185\u5074\u30eb\u30fc\u30d7\u53cd\u5fa9\u304c\u542b\u307e\u308c\u3001\u5408\u8a08\u306f\\(\\frac{(n - 1)(n + 2)}{2}\\)\u3068\u306a\u308a\u307e\u3059\u3002</li> <li>\\(O(1)\\)\u306e\u7a7a\u9593\u8a08\u7b97\u91cf\u3001\u30a4\u30f3\u30d7\u30ec\u30fc\u30b9\u30bd\u30fc\u30c8\uff1a\u30dd\u30a4\u30f3\u30bf\\(i\\)\u3068\\(j\\)\u3067\u5b9a\u6570\u306e\u8ffd\u52a0\u7a7a\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</li> <li>\u975e\u5b89\u5b9a\u30bd\u30fc\u30c8\uff1a\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u8981\u7d20<code>nums[i]</code>\u306f\u7b49\u3057\u3044\u8981\u7d20\u306e\u53f3\u5074\u306b\u4ea4\u63db\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u3001\u76f8\u5bfe\u9806\u5e8f\u304c\u5909\u308f\u308b\u539f\u56e0\u3068\u306a\u308a\u307e\u3059\u3002</li> </ul> <p> \u56f3 11-3 \u00a0 Selection sort instability example </p>"},{"location":"chapter_sorting/sorting_algorithm/","title":"11.1 \u00a0 \u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0","text":"<p>\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u3001\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092\u7279\u5b9a\u306e\u9806\u5e8f\u3067\u914d\u5217\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u3001\u9806\u5e8f\u4ed8\u3051\u3089\u308c\u305f\u30c7\u30fc\u30bf\u306f\u901a\u5e38\u3001\u3088\u308a\u52b9\u7387\u7684\u306b\u63a2\u7d22\u3001\u5206\u6790\u3001\u51e6\u7406\u3067\u304d\u308b\u305f\u3081\u3001\u5e45\u5e83\u3044\u5fdc\u7528\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u30c7\u30fc\u30bf\u578b\u306f\u6574\u6570\u3001\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\u3001\u6587\u5b57\u3001\u6587\u5b57\u5217\u306a\u3069\u3067\u3059\u3002\u30bd\u30fc\u30c8\u57fa\u6e96\u306f\u3001\u6570\u5024\u30b5\u30a4\u30ba\u3001\u6587\u5b57ASCII\u9806\u5e8f\u3001\u307e\u305f\u306f\u30ab\u30b9\u30bf\u30e0\u57fa\u6e96\u306a\u3069\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002</p> <p></p> <p> \u56f3 11-1 \u00a0 Data types and comparator examples </p>"},{"location":"chapter_sorting/sorting_algorithm/#1111","title":"11.1.1 \u00a0 \u8a55\u4fa1\u6b21\u5143","text":"<p>\u5b9f\u884c\u52b9\u7387\uff1a\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u6642\u9593\u8a08\u7b97\u91cf\u304c\u3067\u304d\u308b\u3060\u3051\u4f4e\u3044\u3053\u3068\u3092\u671f\u5f85\u3057\u3001\u5168\u4f53\u7684\u306a\u64cd\u4f5c\u6570\u3082\u5c11\u306a\u3044\u3053\u3068\uff08\u6642\u9593\u8a08\u7b97\u91cf\u306e\u5b9a\u6570\u9805\u3092\u4e0b\u3052\u308b\uff09\u3092\u671b\u307f\u307e\u3059\u3002\u5927\u5bb9\u91cf\u30c7\u30fc\u30bf\u3067\u306f\u3001\u5b9f\u884c\u52b9\u7387\u304c\u7279\u306b\u91cd\u8981\u3067\u3059\u3002</p> <p>\u30a4\u30f3\u30d7\u30ec\u30fc\u30b9\u6027\uff1a\u540d\u524d\u304c\u793a\u3059\u3068\u304a\u308a\u3001\u30a4\u30f3\u30d7\u30ec\u30fc\u30b9\u30bd\u30fc\u30c8\u306f\u5143\u306e\u914d\u5217\u3092\u76f4\u63a5\u64cd\u4f5c\u3059\u308b\u3053\u3068\u3067\u5b9f\u73fe\u3055\u308c\u3001\u8ffd\u52a0\u306e\u30d8\u30eb\u30d1\u30fc\u914d\u5217\u304c\u4e0d\u8981\u3067\u3042\u308b\u305f\u3081\u3001\u30e1\u30e2\u30ea\u3092\u7bc0\u7d04\u3057\u307e\u3059\u3002\u4e00\u822c\u7684\u306b\u3001\u30a4\u30f3\u30d7\u30ec\u30fc\u30b9\u30bd\u30fc\u30c8\u306f\u30c7\u30fc\u30bf\u79fb\u52d5\u64cd\u4f5c\u304c\u5c11\u306a\u304f\u3001\u9ad8\u901f\u3067\u3059\u3002</p> <p>\u5b89\u5b9a\u6027\uff1a\u5b89\u5b9a\u30bd\u30fc\u30c8\u306f\u3001\u30bd\u30fc\u30c8\u5f8c\u306b\u914d\u5217\u5185\u306e\u7b49\u3057\u3044\u8981\u7d20\u306e\u76f8\u5bfe\u9806\u5e8f\u304c\u5909\u308f\u3089\u306a\u3044\u3053\u3068\u3092\u4fdd\u8a3c\u3057\u307e\u3059\u3002</p> <p>\u5b89\u5b9a\u30bd\u30fc\u30c8\u306f\u3001\u30de\u30eb\u30c1\u30ad\u30fc\u30bd\u30fc\u30c8\u30b7\u30ca\u30ea\u30aa\u306b\u304a\u3044\u3066\u5fc5\u8981\u6761\u4ef6\u3067\u3059\u3002\u5b66\u751f\u60c5\u5831\u3092\u683c\u7d0d\u3059\u308b\u30c6\u30fc\u30d6\u30eb\u304c\u3042\u308a\u3001\u7b2c1\u5217\u3068\u7b2c2\u5217\u304c\u305d\u308c\u305e\u308c\u540d\u524d\u3068\u5e74\u9f62\u3067\u3042\u308b\u3068\u3057\u307e\u3059\u3002\u3053\u306e\u5834\u5408\u3001\u4e0d\u5b89\u5b9a\u30bd\u30fc\u30c8\u306f\u5165\u529b\u30c7\u30fc\u30bf\u306e\u9806\u5e8f\u3092\u5931\u3046\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\uff1a</p> <pre><code># \u5165\u529b\u30c7\u30fc\u30bf\u306f\u540d\u524d\u3067\u30bd\u30fc\u30c8\u6e08\u307f\n# (\u540d\u524d, \u5e74\u9f62)\n ('A', 19)\n ('B', 18)\n ('C', 21)\n ('D', 19)\n ('E', 23)\n\n# \u4e0d\u5b89\u5b9a\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u4f7f\u7528\u3057\u3066\u30ea\u30b9\u30c8\u3092\u5e74\u9f62\u3067\u30bd\u30fc\u30c8\u3059\u308b\u3068\u4eee\u5b9a\u3059\u308b\u3068\u3001\n# \u7d50\u679c\u306f('D', 19)\u3068('A', 19)\u306e\u76f8\u5bfe\u4f4d\u7f6e\u3092\u5909\u66f4\u3057\u3001\n# \u5165\u529b\u30c7\u30fc\u30bf\u304c\u540d\u524d\u3067\u30bd\u30fc\u30c8\u6e08\u307f\u3067\u3042\u308b\u3068\u3044\u3046\u6027\u8cea\u304c\u5931\u308f\u308c\u308b\n ('B', 18)\n ('D', 19)\n ('A', 19)\n ('C', 21)\n ('E', 23)\n</code></pre> <p>\u9069\u5fdc\u6027\uff1a\u9069\u5fdc\u30bd\u30fc\u30c8\u306f\u5165\u529b\u30c7\u30fc\u30bf\u5185\u306e\u65e2\u5b58\u306e\u9806\u5e8f\u60c5\u5831\u3092\u6d3b\u7528\u3057\u3066\u8a08\u7b97\u8ca0\u8377\u3092\u524a\u6e1b\u3057\u3001\u3088\u308a\u6700\u9069\u306a\u6642\u9593\u52b9\u7387\u3092\u5b9f\u73fe\u3057\u307e\u3059\u3002\u9069\u5fdc\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u6700\u826f\u30b1\u30fc\u30b9\u6642\u9593\u8a08\u7b97\u91cf\u306f\u3001\u901a\u5e38\u5e73\u5747\u30b1\u30fc\u30b9\u6642\u9593\u8a08\u7b97\u91cf\u3088\u308a\u3082\u512a\u308c\u3066\u3044\u307e\u3059\u3002</p> <p>\u6bd4\u8f03\u30d9\u30fc\u30b9\u307e\u305f\u306f\u975e\u6bd4\u8f03\u30d9\u30fc\u30b9\uff1a\u6bd4\u8f03\u30d9\u30fc\u30b9\u30bd\u30fc\u30c8\u306f\u6bd4\u8f03\u6f14\u7b97\u5b50\uff08\\(&lt;\\)\u3001\\(=\\)\u3001\\(&gt;\\)\uff09\u306b\u4f9d\u5b58\u3057\u3066\u8981\u7d20\u306e\u76f8\u5bfe\u9806\u5e8f\u3092\u6c7a\u5b9a\u3057\u3001\u914d\u5217\u5168\u4f53\u3092\u30bd\u30fc\u30c8\u3057\u307e\u3059\u3002\u7406\u8ad6\u7684\u6700\u9069\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n \\log n)\\)\u3067\u3059\u3002\u4e00\u65b9\u3001\u975e\u6bd4\u8f03\u30bd\u30fc\u30c8\u306f\u6bd4\u8f03\u6f14\u7b97\u5b50\u3092\u4f7f\u7528\u305b\u305a\u3001\\(O(n)\\)\u306e\u6642\u9593\u8a08\u7b97\u91cf\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u304c\u3001\u6c4e\u7528\u6027\u306f\u6bd4\u8f03\u7684\u52a3\u308a\u307e\u3059\u3002</p>"},{"location":"chapter_sorting/sorting_algorithm/#1112","title":"11.1.2 \u00a0 \u7406\u60f3\u7684\u306a\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0","text":"<p>\u9ad8\u901f\u5b9f\u884c\u3001\u30a4\u30f3\u30d7\u30ec\u30fc\u30b9\u3001\u5b89\u5b9a\u3001\u9069\u5fdc\u3001\u6c4e\u7528\u3002\u660e\u3089\u304b\u306b\u3001\u3053\u308c\u3089\u306e\u3059\u3079\u3066\u306e\u7279\u5fb4\u3092\u7d44\u307f\u5408\u308f\u305b\u305f\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u4eca\u65e5\u307e\u3067\u898b\u3064\u304b\u3063\u3066\u3044\u307e\u305b\u3093\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u9078\u629e\u3059\u308b\u969b\u306f\u3001\u30c7\u30fc\u30bf\u306e\u7279\u5b9a\u306e\u7279\u5fb4\u3068\u554f\u984c\u306e\u8981\u4ef6\u306b\u57fa\u3065\u3044\u3066\u6c7a\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>\u6b21\u306b\u3001\u3055\u307e\u3056\u307e\u306a\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u4e00\u7dd2\u306b\u5b66\u3073\u3001\u4e0a\u8a18\u306e\u8a55\u4fa1\u6b21\u5143\u306b\u57fa\u3065\u3044\u3066\u305d\u308c\u305e\u308c\u306e\u5229\u70b9\u3068\u6b20\u70b9\u3092\u5206\u6790\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_sorting/summary/","title":"11.11 \u00a0 \u307e\u3068\u3081","text":""},{"location":"chapter_sorting/summary/#1","title":"1. \u00a0 \u91cd\u8981\u306a\u5fa9\u7fd2","text":"<ul> <li>\u30d0\u30d6\u30eb\u30bd\u30fc\u30c8\u306f\u96a3\u63a5\u3059\u308b\u8981\u7d20\u3092\u4ea4\u63db\u3059\u308b\u3053\u3068\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002\u30d5\u30e9\u30b0\u3092\u8ffd\u52a0\u3057\u3066\u65e9\u671f\u30ea\u30bf\u30fc\u30f3\u3092\u53ef\u80fd\u306b\u3059\u308b\u3053\u3068\u3067\u3001\u30d0\u30d6\u30eb\u30bd\u30fc\u30c8\u306e\u6700\u826f\u30b1\u30fc\u30b9\u306e\u6642\u9593\u8a08\u7b97\u91cf\u3092 \\(O(n)\\) \u306b\u6700\u9069\u5316\u3067\u304d\u307e\u3059\u3002</li> <li>\u633f\u5165\u30bd\u30fc\u30c8\u306f\u3001\u672a\u30bd\u30fc\u30c8\u533a\u9593\u304b\u3089\u8981\u7d20\u3092\u53d6\u308a\u51fa\u3057\u3066\u30bd\u30fc\u30c8\u6e08\u307f\u533a\u9593\u306e\u6b63\u3057\u3044\u4f4d\u7f6e\u306b\u633f\u5165\u3059\u308b\u3053\u3068\u3067\u5404\u30e9\u30a6\u30f3\u30c9\u3092\u30bd\u30fc\u30c8\u3057\u307e\u3059\u3002\u633f\u5165\u30bd\u30fc\u30c8\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(n^2)\\) \u3067\u3059\u304c\u3001\u5358\u4f4d\u3042\u305f\u308a\u306e\u64cd\u4f5c\u304c\u6bd4\u8f03\u7684\u5c11\u306a\u3044\u305f\u3081\u3001\u5c11\u91cf\u306e\u30c7\u30fc\u30bf\u306e\u30bd\u30fc\u30c8\u3067\u306f\u975e\u5e38\u306b\u4eba\u6c17\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\u306f\u6b69\u54e8\u5206\u5272\u64cd\u4f5c\u306b\u57fa\u3065\u3044\u3066\u3044\u307e\u3059\u3002\u6b69\u54e8\u5206\u5272\u3067\u306f\u3001\u5e38\u306b\u6700\u60aa\u306e\u30d4\u30dc\u30c3\u30c8\u3092\u9078\u3076\u53ef\u80fd\u6027\u304c\u3042\u308a\u3001\u6642\u9593\u8a08\u7b97\u91cf\u304c \\(O(n^2)\\) \u306b\u52a3\u5316\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u4e2d\u592e\u5024\u3084\u30e9\u30f3\u30c0\u30e0\u30d4\u30dc\u30c3\u30c8\u3092\u5c0e\u5165\u3059\u308b\u3053\u3068\u3067\u3001\u305d\u306e\u3088\u3046\u306a\u52a3\u5316\u306e\u78ba\u7387\u3092\u6e1b\u3089\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u672b\u5c3e\u518d\u5e30\u306f\u518d\u5e30\u306e\u6df1\u3055\u3092\u52b9\u679c\u7684\u306b\u6e1b\u3089\u3057\u3001\u7a7a\u9593\u8a08\u7b97\u91cf\u3092 \\(O(\\log n)\\) \u306b\u6700\u9069\u5316\u3057\u307e\u3059\u3002</li> <li>\u30de\u30fc\u30b8\u30bd\u30fc\u30c8\u306b\u306f\u5206\u5272\u3068\u30de\u30fc\u30b8\u306e2\u3064\u306e\u6bb5\u968e\u304c\u3042\u308a\u3001\u901a\u5e38\u5206\u5272\u7d71\u6cbb\u6226\u7565\u3092\u4f53\u73fe\u3057\u3066\u3044\u307e\u3059\u3002\u30de\u30fc\u30b8\u30bd\u30fc\u30c8\u3067\u306f\u3001\u914d\u5217\u306e\u30bd\u30fc\u30c8\u306b\u306f\u88dc\u52a9\u914d\u5217\u306e\u4f5c\u6210\u304c\u5fc5\u8981\u3067\u3001\u7a7a\u9593\u8a08\u7b97\u91cf\u306f \\(O(n)\\) \u306b\u306a\u308a\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u30ea\u30b9\u30c8\u306e\u30bd\u30fc\u30c8\u306e\u7a7a\u9593\u8a08\u7b97\u91cf\u306f \\(O(1)\\) \u306b\u6700\u9069\u5316\u3067\u304d\u307e\u3059\u3002</li> <li>\u30d0\u30b1\u30c3\u30c8\u30bd\u30fc\u30c8\u306f3\u3064\u306e\u624b\u9806\u304b\u3089\u69cb\u6210\u3055\u308c\u307e\u3059\uff1a\u30c7\u30fc\u30bf\u3092\u30d0\u30b1\u30c3\u30c8\u306b\u5206\u6563\u3001\u5404\u30d0\u30b1\u30c3\u30c8\u5185\u3067\u306e\u30bd\u30fc\u30c8\u3001\u30d0\u30b1\u30c3\u30c8\u9806\u3067\u306e\u7d50\u679c\u306e\u30de\u30fc\u30b8\u3002\u3053\u308c\u3082\u5206\u5272\u7d71\u6cbb\u6226\u7565\u3092\u4f53\u73fe\u3057\u3001\u975e\u5e38\u306b\u5927\u304d\u306a\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002\u30d0\u30b1\u30c3\u30c8\u30bd\u30fc\u30c8\u306e\u9375\u306f\u30c7\u30fc\u30bf\u306e\u5747\u7b49\u5206\u6563\u3067\u3059\u3002</li> <li>\u8a08\u6570\u30bd\u30fc\u30c8\u306f\u30d0\u30b1\u30c3\u30c8\u30bd\u30fc\u30c8\u306e\u5909\u5f62\u3067\u3001\u5404\u30c7\u30fc\u30bf\u30dd\u30a4\u30f3\u30c8\u306e\u51fa\u73fe\u56de\u6570\u3092\u30ab\u30a6\u30f3\u30c8\u3059\u308b\u3053\u3068\u3067\u30bd\u30fc\u30c8\u3057\u307e\u3059\u3002\u8a08\u6570\u30bd\u30fc\u30c8\u306f\u9650\u3089\u308c\u305f\u7bc4\u56f2\u306e\u30c7\u30fc\u30bf\u3092\u6301\u3064\u5927\u304d\u306a\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u306b\u9069\u3057\u3066\u304a\u308a\u3001\u30c7\u30fc\u30bf\u3092\u6b63\u306e\u6574\u6570\u306b\u5909\u63db\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u57fa\u6570\u30bd\u30fc\u30c8\u306f\u6841\u3054\u3068\u306b\u30bd\u30fc\u30c8\u3059\u308b\u3053\u3068\u3067\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3057\u3001\u30c7\u30fc\u30bf\u304c\u56fa\u5b9a\u9577\u306e\u6570\u5024\u3068\u3057\u3066\u8868\u73fe\u3055\u308c\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u5168\u4f53\u7684\u306b\u3001\u79c1\u305f\u3061\u306f\u9ad8\u52b9\u7387\u3001\u5b89\u5b9a\u6027\u3001\u30a4\u30f3\u30d7\u30ec\u30fc\u30b9\u64cd\u4f5c\u3001\u9069\u5fdc\u6027\u3092\u6301\u3064\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u6c42\u3081\u3066\u3044\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u4ed6\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u3084\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3068\u540c\u69d8\u306b\u3001\u3053\u308c\u3089\u3059\u3079\u3066\u306e\u6761\u4ef6\u3092\u540c\u6642\u306b\u6e80\u305f\u3059\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002\u5b9f\u969b\u306e\u5fdc\u7528\u3067\u306f\u3001\u30c7\u30fc\u30bf\u306e\u7279\u6027\u306b\u57fa\u3065\u3044\u3066\u9069\u5207\u306a\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u4ee5\u4e0b\u306e\u56f3\u306f\u3001\u52b9\u7387\u6027\u3001\u5b89\u5b9a\u6027\u3001\u30a4\u30f3\u30d7\u30ec\u30fc\u30b9\u6027\u3001\u9069\u5fdc\u6027\u306e\u89b3\u70b9\u304b\u3089\u4e3b\u6d41\u306e\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u6bd4\u8f03\u3057\u3066\u3044\u307e\u3059\u3002</li> </ul> <p> \u56f3 11-19 \u00a0 \u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u6bd4\u8f03 </p>"},{"location":"chapter_sorting/summary/#2-q-a","title":"2. \u00a0 Q &amp; A","text":"<p>Q: \u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5b89\u5b9a\u6027\u306f\u3044\u3064\u5fc5\u8981\u3067\u3059\u304b\uff1f</p> <p>\u5b9f\u969b\u306b\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u4e00\u3064\u306e\u5c5e\u6027\u306b\u57fa\u3065\u3044\u3066\u30bd\u30fc\u30c8\u3059\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u5b66\u751f\u306f\u540d\u524d\u3068\u8eab\u9577\u306e\u5c5e\u6027\u3092\u6301\u3061\u3001\u591a\u6bb5\u968e\u30bd\u30fc\u30c8\u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3092\u76ee\u6307\u3057\u307e\u3059\uff1a\u6700\u521d\u306b\u540d\u524d\u3067 <code>(A, 180) (B, 185) (C, 170) (D, 170)</code> \u3092\u53d6\u5f97\u3057\u3001\u6b21\u306b\u8eab\u9577\u3067\u3002\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u304c\u4e0d\u5b89\u5b9a\u306a\u305f\u3081\u3001<code>(D, 170) (C, 170) (A, 180) (B, 185)</code> \u306b\u306a\u3063\u3066\u3057\u307e\u3046\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>\u5b66\u751fD\u3068C\u306e\u4f4d\u7f6e\u304c\u4ea4\u63db\u3055\u308c\u3001\u540d\u524d\u306e\u9806\u5e8f\u6027\u304c\u7834\u3089\u308c\u3066\u3044\u308b\u306e\u304c\u5206\u304b\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u671b\u307e\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002</p> <p>Q: \u6b69\u54e8\u5206\u5272\u3067\u306e\u300c\u53f3\u304b\u3089\u5de6\u3078\u306e\u691c\u7d22\u300d\u3068\u300c\u5de6\u304b\u3089\u53f3\u3078\u306e\u691c\u7d22\u300d\u306e\u9806\u5e8f\u3092\u4ea4\u63db\u3067\u304d\u307e\u3059\u304b\uff1f</p> <p>\u3044\u3044\u3048\u3001\u6700\u5de6\u8981\u7d20\u3092\u30d4\u30dc\u30c3\u30c8\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u6700\u521d\u306b\u300c\u53f3\u304b\u3089\u5de6\u3078\u306e\u691c\u7d22\u300d\u3092\u884c\u3044\u3001\u6b21\u306b\u300c\u5de6\u304b\u3089\u53f3\u3078\u306e\u691c\u7d22\u300d\u3092\u884c\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u7d50\u8ad6\u306f\u3084\u3084\u76f4\u89b3\u306b\u53cd\u3059\u308b\u306e\u3067\u3001\u7406\u7531\u3092\u5206\u6790\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002</p> <p>\u6b69\u54e8\u5206\u5272 <code>partition()</code> \u306e\u6700\u5f8c\u306e\u30b9\u30c6\u30c3\u30d7\u306f <code>nums[left]</code> \u3068 <code>nums[i]</code> \u3092\u4ea4\u63db\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u4ea4\u63db\u5f8c\u3001\u30d4\u30dc\u30c3\u30c8\u306e\u5de6\u5074\u306e\u8981\u7d20\u306f\u3059\u3079\u3066\u30d4\u30dc\u30c3\u30c8\u4ee5\u4e0b\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u308c\u306b\u306f\u6700\u5f8c\u306e\u4ea4\u63db\u524d\u306b <code>nums[left] &gt;= nums[i]</code> \u304c\u6210\u308a\u7acb\u3064\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u300c\u5de6\u304b\u3089\u53f3\u3078\u306e\u691c\u7d22\u300d\u3092\u6700\u521d\u306b\u884c\u3044\u3001\u30d4\u30dc\u30c3\u30c8\u3088\u308a\u5927\u304d\u3044\u8981\u7d20\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u5834\u5408\u3001<code>i == j</code> \u3067\u30eb\u30fc\u30d7\u3092\u7d42\u4e86\u3057\u3001<code>nums[j] == nums[i] &gt; nums[left]</code> \u3068\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3064\u307e\u308a\u3001\u6700\u7d42\u4ea4\u63db\u64cd\u4f5c\u306f\u30d4\u30dc\u30c3\u30c8\u3088\u308a\u5927\u304d\u3044\u8981\u7d20\u3092\u914d\u5217\u306e\u5de6\u7aef\u306b\u4ea4\u63db\u3057\u3001\u6b69\u54e8\u5206\u5272\u3092\u5931\u6557\u3055\u305b\u307e\u3059\u3002</p> <p>\u4f8b\u3048\u3070\u3001\u914d\u5217 <code>[0, 0, 0, 0, 1]</code> \u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u3001\u6700\u521d\u306b\u300c\u5de6\u304b\u3089\u53f3\u3078\u306e\u691c\u7d22\u300d\u3092\u884c\u3046\u3068\u3001\u6b69\u54e8\u5206\u5272\u5f8c\u306e\u914d\u5217\u306f <code>[1, 0, 0, 0, 0]</code> \u3068\u306a\u308a\u3001\u3053\u308c\u306f\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002</p> <p>\u3055\u3089\u306b\u8003\u3048\u308b\u3068\u3001<code>nums[right]</code> \u3092\u30d4\u30dc\u30c3\u30c8\u3068\u3057\u3066\u9078\u629e\u3059\u308b\u5834\u5408\u3001\u307e\u3063\u305f\u304f\u9006\u3067\u3001\u6700\u521d\u306b\u300c\u5de6\u304b\u3089\u53f3\u3078\u306e\u691c\u7d22\u300d\u3092\u884c\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>Q: \u672b\u5c3e\u518d\u5e30\u6700\u9069\u5316\u306b\u3064\u3044\u3066\u3001\u77ed\u3044\u914d\u5217\u3092\u9078\u629e\u3059\u308b\u3053\u3068\u3067\u518d\u5e30\u306e\u6df1\u3055\u304c \\(\\log n\\) \u3092\u8d85\u3048\u306a\u3044\u3053\u3068\u3092\u4fdd\u8a3c\u3059\u308b\u306e\u306f\u306a\u305c\u3067\u3059\u304b\uff1f</p> <p>\u518d\u5e30\u306e\u6df1\u3055\u306f\u73fe\u5728\u30ea\u30bf\u30fc\u30f3\u3057\u3066\u3044\u306a\u3044\u518d\u5e30\u30e1\u30bd\u30c3\u30c9\u306e\u6570\u3067\u3059\u3002\u6b69\u54e8\u5206\u5272\u306e\u5404\u30e9\u30a6\u30f3\u30c9\u306f\u5143\u306e\u914d\u5217\u30922\u3064\u306e\u526f\u914d\u5217\u306b\u5206\u5272\u3057\u307e\u3059\u3002\u672b\u5c3e\u518d\u5e30\u6700\u9069\u5316\u306b\u3088\u308a\u3001\u518d\u5e30\u7684\u306b\u7d9a\u884c\u3059\u308b\u526f\u914d\u5217\u306e\u9577\u3055\u306f\u6700\u5927\u3067\u3082\u5143\u306e\u914d\u5217\u9577\u306e\u534a\u5206\u3067\u3059\u3002\u6700\u60aa\u306e\u5834\u5408\u5e38\u306b\u9577\u3055\u3092\u534a\u5206\u306b\u3059\u308b\u3068\u4eee\u5b9a\u3059\u308b\u3068\u3001\u6700\u7d42\u7684\u306a\u518d\u5e30\u306e\u6df1\u3055\u306f \\(\\log n\\) \u306b\u306a\u308a\u307e\u3059\u3002</p> <p>\u5143\u306e\u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\u3092\u898b\u76f4\u3059\u3068\u3001\u3088\u308a\u5927\u304d\u306a\u914d\u5217\u3092\u7d99\u7d9a\u7684\u306b\u518d\u5e30\u51e6\u7406\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u3001\u6700\u60aa\u306e\u5834\u5408 \\(n\\)\u3001\\(n - 1\\)\u3001...\u3001\\(2\\)\u3001\\(1\\) \u3067\u3001\u518d\u5e30\u306e\u6df1\u3055\u306f \\(n\\) \u306b\u306a\u308a\u307e\u3059\u3002\u672b\u5c3e\u518d\u5e30\u6700\u9069\u5316\u306f\u3053\u306e\u30b7\u30ca\u30ea\u30aa\u3092\u56de\u907f\u3067\u304d\u307e\u3059\u3002</p> <p>Q: \u914d\u5217\u306e\u3059\u3079\u3066\u306e\u8981\u7d20\u304c\u7b49\u3057\u3044\u5834\u5408\u3001\u30af\u30a4\u30c3\u30af\u30bd\u30fc\u30c8\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(n^2)\\) \u3067\u3059\u304b\uff1f\u3053\u306e\u52a3\u5316\u30b1\u30fc\u30b9\u3092\u3069\u3046\u51e6\u7406\u3059\u3079\u304d\u3067\u3059\u304b\uff1f</p> <p>\u306f\u3044\u3002\u3053\u306e\u72b6\u6cc1\u306b\u3064\u3044\u3066\u306f\u3001\u6b69\u54e8\u5206\u5272\u3092\u4f7f\u7528\u3057\u3066\u914d\u5217\u3092\u30d4\u30dc\u30c3\u30c8\u3088\u308a\u5c0f\u3055\u3044\u3001\u7b49\u3057\u3044\u3001\u5927\u304d\u3044\u306e3\u3064\u306e\u90e8\u5206\u306b\u5206\u5272\u3059\u308b\u3053\u3068\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u5c0f\u3055\u3044\u90e8\u5206\u3068\u5927\u304d\u3044\u90e8\u5206\u306e\u307f\u3092\u518d\u5e30\u7684\u306b\u9032\u3081\u307e\u3059\u3002\u3053\u306e\u65b9\u6cd5\u3067\u306f\u3001\u3059\u3079\u3066\u306e\u5165\u529b\u8981\u7d20\u304c\u7b49\u3057\u3044\u914d\u5217\u30921\u30e9\u30a6\u30f3\u30c9\u306e\u6b69\u54e8\u5206\u5272\u3060\u3051\u3067\u30bd\u30fc\u30c8\u3067\u304d\u307e\u3059\u3002</p> <p>Q: \u306a\u305c\u30d0\u30b1\u30c3\u30c8\u30bd\u30fc\u30c8\u306e\u6700\u60aa\u30b1\u30fc\u30b9\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(n^2)\\) \u3067\u3059\u304b\uff1f</p> <p>\u6700\u60aa\u306e\u5834\u5408\u3001\u3059\u3079\u3066\u306e\u8981\u7d20\u304c\u540c\u3058\u30d0\u30b1\u30c3\u30c8\u306b\u914d\u7f6e\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u8981\u7d20\u3092\u30bd\u30fc\u30c8\u3059\u308b\u305f\u3081\u306b \\(O(n^2)\\) \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f \\(O(n^2)\\) \u306b\u306a\u308a\u307e\u3059\u3002</p>"},{"location":"chapter_stack_and_queue/","title":"\u7b2c 5 \u7ae0 \u00a0 \u30b9\u30bf\u30c3\u30af\u3068\u30ad\u30e5\u30fc","text":"<p>Abstract</p> <p>\u30b9\u30bf\u30c3\u30af\u306f\u7a4d\u307f\u91cd\u306d\u3089\u308c\u305f\u732b\u306e\u3088\u3046\u306a\u3082\u306e\u3067\u3001\u30ad\u30e5\u30fc\u306f\u4e00\u5217\u306b\u4e26\u3093\u3060\u732b\u306e\u3088\u3046\u306a\u3082\u306e\u3067\u3059\u3002</p> <p>\u305d\u308c\u3089\u306f\u305d\u308c\u305e\u308c\u3001\u5f8c\u5165\u5148\u51fa\uff08LIFO\uff09\u3068\u5148\u5165\u5148\u51fa\uff08FIFO\uff09\u306e\u8ad6\u7406\u95a2\u4fc2\u3092\u8868\u3057\u3066\u3044\u307e\u3059\u3002</p>"},{"location":"chapter_stack_and_queue/#_1","title":"\u7ae0\u306e\u5185\u5bb9","text":"<ul> <li>5.1 \u00a0 \u30b9\u30bf\u30c3\u30af</li> <li>5.2 \u00a0 \u30ad\u30e5\u30fc</li> <li>5.3 \u00a0 \u4e21\u7aef\u30ad\u30e5\u30fc</li> <li>5.4 \u00a0 \u307e\u3068\u3081</li> </ul>"},{"location":"chapter_stack_and_queue/deque/","title":"5.3 \u00a0 \u4e21\u7aef\u30ad\u30e5\u30fc","text":"<p>\u30ad\u30e5\u30fc\u3067\u306f\u3001\u5148\u982d\u304b\u3089\u306e\u8981\u7d20\u306e\u524a\u9664\u3084\u672b\u5c3e\u3078\u306e\u8981\u7d20\u306e\u8ffd\u52a0\u306e\u307f\u304c\u53ef\u80fd\u3067\u3059\u3002\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u4e21\u7aef\u30ad\u30e5\u30fc\uff08deque\uff09\u306f\u3088\u308a\u67d4\u8edf\u6027\u3092\u63d0\u4f9b\u3057\u3001\u5148\u982d\u3068\u672b\u5c3e\u306e\u4e21\u65b9\u3067\u8981\u7d20\u306e\u8ffd\u52a0\u3084\u524a\u9664\u3092\u53ef\u80fd\u306b\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 5-7 \u00a0 \u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u64cd\u4f5c </p>"},{"location":"chapter_stack_and_queue/deque/#531","title":"5.3.1 \u00a0 \u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u4e00\u822c\u7684\u306a\u64cd\u4f5c","text":"<p>\u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u4e00\u822c\u7684\u306a\u64cd\u4f5c\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002\u5177\u4f53\u7684\u306a\u30e1\u30bd\u30c3\u30c9\u540d\u306f\u4f7f\u7528\u3059\u308b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306b\u3088\u3063\u3066\u7570\u306a\u308a\u307e\u3059\u3002</p> <p> \u8868 5-3 \u00a0 \u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u64cd\u4f5c\u52b9\u7387 </p> \u30e1\u30bd\u30c3\u30c9\u540d \u8aac\u660e \u6642\u9593\u8a08\u7b97\u91cf <code>pushFirst()</code> \u5148\u982d\u306b\u8981\u7d20\u3092\u8ffd\u52a0 \\(O(1)\\) <code>pushLast()</code> \u672b\u5c3e\u306b\u8981\u7d20\u3092\u8ffd\u52a0 \\(O(1)\\) <code>popFirst()</code> \u5148\u982d\u8981\u7d20\u3092\u524a\u9664 \\(O(1)\\) <code>popLast()</code> \u672b\u5c3e\u8981\u7d20\u3092\u524a\u9664 \\(O(1)\\) <code>peekFirst()</code> \u5148\u982d\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 \\(O(1)\\) <code>peekLast()</code> \u672b\u5c3e\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 \\(O(1)\\) <p>\u540c\u69d8\u306b\u3001\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u5b9f\u88c5\u3055\u308c\u305f\u4e21\u7aef\u30ad\u30e5\u30fc\u30af\u30e9\u30b9\u3092\u76f4\u63a5\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlin deque.py<pre><code>from collections import deque\n\n# \u4e21\u7aef\u30ad\u30e5\u30fc\u3092\u521d\u671f\u5316\ndeq: deque[int] = deque()\n\n# \u8981\u7d20\u3092\u30a8\u30f3\u30ad\u30e5\u30fc\ndeq.append(2) # \u672b\u5c3e\u306b\u8ffd\u52a0\ndeq.append(5)\ndeq.append(4)\ndeq.appendleft(3) # \u5148\u982d\u306b\u8ffd\u52a0\ndeq.appendleft(1)\n\n# \u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\nfront: int = deq[0] # \u5148\u982d\u8981\u7d20\nrear: int = deq[-1] # \u672b\u5c3e\u8981\u7d20\n\n# \u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc\npop_front: int = deq.popleft() # \u5148\u982d\u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc\npop_rear: int = deq.pop() # \u672b\u5c3e\u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc\n\n# \u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97\nsize: int = len(deq)\n\n# \u4e21\u7aef\u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\nis_empty: bool = len(deq) == 0\n</code></pre> deque.cpp<pre><code>/* \u4e21\u7aef\u30ad\u30e5\u30fc\u3092\u521d\u671f\u5316 */\ndeque&lt;int&gt; deque;\n\n/* \u8981\u7d20\u3092\u30a8\u30f3\u30ad\u30e5\u30fc */\ndeque.push_back(2); // \u672b\u5c3e\u306b\u8ffd\u52a0\ndeque.push_back(5);\ndeque.push_back(4);\ndeque.push_front(3); // \u5148\u982d\u306b\u8ffd\u52a0\ndeque.push_front(1);\n\n/* \u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nint front = deque.front(); // \u5148\u982d\u8981\u7d20\nint back = deque.back(); // \u672b\u5c3e\u8981\u7d20\n\n/* \u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc */\ndeque.pop_front(); // \u5148\u982d\u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc\ndeque.pop_back(); // \u672b\u5c3e\u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc\n\n/* \u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97 */\nint size = deque.size();\n\n/* \u4e21\u7aef\u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d */\nbool empty = deque.empty();\n</code></pre> deque.java<pre><code>/* \u4e21\u7aef\u30ad\u30e5\u30fc\u3092\u521d\u671f\u5316 */\nDeque&lt;Integer&gt; deque = new LinkedList&lt;&gt;();\n\n/* \u8981\u7d20\u3092\u30a8\u30f3\u30ad\u30e5\u30fc */\ndeque.offerLast(2); // \u672b\u5c3e\u306b\u8ffd\u52a0\ndeque.offerLast(5);\ndeque.offerLast(4);\ndeque.offerFirst(3); // \u5148\u982d\u306b\u8ffd\u52a0\ndeque.offerFirst(1);\n\n/* \u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nint peekFirst = deque.peekFirst(); // \u5148\u982d\u8981\u7d20\nint peekLast = deque.peekLast(); // \u672b\u5c3e\u8981\u7d20\n\n/* \u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc */\nint popFirst = deque.pollFirst(); // \u5148\u982d\u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc\nint popLast = deque.pollLast(); // \u672b\u5c3e\u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc\n\n/* \u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97 */\nint size = deque.size();\n\n/* \u4e21\u7aef\u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d */\nboolean isEmpty = deque.isEmpty();\n</code></pre> deque.cs<pre><code>/* \u4e21\u7aef\u30ad\u30e5\u30fc\u3092\u521d\u671f\u5316 */\n// C#\u3067\u306f\u3001LinkedList\u3092\u4e21\u7aef\u30ad\u30e5\u30fc\u3068\u3057\u3066\u4f7f\u7528\nLinkedList&lt;int&gt; deque = new();\n\n/* \u8981\u7d20\u3092\u30a8\u30f3\u30ad\u30e5\u30fc */\ndeque.AddLast(2); // \u672b\u5c3e\u306b\u8ffd\u52a0\ndeque.AddLast(5);\ndeque.AddLast(4);\ndeque.AddFirst(3); // \u5148\u982d\u306b\u8ffd\u52a0\ndeque.AddFirst(1);\n\n/* \u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nint peekFirst = deque.First.Value; // \u5148\u982d\u8981\u7d20\nint peekLast = deque.Last.Value; // \u672b\u5c3e\u8981\u7d20\n\n/* \u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc */\ndeque.RemoveFirst(); // \u5148\u982d\u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc\ndeque.RemoveLast(); // \u672b\u5c3e\u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc\n\n/* \u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97 */\nint size = deque.Count;\n\n/* \u4e21\u7aef\u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d */\nbool isEmpty = deque.Count == 0;\n</code></pre> deque_test.go<pre><code>/* \u4e21\u7aef\u30ad\u30e5\u30fc\u3092\u521d\u671f\u5316 */\n// Go\u3067\u306f\u3001list\u3092\u4e21\u7aef\u30ad\u30e5\u30fc\u3068\u3057\u3066\u4f7f\u7528\ndeque := list.New()\n\n/* \u8981\u7d20\u3092\u30a8\u30f3\u30ad\u30e5\u30fc */\ndeque.PushBack(2) // \u672b\u5c3e\u306b\u8ffd\u52a0\ndeque.PushBack(5)\ndeque.PushBack(4)\ndeque.PushFront(3) // \u5148\u982d\u306b\u8ffd\u52a0\ndeque.PushFront(1)\n\n/* \u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nfront := deque.Front() // \u5148\u982d\u8981\u7d20\nrear := deque.Back() // \u672b\u5c3e\u8981\u7d20\n\n/* \u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc */\ndeque.Remove(front) // \u5148\u982d\u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc\ndeque.Remove(rear) // \u672b\u5c3e\u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc\n\n/* \u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97 */\nsize := deque.Len()\n\n/* \u4e21\u7aef\u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d */\nisEmpty := deque.Len() == 0\n</code></pre> deque.swift<pre><code>/* \u4e21\u7aef\u30ad\u30e5\u30fc\u3092\u521d\u671f\u5316 */\n// Swift\u306b\u306f\u7d44\u307f\u8fbc\u307f\u306e\u4e21\u7aef\u30ad\u30e5\u30fc\u30af\u30e9\u30b9\u304c\u306a\u3044\u305f\u3081\u3001Array\u3092\u4e21\u7aef\u30ad\u30e5\u30fc\u3068\u3057\u3066\u4f7f\u7528\nvar deque: [Int] = []\n\n/* \u8981\u7d20\u3092\u30a8\u30f3\u30ad\u30e5\u30fc */\ndeque.append(2) // \u672b\u5c3e\u306b\u8ffd\u52a0\ndeque.append(5)\ndeque.append(4)\ndeque.insert(3, at: 0) // \u5148\u982d\u306b\u8ffd\u52a0\ndeque.insert(1, at: 0)\n\n/* \u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nlet peekFirst = deque.first! // \u5148\u982d\u8981\u7d20\nlet peekLast = deque.last! // \u672b\u5c3e\u8981\u7d20\n\n/* \u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc */\n// Array\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001popFirst\u306e\u8a08\u7b97\u91cf\u306fO(n)\nlet popFirst = deque.removeFirst() // \u5148\u982d\u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc\nlet popLast = deque.removeLast() // \u672b\u5c3e\u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc\n\n/* \u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97 */\nlet size = deque.count\n\n/* \u4e21\u7aef\u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d */\nlet isEmpty = deque.isEmpty\n</code></pre> deque.js<pre><code>/* \u4e21\u7aef\u30ad\u30e5\u30fc\u3092\u521d\u671f\u5316 */\n// JavaScript\u306b\u306f\u7d44\u307f\u8fbc\u307f\u306e\u4e21\u7aef\u30ad\u30e5\u30fc\u304c\u306a\u3044\u305f\u3081\u3001Array\u3092\u4e21\u7aef\u30ad\u30e5\u30fc\u3068\u3057\u3066\u4f7f\u7528\nconst deque = [];\n\n/* \u8981\u7d20\u3092\u30a8\u30f3\u30ad\u30e5\u30fc */\ndeque.push(2);\ndeque.push(5);\ndeque.push(4);\n// \u6ce8\u610f\uff1aunshift()\u306f\u914d\u5217\u306e\u305f\u3081\u6642\u9593\u8a08\u7b97\u91cf\u304cO(n)\ndeque.unshift(3);\ndeque.unshift(1);\n\n/* \u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nconst peekFirst = deque[0]; // \u5148\u982d\u8981\u7d20\nconst peekLast = deque[deque.length - 1]; // \u672b\u5c3e\u8981\u7d20\n\n/* \u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc */\n// \u6ce8\u610f\uff1ashift()\u306f\u914d\u5217\u306e\u305f\u3081\u6642\u9593\u8a08\u7b97\u91cf\u304cO(n)\nconst popFront = deque.shift(); // \u5148\u982d\u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc\nconst popBack = deque.pop(); // \u672b\u5c3e\u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc\n\n/* \u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97 */\nconst size = deque.length;\n\n/* \u4e21\u7aef\u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d */\nconst isEmpty = size === 0;\n</code></pre> deque.ts<pre><code>/* \u4e21\u7aef\u30ad\u30e5\u30fc\u3092\u521d\u671f\u5316 */\n// TypeScript\u306b\u306f\u7d44\u307f\u8fbc\u307f\u306e\u4e21\u7aef\u30ad\u30e5\u30fc\u304c\u306a\u3044\u305f\u3081\u3001Array\u3092\u4e21\u7aef\u30ad\u30e5\u30fc\u3068\u3057\u3066\u4f7f\u7528\nconst deque: number[] = [];\n\n/* \u8981\u7d20\u3092\u30a8\u30f3\u30ad\u30e5\u30fc */\ndeque.push(2);\ndeque.push(5);\ndeque.push(4);\n// \u6ce8\u610f\uff1aunshift()\u306f\u914d\u5217\u306e\u305f\u3081\u6642\u9593\u8a08\u7b97\u91cf\u304cO(n)\ndeque.unshift(3);\ndeque.unshift(1);\n\n/* \u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nconst peekFirst: number = deque[0]; // \u5148\u982d\u8981\u7d20\nconst peekLast: number = deque[deque.length - 1]; // \u672b\u5c3e\u8981\u7d20\n\n/* \u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc */\n// \u6ce8\u610f\uff1ashift()\u306f\u914d\u5217\u306e\u305f\u3081\u6642\u9593\u8a08\u7b97\u91cf\u304cO(n)\nconst popFront: number = deque.shift() as number; // \u5148\u982d\u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc\nconst popBack: number = deque.pop() as number; // \u672b\u5c3e\u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc\n\n/* \u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97 */\nconst size: number = deque.length;\n\n/* \u4e21\u7aef\u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d */\nconst isEmpty: boolean = size === 0;\n</code></pre> deque.dart<pre><code>/* \u4e21\u7aef\u30ad\u30e5\u30fc\u3092\u521d\u671f\u5316 */\n// Dart\u3067\u306f\u3001Queue\u304c\u4e21\u7aef\u30ad\u30e5\u30fc\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u308b\nQueue&lt;int&gt; deque = Queue&lt;int&gt;();\n\n/* \u8981\u7d20\u3092\u30a8\u30f3\u30ad\u30e5\u30fc */\ndeque.addLast(2); // \u672b\u5c3e\u306b\u8ffd\u52a0\ndeque.addLast(5);\ndeque.addLast(4);\ndeque.addFirst(3); // \u5148\u982d\u306b\u8ffd\u52a0\ndeque.addFirst(1);\n\n/* \u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nint peekFirst = deque.first; // \u5148\u982d\u8981\u7d20\nint peekLast = deque.last; // \u672b\u5c3e\u8981\u7d20\n\n/* \u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc */\nint popFirst = deque.removeFirst(); // \u5148\u982d\u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc\nint popLast = deque.removeLast(); // \u672b\u5c3e\u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc\n\n/* \u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97 */\nint size = deque.length;\n\n/* \u4e21\u7aef\u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d */\nbool isEmpty = deque.isEmpty;\n</code></pre> deque.rs<pre><code>/* \u4e21\u7aef\u30ad\u30e5\u30fc\u3092\u521d\u671f\u5316 */\nlet mut deque: VecDeque&lt;u32&gt; = VecDeque::new();\n\n/* \u8981\u7d20\u3092\u30a8\u30f3\u30ad\u30e5\u30fc */\ndeque.push_back(2); // \u672b\u5c3e\u306b\u8ffd\u52a0\ndeque.push_back(5);\ndeque.push_back(4);\ndeque.push_front(3); // \u5148\u982d\u306b\u8ffd\u52a0\ndeque.push_front(1);\n\n/* \u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nif let Some(front) = deque.front() { // \u5148\u982d\u8981\u7d20\n}\nif let Some(rear) = deque.back() { // \u672b\u5c3e\u8981\u7d20\n}\n\n/* \u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc */\nif let Some(pop_front) = deque.pop_front() { // \u5148\u982d\u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc\n}\nif let Some(pop_rear) = deque.pop_back() { // \u672b\u5c3e\u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc\n}\n\n/* \u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97 */\nlet size = deque.len();\n\n/* \u4e21\u7aef\u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d */\nlet is_empty = deque.is_empty();\n</code></pre> deque.c<pre><code>// C\u306b\u306f\u7d44\u307f\u8fbc\u307f\u306e\u4e21\u7aef\u30ad\u30e5\u30fc\u304c\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u305b\u3093\n</code></pre> deque.kt<pre><code>\n</code></pre>"},{"location":"chapter_stack_and_queue/deque/#532","title":"5.3.2 \u00a0 \u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u5b9f\u88c5 *","text":"<p>\u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u5b9f\u88c5\u306f\u901a\u5e38\u306e\u30ad\u30e5\u30fc\u306e\u5b9f\u88c5\u3068\u4f3c\u3066\u304a\u308a\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u307e\u305f\u306f\u914d\u5217\u3092\u57fa\u76e4\u3068\u306a\u308b\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u3057\u3066\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002</p>"},{"location":"chapter_stack_and_queue/deque/#1","title":"1. \u00a0 \u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u306b\u57fa\u3065\u304f\u5b9f\u88c5","text":"<p>\u524d\u7bc0\u3067\u3001\u901a\u5e38\u306e\u5358\u4e00\u9023\u7d50\u30ea\u30b9\u30c8\u3092\u4f7f\u3063\u3066\u30ad\u30e5\u30fc\u3092\u5b9f\u88c5\u3057\u305f\u3053\u3068\u3092\u601d\u3044\u51fa\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u306f\u5148\u982d\u304b\u3089\u306e\u524a\u9664\uff08\u30c7\u30ad\u30e5\u30fc\u64cd\u4f5c\u306b\u5bfe\u5fdc\uff09\u3068\u672b\u5c3e\u3078\u306e\u65b0\u3057\u3044\u8981\u7d20\u306e\u8ffd\u52a0\uff08\u30a8\u30f3\u30ad\u30e5\u30fc\u64cd\u4f5c\u306b\u5bfe\u5fdc\uff09\u3092\u4fbf\u5229\u306b\u884c\u3048\u308b\u305f\u3081\u3067\u3057\u305f\u3002</p> <p>\u4e21\u7aef\u30ad\u30e5\u30fc\u3067\u306f\u3001\u5148\u982d\u3068\u672b\u5c3e\u306e\u4e21\u65b9\u3067\u30a8\u30f3\u30ad\u30e5\u30fc\u3068\u30c7\u30ad\u30e5\u30fc\u64cd\u4f5c\u3092\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002\u3064\u307e\u308a\u3001\u4e21\u7aef\u30ad\u30e5\u30fc\u306f\u9006\u65b9\u5411\u306e\u64cd\u4f5c\u3082\u5b9f\u88c5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u305f\u3081\u3001\u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u57fa\u76e4\u3068\u306a\u308b\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u3057\u3066\u300c\u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u300d\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</p> <p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u5148\u982d\u30ce\u30fc\u30c9\u3068\u672b\u5c3e\u30ce\u30fc\u30c9\u3092\u305d\u308c\u305e\u308c\u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u524d\u7aef\u3068\u5f8c\u7aef\u3068\u3057\u3066\u6271\u3044\u3001\u4e21\u7aef\u3067\u306e\u30ce\u30fc\u30c9\u306e\u8ffd\u52a0\u3068\u524a\u9664\u6a5f\u80fd\u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002</p> LinkedListDequepushLast()pushFirst()popLast()popFirst() <p></p> <p></p> <p></p> <p></p> <p></p> <p> \u56f3 5-8 \u00a0 \u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u306b\u3088\u308b\u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u30a8\u30f3\u30ad\u30e5\u30fc\u3068\u30c7\u30ad\u30e5\u30fc\u64cd\u4f5c\u306e\u5b9f\u88c5 </p> <p>\u5b9f\u88c5\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby linkedlist_deque.py<pre><code>class ListNode:\n \"\"\"\u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9\"\"\"\n\n def __init__(self, val: int):\n \"\"\"\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\"\"\"\n self.val: int = val\n self.next: ListNode | None = None # \u5f8c\u7d9a\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n self.prev: ListNode | None = None # \u524d\u99c6\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n\nclass LinkedListDeque:\n \"\"\"\u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u30d9\u30fc\u30b9\u306e\u53cc\u7aef\u30ad\u30e5\u30fc\u30af\u30e9\u30b9\"\"\"\n\n def __init__(self):\n \"\"\"\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\"\"\"\n self._front: ListNode | None = None # \u30d8\u30c3\u30c9\u30ce\u30fc\u30c9 front\n self._rear: ListNode | None = None # \u30c6\u30fc\u30eb\u30ce\u30fc\u30c9 rear\n self._size: int = 0 # \u53cc\u7aef\u30ad\u30e5\u30fc\u306e\u9577\u3055\n\n def size(self) -&gt; int:\n \"\"\"\u53cc\u7aef\u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97\"\"\"\n return self._size\n\n def is_empty(self) -&gt; bool:\n \"\"\"\u53cc\u7aef\u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u5224\u5b9a\"\"\"\n return self._size == 0\n\n def push(self, num: int, is_front: bool):\n \"\"\"\u30a8\u30f3\u30ad\u30e5\u30fc\u64cd\u4f5c\"\"\"\n node = ListNode(num)\n # \u30ea\u30b9\u30c8\u304c\u7a7a\u306e\u5834\u5408\u3001front \u3068 rear \u306e\u4e21\u65b9\u3092 node \u306b\u5411\u3051\u308b\n if self.is_empty():\n self._front = self._rear = node\n # \u524d\u7aef\u30a8\u30f3\u30ad\u30e5\u30fc\u64cd\u4f5c\n elif is_front:\n # \u30ce\u30fc\u30c9\u3092\u30ea\u30b9\u30c8\u306e\u5148\u982d\u306b\u8ffd\u52a0\n self._front.prev = node\n node.next = self._front\n self._front = node # \u30d8\u30c3\u30c9\u30ce\u30fc\u30c9\u3092\u66f4\u65b0\n # \u5f8c\u7aef\u30a8\u30f3\u30ad\u30e5\u30fc\u64cd\u4f5c\n else:\n # \u30ce\u30fc\u30c9\u3092\u30ea\u30b9\u30c8\u306e\u672b\u5c3e\u306b\u8ffd\u52a0\n self._rear.next = node\n node.prev = self._rear\n self._rear = node # \u30c6\u30fc\u30eb\u30ce\u30fc\u30c9\u3092\u66f4\u65b0\n self._size += 1 # \u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u66f4\u65b0\n\n def push_first(self, num: int):\n \"\"\"\u524d\u7aef\u30a8\u30f3\u30ad\u30e5\u30fc\"\"\"\n self.push(num, True)\n\n def push_last(self, num: int):\n \"\"\"\u5f8c\u7aef\u30a8\u30f3\u30ad\u30e5\u30fc\"\"\"\n self.push(num, False)\n\n def pop(self, is_front: bool) -&gt; int:\n \"\"\"\u30c7\u30ad\u30e5\u30fc\u64cd\u4f5c\"\"\"\n if self.is_empty():\n raise IndexError(\"Double-ended queue is empty\")\n # \u524d\u7aef\u30c7\u30ad\u30e5\u30fc\u64cd\u4f5c\n if is_front:\n val: int = self._front.val # \u30d8\u30c3\u30c9\u30ce\u30fc\u30c9\u306e\u5024\u3092\u4e00\u6642\u7684\u306b\u4fdd\u5b58\n # \u30d8\u30c3\u30c9\u30ce\u30fc\u30c9\u3092\u524a\u9664\n fnext: ListNode | None = self._front.next\n if fnext is not None:\n fnext.prev = None\n self._front.next = None\n self._front = fnext # \u30d8\u30c3\u30c9\u30ce\u30fc\u30c9\u3092\u66f4\u65b0\n # \u5f8c\u7aef\u30c7\u30ad\u30e5\u30fc\u64cd\u4f5c\n else:\n val: int = self._rear.val # \u30c6\u30fc\u30eb\u30ce\u30fc\u30c9\u306e\u5024\u3092\u4e00\u6642\u7684\u306b\u4fdd\u5b58\n # \u30c6\u30fc\u30eb\u30ce\u30fc\u30c9\u3092\u524a\u9664\n rprev: ListNode | None = self._rear.prev\n if rprev is not None:\n rprev.next = None\n self._rear.prev = None\n self._rear = rprev # \u30c6\u30fc\u30eb\u30ce\u30fc\u30c9\u3092\u66f4\u65b0\n self._size -= 1 # \u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u66f4\u65b0\n return val\n\n def pop_first(self) -&gt; int:\n \"\"\"\u524d\u7aef\u30c7\u30ad\u30e5\u30fc\"\"\"\n return self.pop(True)\n\n def pop_last(self) -&gt; int:\n \"\"\"\u5f8c\u7aef\u30c7\u30ad\u30e5\u30fc\"\"\"\n return self.pop(False)\n\n def peek_first(self) -&gt; int:\n \"\"\"\u524d\u7aef\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\"\"\"\n if self.is_empty():\n raise IndexError(\"Double-ended queue is empty\")\n return self._front.val\n\n def peek_last(self) -&gt; int:\n \"\"\"\u5f8c\u7aef\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\"\"\"\n if self.is_empty():\n raise IndexError(\"Double-ended queue is empty\")\n return self._rear.val\n\n def to_array(self) -&gt; list[int]:\n \"\"\"\u51fa\u529b\u7528\u306e\u914d\u5217\u3092\u8fd4\u3059\"\"\"\n node = self._front\n res = [0] * self.size()\n for i in range(self.size()):\n res[i] = node.val\n node = node.next\n return res\n</code></pre> linkedlist_deque.cpp<pre><code>/* \u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9 */\nstruct DoublyListNode {\n int val; // \u30ce\u30fc\u30c9\u306e\u5024\n DoublyListNode *next; // \u5f8c\u7d9a\u30ce\u30fc\u30c9\u3078\u306e\u30dd\u30a4\u30f3\u30bf\n DoublyListNode *prev; // \u524d\u7d9a\u30ce\u30fc\u30c9\u3078\u306e\u30dd\u30a4\u30f3\u30bf\n DoublyListNode(int val) : val(val), prev(nullptr), next(nullptr) {\n }\n};\n\n/* \u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u306b\u57fa\u3065\u304f\u4e21\u7aef\u30ad\u30e5\u30fc\u30af\u30e9\u30b9 */\nclass LinkedListDeque {\n private:\n DoublyListNode *front, *rear; // \u5148\u982d\u30ce\u30fc\u30c9front\u3001\u672b\u5c3e\u30ce\u30fc\u30c9rear\n int queSize = 0; // \u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u9577\u3055\n\n public:\n /* \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf */\n LinkedListDeque() : front(nullptr), rear(nullptr) {\n }\n\n /* \u30c7\u30b9\u30c8\u30e9\u30af\u30bf */\n ~LinkedListDeque() {\n // \u9023\u7d50\u30ea\u30b9\u30c8\u3092\u8d70\u67fb\u3001\u30ce\u30fc\u30c9\u3092\u524a\u9664\u3001\u30e1\u30e2\u30ea\u3092\u89e3\u653e\n DoublyListNode *pre, *cur = front;\n while (cur != nullptr) {\n pre = cur;\n cur = cur-&gt;next;\n delete pre;\n }\n }\n\n /* \u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97 */\n int size() {\n return queSize;\n }\n\n /* \u4e21\u7aef\u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u5224\u5b9a */\n bool isEmpty() {\n return size() == 0;\n }\n\n /* \u30a8\u30f3\u30ad\u30e5\u30fc\u64cd\u4f5c */\n void push(int num, bool isFront) {\n DoublyListNode *node = new DoublyListNode(num);\n // \u30ea\u30b9\u30c8\u304c\u7a7a\u306e\u5834\u5408\u3001front\u3068rear\u306e\u4e21\u65b9\u3092node\u306b\u5411\u3051\u308b\n if (isEmpty())\n front = rear = node;\n // \u5148\u982d\u30a8\u30f3\u30ad\u30e5\u30fc\u64cd\u4f5c\n else if (isFront) {\n // \u30ce\u30fc\u30c9\u3092\u30ea\u30b9\u30c8\u306e\u5148\u982d\u306b\u8ffd\u52a0\n front-&gt;prev = node;\n node-&gt;next = front;\n front = node; // \u5148\u982d\u30ce\u30fc\u30c9\u3092\u66f4\u65b0\n // \u672b\u5c3e\u30a8\u30f3\u30ad\u30e5\u30fc\u64cd\u4f5c\n } else {\n // \u30ce\u30fc\u30c9\u3092\u30ea\u30b9\u30c8\u306e\u672b\u5c3e\u306b\u8ffd\u52a0\n rear-&gt;next = node;\n node-&gt;prev = rear;\n rear = node; // \u672b\u5c3e\u30ce\u30fc\u30c9\u3092\u66f4\u65b0\n }\n queSize++; // \u30ad\u30e5\u30fc\u9577\u3092\u66f4\u65b0\n }\n\n /* \u5148\u982d\u30a8\u30f3\u30ad\u30e5\u30fc */\n void pushFirst(int num) {\n push(num, true);\n }\n\n /* \u672b\u5c3e\u30a8\u30f3\u30ad\u30e5\u30fc */\n void pushLast(int num) {\n push(num, false);\n }\n\n /* \u30c7\u30ad\u30e5\u30fc\u64cd\u4f5c */\n int pop(bool isFront) {\n if (isEmpty())\n throw out_of_range(\"Queue is empty\");\n int val;\n // \u5148\u982d\u30c7\u30ad\u30e5\u30fc\u64cd\u4f5c\n if (isFront) {\n val = front-&gt;val; // \u5148\u982d\u30ce\u30fc\u30c9\u306e\u5024\u3092\u4e00\u6642\u4fdd\u5b58\n // \u5148\u982d\u30ce\u30fc\u30c9\u3092\u524a\u9664\n DoublyListNode *fNext = front-&gt;next;\n if (fNext != nullptr) {\n fNext-&gt;prev = nullptr;\n front-&gt;next = nullptr;\n }\n delete front;\n front = fNext; // \u5148\u982d\u30ce\u30fc\u30c9\u3092\u66f4\u65b0\n // \u672b\u5c3e\u30c7\u30ad\u30e5\u30fc\u64cd\u4f5c\n } else {\n val = rear-&gt;val; // \u672b\u5c3e\u30ce\u30fc\u30c9\u306e\u5024\u3092\u4e00\u6642\u4fdd\u5b58\n // \u672b\u5c3e\u30ce\u30fc\u30c9\u3092\u524a\u9664\n DoublyListNode *rPrev = rear-&gt;prev;\n if (rPrev != nullptr) {\n rPrev-&gt;next = nullptr;\n rear-&gt;prev = nullptr;\n }\n delete rear;\n rear = rPrev; // \u672b\u5c3e\u30ce\u30fc\u30c9\u3092\u66f4\u65b0\n }\n queSize--; // \u30ad\u30e5\u30fc\u9577\u3092\u66f4\u65b0\n return val;\n }\n\n /* \u5148\u982d\u30c7\u30ad\u30e5\u30fc */\n int popFirst() {\n return pop(true);\n }\n\n /* \u672b\u5c3e\u30c7\u30ad\u30e5\u30fc */\n int popLast() {\n return pop(false);\n }\n\n /* \u5148\u982d\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\n int peekFirst() {\n if (isEmpty())\n throw out_of_range(\"Double-ended queue is empty\");\n return front-&gt;val;\n }\n\n /* \u672b\u5c3e\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\n int peekLast() {\n if (isEmpty())\n throw out_of_range(\"Double-ended queue is empty\");\n return rear-&gt;val;\n }\n\n /* \u5370\u5237\u7528\u306b\u914d\u5217\u3092\u8fd4\u5374 */\n vector&lt;int&gt; toVector() {\n DoublyListNode *node = front;\n vector&lt;int&gt; res(size());\n for (int i = 0; i &lt; res.size(); i++) {\n res[i] = node-&gt;val;\n node = node-&gt;next;\n }\n return res;\n }\n};\n</code></pre> linkedlist_deque.java<pre><code>/* \u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9 */\nclass ListNode {\n int val; // \u30ce\u30fc\u30c9\u5024\n ListNode next; // \u5f8c\u7d9a\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n ListNode prev; // \u524d\u4efb\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n\n ListNode(int val) {\n this.val = val;\n prev = next = null;\n }\n}\n\n/* \u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u306b\u57fa\u3065\u304f\u4e21\u7aef\u30ad\u30e5\u30fc\u30af\u30e9\u30b9 */\nclass LinkedListDeque {\n private ListNode front, rear; // \u5148\u982d\u30ce\u30fc\u30c9 front\u3001\u672b\u5c3e\u30ce\u30fc\u30c9 rear\n private int queSize = 0; // \u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u9577\u3055\n\n public LinkedListDeque() {\n front = rear = null;\n }\n\n /* \u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97 */\n public int size() {\n return queSize;\n }\n\n /* \u4e21\u7aef\u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u5224\u5b9a */\n public boolean isEmpty() {\n return size() == 0;\n }\n\n /* \u30a8\u30f3\u30ad\u30e5\u30fc\u64cd\u4f5c */\n private void push(int num, boolean isFront) {\n ListNode node = new ListNode(num);\n // \u30ea\u30b9\u30c8\u304c\u7a7a\u306e\u5834\u5408\u3001front \u3068 rear \u306e\u4e21\u65b9\u3092 node \u306b\u6307\u3059\n if (isEmpty())\n front = rear = node;\n // \u5148\u982d\u30a8\u30f3\u30ad\u30e5\u30fc\u64cd\u4f5c\n else if (isFront) {\n // node \u3092\u30ea\u30b9\u30c8\u306e\u5148\u982d\u306b\u8ffd\u52a0\n front.prev = node;\n node.next = front;\n front = node; // front \u3092\u66f4\u65b0\n // \u672b\u5c3e\u30a8\u30f3\u30ad\u30e5\u30fc\u64cd\u4f5c\n } else {\n // node \u3092\u30ea\u30b9\u30c8\u306e\u672b\u5c3e\u306b\u8ffd\u52a0\n rear.next = node;\n node.prev = rear;\n rear = node; // rear \u3092\u66f4\u65b0\n }\n queSize++; // \u9577\u3055\u3092\u66f4\u65b0\n }\n\n /* \u5148\u982d\u30a8\u30f3\u30ad\u30e5\u30fc */\n public void pushFirst(int num) {\n push(num, true);\n }\n\n /* \u672b\u5c3e\u30a8\u30f3\u30ad\u30e5\u30fc */\n public void pushLast(int num) {\n push(num, false);\n }\n\n /* \u30c7\u30ad\u30e5\u30fc\u64cd\u4f5c */\n private int pop(boolean isFront) {\n if (isEmpty())\n throw new IndexOutOfBoundsException();\n int val;\n // \u5148\u982d\u30c7\u30ad\u30e5\u30fc\u64cd\u4f5c\n if (isFront) {\n val = front.val; // \u4e00\u6642\u7684\u306b\u5148\u982d\u30ce\u30fc\u30c9\u5024\u3092\u4fdd\u5b58\n // \u6b21\u306e\u30ce\u30fc\u30c9\u3092\u524a\u9664\n ListNode fNext = front.next;\n if (fNext != null) {\n fNext.prev = null;\n front.next = null;\n }\n front = fNext; // front \u3092\u66f4\u65b0\n // \u672b\u5c3e\u30c7\u30ad\u30e5\u30fc\u64cd\u4f5c\n } else {\n val = rear.val; // \u4e00\u6642\u7684\u306b\u672b\u5c3e\u30ce\u30fc\u30c9\u5024\u3092\u4fdd\u5b58\n // \u524d\u306e\u30ce\u30fc\u30c9\u3092\u524a\u9664\n ListNode rPrev = rear.prev;\n if (rPrev != null) {\n rPrev.next = null;\n rear.prev = null;\n }\n rear = rPrev; // rear \u3092\u66f4\u65b0\n }\n queSize--; // \u9577\u3055\u3092\u66f4\u65b0\n return val;\n }\n\n /* \u5148\u982d\u30c7\u30ad\u30e5\u30fc */\n public int popFirst() {\n return pop(true);\n }\n\n /* \u672b\u5c3e\u30c7\u30ad\u30e5\u30fc */\n public int popLast() {\n return pop(false);\n }\n\n /* \u5148\u982d\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\n public int peekFirst() {\n if (isEmpty())\n throw new IndexOutOfBoundsException();\n return front.val;\n }\n\n /* \u672b\u5c3e\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\n public int peekLast() {\n if (isEmpty())\n throw new IndexOutOfBoundsException();\n return rear.val;\n }\n\n /* \u914d\u5217\u3092\u8fd4\u3059 */\n public int[] toArray() {\n ListNode node = front;\n int[] res = new int[size()];\n for (int i = 0; i &lt; res.length; i++) {\n res[i] = node.val;\n node = node.next;\n }\n return res;\n }\n}\n</code></pre> linkedlist_deque.cs<pre><code>[class]{ListNode}-[func]{}\n\n[class]{LinkedListDeque}-[func]{}\n</code></pre> linkedlist_deque.go<pre><code>[class]{linkedListDeque}-[func]{}\n</code></pre> linkedlist_deque.swift<pre><code>[class]{ListNode}-[func]{}\n\n[class]{LinkedListDeque}-[func]{}\n</code></pre> linkedlist_deque.js<pre><code>[class]{ListNode}-[func]{}\n\n[class]{LinkedListDeque}-[func]{}\n</code></pre> linkedlist_deque.ts<pre><code>[class]{ListNode}-[func]{}\n\n[class]{LinkedListDeque}-[func]{}\n</code></pre> linkedlist_deque.dart<pre><code>[class]{ListNode}-[func]{}\n\n[class]{LinkedListDeque}-[func]{}\n</code></pre> linkedlist_deque.rs<pre><code>[class]{ListNode}-[func]{}\n\n[class]{LinkedListDeque}-[func]{}\n</code></pre> linkedlist_deque.c<pre><code>[class]{DoublyListNode}-[func]{}\n\n[class]{LinkedListDeque}-[func]{}\n</code></pre> linkedlist_deque.kt<pre><code>[class]{ListNode}-[func]{}\n\n[class]{LinkedListDeque}-[func]{}\n</code></pre> linkedlist_deque.rb<pre><code>[class]{ListNode}-[func]{}\n\n[class]{LinkedListDeque}-[func]{}\n</code></pre>"},{"location":"chapter_stack_and_queue/deque/#2","title":"2. \u00a0 \u914d\u5217\u306b\u57fa\u3065\u304f\u5b9f\u88c5","text":"<p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u914d\u5217\u3067\u30ad\u30e5\u30fc\u3092\u5b9f\u88c5\u3059\u308b\u306e\u3068\u540c\u69d8\u306b\u3001\u5faa\u74b0\u914d\u5217\u3092\u4f7f\u3063\u3066\u4e21\u7aef\u30ad\u30e5\u30fc\u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002</p> ArrayDequepushLast()pushFirst()popLast()popFirst() <p></p> <p></p> <p></p> <p></p> <p></p> <p> \u56f3 5-9 \u00a0 \u914d\u5217\u306b\u3088\u308b\u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u30a8\u30f3\u30ad\u30e5\u30fc\u3068\u30c7\u30ad\u30e5\u30fc\u64cd\u4f5c\u306e\u5b9f\u88c5 </p> <p>\u5b9f\u88c5\u3067\u306f\u300c\u524d\u7aef\u30a8\u30f3\u30ad\u30e5\u30fc\u300d\u3068\u300c\u5f8c\u7aef\u30c7\u30ad\u30e5\u30fc\u300d\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u8ffd\u52a0\u3059\u308b\u3060\u3051\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby array_deque.py<pre><code>class ArrayDeque:\n \"\"\"\u5faa\u74b0\u914d\u5217\u30d9\u30fc\u30b9\u306e\u53cc\u7aef\u30ad\u30e5\u30fc\u30af\u30e9\u30b9\"\"\"\n\n def __init__(self, capacity: int):\n \"\"\"\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\"\"\"\n self._nums: list[int] = [0] * capacity\n self._front: int = 0\n self._size: int = 0\n\n def capacity(self) -&gt; int:\n \"\"\"\u53cc\u7aef\u30ad\u30e5\u30fc\u306e\u5bb9\u91cf\u3092\u53d6\u5f97\"\"\"\n return len(self._nums)\n\n def size(self) -&gt; int:\n \"\"\"\u53cc\u7aef\u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97\"\"\"\n return self._size\n\n def is_empty(self) -&gt; bool:\n \"\"\"\u53cc\u7aef\u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u5224\u5b9a\"\"\"\n return self._size == 0\n\n def index(self, i: int) -&gt; int:\n \"\"\"\u5faa\u74b0\u914d\u5217\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8a08\u7b97\"\"\"\n # \u30e2\u30b8\u30e5\u30ed\u6f14\u7b97\u306b\u3088\u3063\u3066\u5faa\u74b0\u914d\u5217\u3092\u5b9f\u88c5\n # i \u304c\u914d\u5217\u306e\u672b\u5c3e\u3092\u8d85\u3048\u305f\u5834\u5408\u3001\u5148\u982d\u306b\u623b\u308b\n # i \u304c\u914d\u5217\u306e\u5148\u982d\u3092\u8d85\u3048\u305f\u5834\u5408\u3001\u672b\u5c3e\u306b\u623b\u308b\n return (i + self.capacity()) % self.capacity()\n\n def push_first(self, num: int):\n \"\"\"\u524d\u7aef\u30a8\u30f3\u30ad\u30e5\u30fc\"\"\"\n if self._size == self.capacity():\n print(\"\u53cc\u7aef\u30ad\u30e5\u30fc\u304c\u6e80\u676f\u3067\u3059\")\n return\n # \u30d5\u30ed\u30f3\u30c8\u30dd\u30a4\u30f3\u30bf\u3092\u5de6\u306b1\u3064\u79fb\u52d5\n # \u30e2\u30b8\u30e5\u30ed\u6f14\u7b97\u306b\u3088\u3063\u3066\u30d5\u30ed\u30f3\u30c8\u304c\u914d\u5217\u306e\u5148\u982d\u3092\u8d85\u3048\u3066\u672b\u5c3e\u306b\u623b\u308b\u3053\u3068\u3092\u5b9f\u88c5\n self._front = self.index(self._front - 1)\n # num \u3092\u524d\u7aef\u306b\u8ffd\u52a0\n self._nums[self._front] = num\n self._size += 1\n\n def push_last(self, num: int):\n \"\"\"\u5f8c\u7aef\u30a8\u30f3\u30ad\u30e5\u30fc\"\"\"\n if self._size == self.capacity():\n print(\"\u53cc\u7aef\u30ad\u30e5\u30fc\u304c\u6e80\u676f\u3067\u3059\")\n return\n # \u30ea\u30a2\u30dd\u30a4\u30f3\u30bf\u3092\u8a08\u7b97\u3001\u30ea\u30a2\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 + 1 \u3092\u6307\u3059\n rear = self.index(self._front + self._size)\n # num \u3092\u5f8c\u7aef\u306b\u8ffd\u52a0\n self._nums[rear] = num\n self._size += 1\n\n def pop_first(self) -&gt; int:\n \"\"\"\u524d\u7aef\u30c7\u30ad\u30e5\u30fc\"\"\"\n num = self.peek_first()\n # \u30d5\u30ed\u30f3\u30c8\u30dd\u30a4\u30f3\u30bf\u30921\u3064\u5f8c\u308d\u306b\u79fb\u52d5\n self._front = self.index(self._front + 1)\n self._size -= 1\n return num\n\n def pop_last(self) -&gt; int:\n \"\"\"\u5f8c\u7aef\u30c7\u30ad\u30e5\u30fc\"\"\"\n num = self.peek_last()\n self._size -= 1\n return num\n\n def peek_first(self) -&gt; int:\n \"\"\"\u524d\u7aef\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\"\"\"\n if self.is_empty():\n raise IndexError(\"Double-ended queue is empty\")\n return self._nums[self._front]\n\n def peek_last(self) -&gt; int:\n \"\"\"\u5f8c\u7aef\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\"\"\"\n if self.is_empty():\n raise IndexError(\"Double-ended queue is empty\")\n # \u5f8c\u7aef\u8981\u7d20\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8a08\u7b97\n last = self.index(self._front + self._size - 1)\n return self._nums[last]\n\n def to_array(self) -&gt; list[int]:\n \"\"\"\u51fa\u529b\u7528\u306e\u914d\u5217\u3092\u8fd4\u3059\"\"\"\n # \u6709\u52b9\u306a\u9577\u3055\u7bc4\u56f2\u5185\u306e\u8981\u7d20\u306e\u307f\u3092\u5909\u63db\n res = []\n for i in range(self._size):\n res.append(self._nums[self.index(self._front + i)])\n return res\n</code></pre> array_deque.cpp<pre><code>/* \u5faa\u74b0\u914d\u5217\u306b\u57fa\u3065\u304f\u4e21\u7aef\u30ad\u30e5\u30fc\u30af\u30e9\u30b9 */\nclass ArrayDeque {\n private:\n vector&lt;int&gt; nums; // \u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u8981\u7d20\u3092\u683c\u7d0d\u3059\u308b\u914d\u5217\n int front; // \u5148\u982d\u30dd\u30a4\u30f3\u30bf\u3001\u5148\u982d\u8981\u7d20\u3092\u6307\u3059\n int queSize; // \u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u9577\u3055\n\n public:\n /* \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf */\n ArrayDeque(int capacity) {\n nums.resize(capacity);\n front = queSize = 0;\n }\n\n /* \u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u5bb9\u91cf\u3092\u53d6\u5f97 */\n int capacity() {\n return nums.size();\n }\n\n /* \u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97 */\n int size() {\n return queSize;\n }\n\n /* \u4e21\u7aef\u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u5224\u5b9a */\n bool isEmpty() {\n return queSize == 0;\n }\n\n /* \u5faa\u74b0\u914d\u5217\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8a08\u7b97 */\n int index(int i) {\n // \u5270\u4f59\u6f14\u7b97\u3067\u5faa\u74b0\u914d\u5217\u3092\u5b9f\u73fe\n // i\u304c\u914d\u5217\u306e\u672b\u5c3e\u3092\u8d85\u3048\u305f\u5834\u5408\u3001\u5148\u982d\u306b\u623b\u308b\n // i\u304c\u914d\u5217\u306e\u5148\u982d\u3092\u8d85\u3048\u305f\u5834\u5408\u3001\u672b\u5c3e\u306b\u623b\u308b\n return (i + capacity()) % capacity();\n }\n\n /* \u5148\u982d\u30a8\u30f3\u30ad\u30e5\u30fc */\n void pushFirst(int num) {\n if (queSize == capacity()) {\n cout &lt;&lt; \"Double-ended queue is full\" &lt;&lt; endl;\n return;\n }\n // \u5148\u982d\u30dd\u30a4\u30f3\u30bf\u30921\u3064\u5de6\u306b\u79fb\u52d5\n // \u5270\u4f59\u6f14\u7b97\u3067front\u304c\u914d\u5217\u306e\u5148\u982d\u3092\u8d8a\u3048\u3066\u672b\u5c3e\u306b\u623b\u308b\u3053\u3068\u3092\u5b9f\u73fe\n front = index(front - 1);\n // num\u3092\u5148\u982d\u306b\u8ffd\u52a0\n nums[front] = num;\n queSize++;\n }\n\n /* \u672b\u5c3e\u30a8\u30f3\u30ad\u30e5\u30fc */\n void pushLast(int num) {\n if (queSize == capacity()) {\n cout &lt;&lt; \"Double-ended queue is full\" &lt;&lt; endl;\n return;\n }\n // \u672b\u5c3e\u30dd\u30a4\u30f3\u30bf\u3092\u8a08\u7b97\u3001\u672b\u5c3e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 + 1\u3092\u6307\u3059\n int rear = index(front + queSize);\n // num\u3092\u672b\u5c3e\u306b\u8ffd\u52a0\n nums[rear] = num;\n queSize++;\n }\n\n /* \u5148\u982d\u30c7\u30ad\u30e5\u30fc */\n int popFirst() {\n int num = peekFirst();\n // \u5148\u982d\u30dd\u30a4\u30f3\u30bf\u30921\u3064\u5f8c\u308d\u306b\u79fb\u52d5\n front = index(front + 1);\n queSize--;\n return num;\n }\n\n /* \u672b\u5c3e\u30c7\u30ad\u30e5\u30fc */\n int popLast() {\n int num = peekLast();\n queSize--;\n return num;\n }\n\n /* \u5148\u982d\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\n int peekFirst() {\n if (isEmpty())\n throw out_of_range(\"Double-ended queue is empty\");\n return nums[front];\n }\n\n /* \u672b\u5c3e\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\n int peekLast() {\n if (isEmpty())\n throw out_of_range(\"Double-ended queue is empty\");\n // \u672b\u5c3e\u8981\u7d20\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8a08\u7b97\n int last = index(front + queSize - 1);\n return nums[last];\n }\n\n /* \u5370\u5237\u7528\u306b\u914d\u5217\u3092\u8fd4\u5374 */\n vector&lt;int&gt; toVector() {\n // \u6709\u52b9\u306a\u9577\u3055\u7bc4\u56f2\u5185\u306e\u8981\u7d20\u306e\u307f\u3092\u5909\u63db\n vector&lt;int&gt; res(queSize);\n for (int i = 0, j = front; i &lt; queSize; i++, j++) {\n res[i] = nums[index(j)];\n }\n return res;\n }\n};\n</code></pre> array_deque.java<pre><code>/* \u5faa\u74b0\u914d\u5217\u306b\u57fa\u3065\u304f\u4e21\u7aef\u30ad\u30e5\u30fc\u30af\u30e9\u30b9 */\nclass ArrayDeque {\n private int[] nums; // \u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u8981\u7d20\u3092\u683c\u7d0d\u3059\u308b\u914d\u5217\n private int front; // \u5148\u982d\u30dd\u30a4\u30f3\u30bf\u3001\u5148\u982d\u8981\u7d20\u3092\u6307\u3059\n private int queSize; // \u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u9577\u3055\n\n /* \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf */\n public ArrayDeque(int capacity) {\n this.nums = new int[capacity];\n front = queSize = 0;\n }\n\n /* \u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u5bb9\u91cf\u3092\u53d6\u5f97 */\n public int capacity() {\n return nums.length;\n }\n\n /* \u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97 */\n public int size() {\n return queSize;\n }\n\n /* \u4e21\u7aef\u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u5224\u5b9a */\n public boolean isEmpty() {\n return queSize == 0;\n }\n\n /* \u5faa\u74b0\u914d\u5217\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8a08\u7b97 */\n private int index(int i) {\n // \u30e2\u30b8\u30e5\u30ed\u6f14\u7b97\u306b\u3088\u308a\u5faa\u74b0\u914d\u5217\u3092\u5b9f\u88c5\n // i \u304c\u914d\u5217\u306e\u672b\u5c3e\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u5148\u982d\u306b\u623b\u308b\n // i \u304c\u914d\u5217\u306e\u5148\u982d\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u672b\u5c3e\u306b\u623b\u308b\n return (i + capacity()) % capacity();\n }\n\n /* \u5148\u982d\u30a8\u30f3\u30ad\u30e5\u30fc */\n public void pushFirst(int num) {\n if (queSize == capacity()) {\n System.out.println(\"\u4e21\u7aef\u30ad\u30e5\u30fc\u304c\u6e80\u676f\u3067\u3059\");\n return;\n }\n // \u5148\u982d\u30dd\u30a4\u30f3\u30bf\u3092\u5de6\u306b\u79fb\u52d5\u3057\u3001\u5883\u754c\u3092\u8d8a\u3048\u308b\u5834\u5408\u306f\u914d\u5217\u306e\u672b\u5c3e\u306b\u56de\u308b\n front = index(front - 1);\n // \u5148\u982d\u306b num \u3092\u8ffd\u52a0\n nums[front] = num;\n queSize++;\n }\n\n /* \u672b\u5c3e\u30a8\u30f3\u30ad\u30e5\u30fc */\n public void pushLast(int num) {\n if (queSize == capacity()) {\n System.out.println(\"\u4e21\u7aef\u30ad\u30e5\u30fc\u304c\u6e80\u676f\u3067\u3059\");\n return;\n }\n // \u672b\u5c3e\u30dd\u30a4\u30f3\u30bf\u3092\u8a08\u7b97\u3057\u3001\u672b\u5c3e\u306b\u8981\u7d20\u3092\u8ffd\u52a0\n int rear = index(front + queSize);\n nums[rear] = num;\n queSize++;\n }\n\n /* \u5148\u982d\u30c7\u30ad\u30e5\u30fc */\n public int popFirst() {\n int num = peekFirst();\n // \u5148\u982d\u30dd\u30a4\u30f3\u30bf\u3092\u53f3\u306b\u79fb\u52d5\n front = index(front + 1);\n queSize--;\n return num;\n }\n\n /* \u672b\u5c3e\u30c7\u30ad\u30e5\u30fc */\n public int popLast() {\n int num = peekLast();\n queSize--;\n return num;\n }\n\n /* \u5148\u982d\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\n public int peekFirst() {\n if (isEmpty())\n throw new IndexOutOfBoundsException();\n return nums[front];\n }\n\n /* \u672b\u5c3e\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\n public int peekLast() {\n if (isEmpty())\n throw new IndexOutOfBoundsException();\n // \u672b\u5c3e\u8981\u7d20\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8a08\u7b97\n int last = index(front + queSize - 1);\n return nums[last];\n }\n\n /* \u914d\u5217\u3092\u8fd4\u3059 */\n public int[] toArray() {\n // front \u304b\u3089\u958b\u59cb\u3057\u3066 queSize \u500b\u306e\u8981\u7d20\u306e\u307f\u3092\u30b3\u30d4\u30fc\n int[] res = new int[queSize];\n for (int i = 0, j = front; i &lt; queSize; i++, j++) {\n res[i] = nums[index(j)];\n }\n return res;\n }\n}\n</code></pre> array_deque.cs<pre><code>[class]{ArrayDeque}-[func]{}\n</code></pre> array_deque.go<pre><code>[class]{arrayDeque}-[func]{}\n</code></pre> array_deque.swift<pre><code>[class]{ArrayDeque}-[func]{}\n</code></pre> array_deque.js<pre><code>[class]{ArrayDeque}-[func]{}\n</code></pre> array_deque.ts<pre><code>[class]{ArrayDeque}-[func]{}\n</code></pre> array_deque.dart<pre><code>[class]{ArrayDeque}-[func]{}\n</code></pre> array_deque.rs<pre><code>[class]{ArrayDeque}-[func]{}\n</code></pre> array_deque.c<pre><code>[class]{ArrayDeque}-[func]{}\n</code></pre> array_deque.kt<pre><code>[class]{ArrayDeque}-[func]{}\n</code></pre> array_deque.rb<pre><code>[class]{ArrayDeque}-[func]{}\n</code></pre>"},{"location":"chapter_stack_and_queue/deque/#533","title":"5.3.3 \u00a0 \u4e21\u7aef\u30ad\u30e5\u30fc\u306e\u5fdc\u7528","text":"<p>\u4e21\u7aef\u30ad\u30e5\u30fc\u306f\u30b9\u30bf\u30c3\u30af\u3068\u30ad\u30e5\u30fc\u306e\u4e21\u65b9\u306e\u30ed\u30b8\u30c3\u30af\u3092\u7d44\u307f\u5408\u308f\u305b\u3066\u3044\u308b\u305f\u3081\u3001\u305d\u308c\u305e\u308c\u306e\u3059\u3079\u3066\u306e\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u3092\u5b9f\u88c5\u3067\u304d\u3001\u3088\u308a\u5927\u304d\u306a\u67d4\u8edf\u6027\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002</p> <p>\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u300c\u5143\u306b\u623b\u3059\u300d\u6a5f\u80fd\u306f\u901a\u5e38\u30b9\u30bf\u30c3\u30af\u3092\u4f7f\u3063\u3066\u5b9f\u88c5\u3055\u308c\u308b\u3053\u3068\u3092\u77e5\u3063\u3066\u3044\u307e\u3059\uff1a\u30b7\u30b9\u30c6\u30e0\u306f\u5404\u5909\u66f4\u64cd\u4f5c\u3092\u30b9\u30bf\u30c3\u30af\u306b<code>push</code>\u3057\u3001\u6b21\u306b<code>pop</code>\u3057\u3066\u5143\u306b\u623b\u3059\u3053\u3068\u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u30b7\u30b9\u30c6\u30e0\u30ea\u30bd\u30fc\u30b9\u306e\u5236\u9650\u3092\u8003\u616e\u3057\u3066\u3001\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306f\u5143\u306b\u623b\u3059\u30b9\u30c6\u30c3\u30d7\u306e\u6570\u3092\u5236\u9650\u3059\u308b\u3053\u3068\u304c\u3088\u304f\u3042\u308a\u307e\u3059\uff08\u4f8b\u3048\u3070\u3001\u6700\u5f8c\u306e50\u30b9\u30c6\u30c3\u30d7\u306e\u307f\u3092\u8a31\u53ef\uff09\u3002\u30b9\u30bf\u30c3\u30af\u306e\u9577\u3055\u304c50\u3092\u8d85\u3048\u305f\u5834\u5408\u3001\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306f\u30b9\u30bf\u30c3\u30af\u306e\u5e95\u90e8\uff08\u30ad\u30e5\u30fc\u306e\u524d\u7aef\uff09\u3067\u524a\u9664\u64cd\u4f5c\u3092\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u901a\u5e38\u306e\u30b9\u30bf\u30c3\u30af\u3067\u306f\u3053\u306e\u6a5f\u80fd\u3092\u5b9f\u884c\u3067\u304d\u306a\u3044\u305f\u3081\u3001\u4e21\u7aef\u30ad\u30e5\u30fc\u304c\u5fc5\u8981\u306b\u306a\u308a\u307e\u3059\u3002\u300c\u5143\u306b\u623b\u3059\u300d\u306e\u30b3\u30a2\u30ed\u30b8\u30c3\u30af\u306f\u4f9d\u7136\u3068\u3057\u3066\u30b9\u30bf\u30c3\u30af\u306e\u5f8c\u5165\u308c\u5148\u51fa\u3057\u539f\u5247\u306b\u5f93\u3044\u307e\u3059\u304c\u3001\u4e21\u7aef\u30ad\u30e5\u30fc\u306f\u3088\u308a\u67d4\u8edf\u306b\u3044\u304f\u3064\u304b\u306e\u8ffd\u52a0\u30ed\u30b8\u30c3\u30af\u3092\u5b9f\u88c5\u3067\u304d\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p>"},{"location":"chapter_stack_and_queue/queue/","title":"5.2 \u00a0 \u30ad\u30e5\u30fc","text":"<p>\u30ad\u30e5\u30fc\u306f\u3001\u5148\u5165\u5148\u51fa\uff08FIFO\uff09\u30eb\u30fc\u30eb\u306b\u5f93\u3046\u7dda\u5f62\u30c7\u30fc\u30bf\u69cb\u9020\u3067\u3059\u3002\u540d\u524d\u304c\u793a\u3059\u3088\u3046\u306b\u3001\u30ad\u30e5\u30fc\u306f\u884c\u5217\u306e\u73fe\u8c61\u3092\u30b7\u30df\u30e5\u30ec\u30fc\u30c8\u3057\u3001\u65b0\u53c2\u8005\u306f\u5217\u306e\u5f8c\u308d\u306b\u4e26\u3073\u3001\u524d\u306e\u4eba\u304c\u6700\u521d\u306b\u5217\u3092\u96e2\u308c\u307e\u3059\u3002</p> <p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u30ad\u30e5\u30fc\u306e\u524d\u9762\u3092\u300c\u30d8\u30c3\u30c9\u300d\u3001\u5f8c\u9762\u3092\u300c\u30c6\u30fc\u30eb\u300d\u3068\u547c\u3073\u307e\u3059\u3002\u30ad\u30e5\u30fc\u306e\u5f8c\u308d\u306b\u8981\u7d20\u3092\u8ffd\u52a0\u3059\u308b\u64cd\u4f5c\u3092\u300c\u30a8\u30f3\u30ad\u30e5\u30fc\u300d\u3001\u524d\u304b\u3089\u8981\u7d20\u3092\u524a\u9664\u3059\u308b\u64cd\u4f5c\u3092\u300c\u30c7\u30ad\u30e5\u30fc\u300d\u3068\u547c\u3073\u307e\u3059\u3002</p> <p></p> <p> \u56f3 5-4 \u00a0 \u30ad\u30e5\u30fc\u306e\u5148\u5165\u5148\u51fa\u30eb\u30fc\u30eb </p>"},{"location":"chapter_stack_and_queue/queue/#521","title":"5.2.1 \u00a0 \u30ad\u30e5\u30fc\u306e\u4e00\u822c\u7684\u306a\u64cd\u4f5c","text":"<p>\u30ad\u30e5\u30fc\u306e\u4e00\u822c\u7684\u306a\u64cd\u4f5c\u3092\u4e0b\u8868\u306b\u793a\u3057\u307e\u3059\u3002\u30e1\u30bd\u30c3\u30c9\u540d\u306f\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306b\u3088\u3063\u3066\u7570\u306a\u308b\u5834\u5408\u304c\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u3053\u3067\u306f\u3001\u30b9\u30bf\u30c3\u30af\u3067\u4f7f\u7528\u3057\u305f\u306e\u3068\u540c\u3058\u547d\u540d\u898f\u5247\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</p> <p> \u8868 5-2 \u00a0 \u30ad\u30e5\u30fc\u64cd\u4f5c\u306e\u52b9\u7387 </p> \u30e1\u30bd\u30c3\u30c9\u540d \u8aac\u660e \u6642\u9593\u8a08\u7b97\u91cf <code>push()</code> \u8981\u7d20\u3092\u30a8\u30f3\u30ad\u30e5\u30fc\u3001\u30c6\u30fc\u30eb\u306b\u8ffd\u52a0 \\(O(1)\\) <code>pop()</code> \u30d8\u30c3\u30c9\u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc \\(O(1)\\) <code>peek()</code> \u30d8\u30c3\u30c9\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 \\(O(1)\\) <p>\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u7528\u610f\u3055\u308c\u3066\u3044\u308b\u30ad\u30e5\u30fc\u30af\u30e9\u30b9\u3092\u76f4\u63a5\u4f7f\u7528\u3067\u304d\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlin queue.py<pre><code>from collections import deque\n\n# \u30ad\u30e5\u30fc\u3092\u521d\u671f\u5316\n# Python\u3067\u306f\u3001\u4e00\u822c\u7684\u306bdeque\u30af\u30e9\u30b9\u3092\u30ad\u30e5\u30fc\u3068\u3057\u3066\u4f7f\u7528\u3057\u307e\u3059\n# queue.Queue()\u306f\u7d14\u7c8b\u306a\u30ad\u30e5\u30fc\u30af\u30e9\u30b9\u3067\u3059\u304c\u3001\u4f7f\u3044\u306b\u304f\u3044\u305f\u3081\u63a8\u5968\u3055\u308c\u307e\u305b\u3093\nque: deque[int] = deque()\n\n# \u8981\u7d20\u3092\u30a8\u30f3\u30ad\u30e5\u30fc\nque.append(1)\nque.append(3)\nque.append(2)\nque.append(5)\nque.append(4)\n\n# \u6700\u521d\u306e\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\nfront: int = que[0]\n\n# \u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc\npop: int = que.popleft()\n\n# \u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97\nsize: int = len(que)\n\n# \u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u30c1\u30a7\u30c3\u30af\nis_empty: bool = len(que) == 0\n</code></pre> queue.cpp<pre><code>/* \u30ad\u30e5\u30fc\u3092\u521d\u671f\u5316 */\nqueue&lt;int&gt; queue;\n\n/* \u8981\u7d20\u3092\u30a8\u30f3\u30ad\u30e5\u30fc */\nqueue.push(1);\nqueue.push(3);\nqueue.push(2);\nqueue.push(5);\nqueue.push(4);\n\n/* \u6700\u521d\u306e\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nint front = queue.front();\n\n/* \u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc */\nqueue.pop();\n\n/* \u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97 */\nint size = queue.size();\n\n/* \u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u30c1\u30a7\u30c3\u30af */\nbool empty = queue.empty();\n</code></pre> queue.java<pre><code>/* \u30ad\u30e5\u30fc\u3092\u521d\u671f\u5316 */\nQueue&lt;Integer&gt; queue = new LinkedList&lt;&gt;();\n\n/* \u8981\u7d20\u3092\u30a8\u30f3\u30ad\u30e5\u30fc */\nqueue.offer(1);\nqueue.offer(3);\nqueue.offer(2);\nqueue.offer(5);\nqueue.offer(4);\n\n/* \u6700\u521d\u306e\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nint peek = queue.peek();\n\n/* \u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc */\nint pop = queue.poll();\n\n/* \u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97 */\nint size = queue.size();\n\n/* \u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u30c1\u30a7\u30c3\u30af */\nboolean isEmpty = queue.isEmpty();\n</code></pre> queue.cs<pre><code>/* \u30ad\u30e5\u30fc\u3092\u521d\u671f\u5316 */\nQueue&lt;int&gt; queue = new();\n\n/* \u8981\u7d20\u3092\u30a8\u30f3\u30ad\u30e5\u30fc */\nqueue.Enqueue(1);\nqueue.Enqueue(3);\nqueue.Enqueue(2);\nqueue.Enqueue(5);\nqueue.Enqueue(4);\n\n/* \u6700\u521d\u306e\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nint peek = queue.Peek();\n\n/* \u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc */\nint pop = queue.Dequeue();\n\n/* \u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97 */\nint size = queue.Count;\n\n/* \u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u30c1\u30a7\u30c3\u30af */\nbool isEmpty = queue.Count == 0;\n</code></pre> queue_test.go<pre><code>/* \u30ad\u30e5\u30fc\u3092\u521d\u671f\u5316 */\n// Go\u3067\u306f\u3001list\u3092\u30ad\u30e5\u30fc\u3068\u3057\u3066\u4f7f\u7528\nqueue := list.New()\n\n/* \u8981\u7d20\u3092\u30a8\u30f3\u30ad\u30e5\u30fc */\nqueue.PushBack(1)\nqueue.PushBack(3)\nqueue.PushBack(2)\nqueue.PushBack(5)\nqueue.PushBack(4)\n\n/* \u6700\u521d\u306e\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\npeek := queue.Front()\n\n/* \u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc */\npop := queue.Front()\nqueue.Remove(pop)\n\n/* \u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97 */\nsize := queue.Len()\n\n/* \u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u30c1\u30a7\u30c3\u30af */\nisEmpty := queue.Len() == 0\n</code></pre> queue.swift<pre><code>/* \u30ad\u30e5\u30fc\u3092\u521d\u671f\u5316 */\n// Swift\u306b\u306f\u7d44\u307f\u8fbc\u307f\u306e\u30ad\u30e5\u30fc\u30af\u30e9\u30b9\u304c\u306a\u3044\u305f\u3081\u3001Array\u3092\u30ad\u30e5\u30fc\u3068\u3057\u3066\u4f7f\u7528\nvar queue: [Int] = []\n\n/* \u8981\u7d20\u3092\u30a8\u30f3\u30ad\u30e5\u30fc */\nqueue.append(1)\nqueue.append(3)\nqueue.append(2)\nqueue.append(5)\nqueue.append(4)\n\n/* \u6700\u521d\u306e\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nlet peek = queue.first!\n\n/* \u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc */\n// \u914d\u5217\u306a\u306e\u3067\u3001removeFirst\u306e\u8a08\u7b97\u91cf\u306fO(n)\nlet pool = queue.removeFirst()\n\n/* \u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97 */\nlet size = queue.count\n\n/* \u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u30c1\u30a7\u30c3\u30af */\nlet isEmpty = queue.isEmpty\n</code></pre> queue.js<pre><code>/* \u30ad\u30e5\u30fc\u3092\u521d\u671f\u5316 */\n// JavaScript\u306b\u306f\u7d44\u307f\u8fbc\u307f\u306e\u30ad\u30e5\u30fc\u304c\u306a\u3044\u305f\u3081\u3001Array\u3092\u30ad\u30e5\u30fc\u3068\u3057\u3066\u4f7f\u7528\nconst queue = [];\n\n/* \u8981\u7d20\u3092\u30a8\u30f3\u30ad\u30e5\u30fc */\nqueue.push(1);\nqueue.push(3);\nqueue.push(2);\nqueue.push(5);\nqueue.push(4);\n\n/* \u6700\u521d\u306e\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nconst peek = queue[0];\n\n/* \u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc */\n// \u57fa\u790e\u69cb\u9020\u304c\u914d\u5217\u306a\u306e\u3067\u3001shift()\u30e1\u30bd\u30c3\u30c9\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306fO(n)\nconst pop = queue.shift();\n\n/* \u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97 */\nconst size = queue.length;\n\n/* \u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u30c1\u30a7\u30c3\u30af */\nconst empty = queue.length === 0;\n</code></pre> queue.ts<pre><code>/* \u30ad\u30e5\u30fc\u3092\u521d\u671f\u5316 */\n// TypeScript\u306b\u306f\u7d44\u307f\u8fbc\u307f\u306e\u30ad\u30e5\u30fc\u304c\u306a\u3044\u305f\u3081\u3001Array\u3092\u30ad\u30e5\u30fc\u3068\u3057\u3066\u4f7f\u7528\nconst queue: number[] = [];\n\n/* \u8981\u7d20\u3092\u30a8\u30f3\u30ad\u30e5\u30fc */\nqueue.push(1);\nqueue.push(3);\nqueue.push(2);\nqueue.push(5);\nqueue.push(4);\n\n/* \u6700\u521d\u306e\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nconst peek = queue[0];\n\n/* \u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc */\n// \u57fa\u790e\u69cb\u9020\u304c\u914d\u5217\u306a\u306e\u3067\u3001shift()\u30e1\u30bd\u30c3\u30c9\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306fO(n)\nconst pop = queue.shift();\n\n/* \u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97 */\nconst size = queue.length;\n\n/* \u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u30c1\u30a7\u30c3\u30af */\nconst empty = queue.length === 0;\n</code></pre> queue.dart<pre><code>/* \u30ad\u30e5\u30fc\u3092\u521d\u671f\u5316 */\n// Dart\u306eQueue\u30af\u30e9\u30b9\u306f\u53cc\u65b9\u5411\u30ad\u30e5\u30fc\u3067\u3059\u304c\u3001\u30ad\u30e5\u30fc\u3068\u3057\u3066\u4f7f\u7528\u3067\u304d\u307e\u3059\nQueue&lt;int&gt; queue = Queue();\n\n/* \u8981\u7d20\u3092\u30a8\u30f3\u30ad\u30e5\u30fc */\nqueue.add(1);\nqueue.add(3);\nqueue.add(2);\nqueue.add(5);\nqueue.add(4);\n\n/* \u6700\u521d\u306e\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nint peek = queue.first;\n\n/* \u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc */\nint pop = queue.removeFirst();\n\n/* \u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97 */\nint size = queue.length;\n\n/* \u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u30c1\u30a7\u30c3\u30af */\nbool isEmpty = queue.isEmpty;\n</code></pre> queue.rs<pre><code>/* \u53cc\u65b9\u5411\u30ad\u30e5\u30fc\u3092\u521d\u671f\u5316 */\n// Rust\u3067\u306f\u3001\u53cc\u65b9\u5411\u30ad\u30e5\u30fc\u3092\u901a\u5e38\u306e\u30ad\u30e5\u30fc\u3068\u3057\u3066\u4f7f\u7528\nlet mut deque: VecDeque&lt;u32&gt; = VecDeque::new();\n\n/* \u8981\u7d20\u3092\u30a8\u30f3\u30ad\u30e5\u30fc */\ndeque.push_back(1);\ndeque.push_back(3);\ndeque.push_back(2);\ndeque.push_back(5);\ndeque.push_back(4);\n\n/* \u6700\u521d\u306e\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nif let Some(front) = deque.front() {\n}\n\n/* \u8981\u7d20\u3092\u30c7\u30ad\u30e5\u30fc */\nif let Some(pop) = deque.pop_front() {\n}\n\n/* \u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97 */\nlet size = deque.len();\n\n/* \u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u30c1\u30a7\u30c3\u30af */\nlet is_empty = deque.is_empty();\n</code></pre> queue.c<pre><code>// C\u306f\u7d44\u307f\u8fbc\u307f\u306e\u30ad\u30e5\u30fc\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u305b\u3093\n</code></pre> queue.kt<pre><code>\n</code></pre>"},{"location":"chapter_stack_and_queue/queue/#522","title":"5.2.2 \u00a0 \u30ad\u30e5\u30fc\u306e\u5b9f\u88c5","text":"<p>\u30ad\u30e5\u30fc\u3092\u5b9f\u88c5\u3059\u308b\u306b\u306f\u3001\u4e00\u65b9\u306e\u7aef\u3067\u8981\u7d20\u3092\u8ffd\u52a0\u3057\u3001\u3082\u3046\u4e00\u65b9\u306e\u7aef\u3067\u8981\u7d20\u3092\u524a\u9664\u3067\u304d\u308b\u30c7\u30fc\u30bf\u69cb\u9020\u304c\u5fc5\u8981\u3067\u3059\u3002\u9023\u7d50\u30ea\u30b9\u30c8\u3068\u914d\u5217\u306e\u4e21\u65b9\u304c\u3053\u306e\u8981\u4ef6\u3092\u6e80\u305f\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_stack_and_queue/queue/#1","title":"1. \u00a0 \u9023\u7d50\u30ea\u30b9\u30c8\u30d9\u30fc\u30b9\u306e\u5b9f\u88c5","text":"<p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u300c\u30d8\u30c3\u30c9\u30ce\u30fc\u30c9\u300d\u3068\u300c\u30c6\u30fc\u30eb\u30ce\u30fc\u30c9\u300d\u3092\u305d\u308c\u305e\u308c\u30ad\u30e5\u30fc\u306e\u300c\u30d5\u30ed\u30f3\u30c8\u300d\u3068\u300c\u30ea\u30a2\u300d\u3068\u8003\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30ce\u30fc\u30c9\u306f\u5f8c\u308d\u3067\u306e\u307f\u8ffd\u52a0\u3067\u304d\u3001\u524d\u3067\u306e\u307f\u524a\u9664\u3067\u304d\u308b\u3088\u3046\u306b\u898f\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002</p> LinkedListQueuepush()pop() <p></p> <p></p> <p></p> <p> \u56f3 5-5 \u00a0 \u9023\u7d50\u30ea\u30b9\u30c8\u306b\u3088\u308b\u30ad\u30e5\u30fc\u5b9f\u88c5\u306e\u30a8\u30f3\u30ad\u30e5\u30fc\u3068\u30c7\u30ad\u30e5\u30fc\u64cd\u4f5c </p> <p>\u4ee5\u4e0b\u306f\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u3092\u4f7f\u7528\u3057\u3066\u30ad\u30e5\u30fc\u3092\u5b9f\u88c5\u3059\u308b\u30b3\u30fc\u30c9\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby linkedlist_queue.py<pre><code>class LinkedListQueue:\n \"\"\"\u9023\u7d50\u30ea\u30b9\u30c8\u30d9\u30fc\u30b9\u306e\u30ad\u30e5\u30fc\u30af\u30e9\u30b9\"\"\"\n\n def __init__(self):\n \"\"\"\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\"\"\"\n self._front: ListNode | None = None # \u30d8\u30c3\u30c9\u30ce\u30fc\u30c9 front\n self._rear: ListNode | None = None # \u30c6\u30fc\u30eb\u30ce\u30fc\u30c9 rear\n self._size: int = 0\n\n def size(self) -&gt; int:\n \"\"\"\u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97\"\"\"\n return self._size\n\n def is_empty(self) -&gt; bool:\n \"\"\"\u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u5224\u5b9a\"\"\"\n return self._size == 0\n\n def push(self, num: int):\n \"\"\"\u30a8\u30f3\u30ad\u30e5\u30fc\"\"\"\n # \u30c6\u30fc\u30eb\u30ce\u30fc\u30c9\u306e\u5f8c\u308d\u306b num \u3092\u8ffd\u52a0\n node = ListNode(num)\n # \u30ad\u30e5\u30fc\u304c\u7a7a\u306e\u5834\u5408\u3001\u30d8\u30c3\u30c9\u3068\u30c6\u30fc\u30eb\u30ce\u30fc\u30c9\u306e\u4e21\u65b9\u3092\u305d\u306e\u30ce\u30fc\u30c9\u306b\u5411\u3051\u308b\n if self._front is None:\n self._front = node\n self._rear = node\n # \u30ad\u30e5\u30fc\u304c\u7a7a\u3067\u306a\u3044\u5834\u5408\u3001\u305d\u306e\u30ce\u30fc\u30c9\u3092\u30c6\u30fc\u30eb\u30ce\u30fc\u30c9\u306e\u5f8c\u308d\u306b\u8ffd\u52a0\n else:\n self._rear.next = node\n self._rear = node\n self._size += 1\n\n def pop(self) -&gt; int:\n \"\"\"\u30c7\u30ad\u30e5\u30fc\"\"\"\n num = self.peek()\n # \u30d8\u30c3\u30c9\u30ce\u30fc\u30c9\u3092\u524a\u9664\n self._front = self._front.next\n self._size -= 1\n return num\n\n def peek(self) -&gt; int:\n \"\"\"\u30d5\u30ed\u30f3\u30c8\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\"\"\"\n if self.is_empty():\n raise IndexError(\"Queue is empty\")\n return self._front.val\n\n def to_list(self) -&gt; list[int]:\n \"\"\"\u51fa\u529b\u7528\u306e\u30ea\u30b9\u30c8\u306b\u5909\u63db\"\"\"\n queue = []\n temp = self._front\n while temp:\n queue.append(temp.val)\n temp = temp.next\n return queue\n</code></pre> linkedlist_queue.cpp<pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u306b\u57fa\u3065\u304f\u30ad\u30e5\u30fc\u30af\u30e9\u30b9 */\nclass LinkedListQueue {\n private:\n ListNode *front, *rear; // \u5148\u982d\u30ce\u30fc\u30c9front\u3001\u672b\u5c3e\u30ce\u30fc\u30c9rear\n int queSize;\n\n public:\n LinkedListQueue() {\n front = nullptr;\n rear = nullptr;\n queSize = 0;\n }\n\n ~LinkedListQueue() {\n // \u9023\u7d50\u30ea\u30b9\u30c8\u3092\u8d70\u67fb\u3001\u30ce\u30fc\u30c9\u3092\u524a\u9664\u3001\u30e1\u30e2\u30ea\u3092\u89e3\u653e\n freeMemoryLinkedList(front);\n }\n\n /* \u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97 */\n int size() {\n return queSize;\n }\n\n /* \u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u5224\u5b9a */\n bool isEmpty() {\n return queSize == 0;\n }\n\n /* \u30a8\u30f3\u30ad\u30e5\u30fc */\n void push(int num) {\n // \u672b\u5c3e\u30ce\u30fc\u30c9\u306e\u5f8c\u308d\u306bnum\u3092\u8ffd\u52a0\n ListNode *node = new ListNode(num);\n // \u30ad\u30e5\u30fc\u304c\u7a7a\u306e\u5834\u5408\u3001\u5148\u982d\u3068\u672b\u5c3e\u30ce\u30fc\u30c9\u306e\u4e21\u65b9\u3092\u305d\u306e\u30ce\u30fc\u30c9\u306b\u5411\u3051\u308b\n if (front == nullptr) {\n front = node;\n rear = node;\n }\n // \u30ad\u30e5\u30fc\u304c\u7a7a\u3067\u306a\u3044\u5834\u5408\u3001\u305d\u306e\u30ce\u30fc\u30c9\u3092\u672b\u5c3e\u30ce\u30fc\u30c9\u306e\u5f8c\u308d\u306b\u8ffd\u52a0\n else {\n rear-&gt;next = node;\n rear = node;\n }\n queSize++;\n }\n\n /* \u30c7\u30ad\u30e5\u30fc */\n int pop() {\n int num = peek();\n // \u5148\u982d\u30ce\u30fc\u30c9\u3092\u524a\u9664\n ListNode *tmp = front;\n front = front-&gt;next;\n // \u30e1\u30e2\u30ea\u3092\u89e3\u653e\n delete tmp;\n queSize--;\n return num;\n }\n\n /* \u5148\u982d\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\n int peek() {\n if (size() == 0)\n throw out_of_range(\"Queue is empty\");\n return front-&gt;val;\n }\n\n /* \u9023\u7d50\u30ea\u30b9\u30c8\u3092Vector\u306b\u5909\u63db\u3057\u3066\u8fd4\u5374 */\n vector&lt;int&gt; toVector() {\n ListNode *node = front;\n vector&lt;int&gt; res(size());\n for (int i = 0; i &lt; res.size(); i++) {\n res[i] = node-&gt;val;\n node = node-&gt;next;\n }\n return res;\n }\n};\n</code></pre> linkedlist_queue.java<pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u306b\u57fa\u3065\u304f\u30ad\u30e5\u30fc\u30af\u30e9\u30b9 */\nclass LinkedListQueue {\n private ListNode front, rear; // \u5148\u982d\u30ce\u30fc\u30c9 front\u3001\u672b\u5c3e\u30ce\u30fc\u30c9 rear\n private int queSize = 0;\n\n public LinkedListQueue() {\n front = null;\n rear = null;\n }\n\n /* \u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97 */\n public int size() {\n return queSize;\n }\n\n /* \u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u5224\u5b9a */\n public boolean isEmpty() {\n return size() == 0;\n }\n\n /* \u30a8\u30f3\u30ad\u30e5\u30fc */\n public void push(int num) {\n // \u672b\u5c3e\u30ce\u30fc\u30c9\u306e\u5f8c\u308d\u306b num \u3092\u8ffd\u52a0\n ListNode node = new ListNode(num);\n // \u30ad\u30e5\u30fc\u304c\u7a7a\u306e\u5834\u5408\u3001\u5148\u982d\u3068\u672b\u5c3e\u30ce\u30fc\u30c9\u306e\u4e21\u65b9\u3092\u305d\u306e\u30ce\u30fc\u30c9\u306b\u30dd\u30a4\u30f3\u30c8\n if (front == null) {\n front = node;\n rear = node;\n // \u30ad\u30e5\u30fc\u304c\u7a7a\u3067\u306a\u3044\u5834\u5408\u3001\u305d\u306e\u30ce\u30fc\u30c9\u3092\u672b\u5c3e\u30ce\u30fc\u30c9\u306e\u5f8c\u308d\u306b\u8ffd\u52a0\n } else {\n rear.next = node;\n rear = node;\n }\n queSize++;\n }\n\n /* \u30c7\u30ad\u30e5\u30fc */\n public int pop() {\n int num = peek();\n // \u5148\u982d\u30ce\u30fc\u30c9\u3092\u524a\u9664\n front = front.next;\n queSize--;\n return num;\n }\n\n /* \u5148\u982d\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\n public int peek() {\n if (isEmpty())\n throw new IndexOutOfBoundsException();\n return front.val;\n }\n\n /* \u9023\u7d50\u30ea\u30b9\u30c8\u3092\u914d\u5217\u306b\u5909\u63db\u3057\u3066\u8fd4\u3059 */\n public int[] toArray() {\n ListNode node = front;\n int[] res = new int[size()];\n for (int i = 0; i &lt; res.length; i++) {\n res[i] = node.val;\n node = node.next;\n }\n return res;\n }\n}\n</code></pre> linkedlist_queue.cs<pre><code>[class]{LinkedListQueue}-[func]{}\n</code></pre> linkedlist_queue.go<pre><code>[class]{linkedListQueue}-[func]{}\n</code></pre> linkedlist_queue.swift<pre><code>[class]{LinkedListQueue}-[func]{}\n</code></pre> linkedlist_queue.js<pre><code>[class]{LinkedListQueue}-[func]{}\n</code></pre> linkedlist_queue.ts<pre><code>[class]{LinkedListQueue}-[func]{}\n</code></pre> linkedlist_queue.dart<pre><code>[class]{LinkedListQueue}-[func]{}\n</code></pre> linkedlist_queue.rs<pre><code>[class]{LinkedListQueue}-[func]{}\n</code></pre> linkedlist_queue.c<pre><code>[class]{LinkedListQueue}-[func]{}\n</code></pre> linkedlist_queue.kt<pre><code>[class]{LinkedListQueue}-[func]{}\n</code></pre> linkedlist_queue.rb<pre><code>[class]{LinkedListQueue}-[func]{}\n</code></pre>"},{"location":"chapter_stack_and_queue/queue/#2","title":"2. \u00a0 \u914d\u5217\u30d9\u30fc\u30b9\u306e\u5b9f\u88c5","text":"<p>\u914d\u5217\u306e\u6700\u521d\u306e\u8981\u7d20\u3092\u524a\u9664\u3059\u308b\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n)\\)\u3067\u3001\u30c7\u30ad\u30e5\u30fc\u64cd\u4f5c\u304c\u975e\u52b9\u7387\u306b\u306a\u308a\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u3053\u306e\u554f\u984c\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u5de7\u5999\u306b\u56de\u907f\u3067\u304d\u307e\u3059\u3002</p> <p>\u5909\u6570<code>front</code>\u3092\u4f7f\u7528\u3057\u3066\u30d5\u30ed\u30f3\u30c8\u8981\u7d20\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u793a\u3057\u3001\u5909\u6570<code>size</code>\u3092\u7dad\u6301\u3057\u3066\u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u8a18\u9332\u3057\u307e\u3059\u3002<code>rear = front + size</code>\u3092\u5b9a\u7fa9\u3057\u3001\u3053\u308c\u306f\u30c6\u30fc\u30eb\u8981\u7d20\u306e\u76f4\u5f8c\u306e\u4f4d\u7f6e\u3092\u6307\u3057\u307e\u3059\u3002</p> <p>\u3053\u306e\u8a2d\u8a08\u306b\u3088\u308a\u3001\u914d\u5217\u5185\u306e\u8981\u7d20\u306e\u6709\u52b9\u306a\u9593\u9694\u306f<code>[front, rear - 1]</code>\u3067\u3059\u3002\u5404\u64cd\u4f5c\u306e\u5b9f\u88c5\u65b9\u6cd5\u3092\u4e0b\u56f3\u306b\u793a\u3057\u307e\u3059\u3002</p> <ul> <li>\u30a8\u30f3\u30ad\u30e5\u30fc\u64cd\u4f5c\uff1a\u5165\u529b\u8981\u7d20\u3092<code>rear</code>\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u5272\u308a\u5f53\u3066\u3001<code>size</code>\u30921\u5897\u52a0\u3055\u305b\u307e\u3059\u3002</li> <li>\u30c7\u30ad\u30e5\u30fc\u64cd\u4f5c\uff1a\u5358\u306b<code>front</code>\u30921\u5897\u52a0\u3055\u305b\u3001<code>size</code>\u30921\u6e1b\u5c11\u3055\u305b\u307e\u3059\u3002</li> </ul> <p>\u30a8\u30f3\u30ad\u30e5\u30fc\u3068\u30c7\u30ad\u30e5\u30fc\u64cd\u4f5c\u306f\u4e21\u65b9\u3068\u3082\u5358\u4e00\u306e\u64cd\u4f5c\u306e\u307f\u3092\u5fc5\u8981\u3068\u3057\u3001\u305d\u308c\u305e\u308c\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(1)\\)\u3067\u3059\u3002</p> ArrayQueuepush()pop() <p></p> <p></p> <p></p> <p> \u56f3 5-6 \u00a0 \u914d\u5217\u306b\u3088\u308b\u30ad\u30e5\u30fc\u5b9f\u88c5\u306e\u30a8\u30f3\u30ad\u30e5\u30fc\u3068\u30c7\u30ad\u30e5\u30fc\u64cd\u4f5c </p> <p>\u554f\u984c\u306b\u6c17\u3065\u304f\u304b\u3082\u3057\u308c\u307e\u305b\u3093\uff1a\u30a8\u30f3\u30ad\u30e5\u30fc\u3068\u30c7\u30ad\u30e5\u30fc\u64cd\u4f5c\u304c\u7d99\u7d9a\u7684\u306b\u5b9f\u884c\u3055\u308c\u308b\u3068\u3001<code>front</code>\u3068<code>rear</code>\u306e\u4e21\u65b9\u304c\u53f3\u306b\u79fb\u52d5\u3057\u3001\u6700\u7d42\u7684\u306b\u914d\u5217\u306e\u672b\u5c3e\u306b\u5230\u9054\u3057\u3066\u305d\u308c\u4ee5\u4e0a\u79fb\u52d5\u3067\u304d\u306a\u304f\u306a\u308a\u307e\u3059\u3002\u3053\u308c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306b\u3001\u914d\u5217\u3092\u300c\u5faa\u74b0\u914d\u5217\u300d\u3068\u3057\u3066\u6271\u3044\u3001\u914d\u5217\u306e\u672b\u5c3e\u3092\u5148\u982d\u306b\u63a5\u7d9a\u3057\u307e\u3059\u3002</p> <p>\u5faa\u74b0\u914d\u5217\u3067\u306f\u3001<code>front</code>\u307e\u305f\u306f<code>rear</code>\u304c\u672b\u5c3e\u306b\u5230\u9054\u3059\u308b\u3068\u3001\u914d\u5217\u306e\u5148\u982d\u306b\u30eb\u30fc\u30d7\u30d0\u30c3\u30af\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u5faa\u74b0\u30d1\u30bf\u30fc\u30f3\u306f\u3001\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u306b\u793a\u3059\u3088\u3046\u306b\u300c\u5270\u4f59\u6f14\u7b97\u300d\u3067\u5b9f\u73fe\u3067\u304d\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby array_queue.py<pre><code>class ArrayQueue:\n \"\"\"\u5faa\u74b0\u914d\u5217\u30d9\u30fc\u30b9\u306e\u30ad\u30e5\u30fc\u30af\u30e9\u30b9\"\"\"\n\n def __init__(self, size: int):\n \"\"\"\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\"\"\"\n self._nums: list[int] = [0] * size # \u30ad\u30e5\u30fc\u8981\u7d20\u3092\u683c\u7d0d\u3059\u308b\u914d\u5217\n self._front: int = 0 # \u30d5\u30ed\u30f3\u30c8\u30dd\u30a4\u30f3\u30bf\u3001\u30d5\u30ed\u30f3\u30c8\u8981\u7d20\u3092\u6307\u3059\n self._size: int = 0 # \u30ad\u30e5\u30fc\u306e\u9577\u3055\n\n def capacity(self) -&gt; int:\n \"\"\"\u30ad\u30e5\u30fc\u306e\u5bb9\u91cf\u3092\u53d6\u5f97\"\"\"\n return len(self._nums)\n\n def size(self) -&gt; int:\n \"\"\"\u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97\"\"\"\n return self._size\n\n def is_empty(self) -&gt; bool:\n \"\"\"\u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u5224\u5b9a\"\"\"\n return self._size == 0\n\n def push(self, num: int):\n \"\"\"\u30a8\u30f3\u30ad\u30e5\u30fc\"\"\"\n if self._size == self.capacity():\n raise IndexError(\"Queue is full\")\n # \u30ea\u30a2\u30dd\u30a4\u30f3\u30bf\u3092\u8a08\u7b97\u3001\u30ea\u30a2\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 + 1 \u3092\u6307\u3059\n # \u30e2\u30b8\u30e5\u30ed\u6f14\u7b97\u3092\u4f7f\u7528\u3057\u3066\u30ea\u30a2\u30dd\u30a4\u30f3\u30bf\u3092\u914d\u5217\u306e\u672b\u5c3e\u304b\u3089\u5148\u982d\u306b\u623b\u3059\n rear: int = (self._front + self._size) % self.capacity()\n # num \u3092\u30ea\u30a2\u306b\u8ffd\u52a0\n self._nums[rear] = num\n self._size += 1\n\n def pop(self) -&gt; int:\n \"\"\"\u30c7\u30ad\u30e5\u30fc\"\"\"\n num: int = self.peek()\n # \u30d5\u30ed\u30f3\u30c8\u30dd\u30a4\u30f3\u30bf\u30921\u3064\u5f8c\u308d\u306b\u79fb\u52d5\u3001\u672b\u5c3e\u3092\u8d85\u3048\u305f\u5834\u5408\u306f\u914d\u5217\u306e\u5148\u982d\u306b\u623b\u308b\n self._front = (self._front + 1) % self.capacity()\n self._size -= 1\n return num\n\n def peek(self) -&gt; int:\n \"\"\"\u30d5\u30ed\u30f3\u30c8\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\"\"\"\n if self.is_empty():\n raise IndexError(\"Queue is empty\")\n return self._nums[self._front]\n\n def to_list(self) -&gt; list[int]:\n \"\"\"\u51fa\u529b\u7528\u306e\u914d\u5217\u3092\u8fd4\u3059\"\"\"\n res = [0] * self.size()\n j: int = self._front\n for i in range(self.size()):\n res[i] = self._nums[(j % self.capacity())]\n j += 1\n return res\n</code></pre> array_queue.cpp<pre><code>/* \u5faa\u74b0\u914d\u5217\u306b\u57fa\u3065\u304f\u30ad\u30e5\u30fc\u30af\u30e9\u30b9 */\nclass ArrayQueue {\n private:\n int *nums; // \u30ad\u30e5\u30fc\u8981\u7d20\u3092\u683c\u7d0d\u3059\u308b\u914d\u5217\n int front; // \u5148\u982d\u30dd\u30a4\u30f3\u30bf\u3001\u5148\u982d\u8981\u7d20\u3092\u6307\u3059\n int queSize; // \u30ad\u30e5\u30fc\u306e\u9577\u3055\n int queCapacity; // \u30ad\u30e5\u30fc\u306e\u5bb9\u91cf\n\n public:\n ArrayQueue(int capacity) {\n // \u914d\u5217\u3092\u521d\u671f\u5316\n nums = new int[capacity];\n queCapacity = capacity;\n front = queSize = 0;\n }\n\n ~ArrayQueue() {\n delete[] nums;\n }\n\n /* \u30ad\u30e5\u30fc\u306e\u5bb9\u91cf\u3092\u53d6\u5f97 */\n int capacity() {\n return queCapacity;\n }\n\n /* \u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97 */\n int size() {\n return queSize;\n }\n\n /* \u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u5224\u5b9a */\n bool isEmpty() {\n return size() == 0;\n }\n\n /* \u30a8\u30f3\u30ad\u30e5\u30fc */\n void push(int num) {\n if (queSize == queCapacity) {\n cout &lt;&lt; \"Queue is full\" &lt;&lt; endl;\n return;\n }\n // \u672b\u5c3e\u30dd\u30a4\u30f3\u30bf\u3092\u8a08\u7b97\u3001\u672b\u5c3e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 + 1\u3092\u6307\u3059\n // \u5270\u4f59\u6f14\u7b97\u3092\u4f7f\u7528\u3057\u3066\u672b\u5c3e\u30dd\u30a4\u30f3\u30bf\u304c\u914d\u5217\u306e\u672b\u5c3e\u304b\u3089\u5148\u982d\u306b\u623b\u308b\u3088\u3046\u306b\u30e9\u30c3\u30d7\n int rear = (front + queSize) % queCapacity;\n // num\u3092\u672b\u5c3e\u306b\u8ffd\u52a0\n nums[rear] = num;\n queSize++;\n }\n\n /* \u30c7\u30ad\u30e5\u30fc */\n int pop() {\n int num = peek();\n // \u5148\u982d\u30dd\u30a4\u30f3\u30bf\u30921\u3064\u5f8c\u308d\u306b\u79fb\u52d5\u3001\u672b\u5c3e\u3092\u8d85\u3048\u305f\u5834\u5408\u306f\u914d\u5217\u306e\u5148\u982d\u306b\u623b\u308b\n front = (front + 1) % queCapacity;\n queSize--;\n return num;\n }\n\n /* \u5148\u982d\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\n int peek() {\n if (isEmpty())\n throw out_of_range(\"Queue is empty\");\n return nums[front];\n }\n\n /* \u914d\u5217\u3092Vector\u306b\u5909\u63db\u3057\u3066\u8fd4\u5374 */\n vector&lt;int&gt; toVector() {\n // \u6709\u52b9\u306a\u9577\u3055\u7bc4\u56f2\u5185\u306e\u8981\u7d20\u306e\u307f\u3092\u5909\u63db\n vector&lt;int&gt; arr(queSize);\n for (int i = 0, j = front; i &lt; queSize; i++, j++) {\n arr[i] = nums[j % queCapacity];\n }\n return arr;\n }\n};\n</code></pre> array_queue.java<pre><code>/* \u914d\u5217\u306b\u57fa\u3065\u304f\u30ad\u30e5\u30fc\u30af\u30e9\u30b9 */\nclass ArrayQueue {\n private int[] nums; // \u8981\u7d20\u3092\u683c\u7d0d\u3059\u308b\u914d\u5217\n private int front; // \u30ad\u30e5\u30fc\u30d8\u30c3\u30c9\u30dd\u30a4\u30f3\u30bf\u3001\u6700\u521d\u306e\u8981\u7d20\u3092\u6307\u3059\n private int queSize; // \u30ad\u30e5\u30fc\u306e\u9577\u3055\n\n public ArrayQueue(int capacity) {\n nums = new int[capacity];\n front = queSize = 0;\n }\n\n /* \u30ad\u30e5\u30fc\u306e\u5bb9\u91cf\u3092\u53d6\u5f97 */\n public int capacity() {\n return nums.length;\n }\n\n /* \u30ad\u30e5\u30fc\u306e\u9577\u3055\u3092\u53d6\u5f97 */\n public int size() {\n return queSize;\n }\n\n /* \u30ad\u30e5\u30fc\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u5224\u5b9a */\n public boolean isEmpty() {\n return queSize == 0;\n }\n\n /* \u30a8\u30f3\u30ad\u30e5\u30fc */\n public void push(int num) {\n if (queSize == capacity()) {\n System.out.println(\"\u30ad\u30e5\u30fc\u304c\u6e80\u676f\u3067\u3059\");\n return;\n }\n // \u30ea\u30a2\u30dd\u30a4\u30f3\u30bf\u3092\u8a08\u7b97\uff1afront + queSize\n // \u30e2\u30b8\u30e5\u30ed\u64cd\u4f5c\u306b\u3088\u308a rear \u304c\u914d\u5217\u306e\u9577\u3055\u3092\u8d85\u3048\u308b\u3053\u3068\u3092\u56de\u907f\n int rear = (front + queSize) % capacity();\n // \u8981\u7d20\u3092\u30ad\u30e5\u30fc\u30ea\u30a2\u306b\u8ffd\u52a0\n nums[rear] = num;\n queSize++;\n }\n\n /* \u30c7\u30ad\u30e5\u30fc */\n public int pop() {\n int num = peek();\n // \u30ad\u30e5\u30fc\u30d8\u30c3\u30c9\u30dd\u30a4\u30f3\u30bf\u3092\u5f8c\u308d\u306b1\u3064\u79fb\u52d5\u3001\u30e2\u30b8\u30e5\u30ed\u64cd\u4f5c\u306b\u3088\u308a\u7bc4\u56f2\u3092\u8d85\u3048\u308b\u3053\u3068\u3092\u56de\u907f\n front = (front + 1) % capacity();\n queSize--;\n return num;\n }\n\n /* \u30ad\u30e5\u30fc\u30d8\u30c3\u30c9\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\n public int peek() {\n if (isEmpty())\n throw new IndexOutOfBoundsException();\n return nums[front];\n }\n\n /* \u914d\u5217\u3092\u8fd4\u3059 */\n public int[] toArray() {\n // front \u304b\u3089\u958b\u59cb\u3057\u3066 queSize \u500b\u306e\u8981\u7d20\u306e\u307f\u3092\u30b3\u30d4\u30fc\n int[] res = new int[queSize];\n for (int i = 0, j = front; i &lt; queSize; i++, j++) {\n res[i] = nums[j % capacity()];\n }\n return res;\n }\n}\n</code></pre> array_queue.cs<pre><code>[class]{ArrayQueue}-[func]{}\n</code></pre> array_queue.go<pre><code>[class]{arrayQueue}-[func]{}\n</code></pre> array_queue.swift<pre><code>[class]{ArrayQueue}-[func]{}\n</code></pre> array_queue.js<pre><code>[class]{ArrayQueue}-[func]{}\n</code></pre> array_queue.ts<pre><code>[class]{ArrayQueue}-[func]{}\n</code></pre> array_queue.dart<pre><code>[class]{ArrayQueue}-[func]{}\n</code></pre> array_queue.rs<pre><code>[class]{ArrayQueue}-[func]{}\n</code></pre> array_queue.c<pre><code>[class]{ArrayQueue}-[func]{}\n</code></pre> array_queue.kt<pre><code>[class]{ArrayQueue}-[func]{}\n</code></pre> array_queue.rb<pre><code>[class]{ArrayQueue}-[func]{}\n</code></pre> <p>\u4e0a\u8a18\u306e\u30ad\u30e5\u30fc\u5b9f\u88c5\u306b\u306f\u307e\u3060\u5236\u9650\u304c\u3042\u308a\u307e\u3059\uff1a\u9577\u3055\u304c\u56fa\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u3053\u306e\u554f\u984c\u306f\u89e3\u6c7a\u304c\u56f0\u96e3\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u914d\u5217\u3092\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u81ea\u52d5\u62e1\u5f35\u3067\u304d\u308b\u52d5\u7684\u914d\u5217\u306b\u7f6e\u304d\u63db\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u8208\u5473\u306e\u3042\u308b\u8aad\u8005\u306f\u81ea\u5206\u3067\u5b9f\u88c5\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002</p> <p>2\u3064\u306e\u5b9f\u88c5\u306e\u6bd4\u8f03\u306f\u30b9\u30bf\u30c3\u30af\u306e\u5834\u5408\u3068\u4e00\u8cab\u3057\u3066\u304a\u308a\u3001\u3053\u3053\u3067\u306f\u7e70\u308a\u8fd4\u3057\u307e\u305b\u3093\u3002</p>"},{"location":"chapter_stack_and_queue/queue/#523","title":"5.2.3 \u00a0 \u30ad\u30e5\u30fc\u306e\u5178\u578b\u7684\u306a\u5fdc\u7528","text":"<ul> <li>Amazon\u306e\u6ce8\u6587\uff1a\u8cb7\u3044\u7269\u5ba2\u304c\u6ce8\u6587\u3092\u884c\u3063\u305f\u5f8c\u3001\u3053\u308c\u3089\u306e\u6ce8\u6587\u306f\u30ad\u30e5\u30fc\u306b\u53c2\u52a0\u3057\u3001\u30b7\u30b9\u30c6\u30e0\u306f\u9806\u756a\u306b\u51e6\u7406\u3057\u307e\u3059\u3002\u72ec\u8eab\u306e\u65e5\u306a\u3069\u306e\u30a4\u30d9\u30f3\u30c8\u4e2d\u306f\u3001\u77ed\u6642\u9593\u3067\u5927\u91cf\u306e\u6ce8\u6587\u304c\u751f\u6210\u3055\u308c\u3001\u9ad8\u3044\u540c\u6642\u5b9f\u884c\u6027\u304c\u30a8\u30f3\u30b8\u30cb\u30a2\u306b\u3068\u3063\u3066\u91cd\u8981\u306a\u8ab2\u984c\u3068\u306a\u308a\u307e\u3059\u3002</li> <li>\u69d8\u3005\u306aToDo\u30ea\u30b9\u30c8\uff1a\u300c\u5148\u7740\u9806\u300d\u6a5f\u80fd\u304c\u5fc5\u8981\u306a\u30b7\u30ca\u30ea\u30aa\u3001\u4f8b\u3048\u3070\u30d7\u30ea\u30f3\u30bf\u30fc\u306e\u30bf\u30b9\u30af\u30ad\u30e5\u30fc\u3084\u30ec\u30b9\u30c8\u30e9\u30f3\u306e\u914d\u9054\u30ad\u30e5\u30fc\u306a\u3069\u3001\u30ad\u30e5\u30fc\u3067\u51e6\u7406\u9806\u5e8f\u3092\u52b9\u679c\u7684\u306b\u7dad\u6301\u3067\u304d\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_stack_and_queue/stack/","title":"5.1 \u00a0 \u30b9\u30bf\u30c3\u30af","text":"<p>\u30b9\u30bf\u30c3\u30af\u306f\u3001\u5f8c\u5165\u5148\u51fa\uff08LIFO\uff09\u306e\u539f\u5247\u306b\u5f93\u3046\u7dda\u5f62\u30c7\u30fc\u30bf\u69cb\u9020\u3067\u3059\u3002</p> <p>\u30b9\u30bf\u30c3\u30af\u3092\u30c6\u30fc\u30d6\u30eb\u4e0a\u306e\u76bf\u306e\u5c71\u306b\u4f8b\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u5e95\u306e\u76bf\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u306b\u306f\u3001\u307e\u305a\u4e0a\u306e\u76bf\u3092\u53d6\u308a\u9664\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u76bf\u3092\u69d8\u3005\u306a\u7a2e\u985e\u306e\u8981\u7d20\uff08\u6574\u6570\u3001\u6587\u5b57\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306a\u3069\uff09\u306b\u7f6e\u304d\u63db\u3048\u308b\u3053\u3068\u3067\u3001\u30b9\u30bf\u30c3\u30af\u3068\u547c\u3070\u308c\u308b\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u5f97\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</p> <p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u8981\u7d20\u306e\u5c71\u306e\u4e0a\u90e8\u3092\u300c\u30b9\u30bf\u30c3\u30af\u306e\u30c8\u30c3\u30d7\u300d\u3001\u4e0b\u90e8\u3092\u300c\u30b9\u30bf\u30c3\u30af\u306e\u30dc\u30c8\u30e0\u300d\u3068\u547c\u3073\u307e\u3059\u3002\u30b9\u30bf\u30c3\u30af\u306e\u30c8\u30c3\u30d7\u306b\u8981\u7d20\u3092\u8ffd\u52a0\u3059\u308b\u64cd\u4f5c\u3092\u300c\u30d7\u30c3\u30b7\u30e5\u300d\u3001\u30c8\u30c3\u30d7\u8981\u7d20\u3092\u524a\u9664\u3059\u308b\u64cd\u4f5c\u3092\u300c\u30dd\u30c3\u30d7\u300d\u3068\u547c\u3073\u307e\u3059\u3002</p> <p></p> <p> \u56f3 5-1 \u00a0 \u30b9\u30bf\u30c3\u30af\u306e\u5f8c\u5165\u5148\u51fa\u30eb\u30fc\u30eb </p>"},{"location":"chapter_stack_and_queue/stack/#511","title":"5.1.1 \u00a0 \u30b9\u30bf\u30c3\u30af\u306e\u4e00\u822c\u7684\u306a\u64cd\u4f5c","text":"<p>\u30b9\u30bf\u30c3\u30af\u306e\u4e00\u822c\u7684\u306a\u64cd\u4f5c\u3092\u4e0b\u8868\u306b\u793a\u3057\u307e\u3059\u3002\u5177\u4f53\u7684\u306a\u30e1\u30bd\u30c3\u30c9\u540d\u306f\u4f7f\u7528\u3059\u308b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306b\u3088\u3063\u3066\u7570\u306a\u308a\u307e\u3059\u3002\u3053\u3053\u3067\u306f\u3001\u4f8b\u3068\u3057\u3066<code>push()</code>\u3001<code>pop()</code>\u3001<code>peek()</code>\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</p> <p> \u8868 5-1 \u00a0 \u30b9\u30bf\u30c3\u30af\u64cd\u4f5c\u306e\u52b9\u7387 </p> \u30e1\u30bd\u30c3\u30c9 \u8aac\u660e \u6642\u9593\u8a08\u7b97\u91cf <code>push()</code> \u8981\u7d20\u3092\u30b9\u30bf\u30c3\u30af\u306b\u30d7\u30c3\u30b7\u30e5\uff08\u30c8\u30c3\u30d7\u306b\u8ffd\u52a0\uff09 \\(O(1)\\) <code>pop()</code> \u30b9\u30bf\u30c3\u30af\u304b\u3089\u30c8\u30c3\u30d7\u8981\u7d20\u3092\u30dd\u30c3\u30d7 \\(O(1)\\) <code>peek()</code> \u30b9\u30bf\u30c3\u30af\u306e\u30c8\u30c3\u30d7\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 \\(O(1)\\) <p>\u901a\u5e38\u3001\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306b\u7d44\u307f\u8fbc\u307e\u308c\u3066\u3044\u308b\u30b9\u30bf\u30c3\u30af\u30af\u30e9\u30b9\u3092\u76f4\u63a5\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u4e00\u90e8\u306e\u8a00\u8a9e\u3067\u306f\u5177\u4f53\u7684\u306b\u30b9\u30bf\u30c3\u30af\u30af\u30e9\u30b9\u3092\u63d0\u4f9b\u3057\u3066\u3044\u306a\u3044\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u5834\u5408\u3001\u8a00\u8a9e\u306e\u300c\u914d\u5217\u300d\u307e\u305f\u306f\u300c\u9023\u7d50\u30ea\u30b9\u30c8\u300d\u3092\u30b9\u30bf\u30c3\u30af\u3068\u3057\u3066\u4f7f\u7528\u3057\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u3067\u30b9\u30bf\u30c3\u30af\u30ed\u30b8\u30c3\u30af\u306b\u95a2\u9023\u3057\u306a\u3044\u64cd\u4f5c\u3092\u7121\u8996\u3067\u304d\u307e\u3059\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlin stack.py<pre><code># \u30b9\u30bf\u30c3\u30af\u3092\u521d\u671f\u5316\n# Python\u306b\u306f\u7d44\u307f\u8fbc\u307f\u306e\u30b9\u30bf\u30c3\u30af\u30af\u30e9\u30b9\u304c\u306a\u3044\u305f\u3081\u3001list\u3092\u30b9\u30bf\u30c3\u30af\u3068\u3057\u3066\u4f7f\u7528\nstack: list[int] = []\n\n# \u8981\u7d20\u3092\u30b9\u30bf\u30c3\u30af\u306b\u30d7\u30c3\u30b7\u30e5\nstack.append(1)\nstack.append(3)\nstack.append(2)\nstack.append(5)\nstack.append(4)\n\n# \u30b9\u30bf\u30c3\u30af\u306e\u30c8\u30c3\u30d7\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\npeek: int = stack[-1]\n\n# \u30b9\u30bf\u30c3\u30af\u304b\u3089\u8981\u7d20\u3092\u30dd\u30c3\u30d7\npop: int = stack.pop()\n\n# \u30b9\u30bf\u30c3\u30af\u306e\u9577\u3055\u3092\u53d6\u5f97\nsize: int = len(stack)\n\n# \u30b9\u30bf\u30c3\u30af\u304c\u7a7a\u304b\u3069\u3046\u304b\u30c1\u30a7\u30c3\u30af\nis_empty: bool = len(stack) == 0\n</code></pre> stack.cpp<pre><code>/* \u30b9\u30bf\u30c3\u30af\u3092\u521d\u671f\u5316 */\nstack&lt;int&gt; stack;\n\n/* \u8981\u7d20\u3092\u30b9\u30bf\u30c3\u30af\u306b\u30d7\u30c3\u30b7\u30e5 */\nstack.push(1);\nstack.push(3);\nstack.push(2);\nstack.push(5);\nstack.push(4);\n\n/* \u30b9\u30bf\u30c3\u30af\u306e\u30c8\u30c3\u30d7\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nint top = stack.top();\n\n/* \u30b9\u30bf\u30c3\u30af\u304b\u3089\u8981\u7d20\u3092\u30dd\u30c3\u30d7 */\nstack.pop(); // \u623b\u308a\u5024\u306a\u3057\n\n/* \u30b9\u30bf\u30c3\u30af\u306e\u9577\u3055\u3092\u53d6\u5f97 */\nint size = stack.size();\n\n/* \u30b9\u30bf\u30c3\u30af\u304c\u7a7a\u304b\u3069\u3046\u304b\u30c1\u30a7\u30c3\u30af */\nbool empty = stack.empty();\n</code></pre> stack.java<pre><code>/* \u30b9\u30bf\u30c3\u30af\u3092\u521d\u671f\u5316 */\nStack&lt;Integer&gt; stack = new Stack&lt;&gt;();\n\n/* \u8981\u7d20\u3092\u30b9\u30bf\u30c3\u30af\u306b\u30d7\u30c3\u30b7\u30e5 */\nstack.push(1);\nstack.push(3);\nstack.push(2);\nstack.push(5);\nstack.push(4);\n\n/* \u30b9\u30bf\u30c3\u30af\u306e\u30c8\u30c3\u30d7\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nint peek = stack.peek();\n\n/* \u30b9\u30bf\u30c3\u30af\u304b\u3089\u8981\u7d20\u3092\u30dd\u30c3\u30d7 */\nint pop = stack.pop();\n\n/* \u30b9\u30bf\u30c3\u30af\u306e\u9577\u3055\u3092\u53d6\u5f97 */\nint size = stack.size();\n\n/* \u30b9\u30bf\u30c3\u30af\u304c\u7a7a\u304b\u3069\u3046\u304b\u30c1\u30a7\u30c3\u30af */\nboolean isEmpty = stack.isEmpty();\n</code></pre> stack.cs<pre><code>/* \u30b9\u30bf\u30c3\u30af\u3092\u521d\u671f\u5316 */\nStack&lt;int&gt; stack = new();\n\n/* \u8981\u7d20\u3092\u30b9\u30bf\u30c3\u30af\u306b\u30d7\u30c3\u30b7\u30e5 */\nstack.Push(1);\nstack.Push(3);\nstack.Push(2);\nstack.Push(5);\nstack.Push(4);\n\n/* \u30b9\u30bf\u30c3\u30af\u306e\u30c8\u30c3\u30d7\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nint peek = stack.Peek();\n\n/* \u30b9\u30bf\u30c3\u30af\u304b\u3089\u8981\u7d20\u3092\u30dd\u30c3\u30d7 */\nint pop = stack.Pop();\n\n/* \u30b9\u30bf\u30c3\u30af\u306e\u9577\u3055\u3092\u53d6\u5f97 */\nint size = stack.Count;\n\n/* \u30b9\u30bf\u30c3\u30af\u304c\u7a7a\u304b\u3069\u3046\u304b\u30c1\u30a7\u30c3\u30af */\nbool isEmpty = stack.Count == 0;\n</code></pre> stack_test.go<pre><code>/* \u30b9\u30bf\u30c3\u30af\u3092\u521d\u671f\u5316 */\n// Go\u3067\u306f\u3001Slice\u3092\u30b9\u30bf\u30c3\u30af\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u63a8\u5968\u3055\u308c\u307e\u3059\nvar stack []int\n\n/* \u8981\u7d20\u3092\u30b9\u30bf\u30c3\u30af\u306b\u30d7\u30c3\u30b7\u30e5 */\nstack = append(stack, 1)\nstack = append(stack, 3)\nstack = append(stack, 2)\nstack = append(stack, 5)\nstack = append(stack, 4)\n\n/* \u30b9\u30bf\u30c3\u30af\u306e\u30c8\u30c3\u30d7\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\npeek := stack[len(stack)-1]\n\n/* \u30b9\u30bf\u30c3\u30af\u304b\u3089\u8981\u7d20\u3092\u30dd\u30c3\u30d7 */\npop := stack[len(stack)-1]\nstack = stack[:len(stack)-1]\n\n/* \u30b9\u30bf\u30c3\u30af\u306e\u9577\u3055\u3092\u53d6\u5f97 */\nsize := len(stack)\n\n/* \u30b9\u30bf\u30c3\u30af\u304c\u7a7a\u304b\u3069\u3046\u304b\u30c1\u30a7\u30c3\u30af */\nisEmpty := len(stack) == 0\n</code></pre> stack.swift<pre><code>/* \u30b9\u30bf\u30c3\u30af\u3092\u521d\u671f\u5316 */\n// Swift\u306b\u306f\u7d44\u307f\u8fbc\u307f\u306e\u30b9\u30bf\u30c3\u30af\u30af\u30e9\u30b9\u304c\u306a\u3044\u305f\u3081\u3001Array\u3092\u30b9\u30bf\u30c3\u30af\u3068\u3057\u3066\u4f7f\u7528\nvar stack: [Int] = []\n\n/* \u8981\u7d20\u3092\u30b9\u30bf\u30c3\u30af\u306b\u30d7\u30c3\u30b7\u30e5 */\nstack.append(1)\nstack.append(3)\nstack.append(2)\nstack.append(5)\nstack.append(4)\n\n/* \u30b9\u30bf\u30c3\u30af\u306e\u30c8\u30c3\u30d7\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nlet peek = stack.last!\n\n/* \u30b9\u30bf\u30c3\u30af\u304b\u3089\u8981\u7d20\u3092\u30dd\u30c3\u30d7 */\nlet pop = stack.removeLast()\n\n/* \u30b9\u30bf\u30c3\u30af\u306e\u9577\u3055\u3092\u53d6\u5f97 */\nlet size = stack.count\n\n/* \u30b9\u30bf\u30c3\u30af\u304c\u7a7a\u304b\u3069\u3046\u304b\u30c1\u30a7\u30c3\u30af */\nlet isEmpty = stack.isEmpty\n</code></pre> stack.js<pre><code>/* \u30b9\u30bf\u30c3\u30af\u3092\u521d\u671f\u5316 */\n// JavaScript\u306b\u306f\u7d44\u307f\u8fbc\u307f\u306e\u30b9\u30bf\u30c3\u30af\u30af\u30e9\u30b9\u304c\u306a\u3044\u305f\u3081\u3001Array\u3092\u30b9\u30bf\u30c3\u30af\u3068\u3057\u3066\u4f7f\u7528\nconst stack = [];\n\n/* \u8981\u7d20\u3092\u30b9\u30bf\u30c3\u30af\u306b\u30d7\u30c3\u30b7\u30e5 */\nstack.push(1);\nstack.push(3);\nstack.push(2);\nstack.push(5);\nstack.push(4);\n\n/* \u30b9\u30bf\u30c3\u30af\u306e\u30c8\u30c3\u30d7\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nconst peek = stack[stack.length-1];\n\n/* \u30b9\u30bf\u30c3\u30af\u304b\u3089\u8981\u7d20\u3092\u30dd\u30c3\u30d7 */\nconst pop = stack.pop();\n\n/* \u30b9\u30bf\u30c3\u30af\u306e\u9577\u3055\u3092\u53d6\u5f97 */\nconst size = stack.length;\n\n/* \u30b9\u30bf\u30c3\u30af\u304c\u7a7a\u304b\u3069\u3046\u304b\u30c1\u30a7\u30c3\u30af */\nconst is_empty = stack.length === 0;\n</code></pre> stack.ts<pre><code>/* \u30b9\u30bf\u30c3\u30af\u3092\u521d\u671f\u5316 */\n// TypeScript\u306b\u306f\u7d44\u307f\u8fbc\u307f\u306e\u30b9\u30bf\u30c3\u30af\u30af\u30e9\u30b9\u304c\u306a\u3044\u305f\u3081\u3001Array\u3092\u30b9\u30bf\u30c3\u30af\u3068\u3057\u3066\u4f7f\u7528\nconst stack: number[] = [];\n\n/* \u8981\u7d20\u3092\u30b9\u30bf\u30c3\u30af\u306b\u30d7\u30c3\u30b7\u30e5 */\nstack.push(1);\nstack.push(3);\nstack.push(2);\nstack.push(5);\nstack.push(4);\n\n/* \u30b9\u30bf\u30c3\u30af\u306e\u30c8\u30c3\u30d7\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nconst peek = stack[stack.length - 1];\n\n/* \u30b9\u30bf\u30c3\u30af\u304b\u3089\u8981\u7d20\u3092\u30dd\u30c3\u30d7 */\nconst pop = stack.pop();\n\n/* \u30b9\u30bf\u30c3\u30af\u306e\u9577\u3055\u3092\u53d6\u5f97 */\nconst size = stack.length;\n\n/* \u30b9\u30bf\u30c3\u30af\u304c\u7a7a\u304b\u3069\u3046\u304b\u30c1\u30a7\u30c3\u30af */\nconst is_empty = stack.length === 0;\n</code></pre> stack.dart<pre><code>/* \u30b9\u30bf\u30c3\u30af\u3092\u521d\u671f\u5316 */\n// Dart\u306b\u306f\u7d44\u307f\u8fbc\u307f\u306e\u30b9\u30bf\u30c3\u30af\u30af\u30e9\u30b9\u304c\u306a\u3044\u305f\u3081\u3001List\u3092\u30b9\u30bf\u30c3\u30af\u3068\u3057\u3066\u4f7f\u7528\nList&lt;int&gt; stack = [];\n\n/* \u8981\u7d20\u3092\u30b9\u30bf\u30c3\u30af\u306b\u30d7\u30c3\u30b7\u30e5 */\nstack.add(1);\nstack.add(3);\nstack.add(2);\nstack.add(5);\nstack.add(4);\n\n/* \u30b9\u30bf\u30c3\u30af\u306e\u30c8\u30c3\u30d7\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nint peek = stack.last;\n\n/* \u30b9\u30bf\u30c3\u30af\u304b\u3089\u8981\u7d20\u3092\u30dd\u30c3\u30d7 */\nint pop = stack.removeLast();\n\n/* \u30b9\u30bf\u30c3\u30af\u306e\u9577\u3055\u3092\u53d6\u5f97 */\nint size = stack.length;\n\n/* \u30b9\u30bf\u30c3\u30af\u304c\u7a7a\u304b\u3069\u3046\u304b\u30c1\u30a7\u30c3\u30af */\nbool isEmpty = stack.isEmpty;\n</code></pre> stack.rs<pre><code>/* \u30b9\u30bf\u30c3\u30af\u3092\u521d\u671f\u5316 */\n// Vec\u3092\u30b9\u30bf\u30c3\u30af\u3068\u3057\u3066\u4f7f\u7528\nlet mut stack: Vec&lt;i32&gt; = Vec::new();\n\n/* \u8981\u7d20\u3092\u30b9\u30bf\u30c3\u30af\u306b\u30d7\u30c3\u30b7\u30e5 */\nstack.push(1);\nstack.push(3);\nstack.push(2);\nstack.push(5);\nstack.push(4);\n\n/* \u30b9\u30bf\u30c3\u30af\u306e\u30c8\u30c3\u30d7\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\nlet top = stack.last().unwrap();\n\n/* \u30b9\u30bf\u30c3\u30af\u304b\u3089\u8981\u7d20\u3092\u30dd\u30c3\u30d7 */\nlet pop = stack.pop().unwrap();\n\n/* \u30b9\u30bf\u30c3\u30af\u306e\u9577\u3055\u3092\u53d6\u5f97 */\nlet size = stack.len();\n\n/* \u30b9\u30bf\u30c3\u30af\u304c\u7a7a\u304b\u3069\u3046\u304b\u30c1\u30a7\u30c3\u30af */\nlet is_empty = stack.is_empty();\n</code></pre> stack.c<pre><code>// C\u306f\u7d44\u307f\u8fbc\u307f\u306e\u30b9\u30bf\u30c3\u30af\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u305b\u3093\n</code></pre> stack.kt<pre><code>\n</code></pre>"},{"location":"chapter_stack_and_queue/stack/#512","title":"5.1.2 \u00a0 \u30b9\u30bf\u30c3\u30af\u306e\u5b9f\u88c5","text":"<p>\u30b9\u30bf\u30c3\u30af\u304c\u3069\u306e\u3088\u3046\u306b\u52d5\u4f5c\u3059\u308b\u304b\u3092\u3088\u308a\u6df1\u304f\u7406\u89e3\u3059\u308b\u305f\u3081\u306b\u3001\u81ea\u5206\u3067\u30b9\u30bf\u30c3\u30af\u30af\u30e9\u30b9\u3092\u5b9f\u88c5\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002</p> <p>\u30b9\u30bf\u30c3\u30af\u306f\u5f8c\u5165\u5148\u51fa\u306e\u539f\u5247\u306b\u5f93\u3046\u305f\u3081\u3001\u30b9\u30bf\u30c3\u30af\u306e\u30c8\u30c3\u30d7\u3067\u306e\u307f\u8981\u7d20\u3092\u8ffd\u52a0\u307e\u305f\u306f\u524a\u9664\u3067\u304d\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u914d\u5217\u3068\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u4e21\u65b9\u306f\u4efb\u610f\u306e\u4f4d\u7f6e\u3067\u8981\u7d20\u3092\u8ffd\u52a0\u30fb\u524a\u9664\u3067\u304d\u308b\u305f\u3081\u3001\u30b9\u30bf\u30c3\u30af\u306f\u5236\u9650\u3055\u308c\u305f\u914d\u5217\u307e\u305f\u306f\u9023\u7d50\u30ea\u30b9\u30c8\u3068\u898b\u306a\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u8a00\u3044\u63db\u3048\u308c\u3070\u3001\u914d\u5217\u3084\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u7279\u5b9a\u306e\u7121\u95a2\u4fc2\u306a\u64cd\u4f5c\u3092\u300c\u906e\u853d\u300d\u3057\u3066\u3001\u5916\u90e8\u306e\u52d5\u4f5c\u3092\u30b9\u30bf\u30c3\u30af\u306e\u7279\u6027\u306b\u5408\u308f\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</p>"},{"location":"chapter_stack_and_queue/stack/#1","title":"1. \u00a0 \u9023\u7d50\u30ea\u30b9\u30c8\u30d9\u30fc\u30b9\u306e\u5b9f\u88c5","text":"<p>\u9023\u7d50\u30ea\u30b9\u30c8\u3092\u4f7f\u7528\u3057\u3066\u30b9\u30bf\u30c3\u30af\u3092\u5b9f\u88c5\u3059\u308b\u5834\u5408\u3001\u30ea\u30b9\u30c8\u306e\u30d8\u30c3\u30c9\u30ce\u30fc\u30c9\u3092\u30b9\u30bf\u30c3\u30af\u306e\u30c8\u30c3\u30d7\u3001\u30c6\u30fc\u30eb\u30ce\u30fc\u30c9\u3092\u30b9\u30bf\u30c3\u30af\u306e\u30dc\u30c8\u30e0\u3068\u8003\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</p> <p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u30d7\u30c3\u30b7\u30e5\u64cd\u4f5c\u3067\u306f\u3001\u5358\u306b\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u30d8\u30c3\u30c9\u306b\u8981\u7d20\u3092\u633f\u5165\u3057\u307e\u3059\u3002\u3053\u306e\u30ce\u30fc\u30c9\u633f\u5165\u65b9\u6cd5\u306f\u300c\u30d8\u30c3\u30c9\u633f\u5165\u300d\u3068\u3057\u3066\u77e5\u3089\u308c\u3066\u3044\u307e\u3059\u3002\u30dd\u30c3\u30d7\u64cd\u4f5c\u3067\u306f\u3001\u30ea\u30b9\u30c8\u304b\u3089\u30d8\u30c3\u30c9\u30ce\u30fc\u30c9\u3092\u524a\u9664\u3059\u308b\u3060\u3051\u3067\u3059\u3002</p> LinkedListStackpush()pop() <p></p> <p></p> <p></p> <p> \u56f3 5-2 \u00a0 \u9023\u7d50\u30ea\u30b9\u30c8\u306b\u3088\u308b\u30b9\u30bf\u30c3\u30af\u5b9f\u88c5\u306e\u30d7\u30c3\u30b7\u30e5\u3068\u30dd\u30c3\u30d7\u64cd\u4f5c </p> <p>\u4ee5\u4e0b\u306f\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306b\u57fa\u3065\u304f\u30b9\u30bf\u30c3\u30af\u5b9f\u88c5\u306e\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby linkedlist_stack.py<pre><code>class LinkedListStack:\n \"\"\"\u9023\u7d50\u30ea\u30b9\u30c8\u30d9\u30fc\u30b9\u306e\u30b9\u30bf\u30c3\u30af\u30af\u30e9\u30b9\"\"\"\n\n def __init__(self):\n \"\"\"\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\"\"\"\n self._peek: ListNode | None = None\n self._size: int = 0\n\n def size(self) -&gt; int:\n \"\"\"\u30b9\u30bf\u30c3\u30af\u306e\u9577\u3055\u3092\u53d6\u5f97\"\"\"\n return self._size\n\n def is_empty(self) -&gt; bool:\n \"\"\"\u30b9\u30bf\u30c3\u30af\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u5224\u5b9a\"\"\"\n return self._size == 0\n\n def push(self, val: int):\n \"\"\"\u30d7\u30c3\u30b7\u30e5\"\"\"\n node = ListNode(val)\n node.next = self._peek\n self._peek = node\n self._size += 1\n\n def pop(self) -&gt; int:\n \"\"\"\u30dd\u30c3\u30d7\"\"\"\n num = self.peek()\n self._peek = self._peek.next\n self._size -= 1\n return num\n\n def peek(self) -&gt; int:\n \"\"\"\u30b9\u30bf\u30c3\u30af\u30c8\u30c3\u30d7\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\"\"\"\n if self.is_empty():\n raise IndexError(\"Stack is empty\")\n return self._peek.val\n\n def to_list(self) -&gt; list[int]:\n \"\"\"\u51fa\u529b\u7528\u306e\u30ea\u30b9\u30c8\u306b\u5909\u63db\"\"\"\n arr = []\n node = self._peek\n while node:\n arr.append(node.val)\n node = node.next\n arr.reverse()\n return arr\n</code></pre> linkedlist_stack.cpp<pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u306b\u57fa\u3065\u304f\u30b9\u30bf\u30c3\u30af\u30af\u30e9\u30b9 */\nclass LinkedListStack {\n private:\n ListNode *stackTop; // \u5148\u982d\u30ce\u30fc\u30c9\u3092\u30b9\u30bf\u30c3\u30af\u30c8\u30c3\u30d7\u3068\u3057\u3066\u4f7f\u7528\n int stkSize; // \u30b9\u30bf\u30c3\u30af\u306e\u9577\u3055\n\n public:\n LinkedListStack() {\n stackTop = nullptr;\n stkSize = 0;\n }\n\n ~LinkedListStack() {\n // \u9023\u7d50\u30ea\u30b9\u30c8\u3092\u8d70\u67fb\u3001\u30ce\u30fc\u30c9\u3092\u524a\u9664\u3001\u30e1\u30e2\u30ea\u3092\u89e3\u653e\n freeMemoryLinkedList(stackTop);\n }\n\n /* \u30b9\u30bf\u30c3\u30af\u306e\u9577\u3055\u3092\u53d6\u5f97 */\n int size() {\n return stkSize;\n }\n\n /* \u30b9\u30bf\u30c3\u30af\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u5224\u5b9a */\n bool isEmpty() {\n return size() == 0;\n }\n\n /* \u30d7\u30c3\u30b7\u30e5 */\n void push(int num) {\n ListNode *node = new ListNode(num);\n node-&gt;next = stackTop;\n stackTop = node;\n stkSize++;\n }\n\n /* \u30dd\u30c3\u30d7 */\n int pop() {\n int num = top();\n ListNode *tmp = stackTop;\n stackTop = stackTop-&gt;next;\n // \u30e1\u30e2\u30ea\u3092\u89e3\u653e\n delete tmp;\n stkSize--;\n return num;\n }\n\n /* \u30b9\u30bf\u30c3\u30af\u30c8\u30c3\u30d7\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\n int top() {\n if (isEmpty())\n throw out_of_range(\"Stack is empty\");\n return stackTop-&gt;val;\n }\n\n /* \u30ea\u30b9\u30c8\u3092\u914d\u5217\u306b\u5909\u63db\u3057\u3066\u8fd4\u5374 */\n vector&lt;int&gt; toVector() {\n ListNode *node = stackTop;\n vector&lt;int&gt; res(size());\n for (int i = res.size() - 1; i &gt;= 0; i--) {\n res[i] = node-&gt;val;\n node = node-&gt;next;\n }\n return res;\n }\n};\n</code></pre> linkedlist_stack.java<pre><code>/* \u9023\u7d50\u30ea\u30b9\u30c8\u306b\u57fa\u3065\u304f\u30b9\u30bf\u30c3\u30af\u30af\u30e9\u30b9 */\nclass LinkedListStack {\n private ListNode stackPeek; // \u30d8\u30c3\u30c9\u30ce\u30fc\u30c9\u3092\u30b9\u30bf\u30c3\u30af\u30c8\u30c3\u30d7\u3068\u3057\u3066\u4f7f\u7528\n private int stkSize = 0; // \u30b9\u30bf\u30c3\u30af\u306e\u9577\u3055\n\n public LinkedListStack() {\n stackPeek = null;\n }\n\n /* \u30b9\u30bf\u30c3\u30af\u306e\u9577\u3055\u3092\u53d6\u5f97 */\n public int size() {\n return stkSize;\n }\n\n /* \u30b9\u30bf\u30c3\u30af\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u5224\u5b9a */\n public boolean isEmpty() {\n return size() == 0;\n }\n\n /* \u30d7\u30c3\u30b7\u30e5 */\n public void push(int num) {\n ListNode node = new ListNode(num);\n node.next = stackPeek;\n stackPeek = node;\n stkSize++;\n }\n\n /* \u30dd\u30c3\u30d7 */\n public int pop() {\n int num = peek();\n stackPeek = stackPeek.next;\n stkSize--;\n return num;\n }\n\n /* \u30b9\u30bf\u30c3\u30af\u30c8\u30c3\u30d7\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\n public int peek() {\n if (isEmpty())\n throw new IndexOutOfBoundsException();\n return stackPeek.val;\n }\n\n /* List \u3092 Array \u306b\u5909\u63db\u3057\u3066\u8fd4\u3059 */\n public int[] toArray() {\n ListNode node = stackPeek;\n int[] res = new int[size()];\n for (int i = res.length - 1; i &gt;= 0; i--) {\n res[i] = node.val;\n node = node.next;\n }\n return res;\n }\n}\n</code></pre> linkedlist_stack.cs<pre><code>[class]{LinkedListStack}-[func]{}\n</code></pre> linkedlist_stack.go<pre><code>[class]{linkedListStack}-[func]{}\n</code></pre> linkedlist_stack.swift<pre><code>[class]{LinkedListStack}-[func]{}\n</code></pre> linkedlist_stack.js<pre><code>[class]{LinkedListStack}-[func]{}\n</code></pre> linkedlist_stack.ts<pre><code>[class]{LinkedListStack}-[func]{}\n</code></pre> linkedlist_stack.dart<pre><code>[class]{LinkedListStack}-[func]{}\n</code></pre> linkedlist_stack.rs<pre><code>[class]{LinkedListStack}-[func]{}\n</code></pre> linkedlist_stack.c<pre><code>[class]{LinkedListStack}-[func]{}\n</code></pre> linkedlist_stack.kt<pre><code>[class]{LinkedListStack}-[func]{}\n</code></pre> linkedlist_stack.rb<pre><code>[class]{LinkedListStack}-[func]{}\n</code></pre>"},{"location":"chapter_stack_and_queue/stack/#2","title":"2. \u00a0 \u914d\u5217\u30d9\u30fc\u30b9\u306e\u5b9f\u88c5","text":"<p>\u914d\u5217\u3092\u4f7f\u7528\u3057\u3066\u30b9\u30bf\u30c3\u30af\u3092\u5b9f\u88c5\u3059\u308b\u5834\u5408\u3001\u914d\u5217\u306e\u672b\u5c3e\u3092\u30b9\u30bf\u30c3\u30af\u306e\u30c8\u30c3\u30d7\u3068\u8003\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u30d7\u30c3\u30b7\u30e5\u3068\u30dd\u30c3\u30d7\u64cd\u4f5c\u306f\u3001\u305d\u308c\u305e\u308c\u914d\u5217\u306e\u672b\u5c3e\u3067\u306e\u8981\u7d20\u306e\u8ffd\u52a0\u3068\u524a\u9664\u306b\u5bfe\u5fdc\u3057\u3001\u3069\u3061\u3089\u3082\u6642\u9593\u8a08\u7b97\u91cf\\(O(1)\\)\u3067\u3059\u3002</p> ArrayStackpush()pop() <p></p> <p></p> <p></p> <p> \u56f3 5-3 \u00a0 \u914d\u5217\u306b\u3088\u308b\u30b9\u30bf\u30c3\u30af\u5b9f\u88c5\u306e\u30d7\u30c3\u30b7\u30e5\u3068\u30dd\u30c3\u30d7\u64cd\u4f5c </p> <p>\u30b9\u30bf\u30c3\u30af\u306b\u30d7\u30c3\u30b7\u30e5\u3055\u308c\u308b\u8981\u7d20\u304c\u7d99\u7d9a\u7684\u306b\u5897\u52a0\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u52d5\u7684\u914d\u5217\u3092\u4f7f\u7528\u3067\u304d\u3001\u914d\u5217\u62e1\u5f35\u3092\u81ea\u5206\u3067\u51e6\u7406\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u305b\u3093\u3002\u4ee5\u4e0b\u306f\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby array_stack.py<pre><code>class ArrayStack:\n \"\"\"\u914d\u5217\u30d9\u30fc\u30b9\u306e\u30b9\u30bf\u30c3\u30af\u30af\u30e9\u30b9\"\"\"\n\n def __init__(self):\n \"\"\"\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\"\"\"\n self._stack: list[int] = []\n\n def size(self) -&gt; int:\n \"\"\"\u30b9\u30bf\u30c3\u30af\u306e\u9577\u3055\u3092\u53d6\u5f97\"\"\"\n return len(self._stack)\n\n def is_empty(self) -&gt; bool:\n \"\"\"\u30b9\u30bf\u30c3\u30af\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u5224\u5b9a\"\"\"\n return self.size() == 0\n\n def push(self, item: int):\n \"\"\"\u30d7\u30c3\u30b7\u30e5\"\"\"\n self._stack.append(item)\n\n def pop(self) -&gt; int:\n \"\"\"\u30dd\u30c3\u30d7\"\"\"\n if self.is_empty():\n raise IndexError(\"Stack is empty\")\n return self._stack.pop()\n\n def peek(self) -&gt; int:\n \"\"\"\u30b9\u30bf\u30c3\u30af\u30c8\u30c3\u30d7\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\"\"\"\n if self.is_empty():\n raise IndexError(\"Stack is empty\")\n return self._stack[-1]\n\n def to_list(self) -&gt; list[int]:\n \"\"\"\u51fa\u529b\u7528\u306e\u914d\u5217\u3092\u8fd4\u3059\"\"\"\n return self._stack\n</code></pre> array_stack.cpp<pre><code>/* \u914d\u5217\u306b\u57fa\u3065\u304f\u30b9\u30bf\u30c3\u30af\u30af\u30e9\u30b9 */\nclass ArrayStack {\n private:\n vector&lt;int&gt; stack;\n\n public:\n /* \u30b9\u30bf\u30c3\u30af\u306e\u9577\u3055\u3092\u53d6\u5f97 */\n int size() {\n return stack.size();\n }\n\n /* \u30b9\u30bf\u30c3\u30af\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u5224\u5b9a */\n bool isEmpty() {\n return stack.size() == 0;\n }\n\n /* \u30d7\u30c3\u30b7\u30e5 */\n void push(int num) {\n stack.push_back(num);\n }\n\n /* \u30dd\u30c3\u30d7 */\n int pop() {\n int num = top();\n stack.pop_back();\n return num;\n }\n\n /* \u30b9\u30bf\u30c3\u30af\u30c8\u30c3\u30d7\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\n int top() {\n if (isEmpty())\n throw out_of_range(\"Stack is empty\");\n return stack.back();\n }\n\n /* Vector\u3092\u8fd4\u5374 */\n vector&lt;int&gt; toVector() {\n return stack;\n }\n};\n</code></pre> array_stack.java<pre><code>/* \u914d\u5217\u306b\u57fa\u3065\u304f\u30b9\u30bf\u30c3\u30af\u30af\u30e9\u30b9 */\nclass ArrayStack {\n private ArrayList&lt;Integer&gt; stack;\n\n public ArrayStack() {\n // \u30ea\u30b9\u30c8\uff08\u52d5\u7684\u914d\u5217\uff09\u3092\u521d\u671f\u5316\n stack = new ArrayList&lt;&gt;();\n }\n\n /* \u30b9\u30bf\u30c3\u30af\u306e\u9577\u3055\u3092\u53d6\u5f97 */\n public int size() {\n return stack.size();\n }\n\n /* \u30b9\u30bf\u30c3\u30af\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u5224\u5b9a */\n public boolean isEmpty() {\n return size() == 0;\n }\n\n /* \u30d7\u30c3\u30b7\u30e5 */\n public void push(int num) {\n stack.add(num);\n }\n\n /* \u30dd\u30c3\u30d7 */\n public int pop() {\n if (isEmpty())\n throw new IndexOutOfBoundsException();\n return stack.remove(size() - 1);\n }\n\n /* \u30b9\u30bf\u30c3\u30af\u30c8\u30c3\u30d7\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9 */\n public int peek() {\n if (isEmpty())\n throw new IndexOutOfBoundsException();\n return stack.get(size() - 1);\n }\n\n /* List \u3092 Array \u306b\u5909\u63db\u3057\u3066\u8fd4\u3059 */\n public Object[] toArray() {\n return stack.toArray();\n }\n}\n</code></pre> array_stack.cs<pre><code>[class]{ArrayStack}-[func]{}\n</code></pre> array_stack.go<pre><code>[class]{arrayStack}-[func]{}\n</code></pre> array_stack.swift<pre><code>[class]{ArrayStack}-[func]{}\n</code></pre> array_stack.js<pre><code>[class]{ArrayStack}-[func]{}\n</code></pre> array_stack.ts<pre><code>[class]{ArrayStack}-[func]{}\n</code></pre> array_stack.dart<pre><code>[class]{ArrayStack}-[func]{}\n</code></pre> array_stack.rs<pre><code>[class]{ArrayStack}-[func]{}\n</code></pre> array_stack.c<pre><code>[class]{ArrayStack}-[func]{}\n</code></pre> array_stack.kt<pre><code>[class]{ArrayStack}-[func]{}\n</code></pre> array_stack.rb<pre><code>[class]{ArrayStack}-[func]{}\n</code></pre>"},{"location":"chapter_stack_and_queue/stack/#513-2","title":"5.1.3 \u00a0 2\u3064\u306e\u5b9f\u88c5\u306e\u6bd4\u8f03","text":"<p>\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u308b\u64cd\u4f5c</p> <p>\u4e21\u65b9\u306e\u5b9f\u88c5\u306f\u3001\u30b9\u30bf\u30c3\u30af\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u3059\u3079\u3066\u306e\u64cd\u4f5c\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002\u914d\u5217\u5b9f\u88c5\u306f\u3055\u3089\u306b\u30e9\u30f3\u30c0\u30e0\u30a2\u30af\u30bb\u30b9\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059\u304c\u3001\u3053\u308c\u306f\u30b9\u30bf\u30c3\u30af\u5b9a\u7fa9\u306e\u7bc4\u56f2\u3092\u8d85\u3048\u3066\u304a\u308a\u3001\u4e00\u822c\u7684\u306b\u306f\u4f7f\u7528\u3055\u308c\u307e\u305b\u3093\u3002</p> <p>\u6642\u9593\u52b9\u7387</p> <p>\u914d\u5217\u30d9\u30fc\u30b9\u306e\u5b9f\u88c5\u3067\u306f\u3001\u30d7\u30c3\u30b7\u30e5\u3068\u30dd\u30c3\u30d7\u64cd\u4f5c\u306e\u4e21\u65b9\u304c\u4e8b\u524d\u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u305f\u9023\u7d9a\u30e1\u30e2\u30ea\u3067\u767a\u751f\u3057\u3001\u826f\u597d\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u5c40\u6240\u6027\u304c\u3042\u308b\u305f\u3081\u52b9\u7387\u304c\u9ad8\u304f\u306a\u308a\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u30d7\u30c3\u30b7\u30e5\u64cd\u4f5c\u304c\u914d\u5217\u5bb9\u91cf\u3092\u8d85\u3048\u308b\u5834\u5408\u3001\u30ea\u30b5\u30a4\u30ba\u30e1\u30ab\u30cb\u30ba\u30e0\u304c\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u3001\u305d\u306e\u30d7\u30c3\u30b7\u30e5\u64cd\u4f5c\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n)\\)\u306b\u306a\u308a\u307e\u3059\u3002</p> <p>\u9023\u7d50\u30ea\u30b9\u30c8\u5b9f\u88c5\u3067\u306f\u3001\u30ea\u30b9\u30c8\u62e1\u5f35\u306f\u975e\u5e38\u306b\u67d4\u8edf\u3067\u3001\u914d\u5217\u62e1\u5f35\u306e\u3088\u3046\u306a\u52b9\u7387\u4f4e\u4e0b\u306e\u554f\u984c\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u3057\u304b\u3057\u3001\u30d7\u30c3\u30b7\u30e5\u64cd\u4f5c\u306b\u306f\u30ce\u30fc\u30c9\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u521d\u671f\u5316\u3068\u30dd\u30a4\u30f3\u30bf\u306e\u5909\u66f4\u304c\u5fc5\u8981\u306a\u305f\u3081\u3001\u52b9\u7387\u306f\u6bd4\u8f03\u7684\u4f4e\u304f\u306a\u308a\u307e\u3059\u3002\u30d7\u30c3\u30b7\u30e5\u3055\u308c\u308b\u8981\u7d20\u304c\u3059\u3067\u306b\u30ce\u30fc\u30c9\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u5834\u5408\u3001\u521d\u671f\u5316\u30b9\u30c6\u30c3\u30d7\u3092\u30b9\u30ad\u30c3\u30d7\u3067\u304d\u3001\u52b9\u7387\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002</p> <p>\u3057\u305f\u304c\u3063\u3066\u3001\u30d7\u30c3\u30b7\u30e5\u3068\u30dd\u30c3\u30d7\u64cd\u4f5c\u306e\u8981\u7d20\u304c<code>int</code>\u3084<code>double</code>\u306a\u3069\u306e\u57fa\u672c\u30c7\u30fc\u30bf\u578b\u306e\u5834\u5408\u3001\u4ee5\u4e0b\u306e\u7d50\u8ad6\u3092\u5c0e\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff1a</p> <ul> <li>\u914d\u5217\u30d9\u30fc\u30b9\u306e\u30b9\u30bf\u30c3\u30af\u5b9f\u88c5\u306f\u62e1\u5f35\u6642\u306b\u52b9\u7387\u304c\u4f4e\u4e0b\u3057\u307e\u3059\u304c\u3001\u62e1\u5f35\u306f\u4f4e\u983b\u5ea6\u64cd\u4f5c\u3067\u3042\u308b\u305f\u3081\u3001\u5e73\u5747\u52b9\u7387\u306f\u9ad8\u304f\u306a\u308a\u307e\u3059\u3002</li> <li>\u9023\u7d50\u30ea\u30b9\u30c8\u30d9\u30fc\u30b9\u306e\u30b9\u30bf\u30c3\u30af\u5b9f\u88c5\u306f\u3088\u308a\u5b89\u5b9a\u3057\u305f\u52b9\u7387\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002</li> </ul> <p>\u7a7a\u9593\u52b9\u7387</p> <p>\u30ea\u30b9\u30c8\u3092\u521d\u671f\u5316\u3059\u308b\u969b\u3001\u30b7\u30b9\u30c6\u30e0\u306f\u300c\u521d\u671f\u5bb9\u91cf\u300d\u3092\u5272\u308a\u5f53\u3066\u307e\u3059\u304c\u3001\u3053\u308c\u306f\u5b9f\u969b\u306e\u5fc5\u8981\u91cf\u3092\u8d85\u3048\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3055\u3089\u306b\u3001\u62e1\u5f35\u30e1\u30ab\u30cb\u30ba\u30e0\u306f\u901a\u5e38\u3001\u7279\u5b9a\u306e\u4fc2\u6570\uff082\u500d\u306a\u3069\uff09\u3067\u5bb9\u91cf\u3092\u5897\u52a0\u3055\u305b\u3001\u3053\u308c\u3082\u5b9f\u969b\u306e\u5fc5\u8981\u91cf\u3092\u8d85\u3048\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u914d\u5217\u30d9\u30fc\u30b9\u306e\u30b9\u30bf\u30c3\u30af\u306f\u4e00\u90e8\u306e\u7a7a\u9593\u3092\u7121\u99c4\u306b\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>\u3057\u304b\u3057\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9\u306f\u30dd\u30a4\u30f3\u30bf\u3092\u683c\u7d0d\u3059\u308b\u305f\u3081\u306e\u8ffd\u52a0\u7a7a\u9593\u304c\u5fc5\u8981\u306a\u305f\u3081\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u30ce\u30fc\u30c9\u304c\u5360\u6709\u3059\u308b\u7a7a\u9593\u306f\u6bd4\u8f03\u7684\u5927\u304d\u304f\u306a\u308a\u307e\u3059\u3002</p> <p>\u307e\u3068\u3081\u308b\u3068\u3001\u3069\u3061\u3089\u306e\u5b9f\u88c5\u304c\u3088\u308a\u30e1\u30e2\u30ea\u52b9\u7387\u7684\u304b\u3092\u5358\u7d14\u306b\u5224\u65ad\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u7279\u5b9a\u306e\u72b6\u6cc1\u306b\u57fa\u3065\u304f\u5206\u6790\u304c\u5fc5\u8981\u3067\u3059\u3002</p>"},{"location":"chapter_stack_and_queue/stack/#514","title":"5.1.4 \u00a0 \u30b9\u30bf\u30c3\u30af\u306e\u5178\u578b\u7684\u306a\u5fdc\u7528","text":"<ul> <li>\u30d6\u30e9\u30a6\u30b6\u306e\u623b\u308b\u3068\u9032\u3080\u3001\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u5143\u306b\u623b\u3059\u3068\u3084\u308a\u76f4\u3057\u3002\u65b0\u3057\u3044Web\u30da\u30fc\u30b8\u3092\u958b\u304f\u305f\u3073\u306b\u3001\u30d6\u30e9\u30a6\u30b6\u306f\u524d\u306e\u30da\u30fc\u30b8\u3092\u30b9\u30bf\u30c3\u30af\u306b\u30d7\u30c3\u30b7\u30e5\u3057\u3001\u623b\u308b\u64cd\u4f5c\uff08\u672c\u8cea\u7684\u306b\u306f\u30dd\u30c3\u30d7\u64cd\u4f5c\uff09\u3092\u901a\u3058\u3066\u524d\u306e\u30da\u30fc\u30b8\u306b\u623b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u623b\u308b\u3068\u9032\u3080\u306e\u4e21\u65b9\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u306b\u306f\u30012\u3064\u306e\u30b9\u30bf\u30c3\u30af\u304c\u9023\u643a\u3057\u3066\u52d5\u4f5c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u30e1\u30e2\u30ea\u7ba1\u7406\u3002\u95a2\u6570\u304c\u547c\u3073\u51fa\u3055\u308c\u308b\u305f\u3073\u306b\u3001\u30b7\u30b9\u30c6\u30e0\u306f\u30b9\u30bf\u30c3\u30af\u306e\u30c8\u30c3\u30d7\u306b\u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u3092\u8ffd\u52a0\u3057\u3066\u95a2\u6570\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u60c5\u5831\u3092\u8a18\u9332\u3057\u307e\u3059\u3002\u518d\u5e30\u95a2\u6570\u3067\u306f\u3001\u4e0b\u65b9\u5411\u306e\u518d\u5e30\u30d5\u30a7\u30fc\u30ba\u306f\u30b9\u30bf\u30c3\u30af\u3078\u306e\u30d7\u30c3\u30b7\u30e5\u3092\u7d9a\u3051\u3001\u4e0a\u65b9\u5411\u306e\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30d5\u30a7\u30fc\u30ba\u306f\u30b9\u30bf\u30c3\u30af\u304b\u3089\u306e\u30dd\u30c3\u30d7\u3092\u7d9a\u3051\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_stack_and_queue/summary/","title":"5.4 \u00a0 \u307e\u3068\u3081","text":""},{"location":"chapter_stack_and_queue/summary/#1","title":"1. \u00a0 \u91cd\u8981\u306a\u30dd\u30a4\u30f3\u30c8","text":"<ul> <li>\u30b9\u30bf\u30c3\u30af\u306f\u5f8c\u5165\u308c\u5148\u51fa\u3057\uff08LIFO\uff09\u306e\u539f\u5247\u306b\u5f93\u3046\u30c7\u30fc\u30bf\u69cb\u9020\u3067\u3001\u914d\u5217\u307e\u305f\u306f\u9023\u7d50\u30ea\u30b9\u30c8\u3092\u4f7f\u3063\u3066\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002</li> <li>\u6642\u9593\u52b9\u7387\u306e\u89b3\u70b9\u3067\u306f\u3001\u30b9\u30bf\u30c3\u30af\u306e\u914d\u5217\u5b9f\u88c5\u306e\u65b9\u304c\u5e73\u5747\u7684\u306a\u52b9\u7387\u304c\u9ad8\u3044\u3067\u3059\u3002\u305f\u3060\u3057\u3001\u62e1\u5f35\u6642\u306b\u306f\u5358\u4e00\u306e\u30d7\u30c3\u30b7\u30e5\u64cd\u4f5c\u306e\u6642\u9593\u8a08\u7b97\u91cf\u304c\\(O(n)\\)\u306b\u60aa\u5316\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u5bfe\u7167\u7684\u306b\u3001\u30b9\u30bf\u30c3\u30af\u306e\u9023\u7d50\u30ea\u30b9\u30c8\u5b9f\u88c5\u306f\u3088\u308a\u5b89\u5b9a\u3057\u305f\u52b9\u7387\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002</li> <li>\u7a7a\u9593\u52b9\u7387\u306b\u95a2\u3057\u3066\u306f\u3001\u30b9\u30bf\u30c3\u30af\u306e\u914d\u5217\u5b9f\u88c5\u306f\u4e00\u5b9a\u7a0b\u5ea6\u306e\u7a7a\u9593\u306e\u7121\u99c4\u306b\u3064\u306a\u304c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u30ce\u30fc\u30c9\u304c\u5360\u6709\u3059\u308b\u30e1\u30e2\u30ea\u7a7a\u9593\u306f\u4e00\u822c\u7684\u306b\u914d\u5217\u306e\u8981\u7d20\u3088\u308a\u3082\u5927\u304d\u3044\u3053\u3068\u306b\u6ce8\u610f\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002</li> <li>\u30ad\u30e5\u30fc\u306f\u5148\u5165\u308c\u5148\u51fa\u3057\uff08FIFO\uff09\u306e\u539f\u5247\u306b\u5f93\u3046\u30c7\u30fc\u30bf\u69cb\u9020\u3067\u3001\u540c\u69d8\u306b\u914d\u5217\u307e\u305f\u306f\u9023\u7d50\u30ea\u30b9\u30c8\u3092\u4f7f\u3063\u3066\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002\u30ad\u30e5\u30fc\u306e\u6642\u9593\u3068\u7a7a\u9593\u52b9\u7387\u306b\u95a2\u3059\u308b\u7d50\u8ad6\u306f\u3001\u30b9\u30bf\u30c3\u30af\u3068\u4f3c\u3066\u3044\u307e\u3059\u3002</li> <li>\u4e21\u7aef\u30ad\u30e5\u30fc\uff08deque\uff09\u306f\u3088\u308a\u67d4\u8edf\u306a\u30ad\u30e5\u30fc\u306e\u7a2e\u985e\u3067\u3001\u4e21\u7aef\u3067\u306e\u8981\u7d20\u306e\u8ffd\u52a0\u3068\u524a\u9664\u3092\u53ef\u80fd\u306b\u3057\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_stack_and_queue/summary/#2-q-a","title":"2. \u00a0 Q &amp; A","text":"<p>Q: \u30d6\u30e9\u30a6\u30b6\u306e\u9032\u3080\u30fb\u623b\u308b\u6a5f\u80fd\u306f\u53cc\u65b9\u5411\u9023\u7d50\u30ea\u30b9\u30c8\u3067\u5b9f\u88c5\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3059\u304b\uff1f</p> <p>\u30d6\u30e9\u30a6\u30b6\u306e\u9032\u3080\u30fb\u623b\u308b\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u306f\u672c\u8cea\u7684\u306b\u300c\u30b9\u30bf\u30c3\u30af\u300d\u6982\u5ff5\u306e\u73fe\u308c\u3067\u3059\u3002\u30e6\u30fc\u30b6\u30fc\u304c\u65b0\u3057\u3044\u30da\u30fc\u30b8\u3092\u8a2a\u554f\u3059\u308b\u3068\u3001\u305d\u306e\u30da\u30fc\u30b8\u304c\u30b9\u30bf\u30c3\u30af\u306e\u5148\u982d\u306b\u8ffd\u52a0\u3055\u308c\u307e\u3059\u3002\u623b\u308b\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u3001\u30da\u30fc\u30b8\u304c\u30b9\u30bf\u30c3\u30af\u306e\u5148\u982d\u304b\u3089\u30dd\u30c3\u30d7\u3055\u308c\u307e\u3059\u3002\u4e21\u7aef\u30ad\u30e5\u30fc\uff08deque\uff09\u306f\u3001\u300c\u4e21\u7aef\u30ad\u30e5\u30fc\u300d\u306e\u7ae0\u3067\u8ff0\u3079\u305f\u3088\u3046\u306b\u3001\u3044\u304f\u3064\u304b\u306e\u8ffd\u52a0\u64cd\u4f5c\u3092\u4fbf\u5229\u306b\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002</p> <p>Q: \u30b9\u30bf\u30c3\u30af\u304b\u3089\u30dd\u30c3\u30d7\u3057\u305f\u5f8c\u3001\u30dd\u30c3\u30d7\u3055\u308c\u305f\u30ce\u30fc\u30c9\u306e\u30e1\u30e2\u30ea\u3092\u89e3\u653e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u304b\uff1f</p> <p>\u30dd\u30c3\u30d7\u3055\u308c\u305f\u30ce\u30fc\u30c9\u304c\u5f8c\u3067\u4f7f\u7528\u3055\u308c\u308b\u5834\u5408\u306f\u3001\u305d\u306e\u30e1\u30e2\u30ea\u3092\u89e3\u653e\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u81ea\u52d5\u30ac\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3092\u6301\u3064Java\u3084Python\u306a\u3069\u306e\u8a00\u8a9e\u3067\u306f\u3001\u624b\u52d5\u306e\u30e1\u30e2\u30ea\u89e3\u653e\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\u3002C\u3084C++\u3067\u306f\u3001\u624b\u52d5\u306e\u30e1\u30e2\u30ea\u89e3\u653e\u304c\u5fc5\u8981\u3067\u3059\u3002</p> <p>Q: \u4e21\u7aef\u30ad\u30e5\u30fc\u306f2\u3064\u306e\u30b9\u30bf\u30c3\u30af\u3092\u7d50\u5408\u3057\u305f\u3082\u306e\u306e\u3088\u3046\u306b\u898b\u3048\u307e\u3059\u3002\u305d\u306e\u7528\u9014\u306f\u4f55\u3067\u3059\u304b\uff1f</p> <p>\u4e21\u7aef\u30ad\u30e5\u30fc\u306f\u3001\u30b9\u30bf\u30c3\u30af\u3068\u30ad\u30e5\u30fc\u306e\u7d44\u307f\u5408\u308f\u305b\u307e\u305f\u306f2\u3064\u306e\u30b9\u30bf\u30c3\u30af\u3092\u7d50\u5408\u3057\u305f\u3082\u306e\u3067\u3001\u30b9\u30bf\u30c3\u30af\u3068\u30ad\u30e5\u30fc\u306e\u4e21\u65b9\u306e\u30ed\u30b8\u30c3\u30af\u3092\u793a\u3057\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30b9\u30bf\u30c3\u30af\u3068\u30ad\u30e5\u30fc\u306e\u3059\u3079\u3066\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u88c5\u3067\u304d\u3001\u3088\u308a\u5927\u304d\u306a\u67d4\u8edf\u6027\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002</p> <p>Q: \u5143\u306b\u623b\u3059\u3068\u3084\u308a\u76f4\u3057\u306f\u5177\u4f53\u7684\u306b\u3069\u306e\u3088\u3046\u306b\u5b9f\u88c5\u3055\u308c\u308b\u306e\u3067\u3059\u304b\uff1f</p> <p>\u5143\u306b\u623b\u3059\u3068\u3084\u308a\u76f4\u3057\u306e\u64cd\u4f5c\u306f2\u3064\u306e\u30b9\u30bf\u30c3\u30af\u3092\u4f7f\u3063\u3066\u5b9f\u88c5\u3055\u308c\u307e\u3059\uff1a\u5143\u306b\u623b\u3059\u7528\u306e\u30b9\u30bf\u30c3\u30af<code>A</code>\u3068\u3084\u308a\u76f4\u3057\u7528\u306e\u30b9\u30bf\u30c3\u30af<code>B</code>\u3067\u3059\u3002</p> <ol> <li>\u30e6\u30fc\u30b6\u30fc\u304c\u64cd\u4f5c\u3092\u5b9f\u884c\u3059\u308b\u305f\u3073\u306b\u3001\u305d\u308c\u304c\u30b9\u30bf\u30c3\u30af<code>A</code>\u306b\u30d7\u30c3\u30b7\u30e5\u3055\u308c\u3001\u30b9\u30bf\u30c3\u30af<code>B</code>\u304c\u30af\u30ea\u30a2\u3055\u308c\u307e\u3059\u3002</li> <li>\u30e6\u30fc\u30b6\u30fc\u304c\u300c\u5143\u306b\u623b\u3059\u300d\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\u6700\u65b0\u306e\u64cd\u4f5c\u304c\u30b9\u30bf\u30c3\u30af<code>A</code>\u304b\u3089\u30dd\u30c3\u30d7\u3055\u308c\u3001\u30b9\u30bf\u30c3\u30af<code>B</code>\u306b\u30d7\u30c3\u30b7\u30e5\u3055\u308c\u307e\u3059\u3002</li> <li>\u30e6\u30fc\u30b6\u30fc\u304c\u300c\u3084\u308a\u76f4\u3057\u300d\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\u6700\u65b0\u306e\u64cd\u4f5c\u304c\u30b9\u30bf\u30c3\u30af<code>B</code>\u304b\u3089\u30dd\u30c3\u30d7\u3055\u308c\u3001\u30b9\u30bf\u30c3\u30af<code>A</code>\u306b\u623b\u3055\u308c\u307e\u3059\u3002</li> </ol>"},{"location":"chapter_tree/","title":"\u7b2c 7 \u7ae0 \u00a0 \u6728","text":"<p>Abstract</p> <p>\u305d\u3073\u3048\u7acb\u3064\u6728\u306f\u6d3b\u529b\u306b\u6e80\u3061\u305f\u672c\u8cea\u3092\u653e\u3061\u3001\u6df1\u3044\u6839\u3068\u8c4a\u304b\u306a\u8449\u3092\u8a87\u308a\u306a\u304c\u3089\u3082\u3001\u305d\u306e\u679d\u306f\u758e\u3089\u306b\u6563\u3089\u3070\u308a\u3001\u5e7d\u7384\u306a\u96f0\u56f2\u6c17\u3092\u91b8\u3057\u51fa\u3057\u3066\u3044\u307e\u3059\u3002</p> <p>\u305d\u308c\u306f\u30c7\u30fc\u30bf\u306b\u304a\u3051\u308b\u5206\u5272\u7d71\u6cbb\u306e\u9bae\u3084\u304b\u306a\u5f62\u3092\u79c1\u305f\u3061\u306b\u793a\u3057\u3066\u3044\u307e\u3059\u3002</p>"},{"location":"chapter_tree/#_1","title":"\u7ae0\u306e\u5185\u5bb9","text":"<ul> <li>7.1 \u00a0 \u4e8c\u5206\u6728</li> <li>7.2 \u00a0 \u4e8c\u5206\u6728\u306e\u8d70\u67fb</li> <li>7.3 \u00a0 \u4e8c\u5206\u6728\u306e\u914d\u5217\u8868\u73fe</li> <li>7.4 \u00a0 \u4e8c\u5206\u63a2\u7d22\u6728</li> <li>7.5 \u00a0 AVL\u6728 *</li> <li>7.6 \u00a0 \u307e\u3068\u3081</li> </ul>"},{"location":"chapter_tree/array_representation_of_tree/","title":"7.3 \u00a0 \u4e8c\u5206\u6728\u306e\u914d\u5217\u8868\u73fe","text":"<p>\u9023\u7d50\u30ea\u30b9\u30c8\u8868\u73fe\u3067\u306f\u3001\u4e8c\u5206\u6728\u306e\u683c\u7d0d\u5358\u4f4d\u306f\u30ce\u30fc\u30c9<code>TreeNode</code>\u3067\u3042\u308a\u3001\u30ce\u30fc\u30c9\u306f\u30dd\u30a4\u30f3\u30bf\u306b\u3088\u3063\u3066\u63a5\u7d9a\u3055\u308c\u307e\u3059\u3002\u9023\u7d50\u30ea\u30b9\u30c8\u8868\u73fe\u3067\u306e\u4e8c\u5206\u6728\u306e\u57fa\u672c\u64cd\u4f5c\u306b\u3064\u3044\u3066\u306f\u524d\u306e\u7bc0\u3067\u7d39\u4ecb\u3057\u307e\u3057\u305f\u3002</p> <p>\u3067\u306f\u3001\u914d\u5217\u3092\u4f7f\u3063\u3066\u4e8c\u5206\u6728\u3092\u8868\u73fe\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u308b\u3067\u3057\u3087\u3046\u304b\uff1f\u7b54\u3048\u306f\u30a4\u30a8\u30b9\u3067\u3059\u3002</p>"},{"location":"chapter_tree/array_representation_of_tree/#731","title":"7.3.1 \u00a0 \u5b8c\u5168\u4e8c\u5206\u6728\u306e\u8868\u73fe","text":"<p>\u307e\u305a\u7c21\u5358\u306a\u30b1\u30fc\u30b9\u304b\u3089\u5206\u6790\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002\u5b8c\u5168\u4e8c\u5206\u6728\u304c\u4e0e\u3048\u3089\u308c\u305f\u3068\u304d\u3001\u30ec\u30d9\u30eb\u9806\u63a2\u7d22\u306e\u9806\u5e8f\u306b\u5f93\u3063\u3066\u3059\u3079\u3066\u306e\u30ce\u30fc\u30c9\u3092\u914d\u5217\u306b\u683c\u7d0d\u3057\u3001\u5404\u30ce\u30fc\u30c9\u306f\u4e00\u610f\u306e\u914d\u5217\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002</p> <p>\u30ec\u30d9\u30eb\u9806\u63a2\u7d22\u306e\u7279\u6027\u306b\u57fa\u3065\u3044\u3066\u3001\u89aa\u30ce\u30fc\u30c9\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3068\u305d\u306e\u5b50\u30ce\u30fc\u30c9\u306e\u9593\u306e\u300c\u30de\u30c3\u30d4\u30f3\u30b0\u516c\u5f0f\u300d\u3092\u5c0e\u304d\u51fa\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff1a\u30ce\u30fc\u30c9\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\\(i\\)\u306e\u5834\u5408\u3001\u305d\u306e\u5de6\u306e\u5b50\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306f\\(2i + 1\\)\u3001\u53f3\u306e\u5b50\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306f\\(2i + 2\\)\u3067\u3059\u3002\u4e0b\u56f3\u306f\u3001\u3055\u307e\u3056\u307e\u306a\u30ce\u30fc\u30c9\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u9593\u306e\u30de\u30c3\u30d4\u30f3\u30b0\u95a2\u4fc2\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002</p> <p></p> <p> \u56f3 7-12 \u00a0 \u5b8c\u5168\u4e8c\u5206\u6728\u306e\u914d\u5217\u8868\u73fe </p> <p>\u30de\u30c3\u30d4\u30f3\u30b0\u516c\u5f0f\u306f\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u30ce\u30fc\u30c9\u53c2\u7167\uff08\u30dd\u30a4\u30f3\u30bf\uff09\u3068\u540c\u69d8\u306e\u5f79\u5272\u3092\u679c\u305f\u3057\u307e\u3059\u3002\u914d\u5217\u5185\u306e\u4efb\u610f\u306e\u30ce\u30fc\u30c9\u304c\u4e0e\u3048\u3089\u308c\u305f\u3068\u304d\u3001\u30de\u30c3\u30d4\u30f3\u30b0\u516c\u5f0f\u3092\u4f7f\u7528\u3057\u3066\u305d\u306e\u5de6\uff08\u53f3\uff09\u306e\u5b50\u30ce\u30fc\u30c9\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002</p>"},{"location":"chapter_tree/array_representation_of_tree/#732","title":"7.3.2 \u00a0 \u4efb\u610f\u306e\u4e8c\u5206\u6728\u306e\u8868\u73fe","text":"<p>\u5b8c\u5168\u4e8c\u5206\u6728\u306f\u7279\u5225\u306a\u30b1\u30fc\u30b9\u3067\u3059\u3002\u4e8c\u5206\u6728\u306e\u4e2d\u9593\u30ec\u30d9\u30eb\u306b\u306f\u591a\u304f\u306e<code>None</code>\u5024\u304c\u5b58\u5728\u3059\u308b\u3053\u3068\u304c\u3088\u304f\u3042\u308a\u307e\u3059\u3002\u30ec\u30d9\u30eb\u9806\u63a2\u7d22\u306e\u30b7\u30fc\u30b1\u30f3\u30b9\u306b\u306f\u3053\u308c\u3089\u306e<code>None</code>\u5024\u304c\u542b\u307e\u308c\u306a\u3044\u305f\u3081\u3001\u3053\u306e\u30b7\u30fc\u30b1\u30f3\u30b9\u3060\u3051\u306b\u4f9d\u5b58\u3057\u3066<code>None</code>\u5024\u306e\u6570\u3068\u5206\u5e03\u3092\u63a8\u6e2c\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u3064\u307e\u308a\u3001\u8907\u6570\u306e\u4e8c\u5206\u6728\u69cb\u9020\u304c\u540c\u3058\u30ec\u30d9\u30eb\u9806\u63a2\u7d22\u30b7\u30fc\u30b1\u30f3\u30b9\u3068\u4e00\u81f4\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002</p> <p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u5b8c\u5168\u3067\u306a\u3044\u4e8c\u5206\u6728\u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u3001\u4e0a\u8a18\u306e\u914d\u5217\u8868\u73fe\u65b9\u6cd5\u306f\u5931\u6557\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 7-13 \u00a0 \u30ec\u30d9\u30eb\u9806\u63a2\u7d22\u30b7\u30fc\u30b1\u30f3\u30b9\u304c\u8907\u6570\u306e\u4e8c\u5206\u6728\u306e\u53ef\u80fd\u6027\u306b\u5bfe\u5fdc </p> <p>\u3053\u306e\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306b\u3001\u30ec\u30d9\u30eb\u9806\u63a2\u7d22\u30b7\u30fc\u30b1\u30f3\u30b9\u3067\u3059\u3079\u3066\u306e<code>None</code>\u5024\u3092\u660e\u793a\u7684\u306b\u66f8\u304d\u51fa\u3059\u3053\u3068\u3092\u691c\u8a0e\u3067\u304d\u307e\u3059\u3002\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u3053\u306e\u51e6\u7406\u5f8c\u3001\u30ec\u30d9\u30eb\u9806\u63a2\u7d22\u30b7\u30fc\u30b1\u30f3\u30b9\u306f\u4e8c\u5206\u6728\u3092\u4e00\u610f\u306b\u8868\u73fe\u3067\u304d\u307e\u3059\u3002\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby <pre><code># \u4e8c\u5206\u6728\u306e\u914d\u5217\u8868\u73fe\n# None\u3092\u4f7f\u7528\u3057\u3066\u7a7a\u306e\u30b9\u30ed\u30c3\u30c8\u3092\u8868\u73fe\ntree = [1, 2, 3, 4, None, 6, 7, 8, 9, None, None, 12, None, None, 15]\n</code></pre> <pre><code>/* \u4e8c\u5206\u6728\u306e\u914d\u5217\u8868\u73fe */\n// \u6700\u5927\u6574\u6570\u5024INT_MAX\u3092\u4f7f\u7528\u3057\u3066\u7a7a\u306e\u30b9\u30ed\u30c3\u30c8\u3092\u30de\u30fc\u30af\nvector&lt;int&gt; tree = {1, 2, 3, 4, INT_MAX, 6, 7, 8, 9, INT_MAX, INT_MAX, 12, INT_MAX, INT_MAX, 15};\n</code></pre> <pre><code>/* \u4e8c\u5206\u6728\u306e\u914d\u5217\u8868\u73fe */\n// Integer\u30e9\u30c3\u30d1\u30fc\u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3057\u3066null\u3067\u7a7a\u306e\u30b9\u30ed\u30c3\u30c8\u3092\u30de\u30fc\u30af\nInteger[] tree = { 1, 2, 3, 4, null, 6, 7, 8, 9, null, null, 12, null, null, 15 };\n</code></pre> <pre><code>/* \u4e8c\u5206\u6728\u306e\u914d\u5217\u8868\u73fe */\n// nullable int (int?)\u3092\u4f7f\u7528\u3057\u3066null\u3067\u7a7a\u306e\u30b9\u30ed\u30c3\u30c8\u3092\u30de\u30fc\u30af\nint?[] tree = [1, 2, 3, 4, null, 6, 7, 8, 9, null, null, 12, null, null, 15];\n</code></pre> <pre><code>/* \u4e8c\u5206\u6728\u306e\u914d\u5217\u8868\u73fe */\n// any\u578b\u30b9\u30e9\u30a4\u30b9\u3092\u4f7f\u7528\u3057\u3066nil\u3067\u7a7a\u306e\u30b9\u30ed\u30c3\u30c8\u3092\u30de\u30fc\u30af\ntree := []any{1, 2, 3, 4, nil, 6, 7, 8, 9, nil, nil, 12, nil, nil, 15}\n</code></pre> <pre><code>/* \u4e8c\u5206\u6728\u306e\u914d\u5217\u8868\u73fe */\n// optional Int (Int?)\u3092\u4f7f\u7528\u3057\u3066nil\u3067\u7a7a\u306e\u30b9\u30ed\u30c3\u30c8\u3092\u30de\u30fc\u30af\nlet tree: [Int?] = [1, 2, 3, 4, nil, 6, 7, 8, 9, nil, nil, 12, nil, nil, 15]\n</code></pre> <pre><code>/* \u4e8c\u5206\u6728\u306e\u914d\u5217\u8868\u73fe */\n// null\u3092\u4f7f\u7528\u3057\u3066\u7a7a\u306e\u30b9\u30ed\u30c3\u30c8\u3092\u8868\u73fe\nlet tree = [1, 2, 3, 4, null, 6, 7, 8, 9, null, null, 12, null, null, 15];\n</code></pre> <pre><code>/* \u4e8c\u5206\u6728\u306e\u914d\u5217\u8868\u73fe */\n// null\u3092\u4f7f\u7528\u3057\u3066\u7a7a\u306e\u30b9\u30ed\u30c3\u30c8\u3092\u8868\u73fe\nlet tree: (number | null)[] = [1, 2, 3, 4, null, 6, 7, 8, 9, null, null, 12, null, null, 15];\n</code></pre> <pre><code>/* \u4e8c\u5206\u6728\u306e\u914d\u5217\u8868\u73fe */\n// nullable int (int?)\u3092\u4f7f\u7528\u3057\u3066null\u3067\u7a7a\u306e\u30b9\u30ed\u30c3\u30c8\u3092\u30de\u30fc\u30af\nList&lt;int?&gt; tree = [1, 2, 3, 4, null, 6, 7, 8, 9, null, null, 12, null, null, 15];\n</code></pre> <pre><code>/* \u4e8c\u5206\u6728\u306e\u914d\u5217\u8868\u73fe */\n// None\u3092\u4f7f\u7528\u3057\u3066\u7a7a\u306e\u30b9\u30ed\u30c3\u30c8\u3092\u30de\u30fc\u30af\nlet tree = [Some(1), Some(2), Some(3), Some(4), None, Some(6), Some(7), Some(8), Some(9), None, None, Some(12), None, None, Some(15)];\n</code></pre> <pre><code>/* \u4e8c\u5206\u6728\u306e\u914d\u5217\u8868\u73fe */\n// \u6700\u5927int\u5024\u3092\u4f7f\u7528\u3057\u3066\u7a7a\u306e\u30b9\u30ed\u30c3\u30c8\u3092\u30de\u30fc\u30af\u3001\u3057\u305f\u304c\u3063\u3066\u30ce\u30fc\u30c9\u5024\u306fINT_MAX\u3067\u3042\u3063\u3066\u306f\u306a\u3089\u306a\u3044\nint tree[] = {1, 2, 3, 4, INT_MAX, 6, 7, 8, 9, INT_MAX, INT_MAX, 12, INT_MAX, INT_MAX, 15};\n</code></pre> <pre><code>/* \u4e8c\u5206\u6728\u306e\u914d\u5217\u8868\u73fe */\n// null\u3092\u4f7f\u7528\u3057\u3066\u7a7a\u306e\u30b9\u30ed\u30c3\u30c8\u3092\u8868\u73fe\nval tree = mutableListOf( 1, 2, 3, 4, null, 6, 7, 8, 9, null, null, 12, null, null, 15 )\n</code></pre> <pre><code>\n</code></pre> <p></p> <p> \u56f3 7-14 \u00a0 \u4efb\u610f\u306e\u7a2e\u985e\u306e\u4e8c\u5206\u6728\u306e\u914d\u5217\u8868\u73fe </p> <p>\u6ce8\u76ee\u3059\u3079\u304d\u306f\u3001\u5b8c\u5099\u4e8c\u5206\u6728\u306f\u914d\u5217\u8868\u73fe\u306b\u975e\u5e38\u306b\u9069\u3057\u3066\u3044\u308b**\u3068\u3044\u3046\u3053\u3068\u3067\u3059\u3002\u5b8c\u5099\u4e8c\u5206\u6728\u306e\u5b9a\u7fa9\u3092\u601d\u3044\u51fa\u3059\u3068\u3001<code>None</code>\u306f\u6700\u4e0b\u4f4d\u30ec\u30d9\u30eb\u3067\u306e\u307f\u3001\u304b\u3064\u53f3\u5074\u306b\u5411\u304b\u3063\u3066\u73fe\u308c\u307e\u3059\u3002**\u3064\u307e\u308a\u3001\u3059\u3079\u3066\u306e<code>None</code>\u5024\u306f\u78ba\u5b9f\u306b\u30ec\u30d9\u30eb\u9806\u63a2\u7d22\u30b7\u30fc\u30b1\u30f3\u30b9\u306e\u6700\u5f8c\u306b\u73fe\u308c\u307e\u3059\u3002</p> <p>\u3053\u308c\u306f\u3001\u914d\u5217\u3092\u4f7f\u7528\u3057\u3066\u5b8c\u5099\u4e8c\u5206\u6728\u3092\u8868\u73fe\u3059\u308b\u969b\u3001\u3059\u3079\u3066\u306e<code>None</code>\u5024\u306e\u683c\u7d0d\u3092\u7701\u7565\u3067\u304d\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u3001\u975e\u5e38\u306b\u4fbf\u5229\u3067\u3059\u3002\u4e0b\u56f3\u306b\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 7-15 \u00a0 \u5b8c\u5099\u4e8c\u5206\u6728\u306e\u914d\u5217\u8868\u73fe </p> <p>\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u306f\u3001\u914d\u5217\u8868\u73fe\u306b\u57fa\u3065\u304f\u4e8c\u5206\u6728\u3092\u5b9f\u88c5\u3057\u3001\u6b21\u306e\u64cd\u4f5c\u3092\u542b\u307f\u307e\u3059\uff1a</p> <ul> <li>\u30ce\u30fc\u30c9\u304c\u4e0e\u3048\u3089\u308c\u305f\u3068\u304d\u3001\u305d\u306e\u5024\u3001\u5de6\uff08\u53f3\uff09\u306e\u5b50\u30ce\u30fc\u30c9\u3001\u304a\u3088\u3073\u89aa\u30ce\u30fc\u30c9\u3092\u53d6\u5f97\u3059\u308b\u3002</li> <li>\u524d\u9806\u3001\u4e2d\u9806\u3001\u5f8c\u9806\u3001\u304a\u3088\u3073\u30ec\u30d9\u30eb\u9806\u63a2\u7d22\u30b7\u30fc\u30b1\u30f3\u30b9\u3092\u53d6\u5f97\u3059\u308b\u3002</li> </ul> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby array_binary_tree.py<pre><code>class ArrayBinaryTree:\n \"\"\"\u914d\u5217\u30d9\u30fc\u30b9\u306e\u4e8c\u5206\u6728\u30af\u30e9\u30b9\"\"\"\n\n def __init__(self, arr: list[int | None]):\n \"\"\"\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\"\"\"\n self._tree = list(arr)\n\n def size(self):\n \"\"\"\u30ea\u30b9\u30c8\u306e\u5bb9\u91cf\"\"\"\n return len(self._tree)\n\n def val(self, i: int) -&gt; int | None:\n \"\"\"\u30a4\u30f3\u30c7\u30c3\u30af\u30b9i\u306e\u30ce\u30fc\u30c9\u306e\u5024\u3092\u53d6\u5f97\"\"\"\n # \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\u7bc4\u56f2\u5916\u306e\u5834\u5408\u3001None\u3092\u8fd4\u3057\u3001\u7a7a\u5e2d\u3092\u8868\u3059\n if i &lt; 0 or i &gt;= self.size():\n return None\n return self._tree[i]\n\n def left(self, i: int) -&gt; int | None:\n \"\"\"\u30a4\u30f3\u30c7\u30c3\u30af\u30b9i\u306e\u30ce\u30fc\u30c9\u306e\u5de6\u306e\u5b50\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u53d6\u5f97\"\"\"\n return 2 * i + 1\n\n def right(self, i: int) -&gt; int | None:\n \"\"\"\u30a4\u30f3\u30c7\u30c3\u30af\u30b9i\u306e\u30ce\u30fc\u30c9\u306e\u53f3\u306e\u5b50\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u53d6\u5f97\"\"\"\n return 2 * i + 2\n\n def parent(self, i: int) -&gt; int | None:\n \"\"\"\u30a4\u30f3\u30c7\u30c3\u30af\u30b9i\u306e\u30ce\u30fc\u30c9\u306e\u89aa\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u53d6\u5f97\"\"\"\n return (i - 1) // 2\n\n def level_order(self) -&gt; list[int]:\n \"\"\"\u30ec\u30d9\u30eb\u9806\u8d70\u67fb\"\"\"\n self.res = []\n # \u914d\u5217\u3092\u8d70\u67fb\n for i in range(self.size()):\n if self.val(i) is not None:\n self.res.append(self.val(i))\n return self.res\n\n def dfs(self, i: int, order: str):\n \"\"\"\u6df1\u3055\u512a\u5148\u8d70\u67fb\"\"\"\n if self.val(i) is None:\n return\n # \u524d\u9806\u8d70\u67fb\n if order == \"pre\":\n self.res.append(self.val(i))\n self.dfs(self.left(i), order)\n # \u4e2d\u9806\u8d70\u67fb\n if order == \"in\":\n self.res.append(self.val(i))\n self.dfs(self.right(i), order)\n # \u5f8c\u9806\u8d70\u67fb\n if order == \"post\":\n self.res.append(self.val(i))\n\n def pre_order(self) -&gt; list[int]:\n \"\"\"\u524d\u9806\u8d70\u67fb\"\"\"\n self.res = []\n self.dfs(0, order=\"pre\")\n return self.res\n\n def in_order(self) -&gt; list[int]:\n \"\"\"\u4e2d\u9806\u8d70\u67fb\"\"\"\n self.res = []\n self.dfs(0, order=\"in\")\n return self.res\n\n def post_order(self) -&gt; list[int]:\n \"\"\"\u5f8c\u9806\u8d70\u67fb\"\"\"\n self.res = []\n self.dfs(0, order=\"post\")\n return self.res\n</code></pre> array_binary_tree.cpp<pre><code>/* \u914d\u5217\u30d9\u30fc\u30b9\u306e\u4e8c\u5206\u6728\u30af\u30e9\u30b9 */\nclass ArrayBinaryTree {\n public:\n /* \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf */\n ArrayBinaryTree(vector&lt;int&gt; arr) {\n tree = arr;\n }\n\n /* \u30ea\u30b9\u30c8\u306e\u5bb9\u91cf */\n int size() {\n return tree.size();\n }\n\n /* \u30a4\u30f3\u30c7\u30c3\u30af\u30b9 i \u306e\u30ce\u30fc\u30c9\u306e\u5024\u3092\u53d6\u5f97 */\n int val(int i) {\n // \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\u7bc4\u56f2\u5916\u306e\u5834\u5408\u3001INT_MAX \u3092\u8fd4\u3059\uff08null \u3092\u8868\u3059\uff09\n if (i &lt; 0 || i &gt;= size())\n return INT_MAX;\n return tree[i];\n }\n\n /* \u30a4\u30f3\u30c7\u30c3\u30af\u30b9 i \u306e\u30ce\u30fc\u30c9\u306e\u5de6\u306e\u5b50\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u53d6\u5f97 */\n int left(int i) {\n return 2 * i + 1;\n }\n\n /* \u30a4\u30f3\u30c7\u30c3\u30af\u30b9 i \u306e\u30ce\u30fc\u30c9\u306e\u53f3\u306e\u5b50\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u53d6\u5f97 */\n int right(int i) {\n return 2 * i + 2;\n }\n\n /* \u30a4\u30f3\u30c7\u30c3\u30af\u30b9 i \u306e\u30ce\u30fc\u30c9\u306e\u89aa\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u53d6\u5f97 */\n int parent(int i) {\n return (i - 1) / 2;\n }\n\n /* \u30ec\u30d9\u30eb\u9806\u8d70\u67fb */\n vector&lt;int&gt; levelOrder() {\n vector&lt;int&gt; res;\n // \u914d\u5217\u3092\u8d70\u67fb\n for (int i = 0; i &lt; size(); i++) {\n if (val(i) != INT_MAX)\n res.push_back(val(i));\n }\n return res;\n }\n\n /* \u524d\u9806\u8d70\u67fb */\n vector&lt;int&gt; preOrder() {\n vector&lt;int&gt; res;\n dfs(0, \"pre\", res);\n return res;\n }\n\n /* \u4e2d\u9806\u8d70\u67fb */\n vector&lt;int&gt; inOrder() {\n vector&lt;int&gt; res;\n dfs(0, \"in\", res);\n return res;\n }\n\n /* \u5f8c\u9806\u8d70\u67fb */\n vector&lt;int&gt; postOrder() {\n vector&lt;int&gt; res;\n dfs(0, \"post\", res);\n return res;\n }\n\n private:\n vector&lt;int&gt; tree;\n\n /* \u6df1\u3055\u512a\u5148\u8d70\u67fb */\n void dfs(int i, string order, vector&lt;int&gt; &amp;res) {\n // \u7a7a\u306e\u4f4d\u7f6e\u306e\u5834\u5408\u3001\u623b\u308b\n if (val(i) == INT_MAX)\n return;\n // \u524d\u9806\u8d70\u67fb\n if (order == \"pre\")\n res.push_back(val(i));\n dfs(left(i), order, res);\n // \u4e2d\u9806\u8d70\u67fb\n if (order == \"in\")\n res.push_back(val(i));\n dfs(right(i), order, res);\n // \u5f8c\u9806\u8d70\u67fb\n if (order == \"post\")\n res.push_back(val(i));\n }\n};\n</code></pre> array_binary_tree.java<pre><code>/* \u914d\u5217\u30d9\u30fc\u30b9\u306e\u4e8c\u5206\u6728\u30af\u30e9\u30b9 */\nclass ArrayBinaryTree {\n private List&lt;Integer&gt; tree;\n\n /* \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf */\n public ArrayBinaryTree(List&lt;Integer&gt; arr) {\n tree = new ArrayList&lt;&gt;(arr);\n }\n\n /* \u30ea\u30b9\u30c8\u306e\u5bb9\u91cf */\n public int size() {\n return tree.size();\n }\n\n /* \u30a4\u30f3\u30c7\u30c3\u30af\u30b9 i \u306e\u30ce\u30fc\u30c9\u306e\u5024\u3092\u53d6\u5f97 */\n public Integer val(int i) {\n // \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\u7bc4\u56f2\u5916\u306e\u5834\u5408\u3001null \u3092\u8fd4\u3059\uff08\u7a7a\u306e\u4f4d\u7f6e\u3092\u8868\u3059\uff09\n if (i &lt; 0 || i &gt;= size())\n return null;\n return tree.get(i);\n }\n\n /* \u30a4\u30f3\u30c7\u30c3\u30af\u30b9 i \u306e\u30ce\u30fc\u30c9\u306e\u5de6\u306e\u5b50\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u53d6\u5f97 */\n public Integer left(int i) {\n return 2 * i + 1;\n }\n\n /* \u30a4\u30f3\u30c7\u30c3\u30af\u30b9 i \u306e\u30ce\u30fc\u30c9\u306e\u53f3\u306e\u5b50\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u53d6\u5f97 */\n public Integer right(int i) {\n return 2 * i + 2;\n }\n\n /* \u30a4\u30f3\u30c7\u30c3\u30af\u30b9 i \u306e\u30ce\u30fc\u30c9\u306e\u89aa\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u53d6\u5f97 */\n public Integer parent(int i) {\n return (i - 1) / 2;\n }\n\n /* \u30ec\u30d9\u30eb\u9806\u8d70\u67fb */\n public List&lt;Integer&gt; levelOrder() {\n List&lt;Integer&gt; res = new ArrayList&lt;&gt;();\n // \u914d\u5217\u3092\u8d70\u67fb\n for (int i = 0; i &lt; size(); i++) {\n if (val(i) != null)\n res.add(val(i));\n }\n return res;\n }\n\n /* \u6df1\u3055\u512a\u5148\u8d70\u67fb */\n private void dfs(Integer i, String order, List&lt;Integer&gt; res) {\n // \u7a7a\u306e\u4f4d\u7f6e\u306e\u5834\u5408\u3001\u623b\u308b\n if (val(i) == null)\n return;\n // \u524d\u9806\u8d70\u67fb\n if (\"pre\".equals(order))\n res.add(val(i));\n dfs(left(i), order, res);\n // \u4e2d\u9806\u8d70\u67fb\n if (\"in\".equals(order))\n res.add(val(i));\n dfs(right(i), order, res);\n // \u5f8c\u9806\u8d70\u67fb\n if (\"post\".equals(order))\n res.add(val(i));\n }\n\n /* \u524d\u9806\u8d70\u67fb */\n public List&lt;Integer&gt; preOrder() {\n List&lt;Integer&gt; res = new ArrayList&lt;&gt;();\n dfs(0, \"pre\", res);\n return res;\n }\n\n /* \u4e2d\u9806\u8d70\u67fb */\n public List&lt;Integer&gt; inOrder() {\n List&lt;Integer&gt; res = new ArrayList&lt;&gt;();\n dfs(0, \"in\", res);\n return res;\n }\n\n /* \u5f8c\u9806\u8d70\u67fb */\n public List&lt;Integer&gt; postOrder() {\n List&lt;Integer&gt; res = new ArrayList&lt;&gt;();\n dfs(0, \"post\", res);\n return res;\n }\n}\n</code></pre> array_binary_tree.cs<pre><code>[class]{ArrayBinaryTree}-[func]{}\n</code></pre> array_binary_tree.go<pre><code>[class]{arrayBinaryTree}-[func]{}\n</code></pre> array_binary_tree.swift<pre><code>[class]{ArrayBinaryTree}-[func]{}\n</code></pre> array_binary_tree.js<pre><code>[class]{ArrayBinaryTree}-[func]{}\n</code></pre> array_binary_tree.ts<pre><code>[class]{ArrayBinaryTree}-[func]{}\n</code></pre> array_binary_tree.dart<pre><code>[class]{ArrayBinaryTree}-[func]{}\n</code></pre> array_binary_tree.rs<pre><code>[class]{ArrayBinaryTree}-[func]{}\n</code></pre> array_binary_tree.c<pre><code>[class]{ArrayBinaryTree}-[func]{}\n</code></pre> array_binary_tree.kt<pre><code>[class]{ArrayBinaryTree}-[func]{}\n</code></pre> array_binary_tree.rb<pre><code>[class]{ArrayBinaryTree}-[func]{}\n</code></pre>"},{"location":"chapter_tree/array_representation_of_tree/#733","title":"7.3.3 \u00a0 \u5229\u70b9\u3068\u5236\u9650","text":"<p>\u4e8c\u5206\u6728\u306e\u914d\u5217\u8868\u73fe\u306b\u306f\u4ee5\u4e0b\u306e\u5229\u70b9\u304c\u3042\u308a\u307e\u3059\uff1a</p> <ul> <li>\u914d\u5217\u306f\u9023\u7d9a\u3057\u305f\u30e1\u30e2\u30ea\u7a7a\u9593\u306b\u683c\u7d0d\u3055\u308c\u308b\u305f\u3081\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u30d5\u30ec\u30f3\u30c9\u30ea\u30fc\u3067\u3001\u3088\u308a\u9ad8\u901f\u306a\u30a2\u30af\u30bb\u30b9\u3068\u63a2\u7d22\u304c\u53ef\u80fd\u3067\u3059\u3002</li> <li>\u30dd\u30a4\u30f3\u30bf\u3092\u683c\u7d0d\u3059\u308b\u5fc5\u8981\u304c\u306a\u3044\u305f\u3081\u3001\u30b9\u30da\u30fc\u30b9\u3092\u7bc0\u7d04\u3067\u304d\u307e\u3059\u3002</li> <li>\u30ce\u30fc\u30c9\u3078\u306e\u30e9\u30f3\u30c0\u30e0\u30a2\u30af\u30bb\u30b9\u304c\u53ef\u80fd\u3067\u3059\u3002</li> </ul> <p>\u3057\u304b\u3057\u3001\u914d\u5217\u8868\u73fe\u306b\u306f\u3044\u304f\u3064\u304b\u306e\u5236\u9650\u3082\u3042\u308a\u307e\u3059\uff1a</p> <ul> <li>\u914d\u5217\u683c\u7d0d\u306b\u306f\u9023\u7d9a\u3057\u305f\u30e1\u30e2\u30ea\u7a7a\u9593\u304c\u5fc5\u8981\u306a\u305f\u3081\u3001\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u3092\u6301\u3064\u6728\u306e\u683c\u7d0d\u306b\u306f\u9069\u3057\u3066\u3044\u307e\u305b\u3093\u3002</li> <li>\u30ce\u30fc\u30c9\u306e\u8ffd\u52a0\u3084\u524a\u9664\u306b\u306f\u914d\u5217\u306e\u633f\u5165\u3084\u524a\u9664\u64cd\u4f5c\u304c\u5fc5\u8981\u3067\u3001\u52b9\u7387\u304c\u4f4e\u304f\u306a\u308a\u307e\u3059\u3002</li> <li>\u4e8c\u5206\u6728\u306b\u591a\u304f\u306e<code>None</code>\u5024\u304c\u3042\u308b\u5834\u5408\u3001\u914d\u5217\u306b\u542b\u307e\u308c\u308b\u30ce\u30fc\u30c9\u30c7\u30fc\u30bf\u306e\u5272\u5408\u304c\u4f4e\u304f\u306a\u308a\u3001\u7a7a\u9593\u5229\u7528\u7387\u304c\u4f4e\u4e0b\u3057\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_tree/avl_tree/","title":"7.5 \u00a0 AVL\u6728 *","text":"<p>\u300c\u4e8c\u5206\u63a2\u7d22\u6728\u300d\u306e\u7bc0\u3067\u306f\u3001\u8907\u6570\u306e\u633f\u5165\u3068\u524a\u9664\u306e\u5f8c\u3001\u4e8c\u5206\u63a2\u7d22\u6728\u304c\u9023\u7d50\u30ea\u30b9\u30c8\u306b\u9000\u5316\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u3053\u3068\u3092\u8ff0\u3079\u307e\u3057\u305f\u3002\u3053\u306e\u3088\u3046\u306a\u5834\u5408\u3001\u3059\u3079\u3066\u306e\u64cd\u4f5c\u306e\u6642\u9593\u8a08\u7b97\u91cf\u304c\\(O(\\log n)\\)\u304b\u3089\\(O(n)\\)\u306b\u60aa\u5316\u3057\u307e\u3059\u3002</p> <p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u30012\u3064\u306e\u30ce\u30fc\u30c9\u524a\u9664\u64cd\u4f5c\u306e\u5f8c\u3001\u3053\u306e\u4e8c\u5206\u63a2\u7d22\u6728\u306f\u9023\u7d50\u30ea\u30b9\u30c8\u306b\u9000\u5316\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 7-24 \u00a0 \u30ce\u30fc\u30c9\u524a\u9664\u5f8c\u306eAVL\u6728\u306e\u9000\u5316 </p> <p>\u4f8b\u3048\u3070\u3001\u4e0b\u56f3\u306b\u793a\u3059\u5b8c\u5168\u4e8c\u5206\u6728\u3067\u306f\u30012\u3064\u306e\u30ce\u30fc\u30c9\u3092\u633f\u5165\u3057\u305f\u5f8c\u3001\u6728\u304c\u5de6\u306b\u5927\u304d\u304f\u50be\u304d\u3001\u691c\u7d22\u64cd\u4f5c\u306e\u6642\u9593\u8a08\u7b97\u91cf\u3082\u60aa\u5316\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 7-25 \u00a0 \u30ce\u30fc\u30c9\u633f\u5165\u5f8c\u306eAVL\u6728\u306e\u9000\u5316 </p> <p>1962\u5e74\u3001G. M. Adelson-Velsky\u3068E. M. Landis\u304c\u8ad6\u6587\u300cAn algorithm for the organization of information\u300d\u3067AVL\u6728\u3092\u63d0\u6848\u3057\u307e\u3057\u305f\u3002\u3053\u306e\u8ad6\u6587\u3067\u306f\u3001\u30ce\u30fc\u30c9\u306e\u7d99\u7d9a\u7684\u306a\u8ffd\u52a0\u3068\u524a\u9664\u306e\u5f8c\u3082AVL\u6728\u304c\u9000\u5316\u3057\u306a\u3044\u3053\u3068\u3092\u4fdd\u8a3c\u3059\u308b\u4e00\u9023\u306e\u64cd\u4f5c\u306b\u3064\u3044\u3066\u8a73\u8ff0\u3057\u3001\u3055\u307e\u3056\u307e\u306a\u64cd\u4f5c\u306e\u6642\u9593\u8a08\u7b97\u91cf\u3092\\(O(\\log n)\\)\u30ec\u30d9\u30eb\u306b\u7dad\u6301\u3057\u307e\u3057\u305f\u3002\u3064\u307e\u308a\u3001\u983b\u7e41\u306a\u8ffd\u52a0\u3001\u524a\u9664\u3001\u691c\u7d22\u3001\u5909\u66f4\u304c\u5fc5\u8981\u306a\u30b7\u30ca\u30ea\u30aa\u3067\u3001AVL\u6728\u306f\u5e38\u306b\u52b9\u7387\u7684\u306a\u30c7\u30fc\u30bf\u64cd\u4f5c\u6027\u80fd\u3092\u7dad\u6301\u3067\u304d\u3001\u5927\u304d\u306a\u5fdc\u7528\u4fa1\u5024\u304c\u3042\u308a\u307e\u3059\u3002</p>"},{"location":"chapter_tree/avl_tree/#751-avl","title":"7.5.1 \u00a0 AVL\u6728\u306e\u4e00\u822c\u7684\u306a\u7528\u8a9e","text":"<p>AVL\u6728\u306f\u4e8c\u5206\u63a2\u7d22\u6728\u3067\u3042\u308a\u304b\u3064\u5e73\u8861\u4e8c\u5206\u6728\u3067\u3082\u3042\u308a\u3001\u3053\u308c\u30892\u3064\u306e\u7a2e\u985e\u306e\u4e8c\u5206\u6728\u306e\u3059\u3079\u3066\u306e\u6027\u8cea\u3092\u6e80\u305f\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u5e73\u8861\u4e8c\u5206\u63a2\u7d22\u6728\u3067\u3059\u3002</p>"},{"location":"chapter_tree/avl_tree/#1","title":"1. \u00a0 \u30ce\u30fc\u30c9\u306e\u9ad8\u3055","text":"<p>AVL\u6728\u306b\u95a2\u9023\u3059\u308b\u64cd\u4f5c\u3067\u306f\u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u3092\u53d6\u5f97\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u305f\u3081\u3001\u30ce\u30fc\u30c9\u30af\u30e9\u30b9\u306b<code>height</code>\u5909\u6570\u3092\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby <pre><code>class TreeNode:\n \"\"\"AVL\u6728\u30ce\u30fc\u30c9\"\"\"\n def __init__(self, val: int):\n self.val: int = val # \u30ce\u30fc\u30c9\u5024\n self.height: int = 0 # \u30ce\u30fc\u30c9\u306e\u9ad8\u3055\n self.left: TreeNode | None = None # \u5de6\u306e\u5b50\u3078\u306e\u53c2\u7167\n self.right: TreeNode | None = None # \u53f3\u306e\u5b50\u3078\u306e\u53c2\u7167\n</code></pre> <pre><code>/* AVL\u6728\u30ce\u30fc\u30c9 */\nstruct TreeNode {\n int val{}; // \u30ce\u30fc\u30c9\u5024\n int height = 0; // \u30ce\u30fc\u30c9\u306e\u9ad8\u3055\n TreeNode *left{}; // \u5de6\u306e\u5b50\n TreeNode *right{}; // \u53f3\u306e\u5b50\n TreeNode() = default;\n explicit TreeNode(int x) : val(x){}\n};\n</code></pre> <pre><code>/* AVL\u6728\u30ce\u30fc\u30c9 */\nclass TreeNode {\n public int val; // \u30ce\u30fc\u30c9\u5024\n public int height; // \u30ce\u30fc\u30c9\u306e\u9ad8\u3055\n public TreeNode left; // \u5de6\u306e\u5b50\n public TreeNode right; // \u53f3\u306e\u5b50\n public TreeNode(int x) { val = x; }\n}\n</code></pre> <pre><code>/* AVL\u6728\u30ce\u30fc\u30c9 */\nclass TreeNode(int? x) {\n public int? val = x; // \u30ce\u30fc\u30c9\u5024\n public int height; // \u30ce\u30fc\u30c9\u306e\u9ad8\u3055\n public TreeNode? left; // \u5de6\u306e\u5b50\u3078\u306e\u53c2\u7167\n public TreeNode? right; // \u53f3\u306e\u5b50\u3078\u306e\u53c2\u7167\n}\n</code></pre> <pre><code>/* AVL\u6728\u30ce\u30fc\u30c9 */\ntype TreeNode struct {\n Val int // \u30ce\u30fc\u30c9\u5024\n Height int // \u30ce\u30fc\u30c9\u306e\u9ad8\u3055\n Left *TreeNode // \u5de6\u306e\u5b50\u3078\u306e\u53c2\u7167\n Right *TreeNode // \u53f3\u306e\u5b50\u3078\u306e\u53c2\u7167\n}\n</code></pre> <pre><code>/* AVL\u6728\u30ce\u30fc\u30c9 */\nclass TreeNode {\n var val: Int // \u30ce\u30fc\u30c9\u5024\n var height: Int // \u30ce\u30fc\u30c9\u306e\u9ad8\u3055\n var left: TreeNode? // \u5de6\u306e\u5b50\n var right: TreeNode? // \u53f3\u306e\u5b50\n\n init(x: Int) {\n val = x\n height = 0\n }\n}\n</code></pre> <pre><code>/* AVL\u6728\u30ce\u30fc\u30c9 */\nclass TreeNode {\n val; // \u30ce\u30fc\u30c9\u5024\n height; // \u30ce\u30fc\u30c9\u306e\u9ad8\u3055\n left; // \u5de6\u306e\u5b50\u30dd\u30a4\u30f3\u30bf\n right; // \u53f3\u306e\u5b50\u30dd\u30a4\u30f3\u30bf\n constructor(val, left, right, height) {\n this.val = val === undefined ? 0 : val;\n this.height = height === undefined ? 0 : height;\n this.left = left === undefined ? null : left;\n this.right = right === undefined ? null : right;\n }\n}\n</code></pre> <pre><code>/* AVL\u6728\u30ce\u30fc\u30c9 */\nclass TreeNode {\n val: number; // \u30ce\u30fc\u30c9\u5024\n height: number; // \u30ce\u30fc\u30c9\u306e\u9ad8\u3055\n left: TreeNode | null; // \u5de6\u306e\u5b50\u30dd\u30a4\u30f3\u30bf\n right: TreeNode | null; // \u53f3\u306e\u5b50\u30dd\u30a4\u30f3\u30bf\n constructor(val?: number, height?: number, left?: TreeNode | null, right?: TreeNode | null) {\n this.val = val === undefined ? 0 : val;\n this.height = height === undefined ? 0 : height;\n this.left = left === undefined ? null : left;\n this.right = right === undefined ? null : right;\n }\n}\n</code></pre> <pre><code>/* AVL\u6728\u30ce\u30fc\u30c9 */\nclass TreeNode {\n int val; // \u30ce\u30fc\u30c9\u5024\n int height; // \u30ce\u30fc\u30c9\u306e\u9ad8\u3055\n TreeNode? left; // \u5de6\u306e\u5b50\n TreeNode? right; // \u53f3\u306e\u5b50\n TreeNode(this.val, [this.height = 0, this.left, this.right]);\n}\n</code></pre> <pre><code>use std::rc::Rc;\nuse std::cell::RefCell;\n\n/* AVL\u6728\u30ce\u30fc\u30c9 */\nstruct TreeNode {\n val: i32, // \u30ce\u30fc\u30c9\u5024\n height: i32, // \u30ce\u30fc\u30c9\u306e\u9ad8\u3055\n left: Option&lt;Rc&lt;RefCell&lt;TreeNode&gt;&gt;&gt;, // \u5de6\u306e\u5b50\n right: Option&lt;Rc&lt;RefCell&lt;TreeNode&gt;&gt;&gt;, // \u53f3\u306e\u5b50\n}\n\nimpl TreeNode {\n /* \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf */\n fn new(val: i32) -&gt; Rc&lt;RefCell&lt;Self&gt;&gt; {\n Rc::new(RefCell::new(Self {\n val,\n height: 0,\n left: None,\n right: None\n }))\n }\n}\n</code></pre> <pre><code>/* AVL\u6728\u30ce\u30fc\u30c9 */\nTreeNode struct TreeNode {\n int val;\n int height;\n struct TreeNode *left;\n struct TreeNode *right;\n} TreeNode;\n\n/* \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf */\nTreeNode *newTreeNode(int val) {\n TreeNode *node;\n\n node = (TreeNode *)malloc(sizeof(TreeNode));\n node-&gt;val = val;\n node-&gt;height = 0;\n node-&gt;left = NULL;\n node-&gt;right = NULL;\n return node;\n}\n</code></pre> <pre><code>/* AVL\u6728\u30ce\u30fc\u30c9 */\nclass TreeNode(val _val: Int) { // \u30ce\u30fc\u30c9\u5024\n val height: Int = 0 // \u30ce\u30fc\u30c9\u306e\u9ad8\u3055\n val left: TreeNode? = null // \u5de6\u306e\u5b50\n val right: TreeNode? = null // \u53f3\u306e\u5b50\n}\n</code></pre> <pre><code>\n</code></pre> <p>\u300c\u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u300d\u3068\u306f\u3001\u305d\u306e\u30ce\u30fc\u30c9\u304b\u3089\u6700\u3082\u9060\u3044\u8449\u30ce\u30fc\u30c9\u307e\u3067\u306e\u8ddd\u96e2\u3001\u3064\u307e\u308a\u901a\u904e\u3059\u308b\u300c\u8fba\u300d\u306e\u6570\u3092\u6307\u3057\u307e\u3059\u3002\u91cd\u8981\u306a\u306e\u306f\u3001\u8449\u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u306f\\(0\\)\u3067\u3001null\u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u306f\\(-1\\)\u3067\u3042\u308b\u3053\u3068\u3067\u3059\u3002\u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u3092\u53d6\u5f97\u3057\u3001\u66f4\u65b0\u3059\u308b\u305f\u3081\u306e2\u3064\u306e\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u95a2\u6570\u3092\u4f5c\u6210\u3057\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby avl_tree.py<pre><code>def height(self, node: TreeNode | None) -&gt; int:\n \"\"\"\u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u3092\u53d6\u5f97\"\"\"\n # \u7a7a\u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u306f-1\u3001\u8449\u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u306f0\n if node is not None:\n return node.height\n return -1\n\ndef update_height(self, node: TreeNode | None):\n \"\"\"\u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u3092\u66f4\u65b0\"\"\"\n # \u30ce\u30fc\u30c9\u306e\u9ad8\u3055 = \u6700\u3082\u9ad8\u3044\u90e8\u5206\u6728\u306e\u9ad8\u3055 + 1\n node.height = max([self.height(node.left), self.height(node.right)]) + 1\n</code></pre> avl_tree.cpp<pre><code>/* \u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u3092\u53d6\u5f97 */\nint height(TreeNode *node) {\n // \u7a7a\u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u306f-1\u3001\u8449\u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u306f0\n return node == nullptr ? -1 : node-&gt;height;\n}\n\n/* \u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u3092\u66f4\u65b0 */\nvoid updateHeight(TreeNode *node) {\n // \u30ce\u30fc\u30c9\u306e\u9ad8\u3055 = \u6700\u3082\u9ad8\u3044\u90e8\u5206\u6728\u306e\u9ad8\u3055 + 1\n node-&gt;height = max(height(node-&gt;left), height(node-&gt;right)) + 1;\n}\n</code></pre> avl_tree.java<pre><code>/* \u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u3092\u53d6\u5f97 */\nint height(TreeNode node) {\n // \u7a7a\u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u306f -1\u3001\u8449\u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u306f 0\n return node == null ? -1 : node.height;\n}\n\n/* \u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u3092\u66f4\u65b0 */\nvoid updateHeight(TreeNode node) {\n // \u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u306f\u6700\u3082\u9ad8\u3044\u90e8\u5206\u6728\u306e\u9ad8\u3055 + 1\n node.height = Math.max(height(node.left), height(node.right)) + 1;\n}\n</code></pre> avl_tree.cs<pre><code>[class]{AVLTree}-[func]{Height}\n\n[class]{AVLTree}-[func]{UpdateHeight}\n</code></pre> avl_tree.go<pre><code>[class]{aVLTree}-[func]{height}\n\n[class]{aVLTree}-[func]{updateHeight}\n</code></pre> avl_tree.swift<pre><code>[class]{AVLTree}-[func]{height}\n\n[class]{AVLTree}-[func]{updateHeight}\n</code></pre> avl_tree.js<pre><code>[class]{AVLTree}-[func]{height}\n\n[class]{AVLTree}-[func]{updateHeight}\n</code></pre> avl_tree.ts<pre><code>[class]{AVLTree}-[func]{height}\n\n[class]{AVLTree}-[func]{updateHeight}\n</code></pre> avl_tree.dart<pre><code>[class]{AVLTree}-[func]{height}\n\n[class]{AVLTree}-[func]{updateHeight}\n</code></pre> avl_tree.rs<pre><code>[class]{AVLTree}-[func]{height}\n\n[class]{AVLTree}-[func]{update_height}\n</code></pre> avl_tree.c<pre><code>[class]{}-[func]{height}\n\n[class]{}-[func]{updateHeight}\n</code></pre> avl_tree.kt<pre><code>[class]{AVLTree}-[func]{height}\n\n[class]{AVLTree}-[func]{updateHeight}\n</code></pre> avl_tree.rb<pre><code>[class]{AVLTree}-[func]{height}\n\n[class]{AVLTree}-[func]{update_height}\n</code></pre>"},{"location":"chapter_tree/avl_tree/#2","title":"2. \u00a0 \u30ce\u30fc\u30c9\u306e\u5e73\u8861\u56e0\u5b50","text":"<p>\u30ce\u30fc\u30c9\u306e\u5e73\u8861\u56e0\u5b50\u306f\u3001\u305d\u306e\u30ce\u30fc\u30c9\u306e\u5de6\u90e8\u5206\u6728\u306e\u9ad8\u3055\u304b\u3089\u53f3\u90e8\u5206\u6728\u306e\u9ad8\u3055\u3092\u5f15\u3044\u305f\u5024\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u3001null\u30ce\u30fc\u30c9\u306e\u5e73\u8861\u56e0\u5b50\u306f\\(0\\)\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u3002\u5f8c\u3067\u4f7f\u3044\u3084\u3059\u304f\u3059\u308b\u305f\u3081\u3001\u30ce\u30fc\u30c9\u306e\u5e73\u8861\u56e0\u5b50\u3092\u53d6\u5f97\u3059\u308b\u6a5f\u80fd\u3082\u95a2\u6570\u306b\u30ab\u30d7\u30bb\u30eb\u5316\u3057\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby avl_tree.py<pre><code>def balance_factor(self, node: TreeNode | None) -&gt; int:\n \"\"\"\u30d0\u30e9\u30f3\u30b9\u56e0\u5b50\u3092\u53d6\u5f97\"\"\"\n # \u7a7a\u30ce\u30fc\u30c9\u306e\u30d0\u30e9\u30f3\u30b9\u56e0\u5b50\u306f0\n if node is None:\n return 0\n # \u30ce\u30fc\u30c9\u306e\u30d0\u30e9\u30f3\u30b9\u56e0\u5b50 = \u5de6\u90e8\u5206\u6728\u306e\u9ad8\u3055 - \u53f3\u90e8\u5206\u6728\u306e\u9ad8\u3055\n return self.height(node.left) - self.height(node.right)\n</code></pre> avl_tree.cpp<pre><code>/* \u5e73\u8861\u56e0\u5b50\u3092\u53d6\u5f97 */\nint balanceFactor(TreeNode *node) {\n // \u7a7a\u30ce\u30fc\u30c9\u306e\u5e73\u8861\u56e0\u5b50\u306f0\n if (node == nullptr)\n return 0;\n // \u30ce\u30fc\u30c9\u306e\u5e73\u8861\u56e0\u5b50 = \u5de6\u90e8\u5206\u6728\u306e\u9ad8\u3055 - \u53f3\u90e8\u5206\u6728\u306e\u9ad8\u3055\n return height(node-&gt;left) - height(node-&gt;right);\n}\n</code></pre> avl_tree.java<pre><code>/* \u5e73\u8861\u56e0\u5b50\u3092\u53d6\u5f97 */\nint balanceFactor(TreeNode node) {\n // \u7a7a\u30ce\u30fc\u30c9\u306e\u5e73\u8861\u56e0\u5b50\u306f 0\n if (node == null)\n return 0;\n // \u30ce\u30fc\u30c9\u306e\u5e73\u8861\u56e0\u5b50 = \u5de6\u90e8\u5206\u6728\u306e\u9ad8\u3055 - \u53f3\u90e8\u5206\u6728\u306e\u9ad8\u3055\n return height(node.left) - height(node.right);\n}\n</code></pre> avl_tree.cs<pre><code>[class]{AVLTree}-[func]{BalanceFactor}\n</code></pre> avl_tree.go<pre><code>[class]{aVLTree}-[func]{balanceFactor}\n</code></pre> avl_tree.swift<pre><code>[class]{AVLTree}-[func]{balanceFactor}\n</code></pre> avl_tree.js<pre><code>[class]{AVLTree}-[func]{balanceFactor}\n</code></pre> avl_tree.ts<pre><code>[class]{AVLTree}-[func]{balanceFactor}\n</code></pre> avl_tree.dart<pre><code>[class]{AVLTree}-[func]{balanceFactor}\n</code></pre> avl_tree.rs<pre><code>[class]{AVLTree}-[func]{balance_factor}\n</code></pre> avl_tree.c<pre><code>[class]{}-[func]{balanceFactor}\n</code></pre> avl_tree.kt<pre><code>[class]{AVLTree}-[func]{balanceFactor}\n</code></pre> avl_tree.rb<pre><code>[class]{AVLTree}-[func]{balance_factor}\n</code></pre> <p>Tip</p> <p>\u5e73\u8861\u56e0\u5b50\u3092\\(f\\)\u3068\u3059\u308b\u3068\u3001AVL\u6728\u306e\u4efb\u610f\u306e\u30ce\u30fc\u30c9\u306e\u5e73\u8861\u56e0\u5b50\u306f\\(-1 \\le f \\le 1\\)\u3092\u6e80\u305f\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_tree/avl_tree/#752-avl","title":"7.5.2 \u00a0 AVL\u6728\u306e\u56de\u8ee2","text":"<p>AVL\u6728\u306e\u7279\u5fb4\u7684\u306a\u6a5f\u80fd\u306f\u300c\u56de\u8ee2\u300d\u64cd\u4f5c\u3067\u3001\u3053\u308c\u306f\u4e8c\u5206\u6728\u306e\u4e2d\u9806\u63a2\u7d22\u30b7\u30fc\u30b1\u30f3\u30b9\u306b\u5f71\u97ff\u3092\u4e0e\u3048\u308b\u3053\u3068\u306a\u304f\u3001\u4e0d\u5e73\u8861\u306a\u30ce\u30fc\u30c9\u306e\u30d0\u30e9\u30f3\u30b9\u3092\u56de\u5fa9\u3067\u304d\u307e\u3059\u3002\u3064\u307e\u308a\u3001\u56de\u8ee2\u64cd\u4f5c\u306f\u300c\u4e8c\u5206\u63a2\u7d22\u6728\u300d\u306e\u6027\u8cea\u3092\u7dad\u6301\u3057\u306a\u304c\u3089\u3001\u6728\u3092\u300c\u5e73\u8861\u4e8c\u5206\u6728\u300d\u306b\u623b\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</p> <p>\u7d76\u5bfe\u5e73\u8861\u56e0\u5b50\u304c\\(&gt; 1\\)\u306e\u30ce\u30fc\u30c9\u3092\u300c\u4e0d\u5e73\u8861\u30ce\u30fc\u30c9\u300d\u3068\u547c\u3073\u307e\u3059\u3002\u4e0d\u5e73\u8861\u306e\u30bf\u30a4\u30d7\u306b\u5fdc\u3058\u3066\u30014\u7a2e\u985e\u306e\u56de\u8ee2\u304c\u3042\u308a\u307e\u3059\uff1a\u53f3\u56de\u8ee2\u3001\u5de6\u56de\u8ee2\u3001\u53f3\u5de6\u56de\u8ee2\u3001\u5de6\u53f3\u56de\u8ee2\u3067\u3059\u3002\u4ee5\u4e0b\u3001\u3053\u308c\u3089\u306e\u56de\u8ee2\u64cd\u4f5c\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_tree/avl_tree/#1_1","title":"1. \u00a0 \u53f3\u56de\u8ee2","text":"<p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u4e8c\u5206\u6728\u3067\u4e0b\u304b\u3089\u4e0a\u3078\u306e\u6700\u521d\u306e\u4e0d\u5e73\u8861\u30ce\u30fc\u30c9\u306f\u300c\u30ce\u30fc\u30c93\u300d\u3067\u3059\u3002\u3053\u306e\u4e0d\u5e73\u8861\u30ce\u30fc\u30c9\u3092\u6839\u3068\u3059\u308b\u90e8\u5206\u6728\u306b\u7126\u70b9\u3092\u5f53\u3066\u3001\u3053\u308c\u3092<code>node</code>\u3068\u3057\u3001\u305d\u306e\u5de6\u306e\u5b50\u3092<code>child</code>\u3068\u3057\u3066\u3001\u300c\u53f3\u56de\u8ee2\u300d\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u53f3\u56de\u8ee2\u5f8c\u3001\u90e8\u5206\u6728\u306f\u518d\u3073\u30d0\u30e9\u30f3\u30b9\u304c\u53d6\u308c\u3001\u540c\u6642\u306b\u4e8c\u5206\u63a2\u7d22\u6728\u306e\u6027\u8cea\u3082\u7dad\u6301\u3055\u308c\u307e\u3059\u3002</p> &lt;1&gt;&lt;2&gt;&lt;3&gt;&lt;4&gt; <p></p> <p></p> <p></p> <p></p> <p> \u56f3 7-26 \u00a0 \u53f3\u56de\u8ee2\u306e\u624b\u9806 </p> <p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001<code>child</code>\u30ce\u30fc\u30c9\u306b\u53f3\u306e\u5b50\uff08<code>grand_child</code>\u3068\u8868\u8a18\uff09\u304c\u3042\u308b\u5834\u5408\u3001\u53f3\u56de\u8ee2\u3067\u624b\u9806\u3092\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff1a<code>grand_child</code>\u3092<code>node</code>\u306e\u5de6\u306e\u5b50\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 7-27 \u00a0 grand_child\u304c\u3042\u308b\u53f3\u56de\u8ee2 </p> <p>\u300c\u53f3\u56de\u8ee2\u300d\u306f\u6bd4\u55a9\u7684\u306a\u7528\u8a9e\u3067\u3001\u5b9f\u969b\u306b\u306f\u30ce\u30fc\u30c9\u30dd\u30a4\u30f3\u30bf\u3092\u5909\u66f4\u3059\u308b\u3053\u3068\u3067\u5b9f\u73fe\u3055\u308c\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u3067\u793a\u3055\u308c\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby avl_tree.py<pre><code>def right_rotate(self, node: TreeNode | None) -&gt; TreeNode | None:\n \"\"\"\u53f3\u56de\u8ee2\u64cd\u4f5c\"\"\"\n child = node.left\n grand_child = child.right\n # child\u3092\u4e2d\u5fc3\u306bnode\u3092\u53f3\u306b\u56de\u8ee2\n child.right = node\n node.left = grand_child\n # \u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u3092\u66f4\u65b0\n self.update_height(node)\n self.update_height(child)\n # \u56de\u8ee2\u5f8c\u306e\u90e8\u5206\u6728\u306e\u30eb\u30fc\u30c8\u3092\u8fd4\u3059\n return child\n</code></pre> avl_tree.cpp<pre><code>/* \u53f3\u56de\u8ee2\u64cd\u4f5c */\nTreeNode *rightRotate(TreeNode *node) {\n TreeNode *child = node-&gt;left;\n TreeNode *grandChild = child-&gt;right;\n // child\u3092\u4e2d\u5fc3\u306bnode\u3092\u53f3\u306b\u56de\u8ee2\n child-&gt;right = node;\n node-&gt;left = grandChild;\n // \u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u3092\u66f4\u65b0\n updateHeight(node);\n updateHeight(child);\n // \u56de\u8ee2\u5f8c\u306e\u90e8\u5206\u6728\u306e\u30eb\u30fc\u30c8\u3092\u8fd4\u3059\n return child;\n}\n</code></pre> avl_tree.java<pre><code>/* \u53f3\u56de\u8ee2\u64cd\u4f5c */\nTreeNode rightRotate(TreeNode node) {\n TreeNode child = node.left;\n TreeNode grandChild = child.right;\n // child \u3092\u8ef8\u3068\u3057\u3066 node \u3092\u53f3\u306b\u56de\u8ee2\n child.right = node;\n node.left = grandChild;\n // \u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u3092\u66f4\u65b0\n updateHeight(node);\n updateHeight(child);\n // \u56de\u8ee2\u5f8c\u306e\u90e8\u5206\u6728\u306e\u6839\u3092\u8fd4\u3059\n return child;\n}\n</code></pre> avl_tree.cs<pre><code>[class]{AVLTree}-[func]{RightRotate}\n</code></pre> avl_tree.go<pre><code>[class]{aVLTree}-[func]{rightRotate}\n</code></pre> avl_tree.swift<pre><code>[class]{AVLTree}-[func]{rightRotate}\n</code></pre> avl_tree.js<pre><code>[class]{AVLTree}-[func]{rightRotate}\n</code></pre> avl_tree.ts<pre><code>[class]{AVLTree}-[func]{rightRotate}\n</code></pre> avl_tree.dart<pre><code>[class]{AVLTree}-[func]{rightRotate}\n</code></pre> avl_tree.rs<pre><code>[class]{AVLTree}-[func]{right_rotate}\n</code></pre> avl_tree.c<pre><code>[class]{}-[func]{rightRotate}\n</code></pre> avl_tree.kt<pre><code>[class]{AVLTree}-[func]{rightRotate}\n</code></pre> avl_tree.rb<pre><code>[class]{AVLTree}-[func]{right_rotate}\n</code></pre>"},{"location":"chapter_tree/avl_tree/#2_1","title":"2. \u00a0 \u5de6\u56de\u8ee2","text":"<p>\u5bfe\u5fdc\u3057\u3066\u3001\u4e0a\u8a18\u306e\u4e0d\u5e73\u8861\u4e8c\u5206\u6728\u306e\u300c\u93e1\u50cf\u300d\u3092\u8003\u616e\u3059\u308b\u3068\u3001\u4e0b\u56f3\u306b\u793a\u3059\u300c\u5de6\u56de\u8ee2\u300d\u64cd\u4f5c\u3092\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</p> <p></p> <p> \u56f3 7-28 \u00a0 \u5de6\u56de\u8ee2\u64cd\u4f5c </p> <p>\u540c\u69d8\u306b\u3001\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001<code>child</code>\u30ce\u30fc\u30c9\u306b\u5de6\u306e\u5b50\uff08<code>grand_child</code>\u3068\u8868\u8a18\uff09\u304c\u3042\u308b\u5834\u5408\u3001\u5de6\u56de\u8ee2\u3067\u624b\u9806\u3092\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff1a<code>grand_child</code>\u3092<code>node</code>\u306e\u53f3\u306e\u5b50\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 7-29 \u00a0 grand_child\u304c\u3042\u308b\u5de6\u56de\u8ee2 </p> <p>**\u53f3\u56de\u8ee2\u3068\u5de6\u56de\u8ee2\u306e\u64cd\u4f5c\u306f\u8ad6\u7406\u7684\u306b\u5bfe\u79f0\u3067\u3042\u308a\u30012\u3064\u306e\u5bfe\u79f0\u7684\u306a\u4e0d\u5e73\u8861\u30bf\u30a4\u30d7\u3092\u89e3\u6c7a\u3057\u307e\u3059**\u3053\u3068\u304c\u89b3\u5bdf\u3067\u304d\u307e\u3059\u3002\u5bfe\u79f0\u6027\u306b\u57fa\u3065\u3044\u3066\u3001\u53f3\u56de\u8ee2\u306e\u5b9f\u88c5\u30b3\u30fc\u30c9\u3067\u3059\u3079\u3066\u306e<code>left</code>\u3092<code>right</code>\u306b\u3001\u3059\u3079\u3066\u306e<code>right</code>\u3092<code>left</code>\u306b\u7f6e\u304d\u63db\u3048\u308b\u3053\u3068\u3067\u3001\u5de6\u56de\u8ee2\u306e\u5b9f\u88c5\u30b3\u30fc\u30c9\u3092\u5f97\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby avl_tree.py<pre><code>def left_rotate(self, node: TreeNode | None) -&gt; TreeNode | None:\n \"\"\"\u5de6\u56de\u8ee2\u64cd\u4f5c\"\"\"\n child = node.right\n grand_child = child.left\n # child\u3092\u4e2d\u5fc3\u306bnode\u3092\u5de6\u306b\u56de\u8ee2\n child.left = node\n node.right = grand_child\n # \u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u3092\u66f4\u65b0\n self.update_height(node)\n self.update_height(child)\n # \u56de\u8ee2\u5f8c\u306e\u90e8\u5206\u6728\u306e\u30eb\u30fc\u30c8\u3092\u8fd4\u3059\n return child\n</code></pre> avl_tree.cpp<pre><code>/* \u5de6\u56de\u8ee2\u64cd\u4f5c */\nTreeNode *leftRotate(TreeNode *node) {\n TreeNode *child = node-&gt;right;\n TreeNode *grandChild = child-&gt;left;\n // child\u3092\u4e2d\u5fc3\u306bnode\u3092\u5de6\u306b\u56de\u8ee2\n child-&gt;left = node;\n node-&gt;right = grandChild;\n // \u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u3092\u66f4\u65b0\n updateHeight(node);\n updateHeight(child);\n // \u56de\u8ee2\u5f8c\u306e\u90e8\u5206\u6728\u306e\u30eb\u30fc\u30c8\u3092\u8fd4\u3059\n return child;\n}\n</code></pre> avl_tree.java<pre><code>/* \u5de6\u56de\u8ee2\u64cd\u4f5c */\nTreeNode leftRotate(TreeNode node) {\n TreeNode child = node.right;\n TreeNode grandChild = child.left;\n // child \u3092\u8ef8\u3068\u3057\u3066 node \u3092\u5de6\u306b\u56de\u8ee2\n child.left = node;\n node.right = grandChild;\n // \u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u3092\u66f4\u65b0\n updateHeight(node);\n updateHeight(child);\n // \u56de\u8ee2\u5f8c\u306e\u90e8\u5206\u6728\u306e\u6839\u3092\u8fd4\u3059\n return child;\n}\n</code></pre> avl_tree.cs<pre><code>[class]{AVLTree}-[func]{LeftRotate}\n</code></pre> avl_tree.go<pre><code>[class]{aVLTree}-[func]{leftRotate}\n</code></pre> avl_tree.swift<pre><code>[class]{AVLTree}-[func]{leftRotate}\n</code></pre> avl_tree.js<pre><code>[class]{AVLTree}-[func]{leftRotate}\n</code></pre> avl_tree.ts<pre><code>[class]{AVLTree}-[func]{leftRotate}\n</code></pre> avl_tree.dart<pre><code>[class]{AVLTree}-[func]{leftRotate}\n</code></pre> avl_tree.rs<pre><code>[class]{AVLTree}-[func]{left_rotate}\n</code></pre> avl_tree.c<pre><code>[class]{}-[func]{leftRotate}\n</code></pre> avl_tree.kt<pre><code>[class]{AVLTree}-[func]{leftRotate}\n</code></pre> avl_tree.rb<pre><code>[class]{AVLTree}-[func]{left_rotate}\n</code></pre>"},{"location":"chapter_tree/avl_tree/#3","title":"3. \u00a0 \u5de6\u53f3\u56de\u8ee2","text":"<p>\u4e0b\u56f3\u306b\u793a\u3059\u4e0d\u5e73\u8861\u30ce\u30fc\u30c93\u306e\u5834\u5408\u3001\u5de6\u56de\u8ee2\u307e\u305f\u306f\u53f3\u56de\u8ee2\u306e\u3044\u305a\u308c\u304b\u3060\u3051\u3067\u306f\u90e8\u5206\u6728\u306e\u30d0\u30e9\u30f3\u30b9\u3092\u56de\u5fa9\u3067\u304d\u307e\u305b\u3093\u3002\u3053\u306e\u5834\u5408\u3001\u307e\u305a<code>child</code>\u306b\u5bfe\u3057\u3066\u300c\u5de6\u56de\u8ee2\u300d\u3092\u5b9f\u884c\u3057\u3001\u6b21\u306b<code>node</code>\u306b\u5bfe\u3057\u3066\u300c\u53f3\u56de\u8ee2\u300d\u3092\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</p> <p></p> <p> \u56f3 7-30 \u00a0 \u5de6\u53f3\u56de\u8ee2 </p>"},{"location":"chapter_tree/avl_tree/#4","title":"4. \u00a0 \u53f3\u5de6\u56de\u8ee2","text":"<p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u4e0a\u8a18\u306e\u4e0d\u5e73\u8861\u4e8c\u5206\u6728\u306e\u93e1\u50cf\u30b1\u30fc\u30b9\u3067\u306f\u3001\u307e\u305a<code>child</code>\u306b\u5bfe\u3057\u3066\u300c\u53f3\u56de\u8ee2\u300d\u3092\u5b9f\u884c\u3057\u3001\u6b21\u306b<code>node</code>\u306b\u5bfe\u3057\u3066\u300c\u5de6\u56de\u8ee2\u300d\u3092\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</p> <p></p> <p> \u56f3 7-31 \u00a0 \u53f3\u5de6\u56de\u8ee2 </p>"},{"location":"chapter_tree/avl_tree/#5","title":"5. \u00a0 \u56de\u8ee2\u306e\u9078\u629e","text":"<p>\u4e0b\u56f3\u306b\u793a\u30594\u7a2e\u985e\u306e\u4e0d\u5e73\u8861\u306f\u3001\u305d\u308c\u305e\u308c\u4e0a\u8a18\u3067\u8aac\u660e\u3057\u305f\u30b1\u30fc\u30b9\u306b\u5bfe\u5fdc\u3057\u3001\u53f3\u56de\u8ee2\u3001\u5de6\u53f3\u56de\u8ee2\u3001\u53f3\u5de6\u56de\u8ee2\u3001\u5de6\u56de\u8ee2\u304c\u5fc5\u8981\u3067\u3059\u3002</p> <p></p> <p> \u56f3 7-32 \u00a0 AVL\u6728\u306e4\u3064\u306e\u56de\u8ee2\u30b1\u30fc\u30b9 </p> <p>\u4e0b\u8868\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u4e0d\u5e73\u8861\u30ce\u30fc\u30c9\u306e\u5e73\u8861\u56e0\u5b50\u3068\u305d\u306e\u9ad8\u3044\u5074\u306e\u5b50\u306e\u5e73\u8861\u56e0\u5b50\u306e\u7b26\u53f7\u3092\u5224\u65ad\u3059\u308b\u3053\u3068\u3067\u3001\u4e0d\u5e73\u8861\u30ce\u30fc\u30c9\u304c\u4e0a\u8a18\u306e\u3069\u306e\u30b1\u30fc\u30b9\u306b\u5c5e\u3059\u308b\u304b\u3092\u6c7a\u5b9a\u3057\u307e\u3059\u3002</p> <p> \u8868 7-3 \u00a0 4\u3064\u306e\u56de\u8ee2\u30b1\u30fc\u30b9\u306e\u9078\u629e\u6761\u4ef6 </p> \u4e0d\u5e73\u8861\u30ce\u30fc\u30c9\u306e\u5e73\u8861\u56e0\u5b50 \u5b50\u30ce\u30fc\u30c9\u306e\u5e73\u8861\u56e0\u5b50 \u4f7f\u7528\u3059\u308b\u56de\u8ee2\u65b9\u6cd5 \\(&gt; 1\\)\uff08\u5de6\u306b\u50be\u3044\u305f\u6728\uff09 \\(\\geq 0\\) \u53f3\u56de\u8ee2 \\(&gt; 1\\)\uff08\u5de6\u306b\u50be\u3044\u305f\u6728\uff09 \\(&lt;0\\) \u5de6\u56de\u8ee2\u3057\u3066\u304b\u3089\u53f3\u56de\u8ee2 \\(&lt; -1\\)\uff08\u53f3\u306b\u50be\u3044\u305f\u6728\uff09 \\(\\leq 0\\) \u5de6\u56de\u8ee2 \\(&lt; -1\\)\uff08\u53f3\u306b\u50be\u3044\u305f\u6728\uff09 \\(&gt;0\\) \u53f3\u56de\u8ee2\u3057\u3066\u304b\u3089\u5de6\u56de\u8ee2 <p>\u4fbf\u5b9c\u4e0a\u3001\u56de\u8ee2\u64cd\u4f5c\u3092\u95a2\u6570\u306b\u30ab\u30d7\u30bb\u30eb\u5316\u3057\u307e\u3059\u3002\u3053\u306e\u95a2\u6570\u306b\u3088\u308a\u3001\u3055\u307e\u3056\u307e\u306a\u7a2e\u985e\u306e\u4e0d\u5e73\u8861\u306b\u5bfe\u3057\u3066\u56de\u8ee2\u3092\u5b9f\u884c\u3057\u3001\u4e0d\u5e73\u8861\u30ce\u30fc\u30c9\u306e\u30d0\u30e9\u30f3\u30b9\u3092\u56de\u5fa9\u3067\u304d\u307e\u3059\u3002\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby avl_tree.py<pre><code>def rotate(self, node: TreeNode | None) -&gt; TreeNode | None:\n \"\"\"\u56de\u8ee2\u64cd\u4f5c\u3092\u5b9f\u884c\u3057\u3066\u90e8\u5206\u6728\u306e\u30d0\u30e9\u30f3\u30b9\u3092\u5fa9\u5143\"\"\"\n # node\u306e\u30d0\u30e9\u30f3\u30b9\u56e0\u5b50\u3092\u53d6\u5f97\n balance_factor = self.balance_factor(node)\n # \u5de6\u504f\u308a\u6728\n if balance_factor &gt; 1:\n if self.balance_factor(node.left) &gt;= 0:\n # \u53f3\u56de\u8ee2\n return self.right_rotate(node)\n else:\n # \u5de6\u56de\u8ee2\u3057\u3066\u304b\u3089\u53f3\u56de\u8ee2\n node.left = self.left_rotate(node.left)\n return self.right_rotate(node)\n # \u53f3\u504f\u308a\u6728\n elif balance_factor &lt; -1:\n if self.balance_factor(node.right) &lt;= 0:\n # \u5de6\u56de\u8ee2\n return self.left_rotate(node)\n else:\n # \u53f3\u56de\u8ee2\u3057\u3066\u304b\u3089\u5de6\u56de\u8ee2\n node.right = self.right_rotate(node.right)\n return self.left_rotate(node)\n # \u30d0\u30e9\u30f3\u30b9\u306e\u53d6\u308c\u305f\u6728\u3001\u56de\u8ee2\u4e0d\u8981\u3001\u623b\u308b\n return node\n</code></pre> avl_tree.cpp<pre><code>/* \u56de\u8ee2\u64cd\u4f5c\u3092\u5b9f\u884c\u3057\u3066\u90e8\u5206\u6728\u306e\u5e73\u8861\u3092\u56de\u5fa9 */\nTreeNode *rotate(TreeNode *node) {\n // node\u306e\u5e73\u8861\u56e0\u5b50\u3092\u53d6\u5f97\n int _balanceFactor = balanceFactor(node);\n // \u5de6\u306b\u50be\u3044\u305f\u6728\n if (_balanceFactor &gt; 1) {\n if (balanceFactor(node-&gt;left) &gt;= 0) {\n // \u53f3\u56de\u8ee2\n return rightRotate(node);\n } else {\n // \u5148\u306b\u5de6\u56de\u8ee2\u3001\u305d\u306e\u5f8c\u53f3\u56de\u8ee2\n node-&gt;left = leftRotate(node-&gt;left);\n return rightRotate(node);\n }\n }\n // \u53f3\u306b\u50be\u3044\u305f\u6728\n if (_balanceFactor &lt; -1) {\n if (balanceFactor(node-&gt;right) &lt;= 0) {\n // \u5de6\u56de\u8ee2\n return leftRotate(node);\n } else {\n // \u5148\u306b\u53f3\u56de\u8ee2\u3001\u305d\u306e\u5f8c\u5de6\u56de\u8ee2\n node-&gt;right = rightRotate(node-&gt;right);\n return leftRotate(node);\n }\n }\n // \u5e73\u8861\u306a\u6728\u3001\u56de\u8ee2\u4e0d\u8981\u3001\u305d\u306e\u307e\u307e\u623b\u308b\n return node;\n}\n</code></pre> avl_tree.java<pre><code>/* \u56de\u8ee2\u64cd\u4f5c\u3092\u5b9f\u884c\u3057\u3066\u90e8\u5206\u6728\u306e\u5e73\u8861\u3092\u56de\u5fa9 */\nTreeNode rotate(TreeNode node) {\n // node \u306e\u5e73\u8861\u56e0\u5b50\u3092\u53d6\u5f97\n int balanceFactor = balanceFactor(node);\n // \u5de6\u50be\u659c\u306e\u6728\n if (balanceFactor &gt; 1) {\n if (balanceFactor(node.left) &gt;= 0) {\n // \u53f3\u56de\u8ee2\n return rightRotate(node);\n } else {\n // \u5148\u306b\u5de6\u56de\u8ee2\u3001\u305d\u306e\u5f8c\u53f3\u56de\u8ee2\n node.left = leftRotate(node.left);\n return rightRotate(node);\n }\n }\n // \u53f3\u50be\u659c\u306e\u6728\n if (balanceFactor &lt; -1) {\n if (balanceFactor(node.right) &lt;= 0) {\n // \u5de6\u56de\u8ee2\n return leftRotate(node);\n } else {\n // \u5148\u306b\u53f3\u56de\u8ee2\u3001\u305d\u306e\u5f8c\u5de6\u56de\u8ee2\n node.right = rightRotate(node.right);\n return leftRotate(node);\n }\n }\n // \u5e73\u8861\u6728\u3001\u56de\u8ee2\u306f\u4e0d\u8981\u3001\u623b\u308b\n return node;\n}\n</code></pre> avl_tree.cs<pre><code>[class]{AVLTree}-[func]{Rotate}\n</code></pre> avl_tree.go<pre><code>[class]{aVLTree}-[func]{rotate}\n</code></pre> avl_tree.swift<pre><code>[class]{AVLTree}-[func]{rotate}\n</code></pre> avl_tree.js<pre><code>[class]{AVLTree}-[func]{rotate}\n</code></pre> avl_tree.ts<pre><code>[class]{AVLTree}-[func]{rotate}\n</code></pre> avl_tree.dart<pre><code>[class]{AVLTree}-[func]{rotate}\n</code></pre> avl_tree.rs<pre><code>[class]{AVLTree}-[func]{rotate}\n</code></pre> avl_tree.c<pre><code>[class]{}-[func]{rotate}\n</code></pre> avl_tree.kt<pre><code>[class]{AVLTree}-[func]{rotate}\n</code></pre> avl_tree.rb<pre><code>[class]{AVLTree}-[func]{rotate}\n</code></pre>"},{"location":"chapter_tree/avl_tree/#753-avl","title":"7.5.3 \u00a0 AVL\u6728\u306e\u4e00\u822c\u7684\u306a\u64cd\u4f5c","text":""},{"location":"chapter_tree/avl_tree/#1_2","title":"1. \u00a0 \u30ce\u30fc\u30c9\u306e\u633f\u5165","text":"<p>AVL\u6728\u306e\u30ce\u30fc\u30c9\u633f\u5165\u64cd\u4f5c\u306f\u4e8c\u5206\u63a2\u7d22\u6728\u306e\u305d\u308c\u3068\u4f3c\u3066\u3044\u307e\u3059\u3002\u552f\u4e00\u306e\u9055\u3044\u306f\u3001AVL\u6728\u3067\u30ce\u30fc\u30c9\u3092\u633f\u5165\u3057\u305f\u5f8c\u3001\u305d\u306e\u30ce\u30fc\u30c9\u304b\u3089\u6839\u30ce\u30fc\u30c9\u307e\u3067\u306e\u30d1\u30b9\u4e0a\u306b\u4e00\u9023\u306e\u4e0d\u5e73\u8861\u30ce\u30fc\u30c9\u304c\u73fe\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u3053\u3068\u3067\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u3053\u306e\u30ce\u30fc\u30c9\u304b\u3089\u59cb\u3081\u3066\u4e0a\u5411\u304d\u306b\u56de\u8ee2\u64cd\u4f5c\u3092\u5b9f\u884c\u3057\u3001\u3059\u3079\u3066\u306e\u4e0d\u5e73\u8861\u30ce\u30fc\u30c9\u306e\u30d0\u30e9\u30f3\u30b9\u3092\u56de\u5fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby avl_tree.py<pre><code>def insert(self, val):\n \"\"\"\u30ce\u30fc\u30c9\u3092\u633f\u5165\"\"\"\n self._root = self.insert_helper(self._root, val)\n\ndef insert_helper(self, node: TreeNode | None, val: int) -&gt; TreeNode:\n \"\"\"\u518d\u5e30\u7684\u306b\u30ce\u30fc\u30c9\u3092\u633f\u5165\uff08\u30d8\u30eb\u30d1\u30fc\u30e1\u30bd\u30c3\u30c9\uff09\"\"\"\n if node is None:\n return TreeNode(val)\n # 1. \u633f\u5165\u4f4d\u7f6e\u3092\u898b\u3064\u3051\u3066\u30ce\u30fc\u30c9\u3092\u633f\u5165\n if val &lt; node.val:\n node.left = self.insert_helper(node.left, val)\n elif val &gt; node.val:\n node.right = self.insert_helper(node.right, val)\n else:\n # \u91cd\u8907\u30ce\u30fc\u30c9\u306f\u633f\u5165\u3057\u306a\u3044\u3001\u623b\u308b\n return node\n # \u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u3092\u66f4\u65b0\n self.update_height(node)\n # 2. \u56de\u8ee2\u64cd\u4f5c\u3092\u5b9f\u884c\u3057\u3066\u90e8\u5206\u6728\u306e\u30d0\u30e9\u30f3\u30b9\u3092\u5fa9\u5143\n return self.rotate(node)\n</code></pre> avl_tree.cpp<pre><code>/* \u30ce\u30fc\u30c9\u3092\u633f\u5165 */\nvoid insert(int val) {\n root = insertHelper(root, val);\n}\n\n/* \u30ce\u30fc\u30c9\u3092\u518d\u5e30\u7684\u306b\u633f\u5165\uff08\u30d8\u30eb\u30d1\u30fc\u30e1\u30bd\u30c3\u30c9\uff09 */\nTreeNode *insertHelper(TreeNode *node, int val) {\n if (node == nullptr)\n return new TreeNode(val);\n /* 1. \u633f\u5165\u4f4d\u7f6e\u3092\u898b\u3064\u3051\u3066\u30ce\u30fc\u30c9\u3092\u633f\u5165 */\n if (val &lt; node-&gt;val)\n node-&gt;left = insertHelper(node-&gt;left, val);\n else if (val &gt; node-&gt;val)\n node-&gt;right = insertHelper(node-&gt;right, val);\n else\n return node; // \u91cd\u8907\u30ce\u30fc\u30c9\u306f\u633f\u5165\u3057\u306a\u3044\u3001\u305d\u306e\u307e\u307e\u623b\u308b\n updateHeight(node); // \u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u3092\u66f4\u65b0\n /* 2. \u56de\u8ee2\u64cd\u4f5c\u3092\u5b9f\u884c\u3057\u3066\u90e8\u5206\u6728\u306e\u5e73\u8861\u3092\u56de\u5fa9 */\n node = rotate(node);\n // \u90e8\u5206\u6728\u306e\u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u3092\u8fd4\u3059\n return node;\n}\n</code></pre> avl_tree.java<pre><code>/* \u30ce\u30fc\u30c9\u3092\u633f\u5165 */\nvoid insert(int val) {\n root = insertHelper(root, val);\n}\n\n/* \u518d\u5e30\u7684\u306b\u30ce\u30fc\u30c9\u3092\u633f\u5165\uff08\u88dc\u52a9\u30e1\u30bd\u30c3\u30c9\uff09 */\nTreeNode insertHelper(TreeNode node, int val) {\n if (node == null)\n return new TreeNode(val);\n /* 1. \u633f\u5165\u4f4d\u7f6e\u3092\u898b\u3064\u3051\u3066\u30ce\u30fc\u30c9\u3092\u633f\u5165 */\n if (val &lt; node.val)\n node.left = insertHelper(node.left, val);\n else if (val &gt; node.val)\n node.right = insertHelper(node.right, val);\n else\n return node; // \u91cd\u8907\u30ce\u30fc\u30c9\u306f\u633f\u5165\u3057\u306a\u3044\u3001\u623b\u308b\n updateHeight(node); // \u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u3092\u66f4\u65b0\n /* 2. \u56de\u8ee2\u64cd\u4f5c\u3092\u5b9f\u884c\u3057\u3066\u90e8\u5206\u6728\u306e\u5e73\u8861\u3092\u56de\u5fa9 */\n node = rotate(node);\n // \u90e8\u5206\u6728\u306e\u6839\u30ce\u30fc\u30c9\u3092\u8fd4\u3059\n return node;\n}\n</code></pre> avl_tree.cs<pre><code>[class]{AVLTree}-[func]{Insert}\n\n[class]{AVLTree}-[func]{InsertHelper}\n</code></pre> avl_tree.go<pre><code>[class]{aVLTree}-[func]{insert}\n\n[class]{aVLTree}-[func]{insertHelper}\n</code></pre> avl_tree.swift<pre><code>[class]{AVLTree}-[func]{insert}\n\n[class]{AVLTree}-[func]{insertHelper}\n</code></pre> avl_tree.js<pre><code>[class]{AVLTree}-[func]{insert}\n\n[class]{AVLTree}-[func]{insertHelper}\n</code></pre> avl_tree.ts<pre><code>[class]{AVLTree}-[func]{insert}\n\n[class]{AVLTree}-[func]{insertHelper}\n</code></pre> avl_tree.dart<pre><code>[class]{AVLTree}-[func]{insert}\n\n[class]{AVLTree}-[func]{insertHelper}\n</code></pre> avl_tree.rs<pre><code>[class]{AVLTree}-[func]{insert}\n\n[class]{AVLTree}-[func]{insert_helper}\n</code></pre> avl_tree.c<pre><code>[class]{AVLTree}-[func]{insert}\n\n[class]{}-[func]{insertHelper}\n</code></pre> avl_tree.kt<pre><code>[class]{AVLTree}-[func]{insert}\n\n[class]{AVLTree}-[func]{insertHelper}\n</code></pre> avl_tree.rb<pre><code>[class]{AVLTree}-[func]{insert}\n\n[class]{AVLTree}-[func]{insert_helper}\n</code></pre>"},{"location":"chapter_tree/avl_tree/#2_2","title":"2. \u00a0 \u30ce\u30fc\u30c9\u306e\u524a\u9664","text":"<p>\u540c\u69d8\u306b\u3001\u4e8c\u5206\u63a2\u7d22\u6728\u3067\u306e\u30ce\u30fc\u30c9\u524a\u9664\u65b9\u6cd5\u306b\u57fa\u3065\u3044\u3066\u3001\u4e0b\u304b\u3089\u4e0a\u3078\u56de\u8ee2\u64cd\u4f5c\u3092\u5b9f\u884c\u3057\u3066\u3059\u3079\u3066\u306e\u4e0d\u5e73\u8861\u30ce\u30fc\u30c9\u306e\u30d0\u30e9\u30f3\u30b9\u3092\u56de\u5fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby avl_tree.py<pre><code>def remove(self, val: int):\n \"\"\"\u30ce\u30fc\u30c9\u3092\u524a\u9664\"\"\"\n self._root = self.remove_helper(self._root, val)\n\ndef remove_helper(self, node: TreeNode | None, val: int) -&gt; TreeNode | None:\n \"\"\"\u518d\u5e30\u7684\u306b\u30ce\u30fc\u30c9\u3092\u524a\u9664\uff08\u30d8\u30eb\u30d1\u30fc\u30e1\u30bd\u30c3\u30c9\uff09\"\"\"\n if node is None:\n return None\n # 1. \u30ce\u30fc\u30c9\u3092\u898b\u3064\u3051\u3066\u524a\u9664\n if val &lt; node.val:\n node.left = self.remove_helper(node.left, val)\n elif val &gt; node.val:\n node.right = self.remove_helper(node.right, val)\n else:\n if node.left is None or node.right is None:\n child = node.left or node.right\n # \u5b50\u30ce\u30fc\u30c9\u6570 = 0\u3001\u30ce\u30fc\u30c9\u3092\u524a\u9664\u3057\u3066\u623b\u308b\n if child is None:\n return None\n # \u5b50\u30ce\u30fc\u30c9\u6570 = 1\u3001\u30ce\u30fc\u30c9\u3092\u524a\u9664\n else:\n node = child\n else:\n # \u5b50\u30ce\u30fc\u30c9\u6570 = 2\u3001\u4e2d\u9806\u8d70\u67fb\u306e\u6b21\u306e\u30ce\u30fc\u30c9\u3092\u524a\u9664\u3057\u3001\u305d\u308c\u3067\u73fe\u5728\u306e\u30ce\u30fc\u30c9\u3092\u7f6e\u304d\u63db\u3048\n temp = node.right\n while temp.left is not None:\n temp = temp.left\n node.right = self.remove_helper(node.right, temp.val)\n node.val = temp.val\n # \u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u3092\u66f4\u65b0\n self.update_height(node)\n # 2. \u56de\u8ee2\u64cd\u4f5c\u3092\u5b9f\u884c\u3057\u3066\u90e8\u5206\u6728\u306e\u30d0\u30e9\u30f3\u30b9\u3092\u5fa9\u5143\n return self.rotate(node)\n</code></pre> avl_tree.cpp<pre><code>/* \u30ce\u30fc\u30c9\u3092\u524a\u9664 */\nvoid remove(int val) {\n root = removeHelper(root, val);\n}\n\n/* \u30ce\u30fc\u30c9\u3092\u518d\u5e30\u7684\u306b\u524a\u9664\uff08\u30d8\u30eb\u30d1\u30fc\u30e1\u30bd\u30c3\u30c9\uff09 */\nTreeNode *removeHelper(TreeNode *node, int val) {\n if (node == nullptr)\n return nullptr;\n /* 1. \u30ce\u30fc\u30c9\u3092\u898b\u3064\u3051\u3066\u524a\u9664 */\n if (val &lt; node-&gt;val)\n node-&gt;left = removeHelper(node-&gt;left, val);\n else if (val &gt; node-&gt;val)\n node-&gt;right = removeHelper(node-&gt;right, val);\n else {\n if (node-&gt;left == nullptr || node-&gt;right == nullptr) {\n TreeNode *child = node-&gt;left != nullptr ? node-&gt;left : node-&gt;right;\n // \u5b50\u30ce\u30fc\u30c9\u6570 = 0\u3001\u30ce\u30fc\u30c9\u3092\u524a\u9664\u3057\u3066\u623b\u308b\n if (child == nullptr) {\n delete node;\n return nullptr;\n }\n // \u5b50\u30ce\u30fc\u30c9\u6570 = 1\u3001\u30ce\u30fc\u30c9\u3092\u524a\u9664\n else {\n delete node;\n node = child;\n }\n } else {\n // \u5b50\u30ce\u30fc\u30c9\u6570 = 2\u3001\u4e2d\u9806\u8d70\u67fb\u306e\u6b21\u306e\u30ce\u30fc\u30c9\u3092\u524a\u9664\u3057\u3001\u73fe\u5728\u306e\u30ce\u30fc\u30c9\u3068\u7f6e\u304d\u63db\u3048\u308b\n TreeNode *temp = node-&gt;right;\n while (temp-&gt;left != nullptr) {\n temp = temp-&gt;left;\n }\n int tempVal = temp-&gt;val;\n node-&gt;right = removeHelper(node-&gt;right, temp-&gt;val);\n node-&gt;val = tempVal;\n }\n }\n updateHeight(node); // \u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u3092\u66f4\u65b0\n /* 2. \u56de\u8ee2\u64cd\u4f5c\u3092\u5b9f\u884c\u3057\u3066\u90e8\u5206\u6728\u306e\u5e73\u8861\u3092\u56de\u5fa9 */\n node = rotate(node);\n // \u90e8\u5206\u6728\u306e\u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u3092\u8fd4\u3059\n return node;\n}\n</code></pre> avl_tree.java<pre><code>/* \u30ce\u30fc\u30c9\u3092\u524a\u9664 */\nvoid remove(int val) {\n root = removeHelper(root, val);\n}\n\n/* \u518d\u5e30\u7684\u306b\u30ce\u30fc\u30c9\u3092\u524a\u9664\uff08\u88dc\u52a9\u30e1\u30bd\u30c3\u30c9\uff09 */\nTreeNode removeHelper(TreeNode node, int val) {\n if (node == null)\n return null;\n /* 1. \u30ce\u30fc\u30c9\u3092\u898b\u3064\u3051\u3066\u524a\u9664 */\n if (val &lt; node.val)\n node.left = removeHelper(node.left, val);\n else if (val &gt; node.val)\n node.right = removeHelper(node.right, val);\n else {\n if (node.left == null || node.right == null) {\n TreeNode child = node.left != null ? node.left : node.right;\n // \u5b50\u30ce\u30fc\u30c9\u6570 = 0\u3001\u30ce\u30fc\u30c9\u3092\u524a\u9664\u3057\u3066\u623b\u308b\n if (child == null)\n return null;\n // \u5b50\u30ce\u30fc\u30c9\u6570 = 1\u3001\u30ce\u30fc\u30c9\u3092\u524a\u9664\n else\n node = child;\n } else {\n // \u5b50\u30ce\u30fc\u30c9\u6570 = 2\u3001\u4e2d\u9806\u8d70\u67fb\u306e\u6b21\u306e\u30ce\u30fc\u30c9\u3092\u524a\u9664\u3057\u3001\u73fe\u5728\u306e\u30ce\u30fc\u30c9\u3092\u305d\u308c\u3067\u7f6e\u304d\u63db\u3048\u308b\n TreeNode temp = node.right;\n while (temp.left != null) {\n temp = temp.left;\n }\n node.right = removeHelper(node.right, temp.val);\n node.val = temp.val;\n }\n }\n updateHeight(node); // \u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u3092\u66f4\u65b0\n /* 2. \u56de\u8ee2\u64cd\u4f5c\u3092\u5b9f\u884c\u3057\u3066\u90e8\u5206\u6728\u306e\u5e73\u8861\u3092\u56de\u5fa9 */\n node = rotate(node);\n // \u90e8\u5206\u6728\u306e\u6839\u30ce\u30fc\u30c9\u3092\u8fd4\u3059\n return node;\n}\n</code></pre> avl_tree.cs<pre><code>[class]{AVLTree}-[func]{Remove}\n\n[class]{AVLTree}-[func]{RemoveHelper}\n</code></pre> avl_tree.go<pre><code>[class]{aVLTree}-[func]{remove}\n\n[class]{aVLTree}-[func]{removeHelper}\n</code></pre> avl_tree.swift<pre><code>[class]{AVLTree}-[func]{remove}\n\n[class]{AVLTree}-[func]{removeHelper}\n</code></pre> avl_tree.js<pre><code>[class]{AVLTree}-[func]{remove}\n\n[class]{AVLTree}-[func]{removeHelper}\n</code></pre> avl_tree.ts<pre><code>[class]{AVLTree}-[func]{remove}\n\n[class]{AVLTree}-[func]{removeHelper}\n</code></pre> avl_tree.dart<pre><code>[class]{AVLTree}-[func]{remove}\n\n[class]{AVLTree}-[func]{removeHelper}\n</code></pre> avl_tree.rs<pre><code>[class]{AVLTree}-[func]{remove}\n\n[class]{AVLTree}-[func]{remove_helper}\n</code></pre> avl_tree.c<pre><code>[class]{AVLTree}-[func]{removeItem}\n\n[class]{}-[func]{removeHelper}\n</code></pre> avl_tree.kt<pre><code>[class]{AVLTree}-[func]{remove}\n\n[class]{AVLTree}-[func]{removeHelper}\n</code></pre> avl_tree.rb<pre><code>[class]{AVLTree}-[func]{remove}\n\n[class]{AVLTree}-[func]{remove_helper}\n</code></pre>"},{"location":"chapter_tree/avl_tree/#3_1","title":"3. \u00a0 \u30ce\u30fc\u30c9\u306e\u691c\u7d22","text":"<p>AVL\u6728\u3067\u306e\u30ce\u30fc\u30c9\u691c\u7d22\u64cd\u4f5c\u306f\u4e8c\u5206\u63a2\u7d22\u6728\u306e\u305d\u308c\u3068\u4e00\u81f4\u3057\u3066\u304a\u308a\u3001\u3053\u3053\u3067\u306f\u8a73\u8ff0\u3057\u307e\u305b\u3093\u3002</p>"},{"location":"chapter_tree/avl_tree/#754-avl","title":"7.5.4 \u00a0 AVL\u6728\u306e\u5178\u578b\u7684\u306a\u5fdc\u7528","text":"<ul> <li>\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u306e\u6574\u7406\u3068\u683c\u7d0d\u306b\u4f7f\u7528\u3055\u308c\u3001\u691c\u7d22\u983b\u5ea6\u304c\u9ad8\u304f\u3001\u633f\u5165\u3068\u524a\u9664\u306e\u983b\u5ea6\u304c\u4f4e\u3044\u30b7\u30ca\u30ea\u30aa\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002</li> <li>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30b7\u30b9\u30c6\u30e0\u306e\u69cb\u7bc9\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002</li> <li>\u8d64\u9ed2\u6728\u3082\u4e00\u822c\u7684\u306a\u5e73\u8861\u4e8c\u5206\u63a2\u7d22\u6728\u306e\u4e00\u7a2e\u3067\u3059\u3002AVL\u6728\u3068\u6bd4\u8f03\u3057\u3066\u3001\u8d64\u9ed2\u6728\u306f\u3088\u308a\u7de9\u3044\u5e73\u8861\u6761\u4ef6\u3092\u6301\u3061\u3001\u30ce\u30fc\u30c9\u306e\u633f\u5165\u3068\u524a\u9664\u306b\u304b\u304b\u308b\u56de\u8ee2\u6570\u304c\u5c11\u306a\u304f\u3001\u30ce\u30fc\u30c9\u306e\u8ffd\u52a0\u3068\u524a\u9664\u64cd\u4f5c\u306e\u5e73\u5747\u52b9\u7387\u304c\u9ad8\u304f\u306a\u308a\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_tree/binary_search_tree/","title":"7.4 \u00a0 \u4e8c\u5206\u63a2\u7d22\u6728","text":"<p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u4e8c\u5206\u63a2\u7d22\u6728\u306f\u4ee5\u4e0b\u306e\u6761\u4ef6\u3092\u6e80\u305f\u3057\u307e\u3059\u3002</p> <ol> <li>\u6839\u30ce\u30fc\u30c9\u306b\u3064\u3044\u3066\u3001\u5de6\u90e8\u5206\u6728\u306e\u3059\u3079\u3066\u306e\u30ce\u30fc\u30c9\u306e\u5024 \\(&lt;\\) \u6839\u30ce\u30fc\u30c9\u306e\u5024 \\(&lt;\\) \u53f3\u90e8\u5206\u6728\u306e\u3059\u3079\u3066\u306e\u30ce\u30fc\u30c9\u306e\u5024\u3002</li> <li>\u4efb\u610f\u306e\u30ce\u30fc\u30c9\u306e\u5de6\u3068\u53f3\u306e\u90e8\u5206\u6728\u3082\u4e8c\u5206\u63a2\u7d22\u6728\u3067\u3059\u3002\u3064\u307e\u308a\u3001\u6761\u4ef6<code>1.</code>\u3082\u6e80\u305f\u3057\u307e\u3059\u3002</li> </ol> <p></p> <p> \u56f3 7-16 \u00a0 \u4e8c\u5206\u63a2\u7d22\u6728 </p>"},{"location":"chapter_tree/binary_search_tree/#741","title":"7.4.1 \u00a0 \u4e8c\u5206\u63a2\u7d22\u6728\u306e\u64cd\u4f5c","text":"<p>\u4e8c\u5206\u63a2\u7d22\u6728\u3092\u30af\u30e9\u30b9<code>BinarySearchTree</code>\u3068\u3057\u3066\u30ab\u30d7\u30bb\u30eb\u5316\u3057\u3001\u6728\u306e\u6839\u30ce\u30fc\u30c9\u3092\u6307\u3059\u30e1\u30f3\u30d0\u30fc\u5909\u6570<code>root</code>\u3092\u5ba3\u8a00\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_tree/binary_search_tree/#1","title":"1. \u00a0 \u30ce\u30fc\u30c9\u306e\u691c\u7d22","text":"<p>\u30bf\u30fc\u30b2\u30c3\u30c8\u30ce\u30fc\u30c9\u5024<code>num</code>\u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u3001\u4e8c\u5206\u63a2\u7d22\u6728\u306e\u6027\u8cea\u306b\u5f93\u3063\u3066\u691c\u7d22\u3067\u304d\u307e\u3059\u3002\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u30ce\u30fc\u30c9<code>cur</code>\u3092\u5ba3\u8a00\u3057\u3001\u4e8c\u5206\u6728\u306e\u6839\u30ce\u30fc\u30c9<code>root</code>\u304b\u3089\u958b\u59cb\u3057\u3001\u30ce\u30fc\u30c9\u5024<code>cur.val</code>\u3068<code>num</code>\u306e\u30b5\u30a4\u30ba\u3092\u6bd4\u8f03\u3059\u308b\u30eb\u30fc\u30d7\u3092\u884c\u3044\u307e\u3059\u3002</p> <ul> <li><code>cur.val &lt; num</code>\u306e\u5834\u5408\u3001\u30bf\u30fc\u30b2\u30c3\u30c8\u30ce\u30fc\u30c9\u306f<code>cur</code>\u306e\u53f3\u90e8\u5206\u6728\u306b\u3042\u308b\u3053\u3068\u3092\u610f\u5473\u3059\u308b\u305f\u3081\u3001<code>cur = cur.right</code>\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002</li> <li><code>cur.val &gt; num</code>\u306e\u5834\u5408\u3001\u30bf\u30fc\u30b2\u30c3\u30c8\u30ce\u30fc\u30c9\u306f<code>cur</code>\u306e\u5de6\u90e8\u5206\u6728\u306b\u3042\u308b\u3053\u3068\u3092\u610f\u5473\u3059\u308b\u305f\u3081\u3001<code>cur = cur.left</code>\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002</li> <li><code>cur.val = num</code>\u306e\u5834\u5408\u3001\u30bf\u30fc\u30b2\u30c3\u30c8\u30ce\u30fc\u30c9\u304c\u898b\u3064\u304b\u3063\u305f\u3053\u3068\u3092\u610f\u5473\u3059\u308b\u305f\u3081\u3001\u30eb\u30fc\u30d7\u3092\u7d42\u4e86\u3057\u3066\u30ce\u30fc\u30c9\u3092\u8fd4\u3057\u307e\u3059\u3002</li> </ul> &lt;1&gt;&lt;2&gt;&lt;3&gt;&lt;4&gt; <p></p> <p></p> <p></p> <p></p> <p> \u56f3 7-17 \u00a0 \u4e8c\u5206\u63a2\u7d22\u6728\u3067\u306e\u30ce\u30fc\u30c9\u691c\u7d22\u4f8b </p> <p>\u4e8c\u5206\u63a2\u7d22\u6728\u3067\u306e\u691c\u7d22\u64cd\u4f5c\u306f\u4e8c\u5206\u63a2\u7d22\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3068\u540c\u3058\u539f\u7406\u3067\u52d5\u4f5c\u3057\u3001\u5404\u30e9\u30a6\u30f3\u30c9\u3067\u30b1\u30fc\u30b9\u306e\u534a\u5206\u3092\u6392\u9664\u3057\u307e\u3059\u3002\u30eb\u30fc\u30d7\u6570\u306f\u6700\u5927\u3067\u4e8c\u5206\u6728\u306e\u9ad8\u3055\u3067\u3059\u3002\u4e8c\u5206\u6728\u304c\u5e73\u8861\u3057\u3066\u3044\u308b\u5834\u5408\u3001\\(O(\\log n)\\)\u306e\u6642\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u30b3\u30fc\u30c9\u4f8b\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby binary_search_tree.py<pre><code>def search(self, num: int) -&gt; TreeNode | None:\n \"\"\"\u30ce\u30fc\u30c9\u3092\u63a2\u7d22\"\"\"\n cur = self._root\n # \u30eb\u30fc\u30d7\u3067\u63a2\u7d22\u3001\u8449\u30ce\u30fc\u30c9\u3092\u901a\u904e\u3057\u305f\u5f8c\u306b\u30d6\u30ec\u30fc\u30af\n while cur is not None:\n # \u30bf\u30fc\u30b2\u30c3\u30c8\u30ce\u30fc\u30c9\u306fcur\u306e\u53f3\u90e8\u5206\u6728\u306b\u3042\u308b\n if cur.val &lt; num:\n cur = cur.right\n # \u30bf\u30fc\u30b2\u30c3\u30c8\u30ce\u30fc\u30c9\u306fcur\u306e\u5de6\u90e8\u5206\u6728\u306b\u3042\u308b\n elif cur.val &gt; num:\n cur = cur.left\n # \u30bf\u30fc\u30b2\u30c3\u30c8\u30ce\u30fc\u30c9\u3092\u767a\u898b\u3001\u30eb\u30fc\u30d7\u3092\u30d6\u30ec\u30fc\u30af\n else:\n break\n return cur\n</code></pre> binary_search_tree.cpp<pre><code>/* \u30ce\u30fc\u30c9\u3092\u691c\u7d22 */\nTreeNode *search(int num) {\n TreeNode *cur = root;\n // \u30eb\u30fc\u30d7\u3067\u691c\u7d22\u3001\u8449\u30ce\u30fc\u30c9\u3092\u901a\u308a\u904e\u304e\u305f\u3089\u7d42\u4e86\n while (cur != nullptr) {\n // \u76ee\u6a19\u30ce\u30fc\u30c9\u306fcur\u306e\u53f3\u90e8\u5206\u6728\u306b\u3042\u308b\n if (cur-&gt;val &lt; num)\n cur = cur-&gt;right;\n // \u76ee\u6a19\u30ce\u30fc\u30c9\u306fcur\u306e\u5de6\u90e8\u5206\u6728\u306b\u3042\u308b\n else if (cur-&gt;val &gt; num)\n cur = cur-&gt;left;\n // \u76ee\u6a19\u30ce\u30fc\u30c9\u3092\u898b\u3064\u3051\u305f\u3001\u30eb\u30fc\u30d7\u3092\u629c\u3051\u308b\n else\n break;\n }\n // \u76ee\u6a19\u30ce\u30fc\u30c9\u3092\u8fd4\u3059\n return cur;\n}\n</code></pre> binary_search_tree.java<pre><code>/* \u30ce\u30fc\u30c9\u3092\u691c\u7d22 */\nTreeNode search(int num) {\n TreeNode cur = root;\n // \u30eb\u30fc\u30d7\u3067\u691c\u7d22\u3001\u8449\u30ce\u30fc\u30c9\u3092\u901a\u904e\u5f8c\u306b\u7d42\u4e86\n while (cur != null) {\n // \u5bfe\u8c61\u30ce\u30fc\u30c9\u306f cur \u306e\u53f3\u90e8\u5206\u6728\u306b\u3042\u308b\n if (cur.val &lt; num)\n cur = cur.right;\n // \u5bfe\u8c61\u30ce\u30fc\u30c9\u306f cur \u306e\u5de6\u90e8\u5206\u6728\u306b\u3042\u308b\n else if (cur.val &gt; num)\n cur = cur.left;\n // \u5bfe\u8c61\u30ce\u30fc\u30c9\u3092\u898b\u3064\u3051\u305f\u3001\u30eb\u30fc\u30d7\u3092\u7d42\u4e86\n else\n break;\n }\n // \u5bfe\u8c61\u30ce\u30fc\u30c9\u3092\u8fd4\u3059\n return cur;\n}\n</code></pre> binary_search_tree.cs<pre><code>[class]{BinarySearchTree}-[func]{Search}\n</code></pre> binary_search_tree.go<pre><code>[class]{binarySearchTree}-[func]{search}\n</code></pre> binary_search_tree.swift<pre><code>[class]{BinarySearchTree}-[func]{search}\n</code></pre> binary_search_tree.js<pre><code>[class]{BinarySearchTree}-[func]{search}\n</code></pre> binary_search_tree.ts<pre><code>[class]{BinarySearchTree}-[func]{search}\n</code></pre> binary_search_tree.dart<pre><code>[class]{BinarySearchTree}-[func]{search}\n</code></pre> binary_search_tree.rs<pre><code>[class]{BinarySearchTree}-[func]{search}\n</code></pre> binary_search_tree.c<pre><code>[class]{BinarySearchTree}-[func]{search}\n</code></pre> binary_search_tree.kt<pre><code>[class]{BinarySearchTree}-[func]{search}\n</code></pre> binary_search_tree.rb<pre><code>[class]{BinarySearchTree}-[func]{search}\n</code></pre>"},{"location":"chapter_tree/binary_search_tree/#2","title":"2. \u00a0 \u30ce\u30fc\u30c9\u306e\u633f\u5165","text":"<p>\u633f\u5165\u3059\u308b\u8981\u7d20<code>num</code>\u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u3001\u4e8c\u5206\u63a2\u7d22\u6728\u306e\u6027\u8cea\u300c\u5de6\u90e8\u5206\u6728 &lt; \u6839\u30ce\u30fc\u30c9 &lt; \u53f3\u90e8\u5206\u6728\u300d\u3092\u7dad\u6301\u3059\u308b\u305f\u3081\u3001\u633f\u5165\u64cd\u4f5c\u306f\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u9032\u884c\u3057\u307e\u3059\u3002</p> <ol> <li>\u633f\u5165\u4f4d\u7f6e\u3092\u898b\u3064\u3051\u308b: \u691c\u7d22\u64cd\u4f5c\u3068\u540c\u69d8\u306b\u3001\u6839\u30ce\u30fc\u30c9\u304b\u3089\u958b\u59cb\u3057\u3001\u73fe\u5728\u306e\u30ce\u30fc\u30c9\u5024\u3068<code>num</code>\u306e\u30b5\u30a4\u30ba\u95a2\u4fc2\u306b\u5f93\u3063\u3066\u4e0b\u5411\u304d\u306b\u30eb\u30fc\u30d7\u3057\u3001\u8449\u30ce\u30fc\u30c9\u3092\u901a\u904e\uff08<code>None</code>\u306b\u8d70\u67fb\uff09\u3059\u308b\u307e\u3067\u3001\u30eb\u30fc\u30d7\u3092\u7d42\u4e86\u3057\u307e\u3059\u3002</li> <li>\u3053\u306e\u4f4d\u7f6e\u306b\u30ce\u30fc\u30c9\u3092\u633f\u5165: \u30ce\u30fc\u30c9<code>num</code>\u3092\u521d\u671f\u5316\u3057\u3001<code>None</code>\u304c\u3042\u3063\u305f\u5834\u6240\u306b\u914d\u7f6e\u3057\u307e\u3059\u3002</li> </ol> <p></p> <p> \u56f3 7-18 \u00a0 \u4e8c\u5206\u63a2\u7d22\u6728\u3078\u306e\u30ce\u30fc\u30c9\u633f\u5165 </p> <p>\u30b3\u30fc\u30c9\u5b9f\u88c5\u3067\u306f\u3001\u4ee5\u4e0b\u306e2\u70b9\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <ul> <li>\u4e8c\u5206\u63a2\u7d22\u6728\u306f\u91cd\u8907\u30ce\u30fc\u30c9\u306e\u5b58\u5728\u3092\u8a31\u53ef\u3057\u307e\u305b\u3093\u3002\u305d\u3046\u3067\u306a\u3051\u308c\u3070\u3001\u305d\u306e\u5b9a\u7fa9\u306b\u9055\u53cd\u3057\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u633f\u5165\u3059\u308b\u30ce\u30fc\u30c9\u304c\u65e2\u306b\u6728\u306b\u5b58\u5728\u3059\u308b\u5834\u5408\u3001\u633f\u5165\u306f\u5b9f\u884c\u3055\u308c\u305a\u3001\u30ce\u30fc\u30c9\u306f\u76f4\u63a5\u623b\u308a\u307e\u3059\u3002</li> <li>\u633f\u5165\u64cd\u4f5c\u3092\u5b9f\u884c\u3059\u308b\u306b\u306f\u3001\u524d\u306e\u30eb\u30fc\u30d7\u304b\u3089\u306e\u30ce\u30fc\u30c9\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306b\u30ce\u30fc\u30c9<code>pre</code>\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u3088\u3046\u306b\u3057\u3066\u3001<code>None</code>\u306b\u8d70\u67fb\u3057\u305f\u3068\u304d\u306b\u3001\u305d\u306e\u89aa\u30ce\u30fc\u30c9\u3092\u53d6\u5f97\u3067\u304d\u3001\u30ce\u30fc\u30c9\u633f\u5165\u64cd\u4f5c\u3092\u5b8c\u4e86\u3067\u304d\u307e\u3059\u3002</li> </ul> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby binary_search_tree.py<pre><code>def insert(self, num: int):\n \"\"\"\u30ce\u30fc\u30c9\u3092\u633f\u5165\"\"\"\n # \u6728\u304c\u7a7a\u306e\u5834\u5408\u3001\u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u3092\u521d\u671f\u5316\n if self._root is None:\n self._root = TreeNode(num)\n return\n # \u30eb\u30fc\u30d7\u3067\u63a2\u7d22\u3001\u8449\u30ce\u30fc\u30c9\u3092\u901a\u904e\u3057\u305f\u5f8c\u306b\u30d6\u30ec\u30fc\u30af\n cur, pre = self._root, None\n while cur is not None:\n # \u91cd\u8907\u30ce\u30fc\u30c9\u3092\u767a\u898b\u3057\u305f\u305f\u3081\u3001\u623b\u308b\n if cur.val == num:\n return\n pre = cur\n # \u633f\u5165\u4f4d\u7f6e\u306fcur\u306e\u53f3\u90e8\u5206\u6728\u306b\u3042\u308b\n if cur.val &lt; num:\n cur = cur.right\n # \u633f\u5165\u4f4d\u7f6e\u306fcur\u306e\u5de6\u90e8\u5206\u6728\u306b\u3042\u308b\n else:\n cur = cur.left\n # \u30ce\u30fc\u30c9\u3092\u633f\u5165\n node = TreeNode(num)\n if pre.val &lt; num:\n pre.right = node\n else:\n pre.left = node\n</code></pre> binary_search_tree.cpp<pre><code>/* \u30ce\u30fc\u30c9\u3092\u633f\u5165 */\nvoid insert(int num) {\n // \u6728\u304c\u7a7a\u306e\u5834\u5408\u3001\u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u3092\u521d\u671f\u5316\n if (root == nullptr) {\n root = new TreeNode(num);\n return;\n }\n TreeNode *cur = root, *pre = nullptr;\n // \u30eb\u30fc\u30d7\u3067\u691c\u7d22\u3001\u8449\u30ce\u30fc\u30c9\u3092\u901a\u308a\u904e\u304e\u305f\u3089\u7d42\u4e86\n while (cur != nullptr) {\n // \u91cd\u8907\u30ce\u30fc\u30c9\u3092\u898b\u3064\u3051\u305f\u5834\u5408\u3001\u623b\u308b\n if (cur-&gt;val == num)\n return;\n pre = cur;\n // \u633f\u5165\u4f4d\u7f6e\u306fcur\u306e\u53f3\u90e8\u5206\u6728\u306b\u3042\u308b\n if (cur-&gt;val &lt; num)\n cur = cur-&gt;right;\n // \u633f\u5165\u4f4d\u7f6e\u306fcur\u306e\u5de6\u90e8\u5206\u6728\u306b\u3042\u308b\n else\n cur = cur-&gt;left;\n }\n // \u30ce\u30fc\u30c9\u3092\u633f\u5165\n TreeNode *node = new TreeNode(num);\n if (pre-&gt;val &lt; num)\n pre-&gt;right = node;\n else\n pre-&gt;left = node;\n}\n</code></pre> binary_search_tree.java<pre><code>/* \u30ce\u30fc\u30c9\u3092\u633f\u5165 */\nvoid insert(int num) {\n // \u6728\u304c\u7a7a\u306e\u5834\u5408\u3001\u6839\u30ce\u30fc\u30c9\u3092\u521d\u671f\u5316\n if (root == null) {\n root = new TreeNode(num);\n return;\n }\n TreeNode cur = root, pre = null;\n // \u30eb\u30fc\u30d7\u3067\u691c\u7d22\u3001\u8449\u30ce\u30fc\u30c9\u3092\u901a\u904e\u5f8c\u306b\u7d42\u4e86\n while (cur != null) {\n // \u91cd\u8907\u30ce\u30fc\u30c9\u3092\u898b\u3064\u3051\u305f\u5834\u5408\u3001\u623b\u308b\n if (cur.val == num)\n return;\n pre = cur;\n // \u633f\u5165\u4f4d\u7f6e\u306f cur \u306e\u53f3\u90e8\u5206\u6728\u306b\u3042\u308b\n if (cur.val &lt; num)\n cur = cur.right;\n // \u633f\u5165\u4f4d\u7f6e\u306f cur \u306e\u5de6\u90e8\u5206\u6728\u306b\u3042\u308b\n else\n cur = cur.left;\n }\n // \u30ce\u30fc\u30c9\u3092\u633f\u5165\n TreeNode node = new TreeNode(num);\n if (pre.val &lt; num)\n pre.right = node;\n else\n pre.left = node;\n}\n</code></pre> binary_search_tree.cs<pre><code>[class]{BinarySearchTree}-[func]{Insert}\n</code></pre> binary_search_tree.go<pre><code>[class]{binarySearchTree}-[func]{insert}\n</code></pre> binary_search_tree.swift<pre><code>[class]{BinarySearchTree}-[func]{insert}\n</code></pre> binary_search_tree.js<pre><code>[class]{BinarySearchTree}-[func]{insert}\n</code></pre> binary_search_tree.ts<pre><code>[class]{BinarySearchTree}-[func]{insert}\n</code></pre> binary_search_tree.dart<pre><code>[class]{BinarySearchTree}-[func]{insert}\n</code></pre> binary_search_tree.rs<pre><code>[class]{BinarySearchTree}-[func]{insert}\n</code></pre> binary_search_tree.c<pre><code>[class]{BinarySearchTree}-[func]{insert}\n</code></pre> binary_search_tree.kt<pre><code>[class]{BinarySearchTree}-[func]{insert}\n</code></pre> binary_search_tree.rb<pre><code>[class]{BinarySearchTree}-[func]{insert}\n</code></pre> <p>\u30ce\u30fc\u30c9\u306e\u691c\u7d22\u3068\u540c\u69d8\u306b\u3001\u30ce\u30fc\u30c9\u306e\u633f\u5165\u306b\u306f\\(O(\\log n)\\)\u306e\u6642\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</p>"},{"location":"chapter_tree/binary_search_tree/#3","title":"3. \u00a0 \u30ce\u30fc\u30c9\u306e\u524a\u9664","text":"<p>\u307e\u305a\u3001\u4e8c\u5206\u6728\u3067\u30bf\u30fc\u30b2\u30c3\u30c8\u30ce\u30fc\u30c9\u3092\u898b\u3064\u3051\u3001\u305d\u308c\u3092\u524a\u9664\u3057\u307e\u3059\u3002\u30ce\u30fc\u30c9\u306e\u633f\u5165\u3068\u540c\u69d8\u306b\u3001\u524a\u9664\u64cd\u4f5c\u304c\u5b8c\u4e86\u3057\u305f\u5f8c\u3082\u3001\u4e8c\u5206\u63a2\u7d22\u6728\u306e\u6027\u8cea\u300c\u5de6\u90e8\u5206\u6728 &lt; \u6839\u30ce\u30fc\u30c9 &lt; \u53f3\u90e8\u5206\u6728\u300d\u304c\u6e80\u305f\u3055\u308c\u308b\u3053\u3068\u3092\u4fdd\u8a3c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30bf\u30fc\u30b2\u30c3\u30c8\u30ce\u30fc\u30c9\u306e\u5b50\u30ce\u30fc\u30c9\u6570\u306b\u57fa\u3065\u3044\u3066\u30010\u30011\u30012\u306e3\u3064\u306e\u30b1\u30fc\u30b9\u306b\u5206\u3051\u3001\u5bfe\u5fdc\u3059\u308b\u30ce\u30fc\u30c9\u524a\u9664\u64cd\u4f5c\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002</p> <p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u524a\u9664\u3059\u308b\u30ce\u30fc\u30c9\u306e\u6b21\u6570\u304c\\(0\\)\u306e\u5834\u5408\u3001\u305d\u306e\u30ce\u30fc\u30c9\u306f\u8449\u30ce\u30fc\u30c9\u3067\u3042\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u3001\u76f4\u63a5\u524a\u9664\u3067\u304d\u307e\u3059\u3002</p> <p></p> <p> \u56f3 7-19 \u00a0 \u4e8c\u5206\u63a2\u7d22\u6728\u3067\u306e\u30ce\u30fc\u30c9\u524a\u9664\uff08\u6b21\u65700\uff09 </p> <p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u524a\u9664\u3059\u308b\u30ce\u30fc\u30c9\u306e\u6b21\u6570\u304c\\(1\\)\u306e\u5834\u5408\u3001\u524a\u9664\u3059\u308b\u30ce\u30fc\u30c9\u3092\u305d\u306e\u5b50\u30ce\u30fc\u30c9\u3067\u7f6e\u304d\u63db\u3048\u308b\u3060\u3051\u3067\u5341\u5206\u3067\u3059\u3002</p> <p></p> <p> \u56f3 7-20 \u00a0 \u4e8c\u5206\u63a2\u7d22\u6728\u3067\u306e\u30ce\u30fc\u30c9\u524a\u9664\uff08\u6b21\u65701\uff09 </p> <p>\u524a\u9664\u3059\u308b\u30ce\u30fc\u30c9\u306e\u6b21\u6570\u304c\\(2\\)\u306e\u5834\u5408\u3001\u76f4\u63a5\u524a\u9664\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u304c\u3001\u30ce\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u3066\u7f6e\u304d\u63db\u3048\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4e8c\u5206\u63a2\u7d22\u6728\u306e\u6027\u8cea\u300c\u5de6\u90e8\u5206\u6728 \\(&lt;\\) \u6839\u30ce\u30fc\u30c9 \\(&lt;\\) \u53f3\u90e8\u5206\u6728\u300d\u3092\u7dad\u6301\u3059\u308b\u305f\u3081\u3001\u3053\u306e\u30ce\u30fc\u30c9\u306f\u53f3\u90e8\u5206\u6728\u306e\u6700\u5c0f\u30ce\u30fc\u30c9\u307e\u305f\u306f\u5de6\u90e8\u5206\u6728\u306e\u6700\u5927\u30ce\u30fc\u30c9\u306e\u3044\u305a\u308c\u304b\u3067\u3059\u3002</p> <p>\u53f3\u90e8\u5206\u6728\u306e\u6700\u5c0f\u30ce\u30fc\u30c9\uff08\u4e2d\u9806\u8d70\u67fb\u3067\u306e\u6b21\u306e\u30ce\u30fc\u30c9\uff09\u3092\u9078\u629e\u3059\u308b\u3068\u4eee\u5b9a\u3059\u308b\u3068\u3001\u524a\u9664\u64cd\u4f5c\u306f\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u9032\u884c\u3057\u307e\u3059\u3002</p> <ol> <li>\u524a\u9664\u3059\u308b\u30ce\u30fc\u30c9\u306e\u300c\u4e2d\u9806\u8d70\u67fb\u30b7\u30fc\u30b1\u30f3\u30b9\u300d\u3067\u306e\u6b21\u306e\u30ce\u30fc\u30c9\u3092\u898b\u3064\u3051\u3001<code>tmp</code>\u3068\u3057\u3066\u793a\u3057\u307e\u3059\u3002</li> <li>\u524a\u9664\u3059\u308b\u30ce\u30fc\u30c9\u306e\u5024\u3092<code>tmp</code>\u306e\u5024\u3067\u7f6e\u304d\u63db\u3048\u3001\u6728\u5185\u3067\u30ce\u30fc\u30c9<code>tmp</code>\u3092\u518d\u5e30\u7684\u306b\u524a\u9664\u3057\u307e\u3059\u3002</li> </ol> &lt;1&gt;&lt;2&gt;&lt;3&gt;&lt;4&gt; <p></p> <p></p> <p></p> <p></p> <p> \u56f3 7-21 \u00a0 \u4e8c\u5206\u63a2\u7d22\u6728\u3067\u306e\u30ce\u30fc\u30c9\u524a\u9664\uff08\u6b21\u65702\uff09 </p> <p>\u30ce\u30fc\u30c9\u3092\u524a\u9664\u3059\u308b\u64cd\u4f5c\u3082\\(O(\\log n)\\)\u306e\u6642\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u524a\u9664\u3059\u308b\u30ce\u30fc\u30c9\u3092\u898b\u3064\u3051\u308b\u306e\u306b\\(O(\\log n)\\)\u306e\u6642\u9593\u304c\u5fc5\u8981\u3067\u3001\u4e2d\u9806\u8d70\u67fb\u306e\u5f8c\u7d99\u30ce\u30fc\u30c9\u3092\u53d6\u5f97\u3059\u308b\u306e\u306b\\(O(\\log n)\\)\u306e\u6642\u9593\u304c\u5fc5\u8981\u3067\u3059\u3002\u30b3\u30fc\u30c9\u4f8b\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby binary_search_tree.py<pre><code>def remove(self, num: int):\n \"\"\"\u30ce\u30fc\u30c9\u3092\u524a\u9664\"\"\"\n # \u6728\u304c\u7a7a\u306e\u5834\u5408\u3001\u623b\u308b\n if self._root is None:\n return\n # \u30eb\u30fc\u30d7\u3067\u63a2\u7d22\u3001\u8449\u30ce\u30fc\u30c9\u3092\u901a\u904e\u3057\u305f\u5f8c\u306b\u30d6\u30ec\u30fc\u30af\n cur, pre = self._root, None\n while cur is not None:\n # \u524a\u9664\u3059\u308b\u30ce\u30fc\u30c9\u3092\u767a\u898b\u3001\u30eb\u30fc\u30d7\u3092\u30d6\u30ec\u30fc\u30af\n if cur.val == num:\n break\n pre = cur\n # \u524a\u9664\u3059\u308b\u30ce\u30fc\u30c9\u306fcur\u306e\u53f3\u90e8\u5206\u6728\u306b\u3042\u308b\n if cur.val &lt; num:\n cur = cur.right\n # \u524a\u9664\u3059\u308b\u30ce\u30fc\u30c9\u306fcur\u306e\u5de6\u90e8\u5206\u6728\u306b\u3042\u308b\n else:\n cur = cur.left\n # \u524a\u9664\u3059\u308b\u30ce\u30fc\u30c9\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u3001\u623b\u308b\n if cur is None:\n return\n\n # \u5b50\u30ce\u30fc\u30c9\u6570 = 0 \u307e\u305f\u306f 1\n if cur.left is None or cur.right is None:\n # \u5b50\u30ce\u30fc\u30c9\u6570 = 0/1\u306e\u5834\u5408\u3001child = null/\u305d\u306e\u5b50\u30ce\u30fc\u30c9\n child = cur.left or cur.right\n # \u30ce\u30fc\u30c9cur\u3092\u524a\u9664\n if cur != self._root:\n if pre.left == cur:\n pre.left = child\n else:\n pre.right = child\n else:\n # \u524a\u9664\u3055\u308c\u308b\u30ce\u30fc\u30c9\u304c\u30eb\u30fc\u30c8\u306e\u5834\u5408\u3001\u30eb\u30fc\u30c8\u3092\u518d\u5272\u308a\u5f53\u3066\n self._root = child\n # \u5b50\u30ce\u30fc\u30c9\u6570 = 2\n else:\n # cur\u306e\u4e2d\u9806\u8d70\u67fb\u306e\u6b21\u306e\u30ce\u30fc\u30c9\u3092\u53d6\u5f97\n tmp: TreeNode = cur.right\n while tmp.left is not None:\n tmp = tmp.left\n # \u518d\u5e30\u7684\u306b\u30ce\u30fc\u30c9tmp\u3092\u524a\u9664\n self.remove(tmp.val)\n # cur\u3092tmp\u3067\u7f6e\u304d\u63db\u3048\n cur.val = tmp.val\n</code></pre> binary_search_tree.cpp<pre><code>/* \u30ce\u30fc\u30c9\u3092\u524a\u9664 */\nvoid remove(int num) {\n // \u6728\u304c\u7a7a\u306e\u5834\u5408\u3001\u623b\u308b\n if (root == nullptr)\n return;\n TreeNode *cur = root, *pre = nullptr;\n // \u30eb\u30fc\u30d7\u3067\u691c\u7d22\u3001\u8449\u30ce\u30fc\u30c9\u3092\u901a\u308a\u904e\u304e\u305f\u3089\u7d42\u4e86\n while (cur != nullptr) {\n // \u524a\u9664\u3059\u308b\u30ce\u30fc\u30c9\u3092\u898b\u3064\u3051\u305f\u3001\u30eb\u30fc\u30d7\u3092\u629c\u3051\u308b\n if (cur-&gt;val == num)\n break;\n pre = cur;\n // \u524a\u9664\u3059\u308b\u30ce\u30fc\u30c9\u306fcur\u306e\u53f3\u90e8\u5206\u6728\u306b\u3042\u308b\n if (cur-&gt;val &lt; num)\n cur = cur-&gt;right;\n // \u524a\u9664\u3059\u308b\u30ce\u30fc\u30c9\u306fcur\u306e\u5de6\u90e8\u5206\u6728\u306b\u3042\u308b\n else\n cur = cur-&gt;left;\n }\n // \u524a\u9664\u3059\u308b\u30ce\u30fc\u30c9\u304c\u306a\u3044\u5834\u5408\u3001\u623b\u308b\n if (cur == nullptr)\n return;\n // \u5b50\u30ce\u30fc\u30c9\u6570 = 0 \u307e\u305f\u306f 1\n if (cur-&gt;left == nullptr || cur-&gt;right == nullptr) {\n // \u5b50\u30ce\u30fc\u30c9\u6570 = 0 / 1\u306e\u5834\u5408\u3001child = nullptr / \u305d\u306e\u5b50\u30ce\u30fc\u30c9\n TreeNode *child = cur-&gt;left != nullptr ? cur-&gt;left : cur-&gt;right;\n // \u30ce\u30fc\u30c9cur\u3092\u524a\u9664\n if (cur != root) {\n if (pre-&gt;left == cur)\n pre-&gt;left = child;\n else\n pre-&gt;right = child;\n } else {\n // \u524a\u9664\u3055\u308c\u308b\u30ce\u30fc\u30c9\u304c\u30eb\u30fc\u30c8\u306e\u5834\u5408\u3001\u30eb\u30fc\u30c8\u3092\u518d\u5272\u308a\u5f53\u3066\n root = child;\n }\n // \u30e1\u30e2\u30ea\u3092\u89e3\u653e\n delete cur;\n }\n // \u5b50\u30ce\u30fc\u30c9\u6570 = 2\n else {\n // cur\u306e\u4e2d\u9806\u8d70\u67fb\u306e\u6b21\u306e\u30ce\u30fc\u30c9\u3092\u53d6\u5f97\n TreeNode *tmp = cur-&gt;right;\n while (tmp-&gt;left != nullptr) {\n tmp = tmp-&gt;left;\n }\n int tmpVal = tmp-&gt;val;\n // \u30ce\u30fc\u30c9tmp\u3092\u518d\u5e30\u7684\u306b\u524a\u9664\n remove(tmp-&gt;val);\n // cur\u3092tmp\u3067\u7f6e\u304d\u63db\u3048\n cur-&gt;val = tmpVal;\n }\n}\n</code></pre> binary_search_tree.java<pre><code>/* \u30ce\u30fc\u30c9\u3092\u524a\u9664 */\nvoid remove(int num) {\n // \u6728\u304c\u7a7a\u306e\u5834\u5408\u3001\u623b\u308b\n if (root == null)\n return;\n TreeNode cur = root, pre = null;\n // \u30eb\u30fc\u30d7\u3067\u691c\u7d22\u3001\u8449\u30ce\u30fc\u30c9\u3092\u901a\u904e\u5f8c\u306b\u7d42\u4e86\n while (cur != null) {\n // \u524a\u9664\u3059\u308b\u30ce\u30fc\u30c9\u3092\u898b\u3064\u3051\u305f\u3001\u30eb\u30fc\u30d7\u3092\u7d42\u4e86\n if (cur.val == num)\n break;\n pre = cur;\n // \u524a\u9664\u3059\u308b\u30ce\u30fc\u30c9\u306f cur \u306e\u53f3\u90e8\u5206\u6728\u306b\u3042\u308b\n if (cur.val &lt; num)\n cur = cur.right;\n // \u524a\u9664\u3059\u308b\u30ce\u30fc\u30c9\u306f cur \u306e\u5de6\u90e8\u5206\u6728\u306b\u3042\u308b\n else\n cur = cur.left;\n }\n // \u524a\u9664\u3059\u308b\u30ce\u30fc\u30c9\u304c\u306a\u3044\u5834\u5408\u3001\u623b\u308b\n if (cur == null)\n return;\n // \u5b50\u30ce\u30fc\u30c9\u6570 = 0 \u307e\u305f\u306f 1\n if (cur.left == null || cur.right == null) {\n // \u5b50\u30ce\u30fc\u30c9\u6570 = 0/1 \u306e\u5834\u5408\u3001child = null/\u305d\u306e\u5b50\u30ce\u30fc\u30c9\n TreeNode child = cur.left != null ? cur.left : cur.right;\n // \u30ce\u30fc\u30c9 cur \u3092\u524a\u9664\n if (cur != root) {\n if (pre.left == cur)\n pre.left = child;\n else\n pre.right = child;\n } else {\n // \u524a\u9664\u3055\u308c\u308b\u30ce\u30fc\u30c9\u304c\u6839\u306e\u5834\u5408\u3001\u6839\u3092\u518d\u5272\u308a\u5f53\u3066\n root = child;\n }\n }\n // \u5b50\u30ce\u30fc\u30c9\u6570 = 2\n else {\n // cur \u306e\u4e2d\u9806\u8d70\u67fb\u306e\u6b21\u306e\u30ce\u30fc\u30c9\u3092\u53d6\u5f97\n TreeNode tmp = cur.right;\n while (tmp.left != null) {\n tmp = tmp.left;\n }\n // \u518d\u5e30\u7684\u306b\u30ce\u30fc\u30c9 tmp \u3092\u524a\u9664\n remove(tmp.val);\n // cur \u3092 tmp \u3067\u7f6e\u304d\u63db\u3048\u308b\n cur.val = tmp.val;\n }\n}\n</code></pre> binary_search_tree.cs<pre><code>[class]{BinarySearchTree}-[func]{Remove}\n</code></pre> binary_search_tree.go<pre><code>[class]{binarySearchTree}-[func]{remove}\n</code></pre> binary_search_tree.swift<pre><code>[class]{BinarySearchTree}-[func]{remove}\n</code></pre> binary_search_tree.js<pre><code>[class]{BinarySearchTree}-[func]{remove}\n</code></pre> binary_search_tree.ts<pre><code>[class]{BinarySearchTree}-[func]{remove}\n</code></pre> binary_search_tree.dart<pre><code>[class]{BinarySearchTree}-[func]{remove}\n</code></pre> binary_search_tree.rs<pre><code>[class]{BinarySearchTree}-[func]{remove}\n</code></pre> binary_search_tree.c<pre><code>[class]{BinarySearchTree}-[func]{removeItem}\n</code></pre> binary_search_tree.kt<pre><code>[class]{BinarySearchTree}-[func]{remove}\n</code></pre> binary_search_tree.rb<pre><code>[class]{BinarySearchTree}-[func]{remove}\n</code></pre>"},{"location":"chapter_tree/binary_search_tree/#4","title":"4. \u00a0 \u4e2d\u9806\u8d70\u67fb\u306f\u9806\u5e8f\u4ed8\u3051\u3055\u308c\u3066\u3044\u308b","text":"<p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u4e8c\u5206\u6728\u306e\u4e2d\u9806\u8d70\u67fb\u306f\u300c\u5de6 \\(\\rightarrow\\) \u6839 \\(\\rightarrow\\) \u53f3\u300d\u306e\u8d70\u67fb\u9806\u5e8f\u306b\u5f93\u3044\u3001\u4e8c\u5206\u63a2\u7d22\u6728\u306f\u300c\u5de6\u5b50\u30ce\u30fc\u30c9 \\(&lt;\\) \u6839\u30ce\u30fc\u30c9 \\(&lt;\\) \u53f3\u5b50\u30ce\u30fc\u30c9\u300d\u306e\u30b5\u30a4\u30ba\u95a2\u4fc2\u3092\u6e80\u305f\u3057\u307e\u3059\u3002</p> <p>\u3053\u308c\u306f\u3001\u4e8c\u5206\u63a2\u7d22\u6728\u3067\u4e2d\u9806\u8d70\u67fb\u3092\u5b9f\u884c\u3059\u308b\u3068\u304d\u306b\u3001\u5e38\u306b\u6b21\u306b\u5c0f\u3055\u3044\u30ce\u30fc\u30c9\u304c\u6700\u521d\u306b\u8d70\u67fb\u3055\u308c\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u3001\u91cd\u8981\u306a\u6027\u8cea\u306b\u3064\u306a\u304c\u308a\u307e\u3059\uff1a\u4e8c\u5206\u63a2\u7d22\u6728\u306e\u4e2d\u9806\u8d70\u67fb\u306e\u30b7\u30fc\u30b1\u30f3\u30b9\u306f\u6607\u9806\u3067\u3059\u3002</p> <p>\u4e2d\u9806\u8d70\u67fb\u306e\u6607\u9806\u6027\u8cea\u3092\u4f7f\u7528\u3057\u3066\u3001\u4e8c\u5206\u63a2\u7d22\u6728\u3067\u9806\u5e8f\u4ed8\u3051\u3055\u308c\u305f\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3059\u308b\u306b\u306f\\(O(n)\\)\u306e\u6642\u9593\u306e\u307f\u304c\u5fc5\u8981\u3067\u3001\u8ffd\u52a0\u306e\u30bd\u30fc\u30c8\u64cd\u4f5c\u306f\u4e0d\u8981\u3067\u3042\u308a\u3001\u975e\u5e38\u306b\u52b9\u7387\u7684\u3067\u3059\u3002</p> <p></p> <p> \u56f3 7-22 \u00a0 \u4e8c\u5206\u63a2\u7d22\u6728\u306e\u4e2d\u9806\u8d70\u67fb\u30b7\u30fc\u30b1\u30f3\u30b9 </p>"},{"location":"chapter_tree/binary_search_tree/#742","title":"7.4.2 \u00a0 \u4e8c\u5206\u63a2\u7d22\u6728\u306e\u52b9\u7387","text":"<p>\u30c7\u30fc\u30bf\u306e\u30bb\u30c3\u30c8\u304c\u4e0e\u3048\u3089\u308c\u305f\u5834\u5408\u3001\u914d\u5217\u307e\u305f\u306f\u4e8c\u5206\u63a2\u7d22\u6728\u3092\u4f7f\u7528\u3057\u3066\u683c\u7d0d\u3059\u308b\u3053\u3068\u3092\u691c\u8a0e\u3057\u307e\u3059\u3002\u4e0b\u306e\u8868\u3092\u89b3\u5bdf\u3059\u308b\u3068\u3001\u4e8c\u5206\u63a2\u7d22\u6728\u306e\u3059\u3079\u3066\u306e\u64cd\u4f5c\u306f\u5bfe\u6570\u6642\u9593\u8a08\u7b97\u91cf\u3092\u6301\u3061\u3001\u5b89\u5b9a\u3057\u3066\u52b9\u7387\u7684\u3067\u3059\u3002\u914d\u5217\u306f\u3001\u983b\u7e41\u306a\u8ffd\u52a0\u3068\u691c\u7d22\u3084\u524a\u9664\u306e\u983b\u5ea6\u304c\u5c11\u306a\u3044\u30b7\u30ca\u30ea\u30aa\u3067\u306e\u307f\u3001\u4e8c\u5206\u63a2\u7d22\u6728\u3088\u308a\u3082\u52b9\u7387\u7684\u3067\u3059\u3002</p> <p> \u8868 7-2 \u00a0 \u914d\u5217\u3068\u63a2\u7d22\u6728\u306e\u52b9\u7387\u6bd4\u8f03 </p> \u672a\u30bd\u30fc\u30c8\u914d\u5217 \u4e8c\u5206\u63a2\u7d22\u6728 \u8981\u7d20\u306e\u691c\u7d22 \\(O(n)\\) \\(O(\\log n)\\) \u8981\u7d20\u306e\u633f\u5165 \\(O(1)\\) \\(O(\\log n)\\) \u8981\u7d20\u306e\u524a\u9664 \\(O(n)\\) \\(O(\\log n)\\) <p>\u7406\u60f3\u7684\u306b\u306f\u3001\u4e8c\u5206\u63a2\u7d22\u6728\u306f\u300c\u5e73\u8861\u300d\u3057\u3066\u304a\u308a\u3001\u4efb\u610f\u306e\u30ce\u30fc\u30c9\u3092\\(\\log n\\)\u30eb\u30fc\u30d7\u5185\u3067\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</p> <p>\u3057\u304b\u3057\u3001\u4e8c\u5206\u63a2\u7d22\u6728\u3067\u7d99\u7d9a\u7684\u306b\u30ce\u30fc\u30c9\u3092\u633f\u5165\u304a\u3088\u3073\u524a\u9664\u3059\u308b\u3068\u3001\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u9023\u7d50\u30ea\u30b9\u30c8\u306b\u9000\u5316\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u3001\u3055\u307e\u3056\u307e\u306a\u64cd\u4f5c\u306e\u6642\u9593\u8a08\u7b97\u91cf\u3082\\(O(n)\\)\u306b\u60aa\u5316\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 7-23 \u00a0 \u4e8c\u5206\u63a2\u7d22\u6728\u306e\u9000\u5316 </p>"},{"location":"chapter_tree/binary_search_tree/#743","title":"7.4.3 \u00a0 \u4e8c\u5206\u63a2\u7d22\u6728\u306e\u4e00\u822c\u7684\u306a\u5fdc\u7528","text":"<ul> <li>\u30b7\u30b9\u30c6\u30e0\u3067\u306e\u591a\u30ec\u30d9\u30eb\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3068\u3057\u3066\u4f7f\u7528\u3055\u308c\u3001\u52b9\u7387\u7684\u306a\u691c\u7d22\u3001\u633f\u5165\u3001\u524a\u9664\u64cd\u4f5c\u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002</li> <li>\u7279\u5b9a\u306e\u691c\u7d22\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u57fa\u76e4\u3068\u306a\u308b\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u3057\u3066\u6a5f\u80fd\u3057\u307e\u3059\u3002</li> <li>\u30c7\u30fc\u30bf\u30b9\u30c8\u30ea\u30fc\u30e0\u3092\u683c\u7d0d\u3057\u3066\u3001\u305d\u306e\u9806\u5e8f\u4ed8\u3051\u3055\u308c\u305f\u72b6\u614b\u3092\u7dad\u6301\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_tree/binary_tree/","title":"7.1 \u00a0 \u4e8c\u5206\u6728","text":"<p>\u4e8c\u5206\u6728\u306f\u3001\u7956\u5148\u3068\u5b50\u5b6b\u306e\u9593\u306e\u968e\u5c64\u95a2\u4fc2\u3092\u8868\u73fe\u3057\u3001\u300c\u4e8c\u3064\u306b\u5206\u5272\u3059\u308b\u300d\u5206\u5272\u7d71\u6cbb\u6cd5\u306e\u8ad6\u7406\u3092\u4f53\u73fe\u3059\u308b\u975e\u7dda\u5f62\u30c7\u30fc\u30bf\u69cb\u9020\u3067\u3059\u3002\u9023\u7d50\u30ea\u30b9\u30c8\u3068\u540c\u69d8\u306b\u3001\u4e8c\u5206\u6728\u306e\u57fa\u672c\u5358\u4f4d\u306f\u30ce\u30fc\u30c9\u3067\u3042\u308a\u3001\u5404\u30ce\u30fc\u30c9\u306f\u5024\u3001\u5de6\u306e\u5b50\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\u3001\u53f3\u306e\u5b50\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\u3092\u542b\u307f\u307e\u3059\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby <pre><code>class TreeNode:\n \"\"\"\u4e8c\u5206\u6728\u30ce\u30fc\u30c9\"\"\"\n def __init__(self, val: int):\n self.val: int = val # \u30ce\u30fc\u30c9\u5024\n self.left: TreeNode | None = None # \u5de6\u306e\u5b50\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n self.right: TreeNode | None = None # \u53f3\u306e\u5b50\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n</code></pre> <pre><code>/* \u4e8c\u5206\u6728\u30ce\u30fc\u30c9 */\nstruct TreeNode {\n int val; // \u30ce\u30fc\u30c9\u5024\n TreeNode *left; // \u5de6\u306e\u5b50\u30ce\u30fc\u30c9\u3078\u306e\u30dd\u30a4\u30f3\u30bf\n TreeNode *right; // \u53f3\u306e\u5b50\u30ce\u30fc\u30c9\u3078\u306e\u30dd\u30a4\u30f3\u30bf\n TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}\n};\n</code></pre> <pre><code>/* \u4e8c\u5206\u6728\u30ce\u30fc\u30c9 */\nclass TreeNode {\n int val; // \u30ce\u30fc\u30c9\u5024\n TreeNode left; // \u5de6\u306e\u5b50\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n TreeNode right; // \u53f3\u306e\u5b50\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n TreeNode(int x) { val = x; }\n}\n</code></pre> <pre><code>/* \u4e8c\u5206\u6728\u30ce\u30fc\u30c9 */\nclass TreeNode(int? x) {\n public int? val = x; // \u30ce\u30fc\u30c9\u5024\n public TreeNode? left; // \u5de6\u306e\u5b50\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n public TreeNode? right; // \u53f3\u306e\u5b50\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n}\n</code></pre> <pre><code>/* \u4e8c\u5206\u6728\u30ce\u30fc\u30c9 */\ntype TreeNode struct {\n Val int\n Left *TreeNode\n Right *TreeNode\n}\n/* \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf */\nfunc NewTreeNode(v int) *TreeNode {\n return &amp;TreeNode{\n Left: nil, // \u5de6\u306e\u5b50\u30ce\u30fc\u30c9\u3078\u306e\u30dd\u30a4\u30f3\u30bf\n Right: nil, // \u53f3\u306e\u5b50\u30ce\u30fc\u30c9\u3078\u306e\u30dd\u30a4\u30f3\u30bf\n Val: v, // \u30ce\u30fc\u30c9\u5024\n }\n}\n</code></pre> <pre><code>/* \u4e8c\u5206\u6728\u30ce\u30fc\u30c9 */\nclass TreeNode {\n var val: Int // \u30ce\u30fc\u30c9\u5024\n var left: TreeNode? // \u5de6\u306e\u5b50\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n var right: TreeNode? // \u53f3\u306e\u5b50\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n\n init(x: Int) {\n val = x\n }\n}\n</code></pre> <pre><code>/* \u4e8c\u5206\u6728\u30ce\u30fc\u30c9 */\nclass TreeNode {\n val; // \u30ce\u30fc\u30c9\u5024\n left; // \u5de6\u306e\u5b50\u30ce\u30fc\u30c9\u3078\u306e\u30dd\u30a4\u30f3\u30bf\n right; // \u53f3\u306e\u5b50\u30ce\u30fc\u30c9\u3078\u306e\u30dd\u30a4\u30f3\u30bf\n constructor(val, left, right) {\n this.val = val === undefined ? 0 : val;\n this.left = left === undefined ? null : left;\n this.right = right === undefined ? null : right;\n }\n}\n</code></pre> <pre><code>/* \u4e8c\u5206\u6728\u30ce\u30fc\u30c9 */\nclass TreeNode {\n val: number;\n left: TreeNode | null;\n right: TreeNode | null;\n\n constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {\n this.val = val === undefined ? 0 : val; // \u30ce\u30fc\u30c9\u5024\n this.left = left === undefined ? null : left; // \u5de6\u306e\u5b50\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n this.right = right === undefined ? null : right; // \u53f3\u306e\u5b50\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n }\n}\n</code></pre> <pre><code>/* \u4e8c\u5206\u6728\u30ce\u30fc\u30c9 */\nclass TreeNode {\n int val; // \u30ce\u30fc\u30c9\u5024\n TreeNode? left; // \u5de6\u306e\u5b50\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n TreeNode? right; // \u53f3\u306e\u5b50\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n TreeNode(this.val, [this.left, this.right]);\n}\n</code></pre> <pre><code>use std::rc::Rc;\nuse std::cell::RefCell;\n\n/* \u4e8c\u5206\u6728\u30ce\u30fc\u30c9 */\nstruct TreeNode {\n val: i32, // \u30ce\u30fc\u30c9\u5024\n left: Option&lt;Rc&lt;RefCell&lt;TreeNode&gt;&gt;&gt;, // \u5de6\u306e\u5b50\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n right: Option&lt;Rc&lt;RefCell&lt;TreeNode&gt;&gt;&gt;, // \u53f3\u306e\u5b50\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n}\n\nimpl TreeNode {\n /* \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf */\n fn new(val: i32) -&gt; Rc&lt;RefCell&lt;Self&gt;&gt; {\n Rc::new(RefCell::new(Self {\n val,\n left: None,\n right: None\n }))\n }\n}\n</code></pre> <pre><code>/* \u4e8c\u5206\u6728\u30ce\u30fc\u30c9 */\ntypedef struct TreeNode {\n int val; // \u30ce\u30fc\u30c9\u5024\n int height; // \u30ce\u30fc\u30c9\u306e\u9ad8\u3055\n struct TreeNode *left; // \u5de6\u306e\u5b50\u30ce\u30fc\u30c9\u3078\u306e\u30dd\u30a4\u30f3\u30bf\n struct TreeNode *right; // \u53f3\u306e\u5b50\u30ce\u30fc\u30c9\u3078\u306e\u30dd\u30a4\u30f3\u30bf\n} TreeNode;\n\n/* \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf */\nTreeNode *newTreeNode(int val) {\n TreeNode *node;\n\n node = (TreeNode *)malloc(sizeof(TreeNode));\n node-&gt;val = val;\n node-&gt;height = 0;\n node-&gt;left = NULL;\n node-&gt;right = NULL;\n return node;\n}\n</code></pre> <pre><code>/* \u4e8c\u5206\u6728\u30ce\u30fc\u30c9 */\nclass TreeNode(val _val: Int) { // \u30ce\u30fc\u30c9\u5024\n val left: TreeNode? = null // \u5de6\u306e\u5b50\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n val right: TreeNode? = null // \u53f3\u306e\u5b50\u30ce\u30fc\u30c9\u3078\u306e\u53c2\u7167\n}\n</code></pre> <pre><code>\n</code></pre> <p>\u5404\u30ce\u30fc\u30c9\u306f2\u3064\u306e\u53c2\u7167\uff08\u30dd\u30a4\u30f3\u30bf\uff09\u3092\u6301\u3061\u3001\u305d\u308c\u305e\u308c\u5de6\u306e\u5b50\u30ce\u30fc\u30c9\u3068\u53f3\u306e\u5b50\u30ce\u30fc\u30c9\u3092\u6307\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u30ce\u30fc\u30c9\u306f\u3001\u3053\u308c\u30892\u3064\u306e\u5b50\u30ce\u30fc\u30c9\u306e\u89aa\u30ce\u30fc\u30c9\u3068\u547c\u3070\u308c\u307e\u3059\u3002\u4e8c\u5206\u6728\u306e\u30ce\u30fc\u30c9\u304c\u4e0e\u3048\u3089\u308c\u305f\u3068\u304d\u3001\u3053\u306e\u30ce\u30fc\u30c9\u306e\u5de6\u306e\u5b50\u3068\u305d\u306e\u4e0b\u306b\u3042\u308b\u3059\u3079\u3066\u306e\u30ce\u30fc\u30c9\u3067\u5f62\u6210\u3055\u308c\u308b\u6728\u3092\u3001\u3053\u306e\u30ce\u30fc\u30c9\u306e\u5de6\u90e8\u5206\u6728\u3068\u547c\u3073\u307e\u3059\u3002\u540c\u69d8\u306b\u3001\u53f3\u90e8\u5206\u6728\u3082\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002</p> <p>\u4e8c\u5206\u6728\u3067\u306f\u3001\u8449\u30ce\u30fc\u30c9\u3092\u9664\u3044\u3066\u3001\u4ed6\u306e\u3059\u3079\u3066\u306e\u30ce\u30fc\u30c9\u306f\u5b50\u30ce\u30fc\u30c9\u3068\u7a7a\u3067\u306a\u3044\u90e8\u5206\u6728\u3092\u542b\u307f\u307e\u3059\u3002 \u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u300c\u30ce\u30fc\u30c92\u300d\u3092\u89aa\u30ce\u30fc\u30c9\u3068\u3057\u3066\u898b\u308b\u3068\u3001\u305d\u306e\u5de6\u3068\u53f3\u306e\u5b50\u30ce\u30fc\u30c9\u306f\u305d\u308c\u305e\u308c\u300c\u30ce\u30fc\u30c94\u300d\u3068\u300c\u30ce\u30fc\u30c95\u300d\u3067\u3059\u3002\u5de6\u90e8\u5206\u6728\u306f\u300c\u30ce\u30fc\u30c94\u300d\u3068\u305d\u306e\u4e0b\u306b\u3042\u308b\u3059\u3079\u3066\u306e\u30ce\u30fc\u30c9\u3067\u5f62\u6210\u3055\u308c\u3001\u53f3\u90e8\u5206\u6728\u306f\u300c\u30ce\u30fc\u30c95\u300d\u3068\u305d\u306e\u4e0b\u306b\u3042\u308b\u3059\u3079\u3066\u306e\u30ce\u30fc\u30c9\u3067\u5f62\u6210\u3055\u308c\u307e\u3059\u3002</p> <p></p> <p> \u56f3 7-1 \u00a0 \u89aa\u30ce\u30fc\u30c9\u3001\u5b50\u30ce\u30fc\u30c9\u3001\u90e8\u5206\u6728 </p>"},{"location":"chapter_tree/binary_tree/#711","title":"7.1.1 \u00a0 \u4e8c\u5206\u6728\u306e\u4e00\u822c\u7684\u306a\u7528\u8a9e","text":"<p>\u4e8c\u5206\u6728\u3067\u3088\u304f\u4f7f\u7528\u3055\u308c\u308b\u7528\u8a9e\u3092\u4e0b\u56f3\u306b\u793a\u3057\u307e\u3059\u3002</p> <ul> <li>\u6839\u30ce\u30fc\u30c9\uff1a\u4e8c\u5206\u6728\u306e\u6700\u4e0a\u4f4d\u30ec\u30d9\u30eb\u306b\u3042\u308b\u30ce\u30fc\u30c9\u3067\u3001\u89aa\u30ce\u30fc\u30c9\u3092\u6301\u3061\u307e\u305b\u3093\u3002</li> <li>\u8449\u30ce\u30fc\u30c9\uff1a\u5b50\u30ce\u30fc\u30c9\u3092\u6301\u305f\u306a\u3044\u30ce\u30fc\u30c9\u3067\u3001\u4e21\u65b9\u306e\u30dd\u30a4\u30f3\u30bf\u304c<code>None</code>\u3092\u6307\u3057\u3066\u3044\u307e\u3059\u3002</li> <li>\u8fba\uff1a2\u3064\u306e\u30ce\u30fc\u30c9\u3092\u7d50\u3076\u7dda\u5206\u3067\u3001\u30ce\u30fc\u30c9\u9593\u306e\u53c2\u7167\uff08\u30dd\u30a4\u30f3\u30bf\uff09\u3092\u8868\u73fe\u3057\u307e\u3059\u3002</li> <li>\u30ce\u30fc\u30c9\u306e\u30ec\u30d9\u30eb\uff1a\u4e0a\u304b\u3089\u4e0b\u306b\u5411\u304b\u3063\u3066\u5897\u52a0\u3057\u3001\u6839\u30ce\u30fc\u30c9\u304c\u30ec\u30d9\u30eb1\u3067\u3059\u3002</li> <li>\u30ce\u30fc\u30c9\u306e\u6b21\u6570\uff1a\u30ce\u30fc\u30c9\u304c\u6301\u3064\u5b50\u30ce\u30fc\u30c9\u306e\u6570\u3067\u3059\u3002\u4e8c\u5206\u6728\u3067\u306f\u3001\u6b21\u6570\u306f0\u30011\u3001\u307e\u305f\u306f2\u306b\u306a\u308a\u307e\u3059\u3002</li> <li>\u4e8c\u5206\u6728\u306e\u9ad8\u3055\uff1a\u6839\u30ce\u30fc\u30c9\u304b\u3089\u6700\u3082\u9060\u3044\u8449\u30ce\u30fc\u30c9\u307e\u3067\u306e\u8fba\u306e\u6570\u3067\u3059\u3002</li> <li>\u30ce\u30fc\u30c9\u306e\u6df1\u3055\uff1a\u6839\u30ce\u30fc\u30c9\u304b\u3089\u305d\u306e\u30ce\u30fc\u30c9\u307e\u3067\u306e\u8fba\u306e\u6570\u3067\u3059\u3002</li> <li>\u30ce\u30fc\u30c9\u306e\u9ad8\u3055\uff1a\u6700\u3082\u9060\u3044\u8449\u30ce\u30fc\u30c9\u304b\u3089\u305d\u306e\u30ce\u30fc\u30c9\u307e\u3067\u306e\u8fba\u306e\u6570\u3067\u3059\u3002</li> </ul> <p></p> <p> \u56f3 7-2 \u00a0 \u4e8c\u5206\u6728\u306e\u4e00\u822c\u7684\u306a\u7528\u8a9e </p> <p>Tip</p> <p>\u300c\u9ad8\u3055\u300d\u3068\u300c\u6df1\u3055\u300d\u306f\u901a\u5e38\u300c\u901a\u904e\u3059\u308b\u8fba\u306e\u6570\u300d\u3068\u3057\u3066\u5b9a\u7fa9\u3057\u307e\u3059\u304c\u3001\u4e00\u90e8\u306e\u554f\u984c\u3084\u6559\u79d1\u66f8\u3067\u306f\u300c\u901a\u904e\u3059\u308b\u30ce\u30fc\u30c9\u306e\u6570\u300d\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u5834\u5408\u3001\u9ad8\u3055\u3068\u6df1\u3055\u306e\u4e21\u65b9\u30921\u3060\u3051\u5897\u3084\u3059\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</p>"},{"location":"chapter_tree/binary_tree/#712","title":"7.1.2 \u00a0 \u4e8c\u5206\u6728\u306e\u57fa\u672c\u64cd\u4f5c","text":""},{"location":"chapter_tree/binary_tree/#1","title":"1. \u00a0 \u4e8c\u5206\u6728\u306e\u521d\u671f\u5316","text":"<p>\u9023\u7d50\u30ea\u30b9\u30c8\u3068\u540c\u69d8\u306b\u3001\u4e8c\u5206\u6728\u306e\u521d\u671f\u5316\u3067\u306f\u3001\u307e\u305a\u30ce\u30fc\u30c9\u3092\u4f5c\u6210\u3057\u3001\u6b21\u306b\u305d\u308c\u3089\u306e\u9593\u306e\u53c2\u7167\uff08\u30dd\u30a4\u30f3\u30bf\uff09\u3092\u78ba\u7acb\u3057\u307e\u3059\u3002</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby binary_tree.py<pre><code># \u4e8c\u5206\u6728\u306e\u521d\u671f\u5316\n# \u30ce\u30fc\u30c9\u306e\u521d\u671f\u5316\nn1 = TreeNode(val=1)\nn2 = TreeNode(val=2)\nn3 = TreeNode(val=3)\nn4 = TreeNode(val=4)\nn5 = TreeNode(val=5)\n# \u30ce\u30fc\u30c9\u9593\u306e\u53c2\u7167\uff08\u30dd\u30a4\u30f3\u30bf\uff09\u3092\u7d50\u3076\nn1.left = n2\nn1.right = n3\nn2.left = n4\nn2.right = n5\n</code></pre> binary_tree.cpp<pre><code>/* \u4e8c\u5206\u6728\u306e\u521d\u671f\u5316 */\n// \u30ce\u30fc\u30c9\u306e\u521d\u671f\u5316\nTreeNode* n1 = new TreeNode(1);\nTreeNode* n2 = new TreeNode(2);\nTreeNode* n3 = new TreeNode(3);\nTreeNode* n4 = new TreeNode(4);\nTreeNode* n5 = new TreeNode(5);\n// \u30ce\u30fc\u30c9\u9593\u306e\u53c2\u7167\uff08\u30dd\u30a4\u30f3\u30bf\uff09\u3092\u7d50\u3076\nn1-&gt;left = n2;\nn1-&gt;right = n3;\nn2-&gt;left = n4;\nn2-&gt;right = n5;\n</code></pre> binary_tree.java<pre><code>// \u30ce\u30fc\u30c9\u306e\u521d\u671f\u5316\nTreeNode n1 = new TreeNode(1);\nTreeNode n2 = new TreeNode(2);\nTreeNode n3 = new TreeNode(3);\nTreeNode n4 = new TreeNode(4);\nTreeNode n5 = new TreeNode(5);\n// \u30ce\u30fc\u30c9\u9593\u306e\u53c2\u7167\uff08\u30dd\u30a4\u30f3\u30bf\uff09\u3092\u7d50\u3076\nn1.left = n2;\nn1.right = n3;\nn2.left = n4;\nn2.right = n5;\n</code></pre> binary_tree.cs<pre><code>/* \u4e8c\u5206\u6728\u306e\u521d\u671f\u5316 */\n// \u30ce\u30fc\u30c9\u306e\u521d\u671f\u5316\nTreeNode n1 = new(1);\nTreeNode n2 = new(2);\nTreeNode n3 = new(3);\nTreeNode n4 = new(4);\nTreeNode n5 = new(5);\n// \u30ce\u30fc\u30c9\u9593\u306e\u53c2\u7167\uff08\u30dd\u30a4\u30f3\u30bf\uff09\u3092\u7d50\u3076\nn1.left = n2;\nn1.right = n3;\nn2.left = n4;\nn2.right = n5;\n</code></pre> binary_tree.go<pre><code>/* \u4e8c\u5206\u6728\u306e\u521d\u671f\u5316 */\n// \u30ce\u30fc\u30c9\u306e\u521d\u671f\u5316\nn1 := NewTreeNode(1)\nn2 := NewTreeNode(2)\nn3 := NewTreeNode(3)\nn4 := NewTreeNode(4)\nn5 := NewTreeNode(5)\n// \u30ce\u30fc\u30c9\u9593\u306e\u53c2\u7167\uff08\u30dd\u30a4\u30f3\u30bf\uff09\u3092\u7d50\u3076\nn1.Left = n2\nn1.Right = n3\nn2.Left = n4\nn2.Right = n5\n</code></pre> binary_tree.swift<pre><code>// \u30ce\u30fc\u30c9\u306e\u521d\u671f\u5316\nlet n1 = TreeNode(x: 1)\nlet n2 = TreeNode(x: 2)\nlet n3 = TreeNode(x: 3)\nlet n4 = TreeNode(x: 4)\nlet n5 = TreeNode(x: 5)\n// \u30ce\u30fc\u30c9\u9593\u306e\u53c2\u7167\uff08\u30dd\u30a4\u30f3\u30bf\uff09\u3092\u7d50\u3076\nn1.left = n2\nn1.right = n3\nn2.left = n4\nn2.right = n5\n</code></pre> binary_tree.js<pre><code>/* \u4e8c\u5206\u6728\u306e\u521d\u671f\u5316 */\n// \u30ce\u30fc\u30c9\u306e\u521d\u671f\u5316\nlet n1 = new TreeNode(1),\n n2 = new TreeNode(2),\n n3 = new TreeNode(3),\n n4 = new TreeNode(4),\n n5 = new TreeNode(5);\n// \u30ce\u30fc\u30c9\u9593\u306e\u53c2\u7167\uff08\u30dd\u30a4\u30f3\u30bf\uff09\u3092\u7d50\u3076\nn1.left = n2;\nn1.right = n3;\nn2.left = n4;\nn2.right = n5;\n</code></pre> binary_tree.ts<pre><code>/* \u4e8c\u5206\u6728\u306e\u521d\u671f\u5316 */\n// \u30ce\u30fc\u30c9\u306e\u521d\u671f\u5316\nlet n1 = new TreeNode(1),\n n2 = new TreeNode(2),\n n3 = new TreeNode(3),\n n4 = new TreeNode(4),\n n5 = new TreeNode(5);\n// \u30ce\u30fc\u30c9\u9593\u306e\u53c2\u7167\uff08\u30dd\u30a4\u30f3\u30bf\uff09\u3092\u7d50\u3076\nn1.left = n2;\nn1.right = n3;\nn2.left = n4;\nn2.right = n5;\n</code></pre> binary_tree.dart<pre><code>/* \u4e8c\u5206\u6728\u306e\u521d\u671f\u5316 */\n// \u30ce\u30fc\u30c9\u306e\u521d\u671f\u5316\nTreeNode n1 = new TreeNode(1);\nTreeNode n2 = new TreeNode(2);\nTreeNode n3 = new TreeNode(3);\nTreeNode n4 = new TreeNode(4);\nTreeNode n5 = new TreeNode(5);\n// \u30ce\u30fc\u30c9\u9593\u306e\u53c2\u7167\uff08\u30dd\u30a4\u30f3\u30bf\uff09\u3092\u7d50\u3076\nn1.left = n2;\nn1.right = n3;\nn2.left = n4;\nn2.right = n5;\n</code></pre> binary_tree.rs<pre><code>// \u30ce\u30fc\u30c9\u306e\u521d\u671f\u5316\nlet n1 = TreeNode::new(1);\nlet n2 = TreeNode::new(2);\nlet n3 = TreeNode::new(3);\nlet n4 = TreeNode::new(4);\nlet n5 = TreeNode::new(5);\n// \u30ce\u30fc\u30c9\u9593\u306e\u53c2\u7167\uff08\u30dd\u30a4\u30f3\u30bf\uff09\u3092\u7d50\u3076\nn1.borrow_mut().left = Some(n2.clone());\nn1.borrow_mut().right = Some(n3);\nn2.borrow_mut().left = Some(n4);\nn2.borrow_mut().right = Some(n5);\n</code></pre> binary_tree.c<pre><code>/* \u4e8c\u5206\u6728\u306e\u521d\u671f\u5316 */\n// \u30ce\u30fc\u30c9\u306e\u521d\u671f\u5316\nTreeNode *n1 = newTreeNode(1);\nTreeNode *n2 = newTreeNode(2);\nTreeNode *n3 = newTreeNode(3);\nTreeNode *n4 = newTreeNode(4);\nTreeNode *n5 = newTreeNode(5);\n// \u30ce\u30fc\u30c9\u9593\u306e\u53c2\u7167\uff08\u30dd\u30a4\u30f3\u30bf\uff09\u3092\u7d50\u3076\nn1-&gt;left = n2;\nn1-&gt;right = n3;\nn2-&gt;left = n4;\nn2-&gt;right = n5;\n</code></pre> binary_tree.kt<pre><code>// \u30ce\u30fc\u30c9\u306e\u521d\u671f\u5316\nval n1 = TreeNode(1)\nval n2 = TreeNode(2)\nval n3 = TreeNode(3)\nval n4 = TreeNode(4)\nval n5 = TreeNode(5)\n// \u30ce\u30fc\u30c9\u9593\u306e\u53c2\u7167\uff08\u30dd\u30a4\u30f3\u30bf\uff09\u3092\u7d50\u3076\nn1.left = n2\nn1.right = n3\nn2.left = n4\nn2.right = n5\n</code></pre> binary_tree.rb<pre><code>\n</code></pre>"},{"location":"chapter_tree/binary_tree/#2","title":"2. \u00a0 \u30ce\u30fc\u30c9\u306e\u633f\u5165\u3068\u524a\u9664","text":"<p>\u9023\u7d50\u30ea\u30b9\u30c8\u3068\u540c\u69d8\u306b\u3001\u4e8c\u5206\u6728\u3067\u306e\u30ce\u30fc\u30c9\u306e\u633f\u5165\u3068\u524a\u9664\u306f\u30dd\u30a4\u30f3\u30bf\u3092\u5909\u66f4\u3059\u308b\u3053\u3068\u3067\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002\u4e0b\u56f3\u306b\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002</p> <p></p> <p> \u56f3 7-3 \u00a0 \u4e8c\u5206\u6728\u3067\u306e\u30ce\u30fc\u30c9\u306e\u633f\u5165\u3068\u524a\u9664 </p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby binary_tree.py<pre><code># \u30ce\u30fc\u30c9\u306e\u633f\u5165\u3068\u524a\u9664\np = TreeNode(0)\n# n1 -&gt; n2\u306e\u9593\u306b\u30ce\u30fc\u30c9P\u3092\u633f\u5165\nn1.left = p\np.left = n2\n# \u30ce\u30fc\u30c9P\u3092\u524a\u9664\nn1.left = n2\n</code></pre> binary_tree.cpp<pre><code>/* \u30ce\u30fc\u30c9\u306e\u633f\u5165\u3068\u524a\u9664 */\nTreeNode* P = new TreeNode(0);\n// n1\u3068n2\u306e\u9593\u306b\u30ce\u30fc\u30c9P\u3092\u633f\u5165\nn1-&gt;left = P;\nP-&gt;left = n2;\n// \u30ce\u30fc\u30c9P\u3092\u524a\u9664\nn1-&gt;left = n2;\n</code></pre> binary_tree.java<pre><code>TreeNode P = new TreeNode(0);\n// n1\u3068n2\u306e\u9593\u306b\u30ce\u30fc\u30c9P\u3092\u633f\u5165\nn1.left = P;\nP.left = n2;\n// \u30ce\u30fc\u30c9P\u3092\u524a\u9664\nn1.left = n2;\n</code></pre> binary_tree.cs<pre><code>/* \u30ce\u30fc\u30c9\u306e\u633f\u5165\u3068\u524a\u9664 */\nTreeNode P = new(0);\n// n1\u3068n2\u306e\u9593\u306b\u30ce\u30fc\u30c9P\u3092\u633f\u5165\nn1.left = P;\nP.left = n2;\n// \u30ce\u30fc\u30c9P\u3092\u524a\u9664\nn1.left = n2;\n</code></pre> binary_tree.go<pre><code>/* \u30ce\u30fc\u30c9\u306e\u633f\u5165\u3068\u524a\u9664 */\n// n1\u3068n2\u306e\u9593\u306b\u30ce\u30fc\u30c9P\u3092\u633f\u5165\np := NewTreeNode(0)\nn1.Left = p\np.Left = n2\n// \u30ce\u30fc\u30c9P\u3092\u524a\u9664\nn1.Left = n2\n</code></pre> binary_tree.swift<pre><code>let P = TreeNode(x: 0)\n// n1\u3068n2\u306e\u9593\u306b\u30ce\u30fc\u30c9P\u3092\u633f\u5165\nn1.left = P\nP.left = n2\n// \u30ce\u30fc\u30c9P\u3092\u524a\u9664\nn1.left = n2\n</code></pre> binary_tree.js<pre><code>/* \u30ce\u30fc\u30c9\u306e\u633f\u5165\u3068\u524a\u9664 */\nlet P = new TreeNode(0);\n// n1\u3068n2\u306e\u9593\u306b\u30ce\u30fc\u30c9P\u3092\u633f\u5165\nn1.left = P;\nP.left = n2;\n// \u30ce\u30fc\u30c9P\u3092\u524a\u9664\nn1.left = n2;\n</code></pre> binary_tree.ts<pre><code>/* \u30ce\u30fc\u30c9\u306e\u633f\u5165\u3068\u524a\u9664 */\nconst P = new TreeNode(0);\n// n1\u3068n2\u306e\u9593\u306b\u30ce\u30fc\u30c9P\u3092\u633f\u5165\nn1.left = P;\nP.left = n2;\n// \u30ce\u30fc\u30c9P\u3092\u524a\u9664\nn1.left = n2;\n</code></pre> binary_tree.dart<pre><code>/* \u30ce\u30fc\u30c9\u306e\u633f\u5165\u3068\u524a\u9664 */\nTreeNode P = new TreeNode(0);\n// n1\u3068n2\u306e\u9593\u306b\u30ce\u30fc\u30c9P\u3092\u633f\u5165\nn1.left = P;\nP.left = n2;\n// \u30ce\u30fc\u30c9P\u3092\u524a\u9664\nn1.left = n2;\n</code></pre> binary_tree.rs<pre><code>let p = TreeNode::new(0);\n// n1\u3068n2\u306e\u9593\u306b\u30ce\u30fc\u30c9P\u3092\u633f\u5165\nn1.borrow_mut().left = Some(p.clone());\np.borrow_mut().left = Some(n2.clone());\n// \u30ce\u30fc\u30c9P\u3092\u524a\u9664\nn1.borrow_mut().left = Some(n2);\n</code></pre> binary_tree.c<pre><code>/* \u30ce\u30fc\u30c9\u306e\u633f\u5165\u3068\u524a\u9664 */\nTreeNode *P = newTreeNode(0);\n// n1\u3068n2\u306e\u9593\u306b\u30ce\u30fc\u30c9P\u3092\u633f\u5165\nn1-&gt;left = P;\nP-&gt;left = n2;\n// \u30ce\u30fc\u30c9P\u3092\u524a\u9664\nn1-&gt;left = n2;\n</code></pre> binary_tree.kt<pre><code>val P = TreeNode(0)\n// n1\u3068n2\u306e\u9593\u306b\u30ce\u30fc\u30c9P\u3092\u633f\u5165\nn1.left = P\nP.left = n2\n// \u30ce\u30fc\u30c9P\u3092\u524a\u9664\nn1.left = n2\n</code></pre> binary_tree.rb<pre><code>\n</code></pre> <p>Tip</p> <p>\u30ce\u30fc\u30c9\u306e\u633f\u5165\u306f\u4e8c\u5206\u6728\u306e\u5143\u306e\u8ad6\u7406\u69cb\u9020\u3092\u5909\u66f4\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u3001\u30ce\u30fc\u30c9\u306e\u524a\u9664\u306f\u901a\u5e38\u305d\u306e\u30ce\u30fc\u30c9\u3068\u305d\u306e\u3059\u3079\u3066\u306e\u90e8\u5206\u6728\u3092\u524a\u9664\u3059\u308b\u3053\u3068\u306b\u306a\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u4e8c\u5206\u6728\u3067\u306f\u3001\u633f\u5165\u3068\u524a\u9664\u306f\u901a\u5e38\u4e00\u9023\u306e\u64cd\u4f5c\u3092\u901a\u3058\u3066\u5b9f\u884c\u3055\u308c\u3001\u610f\u5473\u306e\u3042\u308b\u7d50\u679c\u3092\u5f97\u307e\u3059\u3002</p>"},{"location":"chapter_tree/binary_tree/#713","title":"7.1.3 \u00a0 \u4e8c\u5206\u6728\u306e\u4e00\u822c\u7684\u306a\u7a2e\u985e","text":""},{"location":"chapter_tree/binary_tree/#1_1","title":"1. \u00a0 \u5b8c\u5168\u4e8c\u5206\u6728","text":"<p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u5b8c\u5168\u4e8c\u5206\u6728\u3067\u306f\u3001\u3059\u3079\u3066\u306e\u30ec\u30d9\u30eb\u304c\u30ce\u30fc\u30c9\u3067\u5b8c\u5168\u306b\u57cb\u3081\u3089\u308c\u3066\u3044\u307e\u3059\u3002\u5b8c\u5168\u4e8c\u5206\u6728\u3067\u306f\u3001\u8449\u30ce\u30fc\u30c9\u306e\u6b21\u6570\u306f\\(0\\)\u3067\u3001\u4ed6\u306e\u3059\u3079\u3066\u306e\u30ce\u30fc\u30c9\u306e\u6b21\u6570\u306f\\(2\\)\u3067\u3059\u3002\u30ce\u30fc\u30c9\u306e\u7dcf\u6570\u306f\\(2^{h+1} - 1\\)\u3068\u3057\u3066\u8a08\u7b97\u3067\u304d\u3001\u3053\u3053\u3067\\(h\\)\u306f\u6728\u306e\u9ad8\u3055\u3067\u3059\u3002\u3053\u308c\u306f\u6a19\u6e96\u7684\u306a\u6307\u6570\u95a2\u4fc2\u3092\u793a\u3057\u3001\u81ea\u7136\u754c\u306e\u7d30\u80de\u5206\u88c2\u306e\u4e00\u822c\u7684\u306a\u73fe\u8c61\u3092\u53cd\u6620\u3057\u3066\u3044\u307e\u3059\u3002</p> <p>Tip</p> <p>\u4e2d\u56fd\u8a9e\u570f\u3067\u306f\u3001\u5b8c\u5168\u4e8c\u5206\u6728\u306f\u3057\u3070\u3057\u3070\u6e80\u4e8c\u5206\u6728\u3068\u547c\u3070\u308c\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <p></p> <p> \u56f3 7-4 \u00a0 \u5b8c\u5168\u4e8c\u5206\u6728 </p>"},{"location":"chapter_tree/binary_tree/#2_1","title":"2. \u00a0 \u5b8c\u5099\u4e8c\u5206\u6728","text":"<p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u5b8c\u5099\u4e8c\u5206\u6728\u306f\u3001\u6700\u4e0b\u4f4d\u30ec\u30d9\u30eb\u306e\u307f\u304c\u5b8c\u5168\u306b\u57cb\u3081\u3089\u308c\u3066\u3044\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308b\u4e8c\u5206\u6728\u3067\u3001\u6700\u4e0b\u4f4d\u30ec\u30d9\u30eb\u306e\u30ce\u30fc\u30c9\u306f\u5de6\u304b\u3089\u53f3\u306b\u9023\u7d9a\u3057\u3066\u57cb\u3081\u3089\u308c\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u5b8c\u5168\u4e8c\u5206\u6728\u306f\u5b8c\u5099\u4e8c\u5206\u6728\u3067\u3082\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <p></p> <p> \u56f3 7-5 \u00a0 \u5b8c\u5099\u4e8c\u5206\u6728 </p>"},{"location":"chapter_tree/binary_tree/#3","title":"3. \u00a0 \u6e80\u4e8c\u5206\u6728","text":"<p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u6e80\u4e8c\u5206\u6728\u3067\u306f\u3001\u8449\u30ce\u30fc\u30c9\u3092\u9664\u3044\u3066\u3001\u4ed6\u306e\u3059\u3079\u3066\u306e\u30ce\u30fc\u30c9\u304c2\u3064\u306e\u5b50\u30ce\u30fc\u30c9\u3092\u6301\u3061\u307e\u3059\u3002</p> <p></p> <p> \u56f3 7-6 \u00a0 \u6e80\u4e8c\u5206\u6728 </p>"},{"location":"chapter_tree/binary_tree/#4","title":"4. \u00a0 \u5e73\u8861\u4e8c\u5206\u6728","text":"<p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u5e73\u8861\u4e8c\u5206\u6728\u3067\u306f\u3001\u4efb\u610f\u306e\u30ce\u30fc\u30c9\u306e\u5de6\u3068\u53f3\u306e\u90e8\u5206\u6728\u306e\u9ad8\u3055\u306e\u7d76\u5bfe\u5dee\u304c1\u3092\u8d85\u3048\u307e\u305b\u3093\u3002</p> <p></p> <p> \u56f3 7-7 \u00a0 \u5e73\u8861\u4e8c\u5206\u6728 </p>"},{"location":"chapter_tree/binary_tree/#714","title":"7.1.4 \u00a0 \u4e8c\u5206\u6728\u306e\u9000\u5316","text":"<p>\u4e0b\u56f3\u306f\u3001\u4e8c\u5206\u6728\u306e\u7406\u60f3\u7684\u306a\u69cb\u9020\u3068\u9000\u5316\u3057\u305f\u69cb\u9020\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u4e8c\u5206\u6728\u306f\u3001\u3059\u3079\u3066\u306e\u30ec\u30d9\u30eb\u304c\u57cb\u3081\u3089\u308c\u3066\u3044\u308b\u3068\u304d\u306b\u300c\u5b8c\u5168\u4e8c\u5206\u6728\u300d\u306b\u306a\u308a\u3001\u3059\u3079\u3066\u306e\u30ce\u30fc\u30c9\u304c\u4e00\u65b9\u306b\u504f\u3063\u3066\u3044\u308b\u3068\u304d\u306b\u300c\u9023\u7d50\u30ea\u30b9\u30c8\u300d\u306b\u9000\u5316\u3057\u307e\u3059\u3002</p> <ul> <li>\u5b8c\u5168\u4e8c\u5206\u6728\u306f\u3001\u4e8c\u5206\u6728\u306e\u300c\u5206\u5272\u7d71\u6cbb\u6cd5\u300d\u306e\u5229\u70b9\u3092\u5341\u5206\u306b\u6d3b\u7528\u3067\u304d\u308b\u7406\u60f3\u7684\u306a\u30b7\u30ca\u30ea\u30aa\u3067\u3059\u3002</li> <li>\u4e00\u65b9\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306f\u5225\u306e\u6975\u7aef\u3092\u8868\u3057\u3001\u3059\u3079\u3066\u306e\u64cd\u4f5c\u304c\u7dda\u5f62\u306b\u306a\u308a\u3001\u6642\u9593\u8a08\u7b97\u91cf\u304c\\(O(n)\\)\u306b\u306a\u308a\u307e\u3059\u3002</li> </ul> <p></p> <p> \u56f3 7-8 \u00a0 \u4e8c\u5206\u6728\u306e\u6700\u826f\u3068\u6700\u60aa\u306e\u69cb\u9020 </p> <p>\u4e0b\u8868\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u6700\u826f\u3068\u6700\u60aa\u306e\u69cb\u9020\u3067\u306f\u3001\u4e8c\u5206\u6728\u306f\u8449\u30ce\u30fc\u30c9\u6570\u3001\u7dcf\u30ce\u30fc\u30c9\u6570\u3001\u9ad8\u3055\u306e\u6700\u5927\u5024\u307e\u305f\u306f\u6700\u5c0f\u5024\u3092\u9054\u6210\u3057\u307e\u3059\u3002</p> <p> \u8868 7-1 \u00a0 \u4e8c\u5206\u6728\u306e\u6700\u826f\u3068\u6700\u60aa\u306e\u69cb\u9020 </p> \u5b8c\u5168\u4e8c\u5206\u6728 \u9023\u7d50\u30ea\u30b9\u30c8 \u30ec\u30d9\u30eb\\(i\\)\u306e\u30ce\u30fc\u30c9\u6570 \\(2^{i-1}\\) \\(1\\) \u9ad8\u3055\\(h\\)\u306e\u6728\u306e\u8449\u30ce\u30fc\u30c9\u6570 \\(2^h\\) \\(1\\) \u9ad8\u3055\\(h\\)\u306e\u6728\u306e\u7dcf\u30ce\u30fc\u30c9\u6570 \\(2^{h+1} - 1\\) \\(h + 1\\) \u7dcf\u30ce\u30fc\u30c9\u6570\\(n\\)\u306e\u6728\u306e\u9ad8\u3055 \\(\\log_2 (n+1) - 1\\) \\(n - 1\\)"},{"location":"chapter_tree/binary_tree_traversal/","title":"7.2 \u00a0 \u4e8c\u5206\u6728\u306e\u8d70\u67fb","text":"<p>\u7269\u7406\u7684\u69cb\u9020\u306e\u89b3\u70b9\u304b\u3089\u898b\u308b\u3068\u3001\u6728\u306f\u9023\u7d50\u30ea\u30b9\u30c8\u306b\u57fa\u3065\u304f\u30c7\u30fc\u30bf\u69cb\u9020\u3067\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u305d\u306e\u8d70\u67fb\u65b9\u6cd5\u306f\u30dd\u30a4\u30f3\u30bf\u3092\u901a\u3057\u3066\u30ce\u30fc\u30c9\u306b\u4e00\u3064\u305a\u3064\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3053\u3068\u3092\u542b\u307f\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u6728\u306f\u975e\u7dda\u5f62\u30c7\u30fc\u30bf\u69cb\u9020\u3067\u3042\u308b\u305f\u3081\u3001\u6728\u306e\u8d70\u67fb\u306f\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u8d70\u67fb\u3088\u308a\u3082\u8907\u96d1\u3067\u3001\u691c\u7d22\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u652f\u63f4\u304c\u5fc5\u8981\u3067\u3059\u3002</p> <p>\u4e8c\u5206\u6728\u306e\u4e00\u822c\u7684\u306a\u8d70\u67fb\u65b9\u6cd5\u306b\u306f\u3001\u30ec\u30d9\u30eb\u9806\u8d70\u67fb\u3001\u524d\u9806\u8d70\u67fb\u3001\u4e2d\u9806\u8d70\u67fb\u3001\u5f8c\u9806\u8d70\u67fb\u304c\u3042\u308a\u307e\u3059\u3002</p>"},{"location":"chapter_tree/binary_tree_traversal/#721","title":"7.2.1 \u00a0 \u30ec\u30d9\u30eb\u9806\u8d70\u67fb","text":"<p>\u4e0b\u56f3\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u30ec\u30d9\u30eb\u9806\u8d70\u67fb\u306f\u4e8c\u5206\u6728\u3092\u4e0a\u304b\u3089\u4e0b\u3078\u3001\u5c64\u3054\u3068\u306b\u8d70\u67fb\u3057\u307e\u3059\u3002\u5404\u30ec\u30d9\u30eb\u5185\u3067\u306f\u3001\u5de6\u304b\u3089\u53f3\u3078\u30ce\u30fc\u30c9\u3092\u8a2a\u554f\u3057\u307e\u3059\u3002</p> <p>\u30ec\u30d9\u30eb\u9806\u8d70\u67fb\u306f\u672c\u8cea\u7684\u306b\u5e45\u512a\u5148\u8d70\u67fb\u306e\u4e00\u7a2e\u3067\u3001\u5e45\u512a\u5148\u63a2\u7d22\uff08BFS\uff09\u3068\u3082\u547c\u3070\u308c\u3001\u300c\u5468\u56f2\u306b\u5411\u304b\u3063\u3066\u5916\u5411\u304d\u306b\u62e1\u5f35\u3059\u308b\u300d\u5c64\u3054\u3068\u306e\u8d70\u67fb\u65b9\u6cd5\u3092\u4f53\u73fe\u3057\u3066\u3044\u307e\u3059\u3002</p> <p></p> <p> \u56f3 7-9 \u00a0 \u4e8c\u5206\u6728\u306e\u30ec\u30d9\u30eb\u9806\u8d70\u67fb </p>"},{"location":"chapter_tree/binary_tree_traversal/#1","title":"1. \u00a0 \u30b3\u30fc\u30c9\u5b9f\u88c5","text":"<p>\u5e45\u512a\u5148\u8d70\u67fb\u306f\u901a\u5e38\u300c\u30ad\u30e5\u30fc\u300d\u306e\u52a9\u3051\u3092\u501f\u308a\u3066\u5b9f\u88c5\u3055\u308c\u307e\u3059\u3002\u30ad\u30e5\u30fc\u306f\u300c\u5148\u5165\u308c\u5148\u51fa\u3057\u300d\u306e\u898f\u5247\u306b\u5f93\u3044\u3001\u5e45\u512a\u5148\u8d70\u67fb\u306f\u300c\u5c64\u3054\u3068\u306e\u9032\u884c\u300d\u898f\u5247\u306b\u5f93\u3044\u307e\u3059\u3002\u4e21\u8005\u306e\u57fa\u672c\u7684\u306a\u8003\u3048\u65b9\u306f\u4e00\u81f4\u3057\u3066\u3044\u307e\u3059\u3002\u5b9f\u88c5\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby binary_tree_bfs.py<pre><code>def level_order(root: TreeNode | None) -&gt; list[int]:\n \"\"\"\u30ec\u30d9\u30eb\u9806\u8d70\u67fb\"\"\"\n # \u30ad\u30e5\u30fc\u3092\u521d\u671f\u5316\u3057\u3001\u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u3092\u8ffd\u52a0\n queue: deque[TreeNode] = deque()\n queue.append(root)\n # \u8d70\u67fb\u30b7\u30fc\u30b1\u30f3\u30b9\u3092\u683c\u7d0d\u3059\u308b\u30ea\u30b9\u30c8\u3092\u521d\u671f\u5316\n res = []\n while queue:\n node: TreeNode = queue.popleft() # \u30ad\u30e5\u30fc\u304b\u3089\u30c7\u30ad\u30e5\u30fc\n res.append(node.val) # \u30ce\u30fc\u30c9\u306e\u5024\u3092\u4fdd\u5b58\n if node.left is not None:\n queue.append(node.left) # \u5de6\u306e\u5b50\u30ce\u30fc\u30c9\u3092\u30a8\u30f3\u30ad\u30e5\u30fc\n if node.right is not None:\n queue.append(node.right) # \u53f3\u306e\u5b50\u30ce\u30fc\u30c9\u3092\u30a8\u30f3\u30ad\u30e5\u30fc\n return res\n</code></pre> binary_tree_bfs.cpp<pre><code>/* \u30ec\u30d9\u30eb\u9806\u8d70\u67fb */\nvector&lt;int&gt; levelOrder(TreeNode *root) {\n // \u30ad\u30e5\u30fc\u3092\u521d\u671f\u5316\u3001\u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u3092\u8ffd\u52a0\n queue&lt;TreeNode *&gt; queue;\n queue.push(root);\n // \u8d70\u67fb\u9806\u5e8f\u3092\u4fdd\u5b58\u3059\u308b\u30ea\u30b9\u30c8\u3092\u521d\u671f\u5316\n vector&lt;int&gt; vec;\n while (!queue.empty()) {\n TreeNode *node = queue.front();\n queue.pop(); // \u30ad\u30e5\u30fc\u304b\u3089\u30c7\u30ad\u30e5\u30fc\n vec.push_back(node-&gt;val); // \u30ce\u30fc\u30c9\u5024\u3092\u4fdd\u5b58\n if (node-&gt;left != nullptr)\n queue.push(node-&gt;left); // \u5de6\u306e\u5b50\u30ce\u30fc\u30c9\u3092\u30a8\u30f3\u30ad\u30e5\u30fc\n if (node-&gt;right != nullptr)\n queue.push(node-&gt;right); // \u53f3\u306e\u5b50\u30ce\u30fc\u30c9\u3092\u30a8\u30f3\u30ad\u30e5\u30fc\n }\n return vec;\n}\n</code></pre> binary_tree_bfs.java<pre><code>/* \u30ec\u30d9\u30eb\u9806\u8d70\u67fb */\nList&lt;Integer&gt; levelOrder(TreeNode root) {\n // \u30ad\u30e5\u30fc\u3092\u521d\u671f\u5316\u3057\u3001\u6839\u30ce\u30fc\u30c9\u3092\u8ffd\u52a0\n Queue&lt;TreeNode&gt; queue = new LinkedList&lt;&gt;();\n queue.add(root);\n // \u8d70\u67fb\u9806\u5e8f\u3092\u683c\u7d0d\u3059\u308b\u30ea\u30b9\u30c8\u3092\u521d\u671f\u5316\n List&lt;Integer&gt; list = new ArrayList&lt;&gt;();\n while (!queue.isEmpty()) {\n TreeNode node = queue.poll(); // \u30ad\u30e5\u30fc\u306e\u30c7\u30ad\u30e5\u30fc\n list.add(node.val); // \u30ce\u30fc\u30c9\u306e\u5024\u3092\u4fdd\u5b58\n if (node.left != null)\n queue.offer(node.left); // \u5de6\u306e\u5b50\u30ce\u30fc\u30c9\u3092\u30a8\u30f3\u30ad\u30e5\u30fc\n if (node.right != null)\n queue.offer(node.right); // \u53f3\u306e\u5b50\u30ce\u30fc\u30c9\u3092\u30a8\u30f3\u30ad\u30e5\u30fc\n }\n return list;\n}\n</code></pre> binary_tree_bfs.cs<pre><code>[class]{binary_tree_bfs}-[func]{LevelOrder}\n</code></pre> binary_tree_bfs.go<pre><code>[class]{}-[func]{levelOrder}\n</code></pre> binary_tree_bfs.swift<pre><code>[class]{}-[func]{levelOrder}\n</code></pre> binary_tree_bfs.js<pre><code>[class]{}-[func]{levelOrder}\n</code></pre> binary_tree_bfs.ts<pre><code>[class]{}-[func]{levelOrder}\n</code></pre> binary_tree_bfs.dart<pre><code>[class]{}-[func]{levelOrder}\n</code></pre> binary_tree_bfs.rs<pre><code>[class]{}-[func]{level_order}\n</code></pre> binary_tree_bfs.c<pre><code>[class]{}-[func]{levelOrder}\n</code></pre> binary_tree_bfs.kt<pre><code>[class]{}-[func]{levelOrder}\n</code></pre> binary_tree_bfs.rb<pre><code>[class]{}-[func]{level_order}\n</code></pre>"},{"location":"chapter_tree/binary_tree_traversal/#2","title":"2. \u00a0 \u8a08\u7b97\u91cf\u5206\u6790","text":"<ul> <li>\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n)\\): \u3059\u3079\u3066\u306e\u30ce\u30fc\u30c9\u304c\u4e00\u5ea6\u305a\u3064\u8a2a\u554f\u3055\u308c\u3001\\(O(n)\\)\u306e\u6642\u9593\u304c\u304b\u304b\u308a\u307e\u3059\u3002\u3053\u3053\u3067\\(n\\)\u306f\u30ce\u30fc\u30c9\u6570\u3067\u3059\u3002</li> <li>\u7a7a\u9593\u8a08\u7b97\u91cf\u306f\\(O(n)\\): \u6700\u60aa\u306e\u5834\u5408\u3001\u3064\u307e\u308a\u5b8c\u5168\u4e8c\u5206\u6728\u306e\u5834\u5408\u3001\u6700\u4e0b\u4f4d\u30ec\u30d9\u30eb\u306b\u8d70\u67fb\u3059\u308b\u524d\u306b\u3001\u30ad\u30e5\u30fc\u306f\u6700\u5927\\((n + 1) / 2\\)\u500b\u306e\u30ce\u30fc\u30c9\u3092\u540c\u6642\u306b\u542b\u3080\u3053\u3068\u304c\u3067\u304d\u3001\\(O(n)\\)\u306e\u7a7a\u9593\u3092\u5360\u6709\u3057\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_tree/binary_tree_traversal/#722","title":"7.2.2 \u00a0 \u524d\u9806\u3001\u4e2d\u9806\u3001\u5f8c\u9806\u8d70\u67fb","text":"<p>\u5bfe\u5fdc\u3057\u3066\u3001\u524d\u9806\u3001\u4e2d\u9806\u3001\u5f8c\u9806\u8d70\u67fb\u306f\u3059\u3079\u3066\u6df1\u5ea6\u512a\u5148\u8d70\u67fb\u306b\u5c5e\u3057\u3001\u6df1\u5ea6\u512a\u5148\u63a2\u7d22\uff08DFS\uff09\u3068\u3082\u547c\u3070\u308c\u3001\u300c\u307e\u305a\u6700\u5f8c\u307e\u3067\u9032\u307f\u3001\u305d\u306e\u5f8c\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30af\u3057\u3066\u7d9a\u884c\u3059\u308b\u300d\u8d70\u67fb\u65b9\u6cd5\u3092\u4f53\u73fe\u3057\u3066\u3044\u307e\u3059\u3002</p> <p>\u4e0b\u56f3\u306f\u4e8c\u5206\u6728\u306b\u5bfe\u3057\u3066\u6df1\u5ea6\u512a\u5148\u8d70\u67fb\u3092\u5b9f\u884c\u3059\u308b\u52d5\u4f5c\u539f\u7406\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u6df1\u5ea6\u512a\u5148\u8d70\u67fb\u306f\u4e8c\u5206\u6728\u5168\u4f53\u3092\u300c\u6b69\u304d\u56de\u308b\u300d\u3088\u3046\u306a\u3082\u306e\u3067\u3001\u5404\u30ce\u30fc\u30c9\u30673\u3064\u306e\u4f4d\u7f6e\u306b\u906d\u9047\u3057\u3001\u305d\u308c\u3089\u306f\u524d\u9806\u3001\u4e2d\u9806\u3001\u5f8c\u9806\u8d70\u67fb\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u3059\u3002</p> <p></p> <p> \u56f3 7-10 \u00a0 \u4e8c\u5206\u63a2\u7d22\u6728\u306e\u524d\u9806\u3001\u4e2d\u9806\u3001\u5f8c\u9806\u8d70\u67fb </p>"},{"location":"chapter_tree/binary_tree_traversal/#1_1","title":"1. \u00a0 \u30b3\u30fc\u30c9\u5b9f\u88c5","text":"<p>\u6df1\u5ea6\u512a\u5148\u63a2\u7d22\u306f\u901a\u5e38\u518d\u5e30\u306b\u57fa\u3065\u3044\u3066\u5b9f\u88c5\u3055\u308c\u307e\u3059\uff1a</p> PythonC++JavaC#GoSwiftJSTSDartRustCKotlinRuby binary_tree_dfs.py<pre><code>def pre_order(root: TreeNode | None):\n \"\"\"\u524d\u9806\u8d70\u67fb\"\"\"\n if root is None:\n return\n # \u8a2a\u554f\u9806\u5e8f: \u30eb\u30fc\u30c8\u30ce\u30fc\u30c9 -&gt; \u5de6\u90e8\u5206\u6728 -&gt; \u53f3\u90e8\u5206\u6728\n res.append(root.val)\n pre_order(root=root.left)\n pre_order(root=root.right)\n\ndef in_order(root: TreeNode | None):\n \"\"\"\u4e2d\u9806\u8d70\u67fb\"\"\"\n if root is None:\n return\n # \u8a2a\u554f\u9806\u5e8f: \u5de6\u90e8\u5206\u6728 -&gt; \u30eb\u30fc\u30c8\u30ce\u30fc\u30c9 -&gt; \u53f3\u90e8\u5206\u6728\n in_order(root=root.left)\n res.append(root.val)\n in_order(root=root.right)\n\ndef post_order(root: TreeNode | None):\n \"\"\"\u5f8c\u9806\u8d70\u67fb\"\"\"\n if root is None:\n return\n # \u8a2a\u554f\u9806\u5e8f: \u5de6\u90e8\u5206\u6728 -&gt; \u53f3\u90e8\u5206\u6728 -&gt; \u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\n post_order(root=root.left)\n post_order(root=root.right)\n res.append(root.val)\n</code></pre> binary_tree_dfs.cpp<pre><code>/* \u524d\u9806\u8d70\u67fb */\nvoid preOrder(TreeNode *root) {\n if (root == nullptr)\n return;\n // \u8a2a\u554f\u512a\u5148\u5ea6\uff1a\u30eb\u30fc\u30c8\u30ce\u30fc\u30c9 -&gt; \u5de6\u90e8\u5206\u6728 -&gt; \u53f3\u90e8\u5206\u6728\n vec.push_back(root-&gt;val);\n preOrder(root-&gt;left);\n preOrder(root-&gt;right);\n}\n\n/* \u4e2d\u9806\u8d70\u67fb */\nvoid inOrder(TreeNode *root) {\n if (root == nullptr)\n return;\n // \u8a2a\u554f\u512a\u5148\u5ea6\uff1a\u5de6\u90e8\u5206\u6728 -&gt; \u30eb\u30fc\u30c8\u30ce\u30fc\u30c9 -&gt; \u53f3\u90e8\u5206\u6728\n inOrder(root-&gt;left);\n vec.push_back(root-&gt;val);\n inOrder(root-&gt;right);\n}\n\n/* \u5f8c\u9806\u8d70\u67fb */\nvoid postOrder(TreeNode *root) {\n if (root == nullptr)\n return;\n // \u8a2a\u554f\u512a\u5148\u5ea6\uff1a\u5de6\u90e8\u5206\u6728 -&gt; \u53f3\u90e8\u5206\u6728 -&gt; \u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\n postOrder(root-&gt;left);\n postOrder(root-&gt;right);\n vec.push_back(root-&gt;val);\n}\n</code></pre> binary_tree_dfs.java<pre><code>/* \u524d\u9806\u8d70\u67fb */\nvoid preOrder(TreeNode root) {\n if (root == null)\n return;\n // \u8a2a\u554f\u512a\u5148\u5ea6: \u6839\u30ce\u30fc\u30c9 -&gt; \u5de6\u90e8\u5206\u6728 -&gt; \u53f3\u90e8\u5206\u6728\n list.add(root.val);\n preOrder(root.left);\n preOrder(root.right);\n}\n\n/* \u4e2d\u9806\u8d70\u67fb */\nvoid inOrder(TreeNode root) {\n if (root == null)\n return;\n // \u8a2a\u554f\u512a\u5148\u5ea6: \u5de6\u90e8\u5206\u6728 -&gt; \u6839\u30ce\u30fc\u30c9 -&gt; \u53f3\u90e8\u5206\u6728\n inOrder(root.left);\n list.add(root.val);\n inOrder(root.right);\n}\n\n/* \u5f8c\u9806\u8d70\u67fb */\nvoid postOrder(TreeNode root) {\n if (root == null)\n return;\n // \u8a2a\u554f\u512a\u5148\u5ea6: \u5de6\u90e8\u5206\u6728 -&gt; \u53f3\u90e8\u5206\u6728 -&gt; \u6839\u30ce\u30fc\u30c9\n postOrder(root.left);\n postOrder(root.right);\n list.add(root.val);\n}\n</code></pre> binary_tree_dfs.cs<pre><code>[class]{binary_tree_dfs}-[func]{PreOrder}\n\n[class]{binary_tree_dfs}-[func]{InOrder}\n\n[class]{binary_tree_dfs}-[func]{PostOrder}\n</code></pre> binary_tree_dfs.go<pre><code>[class]{}-[func]{preOrder}\n\n[class]{}-[func]{inOrder}\n\n[class]{}-[func]{postOrder}\n</code></pre> binary_tree_dfs.swift<pre><code>[class]{}-[func]{preOrder}\n\n[class]{}-[func]{inOrder}\n\n[class]{}-[func]{postOrder}\n</code></pre> binary_tree_dfs.js<pre><code>[class]{}-[func]{preOrder}\n\n[class]{}-[func]{inOrder}\n\n[class]{}-[func]{postOrder}\n</code></pre> binary_tree_dfs.ts<pre><code>[class]{}-[func]{preOrder}\n\n[class]{}-[func]{inOrder}\n\n[class]{}-[func]{postOrder}\n</code></pre> binary_tree_dfs.dart<pre><code>[class]{}-[func]{preOrder}\n\n[class]{}-[func]{inOrder}\n\n[class]{}-[func]{postOrder}\n</code></pre> binary_tree_dfs.rs<pre><code>[class]{}-[func]{pre_order}\n\n[class]{}-[func]{in_order}\n\n[class]{}-[func]{post_order}\n</code></pre> binary_tree_dfs.c<pre><code>[class]{}-[func]{preOrder}\n\n[class]{}-[func]{inOrder}\n\n[class]{}-[func]{postOrder}\n</code></pre> binary_tree_dfs.kt<pre><code>[class]{}-[func]{preOrder}\n\n[class]{}-[func]{inOrder}\n\n[class]{}-[func]{postOrder}\n</code></pre> binary_tree_dfs.rb<pre><code>[class]{}-[func]{pre_order}\n\n[class]{}-[func]{in_order}\n\n[class]{}-[func]{post_order}\n</code></pre> <p>Tip</p> <p>\u6df1\u5ea6\u512a\u5148\u63a2\u7d22\u306f\u53cd\u5fa9\u306b\u57fa\u3065\u3044\u3066\u3082\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002\u8208\u5473\u306e\u3042\u308b\u8aad\u8005\u306f\u81ea\u5206\u3067\u5b66\u7fd2\u3057\u3066\u304f\u3060\u3055\u3044\u3002</p> <p>\u4e0b\u56f3\u306f\u4e8c\u5206\u6728\u306e\u524d\u9806\u8d70\u67fb\u306e\u518d\u5e30\u30d7\u30ed\u30bb\u30b9\u3092\u793a\u3057\u3066\u304a\u308a\u3001\u3053\u308c\u306f\u300c\u518d\u5e30\u300d\u3068\u300c\u5fa9\u5e30\u300d\u3068\u3044\u30462\u3064\u306e\u53cd\u5bfe\u306e\u90e8\u5206\u306b\u5206\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</p> <ol> <li>\u300c\u518d\u5e30\u300d\u306f\u65b0\u3057\u3044\u30e1\u30bd\u30c3\u30c9\u3092\u958b\u59cb\u3059\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u306f\u3053\u306e\u30d7\u30ed\u30bb\u30b9\u3067\u6b21\u306e\u30ce\u30fc\u30c9\u306b\u30a2\u30af\u30bb\u30b9\u3057\u307e\u3059\u3002</li> <li>\u300c\u5fa9\u5e30\u300d\u306f\u95a2\u6570\u304c\u623b\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u3001\u73fe\u5728\u306e\u30ce\u30fc\u30c9\u304c\u5b8c\u5168\u306b\u30a2\u30af\u30bb\u30b9\u3055\u308c\u305f\u3053\u3068\u3092\u793a\u3057\u307e\u3059\u3002</li> </ol> &lt;1&gt;&lt;2&gt;&lt;3&gt;&lt;4&gt;&lt;5&gt;&lt;6&gt;&lt;7&gt;&lt;8&gt;&lt;9&gt;&lt;10&gt;&lt;11&gt; <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p> \u56f3 7-11 \u00a0 \u524d\u9806\u8d70\u67fb\u306e\u518d\u5e30\u30d7\u30ed\u30bb\u30b9 </p>"},{"location":"chapter_tree/binary_tree_traversal/#2_1","title":"2. \u00a0 \u8a08\u7b97\u91cf\u5206\u6790","text":"<ul> <li>\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n)\\): \u3059\u3079\u3066\u306e\u30ce\u30fc\u30c9\u304c\u4e00\u5ea6\u305a\u3064\u8a2a\u554f\u3055\u308c\u3001\\(O(n)\\)\u306e\u6642\u9593\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002</li> <li>\u7a7a\u9593\u8a08\u7b97\u91cf\u306f\\(O(n)\\): \u6700\u60aa\u306e\u5834\u5408\u3001\u3064\u307e\u308a\u6728\u304c\u9023\u7d50\u30ea\u30b9\u30c8\u306b\u9000\u5316\u3057\u305f\u5834\u5408\u3001\u518d\u5e30\u306e\u6df1\u3055\u306f\\(n\\)\u306b\u9054\u3057\u3001\u30b7\u30b9\u30c6\u30e0\u306f\\(O(n)\\)\u306e\u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u7a7a\u9593\u3092\u5360\u6709\u3057\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_tree/summary/","title":"7.6 \u00a0 \u307e\u3068\u3081","text":""},{"location":"chapter_tree/summary/#1","title":"1. \u00a0 \u91cd\u8981\u306a\u30dd\u30a4\u30f3\u30c8","text":"<ul> <li>\u4e8c\u5206\u6728\u306f\u975e\u7dda\u5f62\u30c7\u30fc\u30bf\u69cb\u9020\u3067\u3001\u300c\u4e00\u3064\u3092\u4e8c\u3064\u306b\u5206\u3051\u308b\u300d\u5206\u5272\u7d71\u6cbb\u306e\u30ed\u30b8\u30c3\u30af\u3092\u53cd\u6620\u3057\u3066\u3044\u307e\u3059\u3002\u5404\u4e8c\u5206\u6728\u30ce\u30fc\u30c9\u306b\u306f\u5024\u30682\u3064\u306e\u30dd\u30a4\u30f3\u30bf\u304c\u542b\u307e\u308c\u3001\u305d\u308c\u305e\u308c\u5de6\u3068\u53f3\u306e\u5b50\u30ce\u30fc\u30c9\u3092\u6307\u3057\u307e\u3059\u3002</li> <li>\u4e8c\u5206\u6728\u306e\u30ce\u30fc\u30c9\u306b\u3064\u3044\u3066\u3001\u305d\u306e\u5de6\uff08\u53f3\uff09\u5b50\u30ce\u30fc\u30c9\u3068\u305d\u306e\u4e0b\u306b\u5f62\u6210\u3055\u308c\u308b\u6728\u306f\u3001\u307e\u3068\u3081\u3066\u305d\u306e\u30ce\u30fc\u30c9\u306e\u5de6\uff08\u53f3\uff09\u90e8\u5206\u6728\u3068\u547c\u3070\u308c\u307e\u3059\u3002</li> <li>\u4e8c\u5206\u6728\u306b\u95a2\u9023\u3059\u308b\u7528\u8a9e\u306b\u306f\u3001\u6839\u30ce\u30fc\u30c9\u3001\u8449\u30ce\u30fc\u30c9\u3001\u30ec\u30d9\u30eb\u3001\u6b21\u6570\u3001\u30a8\u30c3\u30b8\u3001\u9ad8\u3055\u3001\u6df1\u3055\u304c\u3042\u308a\u307e\u3059\u3002</li> <li>\u4e8c\u5206\u6728\u306e\u521d\u671f\u5316\u3001\u30ce\u30fc\u30c9\u306e\u633f\u5165\u3001\u30ce\u30fc\u30c9\u306e\u524a\u9664\u306e\u64cd\u4f5c\u306f\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306e\u64cd\u4f5c\u3068\u4f3c\u3066\u3044\u307e\u3059\u3002</li> <li>\u4e00\u822c\u7684\u306a\u4e8c\u5206\u6728\u306e\u7a2e\u985e\u306b\u306f\u3001\u5b8c\u5168\u4e8c\u5206\u6728\u3001\u5b8c\u5099\u4e8c\u5206\u6728\u3001\u6e80\u4e8c\u5206\u6728\u3001\u5e73\u8861\u4e8c\u5206\u6728\u304c\u3042\u308a\u307e\u3059\u3002\u5b8c\u5168\u4e8c\u5206\u6728\u306f\u7406\u60f3\u7684\u306a\u72b6\u614b\u3092\u8868\u3057\u3001\u9023\u7d50\u30ea\u30b9\u30c8\u306f\u9000\u5316\u5f8c\u306e\u6700\u60aa\u306e\u72b6\u614b\u3067\u3059\u3002</li> <li>\u4e8c\u5206\u6728\u306f\u3001\u30ce\u30fc\u30c9\u5024\u3068\u7a7a\u304d\u30b9\u30ed\u30c3\u30c8\u3092\u30ec\u30d9\u30eb\u9806\u8d70\u67fb\u30b7\u30fc\u30b1\u30f3\u30b9\u3067\u914d\u7f6e\u3057\u3001\u89aa\u30ce\u30fc\u30c9\u3068\u5b50\u30ce\u30fc\u30c9\u9593\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30de\u30c3\u30d4\u30f3\u30b0\u95a2\u4fc2\u306b\u57fa\u3065\u3044\u3066\u30dd\u30a4\u30f3\u30bf\u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3067\u3001\u914d\u5217\u3092\u4f7f\u7528\u3057\u3066\u8868\u73fe\u3067\u304d\u307e\u3059\u3002</li> <li>\u4e8c\u5206\u6728\u306e\u30ec\u30d9\u30eb\u9806\u8d70\u67fb\u306f\u5e45\u512a\u5148\u63a2\u7d22\u624b\u6cd5\u3067\u3001\u300c\u5186\u3092\u62e1\u5927\u3057\u306a\u304c\u3089\u300d\u306e\u5c64\u3054\u3068\u306e\u8d70\u67fb\u65b9\u5f0f\u3092\u53cd\u6620\u3057\u3066\u3044\u307e\u3059\u3002\u901a\u5e38\u306f\u30ad\u30e5\u30fc\u3092\u4f7f\u7528\u3057\u3066\u5b9f\u88c5\u3055\u308c\u307e\u3059\u3002</li> <li>\u524d\u9806\u3001\u4e2d\u9806\u3001\u5f8c\u9806\u8d70\u67fb\u306f\u3059\u3079\u3066\u6df1\u5ea6\u512a\u5148\u63a2\u7d22\u624b\u6cd5\u3067\u3001\u300c\u307e\u305a\u6700\u5f8c\u307e\u3067\u884c\u304d\u3001\u305d\u306e\u5f8c\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30af\u3057\u3066\u7d9a\u884c\u3059\u308b\u300d\u8d70\u67fb\u65b9\u5f0f\u3092\u53cd\u6620\u3057\u3066\u3044\u307e\u3059\u3002\u901a\u5e38\u306f\u518d\u5e30\u3092\u4f7f\u7528\u3057\u3066\u5b9f\u88c5\u3055\u308c\u307e\u3059\u3002</li> <li>\u4e8c\u5206\u63a2\u7d22\u6728\u306f\u8981\u7d20\u691c\u7d22\u306e\u305f\u3081\u306e\u52b9\u7387\u7684\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u3067\u3001\u691c\u7d22\u3001\u633f\u5165\u3001\u524a\u9664\u64cd\u4f5c\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f\u3059\u3079\u3066\\(O(\\log n)\\)\u3067\u3059\u3002\u4e8c\u5206\u63a2\u7d22\u6728\u304c\u9023\u7d50\u30ea\u30b9\u30c8\u306b\u9000\u5316\u3059\u308b\u3068\u3001\u3053\u308c\u3089\u306e\u6642\u9593\u8a08\u7b97\u91cf\u306f\\(O(n)\\)\u306b\u60aa\u5316\u3057\u307e\u3059\u3002</li> <li>AVL\u6728\u306f\u5e73\u8861\u4e8c\u5206\u63a2\u7d22\u6728\u3068\u3082\u547c\u3070\u308c\u3001\u56de\u8ee2\u64cd\u4f5c\u3092\u901a\u3057\u3066\u7d99\u7d9a\u7684\u306a\u30ce\u30fc\u30c9\u633f\u5165\u3068\u524a\u9664\u5f8c\u3082\u6728\u304c\u5e73\u8861\u3092\u4fdd\u3064\u3053\u3068\u3092\u4fdd\u8a3c\u3057\u307e\u3059\u3002</li> <li>AVL\u6728\u306e\u56de\u8ee2\u64cd\u4f5c\u306b\u306f\u3001\u53f3\u56de\u8ee2\u3001\u5de6\u56de\u8ee2\u3001\u53f3\u5de6\u56de\u8ee2\u3001\u5de6\u53f3\u56de\u8ee2\u304c\u3042\u308a\u307e\u3059\u3002\u30ce\u30fc\u30c9\u306e\u633f\u5165\u307e\u305f\u306f\u524a\u9664\u5f8c\u3001AVL\u6728\u306f\u30dc\u30c8\u30e0\u30a2\u30c3\u30d7\u65b9\u5f0f\u3067\u3053\u308c\u3089\u306e\u56de\u8ee2\u3092\u5b9f\u884c\u3057\u3066\u81ea\u5df1\u5e73\u8861\u3092\u53d6\u308a\u307e\u3059\u3002</li> </ul>"},{"location":"chapter_tree/summary/#2-q-a","title":"2. \u00a0 Q &amp; A","text":"<p>Q: \u4e00\u3064\u306e\u30ce\u30fc\u30c9\u306e\u307f\u3092\u6301\u3064\u4e8c\u5206\u6728\u306b\u3064\u3044\u3066\u3001\u6728\u306e\u9ad8\u3055\u3068\u6839\u30ce\u30fc\u30c9\u306e\u6df1\u3055\u306e\u4e21\u65b9\u304c\\(0\\)\u3067\u3059\u304b\uff1f</p> <p>\u306f\u3044\u3001\u9ad8\u3055\u3068\u6df1\u3055\u306f\u901a\u5e38\u300c\u901a\u904e\u3057\u305f\u30a8\u30c3\u30b8\u306e\u6570\u300d\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u308b\u305f\u3081\u3067\u3059\u3002</p> <p>Q: \u4e8c\u5206\u6728\u306b\u304a\u3051\u308b\u633f\u5165\u3068\u524a\u9664\u306f\u4e00\u822c\u7684\u306b\u4e00\u9023\u306e\u64cd\u4f5c\u306b\u3088\u3063\u3066\u9054\u6210\u3055\u308c\u307e\u3059\u3002\u3053\u3053\u3067\u306e\u300c\u4e00\u9023\u306e\u64cd\u4f5c\u300d\u3068\u306f\u4f55\u3092\u6307\u3057\u307e\u3059\u304b\uff1f\u5b50\u30ce\u30fc\u30c9\u306e\u30ea\u30bd\u30fc\u30b9\u3092\u89e3\u653e\u3059\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u304b\uff1f</p> <p>\u4e8c\u5206\u63a2\u7d22\u6728\u3092\u4f8b\u306b\u53d6\u308b\u3068\u3001\u30ce\u30fc\u30c9\u3092\u524a\u9664\u3059\u308b\u64cd\u4f5c\u306f3\u3064\u306e\u7570\u306a\u308b\u30b7\u30ca\u30ea\u30aa\u3067\u51e6\u7406\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u305d\u308c\u305e\u308c\u8907\u6570\u30b9\u30c6\u30c3\u30d7\u306e\u30ce\u30fc\u30c9\u64cd\u4f5c\u304c\u5fc5\u8981\u3067\u3059\u3002</p> <p>Q: \u4e8c\u5206\u6728\u306eDFS\u8d70\u67fb\u3067\u524d\u9806\u3001\u4e2d\u9806\u3001\u5f8c\u9806\u306e3\u3064\u306e\u30b7\u30fc\u30b1\u30f3\u30b9\u304c\u3042\u308b\u306e\u306f\u306a\u305c\u3067\u3059\u304b\uff1f\u305d\u306e\u7528\u9014\u306f\u4f55\u3067\u3059\u304b\uff1f</p> <p>\u914d\u5217\u306e\u9806\u6b21\u304a\u3088\u3073\u9006\u9806\u8d70\u67fb\u3068\u540c\u69d8\u306b\u3001\u524d\u9806\u3001\u4e2d\u9806\u3001\u5f8c\u9806\u8d70\u67fb\u306f\u4e8c\u5206\u6728\u3092\u8d70\u67fb\u3059\u308b3\u3064\u306e\u65b9\u6cd5\u3067\u3042\u308a\u3001\u7279\u5b9a\u306e\u9806\u5e8f\u3067\u8d70\u67fb\u7d50\u679c\u3092\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u4e8c\u5206\u63a2\u7d22\u6728\u3067\u306f\u3001\u30ce\u30fc\u30c9\u30b5\u30a4\u30ba\u304c\u300c\u5de6\u5b50\u30ce\u30fc\u30c9\u5024 &lt; \u6839\u30ce\u30fc\u30c9\u5024 &lt; \u53f3\u5b50\u30ce\u30fc\u30c9\u5024\u300d\u3092\u6e80\u305f\u3059\u305f\u3081\u3001\u300c\u5de6 \\(\\rightarrow\\) \u6839 \\(\\rightarrow\\) \u53f3\u300d\u306e\u512a\u5148\u9806\u4f4d\u3067\u6728\u3092\u8d70\u67fb\u3059\u308b\u3053\u3068\u3067\u3001\u9806\u5e8f\u4ed8\u3051\u3089\u308c\u305f\u30ce\u30fc\u30c9\u30b7\u30fc\u30b1\u30f3\u30b9\u3092\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002</p> <p>Q: \u4e0d\u5e73\u8861\u30ce\u30fc\u30c9<code>node</code>\u3001<code>child</code>\u3001<code>grand_child</code>\u9593\u306e\u95a2\u4fc2\u3092\u51e6\u7406\u3059\u308b\u53f3\u56de\u8ee2\u64cd\u4f5c\u306b\u304a\u3044\u3066\u3001\u53f3\u56de\u8ee2\u5f8c\u306b<code>node</code>\u3068\u305d\u306e\u89aa\u30ce\u30fc\u30c9\u9593\u306e\u63a5\u7d9a\u3068<code>node</code>\u306e\u5143\u306e\u30ea\u30f3\u30af\u304c\u5931\u308f\u308c\u308b\u306e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u304b\uff1f</p> <p>\u3053\u306e\u554f\u984c\u3092\u518d\u5e30\u7684\u306a\u89b3\u70b9\u304b\u3089\u898b\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<code>right_rotate(root)</code>\u64cd\u4f5c\u306f\u90e8\u5206\u6728\u306e\u6839\u30ce\u30fc\u30c9\u3092\u6e21\u3057\u3001\u6700\u7d42\u7684\u306b<code>return child</code>\u3067\u56de\u8ee2\u3055\u308c\u305f\u90e8\u5206\u6728\u306e\u6839\u30ce\u30fc\u30c9\u3092\u8fd4\u3057\u307e\u3059\u3002\u90e8\u5206\u6728\u306e\u6839\u30ce\u30fc\u30c9\u3068\u305d\u306e\u89aa\u30ce\u30fc\u30c9\u9593\u306e\u63a5\u7d9a\u306f\u3001\u3053\u306e\u95a2\u6570\u304c\u623b\u3063\u305f\u5f8c\u306b\u78ba\u7acb\u3055\u308c\u3001\u3053\u308c\u306f\u53f3\u56de\u8ee2\u64cd\u4f5c\u306e\u4fdd\u5b88\u7bc4\u56f2\u5916\u3067\u3059\u3002</p> <p>Q: C++\u3067\u306f\u3001\u95a2\u6570\u306f<code>private</code>\u3068<code>public</code>\u30bb\u30af\u30b7\u30e7\u30f3\u306b\u5206\u304b\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306b\u306f\u3069\u306e\u3088\u3046\u306a\u8003\u616e\u4e8b\u9805\u304c\u3042\u308a\u307e\u3059\u304b\uff1f\u306a\u305c<code>height()</code>\u95a2\u6570\u3068<code>updateHeight()</code>\u95a2\u6570\u304c\u305d\u308c\u305e\u308c<code>public</code>\u3068<code>private</code>\u306b\u914d\u7f6e\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3059\u304b\uff1f</p> <p>\u3053\u308c\u306f\u30e1\u30bd\u30c3\u30c9\u306e\u4f7f\u7528\u7bc4\u56f2\u306b\u3088\u308a\u307e\u3059\u3002\u30e1\u30bd\u30c3\u30c9\u304c\u30af\u30e9\u30b9\u5185\u3067\u306e\u307f\u4f7f\u7528\u3055\u308c\u308b\u5834\u5408\u3001<code>private</code>\u306b\u8a2d\u8a08\u3055\u308c\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u72ec\u81ea\u306b<code>updateHeight()</code>\u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u306f\u610f\u5473\u304c\u3042\u308a\u307e\u305b\u3093\u3002\u3053\u308c\u306f\u633f\u5165\u307e\u305f\u306f\u524a\u9664\u64cd\u4f5c\u306e\u4e00\u30b9\u30c6\u30c3\u30d7\u306b\u904e\u304e\u306a\u3044\u304b\u3089\u3067\u3059\u3002\u3057\u304b\u3057\u3001<code>height()</code>\u306f\u30ce\u30fc\u30c9\u306e\u9ad8\u3055\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306e\u3082\u306e\u3067\u3001<code>vector.size()</code>\u3068\u540c\u69d8\u3067\u3042\u308b\u305f\u3081\u3001\u4f7f\u7528\u306e\u305f\u3081\u306b<code>public</code>\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002</p> <p>Q: \u5165\u529b\u30c7\u30fc\u30bf\u306e\u30bb\u30c3\u30c8\u304b\u3089\u4e8c\u5206\u63a2\u7d22\u6728\u3092\u3069\u306e\u3088\u3046\u306b\u69cb\u7bc9\u3057\u307e\u3059\u304b\uff1f\u6839\u30ce\u30fc\u30c9\u306e\u9078\u629e\u306f\u975e\u5e38\u306b\u91cd\u8981\u3067\u3059\u304b\uff1f</p> <p>\u306f\u3044\u3001\u6728\u3092\u69cb\u7bc9\u3059\u308b\u65b9\u6cd5\u306f\u4e8c\u5206\u63a2\u7d22\u6728\u30b3\u30fc\u30c9\u306e<code>build_tree()</code>\u30e1\u30bd\u30c3\u30c9\u3067\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u6839\u30ce\u30fc\u30c9\u306e\u9078\u629e\u306b\u3064\u3044\u3066\u306f\u3001\u901a\u5e38\u5165\u529b\u30c7\u30fc\u30bf\u3092\u30bd\u30fc\u30c8\u3057\u3001\u4e2d\u592e\u306e\u8981\u7d20\u3092\u6839\u30ce\u30fc\u30c9\u3068\u3057\u3066\u9078\u629e\u3057\u3001\u518d\u5e30\u7684\u306b\u5de6\u3068\u53f3\u306e\u90e8\u5206\u6728\u3092\u69cb\u7bc9\u3057\u307e\u3059\u3002\u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306f\u6728\u306e\u5e73\u8861\u3092\u6700\u5927\u5316\u3057\u307e\u3059\u3002</p> <p>Q: Java\u3067\u306f\u3001\u6587\u5b57\u5217\u6bd4\u8f03\u306b\u5e38\u306b<code>equals()</code>\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u304b\uff1f</p> <p>Java\u3067\u306f\u3001\u30d7\u30ea\u30df\u30c6\u30a3\u30d6\u30c7\u30fc\u30bf\u578b\u306e\u5834\u5408\u3001<code>==</code>\u306f2\u3064\u306e\u5909\u6570\u306e\u5024\u304c\u7b49\u3057\u3044\u304b\u3069\u3046\u304b\u3092\u6bd4\u8f03\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u53c2\u7167\u578b\u306e\u5834\u5408\u30012\u3064\u306e\u30b7\u30f3\u30dc\u30eb\u306e\u52d5\u4f5c\u539f\u7406\u306f\u7570\u306a\u308a\u307e\u3059\u3002</p> <ul> <li><code>==</code>: 2\u3064\u306e\u5909\u6570\u304c\u540c\u3058\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u6307\u3057\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3001\u3064\u307e\u308a\u30e1\u30e2\u30ea\u5185\u306e\u4f4d\u7f6e\u304c\u540c\u3058\u304b\u3069\u3046\u304b\u3092\u6bd4\u8f03\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002</li> <li><code>equals()</code>: 2\u3064\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u5024\u304c\u7b49\u3057\u3044\u304b\u3069\u3046\u304b\u3092\u6bd4\u8f03\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002</li> </ul> <p>\u3057\u305f\u304c\u3063\u3066\u3001\u5024\u3092\u6bd4\u8f03\u3059\u308b\u306b\u306f<code>equals()</code>\u3092\u4f7f\u7528\u3059\u3079\u304d\u3067\u3059\u3002\u305f\u3060\u3057\u3001<code>String a = \"hi\"; String b = \"hi\";</code>\u3067\u521d\u671f\u5316\u3055\u308c\u305f\u6587\u5b57\u5217\u306f\u6587\u5b57\u5217\u5b9a\u6570\u30d7\u30fc\u30eb\u306b\u683c\u7d0d\u3055\u308c\u3001\u540c\u3058\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u6307\u3059\u305f\u3081\u3001<code>a == b</code>\u30822\u3064\u306e\u6587\u5b57\u5217\u306e\u5185\u5bb9\u3092\u6bd4\u8f03\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002</p> <p>Q: \u6700\u4e0b\u4f4d\u30ec\u30d9\u30eb\u306b\u5230\u9054\u3059\u308b\u524d\u306b\u3001\u5e45\u512a\u5148\u8d70\u67fb\u3067\u30ad\u30e5\u30fc\u5185\u306e\u30ce\u30fc\u30c9\u6570\u306f\\(2^h\\)\u3067\u3059\u304b\uff1f</p> <p>\u306f\u3044\u3001\u4f8b\u3048\u3070\u9ad8\u3055\\(h = 2\\)\u306e\u6e80\u4e8c\u5206\u6728\u306f\u5408\u8a08\\(n = 7\\)\u500b\u306e\u30ce\u30fc\u30c9\u3092\u6301\u3061\u3001\u6700\u4e0b\u4f4d\u30ec\u30d9\u30eb\u306b\u306f\\(4 = 2^h = (n + 1) / 2\\)\u500b\u306e\u30ce\u30fc\u30c9\u304c\u3042\u308a\u307e\u3059\u3002</p>"}]}