Tìm phần tử lớn nhất trong cửa sổ trượt
Xem dạng PDFMô tả và yêu cầu
Mã bài: CUASOTRUOT.*
Tìm phần tử lớn nhất trong cửa sổ trượt (Sliding Window Maximum)
Cho một mảng số nguyên A có N phần tử và một số nguyên K là kích thước
cửa sổ. Di chuyển một cửa sổ có độ dài K từ trái sang phải (mỗi lần dịch sang phải
1 vị trí).
Yêu cầu: Với mỗi vị trí của cửa sổ, hãy tìm giá trị lớn nhất trong cửa sổ đó.
Trả về dãy các giá trị lớn nhất theo thứ tự các vị trí cửa sổ.
Dữ liệu vào
Dòng 1: hai số nguyên N và K (số phần tử và kích thước cửa sổ).
Dòng 2: N số nguyên A1,A2,…,AN (các phần tử của mảng).
Dữ liệu ra
In ra các giá trị lớn nhất của mỗi cửa sổ, theo thứ tự từ trái sang phải,
cách nhau bởi dấu cách . Số lượng giá trị in ra bằng N−K+1 (nếu K≤N ).
Ràng buộc: 1≤ N≤106 ; ∣Ai∣≤109; 1≤K≤N.
Ví dụ 1:
INPUT OUTPUT Giải thích
8 3 3 3 5 5 6 7 Giải thích cửa sổ (k = 3):
1 3 -1 -3 5 3 6 7 [1, 3, -1] → max = 3
[3, -1, -3] → max = 3
[-1, -3, 5] → max = 5
[-3, 5, 3] → max = 5
[5, 3, 6] → max = 6
[3, 6, 7] → max = 7
Ví dụ 2:
INPUT OUTPUT
5 1 2 8 -4 0 5
2 8 -4 0 5
Ví dụ 3:
INPUT OUTPUT
5 5 8
2 8 -4 0 5
Bình luận