ऐरे पहले से सॉर्टेड है, हम दो पॉइंटर्स ii और jj रख सकते हैं, जहां ii धीमा-धावक है जबकि jj तेज-धावक है। जब तक nums[i] = nums[j], हम jj को बढ़ाकर डुप्लिकेट को छोड़ देते हैं।
जब हमें nums[j] != nums[i] मिलता है तो डुप्लिकेट रन समाप्त हो गया है इसलिए हमें इसका मान nums[i + 1] पर कॉपी करना होगा। ii को फिर से बढ़ाया जाता है और हम वही प्रक्रिया तब तक दोहराते हैं जब तक jj ऐरे के अंत तक नहीं पहुंच जाता। फिल्टर्ड ऐरे से इंडेक्स तक सभी एलिमेंट कॉपी करके एक नया ऐरे बनाएं और नया ऐरे लौटाएं।
समय जटिलता - O(N)
उदाहरण
using System; namespace ConsoleApplication{ public class Arrays{ public int[] RemoveDuplicatesFromSortedArrayAndReturnArray(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; } } int[] newarr = new int[index]; for (int i = 0; i < index; i++){ newarr[i] = arr[i]; } return newarr; } } 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.RemoveDuplicatesFromSortedArrayAndReturnArray(arr); for (int i = 0; i < res.Length; i++){ Console.WriteLine(res[i]); } Console.ReadLine(); } } }
आउटपुट
0 1 2 3 4