javascript - 我试图将数字放入数组而不放入重复项
问题描述
我的代码返回 0 作为长度。从数组中排除重复项后,它应该返回 5。我认为我在我的代码中遗漏了一些我没有想到的东西。有人可以快速查看它并告诉我缺少什么吗?我希望我的代码用于解决方案,而不是全新的。谢谢
问题:给定一个排序数组 nums,就地删除重复项,使每个元素只出现一次并返回新长度。
不要为另一个数组分配额外的空间,您必须通过使用 O(1) 额外内存就地修改输入数组来做到这一点。
const numbers = [0,0,1,1,1,2,2,3,3,4]
const removeDuplicates = (nums) => {
nums.sort()
const newArr = []
//or just count how many numbers there are excluding their duplicates
for(let i = 0; i < nums.length; i++){
for(let j = 0; j < nums.length; j++){
if(!nums[i] === nums[j]){
newArr.push(nums[i]);
}
}
}
console.log(newArr)
return newArr.length
};
解决方案
您的代码中的问题是这一行:
if(!nums[i] === nums[j]){
您可能打算这样做:
if(nums[i] !== nums[j]){
也就是说,嵌套 for 循环的逻辑有问题。这可能是您的意图:
const numbers = [0,0,1,1,1,2,2,3,3,4]
const removeDuplicates = (nums) => {
nums.sort((a, b) => a - b);
const newArr = [];
let prev = -Infinity;
for (let i=0; i<nums.length; i++) {
if (nums[i] === prev)
continue;
newArr.push(nums[i]);
prev = nums[i];
}
console.log(newArr);
return newArr.length;
};
removeDuplicates(numbers);
推荐阅读
- swagger - 如何在 springfox 3.0.0 中使用默认值配置全局标头
- python - 如何使用文本文件在 Python 中返回字典
- python - 如何激活 while true 语句
- javascript - 如何在 React 应用程序中同步数据?呈现的数据与函数调用中访问的数据不匹配
- javascript - 注销后如何删除鼠标向上事件处理程序?
- ffmpeg - FFMPEG 复用为私有数据流,读取时可能无法识别
- reactjs - 如何从外部引用组件内部的函数?
- react-native - 更新 React Native Stack Navigator 标头中的徽章
- c# - (统一)有没有办法设置粒子系统中每个粒子的位置?
- google-cloud-platform - 如何将容器部署到多个 GCP 项目并使用 Cloud Run 托管?