Search⌘ K
AI Features

House Thief Problem

Explore the House Thief Problem and learn to apply dynamic programming patterns to optimize solutions. Understand how to maximize the amount stolen without robbing adjacent houses by comparing naive recursion, memoization, and tabulation approaches. This lesson equips you with techniques to improve algorithm efficiency in coding interviews.

Statement

You are a professional robber, and after weeks of planning, you plan to rob some houses along a street. Each of these houses has a lot of money and valuables. Let’s say that you cannot rob houses adjacent to each other since they have security and burglar alarms installed.

Following the above-mentioned constraint and given an integer array, money, that represents the amount of money in each house, return the maximum amount of money you can steal tonight without alerting the police.

Let’s say you have an array of money as follows:

  • money: [1, 2, 3, 4, 5]

Considering we cannot rob the adjacent houses, we have six possible combinations that can possibly yield a substantial amount. Out of these combinations, we'll find one that yields the maximum money. The possible combinations are as under:

  • 1+3+5=91+3 +5 = 9

  • 1+4=51+4 = 5

  • 1+5=61+5 = 6

  • 2+4=62+4 = 6

  • 2+5=72+5 = 7

  • ...