Link: https://leetcode.com/problems/length-of-the-longest-subsequence-that-sums-to-target/ Solution: Topics: DP Intuition This is a very simple 2d DP problem…classic take/skip pattern. For some reason leetcode is punishing the cached python top down solution with MLE, so we will just pre-define the memo as an array. Implementation def longest_sub(nums, target): dp = [[-1 for _ in range(1, target + 1)] for _ in range(len(nums))] def dfs(i, curr_sum): if curr_sum == target: return 0 if curr_sum > target or i == len(nums): return float('-inf') if dp[i][curr_sum] != -1: return dp[i][curr_sum] take = 1 + dfs(i+1, curr_sum + nums[i]) skip = dfs(i+1, curr_sum) dp[i][curr_sum] = max(take, skip) return dp[i][curr_sum] return max(dfs(0, 0), -1) #time: o(n*m) n = len(nums) m = target #memory: o(n*m) review