Danh sách

Hợp nhất hai mảng đã sắp xếp (Merge Sorted Array)

Dễ
Mảng & Chuỗi (Arrays & Strings) 600ms 64MB

Cho hai mảng số nguyên nums1 và nums2 được sắp xếp tăng dần, và hai số nguyên m, n lần lượt là số lượng phần tử có nghĩa trong nums1 và nums2.

Hãy hợp nhất nums2 vào nums1 thành một mảng duy nhất được sắp xếp tăng dần.

Lưu ý: nums1 có kích thước bằng m + n, trong đó m phần tử đầu là dữ liệu, n phần tử cuối được đệm bằng số 0 để chứa các phần tử của nums2.

Ví dụ 1:

Input: nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
Output: [1,2,2,3,5,6]
Định Dạng Đầu Vào (Input)
Dòng 1: Mảng nums1
Dòng 2: Số nguyên m
Dòng 3: Mảng nums2
Dòng 4: Số nguyên n
Định Dạng Đầu Ra (Output)
Mảng nums1 sau khi hợp nhất
Ràng Buộc (Constraints)
  • nums1.length == m + n
  • 0 <= m, n <= 200
Ví Dụ Kiểm Thử Mẫu
Ví dụ 1:
Input:
[1,2,3,0,0,0]
3
[2,5,6]
3
Output:
[1,2,2,3,5,6]
Giải thích: Hợp nhất chuẩn
Ví dụ 2:
Input:
[1]
1
[]
0
Output:
[1]
Giải thích: nums2 rỗng
Gợi ý được sắp xếp theo cấp độ tiến dần. Hãy mở từng gợi ý khi bạn thực sự cần thêm định hướng.

Kỹ thuật Điền Từ Đuôi Về Đầu (Three Pointers Backwards) O(m + n)

Dùng 3 con trỏ: p1 = m - 1, p2 = n - 1, và p = m + n - 1. So sánh phần tử lớn nhất từ đuôi của 2 mảng đặt vào vị trí p để không bị ghi đè dữ liệu chưa xử lý.

Vui lòng đăng nhập

Đăng nhập tài khoản học viên để xem lịch sử nộp bài của bạn.

Đăng nhập
Ctrl + Enter: Chạy thử
Dữ liệu đầu vào (Input):
[1,2,3,0,0,0] 3 [2,5,6] 3
Kết quả kỳ vọng (Expected Output):
[1,2,2,3,5,6]
Dữ liệu đầu vào (Input):
[1] 1 [] 0
Kết quả kỳ vọng (Expected Output):
[1]
Nhập STDIN của bạn (Mỗi dòng một tham số):

Bấm Chạy thử để kiểm tra các bộ test mẫu hoặc Nộp bài để chấm điểm chính thức.

Đang gửi mã và thực thi trên Sandbox Engine...
Nhấn Ctrl+Enter để chạy

vừa nâng cấp PRO khóa 1 phút trước   Tìm hiểu khóa học