Skip to content

About

A collection of mathematical problems, algorithms, and data structures implemented in Go to strengthen computational thinking, problem-solving skills, and algorithmic efficiency.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

Go Problem Solving

A collection of mathematical problems, algorithms, and data structures implemented in Go to strengthen computational thinking, problem-solving skills, and algorithmic efficiency.

Overview

This repository documents my journey toward becoming a stronger problem solver through consistent practice with Go.

The focus is on understanding problems, developing algorithms, translating logical solutions into working code, and improving computational efficiency.

The goal is not simply to solve problems, but to understand why solutions work, how they perform, and how they can be improved.

Topics

  • Mathematics: Number theory, prime numbers, combinatorics, sequences, and arithmetic problems.
  • Arrays & Strings: Searching, manipulation, two pointers, and sliding windows.
  • Sorting & Searching: Binary search, merge sort, quicksort, and other fundamental algorithms.
  • Data Structures: Linked lists, stacks, queues, hash tables, heaps, and trees.
  • Recursion & Backtracking: Recursive algorithms, permutations, and combinatorial problems.
  • Graphs: Graph traversal, BFS, DFS, shortest paths, and connectivity.
  • Bit Manipulation: Binary operations, bitwise algorithms, and optimization techniques.
  • Dynamic Programming: Memoization, tabulation, and optimization problems.
  • Problem Challenges: LeetCode, Project Euler, and other algorithmic exercises.

Repository Structure

go-problem-solving/
├── mathematics/
├── arrays-and-strings/
├── searching/
├── sorting/
├── linked-lists/
├── stacks-and-queues/
├── trees/
├── graphs/
├── bit-manipulation/
├── recursion/
├── dynamic-programming/
├── project-euler/
└── README.md

Directories will be introduced progressively as problems are completed.

Problem-Solving Approach

Each problem follows a consistent process:

  1. Understand: Identify the requirements, constraints, inputs, and expected outputs.
  2. Reason: Break the problem into smaller logical steps.
  3. Design: Develop an algorithm or pseudocode before implementation.
  4. Implement: Translate the solution into Go without relying on generated solutions.
  5. Test: Verify correctness using unit tests and edge cases.
  6. Analyze: Determine time and space complexity.
  7. Optimize: Explore alternative approaches where appropriate.
  8. Review: Revisit previous problems to reinforce understanding.

Testing

Solutions are tested using Go's built-in testing package.

Where applicable, tests include:

  • Normal inputs
  • Boundary conditions
  • Edge cases
  • Invalid inputs
  • Performance benchmarks

Run tests:

go test ./...

Run benchmarks:

go test -bench=. ./...

Learning Principles

  • Prioritize understanding over memorization.
  • Solve problems independently before consulting references.
  • Prefer Go's standard library.
  • Write readable and maintainable solutions.
  • Understand the tradeoffs between different approaches.
  • Practice consistently and revisit challenging problems.
  • Treat testing and complexity analysis as part of problem solving.

Resources

Philosophy

Understand the problem. Design the algorithm. Write the code. Test the solution. Improve the approach.

Progress is measured by the ability to independently solve, explain, and optimize problems,not merely by the number of completed exercises.

About

A collection of mathematical problems, algorithms, and data structures implemented in Go to strengthen computational thinking, problem-solving skills, and algorithmic efficiency.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages