Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Leetcode:从排序数组中删除重复项(Javascript)_Javascript_Algorithm - Fatal编程技术网

Leetcode:从排序数组中删除重复项(Javascript)

Leetcode:从排序数组中删除重复项(Javascript),javascript,algorithm,Javascript,Algorithm,为什么我的解决方案在控制台上工作,而在leetcode上不工作 var removeDuplicates = function(nums) { let res = []; for(let num of nums) { if(res.includes(num) === false) { res.push(num); } } return res.length; }; 控制台: Leetcod

为什么我的解决方案在控制台上工作,而在leetcode上不工作

var removeDuplicates = function(nums) {
    let res = [];     
    for(let num of nums) {
        if(res.includes(num) === false) {
            res.push(num);
        }
    }   
    return res.length;
};
控制台:

Leetcode:

let arr = [1, 1, 2]

removeDuplicates(arr) // 3 

您可以尝试将
includes
更改为
indexOf
,可能是
includes
在您的环境中不起作用。另外,您应该返回
res
,而不是返回
length

如果你想尝试另一种方法,你可以看看下面的
集合

var removeDuplicates=函数(nums){
返回[…新集合(nums)]
};
console.log(移除的副本([1,1,2]))

console.log(移除的副本([1,1,2,3])
您可以尝试将
包含
更改为
索引,如果
包含
在您的环境中不起作用。另外,您应该返回
res
,而不是返回
length

如果你想尝试另一种方法,你可以看看下面的
集合

var removeDuplicates=函数(nums){
返回[…新集合(nums)]
};
console.log(移除的副本([1,1,2]))

log(删除的副本([1,1,2,3])
您没有正确使用sorty。从算法上讲,将项目与前一个项目进行比较更有效,因此复杂性是
O(N)

也许JS有一些像Python
groupby
这样的高阶函数来缩短代码,但从算法的角度来看,所描述的方法肯定是最好的

var removeDuplicates=函数(nums){
设res=[];
让最后一个=楠
对于(i=0;i>2

您没有正确使用排序。在算法上,将项目与前一个项目进行比较更有效,因此复杂性是
O(N)

也许JS有一些像Python
groupby
这样的高阶函数来缩短代码,但从算法的角度来看,所描述的方法肯定是最好的

var removeDuplicates=函数(nums){
设res=[];
让最后一个=楠
对于(i=0;i>2

这里是另一个解决方案,您可以尝试

var removeDuplicates = function(nums) {
  let p1 = 0,lastVal =nums[0] -1;
  for (let i = 0; i < nums.length; i++) {
   if (nums[i] != lastVal) {
    nums[p1] = nums[i];
    lastVal = nums[i]
    p1 +=1;
  }
 }
nums.length = p1;
console.log(nums);
};

let arr = [1, 1, 2]
removeDuplicates(arr);
var removeDuplicates=函数(nums){
设p1=0,lastVal=nums[0]-1;
for(设i=0;i

这里是另一个解决方案,您可以尝试

var removeDuplicates = function(nums) {
  let p1 = 0,lastVal =nums[0] -1;
  for (let i = 0; i < nums.length; i++) {
   if (nums[i] != lastVal) {
    nums[p1] = nums[i];
    lastVal = nums[i]
    p1 +=1;
  }
 }
nums.length = p1;
console.log(nums);
};

let arr = [1, 1, 2]
removeDuplicates(arr);
var removeDuplicates=函数(nums){
设p1=0,lastVal=nums[0]-1;
for(设i=0;i

您是否尝试过使用If(res.indexOf(num)<0)?而不是If(res.includes(num)==false)您是否尝试过使用If(res.indexOf(num)<0)?而不是If(res.includes(num)==false)是@Yoskuintero刚刚意识到这一点。:)集合可以直接编辑输入数组。谢谢@YosvelQuintero。很好帮助..删除我的答案,因为你的答案是第一个你真是太好了@YosvelQuintero。这就是为什么我喜欢这样,人们非常愿意提拔其他学习者。谢谢:)是的@YosvelQuintero刚刚意识到::)集合可以直接编辑输入数组。谢谢@YosvelQuintero。很好的帮助..删除我的答案,因为你的答案是第一个,你真是太好了@YosvelQuintero。这就是为什么我如此喜欢,人们非常愿意提拔其他学习者。谢谢:)