English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Entfernen von wiederholten Elementen aus einem bereits sortierten Array in Java

Description of the problem

Given an already sorted array, remove the repeated elements from the array, keep only one repeated element, and return the new array length.

Requirements:
Do not allocate extra space for the array, you must use a constant memory size for in-place operations.

For example:
Given an already sorted array A=[1,1,2], the function call after your function must return the length length=2, and A is now [1,2].

Input

An already sorted array, for example, [1,1,2].

Output

Return the new length of the array, for example, length=2.

Two-pointer method

Set the fast pointer to traverse the array and the slow pointer to point to the next element of the non-repeated element.

public static int removeDuplicates(int[] nums)
{
  if (nums.length < 1);
    return nums.length;
  int slow = 1;
  for (int fast = 1; fast < nums.length; fast++) {
    if (nums[fast] != nums[slow - 1]) {
      nums[slow++] = nums[fast];
    }
  }
  return slow;
}

Animationsshow:

Erweiterung

Entfernen Sie wiederholte Elemente aus einem sortierten Array und behalten Sie die angegebene Anzahl von Ziffern bei.

public static int removeDuplicatesN(int[] nums, int repeatN)
{
 if (nums.length <= repeatN)
  return nums.length;
 int index = repeatN;
 for (int i = repeatN; i < nums.length; i++) {
  if (nums[i] != nums[index - repeatN]) {
   nums[index++] = nums[i];
  }
 }
 return index;
}

Dies ist der vollständige Inhalt dieses Artikels. Wir hoffen, dass er Ihnen bei Ihrem Lernen hilft und dass Sie die Anleitung von Anrufen unterstützen.

Erklärung: Der Inhalt dieses Artikels wurde aus dem Internet übernommen und gehört dem jeweiligen Urheber. Der Inhalt wurde von Internetbenutzern selbstständig beigesteuert und hochgeladen. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht von Hand bearbeitet. Sie übernimmt keine Haftung für rechtliche Fragen. Wenn Sie urheberrechtlich fragliche Inhalte finden, sind Sie herzlich eingeladen, eine E-Mail an notice#w zu senden.3codebox.com (Bitte ersetzen Sie # durch @ beim Senden einer E-Mail zur Meldung von Missbrauch und stellen Sie relevante Beweise zur Verfügung. Bei nachgewiesener Täuschung wird diese Website den fraglichen urheberrechtlichen Inhalt sofort löschen.

Empfohlene Artikel