如何从排序数组中删除重复项并使用 C# 返回长度?

数组已经排序,我们可以保留两个指针 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

以上是 如何从排序数组中删除重复项并使用 C# 返回长度? 的全部内容, 来源链接: utcz.com/z/355081.html

回到顶部