20.8.16 周赛 5185. 存在连续三个奇数的数组 简单
题目
给你一个整数数组 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 <= 1000
1 <= arr[i] <= 1000
思路
- 遍历数组,每次连续判断三个数,分四种情况,一定要按这个顺序判断
- 三个数都是奇数,返回结果
- 第三个数不是奇数,跳过这三个数
- 第二个数不是奇数,跳过前两个数
- 第一个数不是奇数,跳过前一个数,即正常遍历
- 因为arr.length<=1,所以需要特判
代码
class Solution {
public:
bool threeConsecutiveOdds(vector<int>& arr) {
if(arr.size() < 3) return false;
for(int i = 0; i < arr.size()-2; i++){
if(arr[i]%2 && arr[i+1]%2 && arr[i+2]%2) return true;
if(!(arr[i+2]%2)){
i+=2;
continue;
}
else if(!(arr[i+1]%2)){
i+=1;
continue;
}
}
return false;
}
};