मान लीजिए हमारे पास एक ऐरे nums है जो आकार k की एक बाइनरी स्ट्रिंग का एन्कोडिंग दर्शाता है। हमें यह जांचना है कि दिया गया एन्कोडिंग एक अद्वितीय बाइनरी स्ट्रिंग ढूंढता है या नहीं। यहां एन्कोडिंग में सन्निकट 1s की गिनती होती है जो एकल 0s से अलग होती हैं।
उदाहरण के लिए, यदि इनपुट nums = [4, 2, 3] और k = 11 है, तो आउटपुट True होगा क्योंकि k = 11 लंबाई की एक बाइनरी स्ट्रिंग 11110110111 मौजूद है।
समाधान दृष्टिकोण
एन्कोडिंग में प्रत्येक संख्या सन्निकट 1s के एक ब्लॉक को दर्शाती है। इन ब्लॉकों के बीच एकल 0 होते हैं। कुल लंबाई 1s के योग और (ब्लॉकों की संख्या - 1) जीरो के बराबर होगी।
एल्गोरिदम चरण:
total = sum(nums)(सभी 1s की कुल संख्या)total += len(nums) - 1(ब्लॉकों के बीच के 0s जोड़ें)- यदि
total == kतो True लौटाएं, अन्यथा False
पायथन कार्यान्वयन
def solve(nums, k):
total = sum(nums)
total += len(nums) - 1
return total == k
nums = [4, 2, 3]
k = 11
print(solve(nums, k)) # True
इनपुट
[4, 2, 3], 11
आउटपुट
True
व्याख्या:
एन्कोडिंग [4, 2, 3] का अर्थ:
- 4 सन्निकट 1s:
1111 - 1 जीरो (सेपरेटर):
0 - 2 सन्निकट 1s:
11 - 1 जीरो (सेपरेटर):
0 - 3 सन्निकट 1s:
111
कुल लंबाई = 4 + 1 + 2 + 1 + 3 = 11 = k ✓