| 模型 | 模型答案 | 正确答案 |
|---|---|---|
| 金声玉亮2.0 | ```python from typing import List class Solution: def maxSelectedElements(self, nums: List[int]) -> int: nums.sort() max_len = 1 current_len = 1 for i in range(1, len(nums)): if nums[i] - nums[i - 1] <= 1: current_len += 1 else: max_len = max(max_len, current_len) current_len = 1 max_len = max(max_len, current_len) return max_len ``` |
[{"input": "[2, 1, 5, 1, 1]", "output": "3", "testtype": "functional"}, {"input": "[1, 4, 7, 10]", "output": "1", "testtype": "functional"}] |
| deepseek-r1 | ```python from collections import defaultdict from typing import List class Solution: def maxSelectedElements(self, nums: List[int]) -> int: nums.sort() dp = defaultdict(int) for x in nums: new_x = dp.get(x - 1, 0) + 1 if new_x > dp[x]: dp[x] = new_x new_x_plus_1 = dp.get(x, 0) + 1 if new_x_plus_1 > dp[x + 1]: dp[x + 1] = new_x_plus_1 return max(dp.values()) if dp else 0 ``` |
[{"input": "[2, 1, 5, 1, 1]", "output": "3", "testtype": "functional"}, {"input": "[1, 4, 7, 10]", "output": "1", "testtype": "functional"}] |
| gpto1 | ```python class Solution: def maxSelectedElements(self, nums: List[int]) -> int: events = [] for num in nums: events.append( (num, +1) ) events.append( (num+2, -1) ) events.sort() current_cover = 0 max_length = 0 current_length = 0 prev_position = None for position, delta in events: current_cover += delta if current_cover > 0: if prev_position is not None and position == prev_position + 1: current_length +=1 elif prev_position is not None and position == prev_position: # Same position event, current_length remains pass else: current_length =1 max_length = max(max_length, current_length) else: current_length =0 prev_position = position return max_length ``` |
[{"input": "[2, 1, 5, 1, 1]", "output": "3", "testtype": "functional"}, {"input": "[1, 4, 7, 10]", "output": "1", "testtype": "functional"}] |
| gpt-4o-2024-08-06 | ```python class Solution: def maxSelectedElements(self, nums: List[int]) -> int: from collections import Counter # Count the frequency of each number in the array count = Counter(nums) # Initialize the maximum length of consecutive elements max_consecutive = 0 # Iterate over each unique number in the array for num in count: # Calculate the possible consecutive sequence length # by considering num, num+1, and num+2 current_consecutive = count[num] + count.get(num + 1, 0) + count.get(num + 2, 0) # Update the maximum length if the current is greater max_consecutive = max(max_consecutive, current_consecutive) return max_consecutive ``` |
[{"input": "[2, 1, 5, 1, 1]", "output": "3", "testtype": "functional"}, {"input": "[1, 4, 7, 10]", "output": "1", "testtype": "functional"}] |
| Qwen2-72B-Instruct | ```python class Solution: def maxSelectedElements(self, nums: List[int]) -> int: nums.sort() dp = [[1]*2 for _ in range(len(nums))] for i in range(1, len(nums)): if nums[i] == nums[i-1]: dp[i][0] = dp[i-1][0] + 1 dp[i][1] = dp[i-1][1] elif nums[i] == nums[i-1] + 1: dp[i][0] = dp[i-1][0] dp[i][1] = dp[i-1][1] + 1 elif nums[i] == nums[i-1] + 2: dp[i][0] = dp[i-1][1] dp[i][1] = dp[i-1][0] else: dp[i][0] = dp[i][1] = 1 return max(max(x) for x in dp) ``` |
[{"input": "[2, 1, 5, 1, 1]", "output": "3", "testtype": "functional"}, {"input": "[1, 4, 7, 10]", "output": "1", "testtype": "functional"}] |
| DeepSeek-Coder-V2-Lite-Instruct | ```python from typing import List class Solution: def maxSelectedElements(self, nums: List[int]) -> int: nums.sort() max_length = 0 for i in range(len(nums)): for j in range(i, len(nums)): if all(nums[k] + 1 >= nums[k+1] for k in range(i, j)): max_length = max(max_length, j - i + 1) return max_length ``` |
[{"input": "[2, 1, 5, 1, 1]", "output": "3", "testtype": "functional"}, {"input": "[1, 4, 7, 10]", "output": "1", "testtype": "functional"}] |
| Meta-Llama-3.1-405B-Instruct-Turbo | ```python from typing import List class Solution: def maxSelectedElements(self, nums: List[int]) -> int: nums.sort() max_length = 1 current_length = 1 for i in range(1, len(nums)): if nums[i] - nums[i - 1] <= 1: current_length += 1 else: max_length = max(max_length, current_length) current_length = 1 return max(max_length, current_length) ``` |
[{"input": "[2, 1, 5, 1, 1]", "output": "3", "testtype": "functional"}, {"input": "[1, 4, 7, 10]", "output": "1", "testtype": "functional"}] |
| Meta-Llama-3.1-70B-Instruct-Turbo | ```python class Solution: def maxConsecutive(self, nums: List[int]) -> int: nums.sort() count = 1 max_count = 1 prev = nums[0] for num in nums[1:]: if num == prev or num == prev + 1: count += 1 else: max_count = max(max_count, count) count = 1 prev = num return max(max_count, count) ``` |
[{"input": "[2, 1, 5, 1, 1]", "output": "3", "testtype": "functional"}, {"input": "[1, 4, 7, 10]", "output": "1", "testtype": "functional"}] |
| baichuan4 | ```python from typing import List class Solution: def maxSelectedElements(self, nums: List[int]) -> int: # Sort the array nums.sort() # Initialize variables to keep track of the current sequence length and the maximum sequence length current_sequence_length = 1 max_sequence_length = 1 # Iterate through the sorted array for i in range(1, len(nums)): # If the current element is one more than the previous element, extend the current sequence if nums[i] == nums[i - 1] + 1: current_sequence_length += 1 # Update the maximum sequence length if the current sequence is longer max_sequence_length = max(max_sequence_length, current_sequence_length) else: # Reset the current sequence length to 1 current_sequence_length = 1 return max_sequence_length ``` |
[{"input": "[2, 1, 5, 1, 1]", "output": "3", "testtype": "functional"}, {"input": "[1, 4, 7, 10]", "output": "1", "testtype": "functional"}] |
| doubao | ```python class Solution: def maxSelectedElements(self, nums: List[int]) -> int: nums.sort() max_count = 1 count = 1 for i in range(1, len(nums)): if nums[i] == nums[i - 1] + 1: count += 1 else: count = 1 max_count = max(max_count, count) return max_count ``` |
[{"input": "[2, 1, 5, 1, 1]", "output": "3", "testtype": "functional"}, {"input": "[1, 4, 7, 10]", "output": "1", "testtype": "functional"}] |
| gpto1 | ```python class Solution: def maxSelectedElements(self, nums: List[int]) -> int: events = [] for num in nums: events.append( (num, +1) ) events.append( (num+2, -1) ) events.sort() current_cover = 0 max_length = 0 current_length = 0 prev_position = None for position, delta in events: current_cover += delta if current_cover > 0: if prev_position is not None and position == prev_position + 1: current_length +=1 elif prev_position is not None and position == prev_position: # Same position event, current_length remains pass else: current_length =1 max_length = max(max_length, current_length) else: current_length =0 prev_position = position return max_length ``` |
[{"input": "[2, 1, 5, 1, 1]", "output": "3", "testtype": "functional"}, {"input": "[1, 4, 7, 10]", "output": "1", "testtype": "functional"}] |
| kimi | ```python from typing import List class Solution: def maxSelectedElements(self, nums: List[int]) -> int: nums.sort() left, right = 0, 0 res = 0 while right < len(nums): if nums[right] - nums[left] < right - left + 1: right += 1 else: left += 1 res = max(res, right - left + 1) return res ``` |
[{"input": "[2, 1, 5, 1, 1]", "output": "3", "testtype": "functional"}, {"input": "[1, 4, 7, 10]", "output": "1", "testtype": "functional"}] |
| minimax | ```python from typing import List class Solution: def maxSelectedElements(self, nums: List[int]) -> int: # Sort the array to find the longest consecutive sequence nums.sort() # Initialize variables to keep track of the maximum length of consecutive elements # and the current length of consecutive elements max_length = 1 current_length = 1 # Iterate through the sorted array for i in range(1, len(nums)): # If the current element is one more than the previous element, # it is consecutive, so increase the current length if nums[i] == nums[i - 1] + 1: current_length += 1 else: # Otherwise, update the maximum length if the current length is greater max_length = max(max_length, current_length) # Reset the current length to 1 for the new sequence current_length = 1 # Update the maximum length one last time after the loop ends max_length = max(max_length, current_length) return max_length # Example usage: # sol = Solution() # print(sol.maxSelectedElements([2,1,5,1,1 |
[{"input": "[2, 1, 5, 1, 1]", "output": "3", "testtype": "functional"}, {"input": "[1, 4, 7, 10]", "output": "1", "testtype": "functional"}] |
| wenxinyiyan | ```python from typing import List import bisect class Solution: def maxSelectedElements(self, nums: List[int]) -> int: # Sort the array and create a new array to store the differences between adjacent elements nums.sort() diffs = [nums[0]] + [nums[i] - nums[i-1] for i in range(1, len(nums))] # Create a list to store the cumulative maximum possible consecutive elements max_consecutive = [1] * len(nums) # Iterate through the differences array for i in range(1, len(diffs)): # If the difference is greater than 1, we can't extend the consecutive sequence if diffs[i] > 1: continue # Use binary search to find the maximum possible consecutive elements idx = bisect.bisect_right(diffs, diffs[i] + 1, 0, i) if idx < len(diffs): max_consecutive[idx] = max(max_consecutive[idx], max_consecutive[i-1] + 1) # Return the maximum possible consecutive elements return max(max_consecutive) # Test the solution sol = Solution() print(sol.maxSelectedElements([2,1,5,1,1])) # Output: 3 print(sol.maxSelectedElements([1,4,7,10])) # Output: 1 ``` **Note**: The provided solution has a time complexity of O(n log n) due to the sorting and binary search operations. However, there might be more optimized solutions possible for this problem. **Update**: After further analysis, the above solution does not fully address the problem as stated. The correct approach involves a different strategy using frequency arrays and sliding windows. Here's an updated solution: ```python from typing import List from collections import defaultdict class Solution: def maxSelectedElements(self, nums: List[int]) -> int: # Create a frequency dictionary for the original elements freq = defaultdict(int) for num in nums: freq[num] += 1 # Create a sorted list of unique elements unique_nums = sorted(list(freq.keys())) # Initialize variables for the sliding window approach left = 0 max_count = 0 current_count = 0 # Iterate through the unique elements using a sliding window for right in range(len(unique_nums)): # Expand the window by including the current element current_count += freq[unique_nums[right]] # Contract the window from the left if necessary while unique_nums[right] - unique_nums[left] >= len(unique_nums) - right + left: current_count -= freq[unique_nums[left]] left += 1 # Update the maximum count of consecutive elements max_count = max(max_count, current_count) # The maximum count can be increased by 1 if there are duplicate elements if len(unique_nums) < len(nums): max_count += 1 return max_count # Test the solution sol = Solution() print(sol.maxSelectedElements([2,1,5,1,1])) # Output: 3 print(sol.maxSelectedElements([1,4,7,10])) # Output: 1 ``` This updated solution uses a sliding window approach to find the maximum number of consecutive elements after potentially increasing some elements by 1. It has a time complexity of O(n log n) due to the sorting operation. |
[{"input": "[2, 1, 5, 1, 1]", "output": "3", "testtype": "functional"}, {"input": "[1, 4, 7, 10]", "output": "1", "testtype": "functional"}] |
| zhipu | ```python class Solution: def maxSelectedElements(self, nums: List[int]) -> int: nums.sort() dp = [1] * len(nums) for i in range(1, len(nums)): if nums[i] == nums[i - 1] or nums[i] == nums[i - 1] + 1: dp[i] = dp[i - 1] + 1 return max(dp) ``` |
[{"input": "[2, 1, 5, 1, 1]", "output": "3", "testtype": "functional"}, {"input": "[1, 4, 7, 10]", "output": "1", "testtype": "functional"}] |
| deepseek-v3 | ```python class Solution: def maxSelectedElements(self, nums: List[int]) -> int: # Sort the array to facilitate the search for consecutive elements nums.sort() max_count = 1 current_count = 1 for i in range(1, len(nums)): # Check if the current element can be consecutive with the previous one # by either keeping it as is or increasing it by 1 if nums[i] == nums[i-1] or nums[i] == nums[i-1] + 1: current_count += 1 max_count = max(max_count, current_count) else: current_count = 1 return max_count ``` |
[{"input": "[2, 1, 5, 1, 1]", "output": "3", "testtype": "functional"}, {"input": "[1, 4, 7, 10]", "output": "1", "testtype": "functional"}] |