কম্পিউটার

প্রদত্ত তালিকাটি পাইথনে বৈধ অবস্থায় আছে কি না তা পরীক্ষা করার জন্য প্রোগ্রাম


ধরুন আমাদের কাছে সংখ্যা নামক সংখ্যার একটি তালিকা আছে, আমাদের প্রতিটি সংখ্যাকে নিম্নলিখিত নিয়মগুলির মধ্যে একটি ব্যবহার করে গোষ্ঠীবদ্ধ করা যায় কিনা তা পরীক্ষা করতে হবে:1. অবিচ্ছিন্ন জোড়া (a, a) 2. ধারাবাহিক ট্রিপলেট (a, a, a) 3. ধারাবাহিক ট্রিপলেট (a, a + 1, a + 2)

সুতরাং, যদি ইনপুটটি nums =[7, 7, 3, 4, 5] এর মত হয়, তাহলে আউটপুট হবে True, যেহেতু আমরা [7, 7] একসাথে এবং [3, 4, 5] একসাথে গ্রুপ করতে পারি।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • n :=সংখ্যার আকার

  • dp :=n+1 আকারের একটি তালিকা, প্রথম মানটি সত্য, অন্যটি মিথ্যা

  • 2 থেকে n রেঞ্জের জন্য, করুন

    • যদি i>=2 এবং dp[i − 2] 0 না হয়, তাহলে

      • যদি nums[i − 1] nums[i − 2] এর মত হয়, তাহলে

        • dp[i] :=সত্য

    • যদি i>=3 এবং dp[i − 3] 0 না হয়, তাহলে

      • যদি (সংখ্যা[i − 1], nums[i − 2], nums[i − 3]) একই হয় বা (nums[i − 1], nums[i − 2] + 1, nums[i − 3] + 2 একই), তারপর

        • dp[i] :=সত্য

  • dp[n]

    ফেরত দিন

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

class Solution:
   def solve(self, nums):
      n = len(nums)
      dp = [True] + [False] * n
      for i in range(2, n + 1):
         if i >= 2 and dp[i − 2]:
            if nums[i − 1] == nums[i − 2]:
               dp[i] = True
         if i >= 3 and dp[i − 3]:
            if (nums[i − 1] == nums[i − 2] == nums[i − 3]) or (nums[i − 1] == nums[i − 2] + 1 == nums[i − 3] + 2):
               dp[i] = True
         return dp[n]
ob = Solution()
nums = [8, 8, 4, 5, 6]
print(ob.solve(nums))

ইনপুট

[8, 8, 4, 5, 6]

আউটপুট

True

  1. প্রদত্ত ব্লকের তালিকা x =y লাইনের উপরে প্রতিসম নাকি পাইথনে নয় তা পরীক্ষা করার জন্য প্রোগ্রাম

  2. প্রদত্ত গাছটি পাইথনে সিমেট্রিক ট্রি কি না তা পরীক্ষা করার জন্য প্রোগ্রাম

  3. প্রদত্ত গ্রাফটি পাইথনে দ্বিপক্ষীয় কি না তা পরীক্ষা করার জন্য প্রোগ্রাম

  4. একটি প্রদত্ত স্ট্রিং কীওয়ার্ড কিনা তা পরীক্ষা করার জন্য পাইথন প্রোগ্রাম