1. 解题思路
这一题其实就是一个动态规划的题目,本身没啥难的,只不过最开始用cache来偷懒的时候遇到了内存超标的情况,估摸着是leetcode终于开始修掉这个bug了,不过整体上也就那样了,重新用数组的方式对其进行一下调整就行了,问题不大……
2. 代码实现
给出python代码实现如下:
class Solution:
def lengthOfLongestSubsequence(self, nums: List[int], target: int) -> int:
nums = sorted(nums)
n = len(nums)
dp = [0] + [-1 for _ in range(target)]
for num in nums:
if num > target:
continue
for i in range(target-num, -1, -1):
if dp[i] >= 0:
dp[i+num] = max(dp[i+num], 1 + dp[i])
return dp[target]
提交代码评测得到:耗时2171ms,占用内存16.4MB。