1. 程式人生 > 實用技巧 >20.8.16 周賽 5185. 存在連續三個奇數的陣列 簡單

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;
    }
};