দুটি অ্যারে A (সাইজ m) এবং B (সাইজ n) দেওয়া আছে। A-র ন্যূনতম দৈর্ঘ্যের সাবঅ্যারে খুঁজে বের করতে হবে যেটিতে B-এর সব উপাদান একই ক্রমে থাকে (কন্টিগুয়াস হতে হবena)। উদাহরণ: A=[2,2,4,5,8,9], B=[2,5,9] -> সাবঅ্যারে [2,4,5,8,9] দৈর্ঘ্য ৫।
উদাহরণ
#include <iostream>
#include <climits>
using namespace std;
int lengthMinSubarray(int A[], int n, int B[], int m) {
int res = INT_MAX;
for (int i = 0; i <= n - m; i++) {
if (A[i] == B[0]) {
int j = 0, idx = i;
for (; idx < n; idx++) {
if (A[idx] == B[j]) j++;
if (j == m) break;
}
if (j == m) res = min(res, idx - i + 1);
}
}
return res;
}
int main() {
int A[] = {5,6,5,2,7,5,6,7,5,5,7};
int B[] = {5,5,7};
int n = sizeof(A)/sizeof(A[0]);
int m = sizeof(B)/sizeof(B[0]);
cout << "Minimum length of subarray: " << lengthMinSubarray(A, n, B, m);
return 0;
}
আউটপুট
Minimum length of subarray: 3