सरणी पहले से ही क्रमबद्ध है, हम दो पॉइंटर्स ii और jj रख सकते हैं, जहां ii धीमा-धावक है जबकि jj तेज-धावक है। जब तक nums[i] =nums[j]nums[i]=nums[j], हम डुप्लिकेट को छोड़ने के लिए jj बढ़ाते हैं।
जब हमारा सामना nums[j] !=nums[i] से होता है, तो डुप्लिकेट रन समाप्त हो जाता है, इसलिए हमें इसके मान को nums[i + 1]nums[i+1] पर कॉपी करना होगा। ii तब बढ़ा दिया जाता है और हम उसी प्रक्रिया को फिर से दोहराते हैं जब तक कि jj सरणी के अंत तक नहीं पहुंच जाता।
समय जटिलता - O(N)
उदाहरण
using System; namespace ConsoleApplication{ public class Arrays{ public int RemoveDuplicatesFromSortedArrayAndReturnLength(int[] arr){ int index = 1; for (int i = 0; i < arr.Length - 1; i++){ if (arr[i] != arr[i + 1]){ arr[index] = arr[i + 1]; index++; } else{ continue; } } return index; } } class Program{ static void Main(string[] args){ Arrays a = new Arrays(); int[] arr = { 0, 0, 1, 1, 1, 2, 2, 3, 3, 4 }; int res = a.RemoveDuplicatesFromSortedArrayAndReturnLength(arr); Console.WriteLine(res); Console.ReadLine(); } } }
आउटपुट
5