Maison  >  Article  >  Java  >  Leetcode - Top Interview - Supprimer l'élément

Leetcode - Top Interview - Supprimer l'élément

DDD
DDDoriginal
2024-11-03 17:36:30278parcourir

Leetcode — Top Interview  — Remove Element

C'est un problème simple qui consiste à :

É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 = [...]; // Tableau d'entrée
int val = ...; // Valeur à supprimer
int[] ExpectNums = [...]; // La réponse attendue avec la bonne longueur.
// Il est trié sans aucune valeur égale à val.
int k = removeElement(nums, val); // Appelle votre implémentation
assert k == ExpectNums.length;
trier(nombres, 0, k); // Trie les k premiers éléments de nums
pour (int i = 0; i < actualLength; i ) {
assert nums[i] == ExpectNums[i];
>

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

Exemple 1 :
Entrée : nums = [3,2,2,3], val = 3
Sortie : 2, nums = [2,2,,]
Explication : Votre fonction doit renvoyer k = 2, les deux premiers éléments de nums étant 2.
Peu importe ce que vous laissez au-delà du k renvoyé (il s'agit donc de traits de soulignement).

Exemple 2 :
Entrée : nums = [0,1,2,2,3,0,4,2], val = 2
Sortie : 5, nums = [0,1,4,0,3,,,_]
Explication : Votre fonction doit renvoyer k = 5, avec les cinq premiers éléments de nums contenant 0, 0, 1, 3 et 4.
Notez que les cinq éléments peuvent être retournés dans n'importe quel ordre.
Peu importe ce que vous laissez au-delà du k renvoyé (il s'agit donc de traits de soulignement).

Contraintes :
0 <= nums.length <= 100
0 <= nums[i] <= 50
0 <= val <= 100

Dans ce problème, vous devez parcourir le tableau, identifier la valeur, puis la supprimer des nombres.

À première vue, vous penseriez qu'un autre tableau pourrait faire l'affaire, mais plus tard, vous devrez faire une autre itération juste pour définir les valeurs (définir directement ne fonctionnerait pas car Java ne met pas à jour les références des variables de méthode, c'est-à-dire à l'intérieur de la méthode aurait l'air d'avoir changé, mais une fois en dehors de la méthode, il conserve l'ancienne référence), et ce serait mauvais en termes de performances.

Étant donné que le résultat final ne repose sur aucune autre opération que les valeurs différentes, vous pourriez simplement conserver un index et mettre à jour les valeurs lorsque vous les trouvez différemment de var et également utiliser la même solution :

class Solution {
    public int removeElement(int[] nums, int val) {
        int diffIndex = 0;
        for(int i=0;i<nums.length;i++) {
            if(nums[i] != val)  {
                nums[diffIndex] = nums[i];
                diffIndex++;
            }
        }
        return diffIndex;
    }
}

Durée d'exécution : 0 ms, plus rapide que 100,00 % des soumissions en ligne Java pour Remove Element.
Utilisation de la mémoire : 42 Mo, soit moins de 31,68 % des soumissions en ligne Java pour Remove Element.

C'est ça ! S'il y a autre chose à discuter, n'hésitez pas à laisser un commentaire, si j'ai raté quelque chose, faites-le-moi savoir afin que je puisse mettre à jour en conséquence.

À la prochaine publication ! :)

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!

Déclaration:
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