मान लीजिए हमारे पास एक क्रमबद्ध सूची A है। हमें सभी डुप्लिकेट प्रविष्टियों को हटाने के बाद सरणी की लंबाई वापस करनी है। हमें इसे O(1) अतिरिक्त स्थान में करना है। इसलिए हमें इन-प्लेस ऑपरेशन करना होगा।
उदाहरण के लिए, मान लीजिए A = [1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 5, 5, 5, 6] तो आउटपुट 6 होगा, क्योंकि छह अलग-अलग तत्व हैं।
हल करने के चरण
- यदि सूची खाली है, तो 0 वापस करें
- अन्यथा, प्रारंभ में prev = A का पहला तत्व लें। और length = 0 परिभाषित करें
- i := 1 से n-1 तक, करें
- यदि A[i] prev के समान नहीं है, तो
- length := length + 1
- prev := A[i]
- यदि A[i] prev के समान नहीं है, तो
- length वापस करें
बेहतर समझ के लिए कार्यान्वयन देखें:
उदाहरण (पायथन)
class Solution(object):
def removeDuplicates(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if len(nums) == 0:
return 0
length = 1
previous = nums[0]
index = 1
for i in range(1,len(nums)):
if nums[i] != previous:
length += 1
previous = nums[i]
nums[index] = nums[i]
index+=1
return length
input_list = [1,1,2,2,2,3,3,3,3,4,5,5,5,6]
ob1 = Solution()
print(ob1.removeDuplicates(input_list))
इनपुट
[1,1,2,2,2,3,3,3,3,4,5,5,5,6]
आउटपुट
6