【发布时间】:2023-01-12 21:18:00
【问题描述】:
var findDisappearedNumbers = function(nums) {
const numberSet = new Set();
for(let i = 1; i < nums.length + 1; i++) {
numberSet.add(i);
}
nums.forEach((element) => {
if(numberSet.has(element)) {
numberSet.delete(element);
}
});
return Array.from(numberSet);
};
以上是 leetcode 问题 448 的解决方案。 https://leetcode.com/problems/find-all-numbers-disappeared-in-an-array/description/
显然程序的时间复杂度是O(n)。这是我不明白的,不应该是 O(n^2) 因为你迭代 nums 一次来填充 numberSet,然后你再次迭代 nums 来检查重复项吗?
所以 for 循环和 nums.forEach 都是 O(n) 使得它整体 O(n^2)?
【问题讨论】:
-
O(n) + O(n) = 2 * O(n),这是 O(n)
标签: javascript time