题目描述
-
有序数组中出现次数超过25%的元素
给你一个非递减的 有序 整数数组,已知这个数组中恰好有一个整数,它的出现次数超过数组元素总数的 25%。
请你找到并返回这个整数
示例:
输入:arr = [1,2,2,6,6,6,6,7,10] 输出:6
提示:
1 <= arr.length <= 10^4 0 <= arr[i] <= 10^5
解题思路
法1
方法1:滑窗
使用滑动窗口的概念。
我们首先计算了一个阈值,即数组元素总数的四分之一。
然后我们遍历数组,比较当前元素与距离为阈值的后续元素是否相等。
如果找到这样的一对元素,说明其中一个整数的出现次数超过了25%。我们直接返回这个整数。
-
时间复杂度(O(N)) -
空间复杂度(O(1))
执行结果
法1
func findSpecialInteger(arr []int) int {
threshold := len(arr) / 4
for i := 0; i < len(arr)-threshold; i++ {
if arr[i] == arr[i+threshold] {
return arr[i]
}
}
return -1 // 如果找不到符合条件的整数,返回-1或者其他合适的值
}
执行结果: 通过 显示详情 查看示例代码 添加备注
执行用时: 8 ms , 在所有 Go 提交中击败了 92.98% 的用户 内存消耗: 4.8 MB , 在所有 Go 提交中击败了 63.16% 的用户 通过测试用例: 25 / 25 炫耀一下:
本文由 mdnice 多平台发布