সমস্যা বিবরণ
ইন্টিজার অ্যারে দেওয়া আছে। সবচেয়ে লম্বা ডিক্রিজিং (ঘটते ক্রমে) কনসিকিউটিভ সাবসিকোয়েন্সের লেন্থ বের করতে হবে।
ইনপুট: [5, 2, 5, 4, 3, 2, 4, 6, 7]
আউটপুট: ৪ (কারণ [5, 4, 3, 2] সবচেয়ে লম্বা ডিক্রিজিং সিকোয়েন্স)
সমাধান
const arr = [5, 2, 5, 4, 3, 2, 4, 6, 7];
const decreasingSequence = (arr = []) => {
let longest = [];
let curr = [];
const setDefault = (newItem) => {
if (curr.length > longest.length) {
longest = curr;
}
curr = [newItem];
};
for (const item of arr) {
if (curr.length && item > curr[curr.length - 1]) {
setDefault(item);
} else {
curr.push(item);
}
}
setDefault();
return longest.length;
};
console.log(decreasingSequence(arr)); // 4
আউটপুট
4
ব্যাখ্যা
currকরেন্ট ডিক্রিজিং সিকোয়েন্স ট্র্যাক করে।- যদি নতুন আইটেম বড় হয় (ডিক্রিজিং ভাঙে), তবে
setDefaultকল করেlongestআপডেট করা হয়। - শেষে একবার
setDefault()কল করে লাস্ট সিকোয়েন্স চেক করা হয়।