Back
DSAAlgorithmsProblem SolvingLeetCode

The Art of Problem Solving: 700+ DSA Problems Later

October 20, 2024
7 min read

The Art of Problem Solving: 700+ DSA Problems Later

After solving over 700 problems on LeetCode and other platforms, I've learned that success in DSA isn't about memorizing solutions—it's about developing a problem-solving mindset.

The Pattern Recognition Game

Most problems fall into recognizable patterns:

  1. Two Pointers: Sorted arrays, finding pairs
  2. Sliding Window: Subarray/substring problems
  3. Dynamic Programming: Optimization, counting paths
  4. Graph Traversal: BFS/DFS applications
  5. Binary Search: Sorted data, optimization

My Problem-Solving Framework

Step 1: Understand the Problem

  • Read the problem twice
  • Identify inputs and outputs
  • Note constraints
  • Think of edge cases

Step 2: Pattern Recognition

Ask yourself:

  • Is the data sorted? → Consider binary search
  • Need to find a pair/triplet? → Consider two pointers
  • Optimization problem? → Consider DP or greedy
  • Connected components? → Consider graph traversal

Step 3: Work Through Examples

Input: nums = [2, 7, 11, 15], target = 9
Expected: [0, 1] (because 2 + 7 = 9)

Approach: Use a hash map to store complements
- For each number, check if (target - num) exists in map

The Two Sum Evolution

The famous "Two Sum" problem teaches us a lot about optimization:

Brute Force O(n²)

java
1for (int i = 0; i < n; i++) {
2    for (int j = i + 1; j < n; j++) {
3        if (nums[i] + nums[j] == target) return new int[]{i, j};
4    }
5}

Optimized O(n)

java
1Map<Integer, Integer> map = new HashMap<>();
2for (int i = 0; i < n; i++) {
3    int complement = target - nums[i];
4    if (map.containsKey(complement)) {
5        return new int[]{map.get(complement), i};
6    }
7    map.put(nums[i], i);
8}

Consistency Over Intensity

The key to improvement is consistent practice:

  • Solve 2-3 problems daily
  • Review solutions even when you solve them
  • Learn from others' approaches
  • Practice explaining your solutions

Conclusion

Problem-solving is a skill that improves with deliberate practice. The goal isn't to solve every problem perfectly on the first try—it's to build intuition and pattern recognition over time.

Discussion

💬 Comments are powered by GitHub Discussions. Sign in with your GitHub account to leave a comment.

First time here? The comment system uses GitHub Discussions. Click the button above to sign in with GitHub. Your comments will appear both here and in the repository's discussions tab.