针对每个可能的residual爆搜
有偷看别人答案
我好烂
def maximumLength(self, nums: List[int], k: int) -> int:
res_arr = [num%k for num in nums]
ans = -1
for res in range(k):
dp = [-1 for _ in range(len(nums))]
mp = {}
for i in range(0, len(nums)):
if (res+k-(nums[i]%k))%k in mp:
j = mp[(res+k-(nums[i]%k))%k]
dp[i] = dp[j]+1
else:
dp[i] = 1 # ???
mp[nums[i]%k]=i
ans = max(ans, dp[i])
return ans