मान लीजिए कि हमारे पास एक क्रमबद्ध सूची ए है। हमें सभी डुप्लिकेट प्रविष्टियों को हटाने के बाद सरणी की लंबाई वापस करनी होगी। हमें इसे O(1) अतिरिक्त स्थान में करना है। इसलिए हमें ऑपरेशन जगह-जगह करना होगा।
उदाहरण के लिए, मान लीजिए ए =[1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 5, 5, 5, 6] तो आउटपुट 6 होगा, क्योंकि छह अलग-अलग तत्व हैं।
इसे हल करने के लिए, इन चरणों का पालन करें -
- यदि सूची खाली है, तो 0 लौटें
- अन्यथा, प्रारंभ में A का पिछला =पहला तत्व लें और लंबाई =0 परिभाषित करें
- i :=1 से n-1 के लिए, करें
- यदि A[i] पिछला जैसा नहीं है, तो
- लंबाई:=लंबाई + 1
- पिछला :=ए[i]
- यदि A[i] पिछला जैसा नहीं है, तो
- वापसी की लंबाई
आइए इसे बेहतर ढंग से समझने के लिए कार्यान्वयन देखें
उदाहरण (पायथन)
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