{"id":19532485,"url":"https://github.com/rain1024/datastructures-algorithms-competitive-programming","last_synced_at":"2025-08-19T01:08:32.389Z","repository":{"id":63505688,"uuid":"564741941","full_name":"rain1024/datastructures-algorithms-competitive-programming","owner":"rain1024","description":" \u003cHello!\u003e -|DaS.Algo|- +Pr0bl3m5! `Comp::Ete` {Solve~Fun}  ^Join_us^","archived":false,"fork":false,"pushed_at":"2025-01-31T02:01:00.000Z","size":2709,"stargazers_count":12,"open_issues_count":21,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-26T13:41:07.384Z","etag":null,"topics":["advent-of-code","advent-of-code-2022","algorithm","algorithms","codeforces","competitive-programming","data-structures","data-structures-and-algorithms","leetcode"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rain1024.png","metadata":{"files":{"readme":"README.md","changelog":"HISTORY.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-11-11T11:45:53.000Z","updated_at":"2025-03-14T20:33:16.000Z","dependencies_parsed_at":"2025-04-26T13:39:36.091Z","dependency_job_id":null,"html_url":"https://github.com/rain1024/datastructures-algorithms-competitive-programming","commit_stats":null,"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"purl":"pkg:github/rain1024/datastructures-algorithms-competitive-programming","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rain1024%2Fdatastructures-algorithms-competitive-programming","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rain1024%2Fdatastructures-algorithms-competitive-programming/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rain1024%2Fdatastructures-algorithms-competitive-programming/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rain1024%2Fdatastructures-algorithms-competitive-programming/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rain1024","download_url":"https://codeload.github.com/rain1024/datastructures-algorithms-competitive-programming/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rain1024%2Fdatastructures-algorithms-competitive-programming/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271083769,"owners_count":24696363,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-18T02:00:08.743Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["advent-of-code","advent-of-code-2022","algorithm","algorithms","codeforces","competitive-programming","data-structures","data-structures-and-algorithms","leetcode"],"created_at":"2024-11-11T01:51:20.385Z","updated_at":"2025-08-19T01:08:32.358Z","avatar_url":"https://github.com/rain1024.png","language":"C++","readme":"\u003c!-- BEGIN HEADER --\u003e\n\u003ch1 align=\"center\"\u003e\nData Structures \u0026 Algorithms \u003cbr/\u003e\nCompetitive Programming\u003cbr/\u003e\n\u003c/h1\u003e\n\u003c!-- END HEADER --\u003e\n\n\u003ch5 align=\"center\"\u003e\n\n```\n \u003cHello!\u003e\n-|DaS.Algo|-\n+Pr0bl3m5!\n`Comp::Ete`\n{Solve~Fun}\n ^Join_us^\n```\n\n\u003ch5\u003e\n\n---\n\n\u003ch4 align=\"center\"\u003e\n  Programming Languages: \u003cbr/\u003e\n  \u003ca href=\"/readme/python\"\u003ePython\u003c/a\u003e, \n  \u003ca href=\"/readme/cpp\"\u003eC++\u003c/a\u003e, \n  \u003ca href=\"/readme/java\"\u003eJava\u003c/a\u003e, \n  \u003c!-- \u003ca href=\"/readme/javascript\"\u003eJavascript\u003c/a\u003e, \n  \u003ca href=\"/readme/nodejs\"\u003eNodeJS\u003c/a\u003e,  --\u003e\n  \u003ca href=\"/readme/typescript\"\u003eTypescript\u003c/a\u003e\n  \u003c!-- \u003ca href=\"/readme/csharp\"\u003eC#\u003c/a\u003e, \n  \u003ca href=\"/readme/php\"\u003ePHP\u003c/a\u003e,\n  \u003ca href=\"/readme/c\"\u003eC\u003c/a\u003e,\n  \u003ca href=\"/readme/go\"\u003eGo\u003c/a\u003e,\n  \u003ca href=\"/readme/kotlin\"\u003eKotlin\u003c/a\u003e,\n  \u003ca href=\"/readme/rust\"\u003eRust\u003c/a\u003e,\n  \u003ca href=\"/readme/ruby\"\u003eRuby\u003c/a\u003e --\u003e\n\u003c/h4\u003e\n\n---\n\n⭐ [New Version 1.3.0 is released.](https://github.com/rain1024/datastructures-algorithms-competitive-programming/releases)\n\n## ⚛ Introduction\n\n\u003c!--          Section: Introduction            --\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ca href=\"/articles/intro_dsa.md\"\u003eIntroduction to Data Structures and Algorithms\u003c/a\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003ca href=\"/articles/intro_cp.md\"\u003eIntroduction to Competitive Programming\u003c/a\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003ca href=\"/articles/choosing_a_pl.md\"\u003eChoosing a Programming Language\u003c/a\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\n## 📑 Data Structures\n\nA data structure is a data organization, management, and storage format that is usually chosen for efficient access to data. More recisely, a data structure is a collection of data values, the relationships among them, and the functions or operations that can be applied to the data.\n\n\u003ccode\u003eB\u003c/code\u003e - Basic, \u003ccode\u003eA\u003c/code\u003e - Advanced\n\n\u003cul\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e \n\u003ca href=\"/concepts/general/array/README.md\"\u003eArray\u003c/a\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e\n\u003ca href=\"/concepts/general/string/README.md\"\u003eString\u003c/a\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e\n\u003ca href=\"/concepts/general/linked-list/README.md\"\u003eLinked List\u003c/a\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e\n\u003ca href=\"/concepts/general/stack/README.md\"\u003eStack\u003c/a\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e \n\u003ca href=\"/concepts/general/queue/README.md\"\u003eQueue\u003c/a\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e\n\u003ca href=\"/concepts/general/set/README.md\"\u003eSet\u003c/a\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e\n\u003ca href=\"/concepts/general/hash-table/README.md\"\u003eHash Table\u003c/a\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Heap\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Priority Queue\n\u003ca href=\"/concepts/cpp/priority_queue.md\"\u003e\u003ccode\u003ecpp🐀\u003c/code\u003e\u003c/a\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e\n\u003ca href=\"/concepts/general/tree/README.md\"\u003eTree\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eA\u003c/code\u003e\n\u003ca href=\"/concepts/general/binary-search-tree/README.md\"\u003eBinary Search Tree\u003c/a\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eA\u003c/code\u003e AVL Tree\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eA\u003c/code\u003e Red-Black Tree\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eA\u003c/code\u003e Segment Tree\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eA\u003c/code\u003e Fenwick Tree\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e\n\u003ca href=\"/concepts/general/graph/README.md\"\u003eGraph\u003c/a\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Prefix sum (Range queries)\n\u003ca href=\"/concepts/cpp/range_queries.md\"\u003e\u003ccode\u003ecpp🐀\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"/concepts/python/range_queries.md\"\u003e\u003ccode\u003epy🐍\u003c/code\u003e\u003c/a\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Disjoin Set\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Bloom Filter\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e LRU Cache\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Skiplist\n\u003ca href=\"/concepts/cpp/skip_list.md\"\u003e\u003ccode\u003ecpp🐀\u003c/code\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\n## 👾 Algorithms\n\nAn algorithm is a finite sequence of rigorous instructions, typically used to solve a class of specific problems or to perform a computation.\n\n\u003ccode\u003eB\u003c/code\u003e - Basic, \u003ccode\u003eA\u003c/code\u003e - Advanced\n\n### 📦 Algorithms by Topic\n\n\u003cul\u003e\n\u003c!-- ======== Begin Math ======== --\u003e\n\u003cli\u003e\n\u003cb\u003e\u003ca href=\"/concepts/general/big-o.md\"\u003eBig-O\u003c/a\u003e\u003c/b\u003e\n\u003c!-- \u003ca href=\"/concepts/cpp/big-o.md\"\u003e\u003ccode\u003ecpp🐀\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"/concepts/python/big-o.md\"\u003e\u003ccode\u003epy🐍\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"/concepts/typescript/big-o.md\"\u003e\u003ccode\u003ets\u003c/code\u003e\u003c/a\u003e --\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cb\u003eMath\u003c/b\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Bit Manipulation\n\u003ca href=\"/concepts/cpp/bitwise.md\"\u003e\u003ccode\u003ecpp🐀\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"/concepts/python/bitwise.md\"\u003e\u003ccode\u003epy🐍\u003c/code\u003e\u003c/a\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Binary Floating Point \n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Factorial\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Fibonacci Number\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Prime Factors \n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Primality Test \n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Euclidean Algorithm\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Least Common Multiple \n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Sieve of Eratosthenes \n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Is Power of Two\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Pascal's Triangle\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Complex Number\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Radian \u0026 Degree \n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Fast Powering\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Horner's method  \n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Matrices \n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Euclidean Distance \n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Integer Partition\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Square Root \n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Liu Hui π Algorithm \n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Discrete Fourier Transform \n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c!-- ======== End Math ======== --\u003e\n\u003c!-- ======== Begin Sets ======== --\u003e\n\u003cb\u003eSets\u003c/b\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Cartesian Product \n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Fisher–Yates Shuffle \n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Power Set\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Permutations\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Combinations\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Longest Common Subsequence \n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Longest Increasing Subsequence\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Shortest Common Supersequence \n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Knapsack Problem \n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Maximum Subarray \n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Combination Sum \n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c!-- ======== End Sets ======== --\u003e\n\u003c!-- ======== Begin Strings ======== --\u003e\n\u003cli\u003e\n\u003cb\u003eStrings\u003c/b\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Hamming Distance \n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Palindrome \n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Levenshtein Distance \n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Knuth–Morris–Pratt Algorithm \n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Z Algorithm \n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Rabin Karp Algorithm \n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Longest Common Substring\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Regular Expression Matching\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c!-- ======== End Strings ======== --\u003e\n\u003c!-- ======== Begin Searches ======== --\u003e\n\u003cli\u003e\n\u003cb\u003eSearches\u003c/b\u003e\n\u003ca href=\"/concepts/python/searching.md\"\u003e\u003ccode\u003epy🐍\u003c/code\u003e\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Linear Search\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Jump Search\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Binary Search\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Interpolation Search \n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c!-- ======== End Searches ======== --\u003e\n\u003c!-- ======== Begin Sorting ======== --\u003e\n\u003cli\u003e\n\u003cb\u003eSorting\u003c/b\u003e\n\u003ca href=\"/concepts/cpp/sorting.md\"\u003e\u003ccode\u003ecpp🐀\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"/concepts/python/sorting.md\"\u003e\u003ccode\u003epy🐍\u003c/code\u003e\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Bubble Sort\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Selection Sort\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Insertion Sort\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Heap Sort\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Merge Sort\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Quicksort \n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Shellsort\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Counting Sort\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Radix Sort\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c!-- ======== End Sorting ======== --\u003e\n\u003c!-- ======== Begin Two Pointers ======== --\u003e\n\u003cli\u003e\n\u003cb\u003e\u003ca href=\"/concepts/general/two-pointers/README.md\"\u003eTwo Pointers\u003c/a\u003e\u003c/b\u003e\n\u003c/li\u003e\n\u003c!-- ======== End Two Pointers ======== --\u003e\n\u003c!-- ======== Begin Linked Lists ======== --\u003e\n\u003cli\u003e\n\u003cb\u003eLinked Lists\u003c/b\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Straight Traversal\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Reverse Traversal\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c!-- ======== End Linked Lists ======== --\u003e\n\u003c!-- ======== Begin Trees ======== --\u003e\n\u003cli\u003e\n\u003cb\u003eTrees\u003c/b\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Depth-First Search (DFS)\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Breadth-First Search (BFS)\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c!-- ======== End Trees ======== --\u003e\n\u003c!-- ======== Begin Graphs ======== --\u003e\n\u003cli\u003e\n\u003cb\u003eGraphs\u003c/b\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Depth-First Search (DFS)\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Breadth-First Search (BFS)\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Kruskal’s Algorithm \n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Dijkstra Algorithm \n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Bellman-Ford Algorithm\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Floyd-Warshall Algorithm \n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Detect Cycle\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Prim’s Algorithm\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e\n\u003ca href=\"/concepts/general/topological-sorting/README.md\"\u003eTopological Sorting\u003c/a\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Articulation Points\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Bridges - DFS based algorithm\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Eulerian Path and Eulerian Circuit - Fleury's algorithm - Visit every edge exactly once\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Hamiltonian Cycle - Visit every vertex exactly once\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Strongly Connected Components - Kosaraju's algorithm\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Travelling Salesman Problem - shortest possible route that visits each city and returns to the origin city\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c!-- ======== End Graphs ======== --\u003e\n\u003c!-- ======== Begin Cryptography ======== --\u003e\n\u003cli\u003e\n\u003cb\u003eCryptography\u003c/b\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Polynomial Hash - rolling hash function based on polynomial\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Rail Fence Cipher - a transposition cipher algorithm for encoding messages\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Caesar Cipher - simple substitution cipher\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Hill Cipher - substitution cipher based on linear algebra\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c!-- ======== End Cryptography ======== --\u003e\n\u003c!-- ======== Begin Machine Learning ======== --\u003e\n\u003cli\u003e\n\u003cb\u003eMachine Learning\u003c/b\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e NanoNeuron - 7 simple JS functions that illustrate how machines can actually learn (forward/backward propagation)\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e k-NN - k-nearest neighbors classification algorithm\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e k-Means - k-Means clustering algorithm\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c!-- ======== End Machine Learning ======== --\u003e\n\u003c!-- ======== Begin Image Processing ======== --\u003e\n\u003cli\u003e\n\u003cb\u003eImage Processing\u003c/b\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Seam Carving - content-aware image resizing algorithm\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c!-- ======== End Image Processing ======== --\u003e\n\u003c!-- ======== Begin Statistics ======== --\u003e\n\u003cli\u003e\n\u003cb\u003eStatistics\u003c/b\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Weighted Random - select the random item from the list based on items' weights\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c!-- ======== End Statistics ======== --\u003e\n\u003c!-- ======== Begin Evolutionary algorithms ======== --\u003e\n\u003cli\u003e\n\u003cb\u003eEvolutionary algorithms\u003c/b\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Genetic algorithm - example of how the genetic algorithm may be applied for training the self-parking cars\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c!-- ======== End Evolutionary algorithms ======== --\u003e\n\u003c!-- ======== Begin Uncategorized ======== --\u003e\n\u003cli\u003e\n\u003cb\u003eUncategorized\u003c/b\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Tower of Hanoi\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Square Matrix Rotation - in-place algorithm\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Jump Game - backtracking, dynamic programming (top-down + bottom-up) and greedy examples\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Unique Paths - backtracking, dynamic programming and Pascal's Triangle based examples\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Rain Terraces - trapping rain water problem (dynamic programming and brute force versions)\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Recursive Staircase - count the number of ways to reach to the top (4 solutions)\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Best Time To Buy Sell Stocks - divide and conquer and one-pass examples\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e N-Queens Problem\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Knight's Tour\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c!-- ======== End Uncategorized ======== --\u003e\n\u003c/ul\u003e\n\n### 💠 Algorithms by Paradigm\n\n\u003cul\u003e\n\u003c!-- ======== Begin Brute Force ======== --\u003e\n\u003cli\u003e\n\u003cb\u003eBrute Force\u003c/b\u003e - look at all the possibilities and selects the best solution\n\u003ca href=\"/concepts/cpp/brute_force.md\"\u003e\u003ccode\u003ecpp🐀\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"/concepts/python/brute_force.md\"\u003e\u003ccode\u003epy🐍\u003c/code\u003e\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Linear Search\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Rain Terraces - trapping rain water problem\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Recursive Staircase - count the number of ways to reach to the top\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Maximum Subarray\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Travelling Salesman Problem - shortest possible route that visits each city and returns to the origin city\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Discrete Fourier Transform - decompose a function of time (a signal) into the frequencies that make it up\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c!-- ======== End Brute Force ======== --\u003e\n\u003c!-- ======== Begin Greedy ======== --\u003e\n\u003cli\u003e\n\u003cb\u003eGreedy\u003c/b\u003e - make the locally optimal choice at each stage with the hope of finding a global optimum\n\u003ca href=\"/concepts/python/greedy.md\"\u003e\u003ccode\u003epy🐍\u003c/code\u003e\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Jump Game\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Unbound Knapsack Problem\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Dijkstra Algorithm - finding the shortest path to all graph vertices\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Prim’s Algorithm - finding Minimum Spanning Tree (MST) for weighted undirected graph\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Kruskal’s Algorithm - finding Minimum Spanning Tree (MST) for weighted undirected graph\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c!-- ======== End Greedy ======== --\u003e\n\u003c!-- ======== Begin Divide and Conquer ======== --\u003e\n\u003cli\u003e\n\u003cb\u003eDivide and Conquer\u003c/b\u003e - divide the problem into a number of subproblems that are smaller instances of the same problem\n\u003cul\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Binary Search\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Tower of Hanoi\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Pascal's Triangle\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Euclidean Algorithm - calculate the Greatest Common Divisor (GCD)\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Merge Sort\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Quicksort\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Tree Depth-First Search (DFS)\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e  Graph Depth-First Search (DFS)\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Matrices - generating and traversing the matrices of different shapes\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Jump Game\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Fast Powering\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Best Time To Buy Sell Stocks - divide and conquer and one-pass examples\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Permutations (with and without repetitions)\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Combinations (with and without repetitions)\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Maximum Subarray\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c!-- ======== End Divide and Conquer ======== --\u003e\n\u003c!-- ======== Begin Dynamic Programming ======== --\u003e\n\u003cli\u003e\n\u003cb\u003eDynamic Programming\u003c/b\u003e - break the problem into subproblems and store the results of subproblems to avoid computing the same results again\n(basic: \u003ca href=\"/concepts/cpp/dp_basic.md\"\u003e\u003ccode\u003ecpp🐀\u003c/code\u003e\u003c/a\u003e, intermidate: \u003ca href=\"/concepts/cpp/dp_intermediate.md\"\u003e\u003ccode\u003ecpp🐀\u003c/code\u003e\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Fibonacci Number\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Jump Game\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Unique Paths\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Rain Terraces - trapping rain water problem\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Recursive Staircase - count the number of ways to reach to the top\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Seam Carving - content-aware image resizing algorithm\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Levenshtein Distance - minimum edit distance between two sequences\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Longest Common Subsequence (LCS)\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Longest Common Substring\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Longest Increasing Subsequence\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Shortest Common Supersequence\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e 0/1 Knapsack Problem\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Integer Partition\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Maximum Subarray\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Bellman-Ford Algorithm - finding the shortest path to all graph vertices\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Floyd-Warshall Algorithm - find the shortest paths between all pairs of vertices\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Regular Expression Matching\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c!-- ======== End Dynamic Programming ======== --\u003e\n\u003c!-- ======== Begin Backtracking ======== --\u003e\n\u003cli\u003e\n\u003cb\u003eBacktracking\u003c/b\u003e - similarly to brute force, try to generate all possible solutions, but each time you generate next solution you test if it satisfies all conditions, and only then continue generating subsequent solutions. Otherwise, backtrack, and go on a different path of finding a solution. Normally the DFS traversal of state-space is being used.\n\u003cul\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Jump Game\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Unique Paths\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eB\u003c/code\u003e Power Set - all subsets of a set\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Hamiltonian Cycle - Visit every vertex exactly once\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e N-Queens Problem\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Knight's Tour\n\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eA\u003c/code\u003e Combination Sum - find all combinations that form specific sum\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c!-- ======== End Backtracking ======== --\u003e\n\u003c!-- ======== Begin Branch \u0026 Bound ======== --\u003e\n\u003cli\u003e\n\u003cb\u003eBranch \u0026 Bound\u003c/b\u003e remember the lowest-cost solution found at each stage of the backtracking search, and use the cost of the lowest-cost solution found so far as a lower bound on the cost of a least-cost solution to the problem, in order to discard partial solutions with costs larger than the lowest-cost solution found so far. Normally BFS traversal in combination with DFS traversal of state-space tree is being used.\n\u003c/li\u003e\n\u003c!-- ======== End Branch \u0026 Bound ======== --\u003e\n\u003c/ul\u003e\n\n## 🔆 Collections\n\n**Competitive Programming Events**\n\n* 🎄 Advent of Code ([2015](collections/advent-of-code/2015/), [2022](collections/advent-of-code/2022/))\n* 🔰 Google Code Jam ([2022](collections/codejam-2022/))\n\n**Coding Problems Website**\n\n* [🔸 LeetCode](collections/leetcode/)\n* [🔸 Codeforces](collections/codeforces/)\n\n**Courses \u0026 Specialization**\n\n* [🍨 Data Structures and Algorithms Specialization](collections/datastructures-and-algorithms-specialization/), University of California San Diego\n\n## Contributors\n\nThis project exists thanks to all the people who contributed.\n\n\u003ca href=\"https://github.com/rain1024/datastructures-algorithms-competitive-programming/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=rain1024/datastructures-algorithms-competitive-programming\" /\u003e\n\u003c/a\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frain1024%2Fdatastructures-algorithms-competitive-programming","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frain1024%2Fdatastructures-algorithms-competitive-programming","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frain1024%2Fdatastructures-algorithms-competitive-programming/lists"}