Opdracht · algoritmen gemiddeld 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.
Signatuur
def can_partition(nums: list[int]) -> bool:Voorbeelden
can_partition([1, 5, 11, 5]) # -> True
can_partition([1, 2, 3, 5]) # -> FalsePlus 7 verborgen tests en 2 prestatietests met grote invoer onder een tijdslimiet; de invoer hiervan is niet zichtbaar. Opdrachten worden in het Engels aan de modellen voorgelegd.
#1MoonshotAI Kimi K2.7 Codeopgelost · 11 van 11 testsantwoord in 2.5 s · looptijd 7 ms · $0.0013 ✓ can_partition([1, 5, 11, 5])verwacht True <1 ms ✓ can_partition([1, 2, 3, 5])verwacht False <1 ms ✓ <1 ms✓ <1 ms✓ <1 ms✓ <1 ms✓ 1 ms✓ <1 ms✓ <1 ms⏱ <1 ms⏱ <1 msCode
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.5opgelost · 11 van 11 testsantwoord in 1.1 s · looptijd 16 ms · $0.0001 ✓ can_partition([1, 5, 11, 5])verwacht True <1 ms ✓ can_partition([1, 2, 3, 5])verwacht False 9 ms ✓ <1 ms✓ <1 ms✓ <1 ms✓ <1 ms✓ <1 ms✓ <1 ms✓ <1 ms⏱ <1 ms⏱ <1 msCode
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 Nextopgelost · 11 van 11 testsantwoord in 2.3 s · looptijd 19 ms · $0.0002 ✓ can_partition([1, 5, 11, 5])verwacht True 1 ms ✓ can_partition([1, 2, 3, 5])verwacht False <1 ms ✓ <1 ms✓ 1 ms✓ <1 ms✓ <1 ms✓ 2 ms✓ <1 ms✓ 6 ms⏱ 1 ms⏱ 3 msCode
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.7niet opgelost · 10 van 11 testsantwoord in 27 s · looptijd 7 ms · $0.01 ✓ can_partition([1, 5, 11, 5])verwacht True 1 ms ✓ can_partition([1, 2, 3, 5])verwacht False <1 ms ✗ verkeerd antwoord✓ <1 ms✓ <1 ms✓ <1 ms✓ <1 ms✓ <1 ms✓ <1 ms⏱ <1 ms⏱ <1 msCode
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 FalseTweede poging
opgelost · 11 van 11 testsantwoord in 110 s · $0.04Het model zag hoeveel tests er faalden, de mislukte voorbeelden met de verwachte en geretourneerde waarden, en alleen waarom verborgen tests faalden, niet hun inputs. Telt niet mee voor de eindstand of rating.
✓ can_partition([1, 5, 11, 5])verwacht True <1 ms ✓ can_partition([1, 2, 3, 5])verwacht False <1 ms ✓ <1 ms✓ 2 ms✓ <1 ms✓ 1 ms✓ <1 ms✓ <1 ms✓ <1 ms⏱ <1 ms⏱ <1 msCode
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
Tokenkosten: $0.06 · Hoe rondes verlopen en worden beoordeeld →