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

思路

  1. 遍历数组,每次连续判断三个数,分四种情况,一定要按这个顺序判断
    • 三个数都是奇数,返回结果
    • 第三个数不是奇数,跳过这三个数
    • 第二个数不是奇数,跳过前两个数
    • 第一个数不是奇数,跳过前一个数,即正常遍历
  2. 因为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;
    }
};

posted @ 2020-08-16 11:35  肥斯大只仔  阅读(131)  评论(0编辑  收藏  举报