मान लीजिए हमारे पास संख्याओं की एक सूची है जिसे अंक कहते हैं, हमें यह जांचना है कि क्या प्रत्येक संख्या को निम्नलिखित नियमों में से किसी एक का उपयोग करके समूहीकृत किया जा सकता है:1. सन्निहित जोड़े (ए, ए) 2. सन्निहित त्रिक (ए, ए, ए) 3. सन्निहित ट्रिपलेट्स (ए, ए + 1, ए + 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] के समान है, तो
-
डीपी [i] :=सच
-
-
-
अगर i>=3 और dp[i − 3] 0 नहीं है, तो
-
अगर (संख्या [i − 1], अंक [i − 2], अंक [i − 3]) समान हैं या (संख्या [i − 1], अंक [i − 2] + 1, अंक [i − 3] + 2 समान हैं), फिर
-
डीपी [i] :=सच
-
-
-
-
वापसी डीपी [एन]
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
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