• 【21天学习挑战赛—经典算法】LeetCode 1550. 存在连续三个奇数的数组


    题目

    给你一个整数数组 arr,请你判断数组中是否存在连续三个元素都是奇数的情况:如果存在,请返回 true ;否则,返回 false 。
    输入:arr = [2,6,4,1]
    输出:false
    解释:不存在连续三个元素都是奇数的情况。

    详见:1550. 存在连续三个奇数的数组

    思路

    1. 枚举所有的连续的三个元素,判断这三个元素是否都是奇数,如果是,则返回 true。如果所有的连续的三个元素中,没有一个满足条件,返回 false。
    2. 排除数组小于3,返回false;遍历数组,出现连续三个奇数数组,返回true
    3. 三奇数相乘还是奇数

    这道题目要求判断给定的整数数组arr中是否存在连续三个元素都是奇数的情况。遍历数组中的每一组连续三个元素,判断是否存在至少一组连续三个元素都是奇数即可,如果遇到连续三个元素都是奇数,即可返回true。如果遍历结束没有遇到连续三个元素都是奇数,则返回 false。

    假设数组arr 的长度是 n。对于2≤i 来源:stormsunshine

    代码

    方法一:枚举

    class Solution {
    public:
        bool threeConsecutiveOdds(vector<int>& arr) {
            int n = arr.size();
            for (int i = 0; i <= n - 3; ++i) {
                if ((arr[i] & 1) & (arr[i + 1] & 1) & (arr[i + 2] & 1)) {
                    return true;
                }
            }
            return false;
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    方法二:枚举

    class Solution {
    public:
        bool threeConsecutiveOdds(vector<int>& arr) {
            int count = 0;
            if(arr.size() < 3){
                return false;
            }
            for(int i = 0; i < arr.size(); i++){
                if(arr[i] % 2==1){
                    count++;
                }else{
                    count = 0;
                }
                if(count >= 3){
                    return true;
                }
            }
            return false;
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    方法三:三奇数相乘还是奇数

    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] * arr[i + 1] * arr[i + 2]) % 2 == 1){
                    return true;
                }
            }
            return false;
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
  • 相关阅读:
    Java I/O中的Reactor模式
    Vue快速入门
    国产操作系统生态建设,小程序技术来帮忙
    paddlespeech asr脚本demo
    软件测试漏测怎么办(下)
    第5/100天 阅读笔记
    每日一学—JavaScript Math对象
    工业智能化转型升级难?华为云这三招,加速商业变现
    [附源码]Python计算机毕业设计Django的低碳生活记录网站
    js正则练习示例
  • 原文地址:https://blog.csdn.net/qq_46207024/article/details/126395919