1D Dynamic Programming

Advanced & DP

Linear recurrence relations, state machines, and optimal decision subproblems

561 problems·14 Easy·280 Medium·267 Hard
Pattern Study Guide & Cheat Sheet
▼

Break a sequential decision problem into overlapping subproblems governed by a recurrence relation dp[i] = f(dp[i-1], dp[i-2], ...), caching intermediate states to avoid exponential recomputation.

Core Invariant: State definition must capture all information needed for future transitions. E.g., `dp[i]` = best answer considering elements up to `i`. Once `dp[i]` is computed, prior steps never need re-evaluation.

Recognize it (Keywords & Signals)
  • Number of ways to reach step N / amount
  • Maximum profit without taking adjacent items (House Robber)
  • Minimum cost / coins to form total amount
  • Longest increasing subsequence
  • Word break / decode ways
When NOT to use

Decisions have circular dependencies or no optimal substructure (e.g. past decisions invalidate state without being captured in state index).

How to solve (Step-by-step)
  1. 1.Define state in plain words: what does `dp[i]` store?
  2. 2.Identify recurrence relation: how does `dp[i]` depend on `dp[i-1]`, `dp[i-2]`, etc.?
  3. 3.Identify base cases: `dp[0] = 0`, `dp[1] = ...`.
  4. 4.Determine computation order: iterate bottom-up from 1 to N.
  5. 5.Space optimization: if `dp[i]` only relies on the last K states, replace array with K variables for O(1) space.
Watch for (Interview Traps)
  • Array indexing off-by-one (e.g. allocating `dp` of size `n` instead of `n + 1` for 1-indexed amounts)
  • Initializing with 0 instead of `infinity` for minimization problems (e.g. Coin Change)
  • Premature space optimization before verifying the recurrence on edge cases
1D DP Tabulation & Space Optimization (House Robber)
def rob(nums: list[int]) -> int:
    if not nums:
        return 0
    if len(nums) == 1:
        return nums[0]
        
    # State: dp[i] = max money robbing from house 0..i
    # Transition: dp[i] = max(dp[i-1], dp[i-2] + nums[i])
    # Space optimized: only need previous two values
    prev2 = nums[0]
    prev1 = max(nums[0], nums[1])
    
    for i in range(2, len(nums)):
        curr = max(prev1, prev2 + nums[i])
        prev2 = prev1
        prev1 = curr
        
    return prev1
Cost
O(n) [or O(n * amount)] · O(n) array, reducible to O(1) with rolling variables (Reduces exponential 2^n recursion to linear O(n).)
Canonical problems
#70 Climbing Stairs: Fibonacci recurrence: dp[i] = dp[i-1] + dp[i-2]
#198 House Robber: Pick or skip adjacent: max(skip, take + prev2)
#322 Coin Change: Unbounded knapsack: min(dp[a - coin] + 1)
#300 Longest Increasing Subsequence: dp[i] = 1 + max(dp[j]) for all j < i where nums[j] < nums[i]
Easy·103 companies·Max freq 100%·Acc 57.0%
FanaticsQualysMillennium+100
Medium·89 companies·Max freq 100%·Acc 38.2%
CiscoHSBCBending Spoons+86
Hard·84 companies·Max freq 100%·Acc 67.7%
Goldman SachsThousandEyesPublicis Sapient+81
Medium·69 companies·Max freq 100%·Acc 53.5%
UpstartTech MahindraSquarepoint Capital+66
Medium·48 companies·Max freq 100%·Acc 48.7%
RupeekDatadogGeico+45
Medium·44 companies·Max freq 100%·Acc 53.4%
CiscoFreechargeCARS24+41
Easy·44 companies·Max freq 100%·Acc 54.2%
HPEHSBCAdobe+41
Medium·44 companies·Max freq 100%·Acc 78.9%
BlackBuckTexas InstrumentsZenefits+41
Medium·39 companies·Max freq 100%·Acc 41.2%
TomTomTecholutionNike+36
Medium·37 companies·Max freq 100%·Acc 49.6%
HexawareCoupangSquare+34
Medium·34 companies·Max freq 100%·Acc 59.7%
SplunkSamsungPayPal+31
Medium·33 companies·Max freq 100%·Acc 43.1%
ZulilyTomTomPhonePe+30
Medium·30 companies·Max freq 100%·Acc 71.3%
CTC Global Sdn BhdCareemToast+27
Medium·30 companies·Max freq 100%·Acc 0.5%
GSA CapitalOPPOWise+27
Medium·30 companies·Max freq 100%·Acc 38.2%
GravitonOscar HealthNetApp+27
Hard·30 companies·Max freq 100%·Acc 42.5%
BaiduDoorDashWix+27
Medium·29 companies·Max freq 100%·Acc 73.0%
CitadelNetskopePure Storage+26
Hard·29 companies·Max freq 100%·Acc 31.2%
NetskopeXX+26
Medium·28 companies·Max freq 100%·Acc 36.7%
DelhiveryLinkedInAdobe+25
Hard·27 companies·Max freq 100%·Acc 39.1%
NikeNykaaRoku+24
Medium·26 companies·Max freq 77%·Acc 60.9%
SwiggyZohoNeetCode 150+23
Medium·25 companies·Max freq 67%·Acc 67.0%
NeetCode 150Blind 75NeetCode 150+22
Hard·24 companies·Max freq 100%·Acc 60.9%
YugabyteBaiduZeta Global+21
Hard·24 companies·Max freq 100%·Acc 54.8%
Pony.aiPony.aiAirbnb+21
Medium·24 companies·Max freq 88%·Acc 59.3%
micro1OptumNeetCode 150+21
Medium·23 companies·Max freq 100%·Acc 0.4%
HTCMakeMyTripStripe+20
Medium·23 companies·Max freq 90%·Acc 57.4%
GrammarlyVerkadaZoho+20
Medium·23 companies·Max freq 78%·Acc 45.2%
DatabricksNeetCode 150Blind 75+20
Medium·21 companies·Max freq 100%·Acc 40.3%
AlibabaPornhubMotive+18
Hard·21 companies·Max freq 93%·Acc 56.8%
DoorDashWeRideDuolingo+18
Hard·20 companies·Max freq 100%·Acc 32.3%
CyntexaXX+17
Medium·20 companies·Max freq 100%·Acc 0.5%
ToyotaeBayDream11+17
Hard·19 companies·Max freq 100%·Acc 63.9%
SamsungSnapSnap+16
Hard·19 companies·Max freq 100%·Acc 55.8%
DropboxXX+16
Easy·19 companies·Max freq 100%·Acc 0.8%
XBank of AmericaX+16
Hard·19 companies·Max freq 100%·Acc 0.4%
Argo AIVerilyMedia.net+16
Easy·18 companies·Max freq 100%·Acc 74.3%
HTCLTIMindtreeCognizant+15
Medium·18 companies·Max freq 100%·Acc 68.5%
SpaceXTexas InstrumentsGoldman Sachs+15
Hard·17 companies·Max freq 100%·Acc 48.0%
DE ShawGravitonMathWorks+14
Medium·17 companies·Max freq 100%·Acc 63.3%
MolocoTwo SigmaWix+14
Easy·17 companies·Max freq 88%·Acc 0.5%
Fractal AnalyticsTinkoffWix+14
Hard·17 companies·Max freq 83%·Acc 0.6%
WorldQuantZeta GlobalArcesium+14
Medium·16 companies·Max freq 100%·Acc 59.6%
PornhubMastercardNeetCode 150+13
Hard·16 companies·Max freq 100%·Acc 52.2%
SwiggyMeeshoNeetCode 150+13
Medium·16 companies·Max freq 69%·Acc 65.7%
MAQ SoftwareNutanixLinkedIn+13
Medium·15 companies·Max freq 88%·Acc 0.4%
ZS AssociatesAvitoSprinklr+12
Hard·15 companies·Max freq 82%·Acc 0.5%
TekionSnapSnap+12
Hard·14 companies·Max freq 100%·Acc 0.5%
PinterestZScalerVirtu Financial+11
Hard·14 companies·Max freq 100%·Acc 51.0%
Akuna CapitalTower Research CapitalDE Shaw+11
Medium·14 companies·Max freq 100%·Acc 0.7%
scalerNeetCode 150NeetCode 150+11
50 displayed (of 50 matching)Filtered: All Companies

Top Companies Testing 1D Dynamic Programming

Browse company-specific interview problem lists and recency breakdowns:

Explore All 22 DSA Coding Patterns

Master core algorithmic patterns tested in FAANG & Big Tech coding interviews.

Patterns Hub

1D Dynamic Programming frequently asked questions

What is the 1D Dynamic Programming pattern in coding interviews?

Linear recurrence relations, state machines, and optimal decision subproblems It is categorized under Advanced & DP and features 561 curated interview problems across Easy (14), Medium (280), and Hard (267) difficulties.

Which tech companies frequently test 1D Dynamic Programming?

Companies frequently asking 1D Dynamic Programming questions include Google, Amazon, Microsoft, Meta, Bloomberg, Infosys.

How do I master the 1D Dynamic Programming pattern?

Start by studying the algorithmic strategy and template code, then practice Easy and Medium problems before attempting Hard problems under timed conditions.