मान लीजिए हमारे पास इंटीजर्स की एक फिक्स्ड लेंथ ऐरे है, हमें जीरो की प्रत्येक ऑकरेंस को डुप्लिकेट करना है, शेष एलिमेंट्स को राइट साइड शिफ्ट करना है।
ध्यान दें कि मूल ऐरे की लंबाई से परे के एलिमेंट्स नहीं लिखे जाते हैं।
इसलिए मान लीजिए ऐरे [1,0,2,3,0,4,5,0] की तरह है, तो संशोधन के बाद यह [1,0,0,2,3,0,0,4] बन जाएगा।
समाधान के चरण
- arr को दूसरे ऐरे arr2 में कॉपी करें, i और j को 0 सेट करें
- जब तक i < arr का आकार
- यदि arr2[i] शून्य है, तो
- arr[i] := 0
- i को 1 से बढ़ाएं
- यदि i < arr का आकार, तो arr[i] := 0
- अन्यथा arr[i] := arr2[j]
- i और j को 1 से बढ़ाएं
- यदि arr2[i] शून्य है, तो
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
class Solution(object):
def duplicateZeros(self, arr):
arr2 = [i for i in arr]
i = 0
j = 0
while i < len(arr):
if not arr2[j]:
arr[i] = 0
i += 1
if i < len(arr):
arr[i] = 0
else:
arr[i] = arr2[j]
j += 1
i += 1
return arr
ob1 = Solution()
print(ob1.duplicateZeros([1,0,2,3,0,4,5,0]))
इनपुट
[1,0,2,3,0,4,5,0]
आउटपुट
[1,0,0,2,3,0,0,4]