CSharp (C#)

Kiểm tra 2 mảng khuyết N phần tử liên tiếp trở lên

Áp dụng để tính một số bài toán như tìm mặt hàng có n tháng liên tiếp không nhập xuất kho hay hàng hóa có n tháng liên tiếp không được bán trong khoảng thời gian nhất định, ….

Có 2 mảng A và B không trùng phần tử và mảng B luôn luôn là con của mảng A và có thứ tự sắp xếp giống nhau.
Duyệt tìm mảng A trong bảng B kiểm tra vị trí các phần tử thông qua 2 biến BeginStop.
Khởi đầu BeginStop=-1

Nếu tìm thấy phần tử ở vị trí i của mảng A trong mảng B thì gán Stop=i

Sau đó lấy Stop-Begin=1 mảng B đang liên tục trong mảng A

Còn Stop-Begin=0 là mảng không liên tục

Stop-Begin=N là mảng đang khuyết N phần tử liên tiếp.

Có 2 trường hợp đặc biệt:

Là khi mảng B không khuyết phần tử đầu tiên (vị trí 0) thì sẽ cập nhật lại biến Begin=0 nếu ngay khi vòng lặp mảng A có i bắt đầu 0 thì ta cập nhật lại Begin=0
Trường hợp 2 là từ vị trí cuối cùng của mảng B xuất hiện trong mảng A đến hết mảng A không tìm được thấy phần từ nào nữa thì khi đến cuối mảng A phải lấy i(vị trí cuối cùng mảng A)- Begin (vị trí cuối cùng của phần từ A tìm thấy trong mảng B)
Tiếp tục đọc “Kiểm tra 2 mảng khuyết N phần tử liên tiếp trở lên”