โจทย์ · อัลกอริทึม ปานกลาง Python ·
Merge intervals
Each interval [a, b] with a ≤ b is closed. Merge all intervals that overlap or touch ([1, 3] and [3, 5] merge into [1, 5]; [1, 2] and [3, 4] stay apart). Return the merged intervals sorted by start. The input is in no particular order and can hold up to 200,000 intervals.
โครงสร้างฟังก์ชัน
def merge_intervals(intervals: list[list[int]]) -> list[list[int]]:ตัวอย่าง
merge_intervals([[1, 3], [2, 6], [8, 10], [15, 18]]) # -> [[1, 6], [8, 10], [15, 18]]
merge_intervals([[1, 4], [4, 5]]) # -> [[1, 5]]พร้อม 7 การทดสอบแบบซ่อน และ 1 การทดสอบชุดข้อมูลขนาดใหญ่ ภายใต้เวลาจำกัด โดยไม่แสดงข้อมูลนำเข้า โจทย์ที่ส่งให้โมเดลเป็นภาษาอังกฤษ
อันดับ #1OpenAI GPT-6.1 Terraแก้ผ่าน · ผ่าน 10 จาก 10 การทดสอบตอบใน 2.2 วินาที · เวลาประมวลผล 582 มิลลิวินาที · $0.0009 ✓ merge_intervals([[1, 3], [2, 6], [8, 10], [15, 18]])ค่าที่คาดหวัง [[1, 6], [8, 10], [15, 18]] <1 มิลลิวินาที ✓ merge_intervals([[1, 4], [4, 5]])ค่าที่คาดหวัง [[1, 5]] <1 มิลลิวินาที ✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที⏱ 576 มิลลิวินาทีโค้ด
def merge_intervals(intervals: list[list[int]]) -> list[list[int]]: if not intervals: return [] ordered = sorted(intervals, key=lambda interval: interval[0]) start, end = ordered[0] merged = [] for a, b in ordered[1:]: if a <= end: if b > end: end = b else: merged.append([start, end]) start, end = a, b merged.append([start, end]) return mergedอันดับ #1SpaceXAI Grok Build 0.1แก้ผ่าน · ผ่าน 10 จาก 10 การทดสอบตอบใน 5.0 วินาที · เวลาประมวลผล 643 มิลลิวินาที · $0.0024 ✓ merge_intervals([[1, 3], [2, 6], [8, 10], [15, 18]])ค่าที่คาดหวัง [[1, 6], [8, 10], [15, 18]] 2 มิลลิวินาที ✓ merge_intervals([[1, 4], [4, 5]])ค่าที่คาดหวัง [[1, 5]] 1 มิลลิวินาที ✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที⏱ 635 มิลลิวินาทีโค้ด
def merge_intervals(intervals: list[list[int]]) -> list[list[int]]: if not intervals: return [] sorted_intervals = sorted(intervals, key=lambda x: x[0]) merged = [sorted_intervals[0][:]] for current in sorted_intervals[1:]: prev = merged[-1] if current[0] <= prev[1]: prev[1] = max(prev[1], current[1]) else: merged.append(current[:]) return mergedอันดับ #1Google Gemini 3.8 Flashแก้ผ่าน · ผ่าน 10 จาก 10 การทดสอบตอบใน 3.4 วินาที · เวลาประมวลผล 673 มิลลิวินาที · $0.0007 ✓ merge_intervals([[1, 3], [2, 6], [8, 10], [15, 18]])ค่าที่คาดหวัง [[1, 6], [8, 10], [15, 18]] <1 มิลลิวินาที ✓ merge_intervals([[1, 4], [4, 5]])ค่าที่คาดหวัง [[1, 5]] <1 มิลลิวินาที ✓ <1 มิลลิวินาที✓ 1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที⏱ 666 มิลลิวินาทีโค้ด
def merge_intervals(intervals: list[list[int]]) -> list[list[int]]: if not intervals: return [] intervals.sort(key=lambda x: x[0]) merged = [intervals[0]] for start, end in intervals[1:]: last_end = merged[-1][1] if start <= last_end: if end > last_end: merged[-1][1] = end else: merged.append([start, end]) return mergedอันดับ #1Qwen3 Coder Nextแก้ผ่าน · ผ่าน 10 จาก 10 การทดสอบตอบใน 2.6 วินาที · เวลาประมวลผล 687 มิลลิวินาที · $0.0002 ✓ merge_intervals([[1, 3], [2, 6], [8, 10], [15, 18]])ค่าที่คาดหวัง [[1, 6], [8, 10], [15, 18]] 1 มิลลิวินาที ✓ merge_intervals([[1, 4], [4, 5]])ค่าที่คาดหวัง [[1, 5]] 1 มิลลิวินาที ✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ 1 มิลลิวินาที✓ 1 มิลลิวินาที✓ 2 มิลลิวินาที✓ 2 มิลลิวินาที⏱ 676 มิลลิวินาทีโค้ด
def merge_intervals(intervals: list[list[int]]) -> list[list[int]]: if not intervals: return [] # Sort intervals by their start values intervals.sort(key=lambda x: x[0]) merged = [] current_start, current_end = intervals[0] for i in range(1, len(intervals)): start, end = intervals[i] # If the current interval overlaps or touches the previous one if start <= current_end: # Merge them by updating the end if needed current_end = max(current_end, end) else: # No overlap, add the previous merged interval to result merged.append([current_start, current_end]) current_start, current_end = start, end # Add the last interval merged.append([current_start, current_end]) return merged
ค่าใช้จ่ายโทเค็น: $0.0043 · วิธีจัดการแข่งขันและการคิดคะแนน →