zoukankan      html  css  js  c++  java
  • LeetCode c++:1550. 存在连续三个奇数的数组

    给你一个整数数组 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.

    class Solution {
    public:
        bool threeConsecutiveOdds(vector<int>& arr) {
            //进行对vector中的元素进行计数
            int len = arr.size();
            //元素小于三个直接返回false
            if( len < 3 )return false;
            //进行计算 x 之前的元素中的奇数的个数并将其存储在 PI[x] 中。
            unsigned int i,j,n=0;
            vector<int> PI(len,0);//对Pi中的len个元素进行初始化为0
            for(i = 0 ; i < len ; i ++)//计算奇数个数并放入PI[x]中
            {
                if(arr[i]%2 == 1)
                    n++;
                PI[i] = n;
                //cout<<n<<"    ";//用于测试
            }
            //计算,i,j差值为2,当PI[i]/PI[j]差值也为2时return false,否则return true;(前提:奇数开头)
            for(int i = 2 , j = 0 ; i < len ; i ++ , j ++)
            {
                if(PI[j]%2 ==1 && PI[i]-PI[j] == 2)return true;////////////////该处出现错误:对于数据【1,2,1,1】出错,但是找不到原因
    //
    PI[j]%2 ==1 用来判断开头是否是从奇数开始计算
    } return false; } };

    2.

    class Solution {
    public:
        bool threeConsecutiveOdds(vector<int>& arr) {
            //size可以用来直接进行对链表元素进行计数,length不行
            int len = arr.size();
            //元素小于三个直接返回false
            if( len < 3 )return false;
            //进行计算 x 之前的元素中的奇数的个数并将其存储在 PI[x] 中。
            unsigned int i,j,n=0;
            vector<int> PI(len,0);//对Pi中的len个元素进行初始化为0
            for(i = 0 ; i < len ; i ++)//计算奇数个数并放入PI[x]中,遇到偶数从0计数
            {
                if(arr[i]%2 == 1)
                    n++;
                else n = 0;
                PI[i] = n;
              //  cout<<n<<"    ";//用于测试
            }
            //从PI中存储的数据中进行查找3的数,如果能找到3代表存在三个连续奇数return true
            for(int i = 0 ; i < len ;i ++)
            {
                if(PI[i] == 3)return true;
                //if(PI[i]-PI[j] == 3)return true;
            } 
           return false; 
    
        }
    };
  • 相关阅读:
    set
    皮肤病药物
    C 批量保存图片进 mysql 利用MYSQL_BIND插入longblob
    eclipse行号显示
    dynamic_cast使用
    list添加删除操作
    VS2008 对齐代码
    c++ mysql二进制存取,blob存取
    Select Window关键字——模拟打开了多个页面窗口时,在不同的窗口之间,进行窗口切换
    Click Image关键字——模拟单击某一个图片 其余:Click Button / Click Link
  • 原文地址:https://www.cnblogs.com/pipi-rtq/p/13516067.html
Copyright © 2011-2022 走看看