मान लीजिए हमारे पास रंगों की एक सूची है (आर, जी, बी)। अब अगर दो अलग-अलग रंग एक-दूसरे के बगल में हों तो वे तीसरे रंग की एक ही रंग की वस्तु में बदल सकते हैं। हमें ऐसे परिवर्तनों के किसी भी संभावित क्रम के बाद शेष बची सबसे छोटी संख्या ज्ञात करनी होगी।
इसलिए, यदि इनपुट रंग =["G", "R", "G", "B", "R"] जैसा है, तो आउटपुट 1 होगा क्योंकि यह नीचे की तरह रूपांतरित हो सकता है -
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- n :=रंगों का आकार
- यदि रंगों में केवल एक ही विशिष्ट रंग है, तो
- वापसी n
- यदि n <=1, तो
- वापसी n
- x :=0
- d :=प्रमुख मान युग्मों वाला नक्शा {("R", 1), ("G", 2), ("B", 3)}
- रंगों में प्रत्येक c के लिए, करें
- x :=x XOR d[c]
- वापसी 2 यदि x, 0 के समान है अन्यथा 1
उदाहरण (पायथन)
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
class Solution: def solve(self, colors): n = len(colors) if len(set(colors)) == 1: return n if n <= 1: return n x = 0 d = {"R": 1, "G": 2, "B": 3} for qux in colors: x ^= d[qux] return 2 if x == 0 else 1 ob = Solution() colors = ["G", "R", "G", "B", "R"] print(ob.solve(colors))
इनपुट
["G", "R", "G", "B", "R"]
आउटपुट
1