我正在尝试处理要求
的leetcode问题给定一个整数数组,其中1≤a[i]≤n(n =数组的大小),一些元素出现两次,其他元素出现一次。
查找[1,n]中包含的所有元素,这些元素不会出现在此数组中。
我对此问题的解决方案是:
func findDisappearedNumbers(_ nums: [Int]) -> [Int] {
var returnedArray = [Int]()
if nums.isEmpty == false {
for i in 1...nums.count {
if nums.contains(i) == false {
returnedArray.append(i)
}
}
} else {
returnedArray = nums
}
return returnedArray
}
然而,leetcode告诉我,我的解决方案是"超出时间限制"
我的解决方案不应该是O(n)吗?我不知道我在哪里比O(n)更大。
答案 0 :(得分:7)
如果我没有错过任何你的算法是O(n ^ 2)。
首先,迭代遍历O(n)的数组的每个元素,但是对于每个元素,调用contains
,它必须再次迭代所有元素,最后得到O(n ^ 2)。
我不会告诉你解决方案,因为它是leetcode。