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