Explication de l'élément de suppression du jour Leetcode

WBOY
Libérer: 2024-07-16 19:46:46
original
1171 Les gens l'ont consulté

Leetcode Day Remove Element Explained

Le problème est le suivant :

Étant donné un tableau d'entiers nums et un val entier, supprimez toutes les occurrences de val dans nums sur place. L'ordre des éléments peut être modifié. Renvoyez ensuite le nombre d'éléments en nombres qui ne sont pas égaux à val.

Considérez le nombre d'éléments en nombres qui ne sont pas égaux à val be k, pour être accepté, vous devez faire les choses suivantes :

  • Modifiez le tableau nums de telle sorte que les k premiers éléments de nums contiennent les éléments qui ne sont pas égaux à val. Les éléments restants des nombres ne sont pas importants ainsi que la taille des nombres.
  • Retour k.

Juge personnalisé :

Le juge testera votre solution avec le code suivant :

int[] nums = [...]; // Input array
int val = ...; // Value to remove
int[] expectedNums = [...]; // The expected answer with correct length.
                            // It is sorted with no values equaling val.

int k = removeElement(nums, val); // Calls your implementation

assert k == expectedNums.length;
sort(nums, 0, k); // Sort the first k elements of nums
for (int i = 0; i < actualLength; i++) {
    assert nums[i] == expectedNums[i];
}
Copier après la connexion

Si toutes les affirmations sont acceptées, alors votre solution sera acceptée.

Exemple 1 :

Input: nums = [3,2,2,3], val = 3
Output: 2, nums = [2,2,_,_]
Explanation: Your function should return k = 2, with the first two elements of nums being 2.
It does not matter what you leave beyond the returned k (hence they are underscores).
Copier après la connexion

Exemple 2 :

Input: nums = [0,1,2,2,3,0,4,2], val = 2
Output: 5, nums = [0,1,4,0,3,_,_,_]
Explanation: Your function should return k = 5, with the first five elements of nums containing 0, 0, 1, 3, and 4.
Note that the five elements can be returned in any order.
It does not matter what you leave beyond the returned k (hence they are underscores).
Copier après la connexion

Voici comment je l'ai résolu :

Pour résoudre ce problème, j'ai utilisé deux stratégies principales :

  1. Remplacement sur place : au lieu de créer un nouveau tableau pour stocker les éléments qui ne sont pas égaux à val, utilisez les mêmes numéros de tableau pour écraser les éléments qui doivent être supprimés.
  2. Technique à deux pointeurs : un pointeur (i) parcourt chaque élément du tableau et un autre pointeur (k) garde une trace de la position où le prochain élément non val doit être placé.
  • Tout d'abord, initialisez un pointeur k et réglez-le sur 0. Cela gardera une trace de la position où le prochain élément non val doit être placé.
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:       
    k = 0
Copier après la connexion
  • Parcourir le tableau nums.
  • Vérifiez si l'élément actuel nums[i] est différent de val pour garder une trace de k.
  • Si tel est le cas, déplacez l'élément nums[i] vers la k-ème position et incrémentez k de 1 pour mettre à jour la position du prochain élément non val.
for i in range(len(nums)):
    if nums[i] != val:
        nums[k] = nums[i]
        k += 1
Copier après la connexion
  • Renvoyer k, qui est le nombre d'éléments non égal à val.
return k
Copier après la connexion

Voici la solution complétée :

class Solution:
    def removeElement(self, nums: List[int], val: int) -> int:
        k = 0
        for i in range(len(nums)):
            if nums[i] != val:
                nums[k] = nums[i]
                k += 1
        return k
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!