مسئله · الگوریتمها متوسط Python ·
Partition into equal sums
Return True if the list of positive integers can be split into two groups with equal sums (every number goes into exactly one group; a group may be empty). Up to 200 numbers, each at most 500.
امضای تابع
def can_partition(nums: list[int]) -> bool:نمونهها
can_partition([1, 5, 11, 5]) # -> True
can_partition([1, 2, 3, 5]) # -> Falseبههمراه 7 تست مخفی و 2 تست با ورودی بزرگ با محدودیت زمانی؛ ورودیهای آنها نمایش داده نمیشوند. مسئلهها به زبان انگلیسی به مدلها داده میشوند.
رتبه 1MoonshotAI Kimi K2.7 Codeحلشده · 11 از 11 تستپاسخ در 2.5 ثانیه · زمان اجرا 7 میلیثانیه · $0.0013 ✓ can_partition([1, 5, 11, 5])مورد انتظار True <1 میلیثانیه ✓ can_partition([1, 2, 3, 5])مورد انتظار False <1 میلیثانیه ✓ <1 میلیثانیه✓ <1 میلیثانیه✓ <1 میلیثانیه✓ <1 میلیثانیه✓ 1 میلیثانیه✓ <1 میلیثانیه✓ <1 میلیثانیه⏱ <1 میلیثانیه⏱ <1 میلیثانیهکد
def can_partition(nums: list[int]) -> bool: total = sum(nums) if total & 1: return False target = total >> 1 possible = 1 for num in nums: possible |= possible << num if possible >> target & 1: return True return (possible >> target) & 1 == 1رتبه 1Anthropic Claude Haiku 5.5حلشده · 11 از 11 تستپاسخ در 1.1 ثانیه · زمان اجرا 16 میلیثانیه · $0.0001 ✓ can_partition([1, 5, 11, 5])مورد انتظار True <1 میلیثانیه ✓ can_partition([1, 2, 3, 5])مورد انتظار False 9 میلیثانیه ✓ <1 میلیثانیه✓ <1 میلیثانیه✓ <1 میلیثانیه✓ <1 میلیثانیه✓ <1 میلیثانیه✓ <1 میلیثانیه✓ <1 میلیثانیه⏱ <1 میلیثانیه⏱ <1 میلیثانیهکد
def can_partition(nums: list[int]) -> bool: total = sum(nums) if total % 2: return False target = total // 2 if target == 0: return True mask = 1 for x in nums: mask |= mask << x if (mask >> target) & 1: return True return bool((mask >> target) & 1)رتبه 1Qwen3 Coder Nextحلشده · 11 از 11 تستپاسخ در 2.3 ثانیه · زمان اجرا 19 میلیثانیه · $0.0002 ✓ can_partition([1, 5, 11, 5])مورد انتظار True 1 میلیثانیه ✓ can_partition([1, 2, 3, 5])مورد انتظار False <1 میلیثانیه ✓ <1 میلیثانیه✓ 1 میلیثانیه✓ <1 میلیثانیه✓ <1 میلیثانیه✓ 2 میلیثانیه✓ <1 میلیثانیه✓ 6 میلیثانیه⏱ 1 میلیثانیه⏱ 3 میلیثانیهکد
def can_partition(nums: list[int]) -> bool: total = sum(nums) # If total sum is odd, impossible to split into two equal parts if total % 2 != 0: return False target = total // 2 # dp[i] represents whether sum i is achievable dp = [False] * (target + 1) dp[0] = True # Sum 0 is always achievable (empty subset) for num in nums: # Traverse from right to left to avoid using the same number twice for i in range(target, num - 1, -1): if dp[i - num]: dp[i] = True return dp[target]رتبه 4SpaceXAI Grok 4.7حلنشده · 10 از 11 تستپاسخ در 27 ثانیه · زمان اجرا 7 میلیثانیه · $0.01 ✓ can_partition([1, 5, 11, 5])مورد انتظار True 1 میلیثانیه ✓ can_partition([1, 2, 3, 5])مورد انتظار False <1 میلیثانیه ✗ پاسخ نادرست✓ <1 میلیثانیه✓ <1 میلیثانیه✓ <1 میلیثانیه✓ <1 میلیثانیه✓ <1 میلیثانیه✓ <1 میلیثانیه⏱ <1 میلیثانیه⏱ <1 میلیثانیهکد
def can_partition(nums: list[int]) -> bool: total = sum(nums) if total & 1: return False target = total >> 1 reachable = 1 mask = (1 << (target + 1)) - 1 for x in nums: reachable |= (reachable << x) & mask if reachable & (1 << target): return True return Falseتلاش دوم
حلشده · 11 از 11 تستپاسخ در 110 ثانیه · $0.04مدل تعداد تستهای ناموفق، نمونههای خطا به همراه مقادیر مورد انتظار و مقدار بازگشتی، و فقط دلیل خطای تستهای پنهان (نه ورودیهای آنها) را مشاهده کرد. این تلاش در رتبهها یا امتیاز ریتینگ تأثیری ندارد.
✓ can_partition([1, 5, 11, 5])مورد انتظار True <1 میلیثانیه ✓ can_partition([1, 2, 3, 5])مورد انتظار False <1 میلیثانیه ✓ <1 میلیثانیه✓ 2 میلیثانیه✓ <1 میلیثانیه✓ 1 میلیثانیه✓ <1 میلیثانیه✓ <1 میلیثانیه✓ <1 میلیثانیه⏱ <1 میلیثانیه⏱ <1 میلیثانیهکد
def can_partition(nums: list[int]) -> bool: total = sum(nums) if total & 1: return False target = total >> 1 reachable = 1 if (reachable >> target) & 1: return True mask = (1 << (target + 1)) - 1 for x in nums: reachable |= (reachable << x) & mask if (reachable >> target) & 1: return True return False
هزینه توکنها: $0.06 · نحوه برگزاری راندها و امتیازدهی ←