Maison > Questions et réponses > le corps du texte
La question que je posais concernait la suppression des doublons d'un tableau
La question vient de https://leetcode.com/problems...
Je l'ai accepté quand je le faisais, mais j'ai soudainement pensé à une question, comment puis-je le faire sans en ouvrir un nouveau ? Dans le cas d'un tableau, terminer la déduplication du tableau d'origine et renvoyer le tableau modifié ? ?
Voici le code que j'ai transmis
var removeDuplicates = function(nums) {
if(nums === null || nums.length === 0) return 0;
if(nums.length == 1) return 1;
var count = 0;
for(var i = 1 ; i < nums.length ; i++){
if(nums[count] != nums[i]){
count++;
nums[count] = nums[i];
}
}
return ++count;
};
Au début, je pensais renvoyer nums.length à la fin, mais après y avoir réfléchi attentivement, j'ai réalisé que ce n'était pas une blague. Les nums originaux non modifiés doivent être renvoyés après l'avoir écrit de cette façon, alors j'ai commencé à réfléchir. sur la façon de renvoyer ce tableau numérique modifié, mais après avoir lu de nombreux articles sur la suppression de la duplication de tableau, je n'ai toujours pas trouvé la réponse. Veuillez me donner quelques conseils ! ! ! !
阿神2017-06-12 09:30:19
L'idée de supprimer les doublons in situ est très simple
Créez un objet de hachage avec chaque élément du tableau comme clé
Chaque élément est jugé par hachage s'il existe déjà dans le tableau
S'il existe, supprimez l'élément
Une fois le parcours terminé, déplacez les éléments du tableau pour combler les lacunes
Étant donné que le déplacement d'éléments d'un tableau est une opération coûteuse (par exemple, un tableau de N longueur est creusé uniformément par N/2 vides, alors la complexité temporelle du déplacement des éléments d'arrière en avant peut atteindre le niveau de N^2) , et cet algorithme n'est pas conforme à la tendance immuable actuelle, cette approche est donc ingrate et il n'est pas nécessaire de la faire dans des scénarios généraux.
怪我咯2017-06-12 09:30:19
Cette question n'est pas une simple déduplication d'un tableau. Ce tableau est trié, ce qui est différent de la déduplication d'un tableau dans le désordre.
Dans la déduplication de tableau ordonnée, les mêmes éléments seront distribués ensemble, il vous suffit donc de déterminer si l'élément suivant est le même que l'élément précédent pendant le processus de parcours pour effectuer la déduplication.
Cette question était ma climatisation à l'époque
var removeDuplicates = function(nums) {
var j = 0;
var i = 0;
for (; i < nums.length; i++) {
if (nums[j] !== nums[i]) {
nums[++j] = nums[i];
}
}
return j+1;
};