LeetCode每日一题2025-05-11
1550. 存在连续三个奇数的数组 E
给你一个整数数组 arr,请你判断数组中是否存在连续三个元素都是奇数的情况:如果存在,请返回 true ;否则,返回 false 。
示例 1:
输入:arr = [2,6,4,1]
输出:false
解释:不存在连续三个元素都是奇数的情况。
示例 2:
输入:arr = [1,2,34,3,4,5,7,23,12]
输出:true
解释:存在连续三个元素都是奇数的情况,即 [5,7,23] 。
提示:
1 <= arr.length <= 10001 <= arr[i] <= 1000
问题分析
嗯,不用分析了
算法思路
暴力搜索
- 直接枚举所有长度为 3 的子数组,检查其中 3 个数是否全为奇数。
- 时间复杂度:,因为只需一次遍历;空间复杂度:。
或:滑动窗口
- 维护一个大小为 3 的窗口,窗口内统计奇数个数。
- 窗口向右滑动时,更新进出元素的奇偶状态即可。
- 时间复杂度:,空间复杂度:。
时间复杂度
时间复杂度:,遍历一次数组。
空间复杂度:,只使用固定数量的额外变量。
代码分解
-
初始化一个计数器
count = 0。 -
遍历数组中的每个元素
x:- 如果
x是奇数,令count += 1;否则重置count = 0。 - 每次更新后,检查
count >= 3,若成立则返回True。
- 如果
-
遍历结束后若未找到,返回
False。
代码实现
滑动窗口
1 | class Solution: |
暴力枚举
1 | class Solution: |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Stay hungry. Stay foolish.!
评论
