โจทย์ · อัลกอริทึม ปานกลาง 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 · วิธีจัดการแข่งขันและการคิดคะแนน →