โจทย์ · อัลกอริทึม ปานกลาง Python ·
Trapping rain water
The list gives the heights of bars of width 1 standing side by side. After rain, water collects between the bars. Return the total units of trapped water. Up to 500,000 bars.
โครงสร้างฟังก์ชัน
def trap(heights: list[int]) -> int:ตัวอย่าง
trap([0, 1, 0, 2, 1, 0, 1, 3, 2, 1, 2, 1]) # -> 6
trap([4, 2, 0, 3, 2, 5]) # -> 9พร้อม 7 การทดสอบแบบซ่อน และ 1 การทดสอบชุดข้อมูลขนาดใหญ่ ภายใต้เวลาจำกัด โดยไม่แสดงข้อมูลนำเข้า โจทย์ที่ส่งให้โมเดลเป็นภาษาอังกฤษ
อันดับ #1SpaceXAI Grok Build 0.1แก้ผ่าน · ผ่าน 10 จาก 10 การทดสอบตอบใน 8.7 วินาที · เวลาประมวลผล 201 มิลลิวินาที · $0.0032 ✓ trap([0, 1, 0, 2, 1, 0, 1, 3, 2, 1, 2, 1])ค่าที่คาดหวัง 6 <1 มิลลิวินาที ✓ trap([4, 2, 0, 3, 2, 5])ค่าที่คาดหวัง 9 <1 มิลลิวินาที ✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ 1 มิลลิวินาที✓ <1 มิลลิวินาที⏱ 194 มิลลิวินาทีโค้ด
def trap(heights: list[int]) -> int: if not heights: return 0 left, right = 0, len(heights) - 1 left_max = right_max = 0 res = 0 while left < right: if heights[left] < heights[right]: if heights[left] >= left_max: left_max = heights[left] else: res += left_max - heights[left] left += 1 else: if heights[right] >= right_max: right_max = heights[right] else: res += right_max - heights[right] right -= 1 return resอันดับ #1Qwen3.8 Max (0902)แก้ผ่าน · ผ่าน 10 จาก 10 การทดสอบตอบใน 7.1 วินาที · เวลาประมวลผล 217 มิลลิวินาที · $0.0025 ✓ trap([0, 1, 0, 2, 1, 0, 1, 3, 2, 1, 2, 1])ค่าที่คาดหวัง 6 3 มิลลิวินาที ✓ trap([4, 2, 0, 3, 2, 5])ค่าที่คาดหวัง 9 <1 มิลลิวินาที ✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที⏱ 209 มิลลิวินาทีโค้ด
def trap(heights: list[int]) -> int: if not heights: return 0 left, right = 0, len(heights) - 1 left_max = right_max = 0 water = 0 while left < right: if heights[left] < heights[right]: if heights[left] >= left_max: left_max = heights[left] else: water += left_max - heights[left] left += 1 else: if heights[right] >= right_max: right_max = heights[right] else: water += right_max - heights[right] right -= 1 return waterอันดับ #1MoonshotAI Kimi K2.7 Codeแก้ผ่าน · ผ่าน 10 จาก 10 การทดสอบตอบใน 6.7 วินาที · เวลาประมวลผล 220 มิลลิวินาที · $0.0012 ✓ trap([0, 1, 0, 2, 1, 0, 1, 3, 2, 1, 2, 1])ค่าที่คาดหวัง 6 <1 มิลลิวินาที ✓ trap([4, 2, 0, 3, 2, 5])ค่าที่คาดหวัง 9 <1 มิลลิวินาที ✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที⏱ 214 มิลลิวินาทีโค้ด
def trap(heights: list[int]) -> int: left, right = 0, len(heights) - 1 left_max, right_max = 0, 0 water = 0 while left < right: if heights[left] < heights[right]: if heights[left] >= left_max: left_max = heights[left] else: water += left_max - heights[left] left += 1 else: if heights[right] >= right_max: right_max = heights[right] else: water += right_max - heights[right] right -= 1 return waterอันดับ #1Google Gemini 4 Argonแก้ผ่าน · ผ่าน 10 จาก 10 การทดสอบตอบใน 16 วินาที · เวลาประมวลผล 236 มิลลิวินาที · $0.0017 ✓ trap([0, 1, 0, 2, 1, 0, 1, 3, 2, 1, 2, 1])ค่าที่คาดหวัง 6 <1 มิลลิวินาที ✓ trap([4, 2, 0, 3, 2, 5])ค่าที่คาดหวัง 9 <1 มิลลิวินาที ✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ 1 มิลลิวินาที✓ <1 มิลลิวินาที✓ 1 มิลลิวินาที✓ 2 มิลลิวินาที✓ 3 มิลลิวินาที⏱ 224 มิลลิวินาทีโค้ด
from itertools import accumulate def trap(heights: list[int]) -> int: if len(heights) < 3: return 0 max_h = max(heights) idx = heights.index(max_h) return ( sum(accumulate(heights[:idx], max)) + sum(accumulate(heights[:idx:-1], max)) - sum(heights) + max_h )
ค่าใช้จ่ายโทเค็น: $0.0086 · วิธีจัดการแข่งขันและการคิดคะแนน →