classSolution { public: intmaximumLength(vector<int>& nums, int k){ vector<vector<int>> dp(k, vector<int>(k)); int ans = 0; for (int x : nums) { x %= k; for (int y = 0; y < k; y++) { dp[y][x] = dp[x][y] + 1; ans = max(ans, dp[y][x]); } } return ans; } };
classSolution: defmaximumLength(self, nums: List[int], k: int) -> int: dp = [[0] * k for _ inrange(k)] for x in nums: x %= k for y inrange(k): dp[y][x] = dp[x][y] + 1 returnmax(map(max, dp))
funcmaximumLength(nums []int, k int) (ans int) { dp := make([][]int, k) for i := range dp { dp[i] = make([]int, k) } for _, x := range nums { x %= k for y := range dp { dp[y][x] = dp[x][y] + 1 ans = max(ans, dp[y][x]) } } return }
classSolution { public: intmaximumLength(vector<int>& nums, int k){ int ans = 0; for (int res = 0; res < k; res++) { vector<int> dp(k); for (int x : nums) { x %= k; int y = (res - x + k) % k; dp[y] = dp[x] + 1; // 不需要max(dp[y], dp[x] + 1),因为dp[y]一定拼接自dp[x],x和y互为一对儿 ans = max(ans, dp[y]); } } return ans; } };
funcmaximumLength(nums []int, k int) (ans int) { for res := 0; res < k; res++ { dp := make([]int, k) for _, a := range nums { a %= k dp[a] = dp[(res - a + k) % k] + 1 ans = max(ans, dp[a]) } } return }