maskup
Senior Member
Q4code ông này nhìn giống code t phết.
Python:class Solution: def maximumLength(self, nums: List[int], k: int) -> int: @cache def dfs(idx, num_diff): if num_diff > k or idx == len(nums): return 0 ret = 1 for i in range(idx + 1, len(nums)): ret = max(ret, 1 + dfs(i, num_diff + int(nums[idx] != nums[i]))) return ret return max(dfs(i, 0) for i in range(len(nums)))
Mà bài 4 làm ntn bị TLE. tối ưu ntn thế?![]()
Python:
class Solution:
def maximumLength(self, nums: List[int], k: int) -> int:
n = len(nums)
dp = [[0] * n for _ in range(k + 1)]
for diff in range(k + 1):
posMap = {}
prefixMax = 0
for end in range(n):
dp[diff][end] = 1 + max(
prefixMax if k - 1 >= 0 and end - 1 >= 0 else 0,
dp[diff][posMap[nums[end]]] if nums[end] in posMap else 0
)
prefixMax = max(prefixMax, dp[diff - 1][end] if diff > 0 else 0)
posMap[nums[end]] = end
return max(dp[k])
. Chắc do quen code dp kiểu top-down rồi. Chắc phải chuyển qua luyện viết bottom-up dần thôi.


.
