{"id":40965662,"url":"https://github.com/spring1843/go-dsa","last_synced_at":"2026-01-22T06:10:42.719Z","repository":{"id":143000614,"uuid":"614494378","full_name":"spring1843/go-dsa","owner":"spring1843","description":"Go Data Structures and Algorithms is an open source tool for learning and rehearsing data structures and algorithms in Go.","archived":false,"fork":false,"pushed_at":"2025-12-20T06:56:42.000Z","size":435,"stargazers_count":721,"open_issues_count":0,"forks_count":182,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-12-22T13:53:54.654Z","etag":null,"topics":["algorithms","data-structures","divide-and-conquer","dynamic-programming","golang","greedy-algorithms","learning","programming-challenges","puzzles","recursion"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/spring1843.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-03-15T17:42:18.000Z","updated_at":"2025-12-21T19:04:16.000Z","dependencies_parsed_at":"2023-12-23T20:48:21.530Z","dependency_job_id":"5c6043eb-5a4b-45e6-bbd4-5e9fb3db1a15","html_url":"https://github.com/spring1843/go-dsa","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/spring1843/go-dsa","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spring1843%2Fgo-dsa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spring1843%2Fgo-dsa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spring1843%2Fgo-dsa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spring1843%2Fgo-dsa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spring1843","download_url":"https://codeload.github.com/spring1843/go-dsa/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spring1843%2Fgo-dsa/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28656621,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-22T01:17:37.254Z","status":"online","status_checked_at":"2026-01-22T02:00:07.137Z","response_time":144,"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":["algorithms","data-structures","divide-and-conquer","dynamic-programming","golang","greedy-algorithms","learning","programming-challenges","puzzles","recursion"],"created_at":"2026-01-22T06:10:42.654Z","updated_at":"2026-01-22T06:10:42.701Z","avatar_url":"https://github.com/spring1843.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Data Structures and Algorithms in Go 🚀\n\n[![tests](https://github.com/spring1843/go-dsa/actions/workflows/tests.yaml/badge.svg)](https://github.com/spring1843/go-dsa/actions/workflows/tests.yaml)\n[![GitHub License](https://img.shields.io/badge/License-Apache%202.0-ff69b4.svg)](https://github.com/aws/karpenter/blob/main/LICENSE)\n[![Go Report Card](https://goreportcard.com/badge/github.com/spring1843/go-dsa)](https://goreportcard.com/report/github.com/spring1843/go-dsa)\n[![Coverage Report](https://coveralls.io/repos/github/spring1843/go-dsa/badge.svg?branch=main)](https://coveralls.io/github/spring1843/go-dsa?branch=main)\n[![Go Reference](https://pkg.go.dev/badge/github.com/spring1843/go-dsa.svg)](https://pkg.go.dev/github.com/spring1843/go-dsa)\n\n![Go-DSA, Go Data Structures and Algorithms](.github/assets/go-dsa-social.png)\n\nWelcome to **Data Structures and Algorithms in Go**! 🎉 This project is designed as a dynamic, hands-on resource for learning and practicing data structures and algorithms in the Go programming language.\n\n* More than one hundred rehearsal problems, at least six problems for each of the fifteen topics\n* Executable and comes with 100% test coverage, ensuring correctness and quality\n* Completely free, community-editable, and continuously evolving\n* Ability to study and practice in your favorite IDE, editor, or web browser\n\n[![Random Challenge](./.github/assets/random_challenge.svg)](https://go.dev/play/p/XEUhCnHtlYF)\n\n## 📚 Table of Contents\n\n* [Preface](./preface.md)\n* [Complexity Analysis](./complexity.md)\n* Data Structures\n    * [Arrays](./array/README.md)\n        * [Reverse Array In-place](./array/reverse_inplace_test.go)\n        * [Add Two Numbers Represented as Slices](./array/add_slice_of_numbers_test.go)\n        * [Find Duplicate in Array](./array/find_duplicate_in_array_test.go)\n        * [Zero Sum Triplets](./array/zero_sum_triplets_test.go)\n        * [Product of All Other Elements](./array/product_of_all_other_elements_test.go)\n        * [Equal Sum Sub-arrays](./array/equal_sum_subarrays_test.go)\n        * [Rotate K Times](./array/rotate_k_steps_test.go)\n        * [Bubble Sort](./array/bubble_sort_test.go)\n        * [Insertion Sort](./array/insertion_sort_test.go)\n    * [Strings](./strings/README.md)\n        * [The Longest Dictionary Word Containing Key](./strings/longest_dictionary_word_test.go)\n        * [Look and Tell](./strings/look_and_tell_test.go)\n        * [In Memory Database](./strings/in_memory_database_test.go)\n        * [Number in English](./strings/number_in_english_test.go)\n        * [Reverse Vowels in a String](./strings/reverse_vowels_test.go)\n        * [Longest Substring of Two Unique Characters](./strings/longest_substring_test.go)\n        * [Roman Numerals](./strings/roman_numerals_test.go)\n    * [Linked Lists](./linkedlist/README.md)\n        * [Linked List Serialization](./linkedlist/serialization_test.go)\n        * [Reverse Linked List In-place](./linkedlist/reverse_in_place_test.go)\n        * [Join Two Sorted Linked Lists](./linkedlist/join_sorted_lists_test.go)\n        * [Keep Repetitions](./linkedlist/keep_repetitions_test.go)\n        * [Copy Linked List with Random Pointer](./linkedlist/copy_linklist_with_random_pointer_test.go)\n        * [LRU Cache](./linkedlist/lru_cache_test.go)\n    * [Stacks](./stack/README.md)\n        * [Max Stack](./stack/max_stack_test.go)\n        * [Balancing Symbols](./stack/balancing_symbols_test.go)\n        * [Infix to Postfix Conversion](./stack/infix_to_postfix_test.go)\n        * [Evaluate Postfix](./stack/evaluate_postfix_test.go)\n        * [Basic Calculator](./stack/basic_calculator_test.go)\n        * [Longest Valid Parentheses](./stack/longest_valid_parentheses_test.go)\n    * [Queues](./queue/README.md)\n        * [Queue Using Stacks](./queue/queue_using_stacks_test.go)\n        * [Circular Queue Array](./queue/circular_queue_using_array_test.go)\n        * [Symmetrical Binary Tree](./queue/symmetrical_binary_tree_test.go)\n        * [Generate Binary Numbers](./queue/generate_binary_numbers_test.go)\n        * [Max Sub-array of size K](./queue/max_of_sub_arrays_test.go)\n        * [String Permutations](./queue/string_permutations_test.go)\n    * [Hash Tables](./hashtable/README.md)\n        * [Find Missing Number](./hashtable/missing_number_test.go)\n        * [List Elements Summing Up to K](./hashtable/sum_up_to_k_test.go)\n        * [Fastest Way to Cut a Brick Wall](./hashtable/find_anagrams_test.go)\n        * [Smallest Missing Positive Integer](./hashtable/smallest_missing_positive_integer_test.go)\n        * [Find Anagrams](./hashtable/find_anagrams_test.go)\n        * [Find Max Points on the Same Line](./hashtable/max_points_on_line_test.go)\n    * [Trees](./tree/README.md)\n        * [Serialize Binary Tree](./tree/serialize_tree_test.go)\n        * [Evaluate A Binary Expression Tree](./tree/evaluate_expression_test.go)\n        * [Sorted Array to Balanced BST](./tree/sorted_array_to_balanced_bsd_test.go)\n        * [Traverse Binary Tree](./tree/traverse_binary_tree_test.go)\n        * [Reverse Binary Tree](./tree/reverse_binary_tree_test.go)\n        * [Autocompletion](./tree/autocompletion_test.go)\n    * [Heaps](./heap/README.md)\n        * [Kth Largest Element](./heap/kth_largest_element_test.go)\n        * [Merge Sorted Lists](./heap/merge_sorted_list_test.go)\n        * [Median in a Stream](./heap/median_in_a_stream_test.go)\n        * [Regular Numbers](./heap/regular_numbers_test.go)\n        * [Kth Closest Points to the Center](./heap/k_closest_points_to_origin_test.go)\n        * [Sliding Max](./heap/sliding_max_test.go)\n        * [Heap Sort](./heap/heap_sort_test.go)\n* Algorithms\n    * [Recursion](./recursion/README.md)\n        * [Reverse an integer recursively](./recursion/reverse_number_test.go)\n        * [Palindrome](./recursion/is_palindrome_test.go)\n        * [Climbing Stairs](./recursion/climbing_stairs_test.go)\n        * [Exponentiation](./recursion/exponentiation_test.go)\n        * [Multiplication](./recursion/multiplication_test.go)\n        * [Regular Expression Matching](./recursion/regular_expression_test.go)\n        * [Expression Operators](./recursion/expression_operators_test.go)\n    * [Divide and Conquer](./dnc/README.md)\n        * [Binary Search](./dnc/binary_search_test.go)\n        * [Square Root with Binary Search](./dnc/square_root_test.go)\n        * [Rate Limit](./dnc/rate_limit_test.go)\n        * [Towers of Hanoi](./dnc/towers_of_hanoi_test.go)\n        * [Merge Sort](./dnc/merge_sort_test.go)\n        * [Quick Sort](./dnc/quick_sort_test.go)\n    * [Bit Manipulation](./bit/README.md)\n        * [Division Without Multiplication or Division Operators](./bit/division_without_operators_test.go)\n        * [Middle Without Division](./bit/middle_without_division_test.go)\n        * [Addition Without Arithmetic Operators](./bit/addition_without_operators_test.go)\n        * [Power of Two](./bit/is_power_of_two_test.go)\n        * [Max Without Comparison Operators](./bit/max_without_comparison_operators_test.go)\n        * [Oddly Repeated Number](./bit/oddly_repeated_number_test.go)\n    * [Backtracking](./backtracking/README.md)\n        * [Permutations](./backtracking/permutations_test.go)\n        * [Generate Parentheses](./backtracking/generate_parentheses_test.go)\n        * [Phone Letter Combinations](./backtracking/phone_letter_combinations_test.go)\n        * [Maze](./backtracking/maze_test.go)\n        * [Sudoku](./backtracking/sudoku_test.go)\n        * [N Queens](./backtracking/n_queens_test.go)\n    * [Graphs](./graph/README.md)\n        * [Iteratively BFS and DFS](./graph/iterative_traversal_test.go)\n        * [DAG Graphs](./graph/is_dag_test.go)\n        * [Topological Sort](./graph/topological_sort_test.go)\n        * [Employee Headcount](./graph/employee_headcount_test.go)\n        * [Remove Invalid Parentheses](./graph/remove_invalid_parentheses_test.go)\n        * [Cheapest Flights](./graph/cheapest_flights_test.go)\n        * [Dijkstra's Algorithm](./graph/dijkstra_test.go)\n        * [Word Ladder](./graph/word_ladder_test.go)\n        * [Network Delay Time](./graph/network_delay_time_test.go)\n        * [Number of Islands](./graph/number_of_islands_test.go)\n        * [Dependency Order](./graph/dependency_order_test.go)\n    * [Greedy Algorithms](./greedy/README.md)\n        * [Max Stock Profit](./greedy/max_stock_profit_test.go)\n        * [Activity Selector](./greedy/activity_selector_test.go)\n        * [Knapsack](./greedy/knapsack_test.go)\n        * [Jump Game](./greedy/jump_game_test.go)\n        * [Max Number](./greedy/max_number_test.go)\n        * [Task Scheduling](./greedy/task_scheduling_test.go)\n    * [Dynamic Programming](./dp/README.md)\n        * [Rod Cutting](./dp/rod_cutting_test.go)\n        * [Sum Up to Number](./dp/sum_up_to_integer_test.go)\n        * [House Robber](./dp/house_robber_test.go)\n        * [Interleaving String](./dp/interleaving_string_test.go)\n        * [Min Deletions to Make a Palindrome](./dp/min_deletions_to_make_palindrome_test.go)\n        * [Word Distance](./dp/word_distance_test.go)\n\n## 📋 Outline\n\nAll topics are discussed in README.md files in the corresponding directory. Each topic includes the following sections:\n\n* 💡 **Implementation**: Overview of implementing the data structure or algorithm in Go.\n* 📊 **Complexity**: Analysis of the time and space complexity of the data structure or algorithm.\n* 🎯 **Application**: Discuss problems commonly solved using the data structure or algorithm.\n* 📝 **Rehearsal**: Practice problems with links to tests that provide 100% coverage and example inputs and outputs.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspring1843%2Fgo-dsa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspring1843%2Fgo-dsa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspring1843%2Fgo-dsa/lists"}