# Coding Interviews: Dynamic Programming

You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing each of them is that adjacent houses have security systems connected and **it will automatically contact the police if two adjacent houses were broken into on the same night**.

Given an integer array nums representing the amount of money of each house, return *the maximum amount of money you can rob tonight ***without alerting the police**.

Given two strings word1 and word2, return *the minimum number of operations required to convert **word1** to **word2*.

You have the following three operations permitted on a word:

Insert a character

Delete a character

Replace a character

Given an integer array nums, find a subarray that has the largest product, and return *the product*.

You are given an integer array nums, which contains **distinct** elements and an integer k.

A subset is called a **k-Free** subset if it contains **no** two elements with an absolute difference equal to k. Notice that the empty set is a **k-Free** subset.

Return *the number of ***k-Free*** subsets of *nums.

You are given an array prices where prices[i] is the price of a given stock on the ith day.

Find the maximum profit you can achieve. You may complete **at most two transactions**.

**Note:** You may not engage in multiple transactions simultaneously (i.e., you must sell the stock before you buy again).