কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে লองেস্ট ডিক্রিজিং সাবসিকোয়েন্স সাবঅ্যারে


সমস্যা বিবরণ

ইন্টিজার অ্যারে দেওয়া আছে। সবচেয়ে লম্বা ডিক্রিজিং (ঘটते ক্রমে) কনসিকিউটিভ সাবসিকোয়েন্সের লেন্থ বের করতে হবে।

ইনপুট: [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() কল করে লাস্ট সিকোয়েন্স চেক করা হয়।
  1. জাভাস্ক্রিপ্ট Array length প্রপার্টি

  2. জাভাস্ক্রিপ্ট - অ্যারে অবজেক্টের length প্রোপার্টি

  3. সি++-এ লেংথ অফ লংগেস্ট ফিবোনাচি সাবসিকোয়েন্স (Length of Longest Fibonacci Subsequence)

  4. পাইথনে সর্বোচ্চ দৈর্ঘ্যের প্যালিনড্রোমিক সাবসিকোয়েন্স খুঁজে বের করার প্রোগ্রাম