javascript - 为什么将集合转换为数组时输出为空?
问题描述
我正在使用以下说明解决Leetcode 26 Remove Duplicates from Sorted Array :
给定一个排序数组 nums,就地删除重复项,使每个元素只出现一次并返回新的长度。
不要为另一个数组分配额外的空间,您必须通过使用 O(1) 额外内存就地修改输入数组来做到这一点。
我的解决方案是首先创建一个集合,迭代数组中的每个数字并将每个数字添加到集合中,然后简单地将集合转换为数组。
var removeDuplicates = function(nums) {
let set = new Set();
for (let num of nums) {
set.add(num);
}
return Array.from(set);
};
当我console.log
我的数组时,它会输出 Leetcode 正在寻找的答案,但是当我提交时,输出是[]
. 为什么会这样?
解决方案
要回答主要问题,您最好使用set.values()
从集合中获取所有值,如下所示
return [...set.values()]
但是正如您所说,创建一个新集将占用额外的内存并违反 O(1) 内存;一个简单的解决方案是迭代元素,并将前一个元素保留在一个变量中,如果当前元素等于前一个元素,则删除当前元素。然后最后返回数组长度
推荐阅读
- javascript - 从对象计算状态并显示结果
- python - fbprophet 年度季节性波动
- mysql - 内含 GROUP BY 的 SUM 子查询
- javascript - 如何将 React 站点作为项目添加到 GitHub 页面?
- python - 如何自动检测 tf/keras 模型对象
- python - 使用 django 进行动态预约定价
- java - java压力测试期间的Hikari超时错误
- c++ - 在 C++ 中传递参数时未定义的行为
- android - 如何将gps数据添加到图像,颤动image_picker Android
- java - 每个线程中相同键的线程安全集合或并发