Greedy algorithms make locally optimal choices at each step, hoping to find a global optimum. The key insight is proving that greedy choices lead to an optimal solution. Master recognizing when greedy works and why.
A globally optimal solution can be reached by making locally optimal choices. At each step, pick the best option without reconsidering previous decisions.
An optimal solution contains optimal solutions to its subproblems. This allows us to build the solution incrementally.
Not all problems have greedy solutions. If local optima don't lead to global optimum (like 0/1 Knapsack), consider Dynamic Programming instead.