Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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
Javascript 从排序数组中删除重复项并返回长度-必须改变原始数组_Javascript_Arrays_Duplicates - Fatal编程技术网

Javascript 从排序数组中删除重复项并返回长度-必须改变原始数组

Javascript 从排序数组中删除重复项并返回长度-必须改变原始数组,javascript,arrays,duplicates,Javascript,Arrays,Duplicates,免责声明 我很清楚重复的问题,但是这个问题要求在不创建新数组的情况下删除重复项,并希望我们对原始数组进行变异 说明 给定一个已排序的数组nums,在适当的位置删除重复项,使每个元素只出现一次并返回新的长度 不要为另一个数组分配额外的空间,必须通过使用O(1)个额外内存修改输入数组来完成此操作 示例 给定nums=[1,1,2] 函数应该返回length=2,nums的前两个元素分别为1和2 在返回的长度之外,您留下什么并不重要 尝试 const removeDuplicates=函数(nums

免责声明

我很清楚重复的问题,但是这个问题要求在不创建新数组的情况下删除重复项,并希望我们对原始数组进行变异

说明

给定一个已排序的数组nums,在适当的位置删除重复项,使每个元素只出现一次并返回新的长度

不要为另一个数组分配额外的空间,必须通过使用O(1)个额外内存修改输入数组来完成此操作

示例

给定
nums=[1,1,2]

函数应该返回length=2,
nums
的前两个元素分别为1和2

在返回的长度之外,您留下什么并不重要

尝试

const removeDuplicates=函数(nums){
为了(让我来谈谈NUM){
if(nums[i]==nums[i]){
数量拼接(i,1)
}
}
返回nums.length;
};
log(移除的副本([1,1,2]);
日志(移除了副本([1,2]);
//[1,1,2]=>[1,2](正确)
//[1,2]=>[1](不正确-应该是[1,2])
让nums=[1,1,2];
nums=[…新设置(nums)]。长度;
控制台日志(nums);
nums=[1,1,2];
nums=nums.过滤器(功能(项目、位置、自身){
返回自身索引(项目)=位置;
})
console.log(nums)
让nums=[1,1,2];
nums=[…新设置(nums)]。长度;
控制台日志(nums);
nums=[1,1,2];
nums=nums.过滤器(功能(项目、位置、自身){
返回自身索引(项目)=位置;
})

console.log(nums)
对于数组的每个元素,您需要迭代该数组的所有剩余元素,以检查所有重复项。不确定这是否比复制更有效

const removeDuplicates=函数(nums){
设i=0;
而(i[1,2](正确)
//[1,2]=>[1](不正确-应为[1,2])

//[1,2,1,3,4,3,2,1]=>[1,2,3,4]
对于数组的每个元素,您需要遍历该数组的所有剩余元素,以检查是否存在所有重复项。不确定这是否比复制更有效

const removeDuplicates=函数(nums){
设i=0;
而(i[1,2](正确)
//[1,2]=>[1](不正确-应为[1,2])
//[1,2,1,3,4,3,2,1]=>[1,2,3,4]
给你:

const removeDuplicates=函数(nums){
对于(设i=0;i给您:

const removeDuplicates=函数(nums){
对于(设i=0;i日志(移除了副本([1,2])提示在下面一行:
在返回的长度之外,您留下什么并不重要。

询问此问题的人希望您在数组中移动,并跟踪两个指针:1)输出数组的结尾和2)输入数组中的当前索引

如果执行此操作,并且仅当输入与输出指针不同时才将其复制到输出指针,那么最终将得到正确的输出、正确的长度(从输出指针开始)以及数组末尾的少量垃圾

const unique = (arr) => {
  let output = 0;
  for (let input = 0; input < arr.length; input++) {
    if (arr[output] !== arr[input]) {
      output++;
      arr[output] = arr[input];
    }
  }
  return output + 1;
}

const arr = [1, 1, 2, 3, 3, 3, 4, 5, 5, 6, 8, 8, 8, 9, 11];
const length = unique(arr);
console.log(arr, length);
const unique=(arr)=>{
设输出=0;
用于(让输入=0;输入
提示在下面一行:
在返回的长度之外,您留下什么并不重要。

询问此问题的人希望您在数组中移动,并跟踪两个指针:1)输出数组的结尾和2)输入数组中的当前索引

如果执行此操作,并且仅当输入与输出指针不同时才将其复制到输出指针,那么最终将得到正确的输出、正确的长度(从输出指针开始)以及数组末尾的少量垃圾

const unique = (arr) => {
  let output = 0;
  for (let input = 0; input < arr.length; input++) {
    if (arr[output] !== arr[input]) {
      output++;
      arr[output] = arr[input];
    }
  }
  return output + 1;
}

const arr = [1, 1, 2, 3, 3, 3, 4, 5, 5, 6, 8, 8, 8, 9, 11];
const length = unique(arr);
console.log(arr, length);
const unique=(arr)=>{
设输出=0;
用于(让输入=0;输入
我相信此解决方案将通过更多测试用例(至少在我的个人测试中)


我相信这个解决方案将通过更多的测试用例(至少在我的个人测试中)


尝试了上面Kosh提供的解决方案,但对于更大的数组[0,0,1,1,1,2,2,3,3,4]失败。最后我自己写了。似乎适用于所有测试

var removeDuplicates = function(nums) {
  var i;
  for (i = 0; i <= nums.length; i++) {
    const tempNum = nums[i];
    var j;
    var tempIndex = [];
    for (j = i+1; j <= nums.length; j++) {
      if (tempNum === nums[j]) {
        tempIndex.push(j)
      }
    }
    nums.splice(tempIndex[0], tempIndex.length)
  }
  return (nums.length);
};
var removeDuplicates=函数(nums){
var i;
对于(i=0