| 模型 | 模型答案 | 正确答案 |
|---|---|---|
| 金声玉亮2.0 | ```python from typing import List class Solution: def maximumLength(self, nums: List[int]) -> int: def is_power_of_two(n): return (n & (n - 1)) == 0 nums_set = set(nums) max_length = 0 for num in nums_set: if num == 1: max_length = max(max_length, 1) continue current_length = 1 current_num = num while current_num * current_num in nums_set: current_num *= current_num current_length += 1 if is_power_of_two(current_length): max_length = max(max_length, current_length) return max_length ``` |
[{"input": "[5, 4, 1, 2, 2]", "output": "3", "testtype": "functional"}, {"input": "[1, 3, 2, 4]", "output": "1", "testtype": "functional"}] |
| deepseek-r1 | ```python import math from collections import defaultdict from typing import List class Solution: def maximumLength(self, nums: List[int]) -> int: freq = defaultdict(int) for num in nums: freq[num] += 1 max_len = 0 # Process all elements except 1 for y in freq: if y == 1: continue if freq[y] < 1: continue current = y steps = 0 while True: next_sqrt = math.isqrt(current) if next_sqrt * next_sqrt != current: break next_element = next_sqrt if next_element not in freq or freq[next_element] < 2: break steps += 1 current = next_element current_len = 2 * steps + 1 if current_len > max_len: max_len = current_len # Handle the case for 1 separately if 1 in freq: count_1 = freq[1] if count_1 >= 1: steps_1 = (count_1 - 1) // 2 len_1 = 2 * steps_1 + 1 if len_1 > max_len: max_len = len_1 return max_len if max_len != 0 else 1 if 1 in freq else 0 ``` |
[{"input": "[5, 4, 1, 2, 2]", "output": "3", "testtype": "functional"}, {"input": "[1, 3, 2, 4]", "output": "1", "testtype": "functional"}] |
| gpto1 | ```python class Solution: def maximumLength(self, nums: List[int]) -> int: from collections import defaultdict, Counter import math counts_numbers = Counter(nums) exponents_list = [1, 2, 4, 8, 16, 32] counts_per_x = defaultdict(dict) max_total_elements = 1 # At least one element can be taken # For e in exponents_list, compute counts_per_x[x][e] for e in exponents_list: max_x = int(pow(max(nums), 1.0 / e)) + 1 for x in range(1, max_x + 1): n = x ** e if n > max(nums): break if n in counts_numbers: counts_per_x[x][e] = counts_per_x[x].get(e, 0) + counts_numbers[n] # For each x, attempt to find the maximum n for x, exponent_counts in counts_per_x.items(): counts_e = exponent_counts exponents = [e for e in exponents_list if e in counts_e] if not exponents: continue # We can try n from length of exponents down to 0 max_n_possible = len(exponents_list) - 1 for n in range(max_n_possible, -1, -1): pattern_exponents = exponents_list[:n+1] + exponents_list[:n][::-1] counts_required = Counter(pattern_exponents) possible = True for e_req, c_req in counts_required.items(): c_have = counts_e.get(e_req, 0) if c_have < c_req: possible = False break if possible: total_elements = len(pattern_exponents) if total_elements > max_total_elements: max_total_elements = total_elements break # No need to try smaller n return max_total_elements ``` |
[{"input": "[5, 4, 1, 2, 2]", "output": "3", "testtype": "functional"}, {"input": "[1, 3, 2, 4]", "output": "1", "testtype": "functional"}] |
| gpt-4o-2024-08-06 | ```python from typing import List from collections import Counter class Solution: def maximumLength(self, nums: List[int]) -> int: # Count the frequency of each number in nums count = Counter(nums) # The maximum length of the pattern is determined by the most frequent number # because we can form a pattern like [x, x^2, x, x] or [x, x^2, x^4, x^2, x] # The pattern length is 2 * min(count[x], count[x^2]) + 1 if x^2 exists # Otherwise, it's just count[x] if x^2 does not exist max_length = 0 for x in count: # Check if x^2 exists in the count x_squared = x * x if x_squared in count: # We can form a pattern [x, x^2, x] or [x, x^2, x^4, x^2, x] # The length of the pattern is 2 * min(count[x], count[x^2]) + 1 max_length = max(max_length, 2 * min(count[x], count[x_squared]) + 1) else: # If x^2 does not exist, the pattern is just [x] max_length = max(max_length, count[x]) return max_length ``` |
[{"input": "[5, 4, 1, 2, 2]", "output": "3", "testtype": "functional"}, {"input": "[1, 3, 2, 4]", "output": "1", "testtype": "functional"}] |
| DeepSeek-Coder-V2-Lite-Instruct | ```python from typing import List from collections import defaultdict class Solution: def maximumLength(self, nums: List[int]) -> int: # Create a dictionary to store the maximum length of the pattern ending with each number dp = defaultdict(int) max_length = 0 # Iterate through each number in nums for num in nums: # Find the largest power of 2 that is less than or equal to num power = 1 while power <= num: if num % (power * power) == 0: # Update the dp dictionary with the maximum length of the pattern dp[num] = max(dp[num], dp[num // power] + 1) power *= 2 # Update the overall maximum length max_length = max(max_length, dp[num]) return max_length ``` |
[{"input": "[5, 4, 1, 2, 2]", "output": "3", "testtype": "functional"}, {"input": "[1, 3, 2, 4]", "output": "1", "testtype": "functional"}] |
| Meta-Llama-3.1-405B-Instruct-Turbo | ```python from typing import List from collections import Counter class Solution: def maximumLength(self, nums: List[int]) -> int: count = Counter(nums) max_length = 0 for num in count: length = 1 temp = num while temp ** 2 <= 10**9 and count[temp ** 2] > 0: length += 1 count[temp ** 2] -= 1 temp = temp ** 2 max_length = max(max_length, 2 * length - 1) return max_length ``` |
[{"input": "[5, 4, 1, 2, 2]", "output": "3", "testtype": "functional"}, {"input": "[1, 3, 2, 4]", "output": "1", "testtype": "functional"}] |
| Meta-Llama-3.1-70B-Instruct-Turbo | ```python from typing import List import math class Solution: def maximumLength(self, nums: List[int]) -> int: num_set = set(nums) max_length = 0 for num in num_set: length = 1 power = 1 while num ** (2 ** power) in num_set: length += 1 power += 1 power -= 1 length += power max_length = max(max_length, length) return max_length ``` |
[{"input": "[5, 4, 1, 2, 2]", "output": "3", "testtype": "functional"}, {"input": "[1, 3, 2, 4]", "output": "1", "testtype": "functional"}] |
| Qwen2-72B-Instruct | ```python class Solution: def maximumLength(self, nums: List[int]) -> int: nums.sort() n = len(nums) d = {} ans = 1 for i in range(n): d[nums[i]] = i for i in range(n): x = nums[i] j = 1 k = 1 while True: y = x**(2**j) if y > 10**9: break if y in d and d[y] > i: k += 2**j x = y j += 1 else: break if k > ans: ans = k if k & 1: k -= 1 if k > ans: ans = k return ans ``` |
[{"input": "[5, 4, 1, 2, 2]", "output": "3", "testtype": "functional"}, {"input": "[1, 3, 2, 4]", "output": "1", "testtype": "functional"}] |
| baichuan4 | ```python from typing import List class Solution: def maximumLength(self, nums: List[int]) -> int: # Create a set for faster lookups num_set = set(nums) max_length = 0 # Iterate through each number in the list for num in nums: # Check if the number is a perfect square if int(num**0.5) ** 2 == num: # Calculate the length of the sequence starting from this number length = 1 current_num = num while current_num in num_set: next_num = current_num ** 2 if next_num > 10**9: # To avoid exceeding the constraint break length *= 2 current_num = next_num # Update the maximum length found max_length = max(max_length, length) return max_length ``` |
[{"input": "[5, 4, 1, 2, 2]", "output": "3", "testtype": "functional"}, {"input": "[1, 3, 2, 4]", "output": "1", "testtype": "functional"}] |
| doubao | ```python class Solution: def maximumLength(self, nums: List[int]) -> int: max_length = 0 for num in nums: square = num * num if square in nums: fourth = square * square if fourth in nums: max_length = max(max_length, 3) return max_length ``` |
[{"input": "[5, 4, 1, 2, 2]", "output": "3", "testtype": "functional"}, {"input": "[1, 3, 2, 4]", "output": "1", "testtype": "functional"}] |
| gpto1 | ```python class Solution: def maximumLength(self, nums: List[int]) -> int: from collections import defaultdict, Counter import math counts_numbers = Counter(nums) exponents_list = [1, 2, 4, 8, 16, 32] counts_per_x = defaultdict(dict) max_total_elements = 1 # At least one element can be taken # For e in exponents_list, compute counts_per_x[x][e] for e in exponents_list: max_x = int(pow(max(nums), 1.0 / e)) + 1 for x in range(1, max_x + 1): n = x ** e if n > max(nums): break if n in counts_numbers: counts_per_x[x][e] = counts_per_x[x].get(e, 0) + counts_numbers[n] # For each x, attempt to find the maximum n for x, exponent_counts in counts_per_x.items(): counts_e = exponent_counts exponents = [e for e in exponents_list if e in counts_e] if not exponents: continue # We can try n from length of exponents down to 0 max_n_possible = len(exponents_list) - 1 for n in range(max_n_possible, -1, -1): pattern_exponents = exponents_list[:n+1] + exponents_list[:n][::-1] counts_required = Counter(pattern_exponents) possible = True for e_req, c_req in counts_required.items(): c_have = counts_e.get(e_req, 0) if c_have < c_req: possible = False break if possible: total_elements = len(pattern_exponents) if total_elements > max_total_elements: max_total_elements = total_elements break # No need to try smaller n return max_total_elements ``` |
[{"input": "[5, 4, 1, 2, 2]", "output": "3", "testtype": "functional"}, {"input": "[1, 3, 2, 4]", "output": "1", "testtype": "functional"}] |
| kimi | ```python from collections import Counter from math import isqrt class Solution: def maximumLength(self, nums: list[int]) -> int: counter = Counter(nums) max_len = 0 for num in counter: if num == 1: max_len = max(max_len, counter[num]) continue temp = num seen = set() while temp > 1 and temp not in seen: seen.add(temp) temp //= num temp_len = 1 if temp == 1 else 0 for val in seen: if val in counter: temp_len += 2 * counter[val] else: break max_len = max(max_len, temp_len) return max_len ``` |
[{"input": "[5, 4, 1, 2, 2]", "output": "3", "testtype": "functional"}, {"input": "[1, 3, 2, 4]", "output": "1", "testtype": "functional"}] |
| minimax | ```python from typing import List class Solution: def maximumLength(self, nums: List[int]) -> int: # Sort the numbers in descending order to prioritize larger numbers nums.sort(reverse=True) # Initialize the maximum length of the subset to 0 max_length = 0 # Iterate through the sorted numbers for num in nums: # Check if the current number can be the middle element of the pattern # This is true if the number is a perfect square if int(num**0.5) ** 2 == num: # If it is, we can potentially extend the pattern on both sides # The length of the pattern is determined by the power of 2 # that is closest to the square root of the number power_of_two = int(num**0.5) # The length of the pattern is 2 * power_of_two + 1 # We add 1 for the middle element and 2 * power_of_two for the rest pattern_length = 2 * power_of_two + 1 # Update the maximum length if this pattern is longer max_length = max(max_length, pattern_length) |
[{"input": "[5, 4, 1, 2, 2]", "output": "3", "testtype": "functional"}, {"input": "[1, 3, 2, 4]", "output": "1", "testtype": "functional"}] |
| wenxinyiyan | ```python from collections import Counter from typing import List class Solution: def maximumLength(self, nums: List[int]) -> int: counter = Counter(nums) max_length = 0 for num in counter: power_of_two = num length = 1 while power_of_two * power_of_two <= num * num: power_of_two *= power_of_two while power_of_two >= num: if power_of_two in counter: length += 2 counter[power_of_two] -= 1 if counter[power_of_two] == 0: del counter[power_of_two] power_of_two //= power_of_two if num != 1 and power_of_two == num: break max_length = max(max_length, length) return max_length ``` **Explanation**: The solution uses a `Counter` to count the occurrences of each number in the input list `nums`. Then, it iterates over each unique number in the `Counter`. For each number, it calculates the maximum power of 2 that can be reached by squaring the number repeatedly. This is done by repeatedly squaring the `power_of_two` variable until it exceeds the square of the current number. Next, it checks if the `power_of_two` values (starting from the maximum calculated power and dividing by 2 each time) exist in the `Counter`. If they do, it increments the `length` by 2 (since we are adding both `x^k` and `x^k/2`) and removes one occurrence of the `power_of_two` from the `Counter`. The process continues until the `power_of_two` becomes less than the current number. However, if the current number is not 1, and the `power_of_two` becomes equal to the current number, we break the loop to avoid counting the number itself twice (once as `x^k` and once as `x`). Finally, the maximum length found so far is updated if the current length is greater, and the process continues for the next unique number in the `Counter`. After iterating over all unique numbers, the maximum length is returned as the result. **Note**: The solution assumes that the input list `nums` contains only positive integers, as specified in the problem constraints. |
[{"input": "[5, 4, 1, 2, 2]", "output": "3", "testtype": "functional"}, {"input": "[1, 3, 2, 4]", "output": "1", "testtype": "functional"}] |
| zhipu | ```python from collections import Counter from typing import List class Solution: def maximumLength(self, nums: List[int]) -> int: # Count the frequency of each number in nums freq = Counter(nums) # Sort the unique numbers in descending order unique_nums = sorted(freq.keys(), reverse=True) # Initialize the maximum length of the subset max_length = 1 # Iterate over each number in unique_nums for num in unique_nums: # Start with the current number as the base of the pattern current_length = 1 current_power = num # Try to build the pattern [x, x^2, x^4, ..., x^k/2, x^k, x^k/2, ..., x^4, x^2, x] while current_power in freq: # Decrease the frequency since we are using this number freq[current_power] -= 1 # If the frequency becomes zero, remove it from the counter if freq[current_power] == 0: del freq[current_power] # Calculate the next power next_power = current_power ** 2 # Check if the next power is still in the list and we can continue the pattern if next_power in freq and freq[next_power] > 0: current_length += 2 # We can add both x^k/2 and x^k current_power = next_power else: break # Update the maximum length found so far max_length = max(max_length, current_length) return max_length ``` |
[{"input": "[5, 4, 1, 2, 2]", "output": "3", "testtype": "functional"}, {"input": "[1, 3, 2, 4]", "output": "1", "testtype": "functional"}] |
| deepseek-v3 | ```python from collections import defaultdict class Solution: def maximumLength(self, nums: List[int]) -> int: count = defaultdict(int) for num in nums: count[num] += 1 max_len = 1 for num in sorted(count.keys(), reverse=True): if num == 1: continue current_len = 1 x = num while x * x in count: if x == x * x: current_len += count[x] - 1 break current_len += 1 x = x * x max_len = max(max_len, current_len * 2 - 1) # Handle the case when the max_len is 1 and there are multiple 1s if count[1] > 0: max_len = max(max_len, count[1] if count[1] % 2 == 1 else count[1] - 1) return max_len ``` |
[{"input": "[5, 4, 1, 2, 2]", "output": "3", "testtype": "functional"}, {"input": "[1, 3, 2, 4]", "output": "1", "testtype": "functional"}] |