思路与算法
我们可以考虑重复的元素 x 在数组 nums 中出现的位置。如果相邻的 x 之间至少都隔了 2 个位置,那么数组的总长度至少为:
当 n > 2 时,3n−2 > 2n ,不存在满足要求的数组。因此一定存在两个相邻的 x ,它们的位置是连续的,或者只隔了 1 个位置。
当 n=2 时,数组的长度最多为 2n=4 ,因此最多只能隔 2 个位置。
这样一来,我们只需要遍历所有间隔 2 个位置及以内的下标对,判断对应的元素是否相等即可。
代码
C++
Java
复杂度分析
- 时间复杂度:O(n) 。我们最多对数组进行三次遍历(除了 n=2 之外,最多两次遍历)。
- 空间复杂度:O(1) 。
好了,今天的文章分享就到这里了,希望对大家的学习有帮助哦!