ধরুন আমাদের কাছে সংখ্যা নামক সংখ্যার একটি তালিকা আছে, আমাদের প্রতিটি সংখ্যাকে নিম্নলিখিত নিয়মগুলির মধ্যে একটি ব্যবহার করে গোষ্ঠীবদ্ধ করা যায় কিনা তা পরীক্ষা করতে হবে: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