ऑपरेशन: (0) इंडेक्स पर +1, (1) पूरे ऐरे को ×2। जीरो ऐरे से टारगेट ऐरे बनाने के लिए मिनिमम ऑपरेशन्स ढूंढें।
एल्गोरिदम
- प्रत्येक नंबर के लिए: बाइनरी रिप्रेजेंटेशन में 1s की संख्या = इन्क्रीमेंट ऑपरेशन्स।
- सबसे लंबी बाइनरी लंबाई - 1 = डबल ऑपरेशन्स (सभी एलिमेंट्स पर एक साथ)।
- टोटल = Σइन्क्रीमेंट्स + मैक्स_डबल्स।
उदाहरण कोड
def solve(nums):
ans = [0, 0] # [इन्क्रीमेंट्स, मैक्स_डबल्स]
for n in nums:
double = 0
while n:
if n % 2 == 0:
n //= 2
double += 1
else:
n -= 1
ans[0] += 1
ans[1] = max(ans[1], double)
return sum(ans)
# टेस्ट: nums=[1,5,3] -> इन्क्रीमेंट्स=3, मैक्स_डबल्स=4 -> टोटल=7
इनपुट/आउटपुट
इनपुट: [1,5,3]
आउटपुट: 7